From 5dd1dc9ea6d439b249646f6581c94c268b102b6a Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Thu, 21 Jan 2016 10:40:18 +0900 Subject: [PATCH 001/831] Doc cosmetics --- README.md | 6 +- client_tests/clojure/clj-s3/README.md | 2 +- riak_test/README.md | 87 ++++++++++++++++----------- src/riak_cs_list_objects_fsm.erl | 9 ++- src/riak_kv_fs2_backend.erl | 4 +- 5 files changed, 64 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 69ed3acf6..0bbf19056 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -Welcome to Riak CS. +Welcome to Riak CS or Riak S2. # Overview -Riak CS is an object storage system built on top of Riak. It -facilitates storing large objects in Riak and presents an +Riak CS is an object storage system built on top of Riak KV. It +facilitates storing large objects in Riak KV and presents an S3-compatible interface. It also provides multi-tenancy features such as user accounts, authentication, access control mechanisms, and per account usage reporting. diff --git a/client_tests/clojure/clj-s3/README.md b/client_tests/clojure/clj-s3/README.md index 7ee732d61..29fc079d3 100644 --- a/client_tests/clojure/clj-s3/README.md +++ b/client_tests/clojure/clj-s3/README.md @@ -2,7 +2,7 @@ ## Overview -These tests are written using a copy of +These tests are written using a modified copy of [clj-aws-s3](https://github.com/weavejester/clj-aws-s3) at tag 0.3.10, for S3 API call. On the other hand, Riak CS specific administrative API call is implemented in diff --git a/riak_test/README.md b/riak_test/README.md index ee5e5b22a..9a74953f5 100644 --- a/riak_test/README.md +++ b/riak_test/README.md @@ -10,7 +10,7 @@ Example to setup old and new CS: -``` +```bash $ mkdir ~/rt $ cd ~/rt $ cd path/to/repo/riak_cs @@ -18,26 +18,30 @@ $ cd path/to/repo/riak_cs $ export RIAK_CS_EE_DEPS=true $ riak_test/bin/rtdev-build-releases.sh $ riak_test/bin/rtdev-setup-releases.sh -## make sure runtime is Basho's patched R16B02-basho5 +## make sure runtime is Basho's patched R16B02-basho $ make devrel && riak_test/bin/rtdev-current.sh ``` +*NOTE* For building Enterprise version releases, use +`rtdev-build-releases.sh` script in `riak_cs_multibag` repository +(private). + Example to setup old and new Stanchion: -``` +```bash $ cd path/to/repo/stanchion $ riak_test/bin/rtdev-build-releases.sh $ riak_test/bin/rtdev-setup-releases.sh -## make sure runtime is Basho's patched R16B02-basho5 +## make sure runtime is Basho's patched R16B02-basho $ make devrel && riak_test/bin/rtdev-current.sh ``` Example to setup 1.4.x and 2.0 as old and new Riak (maybe same as Riak OSS... while shell scripts are included in riak_test repo): -``` +```bash $ mkdir ~/rt/riak_ee -## make sure runtime is Basho's patched R16B02-basho5 +## make sure runtime is Basho's patched R16B02-basho $ tar xzf riak-ee-2.0.1.tar.gz $ cd riak-ee-2.0.1 && make devrel $ riak_test/bin/rteedev-setup-releases.sh @@ -57,24 +61,24 @@ $ git commit -m "Add 1.4 series Riak EE" 1. Setup a `~/.riak_test.config` file like this: ```erlang - {default, [ - {rt_max_wait_time, 180000}, - {rt_retry_delay, 1000} - ]}. - - {rtdev, [ - {rt_deps, [ - "/Users/kelly/basho/riak_test_builds/riak/deps", - "deps" - ]}, - {rt_retry_delay, 500}, - {rt_harness, rtdev}, - {rtdev_path, [{root, "/Users/kelly/rt/riak"}, - {current, "/Users/kelly/rt/riak/current"}, - {ee_root, "/Users/kelly/rt/riak_ee"}, - {ee_current, "/Users/kelly/rt/riak_ee/current"} - ]} - ]}. +{default, [ + {rt_max_wait_time, 180000}, + {rt_retry_delay, 1000} + ]}. + +{rtdev, [ + {rt_deps, [ + "/Users/kelly/basho/riak_test_builds/riak/deps", + "deps" + ]}, + {rt_retry_delay, 500}, + {rt_harness, rtdev}, + {rtdev_path, [{root, "/Users/kelly/rt/riak"}, + {current, "/Users/kelly/rt/riak/current"}, + {ee_root, "/Users/kelly/rt/riak_ee"}, + {ee_current, "/Users/kelly/rt/riak_ee/current"} + ]} + ]}. {rtcs_dev, [ {rt_project, "riak_cs"}, @@ -103,11 +107,21 @@ $ git commit -m "Add 1.4 series Riak EE" %%{build_type, oss}, {build_type, ee}, {flavor, basic}, + %% {sibling_benchmark, + %% [{write_concurrency, 8}, + %% {write_interval, 0}, % msec + %% {version, current}, + %% %% {version, previous}, + %% %% {leave_and_join, 100}, % times + %% %% {duration_sec, 1} + %% {duration_sec, 30} + %% ] + %% }, {backend, {multi_backend, bitcask}} ]}. ``` -Running the RiakCS tests for `riak_test` use a different test harness +Running the Riak CS tests for `riak_test` use a different test harness (`rtcs_dev`) than running the Riak tests and so requires a separate configuration section. Notice the extra `riak_cs/deps` in the `rt_deps` section. `RT_DEST_DIR` should be replaced by the path used @@ -125,7 +139,7 @@ The `backend` option is used to indicate which Riak backend option should be used. The valid options are `{multi_backend, bitcask}` and `memory`. `{multi_backend, bitcask}` is the default option and represents the default recommended backed for production use of -RiakCS. +Riak CS. The `test_paths` option is a list of fully-qualified paths which `riak_test` will use to find additional tests. Since the Riak CS tests @@ -134,15 +148,16 @@ point to the compiled tests in `riak_cs/riak_test/ebin`. The `flavor` option is used to vary environment setup. Some `riak_test` modules use only S3 API and does not depend on details, -such as number of riak nodes, riak's backend, MDC or not, multibag or -not. By adding flavor setting to riak_test config, such generic test -cases can be utilized to verify Riak CS's behavior in various setups. -The scope of setup functions affected by flavors are `rtcs:setup/1` -and `rtcs:setup/2`. Other setup functions, for example -`rtcs:setup2x2` used by `repl_test`, does not change their behavior. -The valid option values are `basic` (default) and `{multibag, disjoint}`. -`{multibag, disjoint}` setup multibag environment with 3 bags, the master -bag with two riak nodes and two additional bags with one riak node each. +such as number of riak nodes, riak's backend, MDC or not, multibag +(aka supercluster) or not. By adding flavor setting to riak_test +config, such generic test cases can be utilized to verify Riak CS's +behavior in various setups. The scope of setup functions affected by +flavors are `rtcs:setup/1` and `rtcs:setup/2`. Other setup functions, +for example `rtcs:setup2x2` used by `repl_v3_test`, does not change +their behavior. The valid option values are `basic` (default) and +`{multibag, disjoint}`. `{multibag, disjoint}` setup multibag +environment with 3 bags, the master bag with two riak nodes and two +additional bags with one riak node each. 1. To build the `riak_test` files use the `compile-riak-test` Makefile @@ -154,7 +169,7 @@ bag with two riak nodes and two additional bags with one riak node each. * Your $PATH must have `erl` available. * Your $PATH must have a version of Python available that also has - access to the Boto S3 libraries. + vertualenv tools and access to the Boto S3 libraries. * Your $PATH must have Clojure's "lein" available. "lein" is the main executable for the Leinigen tool. * Your system must have libevent installed. If you see an error for a diff --git a/src/riak_cs_list_objects_fsm.erl b/src/riak_cs_list_objects_fsm.erl index 1d1409beb..336af0502 100644 --- a/src/riak_cs_list_objects_fsm.erl +++ b/src/riak_cs_list_objects_fsm.erl @@ -20,9 +20,12 @@ %% @doc -%% TODO: -%% 1. optimize for when list keys returns [], we shouldn't -%% even have to do map-reduce then +%% TODO: Deprecated/stale module at the time at 2.1 release, not used and +%% should be removed. +%% - Remove configuration item fold_objects_for_list_keys +%% - Remove this module and riak_cs_list_objects_ets_cache and +%% riak_cs_list_objects_ets_cache_sup, with suitable supervisor +%% tree change. -module(riak_cs_list_objects_fsm). diff --git a/src/riak_kv_fs2_backend.erl b/src/riak_kv_fs2_backend.erl index a7c657cbc..1f04372cd 100644 --- a/src/riak_kv_fs2_backend.erl +++ b/src/riak_kv_fs2_backend.erl @@ -20,7 +20,9 @@ %% %% ------------------------------------------------------------------- -% @doc riak_kv_fs2_backend is filesystem storage system, Mark III +%% @doc riak_kv_fs2_backend is filesystem storage system, Mark III + +%% Deprecated -module(riak_kv_fs2_backend). %% -behavior(riak_kv_backend). % Not building within riak_kv From e3f9ebd0626132fe2897a504c8c5e3b1ebc19fee Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Thu, 21 Jan 2016 10:46:16 +0900 Subject: [PATCH 002/831] Typo fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (ノ ̄ ̄∇ ̄ ̄)ノ‾‾‾━━┻━┻━━ --- riak_test/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/riak_test/README.md b/riak_test/README.md index 9a74953f5..73b56a818 100644 --- a/riak_test/README.md +++ b/riak_test/README.md @@ -169,7 +169,7 @@ additional bags with one riak node each. * Your $PATH must have `erl` available. * Your $PATH must have a version of Python available that also has - vertualenv tools and access to the Boto S3 libraries. + virtualenv tool and access to the Boto S3 libraries. * Your $PATH must have Clojure's "lein" available. "lein" is the main executable for the Leinigen tool. * Your system must have libevent installed. If you see an error for a From 7685783450488aa9c6d280a7e5afbf70e787a007 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Thu, 21 Jan 2016 10:47:34 +0900 Subject: [PATCH 003/831] Remove unused module --- src/riak_kv_fs2_backend.erl | 482 ------------------------------------ 1 file changed, 482 deletions(-) delete mode 100644 src/riak_kv_fs2_backend.erl diff --git a/src/riak_kv_fs2_backend.erl b/src/riak_kv_fs2_backend.erl deleted file mode 100644 index 1f04372cd..000000000 --- a/src/riak_kv_fs2_backend.erl +++ /dev/null @@ -1,482 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% riak_fs2_backend: storage engine based on basic filesystem access -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% ------------------------------------------------------------------- - -%% @doc riak_kv_fs2_backend is filesystem storage system, Mark III - -%% Deprecated - --module(riak_kv_fs2_backend). -%% -behavior(riak_kv_backend). % Not building within riak_kv - -%% KV Backend API --export([api_version/0, - capabilities/1, - capabilities/2, - start/2, - stop/1, - get/3, - put/5, - delete/4, - drop/1, - fold_buckets/4, - fold_keys/4, - fold_objects/4, - is_empty/1, - status/1, - callback/3]). - --define(API_VERSION, 1). --define(CAPABILITIES, [async_fold]). - -%% Borrowed from bitcask.hrl --define(VALSIZEFIELD, 32). --define(CRCSIZEFIELD, 32). --define(HEADER_SIZE, 8). % Differs from bitcask.hrl! --define(MAXVALSIZE, 2#11111111111111111111111111111111). - --ifdef(TEST). --ifdef(TEST_IN_RIAK_KV). --include_lib("eunit/include/eunit.hrl"). --endif. --endif. - --record(state, {dir}). --type state() :: #state{}. --type config() :: [{atom(), term()}]. - -%% =================================================================== -%% Public API -%% =================================================================== - -%% @doc Return the major version of the -%% current API. --spec api_version() -> {ok, integer()}. -api_version() -> - {ok, ?API_VERSION}. - -%% @doc Return the capabilities of the backend. --spec capabilities(state()) -> {ok, [atom()]}. -capabilities(_) -> - {ok, ?CAPABILITIES}. - -%% @doc Return the capabilities of the backend. --spec capabilities(riak_object:bucket(), state()) -> {ok, [atom()]}. -capabilities(_, _) -> - {ok, ?CAPABILITIES}. - -%% @doc Start this backend. 'riak_kv_fs_backend_root' must be set in -%% Riak's application environment. It must be set to a string -%% representing the base directory where this backend should -%% store its files. --spec start(integer(), config()) -> {ok, state()}. -start(Partition, Config) -> - PartitionName = integer_to_list(Partition), - ConfigRoot = app_helper:get_prop_or_env(fs2_backend_data_root, Config, riak_kv), - if - ConfigRoot =:= undefined -> - riak:stop("fs_backend_data_root unset, failing"); - true -> - ok - end, - Dir = filename:join([ConfigRoot,PartitionName]), - {ok = filelib:ensure_dir(Dir), #state{dir=Dir}}. - -%% @doc Stop the backend --spec stop(state()) -> ok. -stop(_State) -> ok. - -%% @doc Get the object stored at the given bucket/key pair --spec get(riak_object:bucket(), riak_object:key(), state()) -> - {ok, any(), state()} | - {ok, not_found, state()} | - {error, term(), state()}. -get(Bucket, Key, State) -> - File = location(State, {Bucket, Key}), - case filelib:is_file(File) of - false -> - {error, not_found, State}; - true -> - {ok, Bin} = file:read_file(File), - case unpack_ondisk(Bin) of - bad_crc -> - %% TODO logging? - {error, not_found, State}; - Val -> - {ok, Val, State} - end - end. - -%% @doc Store Val under Bkey --type index_spec() :: {add, Index, SecondaryKey} | {remove, Index, SecondaryKey}. --spec put(riak_object:bucket(), riak_object:key(), [index_spec()], binary(), state()) -> - {ok, state()} | - {error, term(), state()}. -put(Bucket, PrimaryKey, _IndexSpecs, Val, State) -> - File = location(State, {Bucket, PrimaryKey}), - case filelib:ensure_dir(File) of - ok -> {atomic_write(File, Val), State}; - {error, X} -> {error, X, State} - end. - -%% @doc Delete the object stored at BKey --spec delete(riak_object:bucket(), riak_object:key(), [index_spec()], state()) -> - {ok, state()} | - {error, term(), state()}. -delete(Bucket, Key, _IndexSpecs, State) -> - File = location(State, {Bucket, Key}), - case file:delete(File) of - ok -> {ok, State}; - {error, enoent} -> {ok, State}; - {error, Err} -> {error, Err, State} - end. - -%% @doc Fold over all the buckets. --spec fold_buckets(riak_kv_backend:fold_buckets_fun(), - any(), - [], - state()) -> {ok, any()} | {async, fun()}. -fold_buckets(FoldBucketsFun, Acc, Opts, State) -> - FoldFun = fold_buckets_fun(FoldBucketsFun), - BucketFolder = - fun() -> - {FoldResult, _} = - lists:foldl(FoldFun, {Acc, sets:new()}, list(State)), - FoldResult - end, - case lists:member(async_fold, Opts) of - true -> - {async, BucketFolder}; - false -> - {ok, BucketFolder()} - end. - -%% @doc Fold over all the keys for one or all buckets. --spec fold_keys(riak_kv_backend:fold_keys_fun(), - any(), - [{atom(), term()}], - state()) -> {ok, term()} | {async, fun()}. -fold_keys(FoldKeysFun, Acc, Opts, State) -> - Bucket = proplists:get_value(bucket, Opts), - FoldFun = fold_keys_fun(FoldKeysFun, Bucket), - KeyFolder = - fun() -> - lists:foldl(FoldFun, Acc, list(State)) - end, - case lists:member(async_fold, Opts) of - true -> - {async, KeyFolder}; - false -> - {ok, KeyFolder()} - end. - -%% @doc Fold over all the objects for one or all buckets. --spec fold_objects(riak_kv_backend:fold_objects_fun(), - any(), - [{atom(), term()}], - state()) -> {ok, any()} | {async, fun()}. -fold_objects(FoldObjectsFun, Acc, Opts, State) -> - %% Warning: This ain't pretty. Hold your nose. - Bucket = proplists:get_value(bucket, Opts), - FoldFun = fold_objects_fun(FoldObjectsFun, Bucket), - ObjectFolder = - fun() -> - fold(State, FoldFun, Acc) - end, - case lists:member(async_fold, Opts) of - true -> - {async, ObjectFolder}; - false -> - {ok, ObjectFolder()} - end. - -%% @doc Delete all objects from this backend -%% and return a fresh reference. --spec drop(state()) -> {ok, state()}. -drop(State=#state{dir=Dir}) -> - _ = [file:delete(location(State, BK)) || BK <- list(State)], - Cmd = io_lib:format("rm -Rf ~s", [Dir]), - _ = os:cmd(Cmd), - ok = filelib:ensure_dir(Dir), - {ok, State}. - -%% @doc Returns true if this backend contains any -%% non-tombstone values; otherwise returns false. --spec is_empty(state()) -> boolean(). -is_empty(S) -> - list(S) == []. - -%% @doc Get the status information for this fs backend --spec status(state()) -> [no_status_sorry | {atom(), term()}]. -status(_S) -> - [no_status_sorry]. - -%% @doc Register an asynchronous callback --spec callback(reference(), any(), state()) -> {ok, state()}. -callback(_Ref, _Term, S) -> - {ok, S}. - -%% =================================================================== -%% Internal functions -%% =================================================================== - -%% @spec atomic_write(File :: string(), Val :: binary()) -> -%% ok | {error, Reason :: term()} -%% @doc store a atomic value to disk. Write to temp file and rename to -%% normal path. -atomic_write(File, Val) -> - FakeFile = File ++ ".tmpwrite", - case file:write_file(FakeFile, pack_ondisk(Val)) of - ok -> - file:rename(FakeFile, File); - X -> X - end. - -%% @private -%% Fold over the keys and objects on this backend -fold(State, Fun0, Acc) -> - Fun = fun(BKey, AccIn) -> - {Bucket, Key} = BKey, - case get(Bucket, Key, State) of - {ok, Bin, _} -> - Fun0(BKey, Bin, AccIn); - _ -> - AccIn - end - end, - lists:foldl(Fun, Acc, list(State)). - -%% @private -%% Return a function to fold over the buckets on this backend -fold_buckets_fun(FoldBucketsFun) -> - fun(BKey, {Acc, BucketSet}) -> - {Bucket, _} = BKey, - case sets:is_element(Bucket, BucketSet) of - true -> - {Acc, BucketSet}; - false -> - {FoldBucketsFun(Bucket, Acc), - sets:add_element(Bucket, BucketSet)} - end - end. - -%% @private -%% Return a function to fold over keys on this backend -fold_keys_fun(FoldKeysFun, undefined) -> - fun(BKey, Acc) -> - {Bucket, Key} = BKey, - FoldKeysFun(Bucket, Key, Acc) - end; -fold_keys_fun(FoldKeysFun, Bucket) -> - fun(BKey, Acc) -> - {B, Key} = BKey, - case B =:= Bucket of - true -> - FoldKeysFun(Bucket, Key, Acc); - false -> - Acc - end - end. - -%% @private -%% Return a function to fold over the objects on this backend -fold_objects_fun(FoldObjectsFun, undefined) -> - fun(BKey, Value, Acc) -> - {Bucket, Key} = BKey, - FoldObjectsFun(Bucket, Key, Value, Acc) - end; -fold_objects_fun(FoldObjectsFun, Bucket) -> - fun(BKey, Value, Acc) -> - {B, Key} = BKey, - case B =:= Bucket of - true -> - FoldObjectsFun(Bucket, Key, Value, Acc); - false -> - Acc - end - end. - -%% @spec list(state()) -> [{Bucket :: riak_object:bucket(), -%% Key :: riak_object:key()}] -%% @doc Get a list of all bucket/key pairs stored by this backend -list(#state{dir=Dir}) -> - % this is slow slow slow - % B,N,N,N,K - [location_to_bkey(X) || X <- filelib:wildcard("*/*/*/*/*", - Dir)]. - -%% @spec location(state(), {riak_object:bucket(), riak_object:key()}) -%% -> string() -%% @doc produce the file-path at which the object for the given Bucket -%% and Key should be stored -location(State, {Bucket, Key}) -> - B64 = encode_bucket(Bucket), - K64 = encode_key(Key), - [N1,N2,N3] = nest(K64), - filename:join([State#state.dir, B64, N1, N2, N3, K64]). - -%% @spec location_to_bkey(string()) -> -%% {riak_object:bucket(), riak_object:key()} -%% @doc reconstruct a Riak bucket/key pair, given the location at -%% which its object is stored on-disk -location_to_bkey(Path) -> - [B64,_,_,_,K64] = string:tokens(Path, "/"), - {decode_bucket(B64), decode_key(K64)}. - -%% @spec decode_bucket(string()) -> binary() -%% @doc reconstruct a Riak bucket, given a filename -%% @see encode_bucket/1 -decode_bucket(B64) -> - base64:decode(dirty(B64)). - -%% @spec decode_key(string()) -> binary() -%% @doc reconstruct a Riak object key, given a filename -%% @see encode_key/1 -decode_key(K64) -> - base64:decode(dirty(K64)). - -%% @spec dirty(string()) -> string() -%% @doc replace filename-troublesome base64 characters -%% @see clean/1 -dirty(Str64) -> - lists:map(fun($-) -> $=; - ($_) -> $+; - ($,) -> $/; - (C) -> C - end, - Str64). - -%% @spec encode_bucket(binary()) -> string() -%% @doc make a filename out of a Riak bucket -encode_bucket(Bucket) -> - clean(base64:encode_to_string(Bucket)). - -%% @spec encode_key(binary()) -> string() -%% @doc make a filename out of a Riak object key -encode_key(Key) -> - clean(base64:encode_to_string(Key)). - -%% @spec clean(string()) -> string() -%% @doc remove characters from base64 encoding, which may -%% cause trouble with filenames -clean(Str64) -> - lists:map(fun($=) -> $-; - ($+) -> $_; - ($/) -> $,; - (C) -> C - end, - Str64). - -%% @spec nest(string()) -> [string()] -%% @doc create a directory nesting, to keep the number of -%% files in a directory smaller -nest(Key) -> nest(lists:reverse(string:substr(Key, 1, 6)), 3, []). -nest(_, 0, Parts) -> Parts; -nest([Nb,Na|Rest],N,Acc) -> - nest(Rest, N-1, [[Na,Nb]|Acc]); -nest([Na],N,Acc) -> - nest([],N-1,[[Na]|Acc]); -nest([],N,Acc) -> - nest([],N-1,["0"|Acc]). - -%% Borrowed from bitcask_fileops.erl and then mangled --spec pack_ondisk(binary()) -> [binary()]. -pack_ondisk(Bin) -> - ValueSz = size(Bin), - true = (ValueSz =< ?MAXVALSIZE), - Bytes0 = [<>, Bin], - [<<(erlang:crc32(Bytes0)):?CRCSIZEFIELD>> | Bytes0]. - --spec unpack_ondisk(binary()) -> binary() | bad_crc. -unpack_ondisk(<>) -> - case erlang:crc32(Bytes) of - Crc32 -> - <> = Bytes, - Value; - _BadCrc -> - bad_crc - end. - -%% =================================================================== -%% EUnit tests -%% =================================================================== --ifdef(TEST). --ifdef(TEST_IN_RIAK_KV). - -%% Broken test: -simple_test_() -> - ?assertCmd("rm -rf test/fs-backend"), - Config = [{fs2_backend_data_root, "test/fs-backend"}], - riak_kv_backend:standard_test(?MODULE, Config). - -dirty_clean_test() -> - Dirty = "abc=+/def", - Clean = clean(Dirty), - [ ?assertNot(lists:member(C, Clean)) || C <- "=+/" ], - ?assertEqual(Dirty, dirty(Clean)). - -nest_test() -> - ?assertEqual(["ab","cd","ef"],nest("abcdefg")), - ?assertEqual(["ab","cd","ef"],nest("abcdef")), - ?assertEqual(["a","bc","de"], nest("abcde")), - ?assertEqual(["0","ab","cd"], nest("abcd")), - ?assertEqual(["0","a","bc"], nest("abc")), - ?assertEqual(["0","0","ab"], nest("ab")), - ?assertEqual(["0","0","a"], nest("a")), - ?assertEqual(["0","0","0"], nest([])). - --ifdef(EQC). -%% Broken test: -%% eqc_test() -> -%% Cleanup = fun(_State,_Olds) -> os:cmd("rm -rf test/fs-backend") end, -%% Config = [{riak_kv_fs_backend_root, "test/fs-backend"}], -%% ?assertCmd("rm -rf test/fs-backend"), -%% ?assertEqual(true, backend_eqc:test(?MODULE, false, Config, Cleanup)). - -eqc_test_() -> - {spawn, - [{inorder, - [{setup, - fun setup/0, - fun cleanup/1, - [ - {timeout, 60000, - [?_assertEqual(true, - backend_eqc:test(?MODULE, - false, - [{fs2_backend_data_root, - "test/fs-backend"}]))]} - ]}]}]}. - -setup() -> - application:load(sasl), - application:set_env(sasl, sasl_error_logger, - {file, "riak_kv_fs2_backend_eqc_sasl.log"}), - error_logger:tty(false), - error_logger:logfile({open, "riak_kv_fs2_backend_eqc.log"}), - ok. - -cleanup(_) -> - os:cmd("rm -rf test/fs-backend/*"). - --endif. % EQC --endif. % TEST_IN_RIAK_KV --endif. % TEST From 1db0f733e5c7ea0eedb1d40e92ecff513daf37ac Mon Sep 17 00:00:00 2001 From: UENISHI Kota Date: Thu, 21 Jan 2016 11:25:52 +0900 Subject: [PATCH 004/831] 2.1.1 release notes --- RELEASE-NOTES.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index a27374f6f..23ebd958c 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,53 @@ +#Riak S2 (Riak CS) 2.1.1 Release Notes + +## General Information +This is a bugfix release. + +## Bug Fixes + +* Remove blocks and a manifest after client failure. If a manifest was + left as writing and no overwrite happened after upload canceled, + then those partially uploaded blocks and manifest were to be left as + it was and occupies certain disk space. This is fixed by adding + additional error handling routine to move the manifest to GC bucket + by catching socket error. Partially uploaded blocks and manifest + will eventually be deleted by garbage + collection. ([#770](https://github.com/basho/riak_cs/issues/770) / + [PR#1280](https://github.com/basho/riak_cs/pull/1280)). +* Remove `admin.secret` from `riak-cs.conf` or `stanchion.conf`. Both + Riak CS and Stanchion used them to find who was the administrator, + with `admin.key` and `admin.secret`. Writing down `admin.secret` in + non-encrypted form may risk the whole system of the secret being + stolen. Administrator is able to (1) list all users, (2) + disable/enable other users, (3) changing user accounts. Workaround + for this might be encrypting the partition that includes + `/etc/riak-cs` + directory. ([#1274](https://github.com/basho/riak_cs/issues/1274) / + [PR#1279](https://github.com/basho/riak_cs/issues/1279) / + [PR#108](https://github.com/basho/stanchion/pull/108)). +* Forward-ported + [#1261](https://github.com/basho/riak_cs/issues/)/[PR#1263](https://github.com/basho/riak_cs/pull/1263) + as [PR#1266](https://github.com/basho/riak_cs/pull/1266). +* Allow any bytes (including non-UTF8 ones) in List Objects response + XML. List Objects API had been failing in case where an object with + its name including non-utf8 character was included in the + result. With this change, such keys are to be represented in the + result of List Objects as raw binaries although it may not proper + XML 1.0. ([#974](https://github.com/basho/riak_cs/issues/974) / + [PR#1255](https://github.com/basho/riak_cs/pull/1255) / + [PR#1275](https://github.com/basho/riak_cs/pull/1275)). + +## Notes on Upgrade + +Due to #1274, Riak CS has small startup behaviour change. A startup +check on administrator user was added, where a `admin.key` must be +specified either an existing user or default `admin-key`. Otherwise, +for example a non-existent user key, Riak CS process won't +start. Also, any `admin.secret` will no longer matter and ignored, +instead it is fetched from Riak on each startup. Initial procedure to +create the very first account starting `anonymous_user_creation = +true` does not change. + #Riak S2 (Riak CS) 2.1.0 Release Notes Released October 13, 2015. From c8c201ca6b9f0e919d340a0c840c7412d2735f53 Mon Sep 17 00:00:00 2001 From: UENISHI Kota Date: Thu, 21 Jan 2016 12:43:13 +0900 Subject: [PATCH 005/831] Add review comments --- RELEASE-NOTES.md | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 23ebd958c..6ad5327a6 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -5,13 +5,15 @@ This is a bugfix release. ## Bug Fixes -* Remove blocks and a manifest after client failure. If a manifest was - left as writing and no overwrite happened after upload canceled, - then those partially uploaded blocks and manifest were to be left as - it was and occupies certain disk space. This is fixed by adding - additional error handling routine to move the manifest to GC bucket - by catching socket error. Partially uploaded blocks and manifest - will eventually be deleted by garbage +* Remove blocks and a manifest after failure of client side, + e.g. upload stall, network failure between server and client, or + non-usual upload cancellation. If a manifest was left as writing and + no overwrite happened after upload canceled, then those partially + uploaded blocks and manifest were to be left as it was and occupies + certain disk space. This is fixed by adding additional error + handling routine to move the manifest to GC bucket by catching + socket error. Partially uploaded blocks and manifest will eventually + be deleted by garbage collection. ([#770](https://github.com/basho/riak_cs/issues/770) / [PR#1280](https://github.com/basho/riak_cs/pull/1280)). * Remove `admin.secret` from `riak-cs.conf` or `stanchion.conf`. Both @@ -19,14 +21,14 @@ This is a bugfix release. with `admin.key` and `admin.secret`. Writing down `admin.secret` in non-encrypted form may risk the whole system of the secret being stolen. Administrator is able to (1) list all users, (2) - disable/enable other users, (3) changing user accounts. Workaround - for this might be encrypting the partition that includes - `/etc/riak-cs` + disable/enable other users, (3) changing user accounts, and (4) read + access and storage statistics of all users. Workaround for this + might be encrypting the partition that includes `/etc/riak-cs` directory. ([#1274](https://github.com/basho/riak_cs/issues/1274) / [PR#1279](https://github.com/basho/riak_cs/issues/1279) / [PR#108](https://github.com/basho/stanchion/pull/108)). * Forward-ported - [#1261](https://github.com/basho/riak_cs/issues/)/[PR#1263](https://github.com/basho/riak_cs/pull/1263) + [#1261](https://github.com/basho/riak_cs/issues/1261)/[PR#1263](https://github.com/basho/riak_cs/pull/1263) as [PR#1266](https://github.com/basho/riak_cs/pull/1266). * Allow any bytes (including non-UTF8 ones) in List Objects response XML. List Objects API had been failing in case where an object with @@ -39,14 +41,16 @@ This is a bugfix release. ## Notes on Upgrade -Due to #1274, Riak CS has small startup behaviour change. A startup -check on administrator user was added, where a `admin.key` must be -specified either an existing user or default `admin-key`. Otherwise, -for example a non-existent user key, Riak CS process won't -start. Also, any `admin.secret` will no longer matter and ignored, -instead it is fetched from Riak on each startup. Initial procedure to -create the very first account starting `anonymous_user_creation = -true` does not change. +*It is strongly recommended to remove `admin.secret` from +`riak-cs.conf` and `stanchion.conf`, and `admin_secret` from +`advanced.config` of Riak CS and Stanchion.* Due to #1274, Riak CS has +small startup behaviour change. A startup check on administrator user +was added, where a `admin.key` must be specified either an existing +user or default `admin-key`. Otherwise, for example a non-existent +user key, Riak CS process won't start. Also, any `admin.secret` will +no longer matter and ignored, instead it is fetched from Riak on each +startup. Initial procedure to create the very first account starting +`anonymous_user_creation = true` does not change. #Riak S2 (Riak CS) 2.1.0 Release Notes From 91f68e0f5a98cd896e8dce46b1320fa168a80e54 Mon Sep 17 00:00:00 2001 From: Lauren Date: Thu, 21 Jan 2016 09:37:23 -0800 Subject: [PATCH 006/831] Edit release notes Edited release notes for word choice, formatting, and consistency --- RELEASE-NOTES.md | 78 ++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 6ad5327a6..e4bec7dcb 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -5,52 +5,52 @@ This is a bugfix release. ## Bug Fixes -* Remove blocks and a manifest after failure of client side, - e.g. upload stall, network failure between server and client, or - non-usual upload cancellation. If a manifest was left as writing and - no overwrite happened after upload canceled, then those partially - uploaded blocks and manifest were to be left as it was and occupies - certain disk space. This is fixed by adding additional error - handling routine to move the manifest to GC bucket by catching - socket error. Partially uploaded blocks and manifest will eventually - be deleted by garbage - collection. ([#770](https://github.com/basho/riak_cs/issues/770) / - [PR#1280](https://github.com/basho/riak_cs/pull/1280)). -* Remove `admin.secret` from `riak-cs.conf` or `stanchion.conf`. Both - Riak CS and Stanchion used them to find who was the administrator, - with `admin.key` and `admin.secret`. Writing down `admin.secret` in - non-encrypted form may risk the whole system of the secret being - stolen. Administrator is able to (1) list all users, (2) - disable/enable other users, (3) changing user accounts, and (4) read - access and storage statistics of all users. Workaround for this - might be encrypting the partition that includes `/etc/riak-cs` +* Remove blocks and manifest in cases of client-side failure, eg: + incomplete upload, network issues, or other unexpected transfer failures. + If the manifest was writing and no overwrite happened after upload canceled, + then the partially uploaded blocks and manifest are left as is, occupying + disk space. This is fixed by adding an error handling routine to move the + manifest to the garbage collection bucket by catching the socket error. + Partially uploaded blocks and manifests will eventually be deleted by + garbage collection. ([#770](https://github.com/basho/riak_cs/issues/770) / + [PR#1280](https://github.com/basho/riak_cs/pull/1280)) +* Remove `admin.secret` from riak-cs.conf and stanchion.conf. Both + Riak CS and Stanchion searched riak-cs.conf and stanchion.conf to + find who was the administrator using `admin.key` and `admin.secret`. + Writing down `admin.secret` in non-encrypted form compromises the + security of the system. The administrator is able to (1) list all + users, (2) disable/enable other users, (3) changing user accounts, + and (4) read access and storage statistics of all users. A workaround + for this is encrypting the partition that includes the /etc/riak-cs directory. ([#1274](https://github.com/basho/riak_cs/issues/1274) / [PR#1279](https://github.com/basho/riak_cs/issues/1279) / - [PR#108](https://github.com/basho/stanchion/pull/108)). -* Forward-ported - [#1261](https://github.com/basho/riak_cs/issues/1261)/[PR#1263](https://github.com/basho/riak_cs/pull/1263) - as [PR#1266](https://github.com/basho/riak_cs/pull/1266). + [PR#108](https://github.com/basho/stanchion/pull/108)) +* Use /etc/riak-cs/app.config when no generated config file is found. + This prevents an error when using app.config/vm.args instead of + riak.conf, such as when upgrading from 1.5.x. + ([#1261](https://github.com/basho/riak_cs/issues/1261)/ + [PR#1263](https://github.com/basho/riak_cs/pull/1263) + as [PR#1266](https://github.com/basho/riak_cs/pull/1266)) * Allow any bytes (including non-UTF8 ones) in List Objects response - XML. List Objects API had been failing in case where an object with - its name including non-utf8 character was included in the - result. With this change, such keys are to be represented in the - result of List Objects as raw binaries although it may not proper - XML 1.0. ([#974](https://github.com/basho/riak_cs/issues/974) / + XML. List Objects API had been failing in cases where an object with + non-UTF8 characters in its name was included in the result. With this + change, such keys are represented in the result of List Objects as + raw binaries, although it may not be proper XML 1.0. + ([#974](https://github.com/basho/riak_cs/issues/974) / [PR#1255](https://github.com/basho/riak_cs/pull/1255) / - [PR#1275](https://github.com/basho/riak_cs/pull/1275)). + [PR#1275](https://github.com/basho/riak_cs/pull/1275)) ## Notes on Upgrade -*It is strongly recommended to remove `admin.secret` from -`riak-cs.conf` and `stanchion.conf`, and `admin_secret` from -`advanced.config` of Riak CS and Stanchion.* Due to #1274, Riak CS has -small startup behaviour change. A startup check on administrator user -was added, where a `admin.key` must be specified either an existing -user or default `admin-key`. Otherwise, for example a non-existent -user key, Riak CS process won't start. Also, any `admin.secret` will -no longer matter and ignored, instead it is fetched from Riak on each -startup. Initial procedure to create the very first account starting -`anonymous_user_creation = true` does not change. +* We strongly recommend removing `admin.secret` from + riak-cs.conf and stanchion.conf, and `admin_secret` from the + `advanced.config` files of Riak CS and Stanchion. +* On startup, Riak CS now verifies that the value of `admin.key` + is either a valid Riak CS user key or the placeholder value + `admin-key`. For an user with a non-existent or invlaid user + key, Riak CS process won't start. Also, any `admin.secret` will + be ignored. The initial procedure to create the very first + account, starting `anonymous_user_creation = true`, does not change. #Riak S2 (Riak CS) 2.1.0 Release Notes From 0616dc46896dc919ca4e04190690bed3f505b349 Mon Sep 17 00:00:00 2001 From: UENISHI Kota Date: Thu, 4 Feb 2016 15:16:30 +0900 Subject: [PATCH 007/831] Remove equal at every Base64 URL encode/decoding Multipart upload id in S3 does not includes equal '=' which made its handling diverse among client libraries. Contrary to this, Riak CS issues multipart upload ids that include '='. With this change base64url module changes its behaviour, to automatically removing trailing '=' at encoding time, and to automatically adding trailing '=' at decoding time. This is harmless because in Base64 codes '=' is just a filler. --- src/base64url.erl | 61 ++++++++++++++++++++++++++++++++++--------- src/riak_cs_utils.erl | 10 ------- 2 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/base64url.erl b/src/base64url.erl index 86f4277ca..24876ee27 100644 --- a/src/base64url.erl +++ b/src/base64url.erl @@ -27,30 +27,47 @@ -module(base64url). +-include_lib("eunit/include/eunit.hrl"). + -export([decode/1, decode_to_string/1, encode/1, - encode_to_string/1, - mime_decode/1, - mime_decode_to_string/1]). + encode_to_string/1]). decode(Base64url) -> - base64:decode(urldecode(Base64url)). + base64:decode(amend_equal(urldecode(Base64url))). decode_to_string(Base64url) -> - base64:decode_to_string(urldecode(Base64url)). - -mime_decode(Base64url) -> - base64:mime_decode(urldecode(Base64url)). - -mime_decode_to_string(Base64url) -> - base64:mime_decode_to_string(urldecode(Base64url)). + base64:decode_to_string(amend_equal(urldecode(Base64url))). encode(Data) -> - urlencode(base64:encode(Data)). + urlencode(strip_equal(base64:encode(Data))). encode_to_string(Data) -> - urlencode(base64:encode_to_string(Data)). + urlencode(strip_equal(base64:encode_to_string(Data))). + +-spec strip_equal(binary() | string()) -> binary()|string(). +strip_equal(Encoded) when is_list(Encoded) -> + hd(string:tokens(Encoded, "=")); +strip_equal(Encoded) when is_binary(Encoded) -> + LCS = binary:longest_common_suffix([Encoded, <<"===">>]), + binary:part(Encoded, 0, byte_size(Encoded)-LCS). + +%% @doc complements '=' if it doesn't have 4*n length +-spec amend_equal(binary()|string()) -> binary()|string(). +amend_equal(Encoded) when is_list(Encoded) -> + Suffix = case length(Encoded) rem 4 of + 0 -> ""; + L -> [$=||_<-lists:seq(1,L)] + end, + lists:flatten([Encoded, Suffix]); +amend_equal(Bin) when is_binary(Bin) -> + case byte_size(Bin) rem 4 of + 0 -> Bin; + 1 -> <>; + 2 -> <>; + 3 -> <>, <<"+">>, <<"/">>])), + ?assertEqual(UUID, base64url:decode(Encoded)) + end || _<- lists:seq(1, 1024)], + [begin + UUID = druuid:v4(), + Encoded = base64url:encode_to_string(UUID), + %% ?assertEqual(nomatch, binary:match(Encoded, [<<"=">>, <<"+">>, <<"/">>])), + ?assertEqual(UUID, base64url:decode(Encoded)) + end || _<- lists:seq(1, 1024)]. + +-endif. diff --git a/src/riak_cs_utils.erl b/src/riak_cs_utils.erl index 8b37a1fbb..3a551d726 100644 --- a/src/riak_cs_utils.erl +++ b/src/riak_cs_utils.erl @@ -51,7 +51,6 @@ resolve_robj_siblings/1, riak_connection/0, riak_connection/1, - safe_base64_decode/1, safe_base64url_decode/1, safe_list_to_integer/1, set_object_acl/5, @@ -501,15 +500,6 @@ active_to_bool({error, notfound}) -> pid_to_binary(Pid) -> list_to_binary(pid_to_list(Pid)). --spec safe_base64_decode(binary() | string()) -> {ok, binary()} | bad. -safe_base64_decode(Str) -> - try - X = base64:decode(Str), - {ok, X} - catch _:_ -> - bad - end. - -spec safe_base64url_decode(binary() | string()) -> {ok, binary()} | bad. safe_base64url_decode(Str) -> try From 7f76495e1973f10f143f299edd762af964e8a12d Mon Sep 17 00:00:00 2001 From: UENISHI Kota Date: Thu, 4 Feb 2016 16:38:20 +0900 Subject: [PATCH 008/831] Add check whether encoded text is URL safe --- src/base64url.erl | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/base64url.erl b/src/base64url.erl index 24876ee27..4977afb4d 100644 --- a/src/base64url.erl +++ b/src/base64url.erl @@ -90,17 +90,18 @@ urldecode_digit(D) -> D. -ifdef(TEST). equal_strip_amend_test() -> %% TODO: rewrite this with EQC - [begin - UUID = druuid:v4(), - Encoded = base64url:encode(UUID), - ?assertEqual(nomatch, binary:match(Encoded, [<<"=">>, <<"+">>, <<"/">>])), - ?assertEqual(UUID, base64url:decode(Encoded)) - end || _<- lists:seq(1, 1024)], - [begin - UUID = druuid:v4(), - Encoded = base64url:encode_to_string(UUID), - %% ?assertEqual(nomatch, binary:match(Encoded, [<<"=">>, <<"+">>, <<"/">>])), - ?assertEqual(UUID, base64url:decode(Encoded)) - end || _<- lists:seq(1, 1024)]. + _ = [begin + UUID = druuid:v4(), + Encoded = base64url:encode(UUID), + ?assertEqual(nomatch, binary:match(Encoded, [<<"=">>, <<"+">>, <<"/">>])), + ?assertEqual(UUID, base64url:decode(Encoded)) + end || _<- lists:seq(1, 1024)], + _ = [begin + UUID = druuid:v4(), + Encoded = base64url:encode_to_string(UUID), + ?assertEqual(nomatch, re:run(Encoded, "(=\\+\\/)")), + ?assertEqual(UUID, base64url:decode(Encoded)) + end || _<- lists:seq(1, 1024)], + ok. -endif. From 2bff298b303c41c916936ed471f78478839f5c34 Mon Sep 17 00:00:00 2001 From: Luc Perkins Date: Wed, 16 Jul 2014 16:25:46 -0700 Subject: [PATCH 009/831] adderss -> address Conflicts: riak_test/tests/stanchion_switch_test.erl --- riak_test/tests/stanchion_switch_test.erl | 4 ++-- src/riak_cs_stanchion_console.erl | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/riak_test/tests/stanchion_switch_test.erl b/riak_test/tests/stanchion_switch_test.erl index 5571e1818..0c364e358 100644 --- a/riak_test/tests/stanchion_switch_test.erl +++ b/riak_test/tests/stanchion_switch_test.erl @@ -34,7 +34,7 @@ confirm() -> lists:foreach(fun(RiakNode) -> N = rtcs_dev:node_id(RiakNode), - ?assertEqual("Current Stanchion Adderss: http://127.0.0.1:9095\n", + ?assertEqual("Current Stanchion Address: http://127.0.0.1:9095\n", rtcs_exec:show_stanchion_cs(N)) end, RiakNodes), @@ -66,7 +66,7 @@ confirm() -> lists:foreach(fun(RiakNode) -> N = rtcs_dev:node_id(RiakNode), rtcs_exec:switch_stanchion_cs(N, "127.0.0.1", ?BACKUP_PORT), - ?assertEqual("Current Stanchion Adderss: http://127.0.0.1:9096\n", + ?assertEqual("Current Stanchion Address: http://127.0.0.1:9096\n", rtcs_exec:show_stanchion_cs(N)) end, RiakNodes), diff --git a/src/riak_cs_stanchion_console.erl b/src/riak_cs_stanchion_console.erl index 77465b241..b9fc60940 100644 --- a/src/riak_cs_stanchion_console.erl +++ b/src/riak_cs_stanchion_console.erl @@ -74,6 +74,6 @@ show([]) -> true -> "https://"; false -> "http://" end, - io:format("Current Stanchion Adderss: ~s~s:~s~n", + io:format("Current Stanchion Address: ~s~s:~s~n", [Scheme, Host, integer_to_list(Port)]) end, "Retrieving Stanchion info"). From b320ee152566a2602e9a6c3843a0407669eb2e8e Mon Sep 17 00:00:00 2001 From: Kazuhiro Suzuki Date: Wed, 10 Feb 2016 15:54:48 +0900 Subject: [PATCH 010/831] Update doc in base64url.erl --- src/base64url.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base64url.erl b/src/base64url.erl index 4977afb4d..6018d3662 100644 --- a/src/base64url.erl +++ b/src/base64url.erl @@ -21,7 +21,7 @@ %% @doc base64url is a wrapper around the base64 module to produce %% base64-compatible encodings that are URL safe. %% The / character in normal base64 encoding is replaced with -%% the _ character, and + is replaced with -. +%% the _ character, + is replaced with -,and = is omitted. %% This replacement scheme is named "base64url" by %% http://en.wikipedia.org/wiki/Base64 From ae9e09490d4c71e67c73537f7aee1a7edff199b2 Mon Sep 17 00:00:00 2001 From: UENISHI Kota Date: Wed, 9 Dec 2015 12:13:38 +0900 Subject: [PATCH 011/831] Return 500 when Riak is unavailable This commit adds new response 500 from an atom 'disconnected', which stems from Riak client error. The first call during request handling is fetching user information of requester via access key ID. It fails when Riak is unavailable by network partition or node being offline. Riak CS was handling this as authentication error thus returned 403. Regression tests are added in `regression_tests.erl` as a function, stopping all Riak nodes and trying S3 API requests to CS. --- riak_test/tests/error_response_test.erl | 4 +- riak_test/tests/regression_tests.erl | 50 +++++++++++++++++++----- src/riak_cs_app.erl | 4 +- src/riak_cs_s3_response.erl | 3 ++ src/riak_cs_wm_common.erl | 51 +++++++++++++------------ src/riak_cs_wm_utils.erl | 2 +- 6 files changed, 75 insertions(+), 39 deletions(-) diff --git a/riak_test/tests/error_response_test.erl b/riak_test/tests/error_response_test.erl index bbeae8f91..ace863bc5 100644 --- a/riak_test/tests/error_response_test.erl +++ b/riak_test/tests/error_response_test.erl @@ -42,9 +42,8 @@ confirm() -> erlcloud_s3:put_object(?BUCKET, ?KEY, SingleBlock, UserConfig), %% vefity response for timeout during getting a user. - %% FIXME: This should be http_error 503 rt_intercept:add(ErrCSNode, {riak_cs_riak_client, [{{get_user, 2}, get_user_timeout}]}), - ?assertError({aws_error, {http_error, 403, [], _}}, + ?assertError({aws_error, {http_error, 503, [], _}}, erlcloud_s3:get_object(?BUCKET, ?KEY, ErrConfig)), rt_intercept:clean(ErrCSNode, riak_cs_riak_client), @@ -54,7 +53,6 @@ confirm() -> ?assertError({aws_error, {socket_error, retry_later}}, erlcloud_s3:get_object(?BUCKET, ?KEY, ErrConfig)), rt_intercept:clean(ErrCSNode, riak_cs_block_server), - %% vefity response for timeout during get a bucket on stanchion. %% FIXME: This should be http_error 503 rt_intercept:add(Stanchion, {riakc_pb_socket, [{{get, 5}, get_timeout}]}), diff --git a/riak_test/tests/regression_tests.erl b/riak_test/tests/regression_tests.erl index 55dbcc653..f411970e8 100644 --- a/riak_test/tests/regression_tests.erl +++ b/riak_test/tests/regression_tests.erl @@ -29,10 +29,16 @@ -export([confirm/0]). -include_lib("eunit/include/eunit.hrl"). -include("riak_cs.hrl"). +-include_lib("erlcloud/include/erlcloud_aws.hrl"). -define(TEST_BUCKET_CS347, "test-bucket-cs347"). +-define(assert500(X), + ?assertError({aws_error, {http_error, 500, _, _}}, (X))). + confirm() -> + %% Setting short timeouts to accelarate verify_cs756 + rtcs:set_advanced_conf(cs, [{riak_cs, [{riakc_timeouts, 1000}]}]), {UserConfig, _} = SetupInfo = rtcs:setup(1), ok = verify_cs296(SetupInfo, "test-bucket-cs296"), @@ -40,9 +46,11 @@ confirm() -> ok = verify_cs436(SetupInfo, "test-bucket-cs436"), ok = verify_cs512(UserConfig, "test-bucket-cs512"), ok = verify_cs770(SetupInfo, "test-bucket-cs770"), - %% Append your next regression tests here + %% regression of CS#756 must be the last test as it stops all Riak + %% nodes. + ok = verify_cs756(SetupInfo, "test-bucket-cs756"), rtcs:pass(). %% @doc Regression test for `riak_cs' @@ -139,14 +147,18 @@ verify_cs436(_SetupInfo = {UserConfig, {_RiakNodes, _CSNodes, _Stanchion}}, Buck -define(KEY, "cs512-key"). verify_cs512(UserConfig, BucketName) -> - %% {ok, UserConfig} = setup(), ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), put_and_get(UserConfig, BucketName, <<"OLD">>), put_and_get(UserConfig, BucketName, <<"NEW">>), - delete(UserConfig, BucketName), + erlcloud_s3:delete_object(BucketName, ?KEY, UserConfig), assert_notfound(UserConfig,BucketName), ok. +put_and_get(UserConfig, BucketName, Data) -> + erlcloud_s3:put_object(BucketName, ?KEY, Data, UserConfig), + Props = erlcloud_s3:get_object(BucketName, ?KEY, UserConfig), + ?assertEqual(proplists:get_value(content, Props), Data). + verify_cs770({UserConfig, {RiakNodes, _, _}}, BucketName) -> %% put object and cancel it; ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), @@ -220,13 +232,33 @@ get_manifests(RiakNodes, BucketName, Key) -> [binary_to_term(V) || {_, V} <- riakc_obj:get_contents(Obj), V =/= <<>>]. -put_and_get(UserConfig, BucketName, Data) -> - erlcloud_s3:put_object(BucketName, ?KEY, Data, UserConfig), - Props = erlcloud_s3:get_object(BucketName, ?KEY, UserConfig), - ?assertEqual(proplists:get_value(content, Props), Data). +verify_cs756({UserConfig, {RiakNodes, _, _}}, BucketName) -> + %% Making sure API call from non-existent user all fails in 403, not 50x + %% This could be done with eqc + lager:info("CS756 regression"), + [rt:stop(RiakNode) || RiakNode <- RiakNodes], + [rt:wait_until_unpingable(RiakNode) || RiakNode <- RiakNodes], + + %% test Object APIs before bucket creation + ?assert500(erlcloud_s3:put_object(BucketName, "mine", <<"deadbeef">>, UserConfig)), + ?assert500(erlcloud_s3:get_object(BucketName, "mine", UserConfig)), + + %% test bucket creation fails + ?assert500(erlcloud_s3:create_bucket(BucketName, UserConfig)), + ?assert500(erlcloud_s3:delete_bucket("dummybucket", UserConfig)), -delete(UserConfig, BucketName) -> - erlcloud_s3:delete_object(BucketName, ?KEY, UserConfig). + ?assert500(erlcloud_s3:put_object(BucketName, "mine", <<"deadbeef">>, UserConfig)), + ?assert500(erlcloud_s3:get_object(BucketName, "mine", UserConfig)), + ?assert500(erlcloud_s3:delete_object(BucketName, "mine", UserConfig)), + + %% try copy + ?assert500(erlcloud_s3:copy_object(BucketName, "destination", + BucketName, "mine", UserConfig)), + + ?assert500(erlcloud_s3:delete_bucket("dummybucket", UserConfig)), + ?assert500(erlcloud_s3:delete_bucket(BucketName, UserConfig)), + + ok. assert_notfound(UserConfig, BucketName) -> ?assertException(_, diff --git a/src/riak_cs_app.erl b/src/riak_cs_app.erl index 7e24f171d..f69daef8c 100644 --- a/src/riak_cs_app.erl +++ b/src/riak_cs_app.erl @@ -80,6 +80,7 @@ check_admin_creds() -> fetch_and_cache_admin_creds(Key) -> %% Not using as the master pool might not be initialized {ok, MasterPbc} = riak_connection(), + _ = lager:info("setting admin as ~s", [Key]), try %% Do we count this into stats?; This is a startup query and %% system latency is expected to be low. So get timeout can be @@ -90,7 +91,7 @@ fetch_and_cache_admin_creds(Key) -> {ok, Obj} -> User = riak_cs_user:from_riakc_obj(Obj, false), Secret = User?RCS_USER.key_secret, - lager:info("setting admin secret as ~s", [Secret]), + _ = lager:debug("admin secret: ~s", [Secret]), application:set_env(riak_cs, admin_secret, Secret); Error -> _ = lager:error("Couldn't get admin user (~s) record: ~p", @@ -192,6 +193,7 @@ check_bucket_props(Bucket, MasterPbc) -> riak_connection() -> {Host, Port} = riak_cs_config:riak_host_port(), + lager:debug("connecting to ~p", [{Host, Port}]), Timeout = case application:get_env(riak_cs, riakc_connect_timeout) of {ok, ConfigValue} -> ConfigValue; diff --git a/src/riak_cs_s3_response.erl b/src/riak_cs_s3_response.erl index c4455d63f..3267f85b8 100644 --- a/src/riak_cs_s3_response.erl +++ b/src/riak_cs_s3_response.erl @@ -111,6 +111,7 @@ error_message(unexpected_content) -> "This request does not support content"; error_message(canned_acl_and_header_grant) -> "Specifying both Canned ACLs and Header Grants is not allowed"; error_message(malformed_xml) -> "The XML you provided was not well-formed or did not validate against our published schema"; error_message(remaining_multipart_upload) -> "Concurrent multipart upload initiation detected. Please stop it to delete bucket."; +error_message(disconnected) -> "Please contact administrator."; error_message(not_implemented) -> "A request you provided implies functionality that is not implemented"; error_message(ErrorName) -> _ = lager:debug("Unknown error: ~p", [ErrorName]), @@ -161,6 +162,7 @@ error_code(canned_acl_and_header_grant) -> "InvalidRequest"; error_code(malformed_acl_error) -> "MalformedACLError"; error_code(malformed_xml) -> "MalformedXML"; error_code(remaining_multipart_upload) -> "MultipartUploadRemaining"; +error_code(disconnected) -> "ServiceUnavailable"; error_code(not_implemented) -> "NotImplemented"; error_code(ErrorName) -> _ = lager:debug("Unknown error: ~p", [ErrorName]), @@ -218,6 +220,7 @@ status_code(canned_acl_and_header_grant) -> 400; status_code(malformed_acl_error) -> 400; status_code(malformed_xml) -> 400; status_code(remaining_multipart_upload) -> 409; +status_code(disconnected) -> 500; status_code(not_implemented) -> 501; status_code(ErrorName) -> _ = lager:debug("Unknown error: ~p", [ErrorName]), diff --git a/src/riak_cs_wm_common.erl b/src/riak_cs_wm_common.erl index de0550ad9..ae5343ccc 100644 --- a/src/riak_cs_wm_common.erl +++ b/src/riak_cs_wm_common.erl @@ -162,6 +162,7 @@ forbidden(RD, Ctx=#context{auth_module=AuthMod, submodule=Mod, riak_client=RcPid, exports_fun=ExportsFun}) -> + {AuthResult, AnonOk} = case AuthMod:identify(RD, Ctx) of failed -> @@ -174,15 +175,20 @@ forbidden(RD, Ctx=#context{auth_module=AuthMod, <<"forbidden">>, [], [riak_cs_wm_utils:extract_name(UserKey)]), - UserLookupResult = maybe_create_user( - riak_cs_user:get_user(UserKey, RcPid), - UserKey, - Ctx#context.api, - Ctx#context.auth_module, - AuthData, - RcPid), - {authenticate(UserLookupResult, RD, Ctx, AuthData), - resource_call(Mod, anon_ok, [], ExportsFun)} + case maybe_create_user( + riak_cs_user:get_user(UserKey, RcPid), + UserKey, + Ctx#context.api, + Ctx#context.auth_module, + AuthData, + RcPid) of + {ok, {User, Obj}} = _LookupResult -> + {authenticate(User, Obj, RD, Ctx, AuthData), + resource_call(Mod, anon_ok, [], ExportsFun)}; + Error -> + {Error, + resource_call(Mod, anon_ok, [], ExportsFun)} + end end, post_authentication(AuthResult, RD, Ctx, AnonOk). @@ -409,10 +415,9 @@ authorize(RD,Ctx=#context{submodule=Mod, exports_fun=ExportsFun}) -> end, R. --type user_lookup_result() :: {ok, {rcs_user(), riakc_obj:riakc_obj()}} | {error, term()}. --spec authenticate(user_lookup_result(), term(), term(), term()) -> - {ok, rcs_user(), riakc_obj:riakc_obj()} | {error, term()}. -authenticate({ok, {User, UserObj}}, RD, Ctx=#context{auth_module=AuthMod, submodule=Mod}, AuthData) +-spec authenticate(rcs_user(), riakc_obj:riakc_obj(), term(), term(), term()) -> + {ok, rcs_user(), riakc_obj:riakc_obj()} | {error, bad_auth}. +authenticate(User, UserObj, RD, Ctx=#context{auth_module=AuthMod, submodule=Mod}, AuthData) when User?RCS_USER.status =:= enabled -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"authenticate">>, [], [atom_to_binary(AuthMod, latin1)]), case AuthMod:authenticate(User, AuthData, RD, Ctx) of @@ -426,12 +431,10 @@ authenticate({ok, {User, UserObj}}, RD, Ctx=#context{auth_module=AuthMod, submod riak_cs_dtrace:dt_wm_return({?MODULE, Mod}, <<"authenticate">>, [0], [atom_to_binary(AuthMod, latin1)]), {error, bad_auth} end; -authenticate({ok, {User, _UserObj}}, _RD, _Ctx, _AuthData) +authenticate(User, _UserObj, _RD, _Ctx, _AuthData) when User?RCS_USER.status =/= enabled -> %% {ok, _} -> %% disabled account, we are going to 403 - {error, bad_auth}; -authenticate({error, _}=Error, _RD, _Ctx, _AuthData) -> - Error. + {error, bad_auth}. -spec exports_fun(orddict:orddict()) -> function(). exports_fun(Exports) -> @@ -494,15 +497,13 @@ post_authentication({error, {auth_not_supported, AuthType}}, RD, _ = lager:debug("auth_not_supported: ~s", [AuthType]), ResponseMod:api_error({auth_not_supported, AuthType}, RD, Ctx); post_authentication({error, notfound}, RD, Ctx, _, _) -> - %% This is rubbish. We need to differentiate between - %% no key_id being presented and the key_id lookup - %% failing in some better way. - _ = lager:debug("key_id not present or not found"), - riak_cs_wm_utils:deny_access(RD, Ctx); -post_authentication({error, Reason}, RD, Ctx, _, _) -> - %% no matching keyid was found, or lookup failed + _ = lager:debug("User does not exist"), + riak_cs_wm_utils:deny_invalid_key(RD, Ctx); +post_authentication({error, Reason}, RD, + #context{response_module=ResponseMod} = Ctx, _, _) -> + %% Lookup failed, basically due to disconnected stuff _ = lager:debug("Authentication error: ~p", [Reason]), - riak_cs_wm_utils:deny_invalid_key(RD, Ctx). + ResponseMod:api_error(Reason, RD, Ctx). update_stats_inflow(_RD, undefined = _StatsPrefix) -> ok; diff --git a/src/riak_cs_wm_utils.erl b/src/riak_cs_wm_utils.erl index 22ac1b7be..b2ff543d8 100644 --- a/src/riak_cs_wm_utils.erl +++ b/src/riak_cs_wm_utils.erl @@ -316,7 +316,7 @@ deny_access(RD, Ctx) -> -%% @doc Prodice an invalid-access-keyid error message from a +%% @doc Produce an invalid-access-keyid error message from a %% webmachine resource's `forbidden/2' function. deny_invalid_key(RD, Ctx=#context{response_module=ResponseMod}) -> ResponseMod:api_error(invalid_access_key_id, RD, Ctx). From 4d9b923bcb115b1dc710d2e981d83f0ee3285b30 Mon Sep 17 00:00:00 2001 From: UENISHI Kota Date: Tue, 15 Mar 2016 14:15:40 +0900 Subject: [PATCH 012/831] Add SSL setup of riak_test and https_tests SSL setup is a little kludgy way using direct RPC function call to create initial admin user, if SSL configuration is included in `rtcs` setup config argument. This also adds hand-made S3 client that uses ssl module, because all available S3 clients does not assume HTTPS access via proxy host/port (for security, of course, yes). But for local tests it is inconvenient to test HTTPS requests. Note that `https_tests` does not pass integration testing in this commit. --- riak_test/src/rtcs.erl | 13 +++++- riak_test/src/rtcs_admin.erl | 10 +++++ riak_test/src/rtcs_object.erl | 79 ++++++++++++++++++++++++--------- riak_test/tests/https_tests.erl | 21 +++++++++ 4 files changed, 102 insertions(+), 21 deletions(-) create mode 100644 riak_test/tests/https_tests.erl diff --git a/riak_test/src/rtcs.erl b/riak_test/src/rtcs.erl index ed44731cc..75d7330eb 100644 --- a/riak_test/src/rtcs.erl +++ b/riak_test/src/rtcs.erl @@ -92,9 +92,20 @@ setup_clusters(Configs, JoinFun, NumNodes, Vsn) -> ?assertEqual(ok, wait_until_nodes_ready(RiakNodes)), ?assertEqual(ok, wait_until_no_pending_changes(RiakNodes)), rt:wait_until_ring_converged(RiakNodes), - AdminConfig = setup_admin_user(NumNodes, Vsn), + AdminConfig = + case ssl_options(Configs) of + [] -> + setup_admin_user(NumNodes, Vsn); + _SSLOpts -> + rtcs_admin:create_user_rpc(hd(_CSNodes), "admin-key", "admin-secret") + end, + {AdminConfig, Nodes}. +ssl_options(Config) -> + RiakCS = proplists:get_value(cs, Config), + CSConfig = proplists:get_value(riak_cs, RiakCS), + proplists:get_value(ssl, CSConfig, []). pass() -> teardown(), diff --git a/riak_test/src/rtcs_admin.erl b/riak_test/src/rtcs_admin.erl index b35c0ae06..f4e457425 100644 --- a/riak_test/src/rtcs_admin.erl +++ b/riak_test/src/rtcs_admin.erl @@ -24,6 +24,7 @@ create_user/2, create_user/3, create_user/4, + create_user_rpc/3, create_admin_user/1, update_user/5, get_user/4, @@ -50,6 +51,15 @@ storage_stats_json_request(AdminConfig, UserConfig, Begin, End) -> {struct, Slice} = latest(Samples, undefined), by_bucket_list(Slice, []). +%% Kludge for SSL testing +create_user_rpc(Node, Key, Secret) -> + User = "admin", + Email = "admin@me.com", + + %% You know this is a kludge, user creation via RPC + _Res = rpc:call(Node, riak_cs_user, create_user, [User, Email, Key, Secret]), + aws_config(Key, Secret, rtcs_config:cs_port(1)). + -spec create_admin_user(atom()) -> #aws_config{}. create_admin_user(Node) -> User = "admin", diff --git a/riak_test/src/rtcs_object.erl b/riak_test/src/rtcs_object.erl index b2128bae4..edfa2f8d2 100644 --- a/riak_test/src/rtcs_object.erl +++ b/riak_test/src/rtcs_object.erl @@ -35,39 +35,41 @@ upload(UserConfig, {normal_partial, CL, Actual}, B, K) when is_list(K), CL >= Actual -> %% Dumbest handmade S3 PUT Client %% Send partial payload to the socket and suddenly close - Host = io_lib:format("~s.s3.amazonaws.com", [B]), - Date = httpd_util:rfc1123_date(erlang:localtime()), + Binary = binary:copy(<<"*">>, Actual), + %% Fake checksum, this request should fail if all payloads were sent MD5 = "1B2M2Y8AsgTpgAmY7PhCfg==", - ToSign = ["PUT", $\n, MD5, $\n, "application/octet-stream", $\n, - Date, $\n, [], $/, B, $/, K, []], - lager:debug("String to Sign: ~s", [ToSign]), - Sig = base64:encode_to_string(crypto:hmac( - sha, - UserConfig#aws_config.secret_access_key, - ToSign)), - Auth = io_lib:format("Authorization: AWS ~s:~s", - [UserConfig#aws_config.access_key_id, Sig]), - {ok, Sock} = gen_tcp:connect("127.0.0.1", 15018, [{active, false}]), - FirstLine = io_lib:format("PUT /~s HTTP/1.1", [K]), - Binary = binary:copy(<<"*">>, Actual), - ReqHdr = [FirstLine, $\n, "Host: ", Host, $\n, Auth, $\n, - "Content-Length: ", integer_to_list(CL), $\n, - "Content-Md5: ", MD5, $\n, - "Content-Type: application/octet-stream", $\n, - "Date: ", Date, $\n], + ReqHdr = base_header(B, K, CL, MD5, UserConfig, ""), lager:info("~s", [iolist_to_binary(ReqHdr)]), + + %% Hard coded Host only for riak_test + {ok, Sock} = gen_tcp:connect("127.0.0.1", 15018, [{active, false}]), case gen_tcp:send(Sock, [ReqHdr, $\n, Binary]) of ok -> %% Let caller handle the socket call, either close or continue {ok, Sock}; Error -> Error - end. + end; +upload(UserConfig, {https, Size}, B, K) -> + Binary = binary:copy(<<"*">>, Size), + MD5 = base64:encode(crypto:hash(md5, Binary)), + ReqHdr = base_header(B, K, Size, MD5, UserConfig, ""), + send_ssl_request([ReqHdr, $\n, Binary]). upload(UserConfig, normal_copy, B, DstK, SrcK) -> ?assertEqual([{copy_source_version_id, "false"}, {version_id, "null"}], erlcloud_s3:copy_object(B, DstK, B, SrcK, UserConfig)); + +upload(UserConfig, https_copy, B, DstK, SrcK) -> + MD5 = "", + CL = 0, + CopyHdr = ["x-amz-copy-source:/", B, "/", SrcK, $\n, + "x-amz-metadata-directive:COPY", $\n], + ReqHdr = base_header(B, DstK, CL, MD5, UserConfig, CopyHdr), + + send_ssl_request([ReqHdr, CopyHdr, $\n]); + upload(UserConfig, multipart_copy, B, DstK, SrcK) -> InitUploadRes = erlcloud_s3_multipart:initiate_upload(B, DstK, "text/plain", [], UserConfig), UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), @@ -83,6 +85,43 @@ upload(UserConfig, multipart_copy, B, DstK, SrcK) -> ?assertEqual(ok, erlcloud_s3_multipart:complete_upload( B, DstK, UploadId, EtagList, UserConfig)). +send_ssl_request(Payload) -> + {ok, Sock} = ssl:connect("127.0.0.1", 15018, [{active, false}, binary]), + lager:info("sending HTTPS request: ~s", [Payload]), + ok = ssl:send(Sock, Payload), + {ok, Data} = ssl:recv(Sock, 0), + lager:debug("SSL recv: ~p", [Data]), + {ok, Packet, Rest} = erlang:decode_packet(http, Data, []), + lager:debug("~p / ~p", [Packet, Rest]), + ?assertEqual({http_response, {1, 1}, 200, "OK"}, Packet), + ssl:close(Sock), + ok. + +base_header(B, K, CL, MD5, UserConfig, MetaTags) -> + Host = io_lib:format("~s.s3.amazonaws.com", [B]), + Date = httpd_util:rfc1123_date(erlang:localtime()), + ToSign = ["PUT", $\n, + case CL of 0 -> ""; _ -> MD5 end, $\n, + "application/octet-stream", $\n, + Date, $\n, MetaTags, $/, B, $/, K, []], + lager:debug("String to Sign: ~s", [ToSign]), + Sig = base64:encode_to_string(crypto:hmac( + sha, + UserConfig#aws_config.secret_access_key, + ToSign)), + Auth = io_lib:format("Authorization: AWS ~s:~s", + [UserConfig#aws_config.access_key_id, Sig]), + FirstLine = io_lib:format("PUT /~s HTTP/1.1", [K]), + [FirstLine, $\n, "Host: ", Host, $\n, Auth, $\n, + "Content-Length: ", integer_to_list(CL), $\n, + case CL of + 0 -> ""; + _ -> ["Content-Md5: ", MD5, $\n] + end, + "Content-Type: application/octet-stream", $\n, + "Date: ", Date, $\n]. + + mb(MegaBytes) -> MegaBytes * 1024 * 1024. diff --git a/riak_test/tests/https_tests.erl b/riak_test/tests/https_tests.erl new file mode 100644 index 000000000..591b9088f --- /dev/null +++ b/riak_test/tests/https_tests.erl @@ -0,0 +1,21 @@ +-module(https_tests). + +-export([confirm/0]). + +confirm() -> + {ok, _} = application:ensure_all_started(ssl), + CSConfig = [{ssl, [{certfile, "./etc/cert.pem"}, {keyfile, "./etc/key.pem"}]}], + {UserConfig, _} = rtcs:setup(1, [{cs, [{riak_cs, CSConfig}]}]), + ok = verify_cs1025(UserConfig), + rtcs:pass(). + +verify_cs1025(UserConfig) -> + B = <<"booper">>, + K = <<"drooper">>, + K2 = <<"super">>, + lager:debug("here0"), + rtcs_object:upload(UserConfig, {https, 0}, B, <<>>), + lager:debug("here"), + rtcs_object:upload(UserConfig, {https, 42}, B, K), + lager:debug("here2"), + rtcs_object:upload(UserConfig, https_copy, B, K2, K). From b10ec36f15b484232d5cf4c25c7acd3ad8718600 Mon Sep 17 00:00:00 2001 From: UENISHI Kota Date: Tue, 15 Mar 2016 14:39:26 +0900 Subject: [PATCH 013/831] Use mochiweb_socket instead of inet and gen_tcp --- src/riak_cs_copy_object.erl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/riak_cs_copy_object.erl b/src/riak_cs_copy_object.erl index 48375be41..da430c1e6 100644 --- a/src/riak_cs_copy_object.erl +++ b/src/riak_cs_copy_object.erl @@ -332,16 +332,17 @@ copy_range(RD, ?MANIFEST{content_length=Len}) -> end. -%% @doc nasty hack, do not use this other than for disconnect +%% @doc nasty hack, do not use this other than for disconnect %% detection in copying objects. --spec connection_checker(inet:socket()) -> fun(() -> boolean()). +-type mochiweb_socket() :: inet:socket() | {ssl, ssl:sslsocket()}. +-spec connection_checker(mochiweb_socket()) -> fun(() -> boolean()). connection_checker(Socket) -> fun() -> - case inet:peername(Socket) of + case mochiweb_socket:peername(Socket) of {error,_E} -> false; {ok,_} -> - case gen_tcp:recv(Socket, 0, 0) of + case mochiweb_socket:recv(Socket, 0, 0) of {error, timeout} -> true; {error, _E} -> From 7c9821613c8e408fd8cbc2a47047ba8f6c064458 Mon Sep 17 00:00:00 2001 From: UENISHI Kota Date: Tue, 15 Mar 2016 15:06:19 +0900 Subject: [PATCH 014/831] Fix non-ssl case of r_t --- riak_test/src/rtcs.erl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/riak_test/src/rtcs.erl b/riak_test/src/rtcs.erl index 75d7330eb..c30d5736a 100644 --- a/riak_test/src/rtcs.erl +++ b/riak_test/src/rtcs.erl @@ -103,9 +103,15 @@ setup_clusters(Configs, JoinFun, NumNodes, Vsn) -> {AdminConfig, Nodes}. ssl_options(Config) -> - RiakCS = proplists:get_value(cs, Config), - CSConfig = proplists:get_value(riak_cs, RiakCS), - proplists:get_value(ssl, CSConfig, []). + case proplists:get_value(cs, Config) of + undefined -> []; + RiakCS -> + case proplists:get_value(riak_cs, RiakCS) of + undefined -> []; + CSConfig -> + proplists:get_value(ssl, CSConfig, []) + end + end. pass() -> teardown(), From 945990103c317153dbc4a3a3ef39d046cf2979a6 Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Tue, 15 Mar 2016 09:47:08 -0400 Subject: [PATCH 015/831] fix rtcs_dev:path/2 to always throw an informative error when the requested key is not found --- riak_test/src/rtcs_dev.erl | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/riak_test/src/rtcs_dev.erl b/riak_test/src/rtcs_dev.erl index aa4c5c3e9..211332219 100644 --- a/riak_test/src/rtcs_dev.erl +++ b/riak_test/src/rtcs_dev.erl @@ -80,14 +80,17 @@ srcpath(Vsn) -> Path = ?SRC_PATHS, path(Vsn, Path). -path(Vsn, Paths=[{_,_}|_]) -> - orddict:fetch(Vsn, orddict:from_list(Paths)); +path(Key, [{Key, Path} | _]) -> + Path; +path(Key, [{_, _} | Paths]) -> + path(Key, Paths); path(current, Path) -> Path; path(root, Path) -> Path; -path(_, _) -> - throw("Version requested but only one path provided"). +path(Key, _) -> + Err = io_lib:format("Path '~p' requested but no value provided", [Key]), + throw(lists:flatten(Err)). upgrade(Node, NewVersion) -> N = node_id(Node), From ffda6e1372d37338abb4a122d8b8209dfb84c499 Mon Sep 17 00:00:00 2001 From: UENISHI Kota Date: Wed, 16 Mar 2016 11:11:41 +0900 Subject: [PATCH 016/831] Remove debug logs --- riak_test/tests/https_tests.erl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/riak_test/tests/https_tests.erl b/riak_test/tests/https_tests.erl index 591b9088f..8f3f90c51 100644 --- a/riak_test/tests/https_tests.erl +++ b/riak_test/tests/https_tests.erl @@ -13,9 +13,9 @@ verify_cs1025(UserConfig) -> B = <<"booper">>, K = <<"drooper">>, K2 = <<"super">>, - lager:debug("here0"), + lager:info("Creating a bucket ~s", [B]), rtcs_object:upload(UserConfig, {https, 0}, B, <<>>), - lager:debug("here"), + lager:info("Creating a source object to copy, ~s", [K]), rtcs_object:upload(UserConfig, {https, 42}, B, K), - lager:debug("here2"), + lager:info("Trying copy from ~s to ~s", [K, K2]), rtcs_object:upload(UserConfig, https_copy, B, K2, K). From b9cf3cefb600fa504fe00d03a42565eb6ce8373c Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Wed, 16 Mar 2016 13:14:39 -0400 Subject: [PATCH 017/831] fix info labels to report the correct module --- riak_test/src/rtcs_dev.erl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/riak_test/src/rtcs_dev.erl b/riak_test/src/rtcs_dev.erl index 211332219..966a4ad5b 100644 --- a/riak_test/src/rtcs_dev.erl +++ b/riak_test/src/rtcs_dev.erl @@ -175,7 +175,7 @@ all_the_app_configs(DevPath) -> end. update_app_config(all, Config) -> - lager:info("rtdev:update_app_config(all, ~p)", [Config]), + lager:info("rtcs_dev:update_app_config(all, ~p)", [Config]), [ update_app_config(DevPath, Config) || DevPath <- devpaths()]; update_app_config(Node, Config) when is_atom(Node) -> N = node_id(Node), @@ -196,7 +196,7 @@ update_app_config(DevPath, Config) -> [update_app_config_file(AppConfig, Config) || AppConfig <- all_the_app_configs(DevPath)]. update_app_config_file(ConfigFile, Config) -> - lager:info("rtdev:update_app_config_file(~s, ~p)", [ConfigFile, Config]), + lager:info("rtcs_dev:update_app_config_file(~s, ~p)", [ConfigFile, Config]), BaseConfig = case file:consult(ConfigFile) of {ok, [ValidConfig]} -> @@ -466,7 +466,7 @@ check_node({_N, Version}) -> end. set_backend(Backend) -> - lager:info("rtdev:set_backend(~p)", [Backend]), + lager:info("rtcs_dev:set_backend(~p)", [Backend]), update_app_config(all, [{riak_kv, [{storage_backend, Backend}]}]), get_backends(). From e7f2f56de33398ae2d1b10a8f17b31e9d9988731 Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Wed, 16 Mar 2016 13:15:48 -0400 Subject: [PATCH 018/831] this is what I'd like to do, but it would require more work than I'm willing to give it right now --- riak_test/tests/xml_response_test.erl | 183 ++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 riak_test/tests/xml_response_test.erl diff --git a/riak_test/tests/xml_response_test.erl b/riak_test/tests/xml_response_test.erl new file mode 100644 index 000000000..90d51d4ce --- /dev/null +++ b/riak_test/tests/xml_response_test.erl @@ -0,0 +1,183 @@ +%% ------------------------------------------------------------------- +%% +%% Copyright (c) 2016 Basho Technologies, Inc. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% ------------------------------------------------------------------- + +-module(xml_response_test). + +-export([confirm/0]). + +-include_lib("eunit/include/eunit.hrl"). +-include_lib("xmerl/include/xmerl.hrl"). + +-define(test_bucket(Label), "test-bucket-" Label). +-define(test_key(Label), "test-key-" Label). +-define(root_host_default, "s3.amazonaws.com"). +-define(root_host_alt, "foo.bar.example.com"). + +confirm() -> + verify_multipart_upload_response(). + +% TODO: get the default root host from the riak-cs.conf file? + +verify_multipart_upload_response() -> + {UserConfig, {_, [Node], _}} = rtcs:setup(1), + Bucket = ?test_bucket("vrhr"), + DefKey = ?test_key("vrhr-dflt"), + AltKey = ?test_key("vrhr-alt"), + NumParts = 3, + PartSize = (5 * 1024 * 1024), + + lager:info("creating bucket ~p", [Bucket]), + ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket, UserConfig)), + + {ok, {_, DefRes}} = perform_multipart_upload( + Bucket, DefKey, NumParts, PartSize, UserConfig), + lager:info("Response Data of '~s/~s':\n~p\n", [Bucket, DefKey, DefRes]), + + verify_multipart_upload_response( + DefRes, ?root_host_default, Bucket, DefKey), + + rtcs_exec:stop_cs(1), + rt:wait_until_unpingable(Node), + rtcs:set_conf({cs, current, 1}, [{root_host, ?root_host_alt}]), + rtcs_exec:start_cs(1), + rt:wait_until_pingable(Node), + + {ok, {_, AltRes}} = perform_multipart_upload( + Bucket, AltKey, NumParts, PartSize, UserConfig), + lager:info("Response Data of '~s/~s':\n~p\n", [Bucket, AltKey, AltRes]), + + verify_multipart_upload_response(AltRes, ?root_host_alt, Bucket, AltKey), + + rtcs:pass(). + +perform_multipart_upload(Bucket, Key, NumParts, PartSize, Config) -> + lager:info("initiating multipart upload of '~s/~s'", [Bucket, Key]), + UploadId = erlcloud_s3_multipart:upload_id( + erlcloud_s3_multipart:initiate_upload(Bucket, Key, [], [], Config)), + + lager:info("uploading parts of '~s/~s'", [Bucket, Key]), + EtagList = upload_and_assert_parts( + Bucket, Key, UploadId, NumParts, PartSize, Config), + lager:info("ETags of '~s/~s': ~p", [Bucket, Key, EtagList]), + + lager:info("completing upload of '~s/~s'", [Bucket, Key]), + complete_multipart_upload(Bucket, Key, UploadId, EtagList, Config). + +verify_multipart_upload_response(ResponseBody, RootHost, Bucket, Key) -> + [#xmlText{value = ResBucket}] = get_response_value( + ResponseBody, 'CompleteMultipartUploadResult', 'Bucket'), + [#xmlText{value = ResKey}] = get_response_value( + ResponseBody, 'CompleteMultipartUploadResult', 'Key'), + [#xmlText{value = ResLocation}] = get_response_value( + ResponseBody, 'CompleteMultipartUploadResult', 'Location'), + + ?assertEqual(ResBucket, Bucket), + ?assertEqual(ResKey, Key), + ?assertEqual(ResLocation, lists:flatten( + io_lib:format("http://~s.~s/~s", [Bucket, RootHost, Key]))). + + +% verify_root_host_result(NodeId, User, Host) -> +% ?assertNotEqual(Host, get_response_value(User, Field)), +% reset_cs_root_host(NodeId, Host) +% ?assertEqual(Host, get_response_value(User, Field)), +% +% reset_cs_root_host(NodeId, Host) -> +% Node = rtcs:cs_node(NodeId), +% rtcs_exec:stop_cs(NodeId), +% rt:wait_until_unpingable(Node), +% rtcs:set_advanced_conf(Node, [{riak_cs, [{root_host, Host}]}]), +% rtcs_exec:start_cs(NodeId), +% rt:wait_until_pingable(Node), +% ok. + +get_response_value( + #xmlElement{name = TopLevel, content = Content}, TopLevel, Field) -> + get_response_value(Content, Field); +get_response_value(ResponseBody, TopLevel, Field) + when erlang:is_tuple(ResponseBody) + andalso erlang:tuple_size(ResponseBody) > 0 -> + get_response_value(erlang:element(1, ResponseBody), TopLevel, Field). + +get_response_value([#xmlElement{name = Field, content = Value} | _], Field) -> + Value; +get_response_value([_ | Content], Field) -> + get_response_value(Content, Field). + +% +% Use erlcloud_s3:s3_request instead of erlcloud_s3_multipart:complete_upload +% to be able to process the full result XML. +% +complete_multipart_upload(Bucket, Key, UploadId, EtagList, Config) -> + Response = erlcloud_s3:s3_request( + Config, post, Bucket, + [$/ | Key], % URL + [{"uploadId", UploadId}], % sub-resources + [], % params + etags_to_multipart_request(EtagList), % POST data + []), % headers + lager:info("Raw Response: ~p", [Response]), + case Response of + {_, []} -> + {ok, Response}; + {Headers, BodyXML} -> + Body = xmerl_scan:string(BodyXML), + case erlang:element(1, Body) of + #xmlElement{name = 'Error'} -> + {error, {msg, text, {Headers, Body}}}; + _ -> + {ok, {Headers, Body}} + end + end. + +etags_to_multipart_request(EtagList) -> + ReqData = [{'Part', [ + {'PartNumber', [erlang:integer_to_list(N)]}, + {'ETag', [T]}]} || {N, T} <- EtagList], + lager:info("Request Data: ~p", [ReqData]), + Request = {'CompleteMultipartUpload', ReqData}, + erlang:list_to_binary(xmerl:export_simple([Request], xmerl_xml)). + + +upload_and_assert_parts(Bucket, Key, UploadId, NumParts, PartSize, Config) -> + upload_and_assert_parts( + Bucket, Key, UploadId, NumParts, PartSize, Config, []). + +upload_and_assert_parts(_, _, _, 0, _, _, Result) -> + Result; +upload_and_assert_parts(Bucket, Key, UploadId, PartNum, PartSize, Config, Result) -> + upload_and_assert_parts( + Bucket, Key, UploadId, (PartNum - 1), PartSize, Config, + [{PartNum, rtcs_multipart:upload_and_assert_part( + Bucket, Key, UploadId, PartNum, + generate_part_data(PartNum, PartSize), Config)} | Result]). + +% +% assume PartNum is < 256 and PartSize is not negative +% +generate_part_data(PartNum, PartSize) -> + generate_part_data(PartNum, PartSize, <<>>). + +generate_part_data(_, 0, Result) -> + Result; +generate_part_data(PartNum, Remain, Result) -> + generate_part_data(PartNum, (Remain - 1), <>). + + From 0770bd786a1f506d1522a0367525abc0ad0d8d18 Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Wed, 16 Mar 2016 14:08:36 -0400 Subject: [PATCH 019/831] working test - doesn't pass yet, but the test is correct --- riak_test/tests/xml_response_test.erl | 70 ++++++++++----------------- 1 file changed, 25 insertions(+), 45 deletions(-) diff --git a/riak_test/tests/xml_response_test.erl b/riak_test/tests/xml_response_test.erl index 90d51d4ce..f33deddb4 100644 --- a/riak_test/tests/xml_response_test.erl +++ b/riak_test/tests/xml_response_test.erl @@ -25,45 +25,38 @@ -include_lib("eunit/include/eunit.hrl"). -include_lib("xmerl/include/xmerl.hrl"). +-include("deps/erlcloud/include/erlcloud_aws.hrl"). + -define(test_bucket(Label), "test-bucket-" Label). -define(test_key(Label), "test-key-" Label). --define(root_host_default, "s3.amazonaws.com"). + +% use something that shouldn't occur naturally -define(root_host_alt, "foo.bar.example.com"). confirm() -> verify_multipart_upload_response(). -% TODO: get the default root host from the riak-cs.conf file? - verify_multipart_upload_response() -> - {UserConfig, {_, [Node], _}} = rtcs:setup(1), - Bucket = ?test_bucket("vrhr"), - DefKey = ?test_key("vrhr-dflt"), - AltKey = ?test_key("vrhr-alt"), + Host = ?root_host_alt, + Bucket = ?test_bucket("vrhr"), + Key = ?test_key("vrhr"), NumParts = 3, PartSize = (5 * 1024 * 1024), - lager:info("creating bucket ~p", [Bucket]), - ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket, UserConfig)), - - {ok, {_, DefRes}} = perform_multipart_upload( - Bucket, DefKey, NumParts, PartSize, UserConfig), - lager:info("Response Data of '~s/~s':\n~p\n", [Bucket, DefKey, DefRes]), + rtcs:set_conf({cs, current, 1}, [{root_host, Host}]), + {AdminConfig, _} = rtcs:setup(1), + % erlcloud requires that 's3_host' matches our 'root_host' + % TODO: read this from the conf file + Config = AdminConfig#aws_config{s3_host = Host}, - verify_multipart_upload_response( - DefRes, ?root_host_default, Bucket, DefKey), - - rtcs_exec:stop_cs(1), - rt:wait_until_unpingable(Node), - rtcs:set_conf({cs, current, 1}, [{root_host, ?root_host_alt}]), - rtcs_exec:start_cs(1), - rt:wait_until_pingable(Node), + lager:info("creating bucket ~p", [Bucket]), + ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket, Config)), - {ok, {_, AltRes}} = perform_multipart_upload( - Bucket, AltKey, NumParts, PartSize, UserConfig), - lager:info("Response Data of '~s/~s':\n~p\n", [Bucket, AltKey, AltRes]), + {ok, {_, Result}} = perform_multipart_upload( + Bucket, Key, NumParts, PartSize, Config), + % lager:info("Response Data of '~s/~s':\n~p\n", [Bucket, Key, Result]), - verify_multipart_upload_response(AltRes, ?root_host_alt, Bucket, AltKey), + verify_multipart_upload_response(Result, Host, Bucket, Key), rtcs:pass(). @@ -88,25 +81,12 @@ verify_multipart_upload_response(ResponseBody, RootHost, Bucket, Key) -> [#xmlText{value = ResLocation}] = get_response_value( ResponseBody, 'CompleteMultipartUploadResult', 'Location'), - ?assertEqual(ResBucket, Bucket), - ?assertEqual(ResKey, Key), - ?assertEqual(ResLocation, lists:flatten( - io_lib:format("http://~s.~s/~s", [Bucket, RootHost, Key]))). + Location = lists:flatten( + io_lib:format("http://~s.~s/~s", [Bucket, RootHost, Key])), - -% verify_root_host_result(NodeId, User, Host) -> -% ?assertNotEqual(Host, get_response_value(User, Field)), -% reset_cs_root_host(NodeId, Host) -% ?assertEqual(Host, get_response_value(User, Field)), -% -% reset_cs_root_host(NodeId, Host) -> -% Node = rtcs:cs_node(NodeId), -% rtcs_exec:stop_cs(NodeId), -% rt:wait_until_unpingable(Node), -% rtcs:set_advanced_conf(Node, [{riak_cs, [{root_host, Host}]}]), -% rtcs_exec:start_cs(NodeId), -% rt:wait_until_pingable(Node), -% ok. + ?assertEqual(Bucket, ResBucket), + ?assertEqual(Key, ResKey), + ?assertEqual(Location, ResLocation). get_response_value( #xmlElement{name = TopLevel, content = Content}, TopLevel, Field) -> @@ -133,7 +113,7 @@ complete_multipart_upload(Bucket, Key, UploadId, EtagList, Config) -> [], % params etags_to_multipart_request(EtagList), % POST data []), % headers - lager:info("Raw Response: ~p", [Response]), + % lager:info("Raw Response: ~p", [Response]), case Response of {_, []} -> {ok, Response}; @@ -151,7 +131,7 @@ etags_to_multipart_request(EtagList) -> ReqData = [{'Part', [ {'PartNumber', [erlang:integer_to_list(N)]}, {'ETag', [T]}]} || {N, T} <- EtagList], - lager:info("Request Data: ~p", [ReqData]), + % lager:info("Request Data: ~p", [ReqData]), Request = {'CompleteMultipartUpload', ReqData}, erlang:list_to_binary(xmerl:export_simple([Request], xmerl_xml)). From 153da501a234c3d16f24a5f75ae2350bfdd2e12f Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Wed, 16 Mar 2016 16:17:22 -0400 Subject: [PATCH 020/831] report the correct 'Location' value form multipart uploads --- riak_test/src/rtcs_dev.erl | 2 +- riak_test/tests/xml_response_test.erl | 7 +++---- src/riak_cs_config.erl | 9 +++++++-- src/riak_cs_wm_object_upload_part.erl | 9 ++++++--- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/riak_test/src/rtcs_dev.erl b/riak_test/src/rtcs_dev.erl index 966a4ad5b..fec433a6f 100644 --- a/riak_test/src/rtcs_dev.erl +++ b/riak_test/src/rtcs_dev.erl @@ -1,6 +1,6 @@ %% ------------------------------------------------------------------- %% -%% Copyright (c) 2013 Basho Technologies, Inc. +%% Copyright (c) 2013-2016 Basho Technologies, Inc. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/riak_test/tests/xml_response_test.erl b/riak_test/tests/xml_response_test.erl index f33deddb4..0d0178551 100644 --- a/riak_test/tests/xml_response_test.erl +++ b/riak_test/tests/xml_response_test.erl @@ -24,8 +24,7 @@ -include_lib("eunit/include/eunit.hrl"). -include_lib("xmerl/include/xmerl.hrl"). - --include("deps/erlcloud/include/erlcloud_aws.hrl"). +-include_lib("erlcloud/include/erlcloud_aws.hrl"). -define(test_bucket(Label), "test-bucket-" Label). -define(test_key(Label), "test-key-" Label). @@ -46,7 +45,7 @@ verify_multipart_upload_response() -> rtcs:set_conf({cs, current, 1}, [{root_host, Host}]), {AdminConfig, _} = rtcs:setup(1), % erlcloud requires that 's3_host' matches our 'root_host' - % TODO: read this from the conf file + % TODO: rtcs:setup should read this from the conf file Config = AdminConfig#aws_config{s3_host = Host}, lager:info("creating bucket ~p", [Bucket]), @@ -68,7 +67,7 @@ perform_multipart_upload(Bucket, Key, NumParts, PartSize, Config) -> lager:info("uploading parts of '~s/~s'", [Bucket, Key]), EtagList = upload_and_assert_parts( Bucket, Key, UploadId, NumParts, PartSize, Config), - lager:info("ETags of '~s/~s': ~p", [Bucket, Key, EtagList]), + % lager:info("ETags of '~s/~s': ~p", [Bucket, Key, EtagList]), lager:info("completing upload of '~s/~s'", [Bucket, Key]), complete_multipart_upload(Bucket, Key, UploadId, EtagList, Config). diff --git a/src/riak_cs_config.erl b/src/riak_cs_config.erl index c7667b467..92c27888a 100644 --- a/src/riak_cs_config.erl +++ b/src/riak_cs_config.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -66,7 +66,8 @@ detailed_storage_calc/0, quota_modules/0, active_delete_threshold/0, - fast_user_get/0 + fast_user_get/0, + root_host/0 ]). %% Timeouts hitting Riak @@ -428,6 +429,10 @@ active_delete_threshold() -> fast_user_get() -> get_env(riak_cs, fast_user_get, false). +-spec root_host() -> string(). +root_host() -> + get_env(riak_cs, cs_root_host, ?ROOT_HOST). + %% =================================================================== %% ALL Timeouts hitting Riak %% =================================================================== diff --git a/src/riak_cs_wm_object_upload_part.erl b/src/riak_cs_wm_object_upload_part.erl index 174733c54..21ec44d74 100644 --- a/src/riak_cs_wm_object_upload_part.erl +++ b/src/riak_cs_wm_object_upload_part.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -127,8 +127,7 @@ process_post(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> XmlDoc = {'CompleteMultipartUploadResult', [{'xmlns', "http://s3.amazonaws.com/doc/2006-03-01/"}], [ - %% TODO: use cs_root from app.config - {'Location', [lists:append(["http://", binary_to_list(Bucket), ".s3.amazonaws.com/", Key])]}, + {'Location', [response_location(Bucket, Key)]}, {'Bucket', [Bucket]}, {'Key', [Key]}, {'ETag', [ETag]} @@ -144,6 +143,10 @@ process_post(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> end end. +response_location(Bucket, Key) -> + lists:append(["http://", + binary:bin_to_list(Bucket), ".", riak_cs_config:root_host(), "/", Key]). + -spec valid_entity_length(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. valid_entity_length(RD, Ctx) -> MaxLen = riak_cs_lfs_utils:max_content_len(), From 88c36f64244aa9f6592f66e204ede7109e761d88 Mon Sep 17 00:00:00 2001 From: UENISHI Kota Date: Thu, 17 Mar 2016 11:16:04 +0900 Subject: [PATCH 021/831] Fix riak_test setup race condition This has been resident since 59f7e32 . --- riak_test/src/rtcs_exec.erl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/riak_test/src/rtcs_exec.erl b/riak_test/src/rtcs_exec.erl index b0467a407..73b63501f 100644 --- a/riak_test/src/rtcs_exec.erl +++ b/riak_test/src/rtcs_exec.erl @@ -52,13 +52,13 @@ start_all_nodes(NodeList, Vsn) -> rtcs_dev:relpath(NodeVersion)]), rtdev:run_riak(N, rtcs_dev:relpath(NodeVersion), "start"), rt:wait_for_service(RiakNode, riak_kv), - spawn(fun() -> start_stanchion(Vsn) end), - spawn(fun() -> start_cs(N, Vsn) end); + start_stanchion(Vsn), + start_cs(N, Vsn); ({_CSNode, RiakNode}) -> N = rtcs_dev:node_id(RiakNode), rtdev:run_riak(N, rtcs_dev:relpath(rtcs_dev:node_version(N)), "start"), rt:wait_for_service(RiakNode, riak_kv), - spawn(fun() -> start_cs(N, Vsn) end) + start_cs(N, Vsn) end, NodeList). stop_all_nodes(NodeList, Vsn) -> From e658a772d93f90465ff428be60b4269ffb7d48fc Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Wed, 16 Mar 2016 23:08:14 -0400 Subject: [PATCH 022/831] fixed copyright, only diff with version I was about to push --- riak_test/src/rtcs_exec.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/riak_test/src/rtcs_exec.erl b/riak_test/src/rtcs_exec.erl index 73b63501f..4464fa9b4 100644 --- a/riak_test/src/rtcs_exec.erl +++ b/riak_test/src/rtcs_exec.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file From 772902ce0cf08f17b6d182e1552e4ef82d5fad35 Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Thu, 17 Mar 2016 19:56:34 -0400 Subject: [PATCH 023/831] use host:port from aws_config instead of hard-coded values --- riak_test/src/rtcs.erl | 4 ++-- riak_test/src/rtcs_admin.erl | 2 +- riak_test/src/rtcs_object.erl | 20 ++++++++++++-------- riak_test/tests/https_tests.erl | 21 +++++++++++++++++++++ src/riak_cs_copy_object.erl | 2 +- 5 files changed, 37 insertions(+), 12 deletions(-) diff --git a/riak_test/src/rtcs.erl b/riak_test/src/rtcs.erl index c30d5736a..a2fbc747d 100644 --- a/riak_test/src/rtcs.erl +++ b/riak_test/src/rtcs.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -99,7 +99,7 @@ setup_clusters(Configs, JoinFun, NumNodes, Vsn) -> _SSLOpts -> rtcs_admin:create_user_rpc(hd(_CSNodes), "admin-key", "admin-secret") end, - + {AdminConfig, Nodes}. ssl_options(Config) -> diff --git a/riak_test/src/rtcs_admin.erl b/riak_test/src/rtcs_admin.erl index f4e457425..4cf037297 100644 --- a/riak_test/src/rtcs_admin.erl +++ b/riak_test/src/rtcs_admin.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/riak_test/src/rtcs_object.erl b/riak_test/src/rtcs_object.erl index edfa2f8d2..63e3cb46d 100644 --- a/riak_test/src/rtcs_object.erl +++ b/riak_test/src/rtcs_object.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -42,8 +42,8 @@ upload(UserConfig, {normal_partial, CL, Actual}, B, K) when is_list(K), ReqHdr = base_header(B, K, CL, MD5, UserConfig, ""), lager:info("~s", [iolist_to_binary(ReqHdr)]), - %% Hard coded Host only for riak_test - {ok, Sock} = gen_tcp:connect("127.0.0.1", 15018, [{active, false}]), + {Host, Port} = get_config_target_address(UserConfig), + {ok, Sock} = gen_tcp:connect(Host, Port, [{active, false}]), case gen_tcp:send(Sock, [ReqHdr, $\n, Binary]) of ok -> %% Let caller handle the socket call, either close or continue @@ -55,7 +55,7 @@ upload(UserConfig, {https, Size}, B, K) -> Binary = binary:copy(<<"*">>, Size), MD5 = base64:encode(crypto:hash(md5, Binary)), ReqHdr = base_header(B, K, Size, MD5, UserConfig, ""), - send_ssl_request([ReqHdr, $\n, Binary]). + send_ssl_request(UserConfig, [ReqHdr, $\n, Binary]). upload(UserConfig, normal_copy, B, DstK, SrcK) -> ?assertEqual([{copy_source_version_id, "false"}, {version_id, "null"}], @@ -67,8 +67,7 @@ upload(UserConfig, https_copy, B, DstK, SrcK) -> CopyHdr = ["x-amz-copy-source:/", B, "/", SrcK, $\n, "x-amz-metadata-directive:COPY", $\n], ReqHdr = base_header(B, DstK, CL, MD5, UserConfig, CopyHdr), - - send_ssl_request([ReqHdr, CopyHdr, $\n]); + send_ssl_request(UserConfig, [ReqHdr, CopyHdr, $\n]); upload(UserConfig, multipart_copy, B, DstK, SrcK) -> InitUploadRes = erlcloud_s3_multipart:initiate_upload(B, DstK, "text/plain", [], UserConfig), @@ -85,8 +84,9 @@ upload(UserConfig, multipart_copy, B, DstK, SrcK) -> ?assertEqual(ok, erlcloud_s3_multipart:complete_upload( B, DstK, UploadId, EtagList, UserConfig)). -send_ssl_request(Payload) -> - {ok, Sock} = ssl:connect("127.0.0.1", 15018, [{active, false}, binary]), +send_ssl_request(Config, Payload) -> + {Host, Port} = get_config_target_address(Config), + {ok, Sock} = ssl:connect(Host, Port, [{active, false}, binary]), lager:info("sending HTTPS request: ~s", [Payload]), ok = ssl:send(Sock, Payload), {ok, Data} = ssl:recv(Sock, 0), @@ -97,6 +97,10 @@ send_ssl_request(Payload) -> ssl:close(Sock), ok. +get_config_target_address(#aws_config{s3_port = Port, http_options = Opts}) -> + {proplists:get_value(proxy_host, Opts, "localhost"), + proplists:get_value(proxy_port, Opts, Port)}. + base_header(B, K, CL, MD5, UserConfig, MetaTags) -> Host = io_lib:format("~s.s3.amazonaws.com", [B]), Date = httpd_util:rfc1123_date(erlang:localtime()), diff --git a/riak_test/tests/https_tests.erl b/riak_test/tests/https_tests.erl index 8f3f90c51..51ec1ba0d 100644 --- a/riak_test/tests/https_tests.erl +++ b/riak_test/tests/https_tests.erl @@ -1,3 +1,23 @@ +%% ------------------------------------------------------------------- +%% +%% Copyright (c) 2016 Basho Technologies, Inc. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% ------------------------------------------------------------------- + -module(https_tests). -export([confirm/0]). @@ -6,6 +26,7 @@ confirm() -> {ok, _} = application:ensure_all_started(ssl), CSConfig = [{ssl, [{certfile, "./etc/cert.pem"}, {keyfile, "./etc/key.pem"}]}], {UserConfig, _} = rtcs:setup(1, [{cs, [{riak_cs, CSConfig}]}]), + % lager:info("UserConfig: ~p", [UserConfig]), ok = verify_cs1025(UserConfig), rtcs:pass(). diff --git a/src/riak_cs_copy_object.erl b/src/riak_cs_copy_object.erl index da430c1e6..61c4affa1 100644 --- a/src/riak_cs_copy_object.erl +++ b/src/riak_cs_copy_object.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file From b4491c66f7024c8ba321fc1b379a921faec6e5ac Mon Sep 17 00:00:00 2001 From: Mark Allen Date: Fri, 18 Mar 2016 02:07:50 +0000 Subject: [PATCH 024/831] Return 400 Bad Request/Malformed XML when no parts are sent During a multipart upload, the "complete" message should contain a list of part ids and MD5 hashes. If it is empty, we should return a 400 Bad Request, Malformed XML message like S3. --- src/riak_cs_wm_object_upload_part.erl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/riak_cs_wm_object_upload_part.erl b/src/riak_cs_wm_object_upload_part.erl index 174733c54..3b2419edf 100644 --- a/src/riak_cs_wm_object_upload_part.erl +++ b/src/riak_cs_wm_object_upload_part.erl @@ -117,6 +117,11 @@ process_post(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> case {parse_body(Body), catch base64url:decode(UploadId64)} of {bad, _} -> {{halt,477}, RD, Ctx}; + %% RCS-156 (gh #1100) return a 400 Bad Request, Malformed XML error + %% when there is a multipart upload without any parts in the upload + %% complete message + {[], _UploadId} -> + riak_cs_s3_response:api_error(malformed_xml, RD, Ctx); {PartETags, UploadId} -> case riak_cs_mp_utils:complete_multipart_upload( Bucket, list_to_binary(Key), UploadId, PartETags, User, From a13bcf2cc85fedf5a5b1e23e06f65446bbd8d3a9 Mon Sep 17 00:00:00 2001 From: ooshlablu Date: Fri, 18 Mar 2016 16:25:14 -0400 Subject: [PATCH 025/831] Locked deps for 2.1.2beta1 --- rebar.config.lock | 115 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 rebar.config.lock diff --git a/rebar.config.lock b/rebar.config.lock new file mode 100644 index 000000000..206a29af7 --- /dev/null +++ b/rebar.config.lock @@ -0,0 +1,115 @@ +%% THIS FILE IS GENERATED. DO NOT EDIT IT MANUALLY %% + +{sub_dirs,["rel"]}. +{require_otp_vsn,"R16|17"}. +{cover_enabled,false}. +{edoc_opts,[preprocess]}. +{lib_dirs,["deps","apps"]}. +{erl_opts,[debug_info,warnings_as_errors, + {parse_transform,lager_transform}, + {platform_define,"^[0-9]+",namespaced_types}]}. +{xref_checks,[]}. +{xref_queries,[{"(XC - UC) || (XU - X - B - \"(^riak$|^riak_cs_dummy_reader$|^riak_core_bucket$|^app_helper$|^riakc_pb_socket_fake$|^riak_object$|^riak_repl_pb_api$|^riak_cs_multibag$)\" : Mod)", + []}]}. +{xref_queries_ee,[{"(XC - UC) || (XU - X - B - \"(^riak$|^riak_cs_dummy_reader$|^riak_core_bucket$|^app_helper$|^riakc_pb_socket_fake$|^riak_object$)\" : Mod)", + []}]}. +{reset_after_eunit,true}. +{plugin_dir,".plugins"}. +{plugins,[rebar_test_plugin,rebar_lock_deps_plugin]}. +{client_test,[{test_paths,["client_tests/erlang"]}, + {test_output,".client_test"}]}. +{riak_test,[{test_paths,["riak_test/tests","riak_test/src", + "deps/riak_cs_multibag/riak_test/tests", + "deps/riak_cs_multibag/riak_test/src"]}, + {test_output,"riak_test/ebin"}]}. +{deps,[{goldrush,".*", + {git,"git://github.com/DeadZen/goldrush.git", + "64864ba7fcf40988361340e48680b49a2c2938cf"}}, + {lager,".*", + {git,"git://github.com/basho/lager", + "f65dde85523b6aa6a259db1c93518187ae366515"}}, + {syslog,".*", + {git,"git://github.com/Vagabond/erlang-syslog", + "e24c9ee8f7bb3f066ec152c210af10c2c712759a"}}, + {lager_syslog,".*", + {git,"git://github.com/basho/lager_syslog", + "399a90d9c77afa66590b1a42fcf76035a304c229"}}, + {getopt,".*", + {git,"git://github.com/jcomellas/getopt.git", + "388dc95caa7fb97ec7db8cfc39246a36aba61bd8"}}, + {neotoma,".*", + {git,"git://github.com/seancribbs/neotoma.git", + "760928ec8870da02eb11bccb501e2700925d06c6"}}, + {cuttlefish,".*", + {git,"git://github.com/basho/cuttlefish.git", + "7ce217c3effb9990bb1aff34621013222c9977ec"}}, + {node_package,".*", + {git,"git://github.com/basho/node_package", + "fb028057a97ad2ea86a4002403aaeb71a6adc7bb"}}, + {mochiweb,".*", + {git,"git://github.com/basho/mochiweb.git", + "ade2a9b29a11034eb550c1d79b4f991bf5ca05ba"}}, + {webmachine,".*", + {git,"git://github.com/basho/webmachine", + "7677c240f4a7ed020f4bab48278224966bb42311"}}, + {meck,".*", + {git,"git://github.com/basho/meck.git", + "dde759050eff19a1a80fd854d7375174b191665d"}}, + {protobuffs,".*", + {git,"git://github.com/basho/erlang_protobuffs.git", + "f88fc3c6881687432ddd5546b3c7b08009dfb26f"}}, + {riak_pb,".*", + {git,"git://github.com/basho/riak_pb", + "620bc7001dc788e5530078aa8be53c9d15d4fdb4"}}, + {riakc,".*", + {git,"git://github.com/basho/riak-erlang-client", + "1c75e31fd50e065aeebe787d608ce9b7ddeddb38"}}, + {eper,".*", + {git,"git://github.com/basho/eper.git", + "dd0a275b9e66d8e02e48bf6353b2f4881e55c1db"}}, + {druuid,".*", + {git,"git://github.com/kellymclaughlin/druuid.git", + "b3c5c2a52bb3f510d168b32e64f6fbc6a3c6a0e6"}}, + {poolboy,".*", + {git,"git://github.com/basho/poolboy", + "8bb45fbc715c5f493642a1cc572ec7017d0d5fa3"}}, + {edown,".*", + {git,"git://github.com/uwiger/edown.git", + "d62ec85281e451a46ba30045917c119d65b72a84"}}, + {parse_trans,".*", + {git,"git://github.com/uwiger/parse_trans.git", + "82cc00264aa1bad8fc5c0739b7541feb4a843432"}}, + {bear,".*", + {git,"git://github.com/boundary/bear.git", + "119234548783af19b8ec75c879c5062676b92571"}}, + {folsom,".*", + {git,"git://github.com/boundary/folsom", + "38e2cce7c64ce1f0a3a918d90394cfc0a940b1ba"}}, + {setup,".*", + {git,"git://github.com/uwiger/setup.git", + "51ee7c9f64d2bbe9dcbb58c278e8fbfd4d0ca5e2"}}, + {exometer_core,".*", + {git,"git://github.com/Feuerlabs/exometer_core", + "88588f26f226210a1fc9e70271d8a0611ba83d30"}}, + {cluster_info,".*", + {git,"git://github.com/basho/cluster_info", + "76c73fcac58c32f1603f8a1b98d7c441da92fa91"}}, + {xmerl,".*", + {git,"git://github.com/shino/xmerl", + "1b016a05473e086abadbb3c12f63d167fe96c00f"}}, + {ibrowse,".*", + {git,"git://github.com/cmullaparthi/ibrowse", + "e8ae353c16d4f0897abb9f80025b52925b974dd1"}}, + {erlcloud,".*", + {git,"git://github.com/basho/erlcloud.git", + "c2336913ff7525b58ce89a5c0d1fd0db171aa71d"}}, + {rebar_lock_deps_plugin,".*", + {git,"git://github.com/seth/rebar_lock_deps_plugin.git", + "9711549b8a84b065eb2edc22f8eb6ff85e3c94e8"}}]}. +{deps_ee,[{riak_repl_pb_api,".*", + {git,"git@github.com:basho/riak_repl_pb_api.git", + {tag,"2.1.1"}}}, + {riak_cs_multibag,".*", + {git,"git@github.com:basho/riak_cs_multibag.git", + {tag,"2.1.0p1"}}}]}. + From c6863d799f71cbb03cfe22adcb458d1510330f2f Mon Sep 17 00:00:00 2001 From: Mark Allen Date: Sat, 19 Mar 2016 02:19:08 +0000 Subject: [PATCH 026/831] Bump node_package to 2.0.5 --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index 5174654b5..4a6ec2591 100644 --- a/rebar.config +++ b/rebar.config @@ -40,7 +40,7 @@ {lager, ".*", {git, "git://github.com/basho/lager", {tag, "2.2.0"}}}, {lager_syslog, ".*", {git, "git://github.com/basho/lager_syslog", {tag, "2.1.1"}}}, {cuttlefish, ".*", {git, "git://github.com/basho/cuttlefish.git", {tag, "2.0.4"}}}, - {node_package, ".*", {git, "git://github.com/basho/node_package", {tag, "2.0.3"}}}, + {node_package, ".*", {git, "git://github.com/basho/node_package", {tag, "2.0.5"}}}, {getopt, ".*", {git, "git://github.com/jcomellas/getopt.git", {tag, "v0.8.2"}}}, {webmachine, ".*", {git, "git://github.com/basho/webmachine", {tag, "1.10.8"}}}, {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "2.1.1"}}}, From 722276e48a74156096733dd2c4bc85f04bbb8e27 Mon Sep 17 00:00:00 2001 From: UENISHI Kota Date: Mon, 21 Mar 2016 23:54:39 +0900 Subject: [PATCH 027/831] Update copyright year and remove debug log --- riak_test/tests/error_response_test.erl | 2 +- riak_test/tests/regression_tests.erl | 4 ++-- src/riak_cs_app.erl | 3 +-- src/riak_cs_s3_response.erl | 2 +- src/riak_cs_wm_common.erl | 2 +- src/riak_cs_wm_utils.erl | 2 +- 6 files changed, 7 insertions(+), 8 deletions(-) diff --git a/riak_test/tests/error_response_test.erl b/riak_test/tests/error_response_test.erl index ace863bc5..5c351fe51 100644 --- a/riak_test/tests/error_response_test.erl +++ b/riak_test/tests/error_response_test.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/riak_test/tests/regression_tests.erl b/riak_test/tests/regression_tests.erl index f411970e8..cc50bea7b 100644 --- a/riak_test/tests/regression_tests.erl +++ b/riak_test/tests/regression_tests.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -233,7 +233,7 @@ get_manifests(RiakNodes, BucketName, Key) -> V =/= <<>>]. verify_cs756({UserConfig, {RiakNodes, _, _}}, BucketName) -> - %% Making sure API call from non-existent user all fails in 403, not 50x + %% Making sure API call to CS failed Riak KV underneath, all fails in 500 %% This could be done with eqc lager:info("CS756 regression"), [rt:stop(RiakNode) || RiakNode <- RiakNodes], diff --git a/src/riak_cs_app.erl b/src/riak_cs_app.erl index f69daef8c..a55903fb9 100644 --- a/src/riak_cs_app.erl +++ b/src/riak_cs_app.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -91,7 +91,6 @@ fetch_and_cache_admin_creds(Key) -> {ok, Obj} -> User = riak_cs_user:from_riakc_obj(Obj, false), Secret = User?RCS_USER.key_secret, - _ = lager:debug("admin secret: ~s", [Secret]), application:set_env(riak_cs, admin_secret, Secret); Error -> _ = lager:error("Couldn't get admin user (~s) record: ~p", diff --git a/src/riak_cs_s3_response.erl b/src/riak_cs_s3_response.erl index 3267f85b8..8ca63ebb6 100644 --- a/src/riak_cs_s3_response.erl +++ b/src/riak_cs_s3_response.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/src/riak_cs_wm_common.erl b/src/riak_cs_wm_common.erl index ae5343ccc..018bd9875 100644 --- a/src/riak_cs_wm_common.erl +++ b/src/riak_cs_wm_common.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/src/riak_cs_wm_utils.erl b/src/riak_cs_wm_utils.erl index b2ff543d8..acf4253d1 100644 --- a/src/riak_cs_wm_utils.erl +++ b/src/riak_cs_wm_utils.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file From ee8260ec3c956e495c83f51a95dab79c58a06c04 Mon Sep 17 00:00:00 2001 From: Mark Allen Date: Mon, 21 Mar 2016 19:05:50 +0000 Subject: [PATCH 028/831] Use node_package 3.0.0 --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index 4a6ec2591..79f129fb1 100644 --- a/rebar.config +++ b/rebar.config @@ -40,7 +40,7 @@ {lager, ".*", {git, "git://github.com/basho/lager", {tag, "2.2.0"}}}, {lager_syslog, ".*", {git, "git://github.com/basho/lager_syslog", {tag, "2.1.1"}}}, {cuttlefish, ".*", {git, "git://github.com/basho/cuttlefish.git", {tag, "2.0.4"}}}, - {node_package, ".*", {git, "git://github.com/basho/node_package", {tag, "2.0.5"}}}, + {node_package, ".*", {git, "git://github.com/basho/node_package", {tag, "3.0.0"}}}, {getopt, ".*", {git, "git://github.com/jcomellas/getopt.git", {tag, "v0.8.2"}}}, {webmachine, ".*", {git, "git://github.com/basho/webmachine", {tag, "1.10.8"}}}, {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "2.1.1"}}}, From 08c579a0257eef28a386d9fa2e1f45dc297f31b3 Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Fri, 25 Mar 2016 16:01:46 -0400 Subject: [PATCH 029/831] update version to 2.1.2 --- rel/reltool.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rel/reltool.config b/rel/reltool.config index add2b1520..93d7cf158 100644 --- a/rel/reltool.config +++ b/rel/reltool.config @@ -2,7 +2,7 @@ %% ex: ts=4 sw=4 et {sys, [ {lib_dirs, ["../deps", "../apps"]}, - {rel, "riak-cs", "2.1.0", + {rel, "riak-cs", "2.1.2", [ kernel, stdlib, From 6a4de741472a960499cd839fad77708b51c940d6 Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Fri, 25 Mar 2016 18:59:20 -0400 Subject: [PATCH 030/831] skip test if not using an ee configuration for r_t --- riak_test/tests/repl_v3_test.erl | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/riak_test/tests/repl_v3_test.erl b/riak_test/tests/repl_v3_test.erl index 3d5ead831..ec9906ce8 100644 --- a/riak_test/tests/repl_v3_test.erl +++ b/riak_test/tests/repl_v3_test.erl @@ -1,11 +1,41 @@ +%% ------------------------------------------------------------------- +%% +%% Copyright (c) 2013-2016 Basho Technologies, Inc. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% ------------------------------------------------------------------- + -module(repl_v3_test). -export([confirm/0]). + -include_lib("eunit/include/eunit.hrl"). -define(TEST_BUCKET, "riak-test-bucket"). confirm() -> + case rt_config:get(build_type, oss) of + ee -> + confirm_ee(); + _ -> + lager:info("~s test is only valid on riak_ee, skipping", [?MODULE]), + pass + end. + +confirm_ee() -> {UserConfig, {RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup2x2(), lager:info("UserConfig = ~p", [UserConfig]), [A,B,C,D] = RiakNodes, From 7792c62bd081f1d31ad0cb4d10322215d4e15b71 Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Sat, 26 Mar 2016 13:43:54 -0400 Subject: [PATCH 031/831] added datetime/1 --- riak_test/src/rtcs.erl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/riak_test/src/rtcs.erl b/riak_test/src/rtcs.erl index a2fbc747d..3a919be1a 100644 --- a/riak_test/src/rtcs.erl +++ b/riak_test/src/rtcs.erl @@ -1,6 +1,6 @@ -%% --------------------------------------------------------------------- +%% ------------------------------------------------------------------- %% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -16,9 +16,12 @@ %% specific language governing permissions and limitations %% under the License. %% -%% --------------------------------------------------------------------- +%% ------------------------------------------------------------------- + -module(rtcs). + -compile(export_all). + -include_lib("eunit/include/eunit.hrl"). -include_lib("erlcloud/include/erlcloud_aws.hrl"). -include_lib("xmerl/include/xmerl.hrl"). @@ -312,10 +315,11 @@ sha(Bin) -> crypto:hash(sha, Bin). md5(Bin) -> crypto:hash(md5, Bin). datetime() -> - {{YYYY,MM,DD}, {H,M,S}} = calendar:universal_time(), - lists:flatten(io_lib:format("~4..0B~2..0B~2..0BT~2..0B~2..0B~2..0BZ", [YYYY, MM, DD, H, M, S])). - + datetime(calendar:universal_time()). +datetime({{YYYY,MM,DD}, {H,M,S}}) -> + lists:flatten(io_lib:format( + "~4..0B~2..0B~2..0BT~2..0B~2..0B~2..0BZ", [YYYY, MM, DD, H, M, S])). json_get(Key, Json) when is_binary(Key) -> json_get([Key], Json); From f014d518d0acbde81556c4e842c6627719eb25c5 Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Sat, 26 Mar 2016 13:50:45 -0400 Subject: [PATCH 032/831] make generate_some_accesses run repeatedly and keep track of what the stats should be as a result --- riak_test/tests/access_stats_test.erl | 113 ++++++++++++++++++-------- 1 file changed, 79 insertions(+), 34 deletions(-) diff --git a/riak_test/tests/access_stats_test.erl b/riak_test/tests/access_stats_test.erl index f8f54bb9e..654fbd015 100644 --- a/riak_test/tests/access_stats_test.erl +++ b/riak_test/tests/access_stats_test.erl @@ -1,6 +1,6 @@ -%% --------------------------------------------------------------------- +%% ------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -16,13 +16,12 @@ %% specific language governing permissions and limitations %% under the License. %% -%% --------------------------------------------------------------------- +%% ------------------------------------------------------------------- -module(access_stats_test). %% @doc Integration test for access statistics. %% TODO: Only several kinds of stats are covered --compile(export_all). -export([confirm/0]). -include_lib("erlcloud/include/erlcloud_aws.hrl"). @@ -32,42 +31,73 @@ -define(BUCKET, "access-stats-test-1"). -define(KEY, "a"). +% default time generate_some_accesses spends doing its thing +-define(DURATION_SECS, 11). + confirm() -> {UserConfig, {RiakNodes, CSNodes, _Stanchion}} = rtcs:setup(2), rt:setup_log_capture(hd(CSNodes)), - {Begin, End} = generate_some_accesses(UserConfig), + Results = generate_some_accesses(UserConfig), + lager:debug("Client results: ~p", [Results]), flush_access_stats(), - assert_access_stats(json, UserConfig, {Begin, End}), - assert_access_stats(xml, UserConfig, {Begin, End}), + assert_access_stats(json, UserConfig, Results), + assert_access_stats(xml, UserConfig, Results), verify_stats_lost_logging(UserConfig, RiakNodes, CSNodes), rtcs:pass(). generate_some_accesses(UserConfig) -> - Begin = rtcs:datetime(), + generate_some_accesses(UserConfig, ?DURATION_SECS). + +generate_some_accesses(UserConfig, DurationSecs) -> + Begin = calendar:universal_time(), + Until = calendar:datetime_to_gregorian_seconds(Begin) + DurationSecs, + R0 = dict:new(), lager:info("creating bucket ~p", [?BUCKET]), %% Create bucket ?assertEqual(ok, erlcloud_s3:create_bucket(?BUCKET, UserConfig)), - %% Put 100-byte object, twice - Block = crypto:rand_bytes(100), - _ = erlcloud_s3:put_object(?BUCKET, ?KEY, Block, UserConfig), - _ = erlcloud_s3:put_object(?BUCKET, ?KEY, Block, UserConfig), - %% Get 100-byte object, once + R1 = dict:update_counter({"BucketCreate", "Count"}, 1, R0), + %% do stuff for a while ... + R2 = generate_some_accesses(UserConfig, Until, R1), + %% Delete bucket + ?assertEqual(ok, erlcloud_s3:delete_bucket(?BUCKET, UserConfig)), + Results = dict:update_counter({"BucketDelete", "Count"}, 1, R2), + %% Illegal URL such that riak_cs_access_log_handler:handle_event/2 gets {log_access, #wm_log_data{notes=undefined}} + ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:get_object("", "//a", UserConfig)), %% Path-style access + ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:get_object("riak-cs", "pong", UserConfig)), + {rtcs:datetime(Begin), rtcs:datetime(), dict:to_list(Results)}. + +generate_some_accesses(UserConfig, UntilGregSecs, R0) -> + %% Put random object, twice + O1Size = 100 + random:uniform(100), + O2Size = 100 + random:uniform(100), + _ = erlcloud_s3:put_object(?BUCKET, ?KEY, + crypto:rand_bytes(O1Size), UserConfig), + _ = erlcloud_s3:put_object(?BUCKET, ?KEY, + crypto:rand_bytes(O2Size), UserConfig), + R1 = dict:update_counter({"KeyWrite", "Count"}, 2, R0), + R2 = dict:update_counter({"KeyWrite", "BytesIn"}, O1Size + O2Size, R1), + %% Get object, once _ = erlcloud_s3:get_object(?BUCKET, ?KEY, UserConfig), + R3 = dict:update_counter({"KeyRead", "Count"}, 1, R2), + R4 = dict:update_counter({"KeyRead", "BytesOut"}, O2Size, R3), %% Head Object _ = erlcloud_s3:head_object(?BUCKET, ?KEY, UserConfig), + R5 = dict:update_counter({"KeyStat", "Count"}, 1, R4), %% List objects (GET bucket) _ = erlcloud_s3:list_objects(?BUCKET, UserConfig), + R6 = dict:update_counter({"BucketRead", "Count"}, 1, R5), %% Delete object _ = erlcloud_s3:delete_object(?BUCKET, ?KEY, UserConfig), - %% Delete bucket - ?assertEqual(ok, erlcloud_s3:delete_bucket(?BUCKET, UserConfig)), - %% Illegal URL such that riak_cs_access_log_handler:handle_event/2 gets {log_access, #wm_log_data{notes=undefined}} - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:get_object("", "//a", UserConfig)), %% Path-style access - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:get_object("riak-cs", "pong", UserConfig)), - End = rtcs:datetime(), - {Begin, End}. + Results = dict:update_counter({"KeyDelete", "Count"}, 1, R6), + GregSecsNow = calendar:datetime_to_gregorian_seconds(calendar:universal_time()), + if + GregSecsNow < UntilGregSecs -> + generate_some_accesses(UserConfig, UntilGregSecs, Results); + true -> + Results + end. flush_access_stats() -> Res = rtcs_exec:flush_access(1), @@ -75,7 +105,7 @@ flush_access_stats() -> ExpectRegexp = "All access logs were flushed.\n$", ?assertMatch({match, _}, re:run(Res, ExpectRegexp)). -assert_access_stats(Format, UserConfig, {Begin, End}) -> +assert_access_stats(Format, UserConfig, {Begin, End, ClientStats}) -> KeyId = UserConfig#aws_config.access_key_id, FormatInstruction = case Format of json -> "j"; @@ -89,23 +119,36 @@ assert_access_stats(Format, UserConfig, {Begin, End}) -> Samples = node_samples_from_content(Format, "rcs-dev1@127.0.0.1", Content), lager:debug("Access samples (~s): ~p", [Format, Samples]), - ?assertEqual( 1, sum_samples(Format, "BucketCreate", "Count", Samples)), - ?assertEqual( 2, sum_samples(Format, "KeyWrite", "Count", Samples)), - ?assertEqual(200, sum_samples(Format, "KeyWrite", "BytesIn", Samples)), - ?assertEqual( 0, sum_samples(Format, "KeyWrite", "BytesOut", Samples)), - ?assertEqual( 1, sum_samples(Format, "KeyRead", "Count", Samples)), - ?assertEqual( 0, sum_samples(Format, "KeyRead", "BytesIn", Samples)), - ?assertEqual(100, sum_samples(Format, "KeyRead", "BytesOut", Samples)), - ?assertEqual( 1, sum_samples(Format, "KeyStat", "Count", Samples)), - ?assertEqual( 0, sum_samples(Format, "KeyStat", "BytesOut", Samples)), - ?assertEqual( 1, sum_samples(Format, "BucketRead", "Count", Samples)), - ?assertEqual( 1, sum_samples(Format, "KeyDelete", "Count", Samples)), - ?assertEqual( 1, sum_samples(Format, "BucketDelete", "Count", Samples)), + ?assertEqual(client_result({"BucketCreate", "Count"}, ClientStats), + sum_samples(Format, "BucketCreate", "Count", Samples)), + ?assertEqual(client_result({"KeyWrite", "Count"}, ClientStats), + sum_samples(Format, "KeyWrite", "Count", Samples)), + ?assertEqual(client_result({"KeyWrite", "BytesIn"}, ClientStats), + sum_samples(Format, "KeyWrite", "BytesIn", Samples)), + ?assertEqual(client_result({"KeyWrite", "BytesOut"}, ClientStats), + sum_samples(Format, "KeyWrite", "BytesOut", Samples)), + ?assertEqual(client_result({"KeyRead", "Count"}, ClientStats), + sum_samples(Format, "KeyRead", "Count", Samples)), + ?assertEqual(client_result({"KeyRead", "BytesIn"}, ClientStats), + sum_samples(Format, "KeyRead", "BytesIn", Samples)), + ?assertEqual(client_result({"KeyRead", "BytesOut"}, ClientStats), + sum_samples(Format, "KeyRead", "BytesOut", Samples)), + ?assertEqual(client_result({"KeyStat", "Count"}, ClientStats), + sum_samples(Format, "KeyStat", "Count", Samples)), + ?assertEqual(client_result({"KeyStat", "BytesOut"}, ClientStats), + sum_samples(Format, "KeyStat", "BytesOut", Samples)), + ?assertEqual(client_result({"BucketRead", "Count"}, ClientStats), + sum_samples(Format, "BucketRead", "Count", Samples)), + ?assertEqual(client_result({"KeyDelete", "Count"}, ClientStats), + sum_samples(Format, "KeyDelete", "Count", Samples)), + ?assertEqual(client_result({"BucketDelete", "Count"}, ClientStats), + sum_samples(Format, "BucketDelete", "Count", Samples)), pass. verify_stats_lost_logging(UserConfig, RiakNodes, CSNodes) -> KeyId = UserConfig#aws_config.access_key_id, - {_Begin, _End} = generate_some_accesses(UserConfig), + %% one second ought to be enough + _ = generate_some_accesses(UserConfig, 1), %% kill riak [ rt:brutal_kill(Node) || Node <- RiakNodes ], %% force archive @@ -118,6 +161,8 @@ verify_stats_lost_logging(UserConfig, RiakNodes, CSNodes) -> true = rt:expect_in_log(CSNode, ExpectLine), pass. +client_result(Key, ResultSet) -> + proplists:get_value(Key, ResultSet, 0). node_samples_from_content(json, Node, Content) -> Usage = mochijson2:decode(Content), From c28be77e6cf813bdcb4492bdcfc0d39f492472c6 Mon Sep 17 00:00:00 2001 From: Lauren Rother Date: Tue, 29 Mar 2016 15:43:46 -0700 Subject: [PATCH 033/831] Update release notes for 2.1.2 Notes upgrade instructions, bugs fixed, and changes to CS. --- RELEASE-NOTES.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index e4bec7dcb..7b152485c 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,33 @@ +#Riak CS 2.1.2 Release Notes + +Released March 31, 2016. + +This is a backwards-compatible* release that updates node_package to address a recent [Product Advisory](http://docs.basho.com/riak/latest/community/product-advisories/codeinjectioninitfiles/), as well as fixes several bugs. + +Riak CS 2.1 is designed to work with Riak KV 2.1.1+. + +>***Note:** This release is backwards compatible only with the Riak CS 2.x series. + +###Upgrading + +**For anyone updating to 2.1.2 from 2.1.1 and older versions.** + +During the update to 2.1.2, a '==' omitted upload ID might be passed to a Riak CS node running an older version of CS. This may lead to process-crash by failing on decoding upload ID. + +##Changes + +* Due to a recent [Product Advisory](http://docs.basho.com/riak/latest/community/product-advisories/codeinjectioninitfiles/), node_package was bumped to version 3.0.0 to prevent a potential code injection on the riak init file. [[Issue 1297](https://github.com/basho/riak_cs/issues/1297), [PR 1306](https://github.com/basho/riak_cs/pull/1306), & [PR 109](https://github.com/basho/stanchion/pull/109)] +* Multipart upload IDs no longer contain trailing '=' characters, which caused trouble for some clients. This change also makes upload IDs URL-safe. This commit removes several unused functions. [[PR 1293](https://github.com/basho/riak_cs/pull/1293)] +* When Riak is unavailable due to network partition or node being offline, a 500 error is returned. [[PR 1298](https://github.com/basho/riak_cs/pull/1298)] + +## Bugs Fixed + +* [[Issue 1100](https://github.com/basho/riak_cs/issues/1100)/[PR 1304](https://github.com/basho/riak_cs/pull/1304)] When a multipart completion request was empty, Riak CS would return a "Completed" message. Now, during a multipart upload, the "complete" message contains a list of part IDs and MD5 hashes. If it is empty, it returns a "400 Bad Request, Malformed" XML message like S3. +* [[Issue 1288](https://github.com/basho/riak_cs/issues/1288)/[PR 1302](https://github.com/basho/riak_cs/pull/1302)] The `root_host` configuration parameter is now used to populate the `Location` response element. +* [[Issue 972](https://github.com/basho/riak_cs/issues/972)/[PR 1296](https://github.com/basho/riak_cs/pull/1296)] 'adderss' now reads 'address' in Stanchion console output. +* [[Issue 1025](https://github.com/basho/riak_cs/issues/1025)/[PR 1300](https://github.com/basho/riak_cs/pull/1300)] Copying an object used to fail when connecting via HTTPS. + + #Riak S2 (Riak CS) 2.1.1 Release Notes ## General Information From e1c26fabb2fdd3368d9007bea513d9a6e0280bc7 Mon Sep 17 00:00:00 2001 From: Lauren Rother Date: Tue, 29 Mar 2016 15:46:36 -0700 Subject: [PATCH 034/831] Fix stupid formatting error *Note was showing up weirdly, so I just cut it out and left the *. It's clearer that way. --- RELEASE-NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 7b152485c..9e342a1f7 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -6,7 +6,7 @@ This is a backwards-compatible* release that updates node_package to address a r Riak CS 2.1 is designed to work with Riak KV 2.1.1+. ->***Note:** This release is backwards compatible only with the Riak CS 2.x series. +>*This release is backwards compatible only with the Riak CS 2.x series. ###Upgrading From d3549811a962b057a8de435ccb52fb2aa217e609 Mon Sep 17 00:00:00 2001 From: ooshlablu Date: Wed, 30 Mar 2016 17:14:03 -0400 Subject: [PATCH 035/831] Lock the deps for 2.1.2rc1 --- rebar.config.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config.lock b/rebar.config.lock index 206a29af7..ac76860b6 100644 --- a/rebar.config.lock +++ b/rebar.config.lock @@ -45,7 +45,7 @@ "7ce217c3effb9990bb1aff34621013222c9977ec"}}, {node_package,".*", {git,"git://github.com/basho/node_package", - "fb028057a97ad2ea86a4002403aaeb71a6adc7bb"}}, + "c630bcb25de53d542b167a0891c32f9e47602d6a"}}, {mochiweb,".*", {git,"git://github.com/basho/mochiweb.git", "ade2a9b29a11034eb550c1d79b4f991bf5ca05ba"}}, From 64eb8dea5f474355408b67309b836f10cb5bdfdc Mon Sep 17 00:00:00 2001 From: Kazuhiro Suzuki Date: Wed, 18 May 2016 15:32:29 +0900 Subject: [PATCH 036/831] Avoid logging secret as info level --- src/riak_cs_app.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/riak_cs_app.erl b/src/riak_cs_app.erl index a55903fb9..e364f53a4 100644 --- a/src/riak_cs_app.erl +++ b/src/riak_cs_app.erl @@ -80,7 +80,7 @@ check_admin_creds() -> fetch_and_cache_admin_creds(Key) -> %% Not using as the master pool might not be initialized {ok, MasterPbc} = riak_connection(), - _ = lager:info("setting admin as ~s", [Key]), + _ = lager:debug("setting admin as ~s", [Key]), try %% Do we count this into stats?; This is a startup query and %% system latency is expected to be low. So get timeout can be From 115858467f02f4d90d474475c0636de54727a3b8 Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Sat, 4 Jun 2016 06:02:13 -0400 Subject: [PATCH 037/831] display upload id (cherry picked from commit 5fdad1110657c22a8de68a4cbf16ca3a62b03f34) --- riak_test/tests/mp_upload_test.erl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/riak_test/tests/mp_upload_test.erl b/riak_test/tests/mp_upload_test.erl index f3c6b18e7..c74de855e 100644 --- a/riak_test/tests/mp_upload_test.erl +++ b/riak_test/tests/mp_upload_test.erl @@ -1,6 +1,6 @@ -%% --------------------------------------------------------------------- +%% ------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -16,7 +16,7 @@ %% specific language governing permissions and limitations %% under the License. %% -%% --------------------------------------------------------------------- +%% ------------------------------------------------------------------- -module(mp_upload_test). @@ -154,6 +154,7 @@ aborted_upload_test_case(Bucket, Key, Config) -> lager:info("Initiating multipart upload"), InitUploadRes = erlcloud_s3_multipart:initiate_upload(Bucket, Key, [], [], Config), UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), + lager:info("Upload ID: ~p", [UploadId]), %% Verify the upload id is in list_uploads results and %% that the bucket information is correct @@ -216,6 +217,7 @@ basic_upload_test_case(Bucket, Key, Config) -> lager:info("Initiating multipart upload"), InitUploadRes = erlcloud_s3_multipart:initiate_upload(Bucket, Key, [], [], Config), UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), + lager:info("Upload ID: ~p", [UploadId]), %% Verify the upload id is in list_uploads results and %% that the bucket information is correct @@ -274,6 +276,7 @@ parts_too_small_test_case(Bucket, Key, Config) -> lager:info("Initiating multipart upload (bad)"), InitUploadRes = erlcloud_s3_multipart:initiate_upload(Bucket, Key, [], [], Config), UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), + lager:info("Upload ID: ~p", [UploadId]), lager:info("Uploading parts (bad)"), EtagList = upload_and_assert_parts(Bucket, From d95f05e7917f40055755a4752e77b5e2f752bc0e Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Sat, 4 Jun 2016 08:24:55 -0400 Subject: [PATCH 038/831] corrections to RCS-349/RCS-350 fix (cherry picked from commit bb3d2043c9e993d5fa0f3d9cf73494be0cc1caec) --- src/base64url.erl | 154 ++++++++++++++++++++++++++++++------------ src/riak_cs_utils.erl | 6 +- 2 files changed, 112 insertions(+), 48 deletions(-) diff --git a/src/base64url.erl b/src/base64url.erl index 6018d3662..4bca74e67 100644 --- a/src/base64url.erl +++ b/src/base64url.erl @@ -1,6 +1,6 @@ -%% --------------------------------------------------------------------- +%% ------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -16,7 +16,7 @@ %% specific language governing permissions and limitations %% under the License. %% -%% --------------------------------------------------------------------- +%% ------------------------------------------------------------------- %% @doc base64url is a wrapper around the base64 module to produce %% base64-compatible encodings that are URL safe. @@ -27,46 +27,66 @@ -module(base64url). --include_lib("eunit/include/eunit.hrl"). - -export([decode/1, decode_to_string/1, encode/1, encode_to_string/1]). +-ifdef(TEST). +-compile(export_all). +-include_lib("eunit/include/eunit.hrl"). +-endif. + decode(Base64url) -> - base64:decode(amend_equal(urldecode(Base64url))). + base64:decode(append_equals(urldecode(Base64url))). decode_to_string(Base64url) -> - base64:decode_to_string(amend_equal(urldecode(Base64url))). + base64:decode_to_string(append_equals(urldecode(Base64url))). encode(Data) -> - urlencode(strip_equal(base64:encode(Data))). + urlencode(strip_equals(base64:encode(Data))). encode_to_string(Data) -> - urlencode(strip_equal(base64:encode_to_string(Data))). - --spec strip_equal(binary() | string()) -> binary()|string(). -strip_equal(Encoded) when is_list(Encoded) -> - hd(string:tokens(Encoded, "=")); -strip_equal(Encoded) when is_binary(Encoded) -> - LCS = binary:longest_common_suffix([Encoded, <<"===">>]), - binary:part(Encoded, 0, byte_size(Encoded)-LCS). - -%% @doc complements '=' if it doesn't have 4*n length --spec amend_equal(binary()|string()) -> binary()|string(). -amend_equal(Encoded) when is_list(Encoded) -> - Suffix = case length(Encoded) rem 4 of - 0 -> ""; - L -> [$=||_<-lists:seq(1,L)] - end, - lists:flatten([Encoded, Suffix]); -amend_equal(Bin) when is_binary(Bin) -> + urlencode(strip_equals(base64:encode_to_string(Data))). + +-spec strip_equals(binary() | string()) -> binary()|string(). +%% @private Strip off trailing '=' characters. +strip_equals(Str) when is_list(Str) -> + string:strip(Str, right, $=); +strip_equals(Bin) when is_binary(Bin) -> + LCS = binary:longest_common_suffix([Bin, <<"===">>]), + binary:part(Bin, 0, byte_size(Bin)-LCS). + +-spec append_equals(binary()|string()) -> binary()|string(). +%% @private Append trailing '=' characters to make result legal Base64 length. +%% The most common use case will be a B64-encoded UUID, requiring the addition +%% of 2 characters, so that's the first check. We assume 0 and 3 are equally +%% likely. +%% Because B64 encoding spans all bytes across two characters, the remainder +%% of (length / 4) can never be 1 with a valid encoding, so we throw a badarg +%% with the argument here rather than letting it percolate up from stdlib with +%% no worthwhile information. +append_equals(Str) when is_list(Str) -> + case length(Str) rem 4 of + 2 -> + Str ++ "=="; + 0 -> + Str; + 3 -> + Str ++ "="; + 1 -> + erlang:error(badarg, [Str]) + end; +append_equals(Bin) when is_binary(Bin) -> case byte_size(Bin) rem 4 of - 0 -> Bin; - 1 -> <>; - 2 -> <>; - 3 -> <>; + 1 -> + erlang:error(badarg, [Bin]) end. urlencode(Base64) when is_list(Base64) -> @@ -88,20 +108,64 @@ urldecode_digit($-) -> $+; urldecode_digit(D) -> D. -ifdef(TEST). -equal_strip_amend_test() -> - %% TODO: rewrite this with EQC - _ = [begin - UUID = druuid:v4(), - Encoded = base64url:encode(UUID), - ?assertEqual(nomatch, binary:match(Encoded, [<<"=">>, <<"+">>, <<"/">>])), - ?assertEqual(UUID, base64url:decode(Encoded)) - end || _<- lists:seq(1, 1024)], - _ = [begin - UUID = druuid:v4(), - Encoded = base64url:encode_to_string(UUID), - ?assertEqual(nomatch, re:run(Encoded, "(=\\+\\/)")), - ?assertEqual(UUID, base64url:decode(Encoded)) - end || _<- lists:seq(1, 1024)], - ok. + +illegal_char_REs() -> + BinRE = binary:compile_pattern([<<"+">>, <<"/">>, <<"=">>]), + {ok, StrRE} = re:compile("[\\+/=]"), + {BinRE, StrRE}. + +encode_decode_test() -> + crypto:start(), + % Make sure Rand is at least twice as long as the highest count, but + % because we're depleting the entropy pool don't go overboard! + RandLen = 2050, + % crypto:rand:bytes/1 would be fine for us, but it's gone in OTP-19, + % so use the good stuff rather than bothering with a version check. + BinRand = crypto:strong_rand_bytes(RandLen), + % Swap halves so the binary and string tests don't use the same sequences. + HalfLen = (RandLen div 2), + RandLo = binary_part(BinRand, 0, HalfLen), + RandHi = binary_part(BinRand, HalfLen, HalfLen), + StrRand = << RandHi/binary, RandLo/binary >>, + {BinRE, StrRE} = illegal_char_REs(), + test_encode_decode_uuid(256, BinRE, StrRE), + test_encode_decode_binary(1024, BinRE, StrRE, BinRand), + test_encode_decode_string(384, BinRE, StrRE, StrRand). + +test_encode_decode_uuid(0, _, _) -> + ok; +test_encode_decode_uuid(Count, BinRE, StrRE) -> + test_encode_decode(druuid:v4(), BinRE, StrRE), + test_encode_decode_uuid((Count - 1), BinRE, StrRE). + +test_encode_decode_binary(0, _, _, _) -> + ok; +test_encode_decode_binary(Count, BinRE, StrRE, Rand) -> + test_encode_decode(binary:part(Rand, Count, Count), BinRE, StrRE), + test_encode_decode_binary((Count - 1), BinRE, StrRE, Rand). + +test_encode_decode_string(0, _, _, _) -> + ok; +test_encode_decode_string(Count, BinRE, StrRE, Rand) -> + test_encode_decode(binary:bin_to_list(Rand, Count, Count), BinRE, StrRE), + test_encode_decode_string((Count - 1), BinRE, StrRE, Rand). + +test_encode_decode(Data, BinRE, StrRE) when is_binary(Data) -> + EncBin = base64url:encode(Data), + EncStr = base64url:encode_to_string(Data), + ?assertEqual(EncStr, binary_to_list(EncBin)), + ?assertEqual(nomatch, binary:match(EncBin, BinRE)), + ?assertEqual(nomatch, re:run(EncStr, StrRE)), + ?assertEqual(Data, base64url:decode(EncBin)), + ?assertEqual(Data, base64url:decode(EncStr)); + +test_encode_decode(Data, BinRE, StrRE) when is_list(Data) -> + EncBin = base64url:encode(Data), + EncStr = base64url:encode_to_string(Data), + ?assertEqual(EncStr, binary_to_list(EncBin)), + ?assertEqual(nomatch, binary:match(EncBin, BinRE)), + ?assertEqual(nomatch, re:run(EncStr, StrRE)), + ?assertEqual(Data, base64url:decode_to_string(EncBin)), + ?assertEqual(Data, base64url:decode_to_string(EncStr)). -endif. diff --git a/src/riak_cs_utils.erl b/src/riak_cs_utils.erl index 3a551d726..dd67208ec 100644 --- a/src/riak_cs_utils.erl +++ b/src/riak_cs_utils.erl @@ -1,6 +1,6 @@ -%% --------------------------------------------------------------------- +%% ------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -16,7 +16,7 @@ %% specific language governing permissions and limitations %% under the License. %% -%% --------------------------------------------------------------------- +%% ------------------------------------------------------------------- %% @doc riak_cs utility functions From f69aea81f1ad0a660602ea69cd76543fd40899a8 Mon Sep 17 00:00:00 2001 From: Ted Burghart Date: Sat, 4 Jun 2016 09:41:08 -0400 Subject: [PATCH 039/831] updated RNs to reference PR 1316 --- RELEASE-NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 9e342a1f7..bebe2422e 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -17,7 +17,7 @@ During the update to 2.1.2, a '==' omitted upload ID might be passed to a Riak C ##Changes * Due to a recent [Product Advisory](http://docs.basho.com/riak/latest/community/product-advisories/codeinjectioninitfiles/), node_package was bumped to version 3.0.0 to prevent a potential code injection on the riak init file. [[Issue 1297](https://github.com/basho/riak_cs/issues/1297), [PR 1306](https://github.com/basho/riak_cs/pull/1306), & [PR 109](https://github.com/basho/stanchion/pull/109)] -* Multipart upload IDs no longer contain trailing '=' characters, which caused trouble for some clients. This change also makes upload IDs URL-safe. This commit removes several unused functions. [[PR 1293](https://github.com/basho/riak_cs/pull/1293)] +* Multipart upload IDs no longer contain trailing '=' characters, which caused trouble for some clients. This change also makes upload IDs URL-safe. [[PR 1316](https://github.com/basho/riak_cs/pull/1316)] * When Riak is unavailable due to network partition or node being offline, a 500 error is returned. [[PR 1298](https://github.com/basho/riak_cs/pull/1298)] ## Bugs Fixed From 1eb25024b49da42b3048a3cc7b8bb058669f651f Mon Sep 17 00:00:00 2001 From: Bob-The-Marauder Date: Mon, 9 Jul 2018 14:06:27 +0000 Subject: [PATCH 040/831] Remove EE and OSS differentiation. Make signature_v4 accessible via riak-cs.conf --- Makefile | 9 --- misc/mapdeps.erl | 3 +- rebar.config | 11 +-- rebar.config.script | 116 ++++++++++++++++--------------- rel/files/riak_cs.schema | 9 +++ riak_test/tests/repl_v3_test.erl | 9 --- 6 files changed, 74 insertions(+), 83 deletions(-) diff --git a/Makefile b/Makefile index 74d95df8a..f14ef5c87 100644 --- a/Makefile +++ b/Makefile @@ -166,15 +166,6 @@ PLT ?= $(HOME)/.riak-cs_dialyzer_plt .PHONY: package export PKG_VERSION PKG_ID PKG_BUILD BASE_DIR ERLANG_BIN REBAR OVERLAY_VARS RELEASE -## Do not export RIAK_CS_EE_DEPS unless it is set, since even an empty -## variable will affect the build and 'export' by default makes it empty -## if it is unset -BUILD_EE = $(shell test -n "$${RIAK_CS_EE_DEPS+x}" && echo "true" || echo "false") -ifeq ($(BUILD_EE),true) -export RIAK_CS_EE_DEPS=true -endif - - package.src: deps mkdir -p package rm -rf package/$(PKG_ID) diff --git a/misc/mapdeps.erl b/misc/mapdeps.erl index d7ab9ee61..28381c9c5 100755 --- a/misc/mapdeps.erl +++ b/misc/mapdeps.erl @@ -74,8 +74,7 @@ map_dir(BaseDir) -> map_rebar(BaseDir, Path, Acc) -> case file:consult(Path) of {ok, Opts} -> - Deps = proplists:get_value(deps, Opts, []) ++ - proplists:get_value(deps_ee, Opts, []), + Deps = proplists:get_value(deps, Opts, []), lists:foldl( fun({DepName, _, _}, A) -> From = app_name(Path), diff --git a/rebar.config b/rebar.config index 79f129fb1..32aab87f7 100644 --- a/rebar.config +++ b/rebar.config @@ -16,8 +16,6 @@ {xref_checks, []}. {xref_queries, - [{"(XC - UC) || (XU - X - B - \"(^riak$|^riak_cs_dummy_reader$|^riak_core_bucket$|^app_helper$|^riakc_pb_socket_fake$|^riak_object$|^riak_repl_pb_api$|^riak_cs_multibag$)\" : Mod)", []}]}. -{xref_queries_ee, [{"(XC - UC) || (XU - X - B - \"(^riak$|^riak_cs_dummy_reader$|^riak_core_bucket$|^app_helper$|^riakc_pb_socket_fake$|^riak_object$)\" : Mod)", []}]}. {reset_after_eunit, true}. @@ -51,10 +49,7 @@ {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.0.3"}}}, {xmerl, ".*", {git, "git://github.com/shino/xmerl", "1b016a05473e086abadbb3c12f63d167fe96c00f"}}, {erlcloud, ".*", {git, "git://github.com/basho/erlcloud.git", {tag, "0.4.6"}}}, - {rebar_lock_deps_plugin, ".*", {git, "git://github.com/seth/rebar_lock_deps_plugin.git", {tag, "3.1.0"}}} - ]}. - -{deps_ee, [ - {riak_repl_pb_api,".*",{git,"git@github.com:basho/riak_repl_pb_api.git", {tag, "2.1.1"}}}, - {riak_cs_multibag,".*",{git,"git@github.com:basho/riak_cs_multibag.git", {tag, "2.1.0p1"}}} + {rebar_lock_deps_plugin, ".*", {git, "git://github.com/seth/rebar_lock_deps_plugin.git", {tag, "3.1.0"}}}, + {riak_repl_pb_api,".*",{git,"git://github.com/basho/riak_repl_pb_api.git", {tag, "2.1.1"}}}, + {riak_cs_multibag,".*",{git,"git://github.com/basho/riak_cs_multibag.git", {tag, "2.1.0p1"}}} ]}. diff --git a/rebar.config.script b/rebar.config.script index 74706a568..3ec91335b 100644 --- a/rebar.config.script +++ b/rebar.config.script @@ -1,44 +1,49 @@ -{IsEE, Package} = case os:getenv("RIAK_CS_EE_DEPS") of - false -> {false, "riak-cs"}; - _ -> {true, "riak-cs-ee"} - end, +%%{IsEE, Package} = case os:getenv("RIAK_CS_EE_DEPS") of +%% false -> {false, "riak-cs"}; +%% _ -> {true, "riak-cs-ee"} +%% end, +{Package} = {"riak-cs"}, io:format("Building ~s~n", [Package]), -DepsUpdated = - case IsEE of - false -> - CONFIG; - true -> - {value, {deps, Deps}} = lists:keysearch(deps, 1, CONFIG), - {value, {deps_ee, DepsEE}} = lists:keysearch(deps_ee, 1, CONFIG), - lists:keyreplace(deps, 1, CONFIG, {deps, Deps ++ DepsEE}) - end, +%%DepsUpdated = +%% case IsEE of +%% false -> +%% CONFIG; +%% true -> +%% {value, {deps, Deps}} = lists:keysearch(deps, 1, CONFIG), +%% {value, {deps_ee, DepsEE}} = lists:keysearch(deps_ee, 1, CONFIG), +%% lists:keyreplace(deps, 1, CONFIG, {deps, Deps ++ DepsEE}) +%% end, -XrefQueryUpdated = - case IsEE of - false -> - DepsUpdated; - true -> - {value, {xref_queries_ee, QueriesEE}} = - lists:keysearch(xref_queries_ee, 1, DepsUpdated), - lists:keyreplace(xref_queries, 1, DepsUpdated, {xref_queries, QueriesEE}) - end, +DepsUpdated = CONFIG, + +%%XrefQueryUpdated = +%% case IsEE of +%% false -> +%% DepsUpdated; +%% true -> +%% {value, {xref_queries_ee, QueriesEE}} = +%% lists:keysearch(xref_queries_ee, 1, DepsUpdated), +%% lists:keyreplace(xref_queries, 1, DepsUpdated, {xref_queries, QueriesEE}) +%% end, + +XrefQueryUpdated = DepsUpdated, FinalConfig = XrefQueryUpdated, %% Write dialyzer.ignore_warnings {ok, _} = file:copy("dialyzer.ignore-warnings.ee", "dialyzer.ignore-warnings"), -case IsEE of - false -> - {ok, _} = file:copy("dialyzer.ignore-warnings.oss", - {"dialyzer.ignore-warnings", [append]}); - true -> ok -end, +%%case IsEE of +%% false -> +%% {ok, _} = file:copy("dialyzer.ignore-warnings.oss", +%% {"dialyzer.ignore-warnings", [append]}); +%% true -> ok +%%end, %% Write pkg.vars.config -case IsEE of - false -> +%%case IsEE of +%% false -> Bytes = "%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ts=4 sw=4 et @@ -50,7 +55,7 @@ case IsEE of {package_install_user, \"riakcs\"}. {package_install_group, \"riak\"}. {package_install_user_desc, \"Riak CS user\"}. -{package_commands, {list, [[{name, \"riak-cs\"}], [{name, \"riak-cs-access\"}], [{name, \"riak-cs-gc\"}], [{name, \"riak-cs-storage\"}], [{name, \"riak-cs-stanchion\"}], [{name, \"riak-cs-debug\"}], [{name, \"riak-cs-admin\"}]]}}. +{package_commands, {list, [[{name, \"riak-cs\"}], [{name, \"riak-cs-access\"}], [{name, \"riak-cs-gc\"}], [{name, \"riak-cs-storage\"}], [{name, \"riak-cs-stanchion\"}], [{name, \"riak-cs-debug\"}], [{name, \"riak-cs-admin\"}], [{name, \"riak-cs-supercluster\"}], [{name, \"riak-cs-multibag\"}]]}}. {package_shortdesc, \"Riak CS\"}. {package_patch_dir, \"basho-patches\"}. {package_desc, \"Riak CS\"}. @@ -63,34 +68,35 @@ case IsEE of {vendor_contact_email, \"packaging@basho.com\"}. {license_full_text, \"This software is provided under license from Basho Technologies.\"}. {solaris_pkgname, \"BASHOriak-cs\"}.", - file:write_file("pkg.vars.config", Bytes); - true -> - Bytes = "%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- + file:write_file("pkg.vars.config", Bytes), + +%% true -> +%% Bytes = "%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ts=4 sw=4 et %% %% Packaging %% -{package_name, \"riak-cs-ee\"}. -{package_install_name, \"riak-cs\"}. -{package_install_user, \"riakcs\"}. -{package_install_group, \"riak\"}. -{package_install_user_desc, \"Riak CS user\"}. -{package_commands, {list, [[{name, \"riak-cs\"}], [{name, \"riak-cs-access\"}], [{name, \"riak-cs-gc\"}], [{name, \"riak-cs-storage\"}], [{name, \"riak-cs-stanchion\"}], [{name, \"riak-cs-debug\"}], [{name, \"riak-cs-admin\"}], [{name, \"riak-cs-supercluster\"}], [{name, \"riak-cs-multibag\"}]]}}. -{package_shortdesc, \"Riak CS\"}. -{package_patch_dir, \"basho-patches\"}. -{package_desc, \"Riak CS\"}. -{bin_or_sbin, \"sbin\"}. -{license_type, \"Proprietary\"}. -{copyright, \"2013 Basho Technologies, Inc\"}. -{vendor_name, \"Basho Technologies, Inc\"}. -{vendor_url, \"http://basho.com\"}. -{vendor_contact_name, \"Basho Package Maintainer\"}. -{vendor_contact_email, \"packaging@basho.com\"}. -{license_full_text, \"This software is provided under license from Basho Technologies.\"}. -{solaris_pkgname, \"BASHOriak-cs-ee\"}. -{debuild_extra_options, \"-e RIAK_CS_EE_DEPS=true\"}.", - file:write_file("pkg.vars.config", Bytes) -end, +%%{package_name, \"riak-cs-ee\"}. +%%{package_install_name, \"riak-cs\"}. +%%{package_install_user, \"riakcs\"}. +%%{package_install_group, \"riak\"}. +%%{package_install_user_desc, \"Riak CS user\"}. +%%{package_commands, {list, [[{name, \"riak-cs\"}], [{name, \"riak-cs-access\"}], [{name, \"riak-cs-gc\"}], [{name, \"riak-cs-storage\"}], [{name, \"riak-cs-stanchion\"}], [{name, \"riak-cs-debug\"}], [{name, \"riak-cs-admin\"}], [{name, \"riak-cs-supercluster\"}], [{name, \"riak-cs-multibag\"}]]}}. +%%{package_shortdesc, \"Riak CS\"}. +%%{package_patch_dir, \"basho-patches\"}. +%%{package_desc, \"Riak CS\"}. +%%{bin_or_sbin, \"sbin\"}. +%%{license_type, \"Proprietary\"}. +%%{copyright, \"2013 Basho Technologies, Inc\"}. +%%{vendor_name, \"Basho Technologies, Inc\"}. +%%{vendor_url, \"http://basho.com\"}. +%%{vendor_contact_name, \"Basho Package Maintainer\"}. +%%{vendor_contact_email, \"packaging@basho.com\"}. +%%{license_full_text, \"This software is provided under license from Basho Technologies.\"}. +%%{solaris_pkgname, \"BASHOriak-cs-ee\"}. +%%{debuild_extra_options, \"-e RIAK_CS_EE_DEPS=true\"}.", +%% file:write_file("pkg.vars.config", Bytes) +%%end, FinalConfig. diff --git a/rel/files/riak_cs.schema b/rel/files/riak_cs.schema index 401da7003..b42cf1a6c 100644 --- a/rel/files/riak_cs.schema +++ b/rel/files/riak_cs.schema @@ -86,6 +86,15 @@ hidden ]}. +%% @doc Enable signature_v4 compatibility. +%% Changing this setting to on will allow s3cmd to utilise +%% signature_v4 and thus function without the need to manually add +%% v2_signature support to your .s3cfg file +{mapping, "auth_v4", "riak_cs.auth_v4_enabled", [ + {default, off}, + {datatype, flag} +]}. + %% @doc Root host name which Riak CS accepts. %% Your CS bucket at s3.example.com will be accessible %% via URL like http://bucket.s3.example.com/object/name diff --git a/riak_test/tests/repl_v3_test.erl b/riak_test/tests/repl_v3_test.erl index ec9906ce8..0b4eaf6b8 100644 --- a/riak_test/tests/repl_v3_test.erl +++ b/riak_test/tests/repl_v3_test.erl @@ -27,15 +27,6 @@ -define(TEST_BUCKET, "riak-test-bucket"). confirm() -> - case rt_config:get(build_type, oss) of - ee -> - confirm_ee(); - _ -> - lager:info("~s test is only valid on riak_ee, skipping", [?MODULE]), - pass - end. - -confirm_ee() -> {UserConfig, {RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup2x2(), lager:info("UserConfig = ~p", [UserConfig]), [A,B,C,D] = RiakNodes, From 345194b7c3d3cdb436084f491b743b2c021cb874 Mon Sep 17 00:00:00 2001 From: Nicholas Adams Date: Thu, 4 Oct 2018 22:47:16 +0900 Subject: [PATCH 041/831] Removed Erroneous Changes --- riak_test/tests/repl_v3_test.erl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/riak_test/tests/repl_v3_test.erl b/riak_test/tests/repl_v3_test.erl index 0b4eaf6b8..798b8abe6 100644 --- a/riak_test/tests/repl_v3_test.erl +++ b/riak_test/tests/repl_v3_test.erl @@ -26,7 +26,16 @@ -define(TEST_BUCKET, "riak-test-bucket"). -confirm() -> +confirm() + ->case rt_config:get(build_type, oss) of + ee -> + confirm_ee(); + _ -> + lager:info("~s test is only valid on riak_ee, skipping", [?MODULE]), + pass + end. + +confirm_ee() -> {UserConfig, {RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup2x2(), lager:info("UserConfig = ~p", [UserConfig]), [A,B,C,D] = RiakNodes, From 10e5a3a68159d39be25fe7c388a3704408a3641d Mon Sep 17 00:00:00 2001 From: Bob-The-Marauder Date: Sun, 24 Feb 2019 05:13:41 +0000 Subject: [PATCH 042/831] Tidied code based on pull request feedback --- ...re-warnings.ee => dialyzer.ignore-warnings | 0 pkg.vars.config | 23 +++++++++++++++++++ 2 files changed, 23 insertions(+) rename dialyzer.ignore-warnings.ee => dialyzer.ignore-warnings (100%) create mode 100644 pkg.vars.config diff --git a/dialyzer.ignore-warnings.ee b/dialyzer.ignore-warnings similarity index 100% rename from dialyzer.ignore-warnings.ee rename to dialyzer.ignore-warnings diff --git a/pkg.vars.config b/pkg.vars.config new file mode 100644 index 000000000..9e922e8b8 --- /dev/null +++ b/pkg.vars.config @@ -0,0 +1,23 @@ +%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- + +%% +%% Packaging +%% +{package_name, "riak-cs"}. +{package_install_name, "riak-cs"}. +{package_install_user, "riakcs"}. +{package_install_group, "riak"}. +{package_install_user_desc, "Riak CS user"}. +{package_commands, {list, [[{name, "riak-cs"}], [{name, "riak-cs-access"}], [{name, "riak-cs-gc"}], [{name, "riak-cs-storage"}], [{name, "riak-cs-stanchion"}], [{name, "riak-cs-debug"}], [{name, "riak-cs-admin"}], [{name, "riak-cs-supercluster"}], [{name, "riak-cs-multibag"}]]}}. +{package_shortdesc, "Riak CS"}. +{package_patch_dir, "basho-patches"}. +{package_desc, "Riak CS"}. +{bin_or_sbin, "sbin"}. +{license_type, "Apache License, Version 2.0"}. +{copyright, "2013 Basho Technologies, Inc"}. +{vendor_name, "Basho Technologies, Inc"}. +{vendor_url, "http://basho.com"}. +{vendor_contact_name, "Basho Package Maintainer"}. +{vendor_contact_email, "packaging@basho.com"}. +{license_full_text, "This software is provided under license from Basho Technologies."}. +{solaris_pkgname, "BASHOriak-cs"}. \ No newline at end of file From 636a5eb93f91af49f7c283953ca7589f7a81bed9 Mon Sep 17 00:00:00 2001 From: Bob-The-Marauder Date: Sun, 24 Feb 2019 05:19:01 +0000 Subject: [PATCH 043/831] Updated Release Notes --- RELEASE-NOTES.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index bebe2422e..7ea8ff1a8 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,6 +1,6 @@ -#Riak CS 2.1.2 Release Notes +#Riak CS 2.1.2 Release Candidate Notes -Released March 31, 2016. +Released February 24, 2019. This is a backwards-compatible* release that updates node_package to address a recent [Product Advisory](http://docs.basho.com/riak/latest/community/product-advisories/codeinjectioninitfiles/), as well as fixes several bugs. @@ -15,7 +15,7 @@ Riak CS 2.1 is designed to work with Riak KV 2.1.1+. During the update to 2.1.2, a '==' omitted upload ID might be passed to a Riak CS node running an older version of CS. This may lead to process-crash by failing on decoding upload ID. ##Changes - +* For s3cmd users, experimental signature_v4 support has been made available through a simple on/off toggle in riak-cs.conf. With a default setting of "off", it allows in-situ upgrades without the need to change s3cfg files until after all nodes have been upgraded. Note: this function is currently unfinished and suffers from compatibility issues with some clients ([#1058](https://github.com/basho/riak_cs/issues/1058) / [#1060](https://github.com/basho/riak_cs/issues/1060)) and one potential security issue ([#1059](https://github.com/basho/riak_cs/issues/1059) * Due to a recent [Product Advisory](http://docs.basho.com/riak/latest/community/product-advisories/codeinjectioninitfiles/), node_package was bumped to version 3.0.0 to prevent a potential code injection on the riak init file. [[Issue 1297](https://github.com/basho/riak_cs/issues/1297), [PR 1306](https://github.com/basho/riak_cs/pull/1306), & [PR 109](https://github.com/basho/stanchion/pull/109)] * Multipart upload IDs no longer contain trailing '=' characters, which caused trouble for some clients. This change also makes upload IDs URL-safe. [[PR 1316](https://github.com/basho/riak_cs/pull/1316)] * When Riak is unavailable due to network partition or node being offline, a 500 error is returned. [[PR 1298](https://github.com/basho/riak_cs/pull/1298)] From 4f607ba320969ff1d314b277b2757a2540400965 Mon Sep 17 00:00:00 2001 From: Bob-The-Marauder Date: Sun, 24 Feb 2019 06:38:10 +0000 Subject: [PATCH 044/831] Wording update --- rel/files/riak_cs.schema | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rel/files/riak_cs.schema b/rel/files/riak_cs.schema index b42cf1a6c..3c3a28509 100644 --- a/rel/files/riak_cs.schema +++ b/rel/files/riak_cs.schema @@ -86,10 +86,12 @@ hidden ]}. -%% @doc Enable signature_v4 compatibility. +%% @doc Enable experimental signature_v4 compatibility. %% Changing this setting to on will allow s3cmd to utilise %% signature_v4 and thus function without the need to manually add -%% v2_signature support to your .s3cfg file +%% v2_signature support to your .s3cfg file, +%% Note: this function is unfinished and suffers from issues: +%% #1058, #1059, #1060. Use at your own risk. {mapping, "auth_v4", "riak_cs.auth_v4_enabled", [ {default, off}, {datatype, flag} From 94b3dc3e071e5281a678d0c3ffa3de0033be2164 Mon Sep 17 00:00:00 2001 From: Bob-The-Marauder Date: Sun, 24 Feb 2019 13:22:54 +0000 Subject: [PATCH 045/831] Adding some files missed in last commit --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index e505080ec..6df5e8066 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ log/ *~ current_counterexample.eqc .client_test/ -pkg.vars.config client_tests/python/ceph_tests/s3-tests riak-cs.png .local_dialyzer_plt From a40c44151caac7447149fc51f09d3a7f62946b7c Mon Sep 17 00:00:00 2001 From: Bob-The-Marauder Date: Sun, 24 Feb 2019 13:23:52 +0000 Subject: [PATCH 046/831] Removing no longer necessary files --- dialyzer.ignore-warnings.oss | 10 --- rebar.config.lock | 115 ----------------------------------- rebar.config.script | 102 ------------------------------- 3 files changed, 227 deletions(-) delete mode 100644 dialyzer.ignore-warnings.oss delete mode 100644 rebar.config.lock delete mode 100644 rebar.config.script diff --git a/dialyzer.ignore-warnings.oss b/dialyzer.ignore-warnings.oss deleted file mode 100644 index 6437a1c85..000000000 --- a/dialyzer.ignore-warnings.oss +++ /dev/null @@ -1,10 +0,0 @@ -# Warnings -Unknown functions: - riak_cs_multibag:choose_bag_id/1 - riak_cs_multibag:list_pool/0 - riak_cs_multibag:list_pool/1 - riak_cs_multibag:pool_name_for_bag/2 - riak_cs_multibag:pool_specs/1 - riak_cs_multibag:process_specs/0 - riak_repl_pb_api:get/5 - riak_repl_pb_api:get_clusterid/2 diff --git a/rebar.config.lock b/rebar.config.lock deleted file mode 100644 index ac76860b6..000000000 --- a/rebar.config.lock +++ /dev/null @@ -1,115 +0,0 @@ -%% THIS FILE IS GENERATED. DO NOT EDIT IT MANUALLY %% - -{sub_dirs,["rel"]}. -{require_otp_vsn,"R16|17"}. -{cover_enabled,false}. -{edoc_opts,[preprocess]}. -{lib_dirs,["deps","apps"]}. -{erl_opts,[debug_info,warnings_as_errors, - {parse_transform,lager_transform}, - {platform_define,"^[0-9]+",namespaced_types}]}. -{xref_checks,[]}. -{xref_queries,[{"(XC - UC) || (XU - X - B - \"(^riak$|^riak_cs_dummy_reader$|^riak_core_bucket$|^app_helper$|^riakc_pb_socket_fake$|^riak_object$|^riak_repl_pb_api$|^riak_cs_multibag$)\" : Mod)", - []}]}. -{xref_queries_ee,[{"(XC - UC) || (XU - X - B - \"(^riak$|^riak_cs_dummy_reader$|^riak_core_bucket$|^app_helper$|^riakc_pb_socket_fake$|^riak_object$)\" : Mod)", - []}]}. -{reset_after_eunit,true}. -{plugin_dir,".plugins"}. -{plugins,[rebar_test_plugin,rebar_lock_deps_plugin]}. -{client_test,[{test_paths,["client_tests/erlang"]}, - {test_output,".client_test"}]}. -{riak_test,[{test_paths,["riak_test/tests","riak_test/src", - "deps/riak_cs_multibag/riak_test/tests", - "deps/riak_cs_multibag/riak_test/src"]}, - {test_output,"riak_test/ebin"}]}. -{deps,[{goldrush,".*", - {git,"git://github.com/DeadZen/goldrush.git", - "64864ba7fcf40988361340e48680b49a2c2938cf"}}, - {lager,".*", - {git,"git://github.com/basho/lager", - "f65dde85523b6aa6a259db1c93518187ae366515"}}, - {syslog,".*", - {git,"git://github.com/Vagabond/erlang-syslog", - "e24c9ee8f7bb3f066ec152c210af10c2c712759a"}}, - {lager_syslog,".*", - {git,"git://github.com/basho/lager_syslog", - "399a90d9c77afa66590b1a42fcf76035a304c229"}}, - {getopt,".*", - {git,"git://github.com/jcomellas/getopt.git", - "388dc95caa7fb97ec7db8cfc39246a36aba61bd8"}}, - {neotoma,".*", - {git,"git://github.com/seancribbs/neotoma.git", - "760928ec8870da02eb11bccb501e2700925d06c6"}}, - {cuttlefish,".*", - {git,"git://github.com/basho/cuttlefish.git", - "7ce217c3effb9990bb1aff34621013222c9977ec"}}, - {node_package,".*", - {git,"git://github.com/basho/node_package", - "c630bcb25de53d542b167a0891c32f9e47602d6a"}}, - {mochiweb,".*", - {git,"git://github.com/basho/mochiweb.git", - "ade2a9b29a11034eb550c1d79b4f991bf5ca05ba"}}, - {webmachine,".*", - {git,"git://github.com/basho/webmachine", - "7677c240f4a7ed020f4bab48278224966bb42311"}}, - {meck,".*", - {git,"git://github.com/basho/meck.git", - "dde759050eff19a1a80fd854d7375174b191665d"}}, - {protobuffs,".*", - {git,"git://github.com/basho/erlang_protobuffs.git", - "f88fc3c6881687432ddd5546b3c7b08009dfb26f"}}, - {riak_pb,".*", - {git,"git://github.com/basho/riak_pb", - "620bc7001dc788e5530078aa8be53c9d15d4fdb4"}}, - {riakc,".*", - {git,"git://github.com/basho/riak-erlang-client", - "1c75e31fd50e065aeebe787d608ce9b7ddeddb38"}}, - {eper,".*", - {git,"git://github.com/basho/eper.git", - "dd0a275b9e66d8e02e48bf6353b2f4881e55c1db"}}, - {druuid,".*", - {git,"git://github.com/kellymclaughlin/druuid.git", - "b3c5c2a52bb3f510d168b32e64f6fbc6a3c6a0e6"}}, - {poolboy,".*", - {git,"git://github.com/basho/poolboy", - "8bb45fbc715c5f493642a1cc572ec7017d0d5fa3"}}, - {edown,".*", - {git,"git://github.com/uwiger/edown.git", - "d62ec85281e451a46ba30045917c119d65b72a84"}}, - {parse_trans,".*", - {git,"git://github.com/uwiger/parse_trans.git", - "82cc00264aa1bad8fc5c0739b7541feb4a843432"}}, - {bear,".*", - {git,"git://github.com/boundary/bear.git", - "119234548783af19b8ec75c879c5062676b92571"}}, - {folsom,".*", - {git,"git://github.com/boundary/folsom", - "38e2cce7c64ce1f0a3a918d90394cfc0a940b1ba"}}, - {setup,".*", - {git,"git://github.com/uwiger/setup.git", - "51ee7c9f64d2bbe9dcbb58c278e8fbfd4d0ca5e2"}}, - {exometer_core,".*", - {git,"git://github.com/Feuerlabs/exometer_core", - "88588f26f226210a1fc9e70271d8a0611ba83d30"}}, - {cluster_info,".*", - {git,"git://github.com/basho/cluster_info", - "76c73fcac58c32f1603f8a1b98d7c441da92fa91"}}, - {xmerl,".*", - {git,"git://github.com/shino/xmerl", - "1b016a05473e086abadbb3c12f63d167fe96c00f"}}, - {ibrowse,".*", - {git,"git://github.com/cmullaparthi/ibrowse", - "e8ae353c16d4f0897abb9f80025b52925b974dd1"}}, - {erlcloud,".*", - {git,"git://github.com/basho/erlcloud.git", - "c2336913ff7525b58ce89a5c0d1fd0db171aa71d"}}, - {rebar_lock_deps_plugin,".*", - {git,"git://github.com/seth/rebar_lock_deps_plugin.git", - "9711549b8a84b065eb2edc22f8eb6ff85e3c94e8"}}]}. -{deps_ee,[{riak_repl_pb_api,".*", - {git,"git@github.com:basho/riak_repl_pb_api.git", - {tag,"2.1.1"}}}, - {riak_cs_multibag,".*", - {git,"git@github.com:basho/riak_cs_multibag.git", - {tag,"2.1.0p1"}}}]}. - diff --git a/rebar.config.script b/rebar.config.script deleted file mode 100644 index 3ec91335b..000000000 --- a/rebar.config.script +++ /dev/null @@ -1,102 +0,0 @@ -%%{IsEE, Package} = case os:getenv("RIAK_CS_EE_DEPS") of -%% false -> {false, "riak-cs"}; -%% _ -> {true, "riak-cs-ee"} -%% end, -{Package} = {"riak-cs"}, -io:format("Building ~s~n", [Package]), - -%%DepsUpdated = -%% case IsEE of -%% false -> -%% CONFIG; -%% true -> -%% {value, {deps, Deps}} = lists:keysearch(deps, 1, CONFIG), -%% {value, {deps_ee, DepsEE}} = lists:keysearch(deps_ee, 1, CONFIG), -%% lists:keyreplace(deps, 1, CONFIG, {deps, Deps ++ DepsEE}) -%% end, - -DepsUpdated = CONFIG, - -%%XrefQueryUpdated = -%% case IsEE of -%% false -> -%% DepsUpdated; -%% true -> -%% {value, {xref_queries_ee, QueriesEE}} = -%% lists:keysearch(xref_queries_ee, 1, DepsUpdated), -%% lists:keyreplace(xref_queries, 1, DepsUpdated, {xref_queries, QueriesEE}) -%% end, - -XrefQueryUpdated = DepsUpdated, - -FinalConfig = XrefQueryUpdated, - -%% Write dialyzer.ignore_warnings - -{ok, _} = file:copy("dialyzer.ignore-warnings.ee", "dialyzer.ignore-warnings"), -%%case IsEE of -%% false -> -%% {ok, _} = file:copy("dialyzer.ignore-warnings.oss", -%% {"dialyzer.ignore-warnings", [append]}); -%% true -> ok -%%end, - -%% Write pkg.vars.config -%%case IsEE of -%% false -> - Bytes = "%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- -%% ex: ts=4 sw=4 et - -%% -%% Packaging -%% -{package_name, \"riak-cs\"}. -{package_install_name, \"riak-cs\"}. -{package_install_user, \"riakcs\"}. -{package_install_group, \"riak\"}. -{package_install_user_desc, \"Riak CS user\"}. -{package_commands, {list, [[{name, \"riak-cs\"}], [{name, \"riak-cs-access\"}], [{name, \"riak-cs-gc\"}], [{name, \"riak-cs-storage\"}], [{name, \"riak-cs-stanchion\"}], [{name, \"riak-cs-debug\"}], [{name, \"riak-cs-admin\"}], [{name, \"riak-cs-supercluster\"}], [{name, \"riak-cs-multibag\"}]]}}. -{package_shortdesc, \"Riak CS\"}. -{package_patch_dir, \"basho-patches\"}. -{package_desc, \"Riak CS\"}. -{bin_or_sbin, \"sbin\"}. -{license_type, \"Apache License, Version 2.0\"}. -{copyright, \"2013 Basho Technologies, Inc\"}. -{vendor_name, \"Basho Technologies, Inc\"}. -{vendor_url, \"http://basho.com\"}. -{vendor_contact_name, \"Basho Package Maintainer\"}. -{vendor_contact_email, \"packaging@basho.com\"}. -{license_full_text, \"This software is provided under license from Basho Technologies.\"}. -{solaris_pkgname, \"BASHOriak-cs\"}.", - file:write_file("pkg.vars.config", Bytes), - -%% true -> -%% Bytes = "%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- -%% ex: ts=4 sw=4 et - -%% -%% Packaging -%% -%%{package_name, \"riak-cs-ee\"}. -%%{package_install_name, \"riak-cs\"}. -%%{package_install_user, \"riakcs\"}. -%%{package_install_group, \"riak\"}. -%%{package_install_user_desc, \"Riak CS user\"}. -%%{package_commands, {list, [[{name, \"riak-cs\"}], [{name, \"riak-cs-access\"}], [{name, \"riak-cs-gc\"}], [{name, \"riak-cs-storage\"}], [{name, \"riak-cs-stanchion\"}], [{name, \"riak-cs-debug\"}], [{name, \"riak-cs-admin\"}], [{name, \"riak-cs-supercluster\"}], [{name, \"riak-cs-multibag\"}]]}}. -%%{package_shortdesc, \"Riak CS\"}. -%%{package_patch_dir, \"basho-patches\"}. -%%{package_desc, \"Riak CS\"}. -%%{bin_or_sbin, \"sbin\"}. -%%{license_type, \"Proprietary\"}. -%%{copyright, \"2013 Basho Technologies, Inc\"}. -%%{vendor_name, \"Basho Technologies, Inc\"}. -%%{vendor_url, \"http://basho.com\"}. -%%{vendor_contact_name, \"Basho Package Maintainer\"}. -%%{vendor_contact_email, \"packaging@basho.com\"}. -%%{license_full_text, \"This software is provided under license from Basho Technologies.\"}. -%%{solaris_pkgname, \"BASHOriak-cs-ee\"}. -%%{debuild_extra_options, \"-e RIAK_CS_EE_DEPS=true\"}.", -%% file:write_file("pkg.vars.config", Bytes) -%%end, - -FinalConfig. From 99fecf9d152d3d5cf8c24edfda5a0bfaabc75aa5 Mon Sep 17 00:00:00 2001 From: Bob-The-Marauder Date: Sun, 24 Feb 2019 13:56:10 +0000 Subject: [PATCH 047/831] Fix missed file reference --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f14ef5c87..641dcabd7 100644 --- a/Makefile +++ b/Makefile @@ -170,7 +170,7 @@ package.src: deps mkdir -p package rm -rf package/$(PKG_ID) git archive --format=tar --prefix=$(PKG_ID)/ $(PKG_REVISION)| (cd package && tar -xf -) - cp rebar.config.script package/$(PKG_ID) + cp pkg.vars.config package/$(PKG_ID) make -C package/$(PKG_ID) deps mkdir -p package/$(PKG_ID)/priv git --git-dir=.git describe --tags >package/$(PKG_ID)/priv/vsn.git From 7cb1989a834c0d98103e3b783838df5ec0baa375 Mon Sep 17 00:00:00 2001 From: Bob-The-Marauder Date: Sun, 7 Apr 2019 13:57:51 +0000 Subject: [PATCH 048/831] Riak CS 2.1.2 Final - `make` to `${MAKE}` for FreeBSD --- Makefile | 14 +++++++------- RELEASE-NOTES.md | 6 ++++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 641dcabd7..a89353338 100644 --- a/Makefile +++ b/Makefile @@ -84,13 +84,13 @@ pulse: all test-client: test-clojure test-boto test-ceph test-erlang test-ruby test-php test-go test-python: - @cd client_tests/python/ && make CS_HTTP_PORT=$(CS_HTTP_PORT) + @cd client_tests/python/ && ${MAKE} CS_HTTP_PORT=$(CS_HTTP_PORT) test-boto: - @cd client_tests/python/ && make boto_tests CS_HTTP_PORT=$(CS_HTTP_PORT) + @cd client_tests/python/ && ${MAKE} boto_tests CS_HTTP_PORT=$(CS_HTTP_PORT) test-ceph: - @cd client_tests/python/ && make ceph_tests CS_HTTP_PORT=$(CS_HTTP_PORT) + @cd client_tests/python/ && ${MAKE} ceph_tests CS_HTTP_PORT=$(CS_HTTP_PORT) test-ruby: @bundle --gemfile client_tests/ruby/Gemfile --path vendor @@ -105,10 +105,10 @@ test-clojure: @cd client_tests/clojure/clj-s3 && lein do deps, midje test-php: - @cd client_tests/php && make + @cd client_tests/php && ${MAKE} test-go: - @cd client_tests/go && make + @cd client_tests/go && ${MAKE} ## ## Release targets @@ -171,7 +171,7 @@ package.src: deps rm -rf package/$(PKG_ID) git archive --format=tar --prefix=$(PKG_ID)/ $(PKG_REVISION)| (cd package && tar -xf -) cp pkg.vars.config package/$(PKG_ID) - make -C package/$(PKG_ID) deps + ${MAKE} -C package/$(PKG_ID) deps mkdir -p package/$(PKG_ID)/priv git --git-dir=.git describe --tags >package/$(PKG_ID)/priv/vsn.git for dep in package/$(PKG_ID)/deps/*; do \ @@ -186,7 +186,7 @@ dist: package.src cp package/$(PKG_ID).tar.gz . package: package.src - make -C package -f $(PKG_ID)/deps/node_package/Makefile + ${MAKE} -C package -f $(PKG_ID)/deps/node_package/Makefile pkgclean: distclean rm -rf package diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 7ea8ff1a8..d3530e791 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,6 +1,6 @@ -#Riak CS 2.1.2 Release Candidate Notes +#Riak CS 2.1.2 Release Notes -Released February 24, 2019. +Released April 7, 2019. This is a backwards-compatible* release that updates node_package to address a recent [Product Advisory](http://docs.basho.com/riak/latest/community/product-advisories/codeinjectioninitfiles/), as well as fixes several bugs. @@ -16,9 +16,11 @@ During the update to 2.1.2, a '==' omitted upload ID might be passed to a Riak C ##Changes * For s3cmd users, experimental signature_v4 support has been made available through a simple on/off toggle in riak-cs.conf. With a default setting of "off", it allows in-situ upgrades without the need to change s3cfg files until after all nodes have been upgraded. Note: this function is currently unfinished and suffers from compatibility issues with some clients ([#1058](https://github.com/basho/riak_cs/issues/1058) / [#1060](https://github.com/basho/riak_cs/issues/1060)) and one potential security issue ([#1059](https://github.com/basho/riak_cs/issues/1059) +* Experimental support for Leveled (the alternative to LevelDB to be released with Riak KV 2.9) has been successfully tested with the Riak KV 2.9.0 Release Candidates. * Due to a recent [Product Advisory](http://docs.basho.com/riak/latest/community/product-advisories/codeinjectioninitfiles/), node_package was bumped to version 3.0.0 to prevent a potential code injection on the riak init file. [[Issue 1297](https://github.com/basho/riak_cs/issues/1297), [PR 1306](https://github.com/basho/riak_cs/pull/1306), & [PR 109](https://github.com/basho/stanchion/pull/109)] * Multipart upload IDs no longer contain trailing '=' characters, which caused trouble for some clients. This change also makes upload IDs URL-safe. [[PR 1316](https://github.com/basho/riak_cs/pull/1316)] * When Riak is unavailable due to network partition or node being offline, a 500 error is returned. [[PR 1298](https://github.com/basho/riak_cs/pull/1298)] +* Switched from `make` to `${MAKE}` to facilitate easier building on FreeBSD and related platforms ## Bugs Fixed From b12d98fab55bdb6c194b566be478bef25ba35a66 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 16 Mar 2021 04:47:47 +0200 Subject: [PATCH 049/831] directly use namespaced types --- include/riak_cs.hrl | 4 ---- src/riak_cs_get_fsm.erl | 4 ---- src/riak_cs_list_objects_ets_cache.erl | 4 ---- src/twop_set.erl | 4 ---- test/twop_set_eqc.erl | 4 ---- 5 files changed, 20 deletions(-) diff --git a/include/riak_cs.hrl b/include/riak_cs.hrl index b112b7216..345cfaf6c 100644 --- a/include/riak_cs.hrl +++ b/include/riak_cs.hrl @@ -519,8 +519,4 @@ -define(MAX_S3_KEY_LENGTH, 1024). --ifdef(namespaced_types). -type mochiweb_headers() :: gb_trees:tree(). --else. --type mochiweb_headers() :: gb_tree(). --endif. diff --git a/src/riak_cs_get_fsm.erl b/src/riak_cs_get_fsm.erl index 52bb4176a..4b9c86015 100644 --- a/src/riak_cs_get_fsm.erl +++ b/src/riak_cs_get_fsm.erl @@ -67,11 +67,7 @@ -type block_name() :: {binary(), integer()}. --ifdef(namespaced_types). -type block_queue() :: queue:queue(). --else. --type block_queue() :: queue(). --endif. -record(state, {from :: {pid(), reference()}, riak_client :: riak_client(), diff --git a/src/riak_cs_list_objects_ets_cache.erl b/src/riak_cs_list_objects_ets_cache.erl index b91ed48cd..4f6425013 100644 --- a/src/riak_cs_list_objects_ets_cache.erl +++ b/src/riak_cs_list_objects_ets_cache.erl @@ -52,11 +52,7 @@ -define(DICTMODULE, dict). --ifdef(namespaced_types). -type dictionary() :: dict:dict(). --else. --type dictionary() :: dict(). --endif. -record(state, {tid :: ets:tid(), monitor_to_timer = ?DICTMODULE:new() :: dictionary(), diff --git a/src/twop_set.erl b/src/twop_set.erl index 0a7a0daf9..9373b2e54 100644 --- a/src/twop_set.erl +++ b/src/twop_set.erl @@ -53,11 +53,7 @@ resolve/1 ]). --ifdef(namespaced_types). -type stdlib_set() :: sets:set(). --else. --type stdlib_set() :: set(). --endif. -type twop_set() :: {stdlib_set(), stdlib_set()}. -export_type([twop_set/0]). diff --git a/test/twop_set_eqc.erl b/test/twop_set_eqc.erl index f86fde5f5..7d09b18dd 100644 --- a/test/twop_set_eqc.erl +++ b/test/twop_set_eqc.erl @@ -52,11 +52,7 @@ -define(QC_OUT(P), eqc:on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). --ifdef(namespaced_types). -type stdlib_set() :: sets:set(). --else. --type stdlib_set() :: set(). --endif. -record(eqc_state, {adds=sets:new() :: stdlib_set(), deletes=sets:new() :: stdlib_set(), From 99e259faf273376d02b9ab26953af54051aaba4e Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 16 Mar 2021 04:49:03 +0200 Subject: [PATCH 050/831] replace druuid (too old) with uuid --- src/base64url.erl | 2 +- src/riak_cs_mp_utils.erl | 2 +- src/riak_cs_put_fsm.erl | 2 +- src/riak_cs_user.erl | 6 +++--- src/riak_cs_yessir_riak_client.erl | 2 +- test/riak_cs_delete_deadlock.erl | 2 +- test/riak_cs_dummy_reader.erl | 2 +- test/riak_cs_manifest_utils_eqc.erl | 4 ++-- test/riak_cs_storage_mr_test.erl | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/base64url.erl b/src/base64url.erl index 4bca74e67..d89cf8d19 100644 --- a/src/base64url.erl +++ b/src/base64url.erl @@ -135,7 +135,7 @@ encode_decode_test() -> test_encode_decode_uuid(0, _, _) -> ok; test_encode_decode_uuid(Count, BinRE, StrRE) -> - test_encode_decode(druuid:v4(), BinRE, StrRE), + test_encode_decode(uuid:get_v4(), BinRE, StrRE), test_encode_decode_uuid((Count - 1), BinRE, StrRE). test_encode_decode_binary(0, _, _, _) -> diff --git a/src/riak_cs_mp_utils.erl b/src/riak_cs_mp_utils.erl index 834ab37a3..250dd1f0a 100644 --- a/src/riak_cs_mp_utils.erl +++ b/src/riak_cs_mp_utils.erl @@ -221,7 +221,7 @@ list_parts(Bucket, Key, UploadId, Caller, Opts, RcPidUnW) -> %% @doc -spec new_manifest(binary(), binary(), binary(), acl_owner(), list()) -> lfs_manifest(). new_manifest(Bucket, Key, ContentType, {_, _, _} = Owner, Opts) -> - UUID = druuid:v4(), + UUID = uuid:get_v4(), %% TODO: add object metadata here, e.g. content-disposition et al. MetaData = case proplists:get_value(meta_data, Opts) of undefined -> []; diff --git a/src/riak_cs_put_fsm.erl b/src/riak_cs_put_fsm.erl index 3646e2b50..9fc21c3cf 100644 --- a/src/riak_cs_put_fsm.erl +++ b/src/riak_cs_put_fsm.erl @@ -158,7 +158,7 @@ init({{Bucket, Key, ContentLength, ContentType, %% live. CallerRef = erlang:monitor(process, Caller), - UUID = druuid:v4(), + UUID = uuid:get_v4(), BagId = case BagId0 of undefined -> riak_cs_mb_helper:choose_bag_id(block, {Bucket, Key, UUID}); diff --git a/src/riak_cs_user.erl b/src/riak_cs_user.erl index 9f68cd9a3..abff91db6 100644 --- a/src/riak_cs_user.erl +++ b/src/riak_cs_user.erl @@ -255,7 +255,7 @@ generate_access_creds(UserId) -> generate_canonical_id(KeyID) -> Bytes = 16, Id1 = riak_cs_utils:md5(KeyID), - Id2 = riak_cs_utils:md5(druuid:v4()), + Id2 = riak_cs_utils:md5(uuid:get_v4()), riak_cs_utils:binary_to_hexlist( iolist_to_binary(<< Id1:Bytes/binary, Id2:Bytes/binary >>)). @@ -264,7 +264,7 @@ generate_canonical_id(KeyID) -> -spec generate_key(binary()) -> [byte()]. generate_key(UserName) -> Ctx = crypto:hmac_init(sha, UserName), - Ctx1 = crypto:hmac_update(Ctx, druuid:v4()), + Ctx1 = crypto:hmac_update(Ctx, uuid:get_v4()), Key = crypto:hmac_final_n(Ctx1, 15), string:to_upper(base64url:encode_to_string(Key)). @@ -276,7 +276,7 @@ generate_secret(UserName, Key) -> Ctx1 = crypto:hmac_update(Ctx, list_to_binary(Key)), SecretPart1 = crypto:hmac_final_n(Ctx1, Bytes), Ctx2 = crypto:hmac_init(sha, UserName), - Ctx3 = crypto:hmac_update(Ctx2, druuid:v4()), + Ctx3 = crypto:hmac_update(Ctx2, uuid:get_v4()), SecretPart2 = crypto:hmac_final_n(Ctx3, Bytes), base64url:encode_to_string( iolist_to_binary(<< SecretPart1:Bytes/binary, diff --git a/src/riak_cs_yessir_riak_client.erl b/src/riak_cs_yessir_riak_client.erl index a706ceab2..52f4d821d 100644 --- a/src/riak_cs_yessir_riak_client.erl +++ b/src/riak_cs_yessir_riak_client.erl @@ -214,7 +214,7 @@ new_manifest(BucketName, Key, ContentLength, Acl) -> bkey = {BucketName, Key}, metadata = [], created = riak_cs_wm_utils:iso_8601_datetime(), - uuid = druuid:v4(), + uuid = uuid:get_v4(), content_length = ContentLength, content_type = <<"application/octet-stream">>, diff --git a/test/riak_cs_delete_deadlock.erl b/test/riak_cs_delete_deadlock.erl index 7bb0afa15..727a55333 100644 --- a/test/riak_cs_delete_deadlock.erl +++ b/test/riak_cs_delete_deadlock.erl @@ -125,7 +125,7 @@ process_part(Part) -> Part?PART_MANIFEST{part_number = choose(1,1000)}. g_uuid() -> - noshrink(eqc_gen:bind(eqc_gen:bool(), fun(_) -> druuid:v4_str() end)). + noshrink(eqc_gen:bind(eqc_gen:bool(), fun(_) -> uuid:get_v4() end)). not_empty(G) -> ?SUCHTHAT(X, G, X /= [] andalso X /= <<>>). diff --git a/test/riak_cs_dummy_reader.erl b/test/riak_cs_dummy_reader.erl index c35668de7..263a2cd25 100644 --- a/test/riak_cs_dummy_reader.erl +++ b/test/riak_cs_dummy_reader.erl @@ -100,7 +100,7 @@ handle_call(get_manifest, _From, #state{bucket=Bucket, Manifest = riak_cs_lfs_utils:new_manifest( Bucket, Key, - druuid:v4(), + uuid:get_v4(), ContentLength, "application/test", <<"md5">>, diff --git a/test/riak_cs_manifest_utils_eqc.erl b/test/riak_cs_manifest_utils_eqc.erl index caf00c6b7..3dee5e707 100644 --- a/test/riak_cs_manifest_utils_eqc.erl +++ b/test/riak_cs_manifest_utils_eqc.erl @@ -73,7 +73,7 @@ cleanup(_) -> prop_active_manifests() -> ?FORALL(Manifests, eqc_gen:resize(50, manifests()), begin - AlteredManifests = lists:map(fun(M) -> M?MANIFEST{uuid=druuid:v4()} end, Manifests), + AlteredManifests = lists:map(fun(M) -> M?MANIFEST{uuid = uuid:get_v4()} end, Manifests), AsDict = orddict:from_list([{M?MANIFEST.uuid, M} || M <- AlteredManifests]), ToGcUUIDs = lists:sort(riak_cs_manifest_utils:deleted_while_writing(AsDict)), Active = riak_cs_manifest_utils:active_manifest(AsDict), @@ -101,7 +101,7 @@ prop_prune_manifests() -> ?FORALL({Manifests, MaxCount}, {eqc_gen:resize(50, manifests()), frequency([{9, nat()}, {1, 'unlimited'}])}, begin - AlteredManifests = lists:map(fun(M) -> M?MANIFEST{uuid=druuid:v4()} end, Manifests), + AlteredManifests = lists:map(fun(M) -> M?MANIFEST{uuid = uuid:get_v4()} end, Manifests), AsDict = orddict:from_list([{M?MANIFEST.uuid, M} || M <- AlteredManifests]), NowTime = {-1, -1, -1}, case MaxCount of diff --git a/test/riak_cs_storage_mr_test.erl b/test/riak_cs_storage_mr_test.erl index 045b90fef..19833c122 100644 --- a/test/riak_cs_storage_mr_test.erl +++ b/test/riak_cs_storage_mr_test.erl @@ -135,7 +135,7 @@ bucket_summary_map_test_() -> ]. m() -> - ?MANIFEST{uuid=druuid:v4(), + ?MANIFEST{uuid=uuid:get_v4(), content_length=0, write_start_time={1200, 0, 0}, block_size=riak_cs_lfs_utils:block_size()}. From 29ef5b04f32f5d8451e5b3b5b54851e51e91fb1d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 16 Mar 2021 04:51:57 +0200 Subject: [PATCH 051/831] organize app files under apps/riac_cs --- apps/riak_cs/ebin | 1 - apps/riak_cs/include | 1 - {include => apps/riak_cs/include}/list_objects.hrl | 0 {include => apps/riak_cs/include}/oos_api.hrl | 0 {include => apps/riak_cs/include}/riak_cs.hrl | 0 {include => apps/riak_cs/include}/riak_cs_api.hrl | 0 {include => apps/riak_cs/include}/riak_cs_gc.hrl | 0 {include => apps/riak_cs/include}/rts.hrl | 0 {include => apps/riak_cs/include}/s3_api.hrl | 0 apps/riak_cs/priv | 1 - {priv => apps/riak_cs/priv}/tools/internal/README.md | 0 {priv => apps/riak_cs/priv}/tools/internal/block_audit.erl | 0 .../riak_cs/priv}/tools/internal/ensure_orphan_blocks.erl | 0 {priv => apps/riak_cs/priv}/tools/internal/offline_delete.erl | 0 {priv => apps/riak_cs/priv}/tools/internal/riak_cs_inspector.erl | 0 {priv => apps/riak_cs/priv}/tools/internal/select_gc_bucket.erl | 0 {priv => apps/riak_cs/priv}/tools/repair_gc_bucket.erl | 0 apps/riak_cs/src | 1 - {src => apps/riak_cs/src}/base64url.erl | 0 {src => apps/riak_cs/src}/riak_cs.app.src | 1 - {src => apps/riak_cs/src}/riak_cs_access.erl | 0 {src => apps/riak_cs/src}/riak_cs_access_archiver.erl | 0 {src => apps/riak_cs/src}/riak_cs_access_archiver_manager.erl | 0 {src => apps/riak_cs/src}/riak_cs_access_console.erl | 0 {src => apps/riak_cs/src}/riak_cs_access_log_handler.erl | 0 {src => apps/riak_cs/src}/riak_cs_acl.erl | 0 {src => apps/riak_cs/src}/riak_cs_acl_utils.erl | 0 {src => apps/riak_cs/src}/riak_cs_api.erl | 0 {src => apps/riak_cs/src}/riak_cs_app.erl | 0 {src => apps/riak_cs/src}/riak_cs_auth.erl | 0 {src => apps/riak_cs/src}/riak_cs_block_server.erl | 0 {src => apps/riak_cs/src}/riak_cs_bucket.erl | 0 {src => apps/riak_cs/src}/riak_cs_config.erl | 0 {src => apps/riak_cs/src}/riak_cs_console.erl | 0 {src => apps/riak_cs/src}/riak_cs_copy_object.erl | 0 {src => apps/riak_cs/src}/riak_cs_delete_fsm.erl | 0 {src => apps/riak_cs/src}/riak_cs_delete_fsm_sup.erl | 0 {src => apps/riak_cs/src}/riak_cs_diags.erl | 0 {src => apps/riak_cs/src}/riak_cs_dtrace.erl | 0 {src => apps/riak_cs/src}/riak_cs_gc.erl | 0 {src => apps/riak_cs/src}/riak_cs_gc_batch.erl | 0 {src => apps/riak_cs/src}/riak_cs_gc_console.erl | 0 {src => apps/riak_cs/src}/riak_cs_gc_key_list.erl | 0 {src => apps/riak_cs/src}/riak_cs_gc_manager.erl | 0 {src => apps/riak_cs/src}/riak_cs_gc_worker.erl | 0 {src => apps/riak_cs/src}/riak_cs_get_fsm.erl | 0 {src => apps/riak_cs/src}/riak_cs_get_fsm_sup.erl | 0 {src => apps/riak_cs/src}/riak_cs_json.erl | 0 {src => apps/riak_cs/src}/riak_cs_keystone_auth.erl | 0 {src => apps/riak_cs/src}/riak_cs_kv_multi_backend.erl | 0 {src => apps/riak_cs/src}/riak_cs_lfs_utils.erl | 0 {src => apps/riak_cs/src}/riak_cs_list_objects.erl | 0 {src => apps/riak_cs/src}/riak_cs_list_objects_ets_cache.erl | 0 {src => apps/riak_cs/src}/riak_cs_list_objects_ets_cache_sup.erl | 0 {src => apps/riak_cs/src}/riak_cs_list_objects_fsm.erl | 0 {src => apps/riak_cs/src}/riak_cs_list_objects_fsm_v2.erl | 0 {src => apps/riak_cs/src}/riak_cs_list_objects_utils.erl | 0 {src => apps/riak_cs/src}/riak_cs_manifest.erl | 0 {src => apps/riak_cs/src}/riak_cs_manifest_fsm.erl | 0 {src => apps/riak_cs/src}/riak_cs_manifest_resolution.erl | 0 {src => apps/riak_cs/src}/riak_cs_manifest_utils.erl | 0 {src => apps/riak_cs/src}/riak_cs_mb_helper.erl | 0 {src => apps/riak_cs/src}/riak_cs_mp_utils.erl | 0 {src => apps/riak_cs/src}/riak_cs_oos_response.erl | 0 {src => apps/riak_cs/src}/riak_cs_oos_rewrite.erl | 0 {src => apps/riak_cs/src}/riak_cs_oos_utils.erl | 0 {src => apps/riak_cs/src}/riak_cs_pbc.erl | 0 {src => apps/riak_cs/src}/riak_cs_policy.erl | 0 {src => apps/riak_cs/src}/riak_cs_put_fsm.erl | 0 {src => apps/riak_cs/src}/riak_cs_put_fsm_sup.erl | 0 {src => apps/riak_cs/src}/riak_cs_quota.erl | 0 {src => apps/riak_cs/src}/riak_cs_quota_sup.erl | 0 {src => apps/riak_cs/src}/riak_cs_riak_client.erl | 0 {src => apps/riak_cs/src}/riak_cs_riakc_pool_worker.erl | 0 {src => apps/riak_cs/src}/riak_cs_s3_auth.erl | 0 {src => apps/riak_cs/src}/riak_cs_s3_passthru_auth.erl | 0 {src => apps/riak_cs/src}/riak_cs_s3_policy.erl | 0 {src => apps/riak_cs/src}/riak_cs_s3_response.erl | 0 {src => apps/riak_cs/src}/riak_cs_s3_rewrite.erl | 0 {src => apps/riak_cs/src}/riak_cs_s3_rewrite_legacy.erl | 0 {src => apps/riak_cs/src}/riak_cs_simple_bwlimiter.erl | 0 {src => apps/riak_cs/src}/riak_cs_simple_quota.erl | 0 {src => apps/riak_cs/src}/riak_cs_stanchion_console.erl | 0 {src => apps/riak_cs/src}/riak_cs_stats.erl | 0 {src => apps/riak_cs/src}/riak_cs_storage.erl | 0 {src => apps/riak_cs/src}/riak_cs_storage_console.erl | 0 {src => apps/riak_cs/src}/riak_cs_storage_d.erl | 0 {src => apps/riak_cs/src}/riak_cs_storage_mr.erl | 0 {src => apps/riak_cs/src}/riak_cs_sup.erl | 0 {src => apps/riak_cs/src}/riak_cs_user.erl | 0 {src => apps/riak_cs/src}/riak_cs_utils.erl | 0 {src => apps/riak_cs/src}/riak_cs_web.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_bucket.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_bucket_acl.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_bucket_delete.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_bucket_location.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_bucket_policy.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_bucket_request_payment.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_bucket_uploads.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_bucket_versioning.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_buckets.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_common.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_error_handler.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_not_implemented.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_object.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_object_acl.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_object_upload.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_object_upload_part.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_objects.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_ping.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_stats.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_usage.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_user.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_users.erl | 0 {src => apps/riak_cs/src}/riak_cs_wm_utils.erl | 0 {src => apps/riak_cs/src}/riak_cs_xml.erl | 0 {src => apps/riak_cs/src}/riak_cs_yessir_riak_client.erl | 0 {src => apps/riak_cs/src}/rts.erl | 0 {src => apps/riak_cs/src}/table.erl | 0 {src => apps/riak_cs/src}/twop_set.erl | 0 {src => apps/riak_cs/src}/velvet.erl | 0 {src => apps/riak_cs/src}/velvet_auth.erl | 0 {test => apps/riak_cs/test}/cs782_regression_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_acl_utils_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_bucket_name_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_bucket_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_config_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_delete_deadlock.erl | 0 {test => apps/riak_cs/test}/riak_cs_dummy_reader.erl | 0 .../riak_cs/test}/riak_cs_dummy_riak_client_list_objects_v2.erl | 0 {test => apps/riak_cs/test}/riak_cs_gc_manager_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_gc_single_run_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_gen.erl | 0 {test => apps/riak_cs/test}/riak_cs_get_fsm_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_get_fsm_pulse.erl | 0 {test => apps/riak_cs/test}/riak_cs_lfs_utils_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_lfs_utils_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_list_objects_fsm_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_list_objects_fsm_v2_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_list_objects_utils_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_manifest_resolution_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_manifest_utils_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_s3_auth_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_s3_auth_v4_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_s3_policy_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_s3_policy_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_s3_rewrite_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_s3_rewrite_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_storage_mr_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_utils_eqc.erl | 0 {test => apps/riak_cs/test}/riak_cs_wm_bucket_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_wm_key_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_wm_service_test.erl | 0 {test => apps/riak_cs/test}/riak_cs_wm_test_utils.erl | 0 {test => apps/riak_cs/test}/riak_object.erl | 0 {test => apps/riak_cs/test}/riak_socket_dummy.erl | 0 {test => apps/riak_cs/test}/riakc_pb_socket_fake.erl | 0 {test => apps/riak_cs/test}/twop_set_eqc.erl | 0 158 files changed, 5 deletions(-) delete mode 120000 apps/riak_cs/ebin delete mode 120000 apps/riak_cs/include rename {include => apps/riak_cs/include}/list_objects.hrl (100%) rename {include => apps/riak_cs/include}/oos_api.hrl (100%) rename {include => apps/riak_cs/include}/riak_cs.hrl (100%) rename {include => apps/riak_cs/include}/riak_cs_api.hrl (100%) rename {include => apps/riak_cs/include}/riak_cs_gc.hrl (100%) rename {include => apps/riak_cs/include}/rts.hrl (100%) rename {include => apps/riak_cs/include}/s3_api.hrl (100%) delete mode 120000 apps/riak_cs/priv rename {priv => apps/riak_cs/priv}/tools/internal/README.md (100%) rename {priv => apps/riak_cs/priv}/tools/internal/block_audit.erl (100%) rename {priv => apps/riak_cs/priv}/tools/internal/ensure_orphan_blocks.erl (100%) rename {priv => apps/riak_cs/priv}/tools/internal/offline_delete.erl (100%) rename {priv => apps/riak_cs/priv}/tools/internal/riak_cs_inspector.erl (100%) rename {priv => apps/riak_cs/priv}/tools/internal/select_gc_bucket.erl (100%) rename {priv => apps/riak_cs/priv}/tools/repair_gc_bucket.erl (100%) delete mode 120000 apps/riak_cs/src rename {src => apps/riak_cs/src}/base64url.erl (100%) rename {src => apps/riak_cs/src}/riak_cs.app.src (96%) rename {src => apps/riak_cs/src}/riak_cs_access.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_access_archiver.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_access_archiver_manager.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_access_console.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_access_log_handler.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_acl.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_acl_utils.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_api.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_app.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_auth.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_block_server.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_bucket.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_config.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_console.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_copy_object.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_delete_fsm.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_delete_fsm_sup.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_diags.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_dtrace.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_gc.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_gc_batch.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_gc_console.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_gc_key_list.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_gc_manager.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_gc_worker.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_get_fsm.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_get_fsm_sup.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_json.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_keystone_auth.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_kv_multi_backend.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_lfs_utils.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_list_objects.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_list_objects_ets_cache.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_list_objects_ets_cache_sup.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_list_objects_fsm.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_list_objects_fsm_v2.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_list_objects_utils.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_manifest.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_manifest_fsm.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_manifest_resolution.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_manifest_utils.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_mb_helper.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_mp_utils.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_oos_response.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_oos_rewrite.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_oos_utils.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_pbc.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_policy.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_put_fsm.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_put_fsm_sup.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_quota.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_quota_sup.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_riak_client.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_riakc_pool_worker.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_s3_auth.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_s3_passthru_auth.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_s3_policy.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_s3_response.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_s3_rewrite.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_s3_rewrite_legacy.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_simple_bwlimiter.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_simple_quota.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_stanchion_console.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_stats.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_storage.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_storage_console.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_storage_d.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_storage_mr.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_sup.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_user.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_utils.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_web.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_bucket.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_bucket_acl.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_bucket_delete.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_bucket_location.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_bucket_policy.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_bucket_request_payment.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_bucket_uploads.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_bucket_versioning.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_buckets.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_common.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_error_handler.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_not_implemented.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_object.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_object_acl.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_object_upload.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_object_upload_part.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_objects.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_ping.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_stats.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_usage.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_user.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_users.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_wm_utils.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_xml.erl (100%) rename {src => apps/riak_cs/src}/riak_cs_yessir_riak_client.erl (100%) rename {src => apps/riak_cs/src}/rts.erl (100%) rename {src => apps/riak_cs/src}/table.erl (100%) rename {src => apps/riak_cs/src}/twop_set.erl (100%) rename {src => apps/riak_cs/src}/velvet.erl (100%) rename {src => apps/riak_cs/src}/velvet_auth.erl (100%) rename {test => apps/riak_cs/test}/cs782_regression_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_acl_utils_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_bucket_name_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_bucket_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_config_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_delete_deadlock.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_dummy_reader.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_dummy_riak_client_list_objects_v2.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_gc_manager_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_gc_single_run_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_gen.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_get_fsm_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_get_fsm_pulse.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_lfs_utils_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_lfs_utils_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_list_objects_fsm_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_list_objects_fsm_v2_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_list_objects_utils_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_manifest_resolution_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_manifest_utils_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_s3_auth_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_s3_auth_v4_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_s3_policy_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_s3_policy_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_s3_rewrite_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_s3_rewrite_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_storage_mr_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_utils_eqc.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_wm_bucket_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_wm_key_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_wm_service_test.erl (100%) rename {test => apps/riak_cs/test}/riak_cs_wm_test_utils.erl (100%) rename {test => apps/riak_cs/test}/riak_object.erl (100%) rename {test => apps/riak_cs/test}/riak_socket_dummy.erl (100%) rename {test => apps/riak_cs/test}/riakc_pb_socket_fake.erl (100%) rename {test => apps/riak_cs/test}/twop_set_eqc.erl (100%) diff --git a/apps/riak_cs/ebin b/apps/riak_cs/ebin deleted file mode 120000 index 4037435d7..000000000 --- a/apps/riak_cs/ebin +++ /dev/null @@ -1 +0,0 @@ -../../ebin/ \ No newline at end of file diff --git a/apps/riak_cs/include b/apps/riak_cs/include deleted file mode 120000 index 3611dd266..000000000 --- a/apps/riak_cs/include +++ /dev/null @@ -1 +0,0 @@ -../../include/ \ No newline at end of file diff --git a/include/list_objects.hrl b/apps/riak_cs/include/list_objects.hrl similarity index 100% rename from include/list_objects.hrl rename to apps/riak_cs/include/list_objects.hrl diff --git a/include/oos_api.hrl b/apps/riak_cs/include/oos_api.hrl similarity index 100% rename from include/oos_api.hrl rename to apps/riak_cs/include/oos_api.hrl diff --git a/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl similarity index 100% rename from include/riak_cs.hrl rename to apps/riak_cs/include/riak_cs.hrl diff --git a/include/riak_cs_api.hrl b/apps/riak_cs/include/riak_cs_api.hrl similarity index 100% rename from include/riak_cs_api.hrl rename to apps/riak_cs/include/riak_cs_api.hrl diff --git a/include/riak_cs_gc.hrl b/apps/riak_cs/include/riak_cs_gc.hrl similarity index 100% rename from include/riak_cs_gc.hrl rename to apps/riak_cs/include/riak_cs_gc.hrl diff --git a/include/rts.hrl b/apps/riak_cs/include/rts.hrl similarity index 100% rename from include/rts.hrl rename to apps/riak_cs/include/rts.hrl diff --git a/include/s3_api.hrl b/apps/riak_cs/include/s3_api.hrl similarity index 100% rename from include/s3_api.hrl rename to apps/riak_cs/include/s3_api.hrl diff --git a/apps/riak_cs/priv b/apps/riak_cs/priv deleted file mode 120000 index e38c3d37a..000000000 --- a/apps/riak_cs/priv +++ /dev/null @@ -1 +0,0 @@ -../../priv \ No newline at end of file diff --git a/priv/tools/internal/README.md b/apps/riak_cs/priv/tools/internal/README.md similarity index 100% rename from priv/tools/internal/README.md rename to apps/riak_cs/priv/tools/internal/README.md diff --git a/priv/tools/internal/block_audit.erl b/apps/riak_cs/priv/tools/internal/block_audit.erl similarity index 100% rename from priv/tools/internal/block_audit.erl rename to apps/riak_cs/priv/tools/internal/block_audit.erl diff --git a/priv/tools/internal/ensure_orphan_blocks.erl b/apps/riak_cs/priv/tools/internal/ensure_orphan_blocks.erl similarity index 100% rename from priv/tools/internal/ensure_orphan_blocks.erl rename to apps/riak_cs/priv/tools/internal/ensure_orphan_blocks.erl diff --git a/priv/tools/internal/offline_delete.erl b/apps/riak_cs/priv/tools/internal/offline_delete.erl similarity index 100% rename from priv/tools/internal/offline_delete.erl rename to apps/riak_cs/priv/tools/internal/offline_delete.erl diff --git a/priv/tools/internal/riak_cs_inspector.erl b/apps/riak_cs/priv/tools/internal/riak_cs_inspector.erl similarity index 100% rename from priv/tools/internal/riak_cs_inspector.erl rename to apps/riak_cs/priv/tools/internal/riak_cs_inspector.erl diff --git a/priv/tools/internal/select_gc_bucket.erl b/apps/riak_cs/priv/tools/internal/select_gc_bucket.erl similarity index 100% rename from priv/tools/internal/select_gc_bucket.erl rename to apps/riak_cs/priv/tools/internal/select_gc_bucket.erl diff --git a/priv/tools/repair_gc_bucket.erl b/apps/riak_cs/priv/tools/repair_gc_bucket.erl similarity index 100% rename from priv/tools/repair_gc_bucket.erl rename to apps/riak_cs/priv/tools/repair_gc_bucket.erl diff --git a/apps/riak_cs/src b/apps/riak_cs/src deleted file mode 120000 index a8d2a6755..000000000 --- a/apps/riak_cs/src +++ /dev/null @@ -1 +0,0 @@ -../../src/ \ No newline at end of file diff --git a/src/base64url.erl b/apps/riak_cs/src/base64url.erl similarity index 100% rename from src/base64url.erl rename to apps/riak_cs/src/base64url.erl diff --git a/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src similarity index 96% rename from src/riak_cs.app.src rename to apps/riak_cs/src/riak_cs.app.src index eb7b7a776..84ba95c19 100644 --- a/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -13,7 +13,6 @@ mochiweb, webmachine, poolboy, - lager, cluster_info, exometer_core ]}, diff --git a/src/riak_cs_access.erl b/apps/riak_cs/src/riak_cs_access.erl similarity index 100% rename from src/riak_cs_access.erl rename to apps/riak_cs/src/riak_cs_access.erl diff --git a/src/riak_cs_access_archiver.erl b/apps/riak_cs/src/riak_cs_access_archiver.erl similarity index 100% rename from src/riak_cs_access_archiver.erl rename to apps/riak_cs/src/riak_cs_access_archiver.erl diff --git a/src/riak_cs_access_archiver_manager.erl b/apps/riak_cs/src/riak_cs_access_archiver_manager.erl similarity index 100% rename from src/riak_cs_access_archiver_manager.erl rename to apps/riak_cs/src/riak_cs_access_archiver_manager.erl diff --git a/src/riak_cs_access_console.erl b/apps/riak_cs/src/riak_cs_access_console.erl similarity index 100% rename from src/riak_cs_access_console.erl rename to apps/riak_cs/src/riak_cs_access_console.erl diff --git a/src/riak_cs_access_log_handler.erl b/apps/riak_cs/src/riak_cs_access_log_handler.erl similarity index 100% rename from src/riak_cs_access_log_handler.erl rename to apps/riak_cs/src/riak_cs_access_log_handler.erl diff --git a/src/riak_cs_acl.erl b/apps/riak_cs/src/riak_cs_acl.erl similarity index 100% rename from src/riak_cs_acl.erl rename to apps/riak_cs/src/riak_cs_acl.erl diff --git a/src/riak_cs_acl_utils.erl b/apps/riak_cs/src/riak_cs_acl_utils.erl similarity index 100% rename from src/riak_cs_acl_utils.erl rename to apps/riak_cs/src/riak_cs_acl_utils.erl diff --git a/src/riak_cs_api.erl b/apps/riak_cs/src/riak_cs_api.erl similarity index 100% rename from src/riak_cs_api.erl rename to apps/riak_cs/src/riak_cs_api.erl diff --git a/src/riak_cs_app.erl b/apps/riak_cs/src/riak_cs_app.erl similarity index 100% rename from src/riak_cs_app.erl rename to apps/riak_cs/src/riak_cs_app.erl diff --git a/src/riak_cs_auth.erl b/apps/riak_cs/src/riak_cs_auth.erl similarity index 100% rename from src/riak_cs_auth.erl rename to apps/riak_cs/src/riak_cs_auth.erl diff --git a/src/riak_cs_block_server.erl b/apps/riak_cs/src/riak_cs_block_server.erl similarity index 100% rename from src/riak_cs_block_server.erl rename to apps/riak_cs/src/riak_cs_block_server.erl diff --git a/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl similarity index 100% rename from src/riak_cs_bucket.erl rename to apps/riak_cs/src/riak_cs_bucket.erl diff --git a/src/riak_cs_config.erl b/apps/riak_cs/src/riak_cs_config.erl similarity index 100% rename from src/riak_cs_config.erl rename to apps/riak_cs/src/riak_cs_config.erl diff --git a/src/riak_cs_console.erl b/apps/riak_cs/src/riak_cs_console.erl similarity index 100% rename from src/riak_cs_console.erl rename to apps/riak_cs/src/riak_cs_console.erl diff --git a/src/riak_cs_copy_object.erl b/apps/riak_cs/src/riak_cs_copy_object.erl similarity index 100% rename from src/riak_cs_copy_object.erl rename to apps/riak_cs/src/riak_cs_copy_object.erl diff --git a/src/riak_cs_delete_fsm.erl b/apps/riak_cs/src/riak_cs_delete_fsm.erl similarity index 100% rename from src/riak_cs_delete_fsm.erl rename to apps/riak_cs/src/riak_cs_delete_fsm.erl diff --git a/src/riak_cs_delete_fsm_sup.erl b/apps/riak_cs/src/riak_cs_delete_fsm_sup.erl similarity index 100% rename from src/riak_cs_delete_fsm_sup.erl rename to apps/riak_cs/src/riak_cs_delete_fsm_sup.erl diff --git a/src/riak_cs_diags.erl b/apps/riak_cs/src/riak_cs_diags.erl similarity index 100% rename from src/riak_cs_diags.erl rename to apps/riak_cs/src/riak_cs_diags.erl diff --git a/src/riak_cs_dtrace.erl b/apps/riak_cs/src/riak_cs_dtrace.erl similarity index 100% rename from src/riak_cs_dtrace.erl rename to apps/riak_cs/src/riak_cs_dtrace.erl diff --git a/src/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl similarity index 100% rename from src/riak_cs_gc.erl rename to apps/riak_cs/src/riak_cs_gc.erl diff --git a/src/riak_cs_gc_batch.erl b/apps/riak_cs/src/riak_cs_gc_batch.erl similarity index 100% rename from src/riak_cs_gc_batch.erl rename to apps/riak_cs/src/riak_cs_gc_batch.erl diff --git a/src/riak_cs_gc_console.erl b/apps/riak_cs/src/riak_cs_gc_console.erl similarity index 100% rename from src/riak_cs_gc_console.erl rename to apps/riak_cs/src/riak_cs_gc_console.erl diff --git a/src/riak_cs_gc_key_list.erl b/apps/riak_cs/src/riak_cs_gc_key_list.erl similarity index 100% rename from src/riak_cs_gc_key_list.erl rename to apps/riak_cs/src/riak_cs_gc_key_list.erl diff --git a/src/riak_cs_gc_manager.erl b/apps/riak_cs/src/riak_cs_gc_manager.erl similarity index 100% rename from src/riak_cs_gc_manager.erl rename to apps/riak_cs/src/riak_cs_gc_manager.erl diff --git a/src/riak_cs_gc_worker.erl b/apps/riak_cs/src/riak_cs_gc_worker.erl similarity index 100% rename from src/riak_cs_gc_worker.erl rename to apps/riak_cs/src/riak_cs_gc_worker.erl diff --git a/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl similarity index 100% rename from src/riak_cs_get_fsm.erl rename to apps/riak_cs/src/riak_cs_get_fsm.erl diff --git a/src/riak_cs_get_fsm_sup.erl b/apps/riak_cs/src/riak_cs_get_fsm_sup.erl similarity index 100% rename from src/riak_cs_get_fsm_sup.erl rename to apps/riak_cs/src/riak_cs_get_fsm_sup.erl diff --git a/src/riak_cs_json.erl b/apps/riak_cs/src/riak_cs_json.erl similarity index 100% rename from src/riak_cs_json.erl rename to apps/riak_cs/src/riak_cs_json.erl diff --git a/src/riak_cs_keystone_auth.erl b/apps/riak_cs/src/riak_cs_keystone_auth.erl similarity index 100% rename from src/riak_cs_keystone_auth.erl rename to apps/riak_cs/src/riak_cs_keystone_auth.erl diff --git a/src/riak_cs_kv_multi_backend.erl b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl similarity index 100% rename from src/riak_cs_kv_multi_backend.erl rename to apps/riak_cs/src/riak_cs_kv_multi_backend.erl diff --git a/src/riak_cs_lfs_utils.erl b/apps/riak_cs/src/riak_cs_lfs_utils.erl similarity index 100% rename from src/riak_cs_lfs_utils.erl rename to apps/riak_cs/src/riak_cs_lfs_utils.erl diff --git a/src/riak_cs_list_objects.erl b/apps/riak_cs/src/riak_cs_list_objects.erl similarity index 100% rename from src/riak_cs_list_objects.erl rename to apps/riak_cs/src/riak_cs_list_objects.erl diff --git a/src/riak_cs_list_objects_ets_cache.erl b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl similarity index 100% rename from src/riak_cs_list_objects_ets_cache.erl rename to apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl diff --git a/src/riak_cs_list_objects_ets_cache_sup.erl b/apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl similarity index 100% rename from src/riak_cs_list_objects_ets_cache_sup.erl rename to apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl diff --git a/src/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl similarity index 100% rename from src/riak_cs_list_objects_fsm.erl rename to apps/riak_cs/src/riak_cs_list_objects_fsm.erl diff --git a/src/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl similarity index 100% rename from src/riak_cs_list_objects_fsm_v2.erl rename to apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl diff --git a/src/riak_cs_list_objects_utils.erl b/apps/riak_cs/src/riak_cs_list_objects_utils.erl similarity index 100% rename from src/riak_cs_list_objects_utils.erl rename to apps/riak_cs/src/riak_cs_list_objects_utils.erl diff --git a/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl similarity index 100% rename from src/riak_cs_manifest.erl rename to apps/riak_cs/src/riak_cs_manifest.erl diff --git a/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl similarity index 100% rename from src/riak_cs_manifest_fsm.erl rename to apps/riak_cs/src/riak_cs_manifest_fsm.erl diff --git a/src/riak_cs_manifest_resolution.erl b/apps/riak_cs/src/riak_cs_manifest_resolution.erl similarity index 100% rename from src/riak_cs_manifest_resolution.erl rename to apps/riak_cs/src/riak_cs_manifest_resolution.erl diff --git a/src/riak_cs_manifest_utils.erl b/apps/riak_cs/src/riak_cs_manifest_utils.erl similarity index 100% rename from src/riak_cs_manifest_utils.erl rename to apps/riak_cs/src/riak_cs_manifest_utils.erl diff --git a/src/riak_cs_mb_helper.erl b/apps/riak_cs/src/riak_cs_mb_helper.erl similarity index 100% rename from src/riak_cs_mb_helper.erl rename to apps/riak_cs/src/riak_cs_mb_helper.erl diff --git a/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl similarity index 100% rename from src/riak_cs_mp_utils.erl rename to apps/riak_cs/src/riak_cs_mp_utils.erl diff --git a/src/riak_cs_oos_response.erl b/apps/riak_cs/src/riak_cs_oos_response.erl similarity index 100% rename from src/riak_cs_oos_response.erl rename to apps/riak_cs/src/riak_cs_oos_response.erl diff --git a/src/riak_cs_oos_rewrite.erl b/apps/riak_cs/src/riak_cs_oos_rewrite.erl similarity index 100% rename from src/riak_cs_oos_rewrite.erl rename to apps/riak_cs/src/riak_cs_oos_rewrite.erl diff --git a/src/riak_cs_oos_utils.erl b/apps/riak_cs/src/riak_cs_oos_utils.erl similarity index 100% rename from src/riak_cs_oos_utils.erl rename to apps/riak_cs/src/riak_cs_oos_utils.erl diff --git a/src/riak_cs_pbc.erl b/apps/riak_cs/src/riak_cs_pbc.erl similarity index 100% rename from src/riak_cs_pbc.erl rename to apps/riak_cs/src/riak_cs_pbc.erl diff --git a/src/riak_cs_policy.erl b/apps/riak_cs/src/riak_cs_policy.erl similarity index 100% rename from src/riak_cs_policy.erl rename to apps/riak_cs/src/riak_cs_policy.erl diff --git a/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl similarity index 100% rename from src/riak_cs_put_fsm.erl rename to apps/riak_cs/src/riak_cs_put_fsm.erl diff --git a/src/riak_cs_put_fsm_sup.erl b/apps/riak_cs/src/riak_cs_put_fsm_sup.erl similarity index 100% rename from src/riak_cs_put_fsm_sup.erl rename to apps/riak_cs/src/riak_cs_put_fsm_sup.erl diff --git a/src/riak_cs_quota.erl b/apps/riak_cs/src/riak_cs_quota.erl similarity index 100% rename from src/riak_cs_quota.erl rename to apps/riak_cs/src/riak_cs_quota.erl diff --git a/src/riak_cs_quota_sup.erl b/apps/riak_cs/src/riak_cs_quota_sup.erl similarity index 100% rename from src/riak_cs_quota_sup.erl rename to apps/riak_cs/src/riak_cs_quota_sup.erl diff --git a/src/riak_cs_riak_client.erl b/apps/riak_cs/src/riak_cs_riak_client.erl similarity index 100% rename from src/riak_cs_riak_client.erl rename to apps/riak_cs/src/riak_cs_riak_client.erl diff --git a/src/riak_cs_riakc_pool_worker.erl b/apps/riak_cs/src/riak_cs_riakc_pool_worker.erl similarity index 100% rename from src/riak_cs_riakc_pool_worker.erl rename to apps/riak_cs/src/riak_cs_riakc_pool_worker.erl diff --git a/src/riak_cs_s3_auth.erl b/apps/riak_cs/src/riak_cs_s3_auth.erl similarity index 100% rename from src/riak_cs_s3_auth.erl rename to apps/riak_cs/src/riak_cs_s3_auth.erl diff --git a/src/riak_cs_s3_passthru_auth.erl b/apps/riak_cs/src/riak_cs_s3_passthru_auth.erl similarity index 100% rename from src/riak_cs_s3_passthru_auth.erl rename to apps/riak_cs/src/riak_cs_s3_passthru_auth.erl diff --git a/src/riak_cs_s3_policy.erl b/apps/riak_cs/src/riak_cs_s3_policy.erl similarity index 100% rename from src/riak_cs_s3_policy.erl rename to apps/riak_cs/src/riak_cs_s3_policy.erl diff --git a/src/riak_cs_s3_response.erl b/apps/riak_cs/src/riak_cs_s3_response.erl similarity index 100% rename from src/riak_cs_s3_response.erl rename to apps/riak_cs/src/riak_cs_s3_response.erl diff --git a/src/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/riak_cs_s3_rewrite.erl similarity index 100% rename from src/riak_cs_s3_rewrite.erl rename to apps/riak_cs/src/riak_cs_s3_rewrite.erl diff --git a/src/riak_cs_s3_rewrite_legacy.erl b/apps/riak_cs/src/riak_cs_s3_rewrite_legacy.erl similarity index 100% rename from src/riak_cs_s3_rewrite_legacy.erl rename to apps/riak_cs/src/riak_cs_s3_rewrite_legacy.erl diff --git a/src/riak_cs_simple_bwlimiter.erl b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl similarity index 100% rename from src/riak_cs_simple_bwlimiter.erl rename to apps/riak_cs/src/riak_cs_simple_bwlimiter.erl diff --git a/src/riak_cs_simple_quota.erl b/apps/riak_cs/src/riak_cs_simple_quota.erl similarity index 100% rename from src/riak_cs_simple_quota.erl rename to apps/riak_cs/src/riak_cs_simple_quota.erl diff --git a/src/riak_cs_stanchion_console.erl b/apps/riak_cs/src/riak_cs_stanchion_console.erl similarity index 100% rename from src/riak_cs_stanchion_console.erl rename to apps/riak_cs/src/riak_cs_stanchion_console.erl diff --git a/src/riak_cs_stats.erl b/apps/riak_cs/src/riak_cs_stats.erl similarity index 100% rename from src/riak_cs_stats.erl rename to apps/riak_cs/src/riak_cs_stats.erl diff --git a/src/riak_cs_storage.erl b/apps/riak_cs/src/riak_cs_storage.erl similarity index 100% rename from src/riak_cs_storage.erl rename to apps/riak_cs/src/riak_cs_storage.erl diff --git a/src/riak_cs_storage_console.erl b/apps/riak_cs/src/riak_cs_storage_console.erl similarity index 100% rename from src/riak_cs_storage_console.erl rename to apps/riak_cs/src/riak_cs_storage_console.erl diff --git a/src/riak_cs_storage_d.erl b/apps/riak_cs/src/riak_cs_storage_d.erl similarity index 100% rename from src/riak_cs_storage_d.erl rename to apps/riak_cs/src/riak_cs_storage_d.erl diff --git a/src/riak_cs_storage_mr.erl b/apps/riak_cs/src/riak_cs_storage_mr.erl similarity index 100% rename from src/riak_cs_storage_mr.erl rename to apps/riak_cs/src/riak_cs_storage_mr.erl diff --git a/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl similarity index 100% rename from src/riak_cs_sup.erl rename to apps/riak_cs/src/riak_cs_sup.erl diff --git a/src/riak_cs_user.erl b/apps/riak_cs/src/riak_cs_user.erl similarity index 100% rename from src/riak_cs_user.erl rename to apps/riak_cs/src/riak_cs_user.erl diff --git a/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl similarity index 100% rename from src/riak_cs_utils.erl rename to apps/riak_cs/src/riak_cs_utils.erl diff --git a/src/riak_cs_web.erl b/apps/riak_cs/src/riak_cs_web.erl similarity index 100% rename from src/riak_cs_web.erl rename to apps/riak_cs/src/riak_cs_web.erl diff --git a/src/riak_cs_wm_bucket.erl b/apps/riak_cs/src/riak_cs_wm_bucket.erl similarity index 100% rename from src/riak_cs_wm_bucket.erl rename to apps/riak_cs/src/riak_cs_wm_bucket.erl diff --git a/src/riak_cs_wm_bucket_acl.erl b/apps/riak_cs/src/riak_cs_wm_bucket_acl.erl similarity index 100% rename from src/riak_cs_wm_bucket_acl.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_acl.erl diff --git a/src/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl similarity index 100% rename from src/riak_cs_wm_bucket_delete.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_delete.erl diff --git a/src/riak_cs_wm_bucket_location.erl b/apps/riak_cs/src/riak_cs_wm_bucket_location.erl similarity index 100% rename from src/riak_cs_wm_bucket_location.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_location.erl diff --git a/src/riak_cs_wm_bucket_policy.erl b/apps/riak_cs/src/riak_cs_wm_bucket_policy.erl similarity index 100% rename from src/riak_cs_wm_bucket_policy.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_policy.erl diff --git a/src/riak_cs_wm_bucket_request_payment.erl b/apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl similarity index 100% rename from src/riak_cs_wm_bucket_request_payment.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl diff --git a/src/riak_cs_wm_bucket_uploads.erl b/apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl similarity index 100% rename from src/riak_cs_wm_bucket_uploads.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl diff --git a/src/riak_cs_wm_bucket_versioning.erl b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl similarity index 100% rename from src/riak_cs_wm_bucket_versioning.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl diff --git a/src/riak_cs_wm_buckets.erl b/apps/riak_cs/src/riak_cs_wm_buckets.erl similarity index 100% rename from src/riak_cs_wm_buckets.erl rename to apps/riak_cs/src/riak_cs_wm_buckets.erl diff --git a/src/riak_cs_wm_common.erl b/apps/riak_cs/src/riak_cs_wm_common.erl similarity index 100% rename from src/riak_cs_wm_common.erl rename to apps/riak_cs/src/riak_cs_wm_common.erl diff --git a/src/riak_cs_wm_error_handler.erl b/apps/riak_cs/src/riak_cs_wm_error_handler.erl similarity index 100% rename from src/riak_cs_wm_error_handler.erl rename to apps/riak_cs/src/riak_cs_wm_error_handler.erl diff --git a/src/riak_cs_wm_not_implemented.erl b/apps/riak_cs/src/riak_cs_wm_not_implemented.erl similarity index 100% rename from src/riak_cs_wm_not_implemented.erl rename to apps/riak_cs/src/riak_cs_wm_not_implemented.erl diff --git a/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl similarity index 100% rename from src/riak_cs_wm_object.erl rename to apps/riak_cs/src/riak_cs_wm_object.erl diff --git a/src/riak_cs_wm_object_acl.erl b/apps/riak_cs/src/riak_cs_wm_object_acl.erl similarity index 100% rename from src/riak_cs_wm_object_acl.erl rename to apps/riak_cs/src/riak_cs_wm_object_acl.erl diff --git a/src/riak_cs_wm_object_upload.erl b/apps/riak_cs/src/riak_cs_wm_object_upload.erl similarity index 100% rename from src/riak_cs_wm_object_upload.erl rename to apps/riak_cs/src/riak_cs_wm_object_upload.erl diff --git a/src/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl similarity index 100% rename from src/riak_cs_wm_object_upload_part.erl rename to apps/riak_cs/src/riak_cs_wm_object_upload_part.erl diff --git a/src/riak_cs_wm_objects.erl b/apps/riak_cs/src/riak_cs_wm_objects.erl similarity index 100% rename from src/riak_cs_wm_objects.erl rename to apps/riak_cs/src/riak_cs_wm_objects.erl diff --git a/src/riak_cs_wm_ping.erl b/apps/riak_cs/src/riak_cs_wm_ping.erl similarity index 100% rename from src/riak_cs_wm_ping.erl rename to apps/riak_cs/src/riak_cs_wm_ping.erl diff --git a/src/riak_cs_wm_stats.erl b/apps/riak_cs/src/riak_cs_wm_stats.erl similarity index 100% rename from src/riak_cs_wm_stats.erl rename to apps/riak_cs/src/riak_cs_wm_stats.erl diff --git a/src/riak_cs_wm_usage.erl b/apps/riak_cs/src/riak_cs_wm_usage.erl similarity index 100% rename from src/riak_cs_wm_usage.erl rename to apps/riak_cs/src/riak_cs_wm_usage.erl diff --git a/src/riak_cs_wm_user.erl b/apps/riak_cs/src/riak_cs_wm_user.erl similarity index 100% rename from src/riak_cs_wm_user.erl rename to apps/riak_cs/src/riak_cs_wm_user.erl diff --git a/src/riak_cs_wm_users.erl b/apps/riak_cs/src/riak_cs_wm_users.erl similarity index 100% rename from src/riak_cs_wm_users.erl rename to apps/riak_cs/src/riak_cs_wm_users.erl diff --git a/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl similarity index 100% rename from src/riak_cs_wm_utils.erl rename to apps/riak_cs/src/riak_cs_wm_utils.erl diff --git a/src/riak_cs_xml.erl b/apps/riak_cs/src/riak_cs_xml.erl similarity index 100% rename from src/riak_cs_xml.erl rename to apps/riak_cs/src/riak_cs_xml.erl diff --git a/src/riak_cs_yessir_riak_client.erl b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl similarity index 100% rename from src/riak_cs_yessir_riak_client.erl rename to apps/riak_cs/src/riak_cs_yessir_riak_client.erl diff --git a/src/rts.erl b/apps/riak_cs/src/rts.erl similarity index 100% rename from src/rts.erl rename to apps/riak_cs/src/rts.erl diff --git a/src/table.erl b/apps/riak_cs/src/table.erl similarity index 100% rename from src/table.erl rename to apps/riak_cs/src/table.erl diff --git a/src/twop_set.erl b/apps/riak_cs/src/twop_set.erl similarity index 100% rename from src/twop_set.erl rename to apps/riak_cs/src/twop_set.erl diff --git a/src/velvet.erl b/apps/riak_cs/src/velvet.erl similarity index 100% rename from src/velvet.erl rename to apps/riak_cs/src/velvet.erl diff --git a/src/velvet_auth.erl b/apps/riak_cs/src/velvet_auth.erl similarity index 100% rename from src/velvet_auth.erl rename to apps/riak_cs/src/velvet_auth.erl diff --git a/test/cs782_regression_test.erl b/apps/riak_cs/test/cs782_regression_test.erl similarity index 100% rename from test/cs782_regression_test.erl rename to apps/riak_cs/test/cs782_regression_test.erl diff --git a/test/riak_cs_acl_utils_eqc.erl b/apps/riak_cs/test/riak_cs_acl_utils_eqc.erl similarity index 100% rename from test/riak_cs_acl_utils_eqc.erl rename to apps/riak_cs/test/riak_cs_acl_utils_eqc.erl diff --git a/test/riak_cs_bucket_name_test.erl b/apps/riak_cs/test/riak_cs_bucket_name_test.erl similarity index 100% rename from test/riak_cs_bucket_name_test.erl rename to apps/riak_cs/test/riak_cs_bucket_name_test.erl diff --git a/test/riak_cs_bucket_test.erl b/apps/riak_cs/test/riak_cs_bucket_test.erl similarity index 100% rename from test/riak_cs_bucket_test.erl rename to apps/riak_cs/test/riak_cs_bucket_test.erl diff --git a/test/riak_cs_config_test.erl b/apps/riak_cs/test/riak_cs_config_test.erl similarity index 100% rename from test/riak_cs_config_test.erl rename to apps/riak_cs/test/riak_cs_config_test.erl diff --git a/test/riak_cs_delete_deadlock.erl b/apps/riak_cs/test/riak_cs_delete_deadlock.erl similarity index 100% rename from test/riak_cs_delete_deadlock.erl rename to apps/riak_cs/test/riak_cs_delete_deadlock.erl diff --git a/test/riak_cs_dummy_reader.erl b/apps/riak_cs/test/riak_cs_dummy_reader.erl similarity index 100% rename from test/riak_cs_dummy_reader.erl rename to apps/riak_cs/test/riak_cs_dummy_reader.erl diff --git a/test/riak_cs_dummy_riak_client_list_objects_v2.erl b/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl similarity index 100% rename from test/riak_cs_dummy_riak_client_list_objects_v2.erl rename to apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl diff --git a/test/riak_cs_gc_manager_eqc.erl b/apps/riak_cs/test/riak_cs_gc_manager_eqc.erl similarity index 100% rename from test/riak_cs_gc_manager_eqc.erl rename to apps/riak_cs/test/riak_cs_gc_manager_eqc.erl diff --git a/test/riak_cs_gc_single_run_eqc.erl b/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl similarity index 100% rename from test/riak_cs_gc_single_run_eqc.erl rename to apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl diff --git a/test/riak_cs_gen.erl b/apps/riak_cs/test/riak_cs_gen.erl similarity index 100% rename from test/riak_cs_gen.erl rename to apps/riak_cs/test/riak_cs_gen.erl diff --git a/test/riak_cs_get_fsm_eqc.erl b/apps/riak_cs/test/riak_cs_get_fsm_eqc.erl similarity index 100% rename from test/riak_cs_get_fsm_eqc.erl rename to apps/riak_cs/test/riak_cs_get_fsm_eqc.erl diff --git a/test/riak_cs_get_fsm_pulse.erl b/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl similarity index 100% rename from test/riak_cs_get_fsm_pulse.erl rename to apps/riak_cs/test/riak_cs_get_fsm_pulse.erl diff --git a/test/riak_cs_lfs_utils_eqc.erl b/apps/riak_cs/test/riak_cs_lfs_utils_eqc.erl similarity index 100% rename from test/riak_cs_lfs_utils_eqc.erl rename to apps/riak_cs/test/riak_cs_lfs_utils_eqc.erl diff --git a/test/riak_cs_lfs_utils_test.erl b/apps/riak_cs/test/riak_cs_lfs_utils_test.erl similarity index 100% rename from test/riak_cs_lfs_utils_test.erl rename to apps/riak_cs/test/riak_cs_lfs_utils_test.erl diff --git a/test/riak_cs_list_objects_fsm_eqc.erl b/apps/riak_cs/test/riak_cs_list_objects_fsm_eqc.erl similarity index 100% rename from test/riak_cs_list_objects_fsm_eqc.erl rename to apps/riak_cs/test/riak_cs_list_objects_fsm_eqc.erl diff --git a/test/riak_cs_list_objects_fsm_v2_eqc.erl b/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl similarity index 100% rename from test/riak_cs_list_objects_fsm_v2_eqc.erl rename to apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl diff --git a/test/riak_cs_list_objects_utils_test.erl b/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl similarity index 100% rename from test/riak_cs_list_objects_utils_test.erl rename to apps/riak_cs/test/riak_cs_list_objects_utils_test.erl diff --git a/test/riak_cs_manifest_resolution_eqc.erl b/apps/riak_cs/test/riak_cs_manifest_resolution_eqc.erl similarity index 100% rename from test/riak_cs_manifest_resolution_eqc.erl rename to apps/riak_cs/test/riak_cs_manifest_resolution_eqc.erl diff --git a/test/riak_cs_manifest_utils_eqc.erl b/apps/riak_cs/test/riak_cs_manifest_utils_eqc.erl similarity index 100% rename from test/riak_cs_manifest_utils_eqc.erl rename to apps/riak_cs/test/riak_cs_manifest_utils_eqc.erl diff --git a/test/riak_cs_s3_auth_eqc.erl b/apps/riak_cs/test/riak_cs_s3_auth_eqc.erl similarity index 100% rename from test/riak_cs_s3_auth_eqc.erl rename to apps/riak_cs/test/riak_cs_s3_auth_eqc.erl diff --git a/test/riak_cs_s3_auth_v4_test.erl b/apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl similarity index 100% rename from test/riak_cs_s3_auth_v4_test.erl rename to apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl diff --git a/test/riak_cs_s3_policy_eqc.erl b/apps/riak_cs/test/riak_cs_s3_policy_eqc.erl similarity index 100% rename from test/riak_cs_s3_policy_eqc.erl rename to apps/riak_cs/test/riak_cs_s3_policy_eqc.erl diff --git a/test/riak_cs_s3_policy_test.erl b/apps/riak_cs/test/riak_cs_s3_policy_test.erl similarity index 100% rename from test/riak_cs_s3_policy_test.erl rename to apps/riak_cs/test/riak_cs_s3_policy_test.erl diff --git a/test/riak_cs_s3_rewrite_eqc.erl b/apps/riak_cs/test/riak_cs_s3_rewrite_eqc.erl similarity index 100% rename from test/riak_cs_s3_rewrite_eqc.erl rename to apps/riak_cs/test/riak_cs_s3_rewrite_eqc.erl diff --git a/test/riak_cs_s3_rewrite_test.erl b/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl similarity index 100% rename from test/riak_cs_s3_rewrite_test.erl rename to apps/riak_cs/test/riak_cs_s3_rewrite_test.erl diff --git a/test/riak_cs_storage_mr_test.erl b/apps/riak_cs/test/riak_cs_storage_mr_test.erl similarity index 100% rename from test/riak_cs_storage_mr_test.erl rename to apps/riak_cs/test/riak_cs_storage_mr_test.erl diff --git a/test/riak_cs_utils_eqc.erl b/apps/riak_cs/test/riak_cs_utils_eqc.erl similarity index 100% rename from test/riak_cs_utils_eqc.erl rename to apps/riak_cs/test/riak_cs_utils_eqc.erl diff --git a/test/riak_cs_wm_bucket_test.erl b/apps/riak_cs/test/riak_cs_wm_bucket_test.erl similarity index 100% rename from test/riak_cs_wm_bucket_test.erl rename to apps/riak_cs/test/riak_cs_wm_bucket_test.erl diff --git a/test/riak_cs_wm_key_test.erl b/apps/riak_cs/test/riak_cs_wm_key_test.erl similarity index 100% rename from test/riak_cs_wm_key_test.erl rename to apps/riak_cs/test/riak_cs_wm_key_test.erl diff --git a/test/riak_cs_wm_service_test.erl b/apps/riak_cs/test/riak_cs_wm_service_test.erl similarity index 100% rename from test/riak_cs_wm_service_test.erl rename to apps/riak_cs/test/riak_cs_wm_service_test.erl diff --git a/test/riak_cs_wm_test_utils.erl b/apps/riak_cs/test/riak_cs_wm_test_utils.erl similarity index 100% rename from test/riak_cs_wm_test_utils.erl rename to apps/riak_cs/test/riak_cs_wm_test_utils.erl diff --git a/test/riak_object.erl b/apps/riak_cs/test/riak_object.erl similarity index 100% rename from test/riak_object.erl rename to apps/riak_cs/test/riak_object.erl diff --git a/test/riak_socket_dummy.erl b/apps/riak_cs/test/riak_socket_dummy.erl similarity index 100% rename from test/riak_socket_dummy.erl rename to apps/riak_cs/test/riak_socket_dummy.erl diff --git a/test/riakc_pb_socket_fake.erl b/apps/riak_cs/test/riakc_pb_socket_fake.erl similarity index 100% rename from test/riakc_pb_socket_fake.erl rename to apps/riak_cs/test/riakc_pb_socket_fake.erl diff --git a/test/twop_set_eqc.erl b/apps/riak_cs/test/twop_set_eqc.erl similarity index 100% rename from test/twop_set_eqc.erl rename to apps/riak_cs/test/twop_set_eqc.erl From 26085c273906502508d6988a492de5a3ed9fe8c9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 16 Mar 2021 04:52:38 +0200 Subject: [PATCH 052/831] borrow rel/pkg from riak --- rel/pkg/Makefile | 91 ++++++++++++++++ rel/pkg/deb/Makefile | 27 +++++ rel/pkg/deb/debian/compat | 1 + rel/pkg/deb/debian/control | 13 +++ rel/pkg/deb/debian/copyright | 4 + rel/pkg/deb/debian/dirs | 2 + rel/pkg/deb/debian/install | 8 ++ rel/pkg/deb/debian/postinst | 44 ++++++++ rel/pkg/deb/debian/postrm | 61 +++++++++++ rel/pkg/deb/debian/riak.manpages | 1 + rel/pkg/deb/debian/riak.riak.init | 152 ++++++++++++++++++++++++++ rel/pkg/deb/debian/riak.riak.service | 14 +++ rel/pkg/deb/debian/rules | 58 ++++++++++ rel/pkg/deb/debian/vars.config | 60 +++++++++++ rel/pkg/out/.gitignore | 4 + rel/pkg/rpm/Makefile | 24 +++++ rel/pkg/rpm/init.script | 149 ++++++++++++++++++++++++++ rel/pkg/rpm/riak | 17 +++ rel/pkg/rpm/specfile | 154 +++++++++++++++++++++++++++ rel/pkg/rpm/vars.config | 60 +++++++++++ 20 files changed, 944 insertions(+) create mode 100644 rel/pkg/Makefile create mode 100644 rel/pkg/deb/Makefile create mode 100644 rel/pkg/deb/debian/compat create mode 100644 rel/pkg/deb/debian/control create mode 100644 rel/pkg/deb/debian/copyright create mode 100644 rel/pkg/deb/debian/dirs create mode 100644 rel/pkg/deb/debian/install create mode 100755 rel/pkg/deb/debian/postinst create mode 100755 rel/pkg/deb/debian/postrm create mode 100644 rel/pkg/deb/debian/riak.manpages create mode 100755 rel/pkg/deb/debian/riak.riak.init create mode 100644 rel/pkg/deb/debian/riak.riak.service create mode 100755 rel/pkg/deb/debian/rules create mode 100644 rel/pkg/deb/debian/vars.config create mode 100644 rel/pkg/out/.gitignore create mode 100644 rel/pkg/rpm/Makefile create mode 100755 rel/pkg/rpm/init.script create mode 100755 rel/pkg/rpm/riak create mode 100644 rel/pkg/rpm/specfile create mode 100644 rel/pkg/rpm/vars.config diff --git a/rel/pkg/Makefile b/rel/pkg/Makefile new file mode 100644 index 000000000..95658db8d --- /dev/null +++ b/rel/pkg/Makefile @@ -0,0 +1,91 @@ +## +## Export all variables to sub-invocation +## +export + +OS = $(shell uname -s) +ERLANG_BIN ?= $(shell dirname $(shell which erl)) +DEPS_DIR ?= deps + +## +## Support RPM and Debian based linux systems +## +ifeq ($(OS),Linux) +ARCH = $(shell uname -m) +ISRPM = $(shell cat /etc/redhat-release 2> /dev/null) +ISDEB = $(shell cat /etc/debian_version 2> /dev/null) +ISSLES = $(shell cat /etc/SuSE-release 2> /dev/null) +ifneq ($(ISRPM),) +OSNAME = RedHat +PKGERDIR = rpm +BUILDDIR = rpmbuild +else +ifneq ($(ISDEB),) +OSNAME = Debian +PKGERDIR = deb +BUILDDIR = debuild +else +ifneq ($(ISSLES),) +OSNAME = SLES +PKGERDIR = rpm +BUILDDIR = rpmbuild +endif # SLES +endif # deb +endif # rpm +endif # linux + +ifeq ($(OS),Darwin) # OSX +OSNAME = OSX +ARCH = $(shell file `which erlc` | grep -c x86_64 2> /dev/null | awk \ + '{if ($$1 == "0") {print "i386"} else {print "x86_64"}}') +PKGERDIR = osx +BUILDDIR = osxbuild +endif + +ifeq ($(OS),FreeBSD) +OSNAME = FreeBSD +ARCH = $(shell uname -m) +BUILDDIR = fbsdbuild +PKGNG = $(shell uname -r | awk -F. '{ print ($$1 > 9) ? "true" : "false" }') +ifeq ($(PKGNG),true) # FreeBSD 10.0 or greater +PKGERDIR = fbsdng +else # Older FreeBSD pkg_add +PKGERDIR = fbsd +endif +endif + +ifeq ($(OS),SunOS) # Solaris flavors +KERNELVER = $(shell uname -v | grep -c joyent 2> /dev/null) +ARCH = $(shell file `which erlc` | grep -c 64-bit 2> /dev/null | awk \ + '{if ($$1 == "0") {print "i386"} else {print "x86_64"}}') + +ifneq ($(KERNELVER),0) # SmartOS +OSNAME = SmartOS +PKGERDIR = smartos +BUILDDIR = smartosbuild +else # Solaris / OmniOS +DISTRO = $(shell head -1 /etc/release|awk \ + '{if ($$1 == "OmniOS") {print $$1} else {print "Solaris"}}') +OSNAME = ${DISTRO} +PKGERDIR = solaris +BUILDDIR = solarisbuild +endif + +endif + +DATE = $(shell date +%Y-%m-%d) + +# Default the package build version to 1 if not already set +PKG_BUILD ?= 1 + +.PHONY: ostype varcheck + +## Call platform dependent makefile +ostype: varcheck + $(if $(PKGERDIR),,$(error "Operating system '$(OS)' not supported by node_package")) + $(MAKE) -C $(BASE_DIR)/rel/pkg/out/riak-$(PKG_ID) -f $(BASE_DIR)/rel/pkg/$(PKGERDIR)/Makefile + +## Check required settings before continuing +varcheck: + $(if $(PKG_VERSION),,$(error "Variable PKG_VERSION must be set and exported, see basho/node_package readme")) + $(if $(PKG_ID),,$(error "Variable PKG_ID must be set and exported, see basho/node_package readme")) diff --git a/rel/pkg/deb/Makefile b/rel/pkg/deb/Makefile new file mode 100644 index 000000000..780de4a9a --- /dev/null +++ b/rel/pkg/deb/Makefile @@ -0,0 +1,27 @@ +export + +TAR_VERSION = $(shell git describe --tags | sed -e 's/\([0-9.]*\-[0-9]*\)-.*/\1/') + +default: + mkdir -p $(BASE_DIR)/rel/pkg/out/$(PKG_ID)/debian + cp -R $(BASE_DIR)/rel/pkg/deb/debian/* $(BASE_DIR)/rel/pkg/out/$(PKG_ID)/debian + + tar -xf $(BASE_DIR)/rel/pkg/out/$(PKG_ID).tar.gz -C $(BASE_DIR)/rel/pkg/out/$(PKG_ID)/ + ln -sf $(BASE_DIR)/rel/pkg/out/$(PKG_ID).tar.gz $(BASE_DIR)/rel/pkg/out/$(TAR_VERSION).orig.tar.gz + + cd $(BASE_DIR)/rel/pkg/out/$(PKG_ID)/; \ + echo $(shell pwd); \ + dch --create --package riak -v "$(PKG_VERSION)" \ + "Build from $(PKG_ID)";\ + debuild --prepend-path=$(ERLANG_BIN) \ + -e REVISION=$(PKG_VERSION) \ + -e RELEASE=$(PKG_BUILD) \ + -e REBAR=$(REBAR) \ + -i -uc -us -b + + mkdir -p $(BASE_DIR)/rel/pkg/packages + cd $(BASE_DIR)/rel/pkg/out && mv *.deb ../packages + cd $(BASE_DIR)/rel/pkg/packages && \ + for debfile in *.deb; do \ + sha256sum $${debfile} > $${debfile}.sha \ + ; done diff --git a/rel/pkg/deb/debian/compat b/rel/pkg/deb/debian/compat new file mode 100644 index 000000000..7f8f011eb --- /dev/null +++ b/rel/pkg/deb/debian/compat @@ -0,0 +1 @@ +7 diff --git a/rel/pkg/deb/debian/control b/rel/pkg/deb/debian/control new file mode 100644 index 000000000..49244e1be --- /dev/null +++ b/rel/pkg/deb/debian/control @@ -0,0 +1,13 @@ +Source: riak +Section: net +Priority: extra +Maintainer: packaging +Build-Depends: debhelper (>= 7) +Standards-Version: 3.9.3 +Homepage: riak.com + +Package: riak +Architecture: any +Depends: ${misc:Depends}, ${shlibs:Depends}, adduser, logrotate, sudo +Homepage: riak.com +Description: Riak KV Database diff --git a/rel/pkg/deb/debian/copyright b/rel/pkg/deb/debian/copyright new file mode 100644 index 000000000..28d10fb6d --- /dev/null +++ b/rel/pkg/deb/debian/copyright @@ -0,0 +1,4 @@ +Format: http://dep.debian.net/deps/dep5 +Upstream-Name: riak +Upstream-Contact: packaging@riak.com + diff --git a/rel/pkg/deb/debian/dirs b/rel/pkg/deb/debian/dirs new file mode 100644 index 000000000..588cf1aa7 --- /dev/null +++ b/rel/pkg/deb/debian/dirs @@ -0,0 +1,2 @@ +etc/logrotate.d +var/log/riak diff --git a/rel/pkg/deb/debian/install b/rel/pkg/deb/debian/install new file mode 100644 index 000000000..18904d00f --- /dev/null +++ b/rel/pkg/deb/debian/install @@ -0,0 +1,8 @@ +rel/riak/lib usr/lib/riak +rel/riak/share usr/lib/riak +rel/riak/erts* usr/lib/riak +rel/riak/releases usr/lib/riak +rel/riak/bin usr/lib/riak +rel/riak/etc/* etc/riak +rel/riak/data/* var/lib/riak +rel/riak/usr/bin/* usr/sbin diff --git a/rel/pkg/deb/debian/postinst b/rel/pkg/deb/debian/postinst new file mode 100755 index 000000000..35d487a9f --- /dev/null +++ b/rel/pkg/deb/debian/postinst @@ -0,0 +1,44 @@ +#!/bin/sh +# postinst script for Riak +# +# see: dh_installdeb(1) + +set -e + +# create group +if ! getent group riak >/dev/null; then + addgroup --system riak +fi + +# create user +if ! getent passwd riak >/dev/null; then + adduser --ingroup riak \ + --home /var/lib/riak \ + --disabled-password \ + --system --shell /bin/bash --no-create-home \ + --gecos "Riak KV Database" riak +fi + +for i in lib log; do + chown -R riak:riak /var/$i/riak +done + +case "$1" in + configure) + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/rel/pkg/deb/debian/postrm b/rel/pkg/deb/debian/postrm new file mode 100755 index 000000000..2fc8de5b5 --- /dev/null +++ b/rel/pkg/deb/debian/postrm @@ -0,0 +1,61 @@ +#!/bin/sh +# postrm script for Riak +# +# see: dh_installdeb(1) + + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + +set -e + +case "$1" in + purge) + rm -f /etc/default/riak + if [ -d /var/log/riak ]; then + rm -r /var/log/riak + fi + if [ -d /var/run/riak ]; then + rm -r /var/run/riak + fi + if [ -d /etc/riak ]; then + rm -r /etc/riak + fi + if [ -e /etc/init.d/riak ]; then + rm /etc/init.d/riak + fi + # Remove User & Group, killing any process owned by them + if getent passwd riak >/dev/null; then + pkill -u riak || true + deluser --quiet --system riak + fi + if getent group riak >/dev/null; then + delgroup --quiet --system --only-if-empty riak || true + fi + ;; + + remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument \`$1\`" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/rel/pkg/deb/debian/riak.manpages b/rel/pkg/deb/debian/riak.manpages new file mode 100644 index 000000000..e3db37c1b --- /dev/null +++ b/rel/pkg/deb/debian/riak.manpages @@ -0,0 +1 @@ +doc/man/man1/*.1.gz \ No newline at end of file diff --git a/rel/pkg/deb/debian/riak.riak.init b/rel/pkg/deb/debian/riak.riak.init new file mode 100755 index 000000000..3405ea0e6 --- /dev/null +++ b/rel/pkg/deb/debian/riak.riak.init @@ -0,0 +1,152 @@ +#! /bin/bash +### BEGIN INIT INFO +# Provides: riak +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Riak KV Database +# Description: Riak KV Database +### END INIT INFO + +NAME=riak +DAEMON=/usr/sbin/$NAME +SCRIPTNAME=/etc/init.d/$NAME +RUNDIR=/var/run/$NAME + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh +. /lib/lsb/init-functions + +# `service` strips all environmental VARS so +# if no HOME was set in /etc/default/$NAME then set one here +# to the data directory for erlexec's sake +if [ -z "$HOME" ]; then + export HOME="/var/lib/riak" +fi + +# +# Function that starts the daemon/service +# +do_start() +{ + if [ ! -d $RUNDIR ]; then + mkdir $RUNDIR + chown riak:riak $RUNDIR + fi + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + + # Startup with the appropriate user + start-stop-daemon --start \ + --name riak \ + --user riak \ + --exec $DAEMON -- start \ + || return 2 +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Identify the erts directory + ERTS_PATH=`$DAEMON ertspath` + + # Attempt a clean shutdown. + $DAEMON stop + + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + # Make sure it's down by using a more direct approach + start-stop-daemon --stop \ + --quiet \ + --retry=TERM/30/KILL/5 \ + --user riak \ + --exec $ERTS_PATH/run_erl + return $? +} + +# +# Function that graceful reload the daemon/service +# +do_reload() { + # Restart the VM without exiting the process + $DAEMON restart && return $? || return 2 +} + +# Checks the status of a node +do_status() { + $DAEMON ping && echo $"$NAME is running" && return 0 + echo $"$NAME is stopped" && return 2 +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $NAME" + $DAEMON ping >/dev/null 2>&1 && echo $"$NAME is already running" && exit 0 + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 + exit 1 + ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 + exit 1 + ;; + esac + ;; + ping) + # See if the VM is alive + $DAEMON ping || exit $? + ;; + reload|force-reload) + log_daemon_msg "Reloading $NAME" + do_reload + ES=$? + log_end_msg $ES + exit $ES + ;; + restart) + log_daemon_msg "Restarting $NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 && exit 1 ;; # Old process is still running + *) log_end_msg 1 && exit 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 && exit 1 + ;; + esac + ;; + status) + do_status && exit 0 || exit $? + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|ping|restart|force-reload|status}" >&2 + exit 3 + ;; +esac + +: diff --git a/rel/pkg/deb/debian/riak.riak.service b/rel/pkg/deb/debian/riak.riak.service new file mode 100644 index 000000000..4fa022264 --- /dev/null +++ b/rel/pkg/deb/debian/riak.riak.service @@ -0,0 +1,14 @@ +[Unit] +Description=Riak KV Database + +[Service] +User=riak +ExecStart=/usr/sbin/riak start +ExecStop=/usr/sbin/riak stop +Type=forking +PIDFile=/run/riak/riak.pid +EnvironmentFile=-/etc/default/riak +RuntimeDirectory=riak + +[Install] +WantedBy=multi-user.target diff --git a/rel/pkg/deb/debian/rules b/rel/pkg/deb/debian/rules new file mode 100755 index 000000000..082a39c12 --- /dev/null +++ b/rel/pkg/deb/debian/rules @@ -0,0 +1,58 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# modified for node_package by dizzyd@basho.com and jared@basho.com + +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 + +ROOTDIR := debian/riak + +## Clear variables that may confound our build of sub-projects; also +## note that it is necessary to use overlay_vars relative to .. as +## the generate command EXECUTES in rel/ +build: + unset CC CFLAGS CPPFLAGS LDFLAGS CXX CXXFLAGS \ + && make rel-deb + touch build + +clean: + dh_clean + rm -f build + make clean + +## dh_shlibdeps was added to figure out the dependencies on shared libraries +## and will populate the ${shlibs:Depends} callout in the control file +install: LIBDIR := $(ROOTDIR)/usr/lib/riak +install: build + dh_testdir + dh_testroot + dh_prep + dh_installdirs + dh_install + dh_installman + dh_installinit --name=riak --no-start + dh_fixperms + chmod 0755 $(ROOTDIR)/etc/riak + chmod -R a+rX $(ROOTDIR)/etc/riak + chmod -R go+rX debian/riak/usr/lib/riak/lib/ + dh_shlibdeps + +# We have nothing to do by default. +binary-indep: install build-stamp +build-stamp: + +# Build architecture-dependent files here. +binary-arch: install + dh_strip -a + dh_compress -a + dh_installdeb + dh_gencontrol + dh_builddeb + +binary: binary-indep binary-arch diff --git a/rel/pkg/deb/debian/vars.config b/rel/pkg/deb/debian/vars.config new file mode 100644 index 000000000..8f8fa0827 --- /dev/null +++ b/rel/pkg/deb/debian/vars.config @@ -0,0 +1,60 @@ +%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- +%% ex: ft=erlang ts=4 sw=4 et + +%% Platform-specific installation paths +{platform_bin_dir, "/usr/lib/riak/bin"}. +{platform_data_dir, "/var/lib/riak"}. +{platform_etc_dir, "/etc/riak"}. +{platform_base_dir, "/usr/lib/riak"}. +{platform_lib_dir, "/usr/lib/riak/lib"}. +{platform_log_dir, "/var/log/riak"}. +{platform_gen_dir, "/var/lib/riak"}. + +{runner_script_dir, "/usr/lib/riak/bin"}. +{runner_base_dir, "/usr/lib/riak"}. +{runner_etc_dir, "/etc/riak"}. +{runner_log_dir, "/var/log/riak"}. +{runner_user, "riak"}. +{runner_lib_dir, "/usr/lib/riak/lib"}. +{runner_patch_dir, "/usr/lib/riak/lib/patches"}. +{pipe_dir, "/tmp/riak/"}. +{pid_dir, "/run/riak/"}. +{package_replacement_line, ""}. +{package_conflicts_line, ""}. + +{cluster_manager_ip, "127.0.0.1"}. +{cluster_manager_port, 9080}. + +{web_ip, "127.0.0.1"}. +{web_port, 8098}. +{handoff_ip, "0.0.0.0"}. +{handoff_port, 8099}. +{pb_ip, "127.0.0.1"}. +{pb_port, 8087}. + +{storage_backend, "bitcask"}. + +{sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. +{sasl_log_dir, "{{platform_log_dir}}/sasl"}. +{repl_data_root, "{{platform_data_dir}}/riak_repl/"}. +{crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. + +%% +%% cuttlefish +%% +{cuttlefish, "on"}. +{cuttlefish_conf, "riak.conf"}. + +%% +%% yokozuna +%% +{yz_solr_port, 8093}. +{yz_solr_jmx_port, 8985}. + +%% lager +{console_log_default, file}. + +%% +%% etc/vm.args +%% +{node, "riak@127.0.0.1"}. diff --git a/rel/pkg/out/.gitignore b/rel/pkg/out/.gitignore new file mode 100644 index 000000000..5e7d2734c --- /dev/null +++ b/rel/pkg/out/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/rel/pkg/rpm/Makefile b/rel/pkg/rpm/Makefile new file mode 100644 index 000000000..fed36bf7a --- /dev/null +++ b/rel/pkg/rpm/Makefile @@ -0,0 +1,24 @@ + +PWD = $(shell pwd) + + +# No hyphens are allowed in the _version field in RPM +PKG_VERSION_NO_H ?= $(shell echo $(PKG_VERSION) | tr - .) + +default: + rpmbuild --define "_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}$(DISTRO)%%{ARCH}.rpm" \ + --define '_topdir $(BASE_DIR)/rel/pkg/out/' \ + --define '_sourcedir $(BASE_DIR)/rel/pkg/out/' \ + --define '_specdir $(BASE_DIR)/rel/pkg/out/' \ + --define '_rpmdir $(BASE_DIR)/rel/pkg/out/packages' \ + --define '_srcrpmdir $(BASE_DIR)/rel/pkg/out/packages' \ + --define "_revision $(PKG_VERSION)" \ + --define "_version $(PKG_VERSION_NO_H)" \ + --define "_release $(PKG_BUILD)" \ + --define "_tarname $(PKG_ID).tar.gz" \ + --define "_tarname_base $(PKG_ID)" \ + -ba $(BASE_DIR)/rel/pkg/rpm/specfile + cd $(BASE_DIR)/rel/pkg/out/packages && \ + for rpmfile in *.rpm; do \ + sha256sum $${rpmfile} > $${rpmfile}.sha \ + ; done diff --git a/rel/pkg/rpm/init.script b/rel/pkg/rpm/init.script new file mode 100755 index 000000000..ec184dff3 --- /dev/null +++ b/rel/pkg/rpm/init.script @@ -0,0 +1,149 @@ +#!/bin/sh +# +# riak +# +# chkconfig: 2345 80 30 +# description: Riak KV Database +# processname: beam +# + +# Source function library. +. /etc/rc.d/init.d/functions + +RETVAL=0 +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="Riak KV Database" +NAME=riak +DAEMON=/usr/sbin/$NAME +lockfile=/var/lock/subsys/$NAME +pidfile=/var/run/$NAME/$NAME.pid + +# Check for script, config and data dirs +[ -x /usr/sbin/$NAME ] || exit 0 +[ -d /etc/$NAME ] || exit 0 +[ -d /var/lib/$NAME ] || exit 0 + +# Read configuration variable file if it is present and readable +[ -r /etc/sysconfig/$NAME ] && . /etc/sysconfig/$NAME + +# `service` strips all environmental VARS so +# if no HOME was set in /etc/sysconfig/$NAME then set one here +# to the data directory for erlexec's sake +if [ -z "$HOME" ]; then + export HOME={{platform_data_dir}} +fi + +status -p $pidfile -l $(basename $lockfile) $NAME >/dev/null 2>&1 +running=$? + +check_pid_status() { + pid=$(ps ax | grep beam.smp | grep "\-progname $NAME " | awk '{print $1}') + if [ "$pid" = "" ]; then + # prog not running? + return 1 + else + # running + return 0 + fi +} + +start() { + # Start daemons. + echo -n $"Starting riak: " + $DAEMON start + RETVAL=$? + if [ $RETVAL -eq 0 ]; then + touch $lockfile + success + else + failure $"$NAME start" + fi + echo + return $RETVAL +} + +stop() { + # Stop daemon. + echo -n $"Shutting down riak: " + $DAEMON stop 2>/dev/null + for n in $(seq 1 10); do + sleep 1 + check_pid_status + RETVAL=$? + if [ $RETVAL -eq 1 ]; then + break + fi + done + if [ $RETVAL -eq 1 ]; then + rm -f $lockfile $pidfile + success + echo && return 0 + else + failure $"$NAME stop" + echo && return 1 + fi +} + +hardstop() { + echo -n $"Shutting down $NAME: " + su - riak -c "ps -ef | grep beam.smp | grep '\-progname $NAME ' | grep -v grep | awk '{print \$2}' | xargs kill -9" + for n in $(seq 1 10); do + sleep 1 + check_pid_status + RETVAL=$? + if [ $RETVAL -eq 1 ]; then + break + fi + done + if [ $RETVAL -eq 1 ]; then + rm -f $lockfile $pidfile + success + echo && return 0 + else + failure $"$NAME hardstop" + echo && return 1 + fi +} + +# See how we were called. +case "$1" in + start) + [ $running -eq 0 ] && exit 0 + start + ;; + stop) + if [ $running -eq 0 ]; then + stop + else + check_pid_status + RETVAL=$? + if [ $RETVAL -eq 1 ]; then + rm -f $lockfile $pidfile + fi + exit 0 + fi + ;; + restart|force-reload) + [ $running -eq 0 ] && stop + start + ;; + hardstop) + [ $running -eq 0 ] || exit 0 + hardstop + ;; + condrestart|try-restart) + [ $running -eq 0 ] || exit 0 + restart + ;; + status) + status -p $pidfile -l $(basename $lockfile) $NAME + ;; + ping) + $DAEMON ping || exit $? + ;; + *) + echo $"Usage: $0 {start|stop|restart|force-reload|hardstop|condrestart|try-restart|status|ping}" + exit 1 +esac + +exit $? diff --git a/rel/pkg/rpm/riak b/rel/pkg/rpm/riak new file mode 100755 index 000000000..3a6372f53 --- /dev/null +++ b/rel/pkg/rpm/riak @@ -0,0 +1,17 @@ +#!/bin/sh + +COMMAND={{platform_bin_dir}}/riak + +if [[ $EUID -ne 0 ]]; then + echo "You need to be root or use sudo to run this command." + exit 1 +fi + +case "$1" in + start|console|foreground) + su - riak -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches" + ;; + *) + su - riak -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*}" + ;; +esac diff --git a/rel/pkg/rpm/specfile b/rel/pkg/rpm/specfile new file mode 100644 index 000000000..58a3a3d1f --- /dev/null +++ b/rel/pkg/rpm/specfile @@ -0,0 +1,154 @@ +## ------------------------------------------------------------------- +## +## Copyright (c) 2014 Basho Technologies, Inc. +## +## This file is provided to you under the Apache License, +## Version 2.0 (the "License"); you may not use this file +## except in compliance with the License. You may obtain +## a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, +## software distributed under the License is distributed on an +## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +## KIND, either express or implied. See the License for the +## specific language governing permissions and limitations +## under the License. +## +## ------------------------------------------------------------------- + +Name: riak +Version: %{_version} +Release: %{_release}%{?dist} +License: "Apacke 2.0" +Group: Development/Libraries +Source: %{_tarname} +URL: "https://riak.com" +Vendor: "Riak" +Packager: "Riak Package Maint" <"packaging@riak.com"> +BuildRoot: %{_tmppath}/%{name}-%{_revision}-%{release}-root +Summary: "Riak is a distributed data store" +Obsoletes: riak + +%description +"Riak is a distributed data store" + +%define init_script %{_sysconfdir}/init.d/riak +%define debug_package %{nil} +%define __prelink_undo_cmd /bin/cat prelink library + +%define platform_data_dir %{_localstatedir}/lib/riak +%define platform_etc_dir %{_sysconfdir}/riak +%define platform_base_dir %{_libdir}/riak +%define platform_bin_dir %{platform_base_dir}/bin +%define platform_lib_dir %{platform_base_dir}/lib +%define platform_log_dir %{_localstatedir}/log/riak + + +%prep +%setup -q -n %{_tarname_base} -c %{_tarname_base} + +# Setup vars.config like other platforms, but do it inside of spec file +cat > rpm.vars.config </dev/null 2>&1; then + groupadd -r riak +fi + +if getent passwd riak >/dev/null 2>&1; then + usermod -d %{_localstatedir}/lib/riak riak || true +else + useradd -r -g riak \ + --home %{_localstatedir}/lib/riak \ + --comment "Riak User" \ + --shell /bin/bash \ + riak +fi + + +%post +# Post Installation Script +# For distros with SELinux (RHEL/Fedora) +if [ `which selinuxenabled > /dev/null 2>&1` ] ; then + # Fixup perms for SELinux (if it is enabled) + selinuxenabled && find %{_localstatedir}/lib/riak -name "*.so" -exec chcon -t textrel_shlib_t {} \; +fi + +%preun +# Pre-uninstall script + +# Only on uninstall, not upgrades +if [ "$1" = 0 ] ; then + /sbin/service riak stop > /dev/null 2>&1 +fi +exit 0 + + +# Man pages are optional and might be missing, read from file +%files +%defattr(-,riak,riak) +%{_localstatedir}/lib/riak +%{_localstatedir}/log/riak +%{_libdir}/* +%defattr(-,root,root) +%{_sysconfdir}/init.d/riak +%dir %{_sysconfdir}/riak +/usr/sbin/* +%config(noreplace) %{_sysconfdir}/riak/* + +%clean +rm -rf %{buildroot} diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config new file mode 100644 index 000000000..c2c590e02 --- /dev/null +++ b/rel/pkg/rpm/vars.config @@ -0,0 +1,60 @@ +%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- +%% ex: ft=erlang ts=4 sw=4 et + +%% Platform-specific installation paths +{platform_bin_dir, "/usr/lib64/riak/bin"}. +{platform_data_dir, "/var/lib/riak"}. +{platform_etc_dir, "/etc/riak"}. +{platform_base_dir, "/usr/lib64/riak"}. +{platform_lib_dir, "/usr/lib64/riak/lib"}. +{platform_log_dir, "/var/log/riak"}. +{platform_gen_dir, "/var/lib/riak"}. + +{runner_script_dir, "/usr/lib64/riak/bin"}. +{runner_base_dir, "/usr/lib64/riak"}. +{runner_etc_dir, "/etc/riak"}. +{runner_log_dir, "/var/log/riak"}. +{runner_user, "riak"}. +{runner_lib_dir, "/usr/lib64/riak/lib"}. +{runner_patch_dir, "/usr/lib64/riak/lib/patches"}. +{pipe_dir, "/tmp/riak/"}. +{pid_dir, "/var/run/riak"}. +{package_replacement_line, ""}. +{package_conflicts_line, ""}. + +{cluster_manager_ip, "127.0.0.1"}. +{cluster_manager_port, 9080}. + +{web_ip, "127.0.0.1"}. +{web_port, 8098}. +{handoff_ip, "0.0.0.0"}. +{handoff_port, 8099}. +{pb_ip, "127.0.0.1"}. +{pb_port, 8087}. + +{storage_backend, "bitcask"}. + +{sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. +{sasl_log_dir, "{{platform_log_dir}}/sasl"}. +{repl_data_root, "{{platform_data_dir}}/riak_repl/"}. +{crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. + +%% +%% cuttlefish +%% +{cuttlefish, "on"}. +{cuttlefish_conf, "riak.conf"}. + +%% +%% yokozuna +%% +{yz_solr_port, 8093}. +{yz_solr_jmx_port, 8985}. + +%% lager +{console_log_default, file}. + +%% +%% etc/vm.args +%% +{node, "riak@127.0.0.1"}. From 52dcd8e90f30d89f8f8606853a83c647c9974255 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 16 Mar 2021 04:53:16 +0200 Subject: [PATCH 053/831] WIP migration to rebar3/relx --- rebar | Bin 166103 -> 0 bytes rebar.config | 148 +++++++++++++++++++++++++++++++-------------- rel/rebar.config | 4 -- rel/reltool.config | 86 -------------------------- 4 files changed, 104 insertions(+), 134 deletions(-) delete mode 100755 rebar delete mode 100644 rel/rebar.config delete mode 100644 rel/reltool.config diff --git a/rebar b/rebar deleted file mode 100755 index 60410665adae5ed971d203d5bbcf67ba5009046b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166103 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 z 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 Date: Wed, 17 Mar 2021 04:33:42 +0200 Subject: [PATCH 054/831] s/lager/logger/g in code --- .../priv/tools/internal/block_audit.erl | 8 +-- .../tools/internal/ensure_orphan_blocks.erl | 8 +-- apps/riak_cs/priv/tools/repair_gc_bucket.erl | 9 ++- apps/riak_cs/src/riak_cs_access.erl | 4 +- apps/riak_cs/src/riak_cs_access_archiver.erl | 7 +-- .../src/riak_cs_access_archiver_manager.erl | 19 +++--- .../src/riak_cs_access_log_handler.erl | 16 ++--- apps/riak_cs/src/riak_cs_acl.erl | 22 +++---- apps/riak_cs/src/riak_cs_acl_utils.erl | 44 +++++++------- apps/riak_cs/src/riak_cs_app.erl | 48 +++++++-------- apps/riak_cs/src/riak_cs_block_server.erl | 27 ++++----- apps/riak_cs/src/riak_cs_bucket.erl | 30 +++++----- apps/riak_cs/src/riak_cs_config.erl | 11 ++-- apps/riak_cs/src/riak_cs_console.erl | 41 +++++++------ apps/riak_cs/src/riak_cs_copy_object.erl | 8 +-- apps/riak_cs/src/riak_cs_delete_fsm.erl | 8 +-- apps/riak_cs/src/riak_cs_gc.erl | 21 ++++--- apps/riak_cs/src/riak_cs_gc_batch.erl | 52 ++++++++-------- apps/riak_cs/src/riak_cs_gc_key_list.erl | 14 ++--- apps/riak_cs/src/riak_cs_gc_manager.erl | 17 +++--- apps/riak_cs/src/riak_cs_gc_worker.erl | 8 +-- apps/riak_cs/src/riak_cs_get_fsm.erl | 21 ++++--- apps/riak_cs/src/riak_cs_json.erl | 2 +- apps/riak_cs/src/riak_cs_keystone_auth.erl | 3 +- apps/riak_cs/src/riak_cs_kv_multi_backend.erl | 4 +- apps/riak_cs/src/riak_cs_lfs_utils.erl | 14 ++--- .../src/riak_cs_list_objects_ets_cache.erl | 10 ++-- apps/riak_cs/src/riak_cs_list_objects_fsm.erl | 14 ++--- .../src/riak_cs_list_objects_fsm_v2.erl | 9 ++- apps/riak_cs/src/riak_cs_manifest.erl | 4 +- apps/riak_cs/src/riak_cs_manifest_fsm.erl | 2 +- apps/riak_cs/src/riak_cs_mb_helper.erl | 2 +- apps/riak_cs/src/riak_cs_mp_utils.erl | 8 +-- apps/riak_cs/src/riak_cs_oos_response.erl | 6 +- apps/riak_cs/src/riak_cs_oos_utils.erl | 8 +-- apps/riak_cs/src/riak_cs_pbc.erl | 8 +-- apps/riak_cs/src/riak_cs_put_fsm.erl | 9 ++- apps/riak_cs/src/riak_cs_quota.erl | 4 +- apps/riak_cs/src/riak_cs_riak_client.erl | 2 +- apps/riak_cs/src/riak_cs_s3_auth.erl | 12 ++-- apps/riak_cs/src/riak_cs_s3_policy.erl | 17 +++--- apps/riak_cs/src/riak_cs_s3_response.erl | 8 +-- apps/riak_cs/src/riak_cs_simple_bwlimiter.erl | 22 +++---- apps/riak_cs/src/riak_cs_simple_quota.erl | 14 ++--- .../riak_cs/src/riak_cs_stanchion_console.erl | 2 +- apps/riak_cs/src/riak_cs_stats.erl | 6 +- apps/riak_cs/src/riak_cs_storage.erl | 6 +- apps/riak_cs/src/riak_cs_storage_d.erl | 60 +++++++++---------- apps/riak_cs/src/riak_cs_storage_mr.erl | 7 +-- apps/riak_cs/src/riak_cs_user.erl | 8 +-- apps/riak_cs/src/riak_cs_utils.erl | 15 ++--- apps/riak_cs/src/riak_cs_wm_bucket_delete.erl | 4 +- apps/riak_cs/src/riak_cs_wm_common.erl | 18 +++--- apps/riak_cs/src/riak_cs_wm_object.erl | 10 ++-- .../src/riak_cs_wm_object_upload_part.erl | 10 ++-- apps/riak_cs/src/riak_cs_wm_user.erl | 4 +- apps/riak_cs/src/riak_cs_wm_users.erl | 4 +- apps/riak_cs/src/riak_cs_wm_utils.erl | 18 +++--- .../src/riak_cs_yessir_riak_client.erl | 10 ++-- apps/riak_cs/test/riak_cs_dummy_reader.erl | 2 +- ...k_cs_dummy_riak_client_list_objects_v2.erl | 2 +- .../test/riak_cs_gc_single_run_eqc.erl | 2 +- apps/riak_cs/test/riak_cs_get_fsm_pulse.erl | 3 +- apps/riak_cs/test/riak_cs_lfs_utils_test.erl | 2 +- .../test/riak_cs_list_objects_fsm_v2_eqc.erl | 2 +- apps/riak_cs/test/riak_cs_wm_test_utils.erl | 1 - 66 files changed, 396 insertions(+), 425 deletions(-) diff --git a/apps/riak_cs/priv/tools/internal/block_audit.erl b/apps/riak_cs/priv/tools/internal/block_audit.erl index 3a391e533..9a76345ba 100755 --- a/apps/riak_cs/priv/tools/internal/block_audit.erl +++ b/apps/riak_cs/priv/tools/internal/block_audit.erl @@ -34,15 +34,13 @@ }). main(Args) -> - _ = application:load(lager), - ok = application:set_env(lager, handlers, [{lager_console_backend, info}]), - ok = lager:start(), + logger:update_primary_config(#{level => info}), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of 0 -> info; _ -> - ok = lager:set_loglevel(lager_console_backend, debug), + logger:update_primary_config(#{level => debug}), debug end, debug("Log level is set to ~p", [LogLevel]), @@ -95,7 +93,7 @@ info(Format, Args) -> log(info, Format, Args). log(Level, Format, Args) -> - lager:log(Level, self(), Format, Args). + logger:log(Level, Format, Args). audit(Pid, Opts) -> Buckets = case proplists:get_all_values(bucket, Opts) of diff --git a/apps/riak_cs/priv/tools/internal/ensure_orphan_blocks.erl b/apps/riak_cs/priv/tools/internal/ensure_orphan_blocks.erl index c59b7a716..e148c1633 100755 --- a/apps/riak_cs/priv/tools/internal/ensure_orphan_blocks.erl +++ b/apps/riak_cs/priv/tools/internal/ensure_orphan_blocks.erl @@ -31,15 +31,13 @@ -include_lib("riak_cs/include/riak_cs.hrl"). main(Args) -> - _ = application:load(lager), - ok = application:set_env(lager, handlers, [{lager_console_backend, info}]), - ok = lager:start(), + logger:update_primary_config(#{level => info}), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of 0 -> info; _ -> - ok = lager:set_loglevel(lager_console_backend, debug), + logger:update_primary_config(#{level => debug}), debug end, debug("Log level is set to ~p", [LogLevel]), @@ -94,7 +92,7 @@ info(Format, Args) -> log(info, Format, Args). log(Level, Format, Args) -> - lager:log(Level, self(), Format, Args). + logger:log(Level, Format, Args). audit2(Pid, Opts) -> info("Filter actual orphaned blocks from maybe ones. This may take a while...", []), diff --git a/apps/riak_cs/priv/tools/repair_gc_bucket.erl b/apps/riak_cs/priv/tools/repair_gc_bucket.erl index 381604dc1..436debbc4 100755 --- a/apps/riak_cs/priv/tools/repair_gc_bucket.erl +++ b/apps/riak_cs/priv/tools/repair_gc_bucket.erl @@ -53,15 +53,14 @@ -include_lib("riak_cs/include/riak_cs.hrl"). main(Args) -> - _ = application:load(lager), - ok = application:set_env(lager, handlers, [{lager_console_backend, info}]), - ok = lager:start(), + logger:update_primary_config(#{level => info}), + %% application:set_env(lager, handlers, [{lager_console_backend, info}]), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of 0 -> info; _ -> - ok = lager:set_loglevel(lager_console_backend, debug), + ok = logger:update_primary_config(#{level => debug}), debug end, debug("Log level is set to ~p", [LogLevel]), @@ -112,7 +111,7 @@ info(Format, Args) -> log(info, Format, Args). log(Level, Format, Args) -> - lager:log(Level, self(), Format, Args). + logger:log(Level, Format, Args). -spec repair(pid(), proplists:proplist()) -> term(). repair(Pbc, Options) -> diff --git a/apps/riak_cs/src/riak_cs_access.erl b/apps/riak_cs/src/riak_cs_access.erl index 249935117..0464271b5 100644 --- a/apps/riak_cs/src/riak_cs_access.erl +++ b/apps/riak_cs/src/riak_cs_access.erl @@ -176,8 +176,8 @@ flush_access_object_to_log(User, RiakObj, Slice) -> Start = rts:iso8601(Start0), End = rts:iso8601(End0), Accesses = riakc_obj:get_update_value(RiakObj), - _ = lager:warning("lost access stat: User=~s, Slice=(~s, ~s), Accesses:'~s'", - [User, Start, End, Accesses]). + logger:warning("lost access stat: User=~s, Slice=(~s, ~s), Accesses:'~s'", + [User, Start, End, Accesses]). -ifdef(TEST). diff --git a/apps/riak_cs/src/riak_cs_access_archiver.erl b/apps/riak_cs/src/riak_cs_access_archiver.erl index 7802a9aee..dfe7bd436 100644 --- a/apps/riak_cs/src/riak_cs_access_archiver.erl +++ b/apps/riak_cs/src/riak_cs_access_archiver.erl @@ -156,8 +156,8 @@ terminate(Reason, StateName, #state{table=Table, terminate(_Reason, _StateName, #state{table=Table, riak_client=RcPid, mon=Mon}) -> - _ = lager:warning("Access archiver stopping with work left to do;" - " logs will be dropped"), + logger:warning("Access archiver stopping with work left to do;" + " logs will be dropped"), cleanup(Table, RcPid, Mon), ok. @@ -205,8 +205,7 @@ store(User, RcPid, Record, Slice) -> Timeout = riak_cs_config:put_access_timeout(), case catch riak_cs_pbc:put(MasterPbc, Record, Timeout, [riakc, put_access]) of ok -> - ok = lager:debug("Archived access stats for ~s ~p", - [User, Slice]); + logger:debug("Archived access stats for ~s ~p", [User, Slice]); {error, Reason} -> riak_cs_pbc:check_connection_status(MasterPbc, "riak_cs_access_archiver:store/4"), diff --git a/apps/riak_cs/src/riak_cs_access_archiver_manager.erl b/apps/riak_cs/src/riak_cs_access_archiver_manager.erl index 0f3d3f4ee..8bb89be44 100644 --- a/apps/riak_cs/src/riak_cs_access_archiver_manager.erl +++ b/apps/riak_cs/src/riak_cs_access_archiver_manager.erl @@ -69,8 +69,7 @@ archive(Table, Slice) -> ets:give_away(Table, Pid, Slice) catch error:badarg -> - _ = lager:error("~p was not available, access stats for ~p lost", - [?MODULE, Slice]), + logger:error("~p was not available, access stats for ~p lost", [?MODULE, Slice]), riak_cs_access:flush_to_log(Table, Slice), %% if the archiver had been alive just now, but crashed %% during operation, the stats also would have been lost, @@ -83,8 +82,8 @@ archive(Table, Slice) -> false %% opposite of ets:give_away/3 success end; _ -> - _ = lager:error("~p was not available, access stats for ~p lost", - [?MODULE, Slice]), + logger:error("~p was not available, access stats for ~p lost", + [?MODULE, Slice]), riak_cs_access:flush_to_log(Table, Slice), ets:delete(Table), false @@ -124,7 +123,7 @@ init([]) -> riak_cs, access_archiver_max_workers) of {ok, Workers} when is_integer(Workers) -> Workers; _ -> - _ = lager:warning( + logger:warning( "access_archiver_max_workers was unset or" " invalid; overriding with default of ~b", [?DEFAULT_MAX_ARCHIVERS]), @@ -134,7 +133,7 @@ init([]) -> riak_cs, access_archiver_max_backlog) of {ok, MB} when is_integer(MB) -> MB; _ -> - _ = lager:warning( + logger:warning( "access_archiver_max_backlog was unset or" " invalid; overriding with default of ~b", [?DEFAULT_MAX_BACKLOG]), @@ -180,9 +179,9 @@ handle_info({'ETS-TRANSFER', Table, _From, Slice}, State) -> false -> %% too much in the backlog, drop the first item in the backlog [{_DropTable, DropSlice}|RestBacklog] = Backlog, - ok = lager:error("Skipping archival of accesses ~p to" - " catch up on backlog", - [DropSlice]), + logger:error("Skipping archival of accesses ~p to" + " catch up on backlog", + [DropSlice]), State#state{backlog=RestBacklog++[{Table, Slice}]} end, {noreply, NewState}; @@ -192,7 +191,7 @@ handle_info(_Info, State) -> terminate(_Reason, #state{backlog=[]}) -> ok; terminate(_Reason, _State) -> - _ = lager:warning("Access archiver manager stopping with a backlog;" + logger:warning("Access archiver manager stopping with a backlog;" " logs will be dropped"), ok. diff --git a/apps/riak_cs/src/riak_cs_access_log_handler.erl b/apps/riak_cs/src/riak_cs_access_log_handler.erl index 258c484d3..ceb2de5b4 100644 --- a/apps/riak_cs/src/riak_cs_access_log_handler.erl +++ b/apps/riak_cs/src/riak_cs_access_log_handler.erl @@ -163,14 +163,14 @@ init(_) -> end, {ok, SchedState}; {{error, Reason}, _} -> - _ = lager:error("Error starting access logger: ~s", [Reason]), + logger:error("Error starting access logger: ~s", [Reason]), %% can't simply {error, Reason} out here, because %% webmachine/mochiweb will just ignore the failed %% startup; using init:stop/0 here so that the user isn't %% suprised later when there are no logs init:stop(); {_, {error, Reason}} -> - _ = lager:error("Error starting access logger: ~s", [Reason]), + logger:error("Error starting access logger: ~s", [Reason]), init:stop() end. @@ -185,7 +185,7 @@ handle_call(_Request, State) -> handle_event({log_access, #wm_log_data{notes=undefined, method=Method, path=Path, headers=Headers}}, State) -> - lager:debug("No WM route: ~p ~s ~p\n", [Method, Path, Headers]), + logger:debug("No WM route: ~p ~s ~p", [Method, Path, Headers]), {ok, State}; handle_event({log_access, LogData}, #state{table=T, size=S, max_size=MaxS}=State) -> @@ -229,9 +229,9 @@ handle_info({archive, Ref}, #state{archive=Ref}=State) -> %% simple "missed window" is too lossy [{message_queue_len, MessageCount}] = process_info(self(), [message_queue_len]), - _ = lager:error("Access logger is running ~b seconds behind," - " skipping ~p log messages to catch up", - [Behind, MessageCount]), + logger:error("Access logger is running ~b seconds behind," + " skipping ~p log messages to catch up", + [Behind, MessageCount]), remove_handler end; handle_info(_Info, State) -> @@ -265,7 +265,7 @@ schedule_archival(#state{current={_,E}}=State) -> TL = calendar:datetime_to_gregorian_seconds(E)-Now, case TL < 0 of false -> - _ = lager:debug("Next access archival in ~b seconds", [TL]), + logger:debug("Next access archival in ~b seconds", [TL]), %% time left is in seconds, we need milliseconds erlang:send_after(TL*1000, self(), {archive, Ref}), @@ -287,7 +287,7 @@ force_archive(#state{current=C}=State, FlushEnd) -> %% for storage. Create a clean table to store the next slice's accesses. -spec do_archive(state()) -> state(). do_archive(#state{period=P, table=T, current=C}=State) -> - _ = lager:debug("Rolling access for ~p", [C]), + logger:debug("Rolling access for ~p", [C]), %% archiver takes ownership of the table, and deletes it when done riak_cs_access_archiver_manager:archive(T, C), diff --git a/apps/riak_cs/src/riak_cs_acl.erl b/apps/riak_cs/src/riak_cs_acl.erl index 0b04779b4..278ef685e 100644 --- a/apps/riak_cs/src/riak_cs_acl.erl +++ b/apps/riak_cs/src/riak_cs_acl.erl @@ -70,7 +70,7 @@ anonymous_bucket_access(Bucket, RequestedAccess, RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - _ = lager:error("Anonymous bucket access check failed due to error. Reason: ~p", [Reason]), + logger:error("Anonymous bucket access check failed due to error. Reason: ~p", [Reason]), false end; anonymous_bucket_access(_Bucket, RequestedAccess, RcPid, BucketAcl) -> @@ -109,7 +109,7 @@ anonymous_object_access(BucketObj, ObjAcl, 'WRITE', RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - _ = lager:error("Anonymous object access check failed due to error. Reason: ~p", [Reason]), + logger:error("Anonymous object access check failed due to error. Reason: ~p", [Reason]), false end; anonymous_object_access(_BucketObj, _ObjAcl, 'WRITE', RcPid, BucketAcl) -> @@ -151,7 +151,7 @@ bucket_access(Bucket, RequestedAccess, CanonicalId, RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - _ = lager:error("Bucket access check failed due to error. Reason: ~p", [Reason]), + logger:error("Bucket access check failed due to error. Reason: ~p", [Reason]), false end; bucket_access(_, RequestedAccess, CanonicalId, RcPid, Acl) -> @@ -181,9 +181,9 @@ fetch_bucket_acl(Bucket, RcPid) -> {ok, Obj} -> bucket_acl(Obj); {error, Reason} -> - _ = lager:debug("Failed to fetch ACL. Bucket ~p " - " does not exist. Reason: ~p", - [Bucket, Reason]), + logger:debug("Failed to fetch ACL. Bucket ~p " + " does not exist. Reason: ~p", + [Bucket, Reason]), {error, notfound} end. @@ -261,7 +261,7 @@ object_access(BucketObj, ObjAcl, 'WRITE', CanonicalId, RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - _ = lager:error("Object access check failed due to error. Reason: ~p", [Reason]), + logger:error("Object access check failed due to error. Reason: ~p", [Reason]), false end; object_access(_BucketObj, _ObjAcl, 'WRITE', CanonicalId, RcPid, BucketAcl) -> @@ -279,13 +279,13 @@ object_access(_BucketObj, _ObjAcl, 'WRITE', CanonicalId, RcPid, BucketAcl) -> false end; object_access(_BucketObj, ObjAcl, RequestedAccess, CanonicalId, RcPid, _) -> - _ = lager:debug("ObjAcl: ~p~nCanonicalId: ~p", [ObjAcl, CanonicalId]), + logger:debug("ObjAcl: ~p~nCanonicalId: ~p", [ObjAcl, CanonicalId]), IsObjOwner = is_owner(ObjAcl, CanonicalId), HasObjPerm = has_permission(acl_grants(ObjAcl), RequestedAccess, CanonicalId), - _ = lager:debug("IsObjOwner: ~p", [IsObjOwner]), - _ = lager:debug("HasObjPerm: ~p", [HasObjPerm]), + logger:debug("IsObjOwner: ~p", [IsObjOwner]), + logger:debug("HasObjPerm: ~p", [HasObjPerm]), if (RequestedAccess == 'READ_ACP' orelse RequestedAccess == 'WRITE_ACP') andalso @@ -315,7 +315,7 @@ owner_id(#acl_v1{owner=OwnerData}, RcPid) -> {ok, {Owner, _}} -> Owner?RCS_USER.key_id; {error, _} -> - _ = lager:warning("Failed to retrieve key_id for user ~p with canonical_id ~p", [Name, CanonicalId]), + logger:warning("Failed to retrieve key_id for user ~p with canonical_id ~p", [Name, CanonicalId]), [] end. diff --git a/apps/riak_cs/src/riak_cs_acl_utils.erl b/apps/riak_cs/src/riak_cs_acl_utils.erl index 1d16ca3c7..8e8743517 100644 --- a/apps/riak_cs/src/riak_cs_acl_utils.erl +++ b/apps/riak_cs/src/riak_cs_acl_utils.erl @@ -472,7 +472,7 @@ canonical_for_email(Email, RcPid) -> {ok, {User, _}} -> {ok, User?RCS_USER.canonical_id}; {error, Reason} -> - _ = lager:debug("Failed to retrieve canonical id for ~p. Reason: ~p", [Email, Reason]), + logger:debug("Failed to retrieve canonical id for ~p. Reason: ~p", [Email, Reason]), {error, unresolved_grant_email} end. @@ -500,7 +500,7 @@ process_acl_contents([], Acl, _) -> process_acl_contents([#xmlElement{content=Content, name=ElementName} | RestElements], Acl, RcPid) -> - _ = lager:debug("Element name: ~p", [ElementName]), + logger:debug("Element name: ~p", [ElementName]), UpdAclRes = case ElementName of 'Owner' -> @@ -508,7 +508,7 @@ process_acl_contents([#xmlElement{content=Content, 'AccessControlList' -> process_grants(Content, Acl, RcPid); _ -> - _ = lager:debug("Encountered unexpected element: ~p", [ElementName]), + logger:debug("Encountered unexpected element: ~p", [ElementName]), Acl end, case UpdAclRes of @@ -543,15 +543,15 @@ process_owner([#xmlElement{content=[Content], UpdOwner = case ElementName of 'ID' -> - _ = lager:debug("Owner ID value: ~p", [Value]), + logger:debug("Owner ID value: ~p", [Value]), {OwnerName, _, OwnerKeyId} = Owner, {OwnerName, Value, OwnerKeyId}; 'DisplayName' -> - _ = lager:debug("Owner Name content: ~p", [Value]), + logger:debug("Owner Name content: ~p", [Value]), {_, OwnerId, OwnerKeyId} = Owner, {Value, OwnerId, OwnerKeyId}; _ -> - _ = lager:debug("Encountered unexpected element: ~p", [ElementName]), + logger:debug("Encountered unexpected element: ~p", [ElementName]), Owner end, process_owner(RestElements, Acl?ACL{owner=UpdOwner}, RcPid); @@ -583,7 +583,7 @@ process_grants([#xmlElement{content=Content, Acl?ACL{grants=add_grant(Grant, Acl?ACL.grants)} end; _ -> - _ = lager:debug("Encountered unexpected grants element: ~p", [ElementName]), + logger:debug("Encountered unexpected grants element: ~p", [ElementName]), Acl end, case UpdAcl of @@ -603,8 +603,8 @@ process_grant([], Grant, _, _) -> process_grant([#xmlElement{content=Content, name=ElementName} | RestElements], Grant, AclOwner, RcPid) -> - _ = lager:debug("ElementName: ~p", [ElementName]), - _ = lager:debug("Content: ~p", [Content]), + logger:debug("ElementName: ~p", [ElementName]), + logger:debug("Content: ~p", [Content]), UpdGrant = case ElementName of 'Grantee' -> @@ -612,7 +612,7 @@ process_grant([#xmlElement{content=Content, 'Permission' -> process_permission(Content, Grant); _ -> - _ = lager:debug("Encountered unexpected grant element: ~p", [ElementName]), + logger:debug("Encountered unexpected grant element: ~p", [ElementName]), Grant end, case UpdGrant of @@ -651,16 +651,16 @@ process_grantee([#xmlElement{content=[Content], Value = Content#xmlText.value, case ElementName of 'ID' -> - _ = lager:debug("ID value: ~p", [Value]), + logger:debug("ID value: ~p", [Value]), {{Name, _}, Perms} = Grant, UpdGrant = {{Name, Value}, Perms}; 'EmailAddress' -> - _ = lager:debug("Email value: ~p", [Value]), + logger:debug("Email value: ~p", [Value]), UpdGrant = case canonical_for_email(Value, RcPid) of {ok, Id} -> %% Get the canonical id for a given email address - _ = lager:debug("ID value: ~p", [Id]), + logger:debug("ID value: ~p", [Id]), {{Name, _}, Perms} = Grant, {{Name, Id}, Perms}; {error, _}=Error -> @@ -782,7 +782,7 @@ acl_from_json(Json) -> process_acl_contents([], Acl) -> Acl; process_acl_contents([{Name, Value} | RestObjects], Acl) -> - _ = lager:debug("Object name: ~p", [Name]), + logger:debug("Object name: ~p", [Name]), case Name of <<"owner">> -> {struct, OwnerData} = Value, @@ -806,19 +806,19 @@ process_owner([{Name, Value} | RestObjects], Acl) -> Owner = Acl?ACL.owner, case Name of <<"key_id">> -> - _ = lager:debug("Owner Key ID value: ~p", [Value]), + logger:debug("Owner Key ID value: ~p", [Value]), {OwnerName, OwnerCID, _} = Owner, UpdOwner = {OwnerName, OwnerCID, binary_to_list(Value)}; <<"canonical_id">> -> - _ = lager:debug("Owner ID value: ~p", [Value]), + logger:debug("Owner ID value: ~p", [Value]), {OwnerName, _, OwnerId} = Owner, UpdOwner = {OwnerName, binary_to_list(Value), OwnerId}; <<"display_name">> -> - _ = lager:debug("Owner Name content: ~p", [Value]), + logger:debug("Owner Name content: ~p", [Value]), {_, OwnerCID, OwnerId} = Owner, UpdOwner = {binary_to_list(Value), OwnerCID, OwnerId}; _ -> - _ = lager:debug("Encountered unexpected element: ~p", [Name]), + logger:debug("Encountered unexpected element: ~p", [Name]), UpdOwner = Owner end, process_owner(RestObjects, Acl?ACL{owner=UpdOwner}). @@ -840,22 +840,22 @@ process_grant([], Grant) -> process_grant([{Name, Value} | RestObjects], Grant) -> case Name of <<"canonical_id">> -> - _ = lager:debug("ID value: ~p", [Value]), + logger:debug("ID value: ~p", [Value]), {{DispName, _}, Perms} = Grant, UpdGrant = {{DispName, binary_to_list(Value)}, Perms}; <<"display_name">> -> - _ = lager:debug("Name value: ~p", [Value]), + logger:debug("Name value: ~p", [Value]), {{_, Id}, Perms} = Grant, UpdGrant = {{binary_to_list(Value), Id}, Perms}; <<"group">> -> - _ = lager:debug("Group value: ~p", [Value]), + logger:debug("Group value: ~p", [Value]), {_, Perms} = Grant, UpdGrant = {list_to_atom( binary_to_list(Value)), Perms}; <<"permissions">> -> {Grantee, _} = Grant, Perms = process_permissions(Value), - _ = lager:debug("Perms value: ~p", [Value]), + logger:debug("Perms value: ~p", [Value]), UpdGrant = {Grantee, Perms}; _ -> UpdGrant = Grant diff --git a/apps/riak_cs/src/riak_cs_app.erl b/apps/riak_cs/src/riak_cs_app.erl index e364f53a4..661da3c1a 100644 --- a/apps/riak_cs/src/riak_cs_app.erl +++ b/apps/riak_cs/src/riak_cs_app.erl @@ -58,29 +58,29 @@ check_admin_creds() -> case riak_cs_config:admin_creds() of {ok, {"admin-key", _}} -> %% The default key - lager:warning("admin.key is defined as default. Please create" + logger:warning("admin.key is defined as default. Please create" " admin user and configure it.", []), application:set_env(riak_cs, admin_secret, "admin-secret"), ok; {ok, {undefined, _}} -> - _ = lager:warning("The admin user's key id has not been specified."), + logger:warning("The admin user's key id has not been specified."), {error, admin_key_undefined}; {ok, {[], _}} -> - _ = lager:warning("The admin user's key id has not been specified."), + logger:warning("The admin user's key id has not been specified."), {error, admin_key_undefined}; {ok, {Key, undefined}} -> fetch_and_cache_admin_creds(Key); {ok, {Key, []}} -> fetch_and_cache_admin_creds(Key); {ok, {Key, _}} -> - _ = lager:warning("The admin user's secret is specified. Ignoring."), + logger:warning("The admin user's secret is specified. Ignoring."), fetch_and_cache_admin_creds(Key) end. fetch_and_cache_admin_creds(Key) -> %% Not using as the master pool might not be initialized {ok, MasterPbc} = riak_connection(), - _ = lager:debug("setting admin as ~s", [Key]), + logger:debug("setting admin as ~s", [Key]), try %% Do we count this into stats?; This is a startup query and %% system latency is expected to be low. So get timeout can be @@ -93,13 +93,12 @@ fetch_and_cache_admin_creds(Key) -> Secret = User?RCS_USER.key_secret, application:set_env(riak_cs, admin_secret, Secret); Error -> - _ = lager:error("Couldn't get admin user (~s) record: ~p", - [Key, Error]), + logger:error("Couldn't get admin user (~s) record: ~p", [Key, Error]), Error end catch T:E -> - _ = lager:error("Couldn't get admin user (~s) record: ~p", - [Key, {T, E}]), + logger:error("Couldn't get admin user (~s) record: ~p", + [Key, {T, E}]), {error, {T, E}} after riakc_pb_socket:stop(MasterPbc) @@ -112,22 +111,22 @@ fetch_and_cache_admin_creds(Key) -> sanity_check(true, ok, {ok, true}) -> riak_cs_sup:start_link(); sanity_check(false, _, _) -> - _ = lager:error("You must update your Riak CS app.config. Please see the" - "release notes for more information on updating you" - "configuration."), + logger:error("You must update your Riak CS app.config. Please see the" + "release notes for more information on updating you" + "configuration."), {error, bad_config}; sanity_check(true, _, {ok, false}) -> - _ = lager:error("Invalid Riak bucket properties detected. Please " - "verify that allow_mult is set to true for all " - "buckets."), + logger:error("Invalid Riak bucket properties detected. Please " + "verify that allow_mult is set to true for all " + "buckets."), {error, invalid_bucket_props}; sanity_check(true, _, {error, Reason}) -> - _ = lager:error("Could not verify bucket properties. Error was" - " ~p.", [Reason]), + logger:error("Could not verify bucket properties. Error was" + " ~p.", [Reason]), {error, error_verifying_props}; sanity_check(_, {error, Reason}, _) -> - _ = lager:error("Admin credentials are not properly set: ~p.", - [Reason]), + logger:error("Admin credentials are not properly set: ~p.", + [Reason]), {error, Reason}. -spec is_config_valid() -> boolean(). @@ -175,16 +174,15 @@ check_bucket_props(Bucket, MasterPbc) -> {ok, Props} -> case lists:keyfind(allow_mult, 1, Props) of {allow_mult, true} -> - _ = lager:debug("~s bucket was" - " already configured correctly.", - [Bucket]), + logger:debug("~s bucket was already configured correctly.", + [Bucket]), {ok, true}; _ -> - _ = lager:warning("~p is misconfigured", [Bucket]), + logger:warning("~p is misconfigured", [Bucket]), {ok, false} end; {error, Reason}=E -> - _ = lager:warning( + logger:warning( "Unable to verify ~s bucket settings (~p).", [Bucket, Reason]), E @@ -192,7 +190,7 @@ check_bucket_props(Bucket, MasterPbc) -> riak_connection() -> {Host, Port} = riak_cs_config:riak_host_port(), - lager:debug("connecting to ~p", [{Host, Port}]), + logger:debug("connecting to ~p", [{Host, Port}]), Timeout = case application:get_env(riak_cs, riakc_connect_timeout) of {ok, ConfigValue} -> ConfigValue; diff --git a/apps/riak_cs/src/riak_cs_block_server.erl b/apps/riak_cs/src/riak_cs_block_server.erl index 07d71b4f3..65f1bbc40 100644 --- a/apps/riak_cs/src/riak_cs_block_server.erl +++ b/apps/riak_cs/src/riak_cs_block_server.erl @@ -190,8 +190,8 @@ handle_cast({put_block, ReplyPid, Bucket, Key, UUID, BlockNumber, Value, BCSum}, {?USERMETA_KEY, Key}, {?USERMETA_BCSUM, BCSum}]), FailFun = fun(Error) -> - _ = lager:error("Put ~p ~p UUID ~p block ~p failed: ~p\n", - [Bucket, Key, UUID, BlockNumber, Error]) + logger:error("Put ~p ~p UUID ~p block ~p failed: ~p", + [Bucket, Key, UUID, BlockNumber, Error]) end, %% TODO: Handle put failure here. ok = do_put_block(FullBucket, FullKey, <<>>, Value, MD, @@ -217,7 +217,7 @@ handle_cast({delete_block, ReplyPid, Bucket, Key, UUID, BlockNumber}, State=#sta riak_cs_delete_fsm:block_deleted(ReplyPid, {ok, {UUID, BlockNumber}}); {error, _} = Error -> %% Report errors in HEADs to prevent crashing block - %% servers, as crash logs forces lager to sync log + %% servers, as crash logs forces logger to sync log %% files at each line. Result = format_delete_result(Error, {UUID, BlockNumber}), riak_cs_delete_fsm:block_deleted(ReplyPid, Result) @@ -253,14 +253,14 @@ do_get_block(ReplyPid, _Bucket, _Key, _ClusterID, _UseProxyGet, _ProxyActive, when is_list(ErrorReasons) andalso is_atom(LastReason) -> %% Not worth retrying, 'failure' comes as LastReason Sorry = {error, ErrorReasons}, - _ = lager:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), + logger:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), ok = riak_cs_get_fsm:chunk(ReplyPid, {UUID, BlockNumber}, Sorry); do_get_block(ReplyPid, _Bucket, _Key, _ClusterID, _UseProxyGet, _ProxyActive, UUID, BlockNumber, _RcPid, MaxRetries, ErrorReasons) when is_list(ErrorReasons) andalso length(ErrorReasons) > MaxRetries -> Sorry = {error, ErrorReasons}, - _ = lager:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), + logger:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), ok = riak_cs_get_fsm:chunk(ReplyPid, {UUID, BlockNumber}, Sorry); do_get_block(ReplyPid, Bucket, Key, ClusterID, UseProxyGet, ProxyActive, @@ -306,7 +306,7 @@ try_local_get(RcPid, FullBucket, FullKey, GetOptions1, GetOptions2, [{local_one, Why}|ErrorReasons], UseProxyGet, ProxyActive, ClusterID); {error, Other} -> - _ = lager:error("do_get_block: other error 1: ~p\n", [Other]), + logger:error("do_get_block: other error 1: ~p", [Other]), RetryFun({failure, [{local_one, Other}|ErrorReasons]}) end. @@ -322,7 +322,7 @@ handle_local_notfound(RcPid, FullBucket, FullKey, GetOptions2, {error, Why} when Why == disconnected; Why == timeout -> - _ = lager:debug("get_block_local() failed: {error, ~p}", [Why]), + logger:debug("get_block_local() failed: {error, ~p}", [Why]), _ = riak_cs_pbc:pause_to_reconnect(block_pbc(RcPid), Why, Timeout), RetryFun([{local_quorum, Why}|ErrorReasons]); @@ -341,7 +341,7 @@ handle_local_notfound(RcPid, FullBucket, FullKey, GetOptions2, {error, notfound} -> RetryFun({failure, [{local_quorum, notfound}|ErrorReasons]}); {error, Other} -> - _ = lager:error("do_get_block: other error 2: ~p\n", [Other]), + logger:error("do_get_block: other error 2: ~p", [Other]), RetryFun({failure, [{local_quorum, Other}|ErrorReasons]}) end. @@ -413,7 +413,7 @@ secondary_delete_check({error, {unsatisfied_constraint, _, _}}, RcPid, RiakObjec StatsKey = [riakc, delete_block_secondary], riak_cs_pbc:delete_obj(block_pbc(RcPid), RiakObject, [], Timeout, StatsKey); secondary_delete_check({error, Reason} = E, _, _) -> - _ = lager:warning("Constrained block deletion failed. Reason: ~p", [Reason]), + logger:warning("Constrained block deletion failed. Reason: ~p", [Reason]), E; secondary_delete_check(_, _, _) -> ok. @@ -512,19 +512,18 @@ resolve_block_object(RObj, RcPid) -> error -> [] end, - _ = lager:info("Repairing riak ~p ~p for ~p\n", - [RBucket, RKey, S3Info]), + logger:info("Repairing riak ~p ~p for ~p", [RBucket, RKey, S3Info]), Bucket = proplists:get_value(<>, S3Info), Key = proplists:get_value(<>, S3Info), VClock = riakc_obj:vclock(RObj), FailFun = fun(Error) -> - _ = lager:error("Put S3 ~p ~p Riak ~p ~p failed: ~p\n", - [Bucket, Key, RBucket, RKey, Error]) + logger:error("Put S3 ~p ~p Riak ~p ~p failed: ~p", + [Bucket, Key, RBucket, RKey, Error]) end, do_put_block(RBucket, RKey, VClock, Value, MD, RcPid, [riakc, put_block_resolved], FailFun); NeedRepair andalso not is_binary(Value) -> - _ = lager:error("All checksums fail: ~P\n", [RObj, 200]); + logger:error("All checksums fail: ~P", [RObj, 200]); true -> ok end, diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index b5f656214..9d15a73cf 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -174,7 +174,7 @@ delete_bucket(User, UserObj, Bucket, RcPid) -> %% TODO: output log if failed in cleaning up existing uploads. %% The number of retry is hardcoded. {ok, Count} = delete_all_uploads(Bucket, RcPid), - _ = lager:debug("deleted ~p multiparts before bucket deletion.", [Count]), + logger:debug("deleted ~p multiparts before bucket deletion.", [Count]), %% This call still may return {error, remaining_multipart_upload} %% even if all uploads cleaned up above, because concurrent %% multiple deletion may happen. Then Riak CS returns 409 confliction @@ -227,12 +227,12 @@ fold_delete_uploads(Bucket, RcPid, [D|Ds], Timestamp, Count)-> {ok, _NewObj} -> fold_delete_uploads(Bucket, RcPid, Ds, Timestamp, Count+1); E -> - lager:debug("cannot delete multipart manifest: ~p ~p (~p)", + logger:debug("cannot delete multipart manifest: ~p ~p (~p)", [{Bucket, Key}, M?MANIFEST.uuid, E]), E end; _E -> - lager:debug("skipping multipart manifest: ~p ~p (~p)", + logger:debug("skipping multipart manifest: ~p ~p (~p)", [{Bucket, Key}, UploadId, _E]), fold_delete_uploads(Bucket, RcPid, Ds, Timestamp, Count) end. @@ -265,7 +265,7 @@ iterate_csbuckets(RcPid, Acc0, Fun, Cont0) -> end; Error -> - _ = lager:error("iterating CS buckets: ~p", [Error]), + logger:error("iterating CS buckets: ~p", [Error]), {error, {Error, Acc0}} end. @@ -439,17 +439,17 @@ fetch_bucket_object_raw(BucketName, RcPid) -> -spec maybe_log_sibling_warning(binary(), list(riakc_obj:value())) -> ok. maybe_log_sibling_warning(Bucket, Values) when length(Values) > 1 -> - _ = lager:warning("The bucket ~s has ~b siblings that may need resolution.", - [binary_to_list(Bucket), length(Values)]), + logger:warning("The bucket ~s has ~b siblings that may need resolution.", + [binary_to_list(Bucket), length(Values)]), ok; maybe_log_sibling_warning(_, _) -> ok. -spec maybe_log_bucket_owner_error(binary(), list(riakc_obj:value())) -> ok. maybe_log_bucket_owner_error(Bucket, Values) when length(Values) > 1 -> - _ = lager:error("The bucket ~s has ~b owners." - " This situation requires administrator intervention.", - [binary_to_list(Bucket), length(Values)]), + logger:error("The bucket ~s has ~b owners." + " This situation requires administrator intervention.", + [binary_to_list(Bucket), length(Values)]), ok; maybe_log_bucket_owner_error(_, _) -> ok. @@ -724,21 +724,21 @@ handle_stanchion_response(409, ErrorDoc, Op, Bucket) Value = riak_cs_s3_response:xml_error_code(ErrorDoc), case {lists:flatten(Value), Op} of {"MultipartUploadRemaining", delete} -> - _ = lager:error("Concurrent multipart upload might have" - " happened on deleting bucket '~s'.", [Bucket]), + logger:error("Concurrent multipart upload might have" + " happened on deleting bucket '~s'.", [Bucket]), {error, remaining_multipart_upload}; {"MultipartUploadRemaining", create} -> %% might be security issue - _ = lager:critical("Multipart upload remains in deleted bucket (~s)" - " Clean up the deleted buckets now.", [Bucket]), + logger:critical("Multipart upload remains in deleted bucket (~s)" + " Clean up the deleted buckets now.", [Bucket]), %% Broken, returns 500 throw({remaining_multipart_upload_on_deleted_bucket, Bucket}); Other -> - _ = lager:debug("errordoc: ~p => ~s", [Other, ErrorDoc]), + logger:debug("errordoc: ~p => ~s", [Other, ErrorDoc]), riak_cs_s3_response:error_response(ErrorDoc) end; handle_stanchion_response(_C, ErrorDoc, _M, _) -> - %% _ = lager:error("unexpected errordoc: (~p, ~p) ~s", [_C, _M, ErrorDoc]), + %% logger:error("unexpected errordoc: (~p, ~p) ~s", [_C, _M, ErrorDoc]), riak_cs_s3_response:error_response(ErrorDoc). %% @doc Update a bucket record to convert the name from binary diff --git a/apps/riak_cs/src/riak_cs_config.erl b/apps/riak_cs/src/riak_cs_config.erl index 92c27888a..721227062 100644 --- a/apps/riak_cs/src/riak_cs_config.erl +++ b/apps/riak_cs/src/riak_cs_config.erl @@ -116,7 +116,7 @@ -define(MAYBE_WARN(Bool, Msg), case (Bool) of - true -> _ = lager:warning((Msg)); + true -> logger:warning((Msg)); _ -> ok end). @@ -269,8 +269,7 @@ proxy_get_active() -> disabled -> false; Flag when is_boolean(Flag) -> Flag; Other -> - _ = lager:warning("proxy_get value in advanced.config is invalid: ~p", - [Other]), + logger:warning("proxy_get value in advanced.config is invalid: ~p", [Other]), false end. @@ -280,7 +279,7 @@ trust_x_forwarded_for() -> {ok, true} -> true; {ok, false} -> false; {ok, _} -> - _ = lager:warning("trust_x_forwarded_for value in app.config is invalid"), + logger:warning("trust_x_forwarded_for value in app.config is invalid"), false; undefined -> false %% secure by default! end. @@ -375,13 +374,13 @@ stanchion() -> {Host, Port} = case application:get_env(riak_cs, stanchion_host) of {ok, HostPort} -> HostPort; undefined -> - _ = lager:warning("No stanchion access defined. Using default."), + logger:warning("No stanchion access defined. Using default."), {?DEFAULT_STANCHION_IP, ?DEFAULT_STANCHION_PORT} end, SSL = case application:get_env(riak_cs, stanchion_ssl) of {ok, SSL0} -> SSL0; undefined -> - _ = lager:warning("No ssl flag for stanchion access defined. Using default."), + logger:warning("No ssl flag for stanchion access defined. Using default."), ?DEFAULT_STANCHION_SSL end, {Host, Port, SSL}. diff --git a/apps/riak_cs/src/riak_cs_console.erl b/apps/riak_cs/src/riak_cs_console.erl index 77a1c5661..106420679 100644 --- a/apps/riak_cs/src/riak_cs_console.erl +++ b/apps/riak_cs/src/riak_cs_console.erl @@ -60,7 +60,7 @@ cluster_info([OutFile]) -> error:{badmatch, {error, enotdir}} -> io:format("Cluster_info failed, not a directory ~p~n", [filename:dirname(OutFile)]); Exception:Reason -> - lager:error("Cluster_info failed ~p:~p", [Exception, Reason]), + logger:error("Cluster_info failed ~p:~p", [Exception, Reason]), io:format("Cluster_info failed, see log for details~n"), error end. @@ -86,13 +86,13 @@ audit_bucket_ownership() -> audit_bucket_ownership0(RcPid) -> FromUsers = ownership_from_users(RcPid), {FromBuckets, OwnedBy} = ownership_from_buckets(RcPid), - lager:debug("FromUsers: ~p~n", [lists:usort(gb_sets:to_list(FromUsers))]), - lager:debug("FromBuckets: ~p~n", [lists:usort(gb_sets:to_list(FromBuckets))]), - lager:debug("OwnedBy: ~p~n", [lists:usort(gb_trees:to_list(OwnedBy))]), + logger:debug("FromUsers: ~p~n", [lists:usort(gb_sets:to_list(FromUsers))]), + logger:debug("FromBuckets: ~p~n", [lists:usort(gb_sets:to_list(FromBuckets))]), + logger:debug("OwnedBy: ~p~n", [lists:usort(gb_trees:to_list(OwnedBy))]), Inconsistencies0 = gb_sets:fold( fun ({U, B}, Acc) -> - lager:info( + logger:info( "Bucket is not tracked by user: {User, Bucket} = {~s, ~s}", [U, B]), [{not_tracked, {U, B}} | Acc] @@ -101,11 +101,11 @@ audit_bucket_ownership0(RcPid) -> fun({U,B}, Acc) -> case gb_trees:lookup(B, OwnedBy) of none -> - lager:info( + logger:info( "Bucket does not exist: {User, Bucket} = {~s, ~s}", [U, B]), [{no_bucket_object, {U, B}} | Acc]; {value, DifferentUser} -> - lager:info( + logger:info( "Bucket is owned by different user: {User, Bucket, DifferentUser} = " "{~s, ~s, ~s}", [U, B, DifferentUser]), [{different_user, {U, B, DifferentUser}} | Acc] @@ -171,7 +171,7 @@ cleanup_orphan_multipart(Timestamp) when is_list(Timestamp) -> cleanup_orphan_multipart(Timestamp) when is_binary(Timestamp) -> {ok, RcPid} = riak_cs_riak_client:start_link([]), - _ = lager:info("cleaning up with timestamp ~s", [Timestamp]), + logger:info("cleaning up with timestamp ~s", [Timestamp]), _ = io:format("cleaning up with timestamp ~s", [Timestamp]), Fun = fun(RcPidForOneBucket, BucketName, GetResult, Acc0) -> ok = maybe_cleanup_csbucket(RcPidForOneBucket, BucketName, @@ -181,7 +181,7 @@ cleanup_orphan_multipart(Timestamp) when is_binary(Timestamp) -> _ = riak_cs_bucket:fold_all_buckets(Fun, [], RcPid), ok = riak_cs_riak_client:stop(RcPid), - _ = lager:info("All old unaborted orphan multipart uploads have been deleted.", []), + logger:info("All old unaborted orphan multipart uploads have been deleted.", []), _ = io:format("~nAll old unaborted orphan multipart uploads have been deleted.~n", []). @@ -225,24 +225,24 @@ resolve_siblings(Pid, RawBucket, RawKey) -> resolve_siblings(Pid, RawBucket, RawKey, GetOptions, GetTimeout, PutOptions, PutTimeout) when is_integer(GetTimeout) andalso is_integer(PutTimeout) -> - _ = lager:info("Getting ~p:~p~n", [RawBucket, RawKey]), + logger:info("Getting ~p:~p~n", [RawBucket, RawKey]), case riakc_pb_socket:get(Pid, RawBucket, RawKey, GetOptions, GetTimeout) of {ok, RiakObj} -> - _ = lager:info("Trying to resolve ~p sibling(s) of ~p:~p", - [riakc_obj:value_count(RiakObj), RawBucket, RawKey]), + logger:info("Trying to resolve ~p sibling(s) of ~p:~p", + [riakc_obj:value_count(RiakObj), RawBucket, RawKey]), case resolve_ro_siblings(RiakObj, RawBucket, RawKey) of {ok, RiakObj2} -> R = riakc_pb_socket:put(Pid, RiakObj2, PutOptions, PutTimeout), - _ = lager:info("Resolution result: ~p~n", [R]), + logger:info("Resolution result: ~p~n", [R]), R; ok -> - lager:info("No siblings in ~p:~p~n", [RawBucket, RawKey]); + logger:info("No siblings in ~p:~p~n", [RawBucket, RawKey]); {error, _} = E -> - _ = lager:info("Not updating ~p:~p: ~p~n", [RawBucket, RawKey, E]), + logger:info("Not updating ~p:~p: ~p~n", [RawBucket, RawKey, E]), E end; {error, Reason} = E -> - _ = lager:info("Failed to get an object before resolution: ~p~n", [Reason]), + logger:info("Failed to get an object before resolution: ~p~n", [Reason]), E end. @@ -283,7 +283,7 @@ resolve_ro_siblings(RO, <<"0b:", _/binary>>, _) -> RO1 = riakc_obj:update_metadata(RO, MD), {ok, riakc_obj:update_value(RO1, Value)}; {E, true} -> - _ = lager:info("Cannot resolve: ~p~n", [E]), + logger:info("Cannot resolve: ~p~n", [E]), {error, E}; {_, false} -> ok @@ -291,8 +291,7 @@ resolve_ro_siblings(RO, <<"0b:", _/binary>>, _) -> resolve_ro_siblings(RiakObject, <<"0o:", _/binary>>, _RawKey) -> [{_, Manifest}|_] = Manifests = riak_cs_manifest:manifests_from_riak_object(RiakObject), - _ = lager:info("Number of histories after sibling resolution: ~p.~n", - [length(Manifests)]), + logger:info("Number of histories after sibling resolution: ~p.~n", [length(Manifests)]), ObjectToWrite0 = riak_cs_utils:update_obj_value( RiakObject, riak_cs_utils:encode_term(Manifests)), @@ -315,7 +314,7 @@ maybe_cleanup_csbucket(RcPidForOneBucket, BucketName, {ok, RiakObj}, Timestamp) {ok, Count} -> io:format(" aborted ~p uploads.~n", [Count]); Error -> - lager:warning("Error in deleting old uploads: ~p~n", [Error]), + logger:warning("Error in deleting old uploads: ~p~n", [Error]), io:format("Error in deleting old uploads: ~p <<< ~n", [Error]), Error end; @@ -332,6 +331,6 @@ maybe_cleanup_csbucket(RcPidForOneBucket, BucketName, {ok, RiakObj}, Timestamp) maybe_cleanup_csbucket(_, _, {error, notfound}, _) -> ok; maybe_cleanup_csbucket(_, BucketName, {error, _} = Error, _) -> - lager:error("~p on processing ~s", [Error, BucketName]), + logger:error("~p on processing ~s", [Error, BucketName]), io:format("Error: ~p on processing ~s\n", [Error, BucketName]), Error. diff --git a/apps/riak_cs/src/riak_cs_copy_object.erl b/apps/riak_cs/src/riak_cs_copy_object.erl index 61c4affa1..fbc543eb4 100644 --- a/apps/riak_cs/src/riak_cs_copy_object.erl +++ b/apps/riak_cs/src/riak_cs_copy_object.erl @@ -76,7 +76,7 @@ authorize_on_src(RcPid, SrcManifest, RD, {undefined, undefined} end, - _ = lager:debug("UserKey: ~p / ~p", [UserKey, User]), + logger:debug("UserKey: ~p / ~p", [UserKey, User]), %% Build fake context for checking read access to the src object OtherLocalCtx = LocalCtx#key_context{bucket=SrcBucket, @@ -91,8 +91,8 @@ authorize_on_src(RcPid, SrcManifest, RD, %% TODO: use unicode module for for key? or is this encoded? Path = string:join(["/buckets", binary_to_list(SrcBucket), "objects", binary_to_list(SrcKey)], "/"), - _ = lager:debug("raw path: ~p => ~p", [wrq:raw_path(RD), Path]), - _ = lager:debug("src bucket obj: ~p", [SrcBucketObj]), + logger:debug("raw path: ~p => ~p", [wrq:raw_path(RD), Path]), + logger:debug("src bucket obj: ~p", [SrcBucketObj]), OtherRD0 = wrq:create('GET', wrq:version(RD), Path, wrq:req_headers(RD)), OtherRD = wrq:load_dispatch_data([{bucket, binary_to_list(SrcBucket)}, {object, binary_to_list(SrcKey)}], @@ -246,7 +246,7 @@ get_and_put(GetPid, PutPid, MD5, ContFun) -> get_and_put(GetPid, PutPid, MD5, ContFun) end; false -> - _ = lager:debug("Connection lost during a copy", []), + logger:debug("Connection lost during a copy", []), catch riak_cs_get_fsm:stop(GetPid), catch riak_cs_put_fsm:force_stop(PutPid), {error, connection_lost} diff --git a/apps/riak_cs/src/riak_cs_delete_fsm.erl b/apps/riak_cs/src/riak_cs_delete_fsm.erl index 7e825c82a..c5da8346a 100644 --- a/apps/riak_cs/src/riak_cs_delete_fsm.erl +++ b/apps/riak_cs/src/riak_cs_delete_fsm.erl @@ -204,9 +204,9 @@ handle_receiving_manifest(State=#state{manifest=Manifest, start_block_servers(NewState); {error, invalid_state} -> {Bucket, Key} = Manifest?MANIFEST.bkey, - _ = lager:warning("Invalid state manifest in GC bucket at ~p, " - "bucket=~p key=~p: ~p", - [GCKey, Bucket, Key, Manifest]), + logger:warning("Invalid state manifest in GC bucket at ~p, " + "bucket=~p key=~p: ~p", + [GCKey, Bucket, Key, Manifest]), %% If total blocks and deleted blocks are the same, %% gc worker attempt to delete the manifest in fileset. %% Then manifests and blocks becomes orphan. @@ -258,7 +258,7 @@ maybe_delete_blocks(State=#state{bucket=Bucket, NewUnackedDeletes = ordsets:add_element(BlockID, UnackedDeletes), NewDeleteBlocksRemaining = ordsets:del_element(BlockID, DeleteBlocksRemaining), {UUID, Seq} = BlockID, - _ = lager:debug("Deleting block: ~p ~p ~p ~p", [Bucket, Key, UUID, Seq]), + logger:debug("Deleting block: ~p ~p ~p ~p", [Bucket, Key, UUID, Seq]), riak_cs_block_server:delete_block(DeleterPid, Bucket, Key, UUID, Seq), NewFreeDeleters = ordsets:del_element(DeleterPid, FreeDeleters), maybe_delete_blocks(State#state{unacked_deletes=NewUnackedDeletes, diff --git a/apps/riak_cs/src/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl index 361fa0989..f4d21c9ee 100644 --- a/apps/riak_cs/src/riak_cs_gc.erl +++ b/apps/riak_cs/src/riak_cs_gc.erl @@ -218,7 +218,7 @@ handle_mark_as_pending_delete({ok, RiakObject}, Bucket, Key, UUIDsToMark, RcPid) end; handle_mark_as_pending_delete({error, _Error}=Error, _Bucket, _Key, _UUIDsToMark, _RcPid) -> - _ = lager:warning("Failed to mark as pending_delete, reason: ~p", [Error]), + logger:warning("Failed to mark as pending_delete, reason: ~p", [Error]), Error. %% @doc Return the number of seconds to wait after finishing garbage @@ -393,7 +393,7 @@ maybe_delete_small_objects(Manifests, RcPid, Threshold) -> when ContentLength < Threshold -> %% actually this won't be scheduled :P UUIDManifest = {UUID, Manifest?MANIFEST{state=scheduled_delete}}, - _ = lager:debug("trying to delete ~p at ~p", [UUIDManifest, BagId]), + logger:debug("trying to delete ~p at ~p", [UUIDManifest, BagId]), case try_delete_blocks(BagId, UUIDManifest) of ok -> {Survivors, [UUID|UUIDsToDelete]}; @@ -403,8 +403,8 @@ maybe_delete_small_objects(Manifests, RcPid, Threshold) -> end; ({UUID, M}, {Survivors, UUIDsToDelete}) -> ContentLength = M?MANIFEST.content_length, - _ = lager:debug("~p is not being deleted: (CL, threshold)=(~p, ~p)", - [UUID, ContentLength, Threshold]), + logger:debug("~p is not being deleted: (CL, threshold)=(~p, ~p)", + [UUID, ContentLength, Threshold]), {[{UUID, M}|Survivors], UUIDsToDelete} end, %% Obtain a new history! @@ -419,18 +419,17 @@ try_delete_blocks(BagId, {UUID, _} = UUIDManifest) -> case riak_cs_delete_fsm:sync_delete(Pid) of {Pid, {ok, {_, _, _, TotalBlocks, TotalBlocks}}} -> %% all the blocks are successfully deleted - _ = lager:debug("Active deletion of ~p succeeded", [UUID]), + logger:debug("Active deletion of ~p succeeded", [UUID]), ok; {Pid, {ok, {_, _, _, NumDeleted, TotalBlocks}}} -> - _ = lager:debug("Only ~p/~p blocks of ~p deleted", - [NumDeleted, TotalBlocks, UUID]), + logger:debug("Only ~p/~p blocks of ~p deleted", + [NumDeleted, TotalBlocks, UUID]), {error, partially_deleted}; {Pid, {error, _} = E} -> - _ = lager:warning("Active deletion of ~p failed. Reason: ~p", - [UUID, E]), + logger:warning("Active deletion of ~p failed. Reason: ~p", [UUID, E]), E; Other -> - _ = lager:error("Active deletion failed. Reason: ~p", [Other]), + logger:error("Active deletion failed. Reason: ~p", [Other]), {error, Other} end. @@ -463,7 +462,7 @@ move_manifests_to_gc_bucket(Manifests, RcPid) -> end, %% Create a set from the list of manifests - _ = lager:debug("Manifests scheduled for deletion: ~p", [ManifestSet]), + logger:debug("Manifests scheduled for deletion: ~p", [ManifestSet]), Timeout1 = riak_cs_config:put_gckey_timeout(), riak_cs_pbc:put(ManifestPbc, ObjectToWrite, [], Timeout1, [riakc, put_gc_manifest_set]). diff --git a/apps/riak_cs/src/riak_cs_gc_batch.erl b/apps/riak_cs/src/riak_cs_gc_batch.erl index 6bec9d2ea..6e9b191d9 100644 --- a/apps/riak_cs/src/riak_cs_gc_batch.erl +++ b/apps/riak_cs/src/riak_cs_gc_batch.erl @@ -100,22 +100,22 @@ init([#gc_batch_state{ 1000000000 =< EndKey -> %% StartKey < EndKey %% EndKey <= BatchStart - Leeway - _ = lager:info("Starting garbage collection: " - "(start, end) = (~p, ~p), " - "leeway=~p, batch_start=~p, max_workers=~p, page-size=~p", - [StartKey, EndKey, Leeway, BatchStart, MaxWorkers, BatchSize]), + logger:info("Starting garbage collection: " + "(start, end) = (~p, ~p), " + "leeway=~p, batch_start=~p, max_workers=~p, page-size=~p", + [StartKey, EndKey, Leeway, BatchStart, MaxWorkers, BatchSize]), {ok, prepare, State, 0}; DefaultEndKey -> - _ = lager:error("GC did not start: " - "End of GC target period was too recent (~p > ~p)", - [EndKey, DefaultEndKey]), + logger:error("GC did not start: " + "End of GC target period was too recent (~p > ~p)", + [EndKey, DefaultEndKey]), {stop, {error, invalid_gc_end_key}} end; init([#gc_batch_state{start_key=StartKey, end_key=EndKey}]) -> - _ = lager:error("GC did not start due to wrong GC target period: " - "(start, end) = (~p, ~p)", - [StartKey, EndKey]), + logger:error("GC did not start due to wrong GC target period: " + "(start, end) = (~p, ~p)", + [StartKey, EndKey]), {stop, {error, invalid_gc_start_key}}. @@ -177,20 +177,20 @@ handle_info(_Info, StateName, State) -> %% @doc TODO: log warnings if this fsm is asked to terminate in the %% middle of running a gc batch terminate(normal, _StateName, State) -> - _ = lager:info("Finished garbage collection: " + logger:info("Finished garbage collection: " + "~b seconds, ~p batch_count, ~p batch_skips, " + "~p manif_count, ~p block_count\n", + [elapsed(State?STATE.batch_start), State?STATE.batch_count, + State?STATE.batch_skips, State?STATE.manif_count, + State?STATE.block_count]), + riak_cs_gc_manager:finished(State); +terminate(cancel, _StateName, State) -> + logger:warning("Garbage collection has been canceled: " "~b seconds, ~p batch_count, ~p batch_skips, " "~p manif_count, ~p block_count\n", [elapsed(State?STATE.batch_start), State?STATE.batch_count, State?STATE.batch_skips, State?STATE.manif_count, State?STATE.block_count]), - riak_cs_gc_manager:finished(State); -terminate(cancel, _StateName, State) -> - _ = lager:warning("Garbage collection has been canceled: " - "~b seconds, ~p batch_count, ~p batch_skips, " - "~p manif_count, ~p block_count\n", - [elapsed(State?STATE.batch_start), State?STATE.batch_count, - State?STATE.batch_skips, State?STATE.manif_count, - State?STATE.block_count]), ok; terminate(_Reason, _StateName, _State) -> ok. @@ -230,7 +230,7 @@ fetch_first_keys(?STATE{batch_start=_BatchStart, {KeyListRes, KeyListState} = riak_cs_gc_key_list:new(StartKey, EndKey, BatchSize), #gc_key_list_result{bag_id=BagId, batch=Batch} = KeyListRes, - _ = lager:debug("Initial batch keys: ~p", [Batch]), + logger:debug("Initial batch keys: ~p", [Batch]), State?STATE{batch=Batch, key_list_state=KeyListState, bag_id=BagId}. @@ -248,7 +248,7 @@ handle_batch_complete(WorkerPid, WorkerState, State) -> batch_skips=WorkerBatchSkips, manif_count=WorkerManifestCount, block_count=WorkerBlockCount} = WorkerState, - _ = lager:debug("~p completed (~p)", [WorkerPid, WorkerState]), + logger:debug("~p completed (~p)", [WorkerPid, WorkerState]), UpdWorkerPids = lists:delete(WorkerPid, WorkerPids), %% @TODO Workout the terminiology for these stats. i.e. Is batch %% count just an increment or represenative of something else. @@ -267,7 +267,7 @@ start_worker(?STATE{batch=[NextBatch|RestBatches], worker_pids=WorkerPids} = State) -> case ?GC_WORKER:start_link(BagId, NextBatch) of {ok, Pid} -> - _ = lager:debug("GC worker ~p for bag ~p has started", [Pid, BagId]), + logger:debug("GC worker ~p for bag ~p has started", [Pid, BagId]), State?STATE{batch=RestBatches, worker_pids=[Pid | WorkerPids]}; {error, _Reason} -> @@ -279,8 +279,8 @@ start_worker(?STATE{batch=[NextBatch|RestBatches], cancel_batch(?STATE{batch_start=BatchStart, worker_pids=WorkerPids}=_State) -> %% Interrupt the batch of deletes - _ = lager:info("Canceled garbage collection batch after ~b seconds.", - [elapsed(BatchStart)]), + logger:info("Canceled garbage collection batch after ~b seconds.", + [elapsed(BatchStart)]), [riak_cs_gc_worker:stop(P) || P <- WorkerPids]. -spec ok_reply(atom(), ?STATE{}) -> {reply, ok, atom(), ?STATE{}}. @@ -305,7 +305,7 @@ maybe_start_workers(?STATE{max_workers=MaxWorkers, %% Fetch the next set of manifests for deletion {KeyListRes, UpdKeyListState} = riak_cs_gc_key_list:next(KeyListState), #gc_key_list_result{bag_id=BagId, batch=Batch} = KeyListRes, - _ = lager:debug("Next batch keys: ~p", [Batch]), + logger:debug("Next batch keys: ~p", [Batch]), State2 = State?STATE{batch=Batch, key_list_state=UpdKeyListState, bag_id=BagId}, @@ -317,7 +317,7 @@ maybe_start_workers(?STATE{max_workers=MaxWorkers, worker_pids=WorkerPids, batch=Batch} = State) when MaxWorkers > length(WorkerPids) -> - _ = lager:debug("Batch: ~p", [Batch, WorkerPids]), + logger:debug("Batch: ~p", [Batch, WorkerPids]), State2 = start_worker(State), maybe_start_workers(State2). diff --git a/apps/riak_cs/src/riak_cs_gc_key_list.erl b/apps/riak_cs/src/riak_cs_gc_key_list.erl index 586e0de9f..0848b9d54 100644 --- a/apps/riak_cs/src/riak_cs_gc_key_list.erl +++ b/apps/riak_cs/src/riak_cs_gc_key_list.erl @@ -57,7 +57,7 @@ next(#gc_key_list_state{current_riak_client=RcPid, continuation=Continuation} = State) -> {Batch, UpdContinuation} = fetch_eligible_manifest_keys(RcPid, StartKey, EndKey, BatchSize, Continuation), - lager:debug("next Batch: ~p~n", [Batch]), + logger:debug("next Batch: ~p~n", [Batch]), {#gc_key_list_result{bag_id=BagId, batch=Batch}, State#gc_key_list_state{continuation=UpdContinuation}}. @@ -81,15 +81,15 @@ next_pool(#gc_key_list_state{ ok = riak_cs_riak_client:set_manifest_bag(RcPid, BagId), {Batch, Continuation} = fetch_eligible_manifest_keys(RcPid, StartKey, EndKey, BatchSize, undefined), - lager:debug("next_bag ~s Batch: ~p~n", [BagId, Batch]), + logger:debug("next_bag ~s Batch: ~p~n", [BagId, Batch]), {#gc_key_list_result{bag_id=BagId, batch=Batch}, State#gc_key_list_state{remaining_bags=Rest, current_riak_client=RcPid, current_bag_id=BagId, continuation=Continuation}}; {error, Reason} -> - lager:error("Connection error for bag ~s in garbage collection: ~p", - [BagId, Reason]), + logger:error("Connection error for bag ~s in garbage collection: ~p", + [BagId, Reason]), next_pool(State#gc_key_list_state{remaining_bags=Rest}) end. @@ -121,9 +121,9 @@ eligible_manifest_keys({{ok, ?INDEX_RESULTS{keys=Keys}}, _}, false, BatchSize) -> split_eligible_manifest_keys(BatchSize, Keys, []); eligible_manifest_keys({{error, Reason}, {StartKey, EndKey}}, _, _) -> - _ = lager:warning("Error occurred trying to query from time ~p to ~p" - "in gc key index. Reason: ~p", - [StartKey, EndKey, Reason]), + logger:warning("Error occurred trying to query from time ~p to ~p" + "in gc key index. Reason: ~p", + [StartKey, EndKey, Reason]), []. %% @doc Break a list of gc-eligible keys from the GC bucket into smaller sets diff --git a/apps/riak_cs/src/riak_cs_gc_manager.erl b/apps/riak_cs/src/riak_cs_gc_manager.erl index a97e8bd44..92bf37a57 100644 --- a/apps/riak_cs/src/riak_cs_gc_manager.erl +++ b/apps/riak_cs/src/riak_cs_gc_manager.erl @@ -138,8 +138,8 @@ init([]) -> Interval2 = Interval + InitialDelay, Next = riak_cs_gc:timestamp() + Interval2, TimerRef = erlang:send_after(Interval2 * 1000, self(), {start, []}), - _ = lager:info("Scheduled next batch at ~s", - [riak_cs_gc_console:human_time(Next)]), + logger:info("Scheduled next batch at ~s", + [riak_cs_gc_console:human_time(Next)]), #gc_manager_state{next=Next, interval=Interval, @@ -215,7 +215,7 @@ handle_info({'EXIT', Pid, Reason}, _StateName, #gc_manager_state{gc_batch_pid=Pid} = State) -> case Reason of Reason when Reason =/= normal andalso Reason =/= cancel -> - _ = lager:warning("GC batch has terminated for reason: ~p", [Reason]); + logger:warning("GC batch has terminated for reason: ~p", [Reason]); _ -> ok end, @@ -226,7 +226,7 @@ handle_info({start, Options}, idle, State) -> {ok, NextState} -> {next_state, running, NextState}; Error -> - _ = lager:error("Cannot start batch. Reason: ~p", [Error]), + logger:error("Cannot start batch. Reason: ~p", [Error]), NextState = schedule_next(State), {next_state, idle, NextState} end; @@ -235,8 +235,8 @@ handle_info({start, _}, running, State) -> {next_state, running, State}; handle_info(Info, StateName, State) -> %% This is really unexpected and unknown - warning. - _ = lager:warning("Unexpected message received at GC process (~p): ~p", - [StateName, Info]), + logger:warning("Unexpected message received at GC process (~p): ~p", + [StateName, Info]), {next_state, StateName, State}. %% @private @@ -320,7 +320,7 @@ schedule_next(#gc_manager_state{timer_ref=Ref}=State) false -> schedule_next(State#gc_manager_state{timer_ref=undefined}); _ -> - _ = lager:debug("Timer is already scheduled, maybe manually triggered?"), + logger:debug("Timer is already scheduled, maybe manually triggered?"), %% Timer is already scheduled, do nothing State end; @@ -331,8 +331,7 @@ schedule_next(#gc_manager_state{interval=Interval}=State) -> RevisedNext = riak_cs_gc:timestamp() + Interval, TimerValue = Interval * 1000, TimerRef = erlang:send_after(TimerValue, self(), {start, []}), - _ = lager:info("Scheduled next batch at ~s", - [riak_cs_gc_console:human_time(RevisedNext)]), + logger:info("Scheduled next batch at ~s", [riak_cs_gc_console:human_time(RevisedNext)]), State#gc_manager_state{next=RevisedNext, timer_ref=TimerRef}. diff --git a/apps/riak_cs/src/riak_cs_gc_worker.erl b/apps/riak_cs/src/riak_cs_gc_worker.erl index 6798ac551..66f89949b 100644 --- a/apps/riak_cs/src/riak_cs_gc_worker.erl +++ b/apps/riak_cs/src/riak_cs_gc_worker.erl @@ -235,9 +235,9 @@ fetch_next_fileset(ManifestSetKey, RcPid) -> {error, notfound}=Error -> Error; {error, Reason}=Error -> - _ = lager:info("Error occurred trying to read the fileset" - " for ~p for gc. Reason: ~p", - [ManifestSetKey, Reason]), + logger:info("Error occurred trying to read the fileset" + " for ~p for gc. Reason: ~p", + [ManifestSetKey, Reason]), riak_cs_pbc:check_connection_status(ManifestPbc, fetch_next_fileset), Error end. @@ -257,7 +257,7 @@ finish_file_delete(0, _, RiakObj, RcPid) -> Timeout, [riakc, delete_gc_manifest_set]), ok; finish_file_delete(_, FileSet, _RiakObj, _RcPid) -> - _ = lager:debug("Remaining file keys: ~p", [twop_set:to_list(FileSet)]), + logger:debug("Remaining file keys: ~p", [twop_set:to_list(FileSet)]), %% NOTE: we used to do a PUT here, but now with multidc replication %% we run garbage collection seprarately on each cluster, so we don't %% want to send this update to another data center. When we delete this diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl index 4b9c86015..d35d8e4d8 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm.erl @@ -219,7 +219,7 @@ waiting_continue_or_stop({continue, Range}, #state{manifest=Manifest, [] -> %% We should never get here because empty %% files are handled by the wm resource. - _ = lager:warning("~p:~p has no blocks", [BucketName, Key]), + logger:warning("~p:~p has no blocks", [BucketName, Key]), {stop, normal, State}; [InitialBlock|_] -> TotalBlocks = length(BlocksOrder), @@ -230,7 +230,7 @@ waiting_continue_or_stop({continue, Range}, #state{manifest=Manifest, FreeReaders = riak_cs_block_server:start_block_servers(Manifest, RcPid, FetchConcurrency), - _ = lager:debug("Block Servers: ~p", [FreeReaders]); + logger:debug("Block Servers: ~p", [FreeReaders]); _ -> FreeReaders = Readers end, @@ -246,8 +246,7 @@ waiting_continue_or_stop({continue, Range}, #state{manifest=Manifest, end. waiting_continue_or_stop(Event, From, State) -> - _ = lager:info("Pid ~p got unknown event ~p from ~p\n", - [self(), Event, From]), + logger:info("Pid ~p got unknown event ~p from ~p", [self(), Event, From]), {next_state, waiting_continue_or_stop, State}. waiting_chunks(get_next_chunk, From, State=#state{num_sent=TotalNumBlocks, @@ -281,7 +280,7 @@ perhaps_send_to_user(From, #state{got_blocks=Got, {{value, NextBlock}, UpdIntransit} -> case orddict:find(NextBlock, Got) of {ok, Block} -> - _ = lager:debug("Returning block ~p to client", [NextBlock]), + logger:debug("Returning block ~p to client", [NextBlock]), %% Must use gen_fsm:reply/2 here! We are shared %% with an async event func and must return next_state. gen_fsm:reply(From, {chunk, Block}), @@ -297,7 +296,7 @@ waiting_chunks(stop, State) -> {stop, normal, State}; waiting_chunks(timeout, State = #state{got_blocks = Got}) -> GotSize = orddict:size(Got), - _ = lager:debug("starting fetch again with ~p left in queue", [GotSize]), + logger:debug("starting fetch again with ~p left in queue", [GotSize]), UpdState = read_blocks(State), {next_state, waiting_chunks, UpdState}; @@ -310,12 +309,12 @@ waiting_chunks({chunk, Pid, {NextBlock, BlockReturnValue}}, skip_bytes_initial=SkipInitial, keep_bytes_final=KeepFinal }=State) -> - _ = lager:debug("Retrieved block ~p", [NextBlock]), + logger:debug("Retrieved block ~p", [NextBlock]), case BlockReturnValue of {error, _} = ErrorRes -> #state{bucket=Bucket, key=Key} = State, - _ = lager:error("~p: Cannot get S3 ~p ~p block# ~p: ~p\n", - [?MODULE, Bucket, Key, NextBlock, ErrorRes]), + logger:error("~p: Cannot get S3 ~p ~p block# ~p: ~p", + [?MODULE, Bucket, Key, NextBlock, ErrorRes]), %% Our terminate() will explicitly stop dependent processes, %% we don't need an abnormal exit to kill them for us. exit(normal); @@ -328,7 +327,7 @@ waiting_chunks({chunk, Pid, {NextBlock, BlockReturnValue}}, {InitialBlock, FinalBlock}, {SkipInitial, KeepFinal}), UpdGot = orddict:store(NextBlock, BlockValue, Got), - %% TODO: _ = lager:debug("BlocksLeft: ~p", [BlocksLeft]), + %% TODO: logger:debug("BlocksLeft: ~p", [BlocksLeft]), GotSize = orddict:size(UpdGot), UpdState0 = State#state{got_blocks = UpdGot, free_readers = [Pid|FreeReaders]}, MaxGotSize = riak_cs_lfs_utils:get_fsm_buffer_size_factor(), @@ -408,7 +407,7 @@ prepare(#state{bucket=Bucket, {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, RcPid), case riak_cs_manifest_fsm:get_active_manifest(ManiPid) of {ok, Manifest} -> - _ = lager:debug("Manifest: ~p", [Manifest]), + logger:debug("Manifest: ~p", [Manifest]), case riak_cs_mp_utils:clean_multipart_unused_parts(Manifest, RcPid) of same -> State#state{manifest=Manifest, diff --git a/apps/riak_cs/src/riak_cs_json.erl b/apps/riak_cs/src/riak_cs_json.erl index dda831d97..ca5181b87 100644 --- a/apps/riak_cs/src/riak_cs_json.erl +++ b/apps/riak_cs/src/riak_cs_json.erl @@ -88,7 +88,7 @@ to_json([]) -> -spec value_or_default({ok, term()} | {error, term()}, term()) -> term(). value_or_default({error, Reason}, Default) -> - _ = lager:debug("JSON error: ~p", [Reason]), + logger:debug("JSON error: ~p", [Reason]), Default; value_or_default({ok, Value}, _) -> Value. diff --git a/apps/riak_cs/src/riak_cs_keystone_auth.erl b/apps/riak_cs/src/riak_cs_keystone_auth.erl index 7728ba54e..ed02c818b 100644 --- a/apps/riak_cs/src/riak_cs_keystone_auth.erl +++ b/apps/riak_cs/src/riak_cs_keystone_auth.erl @@ -132,8 +132,7 @@ handle_token_info_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, TokenInfo} handle_token_info_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, _}}) -> failed; handle_token_info_response({error, Reason}) -> - _ = lager:warning("Error occurred requesting token from keystone. Reason: ~p", - [Reason]), + logger:warning("Error occurred requesting token from keystone. Reason: ~p", [Reason]), failed. parse_auth_header("AWS " ++ Key) -> diff --git a/apps/riak_cs/src/riak_cs_kv_multi_backend.erl b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl index 9b8939e18..329928af5 100644 --- a/apps/riak_cs/src/riak_cs_kv_multi_backend.erl +++ b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl @@ -425,8 +425,8 @@ backend_fix_index({_, Mod, ModState}, Bucket, StorageKey, ForUpgrade) -> {reply, Reply, _UpModState} -> Reply; {error, Reason} -> - _ = lager:error("Failed to fix index for bucket ~p, key ~p, backend ~p: ~p", - [Bucket, StorageKey, Mod, Reason]), + logger:error("Failed to fix index for bucket ~p, key ~p, backend ~p: ~p", + [Bucket, StorageKey, Mod, Reason]), {0, 0, length(StorageKey)} end. diff --git a/apps/riak_cs/src/riak_cs_lfs_utils.erl b/apps/riak_cs/src/riak_cs_lfs_utils.erl index 722f850d6..92d1c4d46 100644 --- a/apps/riak_cs/src/riak_cs_lfs_utils.erl +++ b/apps/riak_cs/src/riak_cs_lfs_utils.erl @@ -119,9 +119,9 @@ initial_blocks(ContentLength, SafeBlockSize, UUID) -> range_blocks(Start, End, SafeBlockSize, UUID) -> SkipInitial = Start rem SafeBlockSize, KeepFinal = (End rem SafeBlockSize) + 1, - _ = lager:debug("InitialBlock: ~p, FinalBlock: ~p~n", - [Start div SafeBlockSize, End div SafeBlockSize]), - _ = lager:debug("SkipInitial: ~p, KeepFinal: ~p~n", [SkipInitial, KeepFinal]), + logger:debug("InitialBlock: ~p, FinalBlock: ~p~n", + [Start div SafeBlockSize, End div SafeBlockSize]), + logger:debug("SkipInitial: ~p, KeepFinal: ~p~n", [SkipInitial, KeepFinal]), {[{UUID, B} || B <- lists:seq(Start div SafeBlockSize, End div SafeBlockSize)], SkipInitial, KeepFinal}. @@ -171,8 +171,8 @@ block_sort_fun(SafeBlockSize) -> block_sequences_for_part_manifests_skip(SafeBlockSize, [PM | Rest], StartOffset, EndOffset) -> - _ = lager:debug("StartOffset: ~p, EndOffset: ~p, PartLength: ~p~n", - [StartOffset, EndOffset, PM?PART_MANIFEST.content_length]), + logger:debug("StartOffset: ~p, EndOffset: ~p, PartLength: ~p~n", + [StartOffset, EndOffset, PM?PART_MANIFEST.content_length]), case PM?PART_MANIFEST.content_length of %% Skipped PartLength when PartLength =< StartOffset -> @@ -195,8 +195,8 @@ block_sequences_for_part_manifests_skip(SafeBlockSize, [PM | Rest], block_sequences_for_part_manifests_keep(SafeBlockSize, SkipInitial, [PM | Rest], EndOffset, ListOfBlocks) -> - _ = lager:debug("EndOffset: EndOffset: ~p, PartLength: ~p~n", - [EndOffset, PM?PART_MANIFEST.content_length]), + logger:debug("EndOffset: EndOffset: ~p, PartLength: ~p~n", + [EndOffset, PM?PART_MANIFEST.content_length]), case PM?PART_MANIFEST.content_length of %% More blocks needed PartLength when PartLength =< EndOffset -> diff --git a/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl index 4f6425013..71a6ea41a 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl @@ -72,11 +72,11 @@ start_link() -> -spec lookup(binary()) -> cache_lookup_result(). lookup(Key) -> try - _ = lager:debug("Reading info for ~p from cache", [Key]), + logger:debug("Reading info for ~p from cache", [Key]), format_lookup_result(ets:lookup(default_ets_table(), Key)) catch _:Reason -> - _ = lager:warning("List objects cache lookup failed. Reason: ~p", [Reason]), + logger:warning("List objects cache lookup failed. Reason: ~p", [Reason]), false end. @@ -100,7 +100,7 @@ write(Key, Value) -> unsafe_write(Key, Value) catch _:Reason -> - _ = lager:warning("List objects cache write failed. Reason: ~p", [Reason]), + logger:warning("List objects cache write failed. Reason: ~p", [Reason]), ok end. @@ -136,7 +136,7 @@ handle_call({can_write, {CacheKey, MonitorPid, NumKeys}}, end, {reply, Bool, NewState}; handle_call(Msg, _From, State) -> - _ = lager:debug("got unknown message: ~p", [Msg]), + logger:debug("got unknown message: ~p", [Msg]), {reply, ok, State}. handle_cast(_Msg, State) -> @@ -227,7 +227,7 @@ num_keys_to_bytes(NumKeys) -> unsafe_write(Key, Value) -> TS = riak_cs_utils:second_resolution_timestamp(os:timestamp()), - _ = lager:debug("Writing entry for ~p to LO Cache", [Key]), + logger:debug("Writing entry for ~p to LO Cache", [Key]), ets:insert(default_ets_table(), {Key, Value, TS}), ok. diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl index 336af0502..5ef554231 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl @@ -228,7 +228,7 @@ handle_sync_event(get_internal_state, _From, StateName, State) -> Reply = {StateName, State}, {reply, Reply, StateName, State}; handle_sync_event(Event, _From, StateName, State) -> - _ = lager:debug("got unknown event ~p in state ~p", [Event, StateName]), + logger:debug("got unknown event ~p in state ~p", [Event, StateName]), Reply = ok, {reply, Reply, StateName, State}. @@ -275,10 +275,10 @@ maybe_write_to_cache(#state{cache_key=CacheKey, CallerPid, ListOfListOfKeysLength) of true -> - _ = lager:debug("writing to the cache"), + logger:debug("writing to the cache"), riak_cs_list_objects_ets_cache:write(CacheKey, ListofListofKeys); false -> - _ = lager:debug("not writing to the cache"), + logger:debug("not writing to the cache"), ok end. @@ -288,12 +288,12 @@ maybe_write_to_cache(#state{cache_key=CacheKey, -spec fetch_key_list(riak_client(), list_object_request(), state(), cache_lookup_result()) -> fsm_state_return(). fetch_key_list(_, _, State, {true, Value}) -> - _ = lager:debug("Using cached key list"), + logger:debug("Using cached key list"), NewState = prepare_state_for_first_mapred(Value, State#state{key_buffer=Value}), maybe_map_reduce(NewState); fetch_key_list(RcPid, Request, State, false) -> - _ = lager:debug("Requesting fresh key list"), + logger:debug("Requesting fresh key list"), handle_streaming_list_keys_call( make_list_keys_request(RcPid, Request), State). @@ -668,8 +668,8 @@ update_state_with_mr_end_profiling(State=#state{req_profiles=Profiling}) -> State#state{req_profiles=Profiling2}. print_profiling(Profiling) -> - _ = lager:debug(format_list_keys_profile(Profiling)), - _ = lager:debug(format_map_reduce_profile(Profiling)). + logger:debug(format_list_keys_profile(Profiling)), + logger:debug(format_map_reduce_profile(Profiling)). format_list_keys_profile(#profiling{list_keys_start_time=undefined, list_keys_num_results=NumResults}) -> diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl index 7e05ecea3..7a60a7ea9 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl @@ -172,7 +172,7 @@ handle_sync_event(get_internal_state, _From, StateName, State) -> Reply = {StateName, State}, {reply, Reply, StateName, State}; handle_sync_event(Event, _From, StateName, State) -> - _ = lager:debug("got unknown event ~p in state ~p", [Event, StateName]), + logger:debug("got unknown event ~p in state ~p", [Event, StateName]), Reply = ok, {reply, Reply, StateName, State}. @@ -182,12 +182,11 @@ handle_sync_event(Event, _From, StateName, State) -> handle_info(Info, waiting_object_list, State) -> waiting_object_list(Info, State); handle_info(Info, StateName, _State) -> - _ = lager:debug("Received unknown info message ~p" - "in state ~p", [Info, StateName]), + logger:debug("Received unknown info message ~p in state ~p", [Info, StateName]), ok. terminate(normal, _StateName, State) -> - lager:debug(format_profiling_from_state(State)); + logger:debug(format_profiling_from_state(State)); terminate(_Reason, _StateName, _State) -> ok. @@ -228,7 +227,7 @@ handle_done(State=#state{object_buffer=ObjectBuffer, common_prefixes=NewPrefixes, reached_end_of_keyspace=ReachedEnd, object_buffer=[]}, - _ = lager:debug("Ranges: ~p", [NewStateData#state.object_list_ranges]), + logger:debug("Ranges: ~p", [NewStateData#state.object_list_ranges]), respond(NewStateData, NewManis, NewPrefixes). -spec reached_end_of_keyspace(non_neg_integer(), diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl index 72e196624..5893a1f40 100644 --- a/apps/riak_cs/src/riak_cs_manifest.erl +++ b/apps/riak_cs/src/riak_cs_manifest.erl @@ -150,6 +150,6 @@ maybe_warn_bloated_manifests(Bucket, Key, Actual, Threshold, Message, Unit) -> case Threshold of disabled -> ok; _ when Actual < Threshold -> ok; - _ -> _ = lager:warning("~s (~p ~s) for bucket=~p key=~p", - [Message, Actual, Unit, Bucket, Key]) + _ -> logger:warning("~s (~p ~s) for bucket=~p key=~p", + [Message, Actual, Unit, Bucket, Key]) end. diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl index de193073f..59ceb55a5 100644 --- a/apps/riak_cs/src/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/riak_cs_manifest_fsm.erl @@ -390,7 +390,7 @@ maybe_backpressure_sleep(Siblings, _BackpressureThreshold) -> MeanSleepMS = min(Coefficient * Siblings, MaxSleep), Delta = MeanSleepMS div 2, SleepMS = crypto:rand_uniform(MeanSleepMS - Delta, MeanSleepMS + Delta), - lager:debug("maybe_backpressure_sleep: Siblings=~p, SleepMS=~p~n", [Siblings, SleepMS]), + logger:debug("maybe_backpressure_sleep: Siblings=~p, SleepMS=~p~n", [Siblings, SleepMS]), ok = riak_cs_stats:countup([manifest, siblings_bp_sleep]), ok = timer:sleep(SleepMS), true. diff --git a/apps/riak_cs/src/riak_cs_mb_helper.erl b/apps/riak_cs/src/riak_cs_mb_helper.erl index 9d01ad895..97f38080d 100644 --- a/apps/riak_cs/src/riak_cs_mb_helper.erl +++ b/apps/riak_cs/src/riak_cs_mb_helper.erl @@ -84,7 +84,7 @@ get_cluster_id(BagId) -> {ok, Pbc} = riak_cs_utils:riak_connection(PbcPool), try ClusterId = riak_cs_pbc:get_cluster_id(Pbc), - lager:info("Cluster ID for bag ~p : ~p", [BagId, ClusterId]), + logger:info("Cluster ID for bag ~p : ~p", [BagId, ClusterId]), ClusterId after riak_cs_utils:close_riak_connection(PbcPool, Pbc) diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 250dd1f0a..ba01208b8 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -104,9 +104,9 @@ clean_multipart_unused_parts(?MANIFEST{bkey=BKey, props=Props} = Manifest, RcPid UpdManifest = Manifest?MANIFEST{props=[multipart_clean|Props]}, ok = update_manifest_with_confirmation(RcPid, UpdManifest) catch X:Y -> - lager:debug("clean_multipart_unused_parts: " - "bkey ~p: ~p ~p @ ~p\n", - [BKey, X, Y, erlang:get_stacktrace()]) + logger:debug("clean_multipart_unused_parts: " + "bkey ~p: ~p ~p @ ~p\n", + [BKey, X, Y, erlang:get_stacktrace()]) end, %% Return same value to caller, regardless of ok/catch updated; @@ -684,7 +684,7 @@ comb_parts(MpM, PartETags) -> KeepPartIDs = [PM?PART_MANIFEST.part_id || PM <- KeepPMs], ToDelete = [PM || PM <- Parts, not lists:member(PM?PART_MANIFEST.part_id, KeepPartIDs)], - lager:debug("Part count to be deleted at completion = ~p~n", [length(ToDelete)]), + logger:debug("Part count to be deleted at completion = ~p~n", [length(ToDelete)]), {KeepBytes, riak_cs_utils:md5_final(MD5Context), lists:reverse(KeepPMs), ToDelete}. comb_parts_fold({LastPartNum, LastPartETag} = _K, diff --git a/apps/riak_cs/src/riak_cs_oos_response.erl b/apps/riak_cs/src/riak_cs_oos_response.erl index 9a841136c..0a4f05fe6 100644 --- a/apps/riak_cs/src/riak_cs_oos_response.erl +++ b/apps/riak_cs/src/riak_cs_oos_response.erl @@ -156,7 +156,7 @@ error_message(invalid_range) -> "The requested range is not satisfiable"; error_message(invalid_bucket_name) -> "The specified bucket is not valid."; error_message(not_implemented) -> "A request you provided implies functionality that is not implemented"; error_message(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:debug("Unknown error: ~p", [ErrorName]), "Please reduce your request rate.". -spec error_code(atom() | {'riak_connect_failed', term()}) -> string(). @@ -192,7 +192,7 @@ error_code(invalid_bucket_name) -> "InvalidBucketName"; error_code(unresolved_grant_email) -> "UnresolvableGrantByEmailAddress"; error_code(not_implemented) -> "NotImplemented"; error_code(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:debug("Unknown error: ~p", [ErrorName]), "ServiceUnavailable". %% These should match: @@ -234,5 +234,5 @@ status_code(invalid_range) -> 416; status_code(invalid_bucket_name) -> 400; status_code(not_implemented) -> 501; status_code(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:debug("Unknown error: ~p", [ErrorName]), 503. diff --git a/apps/riak_cs/src/riak_cs_oos_utils.erl b/apps/riak_cs/src/riak_cs_oos_utils.erl index ef272ec85..0631410bc 100644 --- a/apps/riak_cs/src/riak_cs_oos_utils.erl +++ b/apps/riak_cs/src/riak_cs_oos_utils.erl @@ -83,8 +83,8 @@ handle_user_data_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, _}}) -> %% @TODO Log error undefined; handle_user_data_response({error, Reason}) -> - _ = lager:warning("Error occurred requesting user data from keystone. Reason: ~p", - [Reason]), + logger:warning("Error occurred requesting user data from keystone. Reason: ~p", + [Reason]), undefined. handle_ec2_creds_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, CredsInfo}}, TenantId) @@ -95,8 +95,8 @@ handle_ec2_creds_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, _}}, _) -> %% @TODO Log error {undefined, []}; handle_ec2_creds_response({error, Reason}, _) -> - _ = lager:warning("Error occurred requesting user EC2 credentials from keystone. Reason: ~p", - [Reason]), + logger:warning("Error occurred requesting user EC2 credentials from keystone. Reason: ~p", + [Reason]), {undefined, []}. ec2_creds_for_tenant({error, decode_failed}, _) -> diff --git a/apps/riak_cs/src/riak_cs_pbc.erl b/apps/riak_cs/src/riak_cs_pbc.erl index 218c6c206..a72806ae4 100644 --- a/apps/riak_cs/src/riak_cs_pbc.erl +++ b/apps/riak_cs/src/riak_cs_pbc.erl @@ -207,13 +207,11 @@ check_connection_status(Pbc, Where) -> case riakc_pb_socket:is_connected(Pbc) of true -> ok; Other -> - _ = lager:warning("Connection status of ~p at ~p: ~p", - [Pbc, Where, Other]) + logger:warning("Connection status of ~p at ~p: ~p", [Pbc, Where, Other]) end catch Type:Error -> - _ = lager:warning("Connection status of ~p at ~p: ~p", - [Pbc, Where, {Type, Error}]) + logger:warning("Connection status of ~p at ~p: ~p", [Pbc, Where, {Type, Error}]) end. %% @doc Pause for a while so that underlying `riaic_pb_socket' can have @@ -230,7 +228,7 @@ pause_to_reconnect(_Pbc, _Other, _Timeout) -> ok. pause_to_reconnect0(Pbc, Timeout, Start) -> - lager:debug("riak_cs_pbc:pause_to_reconnect0"), + logger:debug("riak_cs_pbc:pause_to_reconnect0"), case riakc_pb_socket:is_connected(Pbc, ?FIRST_RECONNECT_INTERVAL) of true -> ok; {false, _} -> diff --git a/apps/riak_cs/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl index 9fc21c3cf..6c1386453 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm.erl @@ -309,7 +309,7 @@ done(finalize, false, From, State=#state{manifest=Manifest, ok = maybe_update_manifest_with_confirmation(ManiPid, NotActive), gen_fsm:reply(From, {error, invalid_digest}), - _ = lager:debug("Invalid digest in the PUT FSM"), + logger:debug("Invalid digest in the PUT FSM"), {stop, normal, State}; done(finalize, true, From, State=#state{manifest=Manifest, mani_pid=ManiPid, @@ -328,12 +328,11 @@ done(finalize, true, From, State=#state{manifest=Manifest, -spec is_digest_valid(binary(), undefined | string()) -> boolean(). is_digest_valid(D1, undefined) -> %% reported MD5 is not in request header - _ = lager:debug("Calculated = ~p, Reported = undefined~n", [D1]), + logger:debug("Calculated = ~p, Reported = undefined~n", [D1]), true; is_digest_valid(CalculatedMD5, ReportedMD5) -> StringCalculatedMD5 = base64:encode(CalculatedMD5), - _ = lager:debug("Calculated = ~p, Reported = ~p~n", - [StringCalculatedMD5, ReportedMD5]), + logger:debug("Calculated = ~p, Reported = ~p~n", [StringCalculatedMD5, ReportedMD5]), StringCalculatedMD5 =:= list_to_binary(ReportedMD5). %%-------------------------------------------------------------------- @@ -351,7 +350,7 @@ handle_sync_event(current_state, _From, StateName, State) -> handle_sync_event(force_stop, _From, _StateName, State = #state{mani_pid=ManiPid, uuid=UUID}) -> Res = riak_cs_manifest_fsm:gc_specific_manifest(ManiPid, UUID), - lager:debug("Manifest collection on upload failure: ~p", [Res]), + logger:debug("Manifest collection on upload failure: ~p", [Res]), {stop, normal, Res, State}; handle_sync_event(_Event, _From, StateName, State) -> Reply = ok, diff --git a/apps/riak_cs/src/riak_cs_quota.erl b/apps/riak_cs/src/riak_cs_quota.erl index cadd6cccd..35a99ef76 100644 --- a/apps/riak_cs/src/riak_cs_quota.erl +++ b/apps/riak_cs/src/riak_cs_quota.erl @@ -117,7 +117,7 @@ invoke_all_callbacks(Owner, Access, Ctx0) -> {ok, _, _} = R-> R; {error, Reason} -> - lager:debug("quota check failed at ~p: ~p", [Module, Reason]), + logger:debug("quota check failed at ~p: ~p", [Module, Reason]), {error, Module, Reason, RD, Ctx} end; (_, Other) -> @@ -128,7 +128,7 @@ invoke_all_callbacks(Owner, Access, Ctx0) -> update_all_states(User, LogData) -> Modules = riak_cs_config:quota_modules(), [begin - lager:debug("quota update at ~p: ~p", [Module, User]), + logger:debug("quota update at ~p: ~p", [Module, User]), (catch Module:update(list_to_binary(User), LogData)) end || Module <- Modules]. diff --git a/apps/riak_cs/src/riak_cs_riak_client.erl b/apps/riak_cs/src/riak_cs_riak_client.erl index c0c961fb7..5eb798bab 100644 --- a/apps/riak_cs/src/riak_cs_riak_client.erl +++ b/apps/riak_cs/src/riak_cs_riak_client.erl @@ -334,7 +334,7 @@ get_user_with_pbc(MasterPbc, Key, false) -> {error, <<"{pr_val_unsatisfied,", _/binary>>} -> weak_get_user_with_pbc(MasterPbc, Key); {error, Reason} -> - _ = lager:warning("Fetching user record with strong option failed: ~p", [Reason]), + logger:warning("Fetching user record with strong option failed: ~p", [Reason]), Timeout = riak_cs_config:get_user_timeout(), _ = riak_cs_pbc:pause_to_reconnect(MasterPbc, Reason, Timeout), weak_get_user_with_pbc(MasterPbc, Key) diff --git a/apps/riak_cs/src/riak_cs_s3_auth.erl b/apps/riak_cs/src/riak_cs_s3_auth.erl index 073c8d7f4..a8a97a1a2 100644 --- a/apps/riak_cs/src/riak_cs_s3_auth.erl +++ b/apps/riak_cs/src/riak_cs_s3_auth.erl @@ -139,7 +139,7 @@ parse_auth_v4_header(String) -> parse_auth_v4_header([], UserId, Acc) -> {UserId, {v4, lists:reverse(Acc)}}; parse_auth_v4_header([KV | KVs], UserId, Acc) -> - lager:debug("Auth header ~p~n", [KV]), + logger:debug("Auth header ~p~n", [KV]), case string:tokens(KV, "=") of [Key, Value] -> case Key of @@ -188,7 +188,7 @@ calculate_signature_v2(KeyData, RD) -> Date, AmazonHeaders, Resource], - _ = lager:debug("STS: ~p", [STS]), + logger:debug("STS: ~p", [STS]), base64:encode_to_string(riak_cs_utils:sha_mac(KeyData, STS)). @@ -204,14 +204,14 @@ authenticate_v4(?RCS_USER{key_secret = SecretAccessKey} = _User, AuthAttrs, RD) authenticate_v4(SecretAccessKey, AuthAttrs, Method, Path, Qs, AllHeaders) -> CanonicalRequest = canonical_request_v4(AuthAttrs, Method, Path, Qs, AllHeaders), - _ = lager:debug("CanonicalRequest(v4):~n~s~nEND-OF-CANONICAL-REQUEST", [CanonicalRequest]), + logger:debug("CanonicalRequest(v4):~n~s~nEND-OF-CANONICAL-REQUEST", [CanonicalRequest]), {StringToSign, Scope} = string_to_sign_v4(AuthAttrs, AllHeaders, CanonicalRequest), - _ = lager:debug("StringToSign(v4):~n~s~nEND-OF-STRING-TO-SIGN", [StringToSign]), + logger:debug("StringToSign(v4):~n~s~nEND-OF-STRING-TO-SIGN", [StringToSign]), CalculatedSignature = calculate_signature_v4(SecretAccessKey, Scope, StringToSign), - _ = lager:debug("CalculatedSignature(v4): ~s", [CalculatedSignature]), + logger:debug("CalculatedSignature(v4): ~s", [CalculatedSignature]), {"Signature", PresentedSignature} = lists:keyfind("Signature", 1, AuthAttrs), - _ = lager:debug("PresentedSignature(v4) : ~s", [PresentedSignature]), + logger:debug("PresentedSignature(v4) : ~s", [PresentedSignature]), case CalculatedSignature of PresentedSignature -> ok; _ -> {error, {unmatched_signature, PresentedSignature, CalculatedSignature}} diff --git a/apps/riak_cs/src/riak_cs_s3_policy.erl b/apps/riak_cs/src/riak_cs_s3_policy.erl index a33b49b5e..4e4d60de0 100644 --- a/apps/riak_cs/src/riak_cs_s3_policy.erl +++ b/apps/riak_cs/src/riak_cs_s3_policy.erl @@ -129,7 +129,7 @@ check_version(?POLICY{version = ?AMZ_DEFAULT_VERSION}) -> check_version(?POLICY{version = ?AMZ_POLICY_OLD_VERSION}) -> true; check_version(?POLICY{version = Version}) -> - _ = lager:debug("unknown version: ~p", [Version]), + logger:debug("unknown version: ~p", [Version]), false. % @doc confirm if forbidden action included in policy @@ -233,7 +233,7 @@ policy_from_json(JSON) -> E; {'EXIT', {{case_clause, B}, _}} when is_binary(B) -> %% mochiweb failed to parse the JSON - _ = lager:debug("~p", [B]), + logger:debug("~p", [B]), {error, malformed_policy_json} end. @@ -258,10 +258,10 @@ supported_bucket_action() -> ?SUPPORTED_BUCKET_ACTION. %% to make policy json parser safer by using erlang:binary_to_existing_atom/2. -spec log_supported_actions() -> ok. log_supported_actions()-> - _ = lager:info("supported object actions: ~p", - [lists:map(fun atom_to_list/1, supported_object_action())]), - _ = lager:info("supported bucket actions: ~p", - [lists:map(fun atom_to_list/1, supported_bucket_action())]), + logger:info("supported object actions: ~p", + [lists:map(fun atom_to_list/1, supported_object_action())]), + logger:info("supported bucket actions: ~p", + [lists:map(fun atom_to_list/1, supported_bucket_action())]), ok. %% @doc Fetch the policy for a bucket @@ -279,9 +279,8 @@ fetch_bucket_policy(Bucket, RcPid) -> Contents = riakc_obj:get_contents(Obj), bucket_policy_from_contents(Bucket, Contents); {error, Reason} -> - _ = lager:debug("Failed to fetch policy. Bucket ~p " - " does not exist. Reason: ~p", - [Bucket, Reason]), + logger:debug("Failed to fetch policy. Bucket ~p does not exist. Reason: ~p", + [Bucket, Reason]), {error, notfound} end. diff --git a/apps/riak_cs/src/riak_cs_s3_response.erl b/apps/riak_cs/src/riak_cs_s3_response.erl index 8ca63ebb6..4c27fca99 100644 --- a/apps/riak_cs/src/riak_cs_s3_response.erl +++ b/apps/riak_cs/src/riak_cs_s3_response.erl @@ -114,7 +114,7 @@ error_message(remaining_multipart_upload) -> "Concurrent multipart upload initia error_message(disconnected) -> "Please contact administrator."; error_message(not_implemented) -> "A request you provided implies functionality that is not implemented"; error_message(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:debug("Unknown error: ~p", [ErrorName]), "Please reduce your request rate.". -spec error_code(error_reason()) -> string(). @@ -165,7 +165,7 @@ error_code(remaining_multipart_upload) -> "MultipartUploadRemaining"; error_code(disconnected) -> "ServiceUnavailable"; error_code(not_implemented) -> "NotImplemented"; error_code(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:debug("Unknown error: ~p", [ErrorName]), "ServiceUnavailable". %% These should match: @@ -223,7 +223,7 @@ status_code(remaining_multipart_upload) -> 409; status_code(disconnected) -> 500; status_code(not_implemented) -> 501; status_code(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:debug("Unknown error: ~p", [ErrorName]), 503. -spec respond(term(), #wm_reqdata{}, #context{}) -> @@ -406,7 +406,7 @@ process_xml_error([]) -> process_xml_error([#xmlText{value=" "}|Rest]) -> process_xml_error(Rest); process_xml_error([HeadElement | RestElements]) -> - _ = lager:debug("Element name: ~p", [HeadElement#xmlElement.name]), + logger:debug("Element name: ~p", [HeadElement#xmlElement.name]), ElementName = HeadElement#xmlElement.name, case ElementName of 'Code' -> diff --git a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl index d2a69bfb3..7bf8f0b59 100644 --- a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl +++ b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl @@ -113,12 +113,12 @@ refresher() -> end, receive reset -> - lager:debug("reset received: ~p", [?MODULE]), + logger:debug("reset received: ~p", [?MODULE]), refresher(); _ -> ets:delete(?MODULE) after IntervalSec * 1000 -> - lager:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), + logger:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), ets:delete_all_objects(?MODULE), refresher() end. @@ -127,7 +127,7 @@ refresher() -> allow(Owner, #access_v1{req = RD} = _Access, Ctx) -> OwnerKey = list_to_binary(riak_cs_user:key_id(Owner)), - lager:debug("access => ~p", [OwnerKey]), + logger:debug("access => ~p", [OwnerKey]), UserState = case ets:lookup(?MODULE, OwnerKey) of [UserState0] -> UserState0; [] -> new_user_state(OwnerKey) @@ -143,20 +143,20 @@ allow(Owner, #access_v1{req = RD} = _Access, Ctx) -> ok -> {ok, RD, Ctx}; {error, {_, Current, Threshold}} = Error -> - lager:warning("User ~p has exceeded access limit: usage, limit = ~p, ~p (/sec)", - [OwnerKey, Current, Threshold]), + logger:warning("User ~p has exceeded access limit: usage, limit = ~p, ~p (/sec)", + [OwnerKey, Current, Threshold]), Error end; {error, {_, Current, Threshold}} = Error2 -> - lager:warning("User ~p has exceeded bandwidth limit: usage, limit = ~p, ~p (bytes/sec)", - [OwnerKey, Current, Threshold]), + logger:warning("User ~p has exceeded bandwidth limit: usage, limit = ~p, ~p (bytes/sec)", + [OwnerKey, Current, Threshold]), Error2 end. -spec new_user_state(binary()) -> #user_state{}. new_user_state(User) -> UserState = #user_state{user = User}, - lager:debug("quota init: ~p => ~p", [User, UserState]), + logger:debug("quota init: ~p => ~p", [User, UserState]), %% Here's a race condition where if so many concurrent access %% come, each access can yield a new fresh state and then %% receives not access limitation. @@ -210,16 +210,16 @@ update(User, [_, _] = R -> ok; Error0 -> - lager:warning("something wrong? ~p", [Error0]), + logger:warning("something wrong? ~p", [Error0]), {error, Error0} end catch error:badarg -> %% record not just found here - lager:debug("Cache of ~p (maybe not found)", [User]), + logger:debug("Cache of ~p (maybe not found)", [User]), ok; Type:Error -> %% TODO: show out stacktrace heah - _ = lager:warning("something wrong? ~p", [Error]), + logger:warning("something wrong? ~p", [Error]), {error, {Type, Error}} end. diff --git a/apps/riak_cs/src/riak_cs_simple_quota.erl b/apps/riak_cs/src/riak_cs_simple_quota.erl index 49a032516..c71c0c1a9 100644 --- a/apps/riak_cs/src/riak_cs_simple_quota.erl +++ b/apps/riak_cs/src/riak_cs_simple_quota.erl @@ -101,12 +101,12 @@ refresher() -> end, receive reset -> - lager:debug("reset received: ~p", [?MODULE]), + logger:debug("reset received: ~p", [?MODULE]), refresher(); _ -> ets:delete(?MODULE) after IntervalSec * 1000 -> - lager:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), + logger:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), ets:delete_all_objects(?MODULE), refresher() end. @@ -118,7 +118,7 @@ refresher() -> {error, {disk_quota, non_neg_integer(), non_neg_integer()}}. allow(Owner, #access_v1{req = RD, method = 'PUT'} = _Access, Ctx) -> OwnerKey = iolist_to_binary(riak_cs_user:key_id(Owner)), - lager:debug("access => ~p", [OwnerKey]), + logger:debug("access => ~p", [OwnerKey]), {_, Usage} = case ets:lookup(?MODULE, OwnerKey) of [{OwnerKey, _Usage} = UserState0] -> UserState0; @@ -133,8 +133,8 @@ allow(Owner, #access_v1{req = RD, method = 'PUT'} = _Access, Ctx) -> Quota < 0 -> {ok, RD, Ctx}; Usage < Quota -> {ok, RD, Ctx}; true -> - lager:warning("User ~s has exceeded it's quota: usage, quota = ~p, ~p (bytes)", - [OwnerKey, Usage, Quota]), + logger:warning("User ~s has exceeded it's quota: usage, quota = ~p, ~p (bytes)", + [OwnerKey, Usage, Quota]), {error, {disk_quota, Usage, Quota}} end; allow(_Owner, #access_v1{req = RD} = _Access, Ctx) -> @@ -148,7 +148,7 @@ maybe_usage(User0, _Ctx = #context{riak_client=RiakClient}) -> User = binary_to_list(User0), Usage = case get_latest_usage(RiakClient, User) of {error, notfound} -> - lager:warning("No storage stats data was found. Starting as no usage."), + logger:warning("No storage stats data was found. Starting as no usage."), 0; {ok, Usages} -> sum_all_buckets(lists:last(Usages)) @@ -185,7 +185,7 @@ update(User, ets:update_counter(?MODULE, User, Bytes) catch Type:Error -> %% TODO: show out stacktrace heah - lager:warning("something wrong? ~p", [Error]), + logger:warning("something wrong? ~p", [Error]), {error, {Type, Error}} end; update(_, _) -> diff --git a/apps/riak_cs/src/riak_cs_stanchion_console.erl b/apps/riak_cs/src/riak_cs_stanchion_console.erl index b9fc60940..1fd49a065 100644 --- a/apps/riak_cs/src/riak_cs_stanchion_console.erl +++ b/apps/riak_cs/src/riak_cs_stanchion_console.erl @@ -60,7 +60,7 @@ switch([Host, Port]) -> ok = application:set_env(riak_cs, stanchion_host, {Host, NewPort}), Msg2 = io_lib:format("Succesfully switched stanchion to ~s:~s: This change is only effective until restart.", [Host, Port]), - _ = lager:info(Msg2), + logger:info(Msg2), io:format("~s~nTo make permanent change, be sure to edit configuration file.~n", [Msg2]) end, Msg); switch(_) -> diff --git a/apps/riak_cs/src/riak_cs_stats.erl b/apps/riak_cs/src/riak_cs_stats.erl index 2689197c5..bcb084e11 100644 --- a/apps/riak_cs/src/riak_cs_stats.erl +++ b/apps/riak_cs/src/riak_cs_stats.erl @@ -231,7 +231,7 @@ safe_update(ExometerKey, Arg) -> case exometer:update(ExometerKey, Arg) of ok -> ok; {error, Reason} -> - lager:warning("Stats update for key ~p error: ~p", [ExometerKey, Reason]), + logger:warning("Stats update for key ~p error: ~p", [ExometerKey, Reason]), ok end. @@ -331,10 +331,10 @@ metric_to_atom(Key, Suffix) -> -include_lib("eunit/include/eunit.hrl"). stats_test_() -> - Apps = [setup, compiler, syntax_tools, goldrush, lager, exometer_core], + Apps = [setup, compiler, syntax_tools, goldrush, exometer_core], {setup, fun() -> - application:set_env(lager, handlers, []), + logger:update_primary_config(#{level => none}), [catch (application:start(App)) || App <- Apps], ok = init() end, diff --git a/apps/riak_cs/src/riak_cs_storage.erl b/apps/riak_cs/src/riak_cs_storage.erl index eb58a5da2..c498e2a44 100644 --- a/apps/riak_cs/src/riak_cs_storage.erl +++ b/apps/riak_cs/src/riak_cs_storage.erl @@ -77,9 +77,9 @@ maybe_sum_bucket(User, ?RCS_BUCKET{name=Name} = _Bucket, Detailed, LeewayEdge) case sum_bucket(Name, Detailed, LeewayEdge) of {struct, _} = BucketUsage -> {Name, BucketUsage}; {error, _} = E -> - _ = lager:error("failed to calculate usage of " - "bucket '~s' of user '~s'. Reason: ~p", - [Name, User, E]), + logger:error("failed to calculate usage of " + "bucket '~s' of user '~s'. Reason: ~p", + [Name, User, E]), {Name, iolist_to_binary(io_lib:format("~p", [E]))} end. diff --git a/apps/riak_cs/src/riak_cs_storage_d.erl b/apps/riak_cs/src/riak_cs_storage_d.erl index a0914f5e3..e68986b7a 100644 --- a/apps/riak_cs/src/riak_cs_storage_d.erl +++ b/apps/riak_cs/src/riak_cs_storage_d.erl @@ -149,8 +149,8 @@ idle(_, State) -> %% from the outside world (like `status'). calculating(continue, #state{batch=[], current=Current}=State) -> %% finished with this batch - _ = lager:info("Finished storage calculation in ~b seconds.", - [elapsed(State#state.batch_start)]), + logger:info("Finished storage calculation in ~b seconds.", + [elapsed(State#state.batch_start)]), riak_cs_riak_client:stop(State#state.riak_client), NewState = State#state{riak_client=undefined, last=Current, @@ -200,12 +200,12 @@ calculating({manual_batch, _Options}, _From, State) -> %% this is the manual user request to begin a batch {reply, {error, already_calculating}, calculating, State}; calculating(pause_batch, _From, State) -> - _ = lager:info("Pausing storage calcluation"), + logger:info("Pausing storage calcluation"), {reply, ok, paused, State}; calculating(cancel_batch, _From, #state{current=Current}=State) -> %% finished with this batch - _ = lager:info("Canceled storage calculation after ~b seconds.", - [elapsed(State#state.batch_start)]), + logger:info("Canceled storage calculation after ~b seconds.", + [elapsed(State#state.batch_start)]), riak_cs_riak_client:stop(State#state.riak_client), NewState = State#state{riak_client=undefined, last=Current, @@ -219,7 +219,7 @@ paused(status, From, State) -> {reply, {ok, {_, Status}}, _, State} = calculating(status, From, State), {reply, {ok, {paused, Status}}, paused, State}; paused(resume_batch, _From, State) -> - _ = lager:info("Resuming storage calculation"), + logger:info("Resuming storage calculation"), gen_fsm:send_event(?SERVER, continue), {reply, ok, calculating, State}; paused(cancel_batch, From, State) -> @@ -243,9 +243,9 @@ handle_info({start_batch, Next}, idle, #state{next=Next}=State) -> {next_state, calculating, NewState}; handle_info({start_batch, Next}, InBatch, #state{next=Next, current=Current}=State) -> - _ = lager:error("Unable to start storage calculation for ~p" - " because ~p is still working. Skipping forward...", - [Next, Current]), + logger:error("Unable to start storage calculation for ~p" + " because ~p is still working. Skipping forward...", + [Next, Current]), NewState = schedule_next(State, Next), {next_state, InBatch, NewState}; handle_info(_Info, StateName, State) -> @@ -280,8 +280,8 @@ read_storage_schedule() -> read_storage_schedule1() -> case application:get_env(riak_cs, storage_schedule) of undefined -> - _ = lager:warning("No storage schedule defined." - " Calculation must be triggered manually."), + logger:warning("No storage schedule defined." + " Calculation must be triggered manually."), []; {ok, Sched} -> case catch parse_time(Sched) of @@ -293,13 +293,13 @@ read_storage_schedule1() -> _ = case [ X || {X,{'EXIT',_}} <- Times ] of [] -> ok; Bad -> - _ = lager:error( + logger:error( "Ignoring bad storage schedule elements ~p", [Bad]) end, case [ Parsed || {_, {ok, Parsed}} <- Times] of [] -> - _ = lager:warning( + logger:warning( "No storage schedule defined." " Calculation must be triggered manually."), []; @@ -307,7 +307,7 @@ read_storage_schedule1() -> Good end; _ -> - _ = lager:error( + logger:error( "Invalid storage schedule defined." " Calculation must be triggered manually."), [] @@ -340,12 +340,12 @@ start_batch(Options, Time, State) -> LeewayEdge = {LeewayEdgeTs div 1000000, LeewayEdgeTs rem 1000000, 0}, _ = case Detailed of true -> - lager:info("Starting storage calculation: " - "recalc=~p, detailed=~p, leeway edge=~p", - [Recalc, Detailed, - calendar:now_to_universal_time(LeewayEdge)]); + logger:info("Starting storage calculation: " + "recalc=~p, detailed=~p, leeway edge=~p", + [Recalc, Detailed, + calendar:now_to_universal_time(LeewayEdge)]); _ -> - lager:info("Starting storage calculation: recalc=~p", [Recalc]) + logger:info("Starting storage calculation: recalc=~p", [Recalc]) end, %% TODO: probably want to do this fetch streaming, to avoid %% accidental memory pressure at other points @@ -361,9 +361,8 @@ start_batch(Options, Time, State) -> case riak_cs_user:fetch_user_keys(RcPid) of {ok, UserKeys} -> UserKeys; {error, Error} -> - _ = lager:error("Storage calculator was unable" - " to fetch list of users (~p)", - [Error]), + logger:error("Storage calculator was unable to fetch list of users (~p)", + [Error]), [] end, @@ -392,8 +391,8 @@ calculate_next_user(#state{riak_client=RcPid, End = calendar:universal_time(), store_user(State, User, BucketList, Start, End); {error, Error} -> - _ = lager:error("Error computing storage for user ~s (~p)", - [User, Error]) + logger:error("Error computing storage for user ~s (~p)", + [User, Error]) end, State#state{batch=Rest, batch_count=1+State#state.batch_count}; false -> @@ -424,8 +423,8 @@ store_user(#state{riak_client=RcPid}, User, BucketList, Start, End) -> case riak_cs_pbc:put(MasterPbc, Obj, Timeout, [riakc, put_storage]) of ok -> ok; {error, Error} -> - _ = lager:error("Error storing storage for user ~s (~p)", - [User, Error]) + logger:error("Error storing storage for user ~s (~p)", + [User, Error]) end. %% @doc How many seconds have passed from `Time' to now. @@ -451,14 +450,13 @@ schedule_next(#state{schedule=Schedule}=State, Last) -> NextTime = next_target_time(Last, Schedule), case elapsed(calendar:universal_time(), NextTime) of D when D > 0 -> - _ = lager:info("Scheduling next storage calculation for ~p", - [NextTime]), + logger:info("Scheduling next storage calculation for ~p", [NextTime]), erlang:send_after(D*1000, self(), {start_batch, NextTime}), State#state{next=NextTime}; _ -> - _ = lager:error("Missed start time for storage calculation at ~p," - " skipping to next scheduled time...", - [NextTime]), + logger:error("Missed start time for storage calculation at ~p," + " skipping to next scheduled time...", + [NextTime]), %% just skip everything until the next scheduled time from now schedule_next(State, calendar:universal_time()) end. diff --git a/apps/riak_cs/src/riak_cs_storage_mr.erl b/apps/riak_cs/src/riak_cs_storage_mr.erl index 8fc48a75e..f4156c7c0 100644 --- a/apps/riak_cs/src/riak_cs_storage_mr.erl +++ b/apps/riak_cs/src/riak_cs_storage_mr.erl @@ -162,7 +162,7 @@ objs_bytes_and_blocks_non_mp(?MANIFEST{state=State, content_length=CL, block_siz BlockCount = riak_cs_lfs_utils:block_count(CL, BS), {non_mp, State, {1, CL, BlockCount}}; objs_bytes_and_blocks_non_mp(?MANIFEST{state=State} = _M) -> - lager:debug("Strange manifest: ~p~n", [_M]), + logger:debug("Strange manifest: ~p~n", [_M]), %% The branch above is for content_length is properly set. This %% is true for non-MP v2 auth case but not always true for v4 of %% streaming sha256 check of writing. To avoid error, ignore @@ -263,9 +263,8 @@ count_multipart_parts({_UUID, ?MANIFEST{props=Props, state=writing} = M}, Acc; Other -> %% strange thing happened - _ = lager:log(warning, self(), - "strange writing multipart manifest detected at ~p: ~p", - [M?MANIFEST.bkey, Other]), + logger:warning("strange writing multipart manifest detected at ~p: ~p", + [M?MANIFEST.bkey, Other]), Acc end; count_multipart_parts(_, Acc) -> diff --git a/apps/riak_cs/src/riak_cs_user.erl b/apps/riak_cs/src/riak_cs_user.erl index abff91db6..d9d9a2dcb 100644 --- a/apps/riak_cs/src/riak_cs_user.erl +++ b/apps/riak_cs/src/riak_cs_user.erl @@ -162,7 +162,7 @@ from_riakc_obj(Obj, KeepDeletedBuckets) -> User = update_user_record(hd(Values)), KeyId = User?RCS_USER.key_id, - _ = lager:warning("User object of '~s' has ~p siblings", [KeyId, N]), + logger:warning("User object of '~s' has ~p siblings", [KeyId, N]), Buckets = riak_cs_bucket:resolve_buckets(Values, [], KeepDeletedBuckets), User?RCS_USER{buckets=Buckets} @@ -194,9 +194,9 @@ get_user_index(Index, Value, RcPid) -> {ok, ?INDEX_RESULTS{keys=[Key | _]}} -> {ok, binary_to_list(Key)}; {error, Reason}=Error -> - _ = lager:warning("Error occurred trying to query ~p in user" - "index ~p. Reason: ~p", - [Value, Index, Reason]), + logger:warning("Error occurred trying to query ~p in user" + " index ~p. Reason: ~p", + [Value, Index, Reason]), Error end. diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index dd67208ec..d4052dc4d 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -197,15 +197,12 @@ maybe_process_resolved(Object, ResolvedManifestsHandler, ErrorReturn) -> ResolvedManifestsHandler(Resolved) catch Type:Reason -> StackTrace = erlang:get_stacktrace(), - _ = lager:log(error, - self(), - "Riak CS object mapreduce failed for ~p:~p with reason ~p:~p" - "at ~p", - [riak_object:bucket(Object), - riak_object:key(Object), - Type, - Reason, - StackTrace]), + logger:error("Riak CS object mapreduce failed for ~p:~p with reason ~p:~p at ~p", + [riak_object:bucket(Object), + riak_object:key(Object), + Type, + Reason, + StackTrace]), ErrorReturn end. diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl index 2594b86aa..0a8e37fc8 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl @@ -78,7 +78,7 @@ handle_with_bucket_obj({error, notfound}, RD, handle_with_bucket_obj({error, _} = Error, RD, #context{response_module=ResponseMod} = Ctx) -> - _ = lager:debug("bucket error: ~p", [Error]), + logger:debug("bucket error: ~p", [Error]), ResponseMod:api_error(Error, RD, Ctx); handle_with_bucket_obj({ok, BucketObj}, @@ -94,7 +94,7 @@ handle_with_bucket_obj({ok, BucketObj}, %% Delete Multiple Objects accepts a request to delete up to 1000 Objects. ResponseMod:api_error(malformed_xml, RD, Ctx); {ok, BinKeys} -> - lager:debug("deleting keys at ~p: ~p", [Bucket, BinKeys]), + logger:debug("deleting keys at ~p: ~p", [Bucket, BinKeys]), Policy = riak_cs_wm_utils:translate_bucket_policy(PolicyMod, BucketObj), CanonicalId = riak_cs_wm_utils:extract_canonical_id(User), diff --git a/apps/riak_cs/src/riak_cs_wm_common.erl b/apps/riak_cs/src/riak_cs_wm_common.erl index 018bd9875..1c3627535 100644 --- a/apps/riak_cs/src/riak_cs_wm_common.erl +++ b/apps/riak_cs/src/riak_cs_wm_common.erl @@ -221,8 +221,8 @@ maybe_create_user({error, disconnected}=Error, _, _, _, _, RcPid) -> riak_cs_pbc:check_connection_status(MasterPid, maybe_create_user), Error; maybe_create_user({error, Reason}=Error, _, Api, _, _, _) -> - _ = lager:error("Retrieval of user record for ~p failed. Reason: ~p", - [Api, Reason]), + logger:error("Retrieval of user record for ~p failed. Reason: ~p", + [Api, Reason]), Error. %% @doc Get the list of methods a resource supports. @@ -478,31 +478,31 @@ post_authentication({ok, User, UserObj}, RD, Ctx, Authorize, _) -> user_object=UserObj}); post_authentication({error, no_user_key}, RD, Ctx, Authorize, true) -> %% no keyid was given, proceed anonymously - _ = lager:debug("No user key"), + logger:debug("No user key"), Authorize(RD, Ctx); post_authentication({error, no_user_key}, RD, Ctx, _, false) -> %% no keyid was given, deny access - _ = lager:debug("No user key, deny"), + logger:debug("No user key, deny"), riak_cs_wm_utils:deny_access(RD, Ctx); post_authentication({error, bad_auth}, RD, Ctx, _, _) -> %% given keyid was found, but signature didn't match - _ = lager:debug("bad_auth"), + logger:debug("bad_auth"), riak_cs_wm_utils:deny_access(RD, Ctx); post_authentication({error, reqtime_tooskewed} = Error, RD, #context{response_module = ResponseMod} = Ctx, _, _) -> - _ = lager:debug("reqtime_tooskewed"), + logger:debug("reqtime_tooskewed"), ResponseMod:api_error(Error, RD, Ctx); post_authentication({error, {auth_not_supported, AuthType}}, RD, #context{response_module=ResponseMod} = Ctx, _, _) -> - _ = lager:debug("auth_not_supported: ~s", [AuthType]), + logger:debug("auth_not_supported: ~s", [AuthType]), ResponseMod:api_error({auth_not_supported, AuthType}, RD, Ctx); post_authentication({error, notfound}, RD, Ctx, _, _) -> - _ = lager:debug("User does not exist"), + logger:debug("User does not exist"), riak_cs_wm_utils:deny_invalid_key(RD, Ctx); post_authentication({error, Reason}, RD, #context{response_module=ResponseMod} = Ctx, _, _) -> %% Lookup failed, basically due to disconnected stuff - _ = lager:debug("Authentication error: ~p", [Reason]), + logger:debug("Authentication error: ~p", [Reason]), ResponseMod:api_error(Reason, RD, Ctx). update_stats_inflow(_RD, undefined = _StatsPrefix) -> diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index e8254e292..82cefbe41 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -245,7 +245,7 @@ delete_resource(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> %% @private handle_delete_object({error, Error}, UserName, BFile_str, RD, Ctx) -> - _ = lager:error("delete object failed with reason: ~p", [Error]), + logger:error("delete object failed with reason: ~p", [Error]), riak_cs_dtrace:dt_object_return(?MODULE, <<"object_delete">>, [0], [UserName, BFile_str]), {false, RD, Ctx}; handle_delete_object({ok, _UUIDsMarkedforDelete}, UserName, BFile_str, RD, Ctx) -> @@ -352,7 +352,7 @@ handle_normal_put(RD, Ctx) -> %% einval} or disconnected stuff, any errors prevents this %% manifests from being uploaded anymore Res = riak_cs_put_fsm:force_stop(Pid), - _ = lager:debug("PUT FSM force_stop: ~p Reason: ~p", [Res, {Type, Error}]), + logger:debug("PUT FSM force_stop: ~p Reason: ~p", [Res, {Type, Error}]), error({Type, Error}) end. @@ -387,8 +387,8 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey) -> {false, _, _} -> %% start copying - _ = lager:debug("copying! > ~s ~s => ~s ~s via ~p", - [SrcBucket, SrcKey, Bucket, Key, ReadRcPid]), + logger:debug("copying! > ~s ~s => ~s ~s via ~p", + [SrcBucket, SrcKey, Bucket, Key, ReadRcPid]), {ContentType, Metadata} = riak_cs_copy_object:new_metadata(SrcManifest, RD), @@ -416,7 +416,7 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey) -> %% in different return value ResponseMod:api_error(copy_source_access_denied, RD, Ctx); {Result, _, _} = Error -> - _ = lager:debug("~p on ~s ~s", [Result, SrcBucket, SrcKey]), + logger:debug("~p on ~s ~s", [Result, SrcBucket, SrcKey]), Error end; diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl index f99b729ac..2277b05f3 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl @@ -128,7 +128,7 @@ process_post(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> RcPid) of {ok, NewManifest} -> ETag = riak_cs_manifest:etag(NewManifest), - _ = lager:debug("checksum of all parts checksum: ~p", [ETag]), + logger:debug("checksum of all parts checksum: ~p", [ETag]), XmlDoc = {'CompleteMultipartUploadResult', [{'xmlns', "http://s3.amazonaws.com/doc/2006-03-01/"}], [ @@ -419,8 +419,8 @@ maybe_copy_part(PutPid, case riak_cs_copy_object:test_condition_and_permission(ReadRcPid, SrcManifest, RD, Ctx) of {false, _, _} -> - _ = lager:debug("Start copying! > ~s ~s => ~s ~s via ~p", - [SrcBucket, SrcKey, DstBucket, DstKey, ReadRcPid]), + logger:debug("Start copying! > ~s ~s => ~s ~s via ~p", + [SrcBucket, SrcKey, DstBucket, DstKey, ReadRcPid]), %% Prepare for connection loss or client close FDWatcher = riak_cs_copy_object:connection_checker((RD#wm_reqdata.wm_state)#wm_reqstate.socket), @@ -448,10 +448,10 @@ maybe_copy_part(PutPid, {true, _RD, _OtherCtx} -> %% access to source object not authorized %% TODO: check the return value - _ = lager:debug("access to source object denied (~s, ~s)", [SrcBucket, SrcKey]), + logger:debug("access to source object denied (~s, ~s)", [SrcBucket, SrcKey]), {{halt, 403}, RD, Ctx}; Error -> - _ = lager:debug("unknown error: ~p", [Error]), + logger:debug("unknown error: ~p", [Error]), %% ResponseMod:api_error(Error, RD, Ctx#context{local_context=LocalCtx}) Error end. diff --git a/apps/riak_cs/src/riak_cs_wm_user.erl b/apps/riak_cs/src/riak_cs_wm_user.erl index 89a0ec622..1a4fe38ce 100644 --- a/apps/riak_cs/src/riak_cs_wm_user.erl +++ b/apps/riak_cs/src/riak_cs_wm_user.erl @@ -255,8 +255,8 @@ get_user(AdminCheckResult, _) -> handle_get_user_result({ok, {User, UserObj}}, RD, Ctx) -> {false, RD, Ctx#context{user=User, user_object=UserObj}}; handle_get_user_result({error, Reason}, RD, Ctx) -> - _ = lager:warning("Failed to fetch user record. KeyId: ~p" - " Reason: ~p", [user_key(RD), Reason]), + logger:warning("Failed to fetch user record. KeyId: ~p" + " Reason: ~p", [user_key(RD), Reason]), riak_cs_s3_response:api_error(invalid_access_key_id, RD, Ctx). -spec update_user([{atom(), term()}], #wm_reqdata{}, #context{}) -> diff --git a/apps/riak_cs/src/riak_cs_wm_users.erl b/apps/riak_cs/src/riak_cs_wm_users.erl index 3bc13655b..07d962bbf 100644 --- a/apps/riak_cs/src/riak_cs_wm_users.erl +++ b/apps/riak_cs/src/riak_cs_wm_users.erl @@ -155,8 +155,8 @@ user_fold_fun(RcPid, Status) -> %% Status is defined and does not match the account status Users; {error, Reason} -> - _ = lager:warning("Failed to fetch user record. KeyId: ~p" - " Reason: ~p", [UserId, Reason]), + logger:warning("Failed to fetch user record. KeyId: ~p" + " Reason: ~p", [UserId, Reason]), Users end end. diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index acf4253d1..9e9fa8e12 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -180,23 +180,23 @@ handle_validation_response({error, disconnected}, RD, Ctx, _Next, _, _Bool) -> {{halt, 503}, RD, Ctx}; handle_validation_response({error, Reason}, RD, Ctx, Next, _, true) -> %% no keyid was given, proceed anonymously - _ = lager:debug("No user key: ~p", [Reason]), + logger:debug("No user key: ~p", [Reason]), Next(RD, Ctx); handle_validation_response({error, no_user_key}, RD, Ctx, _, Conv2KeyCtx, false) -> %% no keyid was given, deny access - _ = lager:debug("No user key, deny"), + logger:debug("No user key, deny"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, bad_auth}, RD, Ctx, _, Conv2KeyCtx, _) -> %% given keyid was found, but signature didn't match - _ = lager:debug("bad_auth"), + logger:debug("bad_auth"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, notfound}, RD, Ctx, _, Conv2KeyCtx, _) -> %% no keyid was found - _ = lager:debug("key_id not found"), + logger:debug("key_id not found"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, Reason}, RD, Ctx, _, Conv2KeyCtx, _) -> %% no matching keyid was found, or lookup failed - _ = lager:debug("Authentication error: ~p", [Reason]), + logger:debug("Authentication error: ~p", [Reason]), deny_invalid_key(RD, Conv2KeyCtx(Ctx)). handle_auth_admin(RD, Ctx, undefined, true) -> @@ -258,8 +258,8 @@ validate_auth_header(RD, AuthBypass, RcPid, Ctx) -> {error, NE}; {error, Reason} -> %% other failures, like Riak fetch timeout, be loud about - _ = lager:error("Retrieval of user record for ~p failed. Reason: ~p", - [KeyId, Reason]), + logger:error("Retrieval of user record for ~p failed. Reason: ~p", + [KeyId, Reason]), {error, Reason} end. @@ -473,7 +473,7 @@ maybe_update_context_with_acl_from_headers(RD, {ok, Ctx#context{acl=DefaultAcl}} end; {error, Reason} -> - _ = lager:error("Failed to retrieve bucket objects for reason ~p", [Reason]), + logger:error("Failed to retrieve bucket objects for reason ~p", [Reason]), {error, {{halt, 500}, RD, Ctx}} end. @@ -1017,7 +1017,7 @@ fetch_bucket_owner(Bucket, RcPid) -> {ok, Acl} -> Acl?ACL.owner; {error, Reason} -> - _ = lager:debug("Failed to retrieve owner info for bucket ~p. Reason ~p", [Bucket, Reason]), + logger:debug("Failed to retrieve owner info for bucket ~p. Reason ~p", [Bucket, Reason]), undefined end. diff --git a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl index 52f4d821d..5ba6cbc6a 100644 --- a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl +++ b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl @@ -124,7 +124,7 @@ handle_call(block_pbc, _From, State) -> {reply, {ok, self()}, State}; handle_call(Request, _From, State) -> - lager:warning("Unknown request: ~p~n", [Request]), + logger:warning("Unknown request: ~p~n", [Request]), Reply = {error, {invalid_request, Request}}, {reply, Reply, State}. @@ -155,8 +155,8 @@ process_get_req(#rpbgetreq{bucket=RiakBucket, key=Key} = _RpbGetReq, [{dict:new(), binary:copy(<<"a">>, 10)}]), {{ok, Obj}, State}; Other -> - lager:warning("Unknown #rpbgetreq{} for ~p, bucket=~p, key=~p~n", - [Other, RiakBucket, Key]), + logger:warning("Unknown #rpbgetreq{} for ~p, bucket=~p, key=~p~n", + [Other, RiakBucket, Key]), error({not_implemented, {rpbgetreq, Other, RiakBucket, Key}}) end. @@ -167,8 +167,8 @@ process_put_req(#rpbputreq{bucket=RiakBucket, key=Key, return_body=1} = _RpbPutR {M, RObj} = new_manifest_ro(BucketName, RiakBucket, Key, Acl), {{ok, RObj}, State#state{manifest = M}}; Other -> - lager:warning("Unknown #rpbgetreq{} with return_body for ~p," " bucket=~p, key=~p~n", - [Other, RiakBucket, Key]), + logger:warning("Unknown #rpbgetreq{} with return_body for ~p," " bucket=~p, key=~p~n", + [Other, RiakBucket, Key]), error({not_implemented, {rpbgetreq_with_return_body, Other, RiakBucket, Key}}) end; process_put_req(_RpbPutReq, State) -> diff --git a/apps/riak_cs/test/riak_cs_dummy_reader.erl b/apps/riak_cs/test/riak_cs_dummy_reader.erl index 263a2cd25..93d306ea0 100644 --- a/apps/riak_cs/test/riak_cs_dummy_reader.erl +++ b/apps/riak_cs/test/riak_cs_dummy_reader.erl @@ -119,7 +119,7 @@ handle_cast({get_block, _From, _Bucket, _Key, UUID, BlockNumber}, State) -> handle_cast({get_block, _From, _Bucket, _Key, _ClusterID, UUID, BlockNumber}, State) -> send_fake_data(UUID, BlockNumber, State); handle_cast(Event, State) -> - lager:warning("Received unknown cast event: ~p", [Event]), + loger:warning("Received unknown cast event: ~p", [Event]), {noreply, State}. %% @doc @TODO diff --git a/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl b/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl index 61e6764e6..fa3e15c15 100644 --- a/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl +++ b/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl @@ -116,7 +116,7 @@ handle_cast({send_manifests, StartKey}, _Rest = send_manifests_and_done(Caller, ReqId, StartKey, MaxResults, Manifests), {noreply, State}; handle_cast(Event, State) -> - lager:warning("Received unknown cast event: ~p", [Event]), + logger:warning("Received unknown cast event: ~p", [Event]), {noreply, State}. %% @doc @TODO diff --git a/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl b/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl index 40f77491a..814419066 100644 --- a/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl +++ b/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl @@ -64,7 +64,7 @@ eqc_test_() -> {foreach, fun() -> - application:set_env(lager, handlers, []), + logger:update_primary_config(#{level => none}), exometer:start(), riak_cs_stats:init(), diff --git a/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl b/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl index 95832995e..b33340153 100644 --- a/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl +++ b/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl @@ -66,8 +66,7 @@ setup() -> application:load(sasl), application:load(riak_cs), application:set_env(sasl, sasl_error_logger, {file, "cs_get_fsm_sasl.log"}), - error_logger:tty(false), - application:start(lager). + error_logger:tty(false). cleanup(_) -> ok. diff --git a/apps/riak_cs/test/riak_cs_lfs_utils_test.erl b/apps/riak_cs/test/riak_cs_lfs_utils_test.erl index c5d05f0db..a338809be 100644 --- a/apps/riak_cs/test/riak_cs_lfs_utils_test.erl +++ b/apps/riak_cs/test/riak_cs_lfs_utils_test.erl @@ -23,7 +23,7 @@ -include_lib("eunit/include/eunit.hrl"). setup() -> - application:start(lager). + ok. %% TODO: %% Implement this diff --git a/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl b/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl index 7aca78a54..64eca1cdb 100644 --- a/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl +++ b/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl @@ -71,7 +71,7 @@ eqc_test_() -> setup() -> error_logger:tty(false), error_logger:logfile({open, "riak_cs_list_objects_fsm_v2_eqc.log"}), - application:set_env(lager, handlers, []), + logger:update_primary_config(#{level => none}), exometer:start(), riak_cs_stats:init(), ok. diff --git a/apps/riak_cs/test/riak_cs_wm_test_utils.erl b/apps/riak_cs/test/riak_cs_wm_test_utils.erl index 4ff879ed0..f42854696 100644 --- a/apps/riak_cs/test/riak_cs_wm_test_utils.erl +++ b/apps/riak_cs/test/riak_cs_wm_test_utils.erl @@ -27,7 +27,6 @@ setup() -> application:start(sasl), TestNode = list_to_atom("testnode" ++ integer_to_list(element(3, now()))), net_kernel:start([TestNode, shortnames]), - application:start(lager), application:start(riakc), application:start(inets), application:start(mochiweb), From a19aee042a3915660097065f06095743e8c3b4f1 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 17 Mar 2021 04:34:27 +0200 Subject: [PATCH 055/831] s/lager/logger/, special case for lager:pr/2 --- apps/riak_cs/src/riak_cs_diags.erl | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_diags.erl b/apps/riak_cs/src/riak_cs_diags.erl index 6d21a98d0..e7b8e2a4e 100644 --- a/apps/riak_cs/src/riak_cs_diags.erl +++ b/apps/riak_cs/src/riak_cs_diags.erl @@ -44,10 +44,14 @@ pr(Record) -> -spec pr(tuple(), non_neg_integer()) -> iolist(). pr(Record, Indent) -> - {'$lager_record', RecordName, Zipped} = lager:pr(Record, ?MODULE), + Zipped = rec_to_proplist(Record), ["\n", spaces(Indent), "#", atom_to_list(RecordName), - "\n", spaces(Indent), "--------------------\n", - [print_field(Field, Indent) || Field <- Zipped]]. + "\n", spaces(Indent), "--------------------\n", + [print_field(FV, Indent) || FV <- Zipped]]. + +rec_to_proplist(R) -> + RFF = record_info(fields, R), + lists:zip(RFF, tl(tuple_to_list(RO))). print_field({_, undefined}, _) -> ""; From 2f28d21f98780a39efb0823874edbde830b388de Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 17 Mar 2021 04:37:23 +0200 Subject: [PATCH 056/831] use rebar3 in Makefile --- Makefile | 30 +++++++++++++++--------------- tools.mk | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index a89353338..8d35ffe74 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ PKG_ID = riak-cs-$(PKG_VERSION) PKG_BUILD = 1 BASE_DIR = $(shell pwd) ERLANG_BIN = $(shell dirname $(shell which erl)) -REBAR ?= $(BASE_DIR)/rebar +REBAR ?= rebar3 OVERLAY_VARS ?= CS_HTTP_PORT ?= 8080 PULSE_TESTS = riak_cs_get_fsm_pulse @@ -17,10 +17,10 @@ all: compile compile: compile-riak-test compile-src: deps - @(./rebar compile) + @($(REBAR) compile) compile-client-test: all - @./rebar client_test_compile + @$(REBAR) client_test_compile bitcask-downgrade-script: riak_test/src/downgrade_bitcask.erl @@ -30,7 +30,7 @@ riak_test/src/downgrade_bitcask.erl: -O riak_test/src/downgrade_bitcask.erl compile-riak-test: compile-src bitcask-downgrade-script - @./rebar skip_deps=true riak_test_compile + @$(REBAR) skip_deps=true riak_test_compile ## There are some Riak CS internal modules that our riak_test ## test would like to use. But riak_test doesn't have a nice ## way of adding the -pz argument + code path that we need. @@ -40,32 +40,32 @@ compile-riak-test: compile-src bitcask-downgrade-script cp ebin/twop_set.beam riak_test/ebin clean-client-test: - @./rebar client_test_clean + @$(REBAR) client_test_clean clean-riak-test: - @./rebar riak_test_clean skip_deps=true + @$(REBAR) riak_test_clean skip_deps=true deps: - @./rebar get-deps + @$(REBAR) get-deps ## ## Lock Targets ## ## see https://github.com/seth/rebar_lock_deps_plugin lock: deps compile - ./rebar lock-deps + $(REBAR) lock-deps locked-all: locked-deps compile locked-deps: @echo "Using rebar.config.lock file to fetch dependencies" - ./rebar -C rebar.config.lock get-deps + $(REBAR) -C rebar.config.lock get-deps clean: - @./rebar clean + @$(REBAR) clean distclean: clean - @./rebar delete-deps + @$(REBAR) delete-deps @rm -rf $(PKG_ID).tar.gz ## Create a dependency graph png @@ -79,7 +79,7 @@ graphviz: pulse: all @rm -rf $(BASE_DIR)/.eunit - @./rebar -D PULSE eunit skip_deps=true suites=$(PULSE_TESTS) + @$(REBAR) -D PULSE eunit skip_deps=true suites=$(PULSE_TESTS) test-client: test-clojure test-boto test-ceph test-erlang test-ruby test-php test-go @@ -97,7 +97,7 @@ test-ruby: @cd client_tests/ruby && bundle exec rake spec test-erlang: compile-client-test - @./rebar skip_deps=true client_test_run + @$(REBAR) skip_deps=true client_test_run test-clojure: @command -v lein >/dev/null 2>&1 || { echo >&2 "I require lein but it's not installed. \ @@ -114,7 +114,7 @@ test-go: ## Release targets ## rel: deps compile - @./rebar generate skip_deps=true $(OVERLAY_VARS) + @$(REBAR) generate skip_deps=true $(OVERLAY_VARS) relclean: rm -rf rel/riak-cs @@ -142,7 +142,7 @@ $(eval devrel : $(foreach n,$(SEQ),dev$(n))) dev% : all mkdir -p dev rel/gen_dev $@ rel/vars/dev_vars.config.src rel/vars/$@_vars.config - (cd rel && ../rebar generate target_dir=../dev/$@ overlay_vars=vars/$@_vars.config) + (cd rel && $(REBAR) generate target_dir=../dev/$@ overlay_vars=vars/$@_vars.config) stagedev% : dev% $(foreach app,$(wildcard apps/*), rm -rf dev/$^/lib/$(shell basename $(app))* && ln -sf $(abspath $(app)) dev/$^/lib;) diff --git a/tools.mk b/tools.mk index c3d61a822..de85f76ea 100644 --- a/tools.mk +++ b/tools.mk @@ -24,7 +24,7 @@ # wholesale when a new version of tools.mk is released. # ------------------------------------------------------------------- -REBAR ?= ./rebar +REBAR ?= rebar3 REVISION ?= $(shell git rev-parse --short HEAD) PROJECT ?= $(shell basename `find src -name "*.app.src"` .app.src) From fba1a2959016c64c8e75f64adf117b6757991822 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 17 Mar 2021 04:37:49 +0200 Subject: [PATCH 057/831] rebar.config fixup --- rebar.config | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/rebar.config b/rebar.config index 073e73187..e8f29eaa4 100644 --- a/rebar.config +++ b/rebar.config @@ -10,17 +10,16 @@ ] }. -{deps, [ {cuttlefish, ".*", {git, "git://github.com/basho/cuttlefish.git", {tag, "2.0.4"}}} - , {getopt, ".*", {git, "git://github.com/jcomellas/getopt.git", {tag, "v1.0.2"}}} +{deps, [ {getopt, ".*", {git, "git://github.com/jcomellas/getopt.git", {tag, "v1.0.2"}}} , {webmachine, ".*", {git, "git://github.com/basho/webmachine.git", {tag, "riak_kv-2.9.1"}}} - , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "3.0.4"}}} + , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "riak_kv-3.0.2"}}} , {uuid, ".*", {git, "git://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} - , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", "riak_kv-3.0.0"}} + , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {exometer_core, ".*", {git, "git://github.com/Feuerlabs/exometer_core", {tag, "v1.5.7"}}} , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {xmerl, ".*", {git, "git://github.com/shino/xmerl", "1b016a05473e086abadbb3c12f63d167fe96c00f"}} - , {erlcloud, ".*", {git, "git://github.com/basho/erlcloud.git", {tag, "0.4.6"}}} - , {riak_repl_pb_api,".*", {git,"git://github.com/basho/riak_repl_pb_api.git", {tag, "riak_kv-2.9.1"}}} + , {erlcloud, ".*", {git, "git://github.com/erlcloud/erlcloud.git", {tag, "3.5.2"}}} + , {riak_repl_pb_api,".*", {git,"git://github.com/hmmr/riak_repl_pb_api.git", {tag, "riak_kv-3.0.2"}}} , {riak_cs_multibag,".*", {git,"git://github.com/basho/riak_cs_multibag.git", {tag, "2.1.0p1"}}} ] }. @@ -42,7 +41,7 @@ , {generate_start_script, true} , {extended_start_script, true} ] -} +}. {dialyzer, [{plt_apps, all_deps}]}. @@ -68,20 +67,14 @@ } , {deb, [ {relx, [ {overlay_vars, "debian/vars.config"} , {overlay, [ {template, "rel/files/riak", "usr/bin/riak"} - ]}, - {extended_start_script_hooks, - [{pre_start, - [{custom, "hooks/riak_not_running"}, - {custom, "hooks/check_ulimit"}, - {custom, "hooks/erl_maxlogsize"}]}, - {post_start, - [wait_for_vm_start, - {pid, "/run/riak/riak.pid"}, - {wait_for_process, riak_core_node_watcher}]} - ]} - ]} - ]} -]}. + ] + } + ] + } + ] + } + ] +}. {cuttlefish, [ {file_name, "riak.conf"} @@ -91,6 +84,11 @@ ] }. +{overrides, + [ {del, xmerl, [{erl_opts, [warnings_as_errors]}]} + , {del, meck, [{erl_opts, [warnings_as_errors]}]} + ] +}. %%{cover_enabled, false}. From 0ba6fa572dc9f333af81e296b1f0a72a8fe0a8d1 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 17 Mar 2021 04:38:38 +0200 Subject: [PATCH 058/831] tweak .gitignore --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6df5e8066..e641602ef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -.eunit/* -deps/* +_build/ +.eunit/ rel/riak-cs rel/vars/dev*_vars.config ebin/* From 51d8d7a905dee0e79447a9be79d22522c6f68d73 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 17 Mar 2021 04:40:00 +0200 Subject: [PATCH 059/831] introduce exprec (potentially useful) --- apps/riak_cs/src/exprec.erl | 32 ++++++++++++++++++++++++++++++++ rebar.config | 1 + 2 files changed, 33 insertions(+) create mode 100644 apps/riak_cs/src/exprec.erl diff --git a/apps/riak_cs/src/exprec.erl b/apps/riak_cs/src/exprec.erl new file mode 100644 index 000000000..c6d0dc179 --- /dev/null +++ b/apps/riak_cs/src/exprec.erl @@ -0,0 +1,32 @@ +-module(exprec). + +-include("riak_cs.hrl"). + +-compile(export_all). + +-define(ALL_RECORDS, + [ moss_user + , moss_user_v1 + , rcs_user_v2 + , moss_bucket + , moss_bucket_v1 + , context + , key_context + , acl_v1 + , acl_v2 + , lfs_manifest_v2 + , lfs_manifest_v3 + , part_manifest_v1 + , multipart_manifest_v1 + , multipart_descr_v1 + , part_descr_v1 + , access_v1 + ] + ). + +-export_records(?ALL_RECORDS). + +-exprecs_prefix(["", operation, ""]). +-exprecs_fname([prefix, "_", record]). +-exprecs_vfname([fname, "__", version]). +-compile({parse_transform, exprecs}). diff --git a/rebar.config b/rebar.config index e8f29eaa4..81a9068e5 100644 --- a/rebar.config +++ b/rebar.config @@ -21,6 +21,7 @@ , {erlcloud, ".*", {git, "git://github.com/erlcloud/erlcloud.git", {tag, "3.5.2"}}} , {riak_repl_pb_api,".*", {git,"git://github.com/hmmr/riak_repl_pb_api.git", {tag, "riak_kv-3.0.2"}}} , {riak_cs_multibag,".*", {git,"git://github.com/basho/riak_cs_multibag.git", {tag, "2.1.0p1"}}} + , {parse_trans, "3.3.0"} ] }. From 4d199d88b951dbb3892db9179f06ab4839138585 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 19 Mar 2021 02:39:30 +0200 Subject: [PATCH 060/831] replace deprecated now() with erlang:timestamp() --- apps/riak_cs/include/riak_cs.hrl | 4 ++-- apps/riak_cs/src/riak_cs_wm_users.erl | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index 345cfaf6c..ae8aa2645 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -135,11 +135,11 @@ -type acl_owner() :: acl_owner2() | acl_owner3(). -record(acl_v1, {owner={"", ""} :: acl_owner(), grants=[] :: [acl_grant()], - creation_time=now() :: erlang:timestamp()}). + creation_time = erlang:timestamp() :: erlang:timestamp()}). %% acl_v2 owner fields: {DisplayName, CanonicalId, KeyId} -record(acl_v2, {owner={"", "", ""} :: acl_owner(), grants=[] :: [acl_grant()], - creation_time=now() :: erlang:timestamp()}). + creation_time = erlang:timestamp() :: erlang:timestamp()}). -type acl() :: #acl_v1{} | #acl_v2{}. -type cluster_id() :: undefined | binary(). %% flattened string as binary diff --git a/apps/riak_cs/src/riak_cs_wm_users.erl b/apps/riak_cs/src/riak_cs_wm_users.erl index 07d962bbf..9f7fb4ee2 100644 --- a/apps/riak_cs/src/riak_cs_wm_users.erl +++ b/apps/riak_cs/src/riak_cs_wm_users.erl @@ -162,6 +162,6 @@ user_fold_fun(RcPid, Status) -> end. unique_id() -> - Rand = riak_cs_utils:sha(term_to_binary({make_ref(), now()})), + Rand = riak_cs_utils:sha(term_to_binary({make_ref(), erlang:timestamp()})), <> = Rand, integer_to_list(I, 36). From b2d646277e84d3507e06bff06286bb7669c8c8e3 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 19 Mar 2021 02:41:10 +0200 Subject: [PATCH 061/831] webmachine and riak_cs_multibag rebar3-compliant in gihub/hmmr --- rebar.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index 81a9068e5..8dfc7b0c5 100644 --- a/rebar.config +++ b/rebar.config @@ -11,7 +11,7 @@ }. {deps, [ {getopt, ".*", {git, "git://github.com/jcomellas/getopt.git", {tag, "v1.0.2"}}} - , {webmachine, ".*", {git, "git://github.com/basho/webmachine.git", {tag, "riak_kv-2.9.1"}}} + , {webmachine, ".*", {git, "git://github.com/webmachine/webmachine.git", {tag, "1.11.1"}}} , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "riak_kv-3.0.2"}}} , {uuid, ".*", {git, "git://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} @@ -20,7 +20,7 @@ , {xmerl, ".*", {git, "git://github.com/shino/xmerl", "1b016a05473e086abadbb3c12f63d167fe96c00f"}} , {erlcloud, ".*", {git, "git://github.com/erlcloud/erlcloud.git", {tag, "3.5.2"}}} , {riak_repl_pb_api,".*", {git,"git://github.com/hmmr/riak_repl_pb_api.git", {tag, "riak_kv-3.0.2"}}} - , {riak_cs_multibag,".*", {git,"git://github.com/basho/riak_cs_multibag.git", {tag, "2.1.0p1"}}} + , {riak_cs_multibag,".*", {git,"git://github.com/hmmr/riak_cs_multibag.git", {tag, "riak_kv-3.0.2"}}} , {parse_trans, "3.3.0"} ] }. From 28da670f9b8c3b12455e5a27cafe591387eda025 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 19 Mar 2021 02:41:51 +0200 Subject: [PATCH 062/831] use otp22-style get_stacktrace --- apps/riak_cs/src/riak_cs_gc_console.erl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_gc_console.erl b/apps/riak_cs/src/riak_cs_gc_console.erl index 5a5f5580a..9e74be078 100644 --- a/apps/riak_cs/src/riak_cs_gc_console.erl +++ b/apps/riak_cs/src/riak_cs_gc_console.erl @@ -37,9 +37,9 @@ try Code catch - Type:Reason -> - io:format("~s failed:~n ~p:~p~n~p~n", - [Description, Type, Reason, erlang:get_stacktrace()]), + Type:Reason:ST -> + io:format("~s failed:\n ~p:~p\n~p\n", + [Description, Type, Reason, ST]), error end). From 2c0489bb04fce05e77c620df752a56e5978fa124 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 19 Mar 2021 04:35:48 +0200 Subject: [PATCH 063/831] sweeping up more otp-22 deprecations --- apps/riak_cs/src/riak_cs_gc.erl | 4 ++-- apps/riak_cs/src/riak_cs_manifest_fsm.erl | 2 +- apps/riak_cs/src/riak_cs_manifest_utils.erl | 2 +- apps/riak_cs/src/riak_cs_mp_utils.erl | 4 ++-- apps/riak_cs/src/riak_cs_utils.erl | 3 +-- apps/riak_cs/src/riak_cs_wm_error_handler.erl | 3 +++ apps/riak_cs/src/riak_cs_wm_object.erl | 2 +- rebar.config | 8 ++++++++ 8 files changed, 19 insertions(+), 9 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl index f4d21c9ee..e6d9166f9 100644 --- a/apps/riak_cs/src/riak_cs_gc.erl +++ b/apps/riak_cs/src/riak_cs_gc.erl @@ -480,8 +480,8 @@ generate_key() -> -spec key_suffix(erlang:timestamp()) -> string(). key_suffix(Time) -> - _ = random:seed(Time), - integer_to_list(random:uniform(riak_cs_config:gc_key_suffix_max())). + _ = rand:seed(exsss, Time), + integer_to_list(rand:uniform(riak_cs_config:gc_key_suffix_max())). %% @doc Given a list of riakc_obj-flavored object (with potentially %% many siblings and perhaps a tombstone), decode and merge them. diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl index 59ceb55a5..2b7ddb980 100644 --- a/apps/riak_cs/src/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/riak_cs_manifest_fsm.erl @@ -389,7 +389,7 @@ maybe_backpressure_sleep(Siblings, _BackpressureThreshold) -> Coefficient = riak_cs_config:get_env(riak_cs, manifest_siblings_bp_coefficient, 200), MeanSleepMS = min(Coefficient * Siblings, MaxSleep), Delta = MeanSleepMS div 2, - SleepMS = crypto:rand_uniform(MeanSleepMS - Delta, MeanSleepMS + Delta), + SleepMS = MeanSleepMS - Delta + rand:uniform(MeanSleepMS + Delta), logger:debug("maybe_backpressure_sleep: Siblings=~p, SleepMS=~p~n", [Siblings, SleepMS]), ok = riak_cs_stats:countup([manifest, siblings_bp_sleep]), ok = timer:sleep(SleepMS), diff --git a/apps/riak_cs/src/riak_cs_manifest_utils.erl b/apps/riak_cs/src/riak_cs_manifest_utils.erl index 4cd9bc302..2c7a8146c 100644 --- a/apps/riak_cs/src/riak_cs_manifest_utils.erl +++ b/apps/riak_cs/src/riak_cs_manifest_utils.erl @@ -241,7 +241,7 @@ retry_from_marked_time(MarkedTime, Now) -> -spec prune(orddict:orddict()) -> orddict:orddict(). prune(Dict) -> MaxCount = riak_cs_gc:max_scheduled_delete_manifests(), - prune(Dict, erlang:now(), MaxCount). + prune(Dict, erlang:timestamp(), MaxCount). -spec prune(orddict:orddict(), erlang:timestamp(), diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index ba01208b8..84aeac61f 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -103,10 +103,10 @@ clean_multipart_unused_parts(?MANIFEST{bkey=BKey, props=Props} = Manifest, RcPid PartsToDelete, RcPid), UpdManifest = Manifest?MANIFEST{props=[multipart_clean|Props]}, ok = update_manifest_with_confirmation(RcPid, UpdManifest) - catch X:Y -> + catch X:Y:ST -> logger:debug("clean_multipart_unused_parts: " "bkey ~p: ~p ~p @ ~p\n", - [BKey, X, Y, erlang:get_stacktrace()]) + [BKey, X, Y, ST]) end, %% Return same value to caller, regardless of ok/catch updated; diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index d4052dc4d..0e1b1e5e1 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -195,8 +195,7 @@ maybe_process_resolved(Object, ResolvedManifestsHandler, ErrorReturn) -> Upgraded = riak_cs_manifest_utils:upgrade_wrapped_manifests(AllManifests), Resolved = riak_cs_manifest_resolution:resolve(Upgraded), ResolvedManifestsHandler(Resolved) - catch Type:Reason -> - StackTrace = erlang:get_stacktrace(), + catch Type:Reason:StackTrace -> logger:error("Riak CS object mapreduce failed for ~p:~p with reason ~p:~p at ~p", [riak_object:bucket(Object), riak_object:key(Object), diff --git a/apps/riak_cs/src/riak_cs_wm_error_handler.erl b/apps/riak_cs/src/riak_cs_wm_error_handler.erl index 86d49f433..494188b30 100644 --- a/apps/riak_cs/src/riak_cs_wm_error_handler.erl +++ b/apps/riak_cs/src/riak_cs_wm_error_handler.erl @@ -19,6 +19,9 @@ %% --------------------------------------------------------------------- -module(riak_cs_wm_error_handler). + +-compile({nowarn_deprecated_function, [{erlang, get_stacktrace, 0}]}). + -export([render_error/3, xml_error_body/4]). -include("riak_cs.hrl"). diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index 82cefbe41..07add27b7 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -296,7 +296,7 @@ accept_body(RD, Ctx=#context{riak_client=RcPid, %% zero-body put copy - just updating metadata #key_context{bucket=Bucket, key=KeyStr, manifest=Mfst} = LocalCtx, Acl = Mfst?MANIFEST.acl, - NewAcl = Acl?ACL{creation_time = now()}, + NewAcl = Acl?ACL{creation_time = erlang:timestamp()}, {ContentType, Metadata} = riak_cs_copy_object:new_metadata(Mfst, RD), case riak_cs_utils:set_object_acl(Bucket, list_to_binary(KeyStr), Mfst?MANIFEST{metadata=Metadata, content_type=ContentType}, NewAcl, diff --git a/rebar.config b/rebar.config index 8dfc7b0c5..95ed2974f 100644 --- a/rebar.config +++ b/rebar.config @@ -3,6 +3,14 @@ {erl_opts, [ debug_info , warnings_as_errors + , {nowarn_deprecated_function, [ {gen_fsm, start_link, 3} + , {gen_fsm, start_link, 4} + , {gen_fsm, send_event, 2} + , {gen_fsm, send_all_state_event, 2} + , {gen_fsm, sync_send_event, 3} + , {gen_fsm, sync_send_all_state_event, 3} + , {gen_fsm, reply, 2} + ]} ] }. From 39a1e0b7a4a36add5e62621cc3cf98fd1a0b7bd4 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 19 Mar 2021 04:36:09 +0200 Subject: [PATCH 064/831] unused vars --- apps/riak_cs/src/riak_cs_simple_bwlimiter.erl | 2 +- apps/riak_cs/src/riak_cs_wm_object.erl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl index 7bf8f0b59..65eee7ea4 100644 --- a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl +++ b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl @@ -207,7 +207,7 @@ update(User, {#user_state.access_count, 1}], try case ets:update_counter(?MODULE, User, UpdateOps) of - [_, _] = R -> + [_, _] -> ok; Error0 -> logger:warning("something wrong? ~p", [Error0]), diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index 07add27b7..2601ebb7b 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -411,7 +411,7 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey) -> %% access to source object not authorized %% TODO: check the return value / http status ResponseMod:api_error(copy_source_access_denied, RD, Ctx); - {{halt, 403}, _RD, _OtherCtx} = Error -> + {{halt, 403}, _RD, _OtherCtx} -> %% access to source object not authorized either, but %% in different return value ResponseMod:api_error(copy_source_access_denied, RD, Ctx); From d96369a565ab492e7df67b5019c3bfd4c090de40 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 19 Mar 2021 04:36:31 +0200 Subject: [PATCH 065/831] stray -compile(export_all) --- apps/riak_cs/src/riak_cs_keystone_auth.erl | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_keystone_auth.erl b/apps/riak_cs/src/riak_cs_keystone_auth.erl index ed02c818b..baeac422f 100644 --- a/apps/riak_cs/src/riak_cs_keystone_auth.erl +++ b/apps/riak_cs/src/riak_cs_keystone_auth.erl @@ -22,8 +22,6 @@ -behavior(riak_cs_auth). --compile(export_all). - -export([identify/2, authenticate/4]). -include("riak_cs.hrl"). From f8c28c007fbeda235618a4c0129c9bb822b330d8 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 24 Mar 2021 20:41:00 +0200 Subject: [PATCH 066/831] fix up call to exprec:info --- apps/riak_cs/src/exprec.erl | 1 + apps/riak_cs/src/riak_cs_diags.erl | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/src/exprec.erl b/apps/riak_cs/src/exprec.erl index c6d0dc179..64ce7e4aa 100644 --- a/apps/riak_cs/src/exprec.erl +++ b/apps/riak_cs/src/exprec.erl @@ -3,6 +3,7 @@ -include("riak_cs.hrl"). -compile(export_all). +-compile(nowarn_export_all). -define(ALL_RECORDS, [ moss_user diff --git a/apps/riak_cs/src/riak_cs_diags.erl b/apps/riak_cs/src/riak_cs_diags.erl index e7b8e2a4e..c9e7cf6be 100644 --- a/apps/riak_cs/src/riak_cs_diags.erl +++ b/apps/riak_cs/src/riak_cs_diags.erl @@ -45,13 +45,13 @@ pr(Record) -> -spec pr(tuple(), non_neg_integer()) -> iolist(). pr(Record, Indent) -> Zipped = rec_to_proplist(Record), - ["\n", spaces(Indent), "#", atom_to_list(RecordName), + ["\n", spaces(Indent), "#", atom_to_list(hd(tuple_to_list(Record))), "\n", spaces(Indent), "--------------------\n", [print_field(FV, Indent) || FV <- Zipped]]. rec_to_proplist(R) -> - RFF = record_info(fields, R), - lists:zip(RFF, tl(tuple_to_list(RO))). + RFF = exprec:info(R), + lists:zip(RFF, tl(tuple_to_list(R))). print_field({_, undefined}, _) -> ""; From 5335233fd017ceb5eb023d1a8e75b1ec9572664b Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 20 Mar 2021 19:04:38 +0200 Subject: [PATCH 067/831] rebar3.config fixups --- rebar.config | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/rebar.config b/rebar.config index 95ed2974f..9c2f248d6 100644 --- a/rebar.config +++ b/rebar.config @@ -25,7 +25,7 @@ , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {exometer_core, ".*", {git, "git://github.com/Feuerlabs/exometer_core", {tag, "v1.5.7"}}} , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {xmerl, ".*", {git, "git://github.com/shino/xmerl", "1b016a05473e086abadbb3c12f63d167fe96c00f"}} + , {xmerl, ".*", {git, "git://github.com/hmmr/xmerl", {tag, "0.1.2"}}} , {erlcloud, ".*", {git, "git://github.com/erlcloud/erlcloud.git", {tag, "3.5.2"}}} , {riak_repl_pb_api,".*", {git,"git://github.com/hmmr/riak_repl_pb_api.git", {tag, "riak_kv-3.0.2"}}} , {riak_cs_multibag,".*", {git,"git://github.com/hmmr/riak_cs_multibag.git", {tag, "riak_kv-3.0.2"}}} @@ -34,9 +34,6 @@ }. -{eunit_opts, [nowarn_export_all, verbose]}. - - {relx, [ {release, {riak_cs, "2.2"}, [ sasl , riak_cs @@ -52,9 +49,6 @@ ] }. - -{dialyzer, [{plt_apps, all_deps}]}. - {profiles, [ {rel, [ {relx, [ {overlay_vars, "rel/vars.config"} ] } @@ -86,28 +80,26 @@ }. -{cuttlefish, [ {file_name, "riak.conf"} +{cuttlefish, [ {file_name, "riak_cs.conf"} , {disable_bin_scripts, true} , {schema_discovery, true} - , {schema_order, [ ]} + , {schema_order, [ riak_cs + , erlang_vm + ]} ] }. + {overrides, [ {del, xmerl, [{erl_opts, [warnings_as_errors]}]} , {del, meck, [{erl_opts, [warnings_as_errors]}]} ] }. -%%{cover_enabled, false}. - -%%{edoc_opts, [preprocess]}. +{dialyzer, [{plt_apps, all_deps}]}. -%%{xref_checks, []}. -%%{xref_queries, -%% [{"(XC - UC) || (XU - X - B - \"(^riak$|^riak_cs_dummy_reader$|^riak_core_bucket$|^app_helper$|^riakc_pb_socket_fake$|^riak_object$)\" : Mod)", []}]}. +{eunit_opts, [nowarn_export_all, verbose]}. -%%{reset_after_eunit, true}. %% {client_test, [ %% {test_paths, ["client_tests/erlang"]}, From 6dd1939420cd132489f262ca6dd01a43813e3ae9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 20 Mar 2021 19:05:20 +0200 Subject: [PATCH 068/831] move riak_cs.schema to where cuttlefish can find it --- {rel/files => apps/riak_cs/priv}/riak_cs.schema | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {rel/files => apps/riak_cs/priv}/riak_cs.schema (100%) diff --git a/rel/files/riak_cs.schema b/apps/riak_cs/priv/riak_cs.schema similarity index 100% rename from rel/files/riak_cs.schema rename to apps/riak_cs/priv/riak_cs.schema From 8f1f22ddb83ee19705c9fddde7fd4eec5e828be1 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 20 Mar 2021 19:06:14 +0200 Subject: [PATCH 069/831] add rebar3 3.13.2 binary --- rebar3 | Bin 0 -> 836687 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 rebar3 diff --git a/rebar3 b/rebar3 new file mode 100755 index 0000000000000000000000000000000000000000..b7aeb681fb2210a1ae73e9eb451070bfaa4d5fd0 GIT binary patch literal 836687 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≥)0Xy>a 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

~|PqxLuT(6F%J7$d5ysEIMi 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∈*5 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

0^1CEIE_4#NSR1f#K{2?P0XDgr4Amvuy&UG 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�GLOoV{3c^gC1ky|vI*F5q+{leGJiKW?>Vz- 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%0DOkb^u2q_P?5(ny9>s5>cBo1pRR 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�M!Oylh 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

97s73EEB(V}Iqo5Yg!sBe)t2LMR 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 Date: Mon, 22 Mar 2021 17:15:39 +0200 Subject: [PATCH 070/831] config tweaks --- rebar.config | 20 +++++++++++++++----- rel/files/erl | 34 ---------------------------------- rel/vars.config | 16 +++++----------- 3 files changed, 20 insertions(+), 50 deletions(-) delete mode 100755 rel/files/erl diff --git a/rebar.config b/rebar.config index 9c2f248d6..36e4e29a3 100644 --- a/rebar.config +++ b/rebar.config @@ -34,14 +34,24 @@ }. -{relx, [ {release, {riak_cs, "2.2"}, +{relx, [ {release, {'riak-cs', "2.2"}, [ sasl , riak_cs ] } - , {dev_mode, false} - , {include_erts, true} + , {overlay_vars, "rel/vars.config"} + , {mode, prod} , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} + , {template, "rel/files/riak-cs-access", "bin/riak-cs-access"} + , {template, "rel/files/riak-cs-admin", "bin/riak-cs-admin"} + , {template, "rel/files/riak-cs-debug", "bin/riak-cs-debug"} + , {template, "rel/files/riak-cs-gc", "bin/riak-cs-gc"} + , {template, "rel/files/riak-cs-multibag", "bin/riak-cs-multibag"} + , {template, "rel/files/riak-cs-stanchion", "bin/riak-cs-stanchion"} + , {template, "rel/files/riak-cs-storage", "bin/riak-cs-storage"} + , {template, "rel/files/riak-cs-supercluster", "bin/riak-cs-supercluster"} + , {copy, "rel/files/cert.pem", "etc/cert.pem"} + , {copy, "rel/files/key.pem", "etc/key.pem"} ] } , {generate_start_script, true} @@ -69,7 +79,7 @@ ] } , {deb, [ {relx, [ {overlay_vars, "debian/vars.config"} - , {overlay, [ {template, "rel/files/riak", "usr/bin/riak"} + , {overlay, [ {template, "rel/files/riak_cs", "usr/bin/riak_cs"} ] } ] @@ -80,7 +90,7 @@ }. -{cuttlefish, [ {file_name, "riak_cs.conf"} +{cuttlefish, [ {file_name, "riak-cs.conf"} , {disable_bin_scripts, true} , {schema_discovery, true} , {schema_order, [ riak_cs diff --git a/rel/files/erl b/rel/files/erl deleted file mode 100755 index d97c51482..000000000 --- a/rel/files/erl +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -## This script replaces the default "erl" in erts-VSN/bin. This is necessary -## as escript depends on erl and in turn, erl depends on having access to a -## bootscript (start.boot). Note that this script is ONLY invoked as a side-effect -## of running escript -- the embedded node bypasses erl and uses erlexec directly -## (as it should). -## -## Note that this script makes the assumption that there is a start_clean.boot -## file available in $ROOTDIR/release/VSN. - -# Determine the abspath of where this script is executing from. -ERTS_BIN_DIR=$(cd ${0%/*} && pwd) - -# Now determine the root directory -- this script runs from erts-VSN/bin, -# so we simply need to strip off two dirs from the end of the ERTS_BIN_DIR -# path. -ROOTDIR=${ERTS_BIN_DIR%/*/*} - -# Parse out release and erts info -START_ERL=`cat $ROOTDIR/releases/start_erl.data` -ERTS_VSN=${START_ERL% *} -APP_VSN=${START_ERL#* } - -BINDIR=$ROOTDIR/erts-$ERTS_VSN/bin -EMU=beam -PROGNAME=`echo $0 | sed 's/.*\///'` -CMD="$BINDIR/erlexec" -export EMU -export ROOTDIR -export BINDIR -export PROGNAME - -exec $CMD -boot $ROOTDIR/releases/$APP_VSN/start_clean ${1+"$@"} \ No newline at end of file diff --git a/rel/vars.config b/rel/vars.config index 898698c54..ae9f866a4 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -1,5 +1,4 @@ -%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- -%% ex: ts=4 sw=4 et +%% -*- erlang -*- %% Platform-specific installation paths {platform_bin_dir, "./bin"}. @@ -8,10 +7,6 @@ {platform_lib_dir, "./lib"}. {platform_log_dir, "./log"}. -%% lager -{console_log_default, file}. - - %% %% riak_cs.conf %% @@ -50,8 +45,7 @@ {runner_user, ""}. {runner_wait_process, "riak_cs_put_fsm_sup"}. -%% -%% cuttlefish -%% -{cuttlefish, "on"}. -{cuttlefish_conf, "riak-cs.conf"}. + +%% logger +{console_log_default, file}. + From 2595e30995bf38d75d954f969c7e367103ed010c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 22 Mar 2021 17:38:17 +0200 Subject: [PATCH 071/831] don't forget to start riakc app --- apps/riak_cs/src/riak_cs.app.src | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index 84ba95c19..696b2c7bb 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -14,7 +14,8 @@ webmachine, poolboy, cluster_info, - exometer_core + exometer_core, + riakc ]}, {mod, { riak_cs_app, []}}, {env, [ From 062c057051afcf804c18b89a4084212b5baea7fb Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 23 Mar 2021 23:21:07 +0200 Subject: [PATCH 072/831] use hmmr/cuttlefish, with fqdn datatype support --- apps/riak_cs/priv/riak_cs.schema | 4 ++-- rebar.config | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/priv/riak_cs.schema b/apps/riak_cs/priv/riak_cs.schema index 3c3a28509..84e9f4cb9 100644 --- a/apps/riak_cs/priv/riak_cs.schema +++ b/apps/riak_cs/priv/riak_cs.schema @@ -689,9 +689,9 @@ %% each line, in which the last token of key is member identifier and %% value is a PB address of Riak node to connect. {mapping, "supercluster.member.$member_id", "riak_cs.supercluster_members", [ - {datatype, ip}, + {datatype, [ip, fqdn]}, {include_default, "bag-A"}, - {commented, {"192.168.0.101", 8087}}, + {commented, {"riak-A1.example.com:8087", 8087}}, hidden ]}. diff --git a/rebar.config b/rebar.config index 36e4e29a3..a1d64530c 100644 --- a/rebar.config +++ b/rebar.config @@ -14,7 +14,7 @@ ] }. -{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/basho/rebar3_cuttlefish", {tag, "0.2.0"}}} +{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/hmmr/rebar3_cuttlefish", {tag, "riak_cs-2.2"}}} ] }. From 918c88f67878647d238fe0698eb395b7f1a4b2e4 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 23 Mar 2021 23:24:10 +0200 Subject: [PATCH 073/831] brush up eunit test for otp-22 --- apps/riak_cs/src/base64url.erl | 1 + apps/riak_cs/src/riak_cs_acl.erl | 3 +- apps/riak_cs/src/riak_cs_acl_utils.erl | 10 +-- apps/riak_cs/src/riak_cs_bucket.erl | 1 + apps/riak_cs/src/riak_cs_gc.erl | 1 + apps/riak_cs/src/riak_cs_list_objects_fsm.erl | 1 + .../src/riak_cs_list_objects_fsm_v2.erl | 1 + apps/riak_cs/src/riak_cs_manifest_utils.erl | 5 +- apps/riak_cs/src/riak_cs_mp_utils.erl | 1 + apps/riak_cs/src/riak_cs_oos_rewrite.erl | 3 +- apps/riak_cs/src/riak_cs_s3_rewrite.erl | 1 + apps/riak_cs/src/riak_cs_storage.erl | 1 + apps/riak_cs/src/riak_cs_user.erl | 1 + apps/riak_cs/src/riak_cs_utils.erl | 1 + apps/riak_cs/src/twop_set.erl | 1 + apps/riak_cs/test/cs782_regression_test.erl | 1 + apps/riak_cs/test/riak_cs_acl_utils_eqc.erl | 1 + .../riak_cs/test/riak_cs_bucket_name_test.erl | 1 + apps/riak_cs/test/riak_cs_bucket_test.erl | 1 + apps/riak_cs/test/riak_cs_config_test.erl | 73 ++++--------------- apps/riak_cs/test/riak_cs_dummy_reader.erl | 2 +- .../test/riak_cs_list_objects_utils_test.erl | 1 + apps/riak_cs/test/riak_cs_s3_auth_eqc.erl | 1 + apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl | 1 + apps/riak_cs/test/riak_cs_s3_policy_eqc.erl | 1 + apps/riak_cs/test/riak_cs_s3_policy_test.erl | 1 + apps/riak_cs/test/riak_cs_s3_rewrite_test.erl | 1 + apps/riak_cs/test/riak_cs_storage_mr_test.erl | 5 +- apps/riak_cs/test/riak_cs_wm_bucket_test.erl | 7 +- apps/riak_cs/test/riak_cs_wm_key_test.erl | 5 +- apps/riak_cs/test/riak_cs_wm_service_test.erl | 5 +- apps/riak_cs/test/riak_cs_wm_test_utils.erl | 2 +- rebar.config | 3 - 33 files changed, 58 insertions(+), 86 deletions(-) diff --git a/apps/riak_cs/src/base64url.erl b/apps/riak_cs/src/base64url.erl index d89cf8d19..33706305a 100644 --- a/apps/riak_cs/src/base64url.erl +++ b/apps/riak_cs/src/base64url.erl @@ -34,6 +34,7 @@ -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -include_lib("eunit/include/eunit.hrl"). -endif. diff --git a/apps/riak_cs/src/riak_cs_acl.erl b/apps/riak_cs/src/riak_cs_acl.erl index 278ef685e..5860c2e8a 100644 --- a/apps/riak_cs/src/riak_cs_acl.erl +++ b/apps/riak_cs/src/riak_cs_acl.erl @@ -27,10 +27,9 @@ -include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). -ifdef(TEST). - -compile(export_all). +-compile(nowarn_export_all). -include_lib("eunit/include/eunit.hrl"). - -endif. %% Public API diff --git a/apps/riak_cs/src/riak_cs_acl_utils.erl b/apps/riak_cs/src/riak_cs_acl_utils.erl index 8e8743517..bb64eac6e 100644 --- a/apps/riak_cs/src/riak_cs_acl_utils.erl +++ b/apps/riak_cs/src/riak_cs_acl_utils.erl @@ -26,11 +26,9 @@ -include_lib("xmerl/include/xmerl.hrl"). -ifdef(TEST). - -compile(export_all). - +-compile(nowarn_export_all). -include_lib("eunit/include/eunit.hrl"). - -endif. %% Public API @@ -1024,7 +1022,7 @@ comment_space_test() -> ok. acl_from_json_test() -> - CreationTime = erlang:now(), + CreationTime = erlang:timestamp(), {AclMegaSecs, AclSecs, AclMicroSecs} = CreationTime, JsonTerm = [{<<"version">>,1}, {<<"owner">>, @@ -1060,7 +1058,7 @@ acl_from_json_test() -> ?assertEqual(ExpectedAcl, Acl). acl_to_json_term_test() -> - CreationTime = erlang:now(), + CreationTime = erlang:timestamp(), Acl = acl("tester1", "TESTID1", "TESTKEYID1", @@ -1103,7 +1101,7 @@ owner_to_json_term_test() -> ?assertEqual(ExpectedTerm, JsonTerm). grants_to_json_term_test() -> - CreationTime = erlang:now(), + CreationTime = erlang:timestamp(), Acl = acl("tester1", "TESTID1", "TESTKEYID1", diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index 9d15a73cf..ea8879f2a 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -48,6 +48,7 @@ -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -include_lib("eunit/include/eunit.hrl"). -endif. diff --git a/apps/riak_cs/src/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl index e6d9166f9..9337163c8 100644 --- a/apps/riak_cs/src/riak_cs_gc.erl +++ b/apps/riak_cs/src/riak_cs_gc.erl @@ -25,6 +25,7 @@ -include("riak_cs_gc.hrl"). -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -include_lib("eunit/include/eunit.hrl"). -endif. diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl index 5ef554231..3776a4f0d 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl @@ -33,6 +33,7 @@ -ifdef(TEST). -compile([export_all]). +-compile(nowarn_export_all). -include_lib("eunit/include/eunit.hrl"). -endif. diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl index 7a60a7ea9..73ec4b693 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl @@ -34,6 +34,7 @@ -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -endif. %% API diff --git a/apps/riak_cs/src/riak_cs_manifest_utils.erl b/apps/riak_cs/src/riak_cs_manifest_utils.erl index 2c7a8146c..f69a2b474 100644 --- a/apps/riak_cs/src/riak_cs_manifest_utils.erl +++ b/apps/riak_cs/src/riak_cs_manifest_utils.erl @@ -25,6 +25,7 @@ -include("riak_cs.hrl"). -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -include_lib("eunit/include/eunit.hrl"). -endif. @@ -491,12 +492,12 @@ cleanup(_Ctx) -> wrong_state_for_pruning() -> Mani = new_mani_helper(), Mani2 = Mani?MANIFEST{state=active}, - ?assert(not needs_pruning(Mani2, erlang:now())). + ?assert(not needs_pruning(Mani2, erlang:timestamp())). wrong_state_for_pruning_2() -> Mani = new_mani_helper(), Mani2 = Mani?MANIFEST{state=pending_delete}, - ?assert(not needs_pruning(Mani2, erlang:now())). + ?assert(not needs_pruning(Mani2, erlang:timestamp())). does_need_pruning() -> application:set_env(riak_cs, leeway_seconds, 1), diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 84aeac61f..400a628c9 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -28,6 +28,7 @@ -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -ifdef(EQC). -include_lib("eqc/include/eqc.hrl"). -endif. diff --git a/apps/riak_cs/src/riak_cs_oos_rewrite.erl b/apps/riak_cs/src/riak_cs_oos_rewrite.erl index bb71729fa..2f120209e 100644 --- a/apps/riak_cs/src/riak_cs_oos_rewrite.erl +++ b/apps/riak_cs/src/riak_cs_oos_rewrite.erl @@ -29,8 +29,9 @@ -define(OOS_ACCOUNT_HEADER, "x-oos-account"). -ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). -compile(export_all). +-compile(nowarn_export_all). +-include_lib("eunit/include/eunit.hrl"). -endif. %% @doc Function to rewrite headers prior to processing by webmachine. diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/riak_cs_s3_rewrite.erl index d228c0035..35d878226 100644 --- a/apps/riak_cs/src/riak_cs_s3_rewrite.erl +++ b/apps/riak_cs/src/riak_cs_s3_rewrite.erl @@ -54,6 +54,7 @@ -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -endif. -type subresource() :: {string(), string()}. diff --git a/apps/riak_cs/src/riak_cs_storage.erl b/apps/riak_cs/src/riak_cs_storage.erl index c498e2a44..d9b68dc03 100644 --- a/apps/riak_cs/src/riak_cs_storage.erl +++ b/apps/riak_cs/src/riak_cs_storage.erl @@ -39,6 +39,7 @@ -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -include_lib("eunit/include/eunit.hrl"). -endif. diff --git a/apps/riak_cs/src/riak_cs_user.erl b/apps/riak_cs/src/riak_cs_user.erl index d9d9a2dcb..d8e6b6a83 100644 --- a/apps/riak_cs/src/riak_cs_user.erl +++ b/apps/riak_cs/src/riak_cs_user.erl @@ -44,6 +44,7 @@ -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -endif. %% =================================================================== diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index 0e1b1e5e1..f96cc8b3f 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -74,6 +74,7 @@ -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -include_lib("eunit/include/eunit.hrl"). -endif. diff --git a/apps/riak_cs/src/twop_set.erl b/apps/riak_cs/src/twop_set.erl index 9373b2e54..e48bcbbf6 100644 --- a/apps/riak_cs/src/twop_set.erl +++ b/apps/riak_cs/src/twop_set.erl @@ -39,6 +39,7 @@ -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -include_lib("eunit/include/eunit.hrl"). -endif. diff --git a/apps/riak_cs/test/cs782_regression_test.erl b/apps/riak_cs/test/cs782_regression_test.erl index d99f8db6d..a8aefbe76 100644 --- a/apps/riak_cs/test/cs782_regression_test.erl +++ b/apps/riak_cs/test/cs782_regression_test.erl @@ -21,6 +21,7 @@ -module(cs782_regression_test). -compile(export_all). +-compile(nowarn_export_all). -include("riak_cs.hrl"). -include_lib("eunit/include/eunit.hrl"). diff --git a/apps/riak_cs/test/riak_cs_acl_utils_eqc.erl b/apps/riak_cs/test/riak_cs_acl_utils_eqc.erl index bfce0119c..ab41a4946 100644 --- a/apps/riak_cs/test/riak_cs_acl_utils_eqc.erl +++ b/apps/riak_cs/test/riak_cs_acl_utils_eqc.erl @@ -22,6 +22,7 @@ -module(riak_cs_acl_utils_eqc). -compile(export_all). +-compile(nowarn_export_all). -include("riak_cs.hrl"). diff --git a/apps/riak_cs/test/riak_cs_bucket_name_test.erl b/apps/riak_cs/test/riak_cs_bucket_name_test.erl index 717d75ae4..3be6e5b26 100644 --- a/apps/riak_cs/test/riak_cs_bucket_name_test.erl +++ b/apps/riak_cs/test/riak_cs_bucket_name_test.erl @@ -21,6 +21,7 @@ -module(riak_cs_bucket_name_test). -compile(export_all). +-compile(nowarn_export_all). -ifdef(TEST). diff --git a/apps/riak_cs/test/riak_cs_bucket_test.erl b/apps/riak_cs/test/riak_cs_bucket_test.erl index 8f77e9753..dfb90969e 100644 --- a/apps/riak_cs/test/riak_cs_bucket_test.erl +++ b/apps/riak_cs/test/riak_cs_bucket_test.erl @@ -21,6 +21,7 @@ -module(riak_cs_bucket_test). -compile(export_all). +-compile(nowarn_export_all). -ifdef(TEST). -include("riak_cs.hrl"). diff --git a/apps/riak_cs/test/riak_cs_config_test.erl b/apps/riak_cs/test/riak_cs_config_test.erl index bf9821fe5..67ef9541f 100644 --- a/apps/riak_cs/test/riak_cs_config_test.erl +++ b/apps/riak_cs/test/riak_cs_config_test.erl @@ -1,5 +1,6 @@ -module(riak_cs_config_test). -compile(export_all). +-compile(nowarn_export_all). -include_lib("eunit/include/eunit.hrl"). @@ -50,17 +51,17 @@ default_config_test() -> {riak_cs_access_log_handler, []}]), cuttlefish_unit:assert_config(Config, "webmachine.server_name", "Riak CS"), - {ok, [ConsoleLog, ErrorLog]} = cuttlefish_unit:path(cuttlefish_variable:tokenize("lager.handlers"), Config), - cuttlefish_unit:assert_config([ConsoleLog], "lager_file_backend", [{file, "./log/console.log"}, - {level, info}, - {size, 10485760}, - {date, "$D0"}, - {count, 5}]), - cuttlefish_unit:assert_config([ErrorLog], "lager_file_backend", [{file, "./log/error.log"}, - {level, error}, - {size, 10485760}, - {date, "$D0"}, - {count, 5}]), + %% {ok, [ConsoleLog, ErrorLog]} = cuttlefish_unit:path(cuttlefish_variable:tokenize("lager.handlers"), Config), + %% cuttlefish_unit:assert_config([ConsoleLog], "lager_file_backend", [{file, "./log/console.log"}, + %% {level, info}, + %% {size, 10485760}, + %% {date, "$D0"}, + %% {count, 5}]), + %% cuttlefish_unit:assert_config([ErrorLog], "lager_file_backend", [{file, "./log/error.log"}, + %% {level, error}, + %% {size, 10485760}, + %% {date, "$D0"}, + %% {count, 5}]), cuttlefish_unit:assert_not_configured(Config, "riak_cs.supercluster_members"), cuttlefish_unit:assert_config(Config, "riak_cs.supercluster_weight_refresh_interval", 900), %% cuttlefish_unit:assert_config(Config, "vm_args.+scl", false), @@ -115,52 +116,6 @@ active_delete_threshold_test() -> cuttlefish_unit:assert_config(Config, "riak_cs.active_delete_threshold", 10*1024*1024), ok. -lager_syslog_test() -> - Conf = [{["log", "syslog"], on}, - {["log", "syslog", "ident"], "ident-test"}, - {["log", "syslog", "facility"], local7}, - {["log", "syslog", "level"], debug} - ], - Config = cuttlefish_unit:generate_templated_config(schema_files(), Conf, context()), - cuttlefish_unit:assert_config(Config, "lager.handlers.lager_syslog_backend", ["ident-test", local7, debug]), - ok. - -lager_hander_test() -> - Conf = [ - {["log", "console", "file"], "./log/consolefile.log"}, - {["log", "console", "level"], "debug"}, - {["log", "console", "size"], "1MB"}, - {["log", "console", "rotation"], "$D5"}, - {["log", "console", "rotation", "keep"], "10"}, - {["log", "error", "file"], "./log/errorfile.log"}, - {["log", "error", "size"], "1KB"}, - {["log", "error", "rotation"], "$D10"}, - {["log", "error", "rotation", "keep"], "20"} - ], - Config = cuttlefish_unit:generate_templated_config(schema_files(), Conf, context()), - {ok, [ConsoleLog, ErrorLog]} = cuttlefish_unit:path(cuttlefish_variable:tokenize("lager.handlers"), Config), - cuttlefish_unit:assert_config([ConsoleLog], "lager_file_backend", [{file, "./log/consolefile.log"}, - {level, debug}, - {size, 1048576}, - {date, "$D5"}, - {count, 10}]), - cuttlefish_unit:assert_config([ErrorLog], "lager_file_backend", [{file, "./log/errorfile.log"}, - {level, error}, - {size, 1024}, - {date, "$D10"}, - {count, 20}]), - - CurrentConf1 = [{["log", "console", "rotation", "keep"], "current"}], - Config1 = cuttlefish_unit:generate_templated_config(schema_files(), CurrentConf1, context()), - {ok, [ConsoleLog1, _ErrorLog1]} = cuttlefish_unit:path(cuttlefish_variable:tokenize("lager.handlers"), Config1), - cuttlefish_unit:assert_config([ConsoleLog1], "lager_file_backend.count", 0), - - CurrentConf2 = [{["log", "error", "rotation", "keep"], "current"}], - Config2 = cuttlefish_unit:generate_templated_config(schema_files(), CurrentConf2, context()), - {ok, [_ConsoleLog2, ErrorLog2]} = cuttlefish_unit:path(cuttlefish_variable:tokenize("lager.handlers"), Config2), - cuttlefish_unit:assert_config([ErrorLog2], "lager_file_backend.count", 0), - ok. - max_buckets_per_user_test() -> DefConf = [{["max_buckets_per_user"], "100"}], DefConfig = cuttlefish_unit:generate_templated_config(schema_files(), DefConf, context()), @@ -265,8 +220,8 @@ supercluster_weight_refresh_interval_test_() -> ]. schema_files() -> - ["../rel/files/riak_cs.schema"]. + ["apps/riak_cs/priv/riak_cs.schema"]. context() -> - {ok, Context} = file:consult("../rel/vars.config"), + {ok, Context} = file:consult("rel/vars.config"), Context. diff --git a/apps/riak_cs/test/riak_cs_dummy_reader.erl b/apps/riak_cs/test/riak_cs_dummy_reader.erl index 93d306ea0..59e293dc0 100644 --- a/apps/riak_cs/test/riak_cs_dummy_reader.erl +++ b/apps/riak_cs/test/riak_cs_dummy_reader.erl @@ -83,7 +83,7 @@ get_manifest(Pid) -> init([CallerPid, Bucket, Key, ContentLength, BlockSize]) -> process_flag(trap_exit, true), %% Get a connection to riak - random:seed(now()), + rand:seed(exsss, erlang:timestamp()), {ok, #state{content_length=ContentLength, remaining=ContentLength, bucket=Bucket, diff --git a/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl b/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl index 166ad7fc1..a96a6b828 100644 --- a/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl +++ b/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl @@ -23,6 +23,7 @@ -ifdef(TEST). -compile(export_all). +-compile(nowarn_export_all). -include("riak_cs.hrl"). -include_lib("eunit/include/eunit.hrl"). diff --git a/apps/riak_cs/test/riak_cs_s3_auth_eqc.erl b/apps/riak_cs/test/riak_cs_s3_auth_eqc.erl index 1c19a3e05..e4b40b426 100644 --- a/apps/riak_cs/test/riak_cs_s3_auth_eqc.erl +++ b/apps/riak_cs/test/riak_cs_s3_auth_eqc.erl @@ -21,6 +21,7 @@ -module(riak_cs_s3_auth_eqc). -compile(export_all). +-compile(nowarn_export_all). -ifdef(EQC). diff --git a/apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl b/apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl index b981f0edb..ff82ec396 100644 --- a/apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl +++ b/apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl @@ -21,6 +21,7 @@ -module(riak_cs_s3_auth_v4_test). -compile(export_all). +-compile(nowarn_export_all). -include("riak_cs.hrl"). -include_lib("eunit/include/eunit.hrl"). diff --git a/apps/riak_cs/test/riak_cs_s3_policy_eqc.erl b/apps/riak_cs/test/riak_cs_s3_policy_eqc.erl index ed365c031..1d848c938 100644 --- a/apps/riak_cs/test/riak_cs_s3_policy_eqc.erl +++ b/apps/riak_cs/test/riak_cs_s3_policy_eqc.erl @@ -21,6 +21,7 @@ -module(riak_cs_s3_policy_eqc). -compile(export_all). +-compile(nowarn_export_all). -ifdef(TEST). -ifdef(EQC). diff --git a/apps/riak_cs/test/riak_cs_s3_policy_test.erl b/apps/riak_cs/test/riak_cs_s3_policy_test.erl index 9f049c341..86d03d3b1 100644 --- a/apps/riak_cs/test/riak_cs_s3_policy_test.erl +++ b/apps/riak_cs/test/riak_cs_s3_policy_test.erl @@ -23,6 +23,7 @@ -module(riak_cs_s3_policy_test). -compile(export_all). +-compile(nowarn_export_all). -include("riak_cs.hrl"). -include("s3_api.hrl"). diff --git a/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl b/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl index ae30ac9e8..931b0f62d 100644 --- a/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl +++ b/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl @@ -26,6 +26,7 @@ -define(RCS_REWRITE_HEADER, "x-rcs-rewrite-path"). -compile(export_all). +-compile(nowarn_export_all). rewrite_path_test() -> application:set_env(riak_cs, cs_root_host, ?ROOT_HOST), diff --git a/apps/riak_cs/test/riak_cs_storage_mr_test.erl b/apps/riak_cs/test/riak_cs_storage_mr_test.erl index 19833c122..d6798b238 100644 --- a/apps/riak_cs/test/riak_cs_storage_mr_test.erl +++ b/apps/riak_cs/test/riak_cs_storage_mr_test.erl @@ -23,11 +23,10 @@ -module(riak_cs_storage_mr_test). -compile(export_all). +-compile(nowarn_export_all). -include("riak_cs.hrl"). --ifdef(TEST). - -include_lib("eunit/include/eunit.hrl"). -define(M, (m())?MANIFEST). @@ -202,5 +201,3 @@ count_multipart_parts_test_() -> [{<<"pocketburgers">>, ?MANIFEST{props=[{multipart, ValidMPManifest}], state=writing}}])) ]. - --endif. diff --git a/apps/riak_cs/test/riak_cs_wm_bucket_test.erl b/apps/riak_cs/test/riak_cs_wm_bucket_test.erl index 642615387..73c707414 100644 --- a/apps/riak_cs/test/riak_cs_wm_bucket_test.erl +++ b/apps/riak_cs/test/riak_cs_wm_bucket_test.erl @@ -21,6 +21,7 @@ -module(riak_cs_wm_bucket_test). -compile(export_all). +-compile(nowarn_export_all). -include("riak_cs.hrl"). -include_lib("webmachine/include/webmachine.hrl"). @@ -39,9 +40,9 @@ bucket_test_() -> %% The state needed for this test %% scares me create_bucket_and_list_keys() -> - PathInfo = dict:from_list([{bucket, "create_bucket_test"}]), - _RD = #wm_reqdata{path_info = PathInfo}, - _Ctx = #context{}, + _PathInfo = dict:from_list([{bucket, "create_bucket_test"}]), + %% _RD = #wm_reqdata{path_info = PathInfo}, + %% _Ctx = #context{}, ?assert(true). %% {Result, _, _} = riak_cs_wm_bucket:to_json(RD, Ctx), %% ?assertEqual(mochijson2:encode([]), Result). diff --git a/apps/riak_cs/test/riak_cs_wm_key_test.erl b/apps/riak_cs/test/riak_cs_wm_key_test.erl index 1d86ec406..0aede8c16 100644 --- a/apps/riak_cs/test/riak_cs_wm_key_test.erl +++ b/apps/riak_cs/test/riak_cs_wm_key_test.erl @@ -21,6 +21,7 @@ -module(riak_cs_wm_key_test). -compile(export_all). +-compile(nowarn_export_all). -include("riak_cs.hrl"). -include_lib("webmachine/include/webmachine.hrl"). @@ -38,8 +39,8 @@ get_object() -> %% path info the wm_reqdata because %% riak_cs_wm_utils:ensure_doc uses %% it. - _Ctx= #key_context{bucket="keytest", key="foo"}, - _RD = #wm_reqdata{}, + %% _Ctx= #key_context{bucket="keytest", key="foo"}, + %% _RD = #wm_reqdata{}, ?assert(true). %% {Object, _, _} = riak_cs_wm_key:produce_body(RD, Ctx), %% ?assertEqual(<<>>, Object). diff --git a/apps/riak_cs/test/riak_cs_wm_service_test.erl b/apps/riak_cs/test/riak_cs_wm_service_test.erl index 5dd8a3f09..23f3d1cc9 100644 --- a/apps/riak_cs/test/riak_cs_wm_service_test.erl +++ b/apps/riak_cs/test/riak_cs_wm_service_test.erl @@ -21,6 +21,7 @@ -module(riak_cs_wm_service_test). -compile(export_all). +-compile(nowarn_export_all). -include("riak_cs.hrl"). -include_lib("webmachine/include/webmachine.hrl"). @@ -41,11 +42,11 @@ get_bucket_to_json() -> {ok, User} = riak_cs_user:create_user(UserName, Email), KeyID = User?RCS_USER.key_id, [riak_cs_utils:create_bucket(KeyID, Name) || Name <- BucketNames], - {ok, UpdatedUser} = riak_cs_user:get_user(User?RCS_USER.key_id), + {ok, _UpdatedUser} = riak_cs_user:get_user(User?RCS_USER.key_id), CorrectJsonBucketNames = [list_to_binary(Name) || Name <- lists:reverse(BucketNames)], _EncodedCorrectNames = mochijson2:encode(CorrectJsonBucketNames), - _Context = #context{user=UpdatedUser}, + %%_Context = #context{user=UpdatedUser}, ?assert(true). %%{ResultToTest, _, _} = riak_cs_wm_service:to_json(fake_rd, Context), %%?assertEqual(EncodedCorrectNames, ResultToTest). diff --git a/apps/riak_cs/test/riak_cs_wm_test_utils.erl b/apps/riak_cs/test/riak_cs_wm_test_utils.erl index f42854696..522d5967b 100644 --- a/apps/riak_cs/test/riak_cs_wm_test_utils.erl +++ b/apps/riak_cs/test/riak_cs_wm_test_utils.erl @@ -25,7 +25,7 @@ setup() -> %% Start erlang node application:start(sasl), - TestNode = list_to_atom("testnode" ++ integer_to_list(element(3, now()))), + TestNode = list_to_atom("testnode" ++ integer_to_list(element(3, erlang:timestamp()))), net_kernel:start([TestNode, shortnames]), application:start(riakc), application:start(inets), diff --git a/rebar.config b/rebar.config index a1d64530c..37a44cc9b 100644 --- a/rebar.config +++ b/rebar.config @@ -108,9 +108,6 @@ {dialyzer, [{plt_apps, all_deps}]}. -{eunit_opts, [nowarn_export_all, verbose]}. - - %% {client_test, [ %% {test_paths, ["client_tests/erlang"]}, %% {test_output, ".client_test"} From ef9bbc7a9622be06dad7010359fdbb45ca1a2084 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 25 Mar 2021 18:54:40 +0200 Subject: [PATCH 074/831] start apps with deps in riak_cs_stats, to make eunit tests pass --- apps/riak_cs/src/riak_cs_stats.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_stats.erl b/apps/riak_cs/src/riak_cs_stats.erl index bcb084e11..cdee01e0a 100644 --- a/apps/riak_cs/src/riak_cs_stats.erl +++ b/apps/riak_cs/src/riak_cs_stats.erl @@ -331,11 +331,11 @@ metric_to_atom(Key, Suffix) -> -include_lib("eunit/include/eunit.hrl"). stats_test_() -> - Apps = [setup, compiler, syntax_tools, goldrush, exometer_core], + Apps = [setup, compiler, syntax_tools, exometer_core], {setup, fun() -> logger:update_primary_config(#{level => none}), - [catch (application:start(App)) || App <- Apps], + [application:ensure_all_started(App) || App <- Apps], ok = init() end, fun(_) -> From 05e0f69135e4ef51c1e6b0a93dbca08eaa5d4f19 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 25 Mar 2021 19:29:54 +0200 Subject: [PATCH 075/831] add rebar.lock --- rebar.lock | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 rebar.lock diff --git a/rebar.lock b/rebar.lock new file mode 100644 index 000000000..e90367104 --- /dev/null +++ b/rebar.lock @@ -0,0 +1,84 @@ +{"1.1.0", +[{<<"base16">>,{pkg,<<"base16">>,<<"1.0.0">>},1}, + {<<"bear">>,{pkg,<<"bear">>,<<"0.8.7">>},2}, + {<<"cluster_info">>, + {git,"git://github.com/basho/cluster_info", + {ref,"389d43af7ac1550b3c01cd55b8147bcc0e20022f"}}, + 0}, + {<<"eini">>,{pkg,<<"eini">>,<<"1.2.7">>},1}, + {<<"erlcloud">>, + {git,"git://github.com/erlcloud/erlcloud.git", + {ref,"f807268ff2e4b4efd1d2fb1925a6e1418e2ad954"}}, + 0}, + {<<"exometer_core">>, + {git,"git://github.com/Feuerlabs/exometer_core", + {ref,"547f28bc93c7cb3d3f1174fb4c510667a4ebb645"}}, + 0}, + {<<"folsom">>,{pkg,<<"folsom">>,<<"0.8.7">>},1}, + {<<"getopt">>, + {git,"git://github.com/jcomellas/getopt.git", + {ref,"1c963cecd75cb5f7b37f28737abb120e61390c62"}}, + 0}, + {<<"hut">>,{pkg,<<"hut">>,<<"1.2.1">>},1}, + {<<"jsx">>,{pkg,<<"jsx">>,<<"2.11.0">>},1}, + {<<"lhttpc">>,{pkg,<<"lhttpc">>,<<"1.6.2">>},1}, + {<<"meck">>, + {git,"https://github.com/basho/meck.git", + {ref,"dde759050eff19a1a80fd854d7375174b191665d"}}, + 2}, + {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"2.18.0">>},1}, + {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.0">>},0}, + {<<"poolboy">>, + {git,"git://github.com/basho/poolboy", + {ref,"032ea3186fda78b4913deb8932af318ebb9b1258"}}, + 0}, + {<<"protobuffs">>, + {git,"https://github.com/basho/erlang_protobuffs.git", + {ref,"43c549e6ccd4524245190a906bb4344039bd2995"}}, + 1}, + {<<"quickrand">>, + {git,"https://github.com/okeuday/quickrand.git", + {ref,"c80077162f32c10002219f70e0afadb71e05f88c"}}, + 1}, + {<<"riak_cs_multibag">>, + {git,"git://github.com/hmmr/riak_cs_multibag.git", + {ref,"230127a0acc537094225ba802e880275e2455480"}}, + 0}, + {<<"riak_pb">>, + {git,"https://github.com/basho/riak_pb", + {ref,"b8a946426e0254abba2015f9b5c1a9db4e2405bc"}}, + 1}, + {<<"riak_repl_pb_api">>, + {git,"git://github.com/hmmr/riak_repl_pb_api.git", + {ref,"0b9eed638aef7e84a0ac8f895d670b9201522bf6"}}, + 0}, + {<<"riakc">>, + {git,"git://github.com/basho/riak-erlang-client", + {ref,"ea4fcd062f55a67e31c7294a1b8b8ccd957526c8"}}, + 0}, + {<<"setup">>,{pkg,<<"setup">>,<<"2.0.2">>},1}, + {<<"uuid">>, + {git,"git://github.com/okeuday/uuid.git", + {ref,"9312cc158a94c76e40c82ca45fd5056fb191c889"}}, + 0}, + {<<"webmachine">>, + {git,"git://github.com/webmachine/webmachine.git", + {ref,"92225b82fc702f78cf9d23248023ec841272df80"}}, + 0}, + {<<"xmerl">>, + {git,"git://github.com/hmmr/xmerl", + {ref,"dd32f193abc611f0dcb91248f7f4265220531c24"}}, + 0}]}. +[ +{pkg_hash,[ + {<<"base16">>, <<"283644E2B21BD5915ACB7178BED7851FB07C6E5749B8FAD68A53C501092176D9">>}, + {<<"bear">>, <<"16264309AE5D005D03718A5C82641FCC259C9E8F09ADEB6FD79CA4271168656F">>}, + {<<"eini">>, <<"EFC9D836E88591A47550BD34CE964E21CA1369F8716B24F73CFEA513FA99F666">>}, + {<<"folsom">>, <<"A885F0AEEE4C84270954C88A55A5A473D6B2C7493E32FFDC5765412DD555A951">>}, + {<<"hut">>, <<"08D46679523043424870723923971889E8A34D63B2F946A35B46CF921D1236E7">>}, + {<<"jsx">>, <<"08154624050333919B4AC1B789667D5F4DB166DC50E190C4D778D1587F102EE0">>}, + {<<"lhttpc">>, <<"044F16F0018C7AA7E945E9E9406C7F6035E0B8BC08BF77B00C78CE260E1071E3">>}, + {<<"mochiweb">>, <<"EB55F1DB3E6E960FAC4E6DB4E2DB9EC3602CC9F30B86CD1481D56545C3145D2E">>}, + {<<"parse_trans">>, <<"09765507A3C7590A784615CFD421D101AEC25098D50B89D7AA1D66646BC571C1">>}, + {<<"setup">>, <<"1203F4CDA11306C2E34434244576DED0A7BBFB0908D9A572356C809BD0CDF085">>}]} +]. From 49881af776dd2b5e2c3c2db77fe3af340232213e Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 27 Mar 2021 20:18:14 +0200 Subject: [PATCH 076/831] remove riak_test into its own repo, riak_cs_test --- .plugins/rebar_test_plugin.erl | 123 ---- Makefile | 20 +- rebar.config | 7 - riak_test/README.md | 193 ------ riak_test/bin/rtdev-build-releases.sh | 117 ---- riak_test/bin/rtdev-current.sh | 31 - riak_test/bin/rtdev-setup-releases.sh | 43 -- riak_test/intercepts/intercept.erl | 405 ------------ riak_test/intercepts/intercept.hrl | 23 - .../riak_cs_block_server_intercepts.erl | 37 -- .../riak_cs_riak_client_intercepts.erl | 26 - .../intercepts/riakc_pb_socket_intercepts.erl | 32 - riak_test/src/cs_suites.erl | 577 ------------------ riak_test/src/list_objects_test_helper.erl | 174 ------ riak_test/src/rc_helper.erl | 96 --- riak_test/src/repl_helpers.erl | 377 ------------ riak_test/src/rtcs.erl | 418 ------------- riak_test/src/rtcs_admin.erl | 238 -------- riak_test/src/rtcs_config.erl | 536 ---------------- riak_test/src/rtcs_dev.erl | 522 ---------------- riak_test/src/rtcs_exec.erl | 277 --------- riak_test/src/rtcs_multipart.erl | 88 --- riak_test/src/rtcs_object.erl | 141 ----- riak_test/src/tools_helper.erl | 103 ---- riak_test/tests/access_stats_test.erl | 206 ------- riak_test/tests/active_delete_test.erl | 40 -- riak_test/tests/auth_bypass_test.erl | 110 ---- riak_test/tests/block_audit_test.erl | 128 ---- riak_test/tests/buckets_test.erl | 220 ------- riak_test/tests/cs743_regression_test.erl | 100 --- riak_test/tests/error_response_test.erl | 71 --- riak_test/tests/external_client_tests.erl | 42 -- riak_test/tests/gc_tests.erl | 278 --------- riak_test/tests/https_tests.erl | 42 -- riak_test/tests/legacy_s3_rewrite_test.erl | 64 -- riak_test/tests/list_objects_test.erl | 37 -- riak_test/tests/list_objects_v2_test.erl | 57 -- riak_test/tests/migration_15_to_20_test.erl | 166 ----- riak_test/tests/migration_mixed_test.erl | 141 ----- riak_test/tests/mp_upload_test.erl | 366 ----------- .../tests/object_get_conditional_test.erl | 121 ---- riak_test/tests/object_get_test.erl | 283 --------- riak_test/tests/put_copy_test.erl | 355 ----------- riak_test/tests/regression_tests.erl | 266 -------- riak_test/tests/regression_tests_2.erl | 221 ------- riak_test/tests/repl_v3_test.erl | 325 ---------- riak_test/tests/riak_cs_debug_test.erl | 154 ----- riak_test/tests/select_gc_bucket_test.erl | 85 --- riak_test/tests/sibling_benchmark.erl | 256 -------- riak_test/tests/stanchion_switch_test.erl | 79 --- riak_test/tests/stats_test.erl | 167 ----- .../tests/storage_stats_detailed_test.erl | 155 ----- riak_test/tests/storage_stats_test.erl | 324 ---------- riak_test/tests/storage_stats_test_2.erl | 28 - riak_test/tests/too_large_entity_test.erl | 117 ---- riak_test/tests/upgrade_downgrade_test.erl | 156 ----- riak_test/tests/user_test.erl | 382 ------------ riak_test/tests/xml_response_test.erl | 162 ----- 58 files changed, 1 insertion(+), 10307 deletions(-) delete mode 100644 .plugins/rebar_test_plugin.erl delete mode 100644 riak_test/README.md delete mode 100755 riak_test/bin/rtdev-build-releases.sh delete mode 100755 riak_test/bin/rtdev-current.sh delete mode 100755 riak_test/bin/rtdev-setup-releases.sh delete mode 100644 riak_test/intercepts/intercept.erl delete mode 100644 riak_test/intercepts/intercept.hrl delete mode 100644 riak_test/intercepts/riak_cs_block_server_intercepts.erl delete mode 100644 riak_test/intercepts/riak_cs_riak_client_intercepts.erl delete mode 100644 riak_test/intercepts/riakc_pb_socket_intercepts.erl delete mode 100644 riak_test/src/cs_suites.erl delete mode 100644 riak_test/src/list_objects_test_helper.erl delete mode 100644 riak_test/src/rc_helper.erl delete mode 100644 riak_test/src/repl_helpers.erl delete mode 100644 riak_test/src/rtcs.erl delete mode 100644 riak_test/src/rtcs_admin.erl delete mode 100644 riak_test/src/rtcs_config.erl delete mode 100644 riak_test/src/rtcs_dev.erl delete mode 100644 riak_test/src/rtcs_exec.erl delete mode 100644 riak_test/src/rtcs_multipart.erl delete mode 100644 riak_test/src/rtcs_object.erl delete mode 100644 riak_test/src/tools_helper.erl delete mode 100644 riak_test/tests/access_stats_test.erl delete mode 100644 riak_test/tests/active_delete_test.erl delete mode 100644 riak_test/tests/auth_bypass_test.erl delete mode 100644 riak_test/tests/block_audit_test.erl delete mode 100644 riak_test/tests/buckets_test.erl delete mode 100644 riak_test/tests/cs743_regression_test.erl delete mode 100644 riak_test/tests/error_response_test.erl delete mode 100644 riak_test/tests/external_client_tests.erl delete mode 100644 riak_test/tests/gc_tests.erl delete mode 100644 riak_test/tests/https_tests.erl delete mode 100644 riak_test/tests/legacy_s3_rewrite_test.erl delete mode 100644 riak_test/tests/list_objects_test.erl delete mode 100644 riak_test/tests/list_objects_v2_test.erl delete mode 100644 riak_test/tests/migration_15_to_20_test.erl delete mode 100644 riak_test/tests/migration_mixed_test.erl delete mode 100644 riak_test/tests/mp_upload_test.erl delete mode 100644 riak_test/tests/object_get_conditional_test.erl delete mode 100644 riak_test/tests/object_get_test.erl delete mode 100644 riak_test/tests/put_copy_test.erl delete mode 100644 riak_test/tests/regression_tests.erl delete mode 100644 riak_test/tests/regression_tests_2.erl delete mode 100644 riak_test/tests/repl_v3_test.erl delete mode 100644 riak_test/tests/riak_cs_debug_test.erl delete mode 100644 riak_test/tests/select_gc_bucket_test.erl delete mode 100644 riak_test/tests/sibling_benchmark.erl delete mode 100644 riak_test/tests/stanchion_switch_test.erl delete mode 100644 riak_test/tests/stats_test.erl delete mode 100644 riak_test/tests/storage_stats_detailed_test.erl delete mode 100644 riak_test/tests/storage_stats_test.erl delete mode 100644 riak_test/tests/storage_stats_test_2.erl delete mode 100644 riak_test/tests/too_large_entity_test.erl delete mode 100644 riak_test/tests/upgrade_downgrade_test.erl delete mode 100644 riak_test/tests/user_test.erl delete mode 100644 riak_test/tests/xml_response_test.erl diff --git a/.plugins/rebar_test_plugin.erl b/.plugins/rebar_test_plugin.erl deleted file mode 100644 index 05116bbc5..000000000 --- a/.plugins/rebar_test_plugin.erl +++ /dev/null @@ -1,123 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(rebar_test_plugin). - --export([ - client_test_clean/2, - client_test_compile/2, - client_test_run/2, - riak_test_clean/2, - riak_test_compile/2 -]). - -%% =================================================================== -%% Public API -%% =================================================================== -client_test_clean(Config, AppFile) -> - case should_i_run(Config) of - false -> ok; - _ -> test_clean(client_test, Config, AppFile) - end. - -client_test_compile(Config, AppFile) -> - case should_i_run(Config) of - false -> ok; - _ -> test_compile(client_test, Config, AppFile) - end. - -client_test_run(Config, AppFile) -> - case should_i_run(Config) of - false -> ok; - _ -> test_run(client_test, Config, AppFile) - end. - -riak_test_clean(Config, AppFile) -> - case should_i_run(Config) of - false -> ok; - _ -> test_clean(riak_test, Config, AppFile) - end. - -riak_test_compile(Config, AppFile) -> - case should_i_run(Config) of - false -> ok; - _ -> test_compile(riak_test, Config, AppFile) - end. - -%% =================================================================== -%% Private Functions - pronounced Funk-tee-owns, not funk-ee-towns -%% =================================================================== -should_i_run(Config) -> - rebar_utils:processing_base_dir(Config). - -option(TestType, Key, Config) -> - case proplists:get_value(TestType, element(3, Config), not_configured) of - not_configured -> {error, not_configured}; - TestConfig -> - proplists:get_value(Key, TestConfig, {error, not_set}) - end. - -test_clean(TestType, Config, _AppFile) -> - case option(TestType, test_output, Config) of - {error, not_set} -> - io:format("No test_output directory set, check your rebar.config"); - TestOutputDir -> - io:format("Removing test_output dir ~s~n", [TestOutputDir]), - rebar_file_utils:rm_rf(TestOutputDir) - end, - ok. - -test_compile(TestType, Config, AppFile) -> - CompilationConfig = compilation_config(TestType, Config), - OutputDir = option(TestType, test_output, Config), - rebar_erlc_compiler:compile(CompilationConfig, AppFile), - ok. - -test_run(TestType, Config, _AppFile) -> - OutputDir = option(TestType, test_output, Config), - Cwd = rebar_utils:get_cwd(), - ok = file:set_cwd([Cwd, $/, OutputDir]), - EunitResult = (catch eunit:test("./")), - %% Return to original working dir - ok = file:set_cwd(Cwd), - EunitResult. - - -compilation_config(TestType, Conf) -> - C1 = rebar_config:set(Conf, TestType, undefined), - C2 = rebar_config:set(C1, plugins, undefined), - ErlOpts = rebar_utils:erl_opts(Conf), - ErlOpts1 = proplists:delete(src_dirs, ErlOpts), - ErlOpts2 = - case eqc_present() of - true -> - [{d, 'TEST'}, {d, 'EQC'}, {outdir, option(TestType, test_output, Conf)}, {src_dirs, option(TestType, test_paths, Conf)} | ErlOpts1]; - false -> - [{d, 'TEST'}, {outdir, option(TestType, test_output, Conf)}, {src_dirs, option(TestType, test_paths, Conf)} | ErlOpts1] - end, - rebar_config:set(C2, erl_opts, ErlOpts2). - -eqc_present() -> - case catch eqc:version() of - {'EXIT', {undef, _}} -> - false; - _ -> - true - end. diff --git a/Makefile b/Makefile index 8d35ffe74..a04f613a1 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ PULSE_TESTS = riak_cs_get_fsm_pulse all: compile -compile: compile-riak-test +compile: compile-src: deps @($(REBAR) compile) @@ -24,27 +24,9 @@ compile-client-test: all bitcask-downgrade-script: riak_test/src/downgrade_bitcask.erl -## KLUDGE, as downgrade script is not included in the release. -riak_test/src/downgrade_bitcask.erl: - @wget --no-check-certificate https://raw.githubusercontent.com/basho/bitcask/develop/priv/scripts/downgrade_bitcask.erl \ - -O riak_test/src/downgrade_bitcask.erl - -compile-riak-test: compile-src bitcask-downgrade-script - @$(REBAR) skip_deps=true riak_test_compile - ## There are some Riak CS internal modules that our riak_test - ## test would like to use. But riak_test doesn't have a nice - ## way of adding the -pz argument + code path that we need. - ## So we'll copy the BEAM files to a place that riak_test is - ## already using. - cp ebin/riak_cs_wm_utils.beam riak_test/ebin - cp ebin/twop_set.beam riak_test/ebin - clean-client-test: @$(REBAR) client_test_clean -clean-riak-test: - @$(REBAR) riak_test_clean skip_deps=true - deps: @$(REBAR) get-deps diff --git a/rebar.config b/rebar.config index 37a44cc9b..12e773c0e 100644 --- a/rebar.config +++ b/rebar.config @@ -112,10 +112,3 @@ %% {test_paths, ["client_tests/erlang"]}, %% {test_output, ".client_test"} %% ]}. -%% {riak_test, [ -%% {test_paths, ["riak_test/tests", "riak_test/src", -%% "deps/riak_cs_multibag/riak_test/tests", -%% "deps/riak_cs_multibag/riak_test/src"]}, -%% {test_output, "riak_test/ebin"} -%% ]}. - diff --git a/riak_test/README.md b/riak_test/README.md deleted file mode 100644 index 73b56a818..000000000 --- a/riak_test/README.md +++ /dev/null @@ -1,193 +0,0 @@ -# General instruction - -1. Make sure that your `riak_test` is the latest one for 2.0. - -1. Ensure that riak_test builds are in place for: - * Riak - * Riak EE - * Riak CS - * Stanchion - -Example to setup old and new CS: - -```bash -$ mkdir ~/rt -$ cd ~/rt -$ cd path/to/repo/riak_cs -## Only for Enterprise build -$ export RIAK_CS_EE_DEPS=true -$ riak_test/bin/rtdev-build-releases.sh -$ riak_test/bin/rtdev-setup-releases.sh -## make sure runtime is Basho's patched R16B02-basho -$ make devrel && riak_test/bin/rtdev-current.sh -``` - -*NOTE* For building Enterprise version releases, use -`rtdev-build-releases.sh` script in `riak_cs_multibag` repository -(private). - -Example to setup old and new Stanchion: - -```bash -$ cd path/to/repo/stanchion -$ riak_test/bin/rtdev-build-releases.sh -$ riak_test/bin/rtdev-setup-releases.sh -## make sure runtime is Basho's patched R16B02-basho -$ make devrel && riak_test/bin/rtdev-current.sh -``` - -Example to setup 1.4.x and 2.0 as old and new Riak (maybe same as Riak -OSS... while shell scripts are included in riak_test repo): - -```bash -$ mkdir ~/rt/riak_ee -## make sure runtime is Basho's patched R16B02-basho -$ tar xzf riak-ee-2.0.1.tar.gz -$ cd riak-ee-2.0.1 && make devrel -$ riak_test/bin/rteedev-setup-releases.sh -$ riak_test/bin/rteedev-current.sh - -## change runtime to Basho's patched R15B01 -$ tar xzf riak-ee-1.4.10.tar.gz -$ cd riak-ee-1.4.10 && make devrel -$ mkdir ~/rt/riak_ee/riak-ee-1.4.10 -$ cp -r dev ~/rt/riak_ee/riak-ee-1.4.10 -$ cd ~/rt/riak_ee -$ git add riak-ee-1.4.10 -$ git commit -m "Add 1.4 series Riak EE" -``` - - -1. Setup a `~/.riak_test.config` file like this: - -```erlang -{default, [ - {rt_max_wait_time, 180000}, - {rt_retry_delay, 1000} - ]}. - -{rtdev, [ - {rt_deps, [ - "/Users/kelly/basho/riak_test_builds/riak/deps", - "deps" - ]}, - {rt_retry_delay, 500}, - {rt_harness, rtdev}, - {rtdev_path, [{root, "/Users/kelly/rt/riak"}, - {current, "/Users/kelly/rt/riak/current"}, - {ee_root, "/Users/kelly/rt/riak_ee"}, - {ee_current, "/Users/kelly/rt/riak_ee/current"} - ]} - ]}. - -{rtcs_dev, [ - {rt_project, "riak_cs"}, - {rt_deps, [ - "/home/kuenishi/cs-2.0/riak_cs/deps" - ]}, - {rt_retry_delay, 500}, - {rt_harness, rtcs_dev}, - {build_paths, [{root, "/home/kuenishi/rt/riak_ee"}, - {current, "/home/kuenishi/rt/riak_ee/current"}, - {ee_root, "/home/kuenishi/rt/riak_ee"}, - {ee_current, "/home/kuenishi/rt/riak_ee/current"}, - {ee_previous, "/home/kuenishi/rt/riak_ee/riak-ee-1.4.10"}, - {cs_root, "/home/kuenishi/rt/riak_cs"}, - {cs_current, "/home/kuenishi/rt/riak_cs/current"}, - {cs_previous, - "/home/kuenishi/rt/riak_cs/riak-cs-1.5.1"}, - {stanchion_root, "/home/kuenishi/rt/stanchion"}, - {stanchion_current, "/home/kuenishi/rt/stanchion/current"}, - {stanchion_previous, - "/home/kuenishi/rt/stanchion/stanchion-1.5.0"} - ]}, - {test_paths, ["/home/kuenishi/cs-2.0/riak_cs/riak_test/ebin"]}, - {src_paths, [{cs_src_root, "/home/kuenishi/cs-2.0/riak_cs"}]}, - {lager_level, debug}, - %%{build_type, oss}, - {build_type, ee}, - {flavor, basic}, - %% {sibling_benchmark, - %% [{write_concurrency, 8}, - %% {write_interval, 0}, % msec - %% {version, current}, - %% %% {version, previous}, - %% %% {leave_and_join, 100}, % times - %% %% {duration_sec, 1} - %% {duration_sec, 30} - %% ] - %% }, - {backend, {multi_backend, bitcask}} -]}. -``` - -Running the Riak CS tests for `riak_test` use a different test harness -(`rtcs_dev`) than running the Riak tests and so requires a separate -configuration section. Notice the extra `riak_cs/deps` in the -`rt_deps` section. `RT_DEST_DIR` should be replaced by the path used -when setting up `riak_test` builds for Riak (by default -`$HOME/rt/riak`). The same should be done for `RTEE_DEST_DIR` (default -`$HOME/rt/riak_ee`), `RTCS_DEST_DIR` (default `$HOME/rt/riak_cs`) and -`RTSTANCHION_DEST_DIR` (default `$HOME/rt/stanchion`). - -The `build_type` option is used to differentiate between an -open-source (`oss`) build of RiakCS and the enterprise version (`ee`). -The default is `oss` and this option can be omitted when these tests -are used by open-source users. - -The `backend` option is used to indicate which Riak backend option -should be used. The valid options are `{multi_backend, bitcask}` and -`memory`. `{multi_backend, bitcask}` is the default option and -represents the default recommended backed for production use of -Riak CS. - -The `test_paths` option is a list of fully-qualified paths which -`riak_test` will use to find additional tests. Since the Riak CS tests -do not live inside the `riak_test` repository and escript, this should -point to the compiled tests in `riak_cs/riak_test/ebin`. - -The `flavor` option is used to vary environment setup. Some -`riak_test` modules use only S3 API and does not depend on details, -such as number of riak nodes, riak's backend, MDC or not, multibag -(aka supercluster) or not. By adding flavor setting to riak_test -config, such generic test cases can be utilized to verify Riak CS's -behavior in various setups. The scope of setup functions affected by -flavors are `rtcs:setup/1` and `rtcs:setup/2`. Other setup functions, -for example `rtcs:setup2x2` used by `repl_v3_test`, does not change -their behavior. The valid option values are `basic` (default) and -`{multibag, disjoint}`. `{multibag, disjoint}` setup multibag -environment with 3 bags, the master bag with two riak nodes and two -additional bags with one riak node each. - - -1. To build the `riak_test` files use the `compile-riak-test` Makefile - target or run `./rebar riak_test_compile`. - -1. The Riak client tests are now automated by the - `tests/external_client_tests.erl` test. There are several - prerequisites: - -* Your $PATH must have `erl` available. -* Your $PATH must have a version of Python available that also has - virtualenv tool and access to the Boto S3 libraries. -* Your $PATH must have Clojure's "lein" available. "lein" is the main - executable for the Leinigen tool. -* Your system must have libevent installed. If you see an error for a - missing 'event.h' file during test runs, this is because libevent is - not installed. -* Your system must have Ruby > 2.0 and PHP > 5.5 and PHP composer insalled. -* Your system must have Golang (go, $GOHOME, $GOROOT) correctly installed. - -1. Before running the Riak client tests, your -`~/.riak_test.config` file must contain an entry for `cs_src_root` in -the `src_paths` list, as shown above. The source in this directory -must be successfully compiled using the top level `make all` target. - -1. Before running the Riak client tests, you must first use the -commands `make clean-client-test` and then `make compile-client-test`. - -1. To execute a test, run the following from the `riak_test` repo: - - ```shell - ./riak_test -c rtcs_dev -t TEST_NAME - ``` diff --git a/riak_test/bin/rtdev-build-releases.sh b/riak_test/bin/rtdev-build-releases.sh deleted file mode 100755 index ebe34bcf7..000000000 --- a/riak_test/bin/rtdev-build-releases.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/bin/bash - -# just bail out if things go south -set -e - -# You need to use this script once to build a set of devrels for prior -# releases of Riak (for mixed version / upgrade testing). You should -# create a directory and then run this script from within that directory. -# I have ~/test-releases that I created once, and then re-use for testing. -# -# See rtdev-setup-releases.sh as an example of setting up mixed version layout -# for testing. - -# Different versions of Riak were released using different Erlang versions, -# make sure to build with the appropriate version. - -# This is based on my usage of having multiple Erlang versions in different -# directories. If using kerl or whatever, modify to use kerl's activate logic. -# Or, alternatively, just substitute the paths to the kerl install paths as -# that should work too. - -R15B01=${R15B01:-$HOME/erlang/R15B01-64} -R16B02=${R16B02:-$HOME/erlang/R16B02-64} -: ${RTCS_DEST_DIR:="$HOME/rt/riak_cs"} - -checkbuild() -{ - ERLROOT=$1 - - if [ ! -d $ERLROOT ]; then - echo -n "$ERLROOT cannot be found, install kerl? [y|N]: " - read ans - if [[ $ans == n || $ans == N ]]; then - exit 1 - fi - fi -} - -kerl() -{ - RELEASE=$1 - BUILDNAME=$2 - - if [ ! -x kerl ]; then - curl -O https://raw.github.com/spawngrid/kerl/master/kerl; chmod a+x kerl - fi - - ./kerl build $RELEASE $BUILDNAME - ./kerl install $BUILDNAME $HOME/$BUILDNAME -} - -build() -{ - SRCDIR=$1 - ERLROOT=$2 - - if [ ! -d $ERLROOT ]; then - BUILDNAME=`basename $ERLROOT` - RELEASE=`echo $BUILDNAME | awk -F- '{ print $2 }'` - kerl $RELEASE $BUILDNAME - fi - - echo - echo "Building $SRCDIR" - cd $SRCDIR - - RUN="env PATH=$ERLROOT/bin:$ERLROOT/lib/erlang/bin:$PATH \ - C_INCLUDE_PATH=$ERLROOT/usr/include \ - LD_LIBRARY_PATH=$ERLROOT/usr/lib \ - DEVNODES=8" - echo $RUN - $RUN make -j 8 && $RUN make -j devrel - cd .. -} - -setup() -{ - SRCDIR=$1 - cd $SRCDIR - VERSION=$SRCDIR - echo " - Copying devrel to $RTCS_DEST_DIR/$VERSION " - mkdir -p $RTCS_DEST_DIR/$VERSION/ - cp -p -P -R dev $RTCS_DEST_DIR/$VERSION/ - ## echo " - Writing $RTCS_DEST_DIR/$VERSION/VERSION" - ## echo -n $VERSION > $RTCS_DEST_DIR/$VERSION/VERSION - cd $RTCS_DEST_DIR - echo " - Adding $VERSION to git state of $RTCS_DEST_DIR" - git add $VERSION - git commit -a -m "riak_test adding version $VERSION" ## > /dev/null 2>&1 -} - -download() -{ - URI=$1 - FILENAME=`echo $URI | awk -F/ '{ print $8 }'` - if [ ! -f $FILENAME ]; then - wget $URI - fi -} - -checkbuild $R15B01 -checkbuild $R16B02 - - -if env | grep -q 'RIAK_CS_EE_DEPS=' -then - echo "RIAK_CS_EE_DEPS is set to \"$RIAK_CS_EE_DEPS\"." - echo "This script if for OSS version." - echo "unset RIAK_CS_EE_DEPS or use script for ee build." - exit 1 -fi - -echo "Download and build OSS package..." -download http://s3.amazonaws.com/downloads.basho.com/riak-cs/1.5/1.5.4/riak-cs-1.5.4.tar.gz - -tar -xf riak-cs-1.5.4.tar.gz -build "riak-cs-1.5.4" $R15B01 diff --git a/riak_test/bin/rtdev-current.sh b/riak_test/bin/rtdev-current.sh deleted file mode 100755 index 3994e5914..000000000 --- a/riak_test/bin/rtdev-current.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -# just bail out if things go south -set -e - -: ${RTCS_DEST_DIR:="$HOME/rt/riak_cs"} - -echo "Making $(pwd) the current release:" -cwd=$(pwd) -echo -n " - Determining version: " -if [ -f $cwd/dependency_manifest.git ]; then - VERSION=`cat $cwd/dependency_manifest.git | awk '/^-/ { print $NF }'` -else - VERSION="$(git describe --tags)-$(git branch | awk '/\*/ {print $2}')" -fi -echo $VERSION -cd $RTCS_DEST_DIR -echo " - Resetting existing $RTCS_DEST_DIR" -git reset HEAD --hard > /dev/null 2>&1 -git clean -fd > /dev/null 2>&1 -rm -rf $RTCS_DEST_DIR/current -mkdir $RTCS_DEST_DIR/current -cd $cwd -echo " - Copying devrel to $RTCS_DEST_DIR/current" -cp -p -P -R dev $RTCS_DEST_DIR/current -echo " - Writing $RTCS_DEST_DIR/current/VERSION" -echo -n $VERSION > $RTCS_DEST_DIR/current/VERSION -cd $RTCS_DEST_DIR -echo " - Reinitializing git state" -git add --all . -git commit -a -m "riak_test init" --amend > /dev/null diff --git a/riak_test/bin/rtdev-setup-releases.sh b/riak_test/bin/rtdev-setup-releases.sh deleted file mode 100755 index 74c82e780..000000000 --- a/riak_test/bin/rtdev-setup-releases.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -# just bail out if things go south -set -e - -# Creates a mixed-version directory structure for running riak_test -# using rtdev-mixed.config settings. Should be run inside a directory -# that contains devrels for prior Riak CS releases. Easy way to create this -# is to use the rtdev-build-releases.sh script - -: ${RTCS_DEST_DIR:="$HOME/rt/riak_cs"} - -rm -rf $RTCS_DEST_DIR -mkdir $RTCS_DEST_DIR - -count=$(ls */dev 2> /dev/null | wc -l) -if [ "$count" -ne "0" ] -then - for rel in */dev; do - vsn=$(dirname "$rel") - echo " - Initializing $RTCS_DEST_DIR/$vsn" - mkdir -p "$RTCS_DEST_DIR/$vsn" - cp -p -P -R "$rel" "$RTCS_DEST_DIR/$vsn" - done -else - # This is useful when only testing with 'current' - # The repo still needs to be initialized for current - # and we don't want to bomb out if */dev doesn't exist - touch $RTCS_DEST_DIR/.current_init - echo "No devdirs found. Not copying any releases." -fi - -cd $RTCS_DEST_DIR -git init - -## Some versions of git and/or OS require these fields -git config user.name "Riak Test" -git config user.email "dev@basho.com" -git config --local core.excludesfile global_dot_gitignore_should_be_ignored - -git add . -git commit -a -m "riak_test init" > /dev/null -echo " - Successfully completed initial git commit of $RTCS_DEST_DIR" diff --git a/riak_test/intercepts/intercept.erl b/riak_test/intercepts/intercept.erl deleted file mode 100644 index 7d8bf119c..000000000 --- a/riak_test/intercepts/intercept.erl +++ /dev/null @@ -1,405 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2015 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%%------------------------------------------------------------------- - --module(intercept). -%% Export explicit API but also send compile directive to export all -%% because some of these private functions are useful in their own -%% right. --export([add/3, add/4, clean/1]). --compile(export_all). - --type abstract_code() :: term(). --type form() :: term(). --type proplist(K, V) :: proplists:proplist(K, V). --type fun_name() :: atom(). --type fun_type() :: fun_name() | tuple(). --type target_fun() :: {fun_name(), arity()}. --type intercept_fun() :: fun_type(). --type mapping() :: proplist(target_fun(), intercept_fun()). --type form_mod() :: fun((form()) -> form()). --type code_mod() :: fun((form(), abstract_code()) -> abstract_code()). - -%% The "original" is the `Target' module with the suffix `_orig'. It -%% is where original code for the `Target' module resides after -%% intercepts are added. --define(ORIGINAL(Mod), list_to_atom(atom_to_list(Mod) ++ "_orig")). --define(FAKE_LINE_NO,1). - -%% @doc Add intercepts against the `Target' module. -%% -%% `Target' - The module on which to intercept calls. -%% E.g. `hashtree'. -%% -%% `Intercept' - The module containing intercept definitions. -%% E.g. `hashtree_intercepts' -%% -%% `Mapping' - The mapping from target functions to intercept -%% functions. -%% -%% E.g. `[{{update_perform,2}, sleep_update_perform}]' --spec add(module(), module(), mapping(), string()) -> ok. -add(Target, Intercept, Mapping, OutDir) -> - Original = ?ORIGINAL(Target), - TargetAC = get_abstract_code(Target), - - ProxyAC = make_proxy_abstract_code(Target, Intercept, Mapping, - Original, TargetAC), - OrigAC = make_orig_abstract_code(Target, Original, TargetAC), - - ok = compile_and_load(Original, OrigAC, OutDir), - ok = compile_and_load(Target, ProxyAC, OutDir). - --spec add(module(), module(), mapping()) -> ok. -add(Target, Intercept, Mapping) -> - add(Target, Intercept, Mapping, undefined). - -%% @doc Cleanup proxy and backuped original module --spec clean(module()) -> ok|{error, term()}. -clean(Target) -> - _ = code:purge(Target), - _ = code:purge(?ORIGINAL(Target)), - case code:load_file(Target) of - {module, Target} -> - ok; - {error, Reason} -> - {error, Reason} - end. - -%% @private -%% -%% @doc Compile the abstract code `AC' and load it into the code server. --spec compile_and_load(module(), abstract_code(), undefined | string()) -> ok. -compile_and_load(Module, AC, OutDir) -> - {ok, Module, Bin} = compile:forms(AC,[debug_info]), - ModStr = atom_to_list(Module), - _ = is_list(OutDir) andalso - file:write_file(filename:join(OutDir, ModStr ++ ".beam"), Bin), - {module, Module} = code:load_binary(Module, ModStr, Bin), - ok. - -%% @private --spec make_orig_abstract_code(module(), module(), abstract_code()) -> - abstract_code(). -make_orig_abstract_code(Target, OrigName, TargetAC) -> - export_all(move_all_funs(Target, change_module_name(OrigName, TargetAC))). - -%% @private -%% -%% @doc Make the abstract code for the proxy module. The proxy module -%% sits in place of the original module and decides whether to -%% forward to the `Intercept' or the `Original' depending on the -%% `Mapping'. --spec make_proxy_abstract_code(module(), module(), mapping(), - module(), abstract_code()) -> - abstract_code(). -make_proxy_abstract_code(Target, Intercept, Mapping, Original, TargetAC) -> - AC1 = forward_all(Original, TargetAC), - AC2 = export_all(change_module_name(Target, AC1)), - apply_intercepts(AC2, Intercept, Mapping). - - -%% @private -%% -%% @doc Apply intercepts to the abstract code `AC' based on `Mapping'. --spec apply_intercepts(abstract_code(), module(), mapping()) -> abstract_code(). -apply_intercepts(AC, Intercept, Mapping) -> - apply_to_funs(mapping_fun(Intercept, Mapping), AC). - -%% @private -%% -%% @doc Return a form modifier function that uses `Mapping' to -%% determine if a function should be modified to forward to the -%% `Intercept' module. --spec mapping_fun(module(), proplists:proplist()) -> form_mod(). -mapping_fun(Intercept, Mapping) -> - fun(Form) -> - Key = {fun_name(Form), fun_arity(Form)}, - case proplists:get_value(Key, Mapping, '$none') of - '$none' -> - Form; - InterceptFun -> - forward(Intercept, InterceptFun, Form) - end - end. - -%% @private -%% -%% @doc Modify the abstract code `AC' to forward all function calls to -%% `Module' and move the original definitions under -%% `_orig'. --spec move_all_funs(module(), abstract_code()) -> abstract_code(). -move_all_funs(Module, AC) -> - lists:reverse(lists:foldl(move_all_funs(Module), [], AC)). - -%% @private -%% -%% @doc Return a function which folds over the abstract code of a -%% module, represented by `Form'. Every function is modified to -%% forward to `ModuleName' and it's original definition is stored -%% under `_orig'. --spec move_all_funs(module()) -> code_mod(). -move_all_funs(ModuleName) -> - fun(Form, NewAC) -> - case is_fun(Form) of - false -> - [Form|NewAC]; - true -> - %% Move current function code under different name - Name = fun_name(Form), - OrigForm = setelement(3, Form, ?ORIGINAL(Name)), - - %% Modify original function to forward to `ModuleName' - FwdForm = forward(ModuleName, Name, Form), - [FwdForm,OrigForm|NewAC] - end - end. - -%% @private -%% -%% @doc Modify all function definitions in the abstract code `AC' to -%% forward to `Module:FunName_orig'. --spec forward_all(module(), abstract_code()) -> abstract_code(). -forward_all(Module, AC) -> - F = fun(Form) -> - forward(Module, ?ORIGINAL(fun_name(Form)), Form) - end, - apply_to_funs(F, AC). - -%% @private -%% -%% @doc Modify the function `Form' to forward to `Module:Fun'. --spec forward(module(), fun_type(), form()) -> form(). -forward(Module, Fun, Form) -> - Clause = hd(fun_clauses(Form)), - Args = clause_args(Clause), - NumArgs = length(Args), - GenArgs = [{var,?FAKE_LINE_NO,list_to_atom("Arg" ++ integer_to_list(I))} - || I <- lists:seq(1,NumArgs)], - Clause2 = clause_set_args(Clause, GenArgs), - Clause3 = clause_clear_guards(Clause2), - Body = [{call, 1, - case Fun of - Fun when is_atom(Fun) -> - {remote,1,{atom,1,Module},{atom,1,Fun}}; - %% If Fun is a tuple, it's a pair comprising a list of - %% local variables to capture and an anonymous function - %% that's already in the abstract format. The anonymous - %% function uses the local variables. - {FreeVars, AnonFun} -> - generate_fun_wrapper(FreeVars, AnonFun, NumArgs) - end, GenArgs}], - Clause4 = clause_set_body(Clause3, Body), - fun_set_clauses(Form, [Clause4]). - -change_module_name(NewName, AC) -> - lists:keyreplace(module, 3, AC, {attribute,1,module,NewName}). - -%% @private -%% -%% @doc Generate an anonymous function wrapper that sets up calls for an -%% anonymous function interceptor. -%% -%% This function returns the abstract code equivalent of the following -%% code. If you change this code, please update this comment. -%% -%% fun(__A0_, __A1_, ...) -> -%% __Bindings0_ = lists:foldl(fun({__Bn_,__Bv_},__Acc_) -> -%% erl_eval:add_binding(__Bn_,__Bv_,__Acc_) -%% end, -%% erl_eval:new_bindings(), -%% ), -%% __Bindings = lists:foldl(fun({{var,_,__Vn_},__V_},__Acc) -> -%% erl_eval:add_binding(__Vn_,__V_,__Acc_) -%% end, -%% __Bindings0_, -%% <__A0_ etc. args from generate_freevars>), -%% erl_eval:expr(, -%% __Bindings_, none, none, value). -%% -generate_fun_wrapper(FreeVars, AnonFun, NumArgs) -> - L = ?FAKE_LINE_NO, - Args = [{var,L,list_to_atom(lists:flatten(["__A",Var+$0],"_"))} || - Var <- lists:seq(1, NumArgs)], - {'fun',L, - {clauses, - [{clause,L,Args,[], - [{match,L+1, - {var,L+1,'__Bindings0_'}, - {call,L+1, - {remote,L+1,{atom,L+1,lists},{atom,L+1,foldl}}, - [{'fun',L+1, - {clauses, - [{clause,L+1, - [{tuple,L+1,[{var,L+1,'__Bn_'},{var,L+1,'__Bv_'}]}, - {var,L+1,'__Acc_'}], - [], - [{call,L+2, - {remote,L+2, - {atom,L+2,erl_eval}, - {atom,L+2,add_binding}}, - [{var,L+2,'__Bn_'},{var,L+2,'__Bv_'},{var,L+2,'__Acc_'}]}] - }]}}, - {call,L+3, - {remote,L+3,{atom,L+3,erl_eval},{atom,L+3,new_bindings}},[]}, - generate_freevars(FreeVars,L+3)]}}, - {match,L+4, - {var,L+4,'__Bindings_'}, - {call,L+4, - {remote,L+4,{atom,L+4,lists},{atom,L+4,foldl}}, - [{'fun',L+4, - {clauses, - [{clause,L+4, - [{tuple,L+4,[{tuple,L+4,[{atom,L+4,var},{var,L+4,'_'}, - {var,L+4,'__Vn_'}]},{var,L+4,'__V_'}]}, - {var,L+4,'__Acc_'}], - [], - [{call,L+5, - {remote,L+5, - {atom,L+5,erl_eval}, - {atom,L+5,add_binding}}, - [{var,L+5,'__Vn_'},{var,L+5,'__V_'},{var,L+5,'__Acc_'}]}] - }]}}, - {var,L+6,'__Bindings0_'}, - lists:foldl(fun(V,Acc) -> - AV = erl_parse:abstract(V), - {cons,L+6,{tuple,L+6,[AV,V]},Acc} - end,{nil,L+6},Args)]}}, - {call,L+7, - {remote,L+7, - {atom,L+7,erl_eval}, - {atom,L+7,expr}}, - [erl_parse:abstract({call,L+7,AnonFun, - [{var,L+7,V} || {var,_,V} <- Args]},L+7), - {var,L+7,'__Bindings_'}, - {atom,L+7,none}, - {atom,L+7,none}, - {atom,L+7,value}]}]}]}}. - -%% @private -%% -%% @doc Convert generate_fun_wrapper freevars to abstract code -generate_freevars([], L) -> - {nil,L}; -generate_freevars([FreeVar|FreeVars], L) -> - {cons,L, - generate_freevar(FreeVar,L), - generate_freevars(FreeVars,L)}. - -%% @private -%% -%% @doc Convert one freevar to abstract code -%% -%% This returns an abstract format tuple representing a freevar as -%% {VarName, VarValue}. For function values we check their env for their -%% own freevars, but if no env is available, we raise an error. Pids, -%% ports, and references have no abstract format, so they are first -%% converted to binaries and the abstract format of the binary is used -%% instead. Their abstract format values generated here convert them back -%% from binaries to terms when accessed. -generate_freevar({Name,Var},L) when is_function(Var) -> - {env, Env} = erlang:fun_info(Var, env), - case Env of - [] -> - error({badarg, Var}); - [FreeVars,_,_,Clauses] -> - {arity, Arity} = erlang:fun_info(Var, arity), - AnonFun = {'fun',L,{clauses,Clauses}}, - {tuple,L, - [{atom,L,Name}, - generate_fun_wrapper(FreeVars, AnonFun, Arity)]} - end; -generate_freevar({Name,Var}, L) - when is_pid(Var); is_port(Var); is_reference(Var) -> - NVar = term_to_binary(Var), - {tuple,L, - [{atom,L,Name}, - {call,L, - {remote,L,{atom,L,erlang},{atom,L,binary_to_term}}, - [erl_parse:abstract(NVar)]}]}; -generate_freevar(NameVar, L) -> - erl_parse:abstract(NameVar,L). - -%% @private -%% -%% @doc Add the `export_all' compile directive to the abstract code `AC'. -export_all(AC) -> - [A,B|Rest] = AC, - [A,B,{attribute,2,compile,export_all}|Rest]. - -%% @private -%% -%% @doc Apply the form modify `F' to all forms in `AC' that are -%% function definitions. --spec apply_to_funs(form_mod(), abstract_code()) -> abstract_code(). -apply_to_funs(F, AC) -> - F2 = apply_if_fun_def(F), - lists:map(F2, AC). - -%% @private -%% -%% @doc Get the abstract code for `Module'. This function assumes -%% code is compiled with `debug_info'. --spec get_abstract_code(module()) -> abstract_code(). -get_abstract_code(Module) -> - {_, Bin, _} = code:get_object_code(Module), - {ok,{_,[{abstract_code,{_,AC}}]}} = beam_lib:chunks(Bin, [abstract_code]), - AC. - -%% @private -apply_if_fun_def(Fun) -> - fun(Form) when element(1, Form) == function -> Fun(Form); - (Form) -> Form - end. - -%% @private -is_fun(Form) -> - element(1, Form) == function. - -%% @private -clause_args(Form) -> - element(3, Form). - -%% @private -clause_set_args(Form, Args) -> - setelement(3, Form, Args). - -%% @private -clause_clear_guards(Form) -> - setelement(4, Form, []). - -%% @private -clause_set_body(Form, Body) -> - setelement(5, Form, Body). - -%% @private -fun_arity(Form) -> - element(4, Form). - -%% @private -fun_clauses(Form) -> - element(5, Form). - -%% @private -fun_set_clauses(Form, Clauses) -> - setelement(5, Form, Clauses). - -%% @private -fun_name(Form) -> - element(3, Form). diff --git a/riak_test/intercepts/intercept.hrl b/riak_test/intercepts/intercept.hrl deleted file mode 100644 index d292e0ba1..000000000 --- a/riak_test/intercepts/intercept.hrl +++ /dev/null @@ -1,23 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2015 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%%------------------------------------------------------------------- - --define(I_TAG(S), "INTERCEPT: " ++ S). --define(I_INFO(Msg), error_logger:info_msg(?I_TAG(Msg))). --define(I_INFO(Msg, Args), error_logger:info_msg(?I_TAG(Msg), Args)). diff --git a/riak_test/intercepts/riak_cs_block_server_intercepts.erl b/riak_test/intercepts/riak_cs_block_server_intercepts.erl deleted file mode 100644 index f072d2223..000000000 --- a/riak_test/intercepts/riak_cs_block_server_intercepts.erl +++ /dev/null @@ -1,37 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2015 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%%------------------------------------------------------------------- - --module(riak_cs_block_server_intercepts). --compile(export_all). --include("intercept.hrl"). --define(M, riak_cs_block_server_orig). - -get_block_local_timeout(_RcPid, _FullBucket, _FullKey, _GetOptions, _Timeout, _StatsKey) -> - {error, timeout}. - -get_block_local_insufficient_vnode_at_nval1(RcPid, FullBucket, FullKey, GetOptions, Timeout, StatsKey) -> - case proplists:get_value(n_val, GetOptions) of - 1 -> - ?I_INFO("riak_cs_block_server:get_block_local/6 returns insufficient_vnodes"), - {error, <<"{insufficient_vnodes,0,need,1}">>}; - N -> - ?I_INFO("riak_cs_block_server:get_block_local/6 forwards original code with n_val=~p", [N]), - ?M:get_block_local_orig(RcPid, FullBucket, FullKey, GetOptions, Timeout, StatsKey) - end. diff --git a/riak_test/intercepts/riak_cs_riak_client_intercepts.erl b/riak_test/intercepts/riak_cs_riak_client_intercepts.erl deleted file mode 100644 index be843e195..000000000 --- a/riak_test/intercepts/riak_cs_riak_client_intercepts.erl +++ /dev/null @@ -1,26 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2015 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%%------------------------------------------------------------------- - --module(riak_cs_riak_client_intercepts). --compile(export_all). --define(M, riak_cs_riak_client_orig). - -get_user_timeout(_MasterPbc, _Key) -> - {error, timeout}. diff --git a/riak_test/intercepts/riakc_pb_socket_intercepts.erl b/riak_test/intercepts/riakc_pb_socket_intercepts.erl deleted file mode 100644 index 38674a061..000000000 --- a/riak_test/intercepts/riakc_pb_socket_intercepts.erl +++ /dev/null @@ -1,32 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2015 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%%------------------------------------------------------------------- - --module(riakc_pb_socket_intercepts). --compile(export_all). --define(M, riakc_pb_socket_orig). - -get_timeout(_Pid, _Bucket, _Key, _Options, _Timeout) -> - {error, timeout}. - -put_timeout(_Pid, _Obj, _Options, _Timeout) -> - {error, timeout}. - -get_overload(_Pid, _Bucket, _Key, _Options, _Timeout) -> - {error, <<"overload">>}. diff --git a/riak_test/src/cs_suites.erl b/riak_test/src/cs_suites.erl deleted file mode 100644 index a3ed6bea6..000000000 --- a/riak_test/src/cs_suites.erl +++ /dev/null @@ -1,577 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - -%% CS test suites - -%% TODO: Can this be rt/rtcs-independent? - -%% A suite is composed of several circles and single cleanup. -%% -%% Single circle run includes: -%% - creation of 5 buckets and 5 objects for each -%% - deletion of one bucket including objects in it -%% - PUT/GET/List/DELETE operations for pre-created buckets -%% - Access stats flush and storage stat calculation -%% - GC batch completion -%% -%% Cleanup includes: -%% - deletion of all objects and buckets ever created -%% - GC batch completion -%% - bitcask merge & delete -%% - confirmation that all data files become small enough - --module(cs_suites). - --export([new/1, fold_with_state/2, run/2, cleanup/1]). --export([nodes_of/2, - set_node1_version/2, - admin_credential/1]). --export([ops/0, reduced_ops/0]). - --export_type([state/0, op/0, tag/0]). --type op() :: atom(). --type tag() :: string(). - --include_lib("kernel/include/file.hrl"). --include_lib("eunit/include/eunit.hrl"). --include_lib("erlcloud/include/erlcloud_aws.hrl"). - --record(state, - { - begin_at :: string(), - bucket_count = 5 :: pos_integer(), - key_count = 5 :: pos_integer(), - ops = ops() :: [atom()], - node1_cs_vsn = current :: previous | current, - riak_vsn = current :: current, - riak_nodes :: list(), - cs_nodes :: list(), - stanchion_nodes :: list(), - admin_config :: term(), - prefix = "t-" :: string(), - circles = [] :: [circle()] - }). --opaque state() :: #state{}. - --record(bucket, - {name :: string(), - count = 0 :: non_neg_integer()}). --type bucket() :: #bucket{}. - --record(circle, - {tag :: string(), - user_config :: term(), - buckets = [] :: [bucket()]}). --type circle() :: #circle{}. - --define(GC_LEEWAY, 1). - --spec ops() -> [op()]. -ops() -> [put_buckets, - put_objects, - put_objects_old, - get_objects, - get_objects_old, - list_objects, - list_objects_old, - delete_bucket, - delete_bucket_old, - stats_access, - stats_storage, - gc, - end_of_op]. - --spec reduced_ops() -> [op()]. -reduced_ops() -> [put_buckets, - put_objects, - end_of_op]. - --spec cleanup_ops() -> [op()]. -cleanup_ops() -> - [delete_all, - gc, - merge, - end_of_cleanup_op]. - -%% Create configuration state for subsequennt runs. --spec new(term()) -> {ok, state()}. -new({AdminConfig, {RiakNodes, CSNodes, StanchionNode}}) -> - new({AdminConfig, {RiakNodes, CSNodes, StanchionNode}}, ops()). - --spec new(term(), [op()]) -> {ok, state()}. -new({AdminConfig, {RiakNodes, CSNodes, StanchionNode}}, Ops) -> - rt:setup_log_capture(hd(CSNodes)), - rtcs_exec:gc(1, "set-interval infinity"), - Begin = rtcs:datetime(), - %% FIXME: workaround for riak_cs#766 - timer:sleep(timer:seconds(1)), - {ok, #state{begin_at = Begin, - ops = Ops, - riak_nodes = RiakNodes, - cs_nodes = CSNodes, - stanchion_nodes = [StanchionNode], - admin_config = AdminConfig}}. - -%% Utility functions to avoid many `StateN''s by appplying MFA lists sequentially --spec fold_with_state(state(), [{module(), atom(), [term()]}]) -> {ok, state()}. -fold_with_state(State, []) -> - {ok, State}; -fold_with_state(State, [{M, F, A} | Rest]) -> - {ok, NewState} = apply(M, F, A ++ [State]), - fold_with_state(NewState, Rest). - --spec run(tag(), state()) -> {ok, state()}. -run(Tag, #state{ops=Ops} = State) -> - run(Tag, Ops, State). - --spec cleanup(state()) -> {ok, state()}. -cleanup(State) -> - Tag = "cleanup", - run(Tag, cleanup_ops(), State). - -run(Tag, Ops, State) -> - lager:info("[~s] BEGIN", [Tag]), - Circle = init_circle(Tag, State), - {USec, {ok, NewState}} = - timer:tc(fun() -> apply_operations(Circle, State, Ops) end), - lager:info("[~s] END: ~B [msec]", [Tag, USec div 1000]), - {ok, NewState}. - -set_node1_version(Vsn, State) when Vsn =:= previous orelse Vsn =:= current -> - {ok, State#state{node1_cs_vsn=Vsn}}. - -admin_credential(#state{admin_config=AdminConfig}) -> - {AdminConfig#aws_config.access_key_id, - AdminConfig#aws_config.secret_access_key}. - --spec nodes_of(riak | stanchion | riak, state()) -> [node()]. -nodes_of(riak, State) -> State#state.riak_nodes; -nodes_of(stanchion, State) -> State#state.stanchion_nodes; -nodes_of(cs, State) -> State#state.cs_nodes. - -init_circle(Tag, #state{admin_config=AdminConfig, riak_nodes = [RiakNode|_]} = _State) -> - Port = rtcs_config:cs_port(RiakNode), - Name = concat("user-", Tag), - Email = concat(Name, "@example.com"), - {UserConfig, _Id} = - rtcs_admin:create_user(Port, AdminConfig, Email, Name), - #circle{tag = Tag, user_config = UserConfig}. - --spec apply_operations(circle(), state(), [op()]) -> {ok, state()}. -apply_operations(_Circle, State, []) -> - {ok, State}; -apply_operations(#circle{tag=Tag} = Circle, State, [Op | Rest]) -> - lager:info("[~s] Applying operation ~w ...", [Tag, Op]), - {USec, {ok, NewCircle, NewState}} = - timer:tc(fun() -> apply_operation(Op, Circle, State) end), - lager:info("[~s] Finished operation ~w in ~B [msec]", [Tag, Op, USec div 1000]), - apply_operations(NewCircle, NewState, Rest). - --spec apply_operation(op(), circle(), state()) -> {ok, circle(), state()}. -apply_operation(put_buckets, #circle{tag=Tag, user_config=UserConfig} = Circle, - #state{bucket_count = Count, prefix=Prefix} = State) -> - Buckets = [#bucket{name = concat(Prefix, Tag, to_str(Suffix))} - || Suffix <- lists:seq(1, Count)], - [?assertEqual(ok, erlcloud_s3:create_bucket(B#bucket.name, UserConfig)) || - B <- Buckets], - {ok, Circle#circle{buckets = Buckets}, State}; -apply_operation(put_objects, Circle, - #state{key_count=KeyCount} = State) -> - NewCircle = put_objects_to_every_bucket(KeyCount, Circle), - {ok, NewCircle, State}; -apply_operation(put_objects_old, CurrentCircle, - #state{key_count=KeyCount, circles=Circles} = State) -> - NewCircles = [put_objects_to_every_bucket(KeyCount, Circle) || Circle <- Circles], - {ok, CurrentCircle, State#state{circles=NewCircles}}; -apply_operation(get_objects, Circle, State) -> - NewCircle = get_objects_from_every_bucket(Circle), - {ok, NewCircle, State}; -apply_operation(get_objects_old, CurrentCircle, - #state{circles=Circles} = State) -> - NewCircles = [get_objects_from_every_bucket(Circle) || Circle <- Circles], - {ok, CurrentCircle, State#state{circles=NewCircles}}; -apply_operation(list_objects, Circle, State) -> - NewCircle = list_objects_from_every_bucket(Circle), - {ok, NewCircle, State}; -apply_operation(list_objects_old, CurrentCircle, #state{circles=Circles} = State) -> - NewCircles = [list_objects_from_every_bucket(Circle) || Circle <- Circles], - {ok, CurrentCircle, State#state{circles=NewCircles}}; -apply_operation(delete_bucket, Circle, State) -> - NewCircle = delete_first_bucket(Circle), - {ok, NewCircle, State}; -apply_operation(delete_bucket_old, CurrentCircle, #state{circles=Circles} = State) -> - NewCircles = [delete_first_bucket(Circle) || Circle <- Circles], - {ok, CurrentCircle, State#state{circles=NewCircles}}; -apply_operation(stats_access, Circle, State) -> - Res = rtcs_exec:flush_access(1), - lager:info("riak-cs-access flush result: ~s", [Res]), - ExpectRegexp = "All access logs were flushed.\n$", - ?assertMatch({match, _}, re:run(Res, ExpectRegexp)), - %% TODO - %% - Get access stats and assert them with real access generated so far - {ok, Circle, State}; -apply_operation(stats_storage, CurrentCircle, - #state{admin_config=AdminConfig, begin_at=Begin, - cs_nodes=[CSNode|_], circles=Circles} = State) -> - Res = rtcs_exec:calculate_storage(1), - lager:info("riak-cs-storage batch result: ~s", [Res]), - ExpectRegexp = "Batch storage calculation started.\n$", - ?assertMatch({match, _}, re:run(Res, ExpectRegexp)), - true = rt:expect_in_log(CSNode, "Finished storage calculation"), - %% FIXME: workaround for riak_cs#766 - timer:sleep(timer:seconds(2)), - End = rtcs:datetime(), - [get_storage_stats(AdminConfig, Begin, End, Circle) || Circle <- [CurrentCircle|Circles]], - {ok, CurrentCircle, State}; -apply_operation(gc, Circle, #state{cs_nodes=[CSNode|_]} = State) -> - timer:sleep(timer:seconds(?GC_LEEWAY + 1)), - rtcs_exec:gc(1, "batch 1"), - ok = rt:wait_until( - CSNode, - fun(_N) -> - Res = rtcs_exec:gc(1, "status"), - ExpectSubstr = "There is no garbage collection in progress", - case string:str(Res, ExpectSubstr) of - 0 -> - lager:debug("riak-cs-gc status: ~s", [Res]), - false; - _ -> - lager:debug("GC completed"), - true - end - end), - %% TODO: Calculate manif_count and block_count and assert them specifically - %% true = rt:expect_in_log(CSNode, - %% "Finished garbage collection: \\d+ seconds, " - %% "\\d+ batch_count, \\d+ batch_skips, " - %% "\\d+ manif_count, \\d+ block_count"), - {ok, Circle, State}; -apply_operation(end_of_op, Circle, - #state{node1_cs_vsn=Vsn, circles=SoFar} = State) -> - rtcs:assert_error_log_empty(Vsn, 1), - {ok, Circle, State#state{circles=[Circle|SoFar]}}; - -apply_operation(delete_all, CurrentCircle, #state{circles=Circles} = State) -> - NewCircles = [delete_all_buckets(Circle) || Circle <- Circles], - {ok, CurrentCircle, State#state{circles=NewCircles}}; -apply_operation(merge, CurrentCircle, State) -> - merge_all_bitcask(State), - {ok, CurrentCircle, State}; -apply_operation(end_of_cleanup_op, CurrentCircle, State) -> - {ok, CurrentCircle, State}. - --spec put_objects_to_every_bucket(non_neg_integer(), circle()) -> circle(). -put_objects_to_every_bucket(KeyCount, - #circle{user_config=UserConfig, - buckets=Buckets} = Circle) -> - NewBuckets = [put_objects(KeyCount, UserConfig, B) || B <- Buckets], - Circle#circle{buckets=NewBuckets}. - --spec put_objects(non_neg_integer(), #aws_config{}, bucket()) -> bucket(). -put_objects(KeyCount, UserConfig, #bucket{name=B, count=Before} = Bucket) -> - [case bk_to_body(B, K) of - Body when is_binary(Body) -> - erlcloud_s3:put_object(B, to_str(K), Body, UserConfig); - Parts when is_list(Parts) -> - multipart_upload(B, to_str(K), Parts, UserConfig); - {copy, {SrcB, SrcK}} -> - ?assertEqual([{copy_source_version_id, "false"}, - {version_id, "null"}], - erlcloud_s3:copy_object(B, to_str(K), SrcB, to_str(SrcK), UserConfig)) - end || - K <- lists:seq(Before + 1, Before + KeyCount) ], - Bucket#bucket{count = Before + KeyCount}. - -multipart_upload(Bucket, Key, Parts, Config) -> - InitRes = erlcloud_s3_multipart:initiate_upload( - Bucket, Key, "text/plain", [], Config), - UploadId = erlcloud_xml:get_text( - "/InitiateMultipartUploadResult/UploadId", InitRes), - upload_parts(Bucket, Key, UploadId, Config, 1, Parts, []). - -upload_parts(Bucket, Key, UploadId, UserConfig, _PartCount, [], PartEtags) -> - ?assertEqual(ok, erlcloud_s3_multipart:complete_upload( - Bucket, Key, UploadId, lists:reverse(PartEtags), UserConfig)), - ok; -upload_parts(Bucket, Key, UploadId, UserConfig, PartCount, [Part | Parts], PartEtags) -> - {RespHeaders, _UploadRes} = erlcloud_s3_multipart:upload_part( - Bucket, Key, UploadId, PartCount, Part, UserConfig), - PartEtag = proplists:get_value("ETag", RespHeaders), - upload_parts(Bucket, Key, UploadId, UserConfig, PartCount + 1, - Parts, [{PartCount, PartEtag} | PartEtags]). - - --spec get_objects_from_every_bucket(circle()) -> circle(). -get_objects_from_every_bucket(#circle{user_config=UserConfig, - buckets=Buckets} = Circle) -> - NewBuckets = [get_objects(UserConfig, Bucket)|| Bucket <- Buckets], - Circle#circle{buckets=NewBuckets}. - -%% TODO: More variants, e.g. range, conditional --spec get_objects(#aws_config{}, bucket()) -> bucket(). -get_objects(UserConfig, #bucket{name=B, count=KeyCount} = Bucket) -> - [begin - GetResponse = erlcloud_s3:get_object(B, to_str(K), UserConfig), - Expected = case bk_to_body(B, K) of - Body when is_binary(Body) -> Body; - Parts when is_list(Parts) -> to_bin(Parts); - {copy, {SrcB, SrcK}} -> bk_to_body(SrcB, SrcK) - end, - case proplists:get_value(content, GetResponse) of - Expected -> ok; - Other -> - lager:error("Unexpected contents for bucket=~s, key=~s", [B, K]), - lager:error("First 100 bytes of expected content~n~s", - [first_n_bytes(Expected, 100)]), - lager:error("First 100 bytes of actual content~n~s", - [first_n_bytes(Other, 100)]), - error({content_unmatched, B, K}) - end - end || - K <- lists:seq(1, KeyCount)], - Bucket. - -%% TODO: repeating GET Bucket calls by small (<5) `max-keys' param -list_objects_from_every_bucket(#circle{user_config=UserConfig, - buckets=Buckets} = Circle) -> - Opts = [], - [begin - KeyCount = Bucket#bucket.count, - Response = erlcloud_s3:list_objects(Bucket#bucket.name, Opts, UserConfig), - Result = proplists:get_value(contents, Response), - ?assertEqual(KeyCount, length(Result)) - end || - Bucket <- Buckets], - Circle. - -%% Delete objects in the first bucket if exists, leave untouched the rest. --spec delete_first_bucket(circle()) -> circle(). -delete_first_bucket(#circle{buckets=[]} = Circle) -> - Circle; -delete_first_bucket(#circle{user_config=UserConfig, - buckets=[Bucket|UntouchedBucket]} = Circle) -> - delete_bucket(UserConfig, Bucket), - Circle#circle{buckets=UntouchedBucket}. - -delete_all_buckets(#circle{buckets=[]} = Circle) -> - Circle; -delete_all_buckets(#circle{user_config=UserConfig, - buckets=[Bucket|RestBucket]} = Circle) -> - delete_bucket(UserConfig, Bucket), - delete_all_buckets(Circle#circle{buckets=RestBucket}). - -delete_bucket(UserConfig, Bucket) -> - B = Bucket#bucket.name, - KeyCount = Bucket#bucket.count, - [erlcloud_s3:delete_object(B, to_str(K), UserConfig) || - K <- lists:seq(1, KeyCount)], - ListResponse = erlcloud_s3:list_objects(B, [], UserConfig), - Contents = proplists:get_value(contents, ListResponse), - ?assertEqual(0, length(Contents)), - ?assertEqual(ok, erlcloud_s3:delete_bucket(B, UserConfig)). - -get_storage_stats(AdminConfig, Begin, End, - #circle{user_config=UserConfig, buckets=Buckets} = Circle) -> - lager:debug("storage stats for user ~s , ~s/~s", - [UserConfig#aws_config.access_key_id, Begin, End]), - Expected = lists:sort( - [{B, {Count, bucket_bytes(B, Count)}} || - #bucket{name=B, count=Count} <- Buckets]), - Actual = rtcs_admin:storage_stats_json_request(AdminConfig, UserConfig, - Begin, End), - ?assertEqual(Expected, Actual), - Circle. - -first_n_bytes(Binary, ByteSize) -> - binary:part(Binary, 0, math:max(byte_size(Binary), ByteSize)). - --spec bk_to_body(string(), integer()) -> binary() | [binary()]. -bk_to_body(B, K) -> - case os:getenv("CS_RT_DEBUG") of - "true" -> - %% Trick to make duration/stacktrace smaller for debugging (/ω・\) - bk_to_body_debug(B, K); - _ -> - %% This branch should be used normally - bk_to_body_actual(B, K) - end. - -%% Generate object body by modulo 5 of `K::integer()': -%% 1 : multiple blocks (3 MB) -%% 2 : Multipart Upload (2 parts * 5 MB/part) -%% 3 : Put Copy of `1' (3 MB) -%% 4, 0 : small objects (~ 10 KB) --spec bk_to_body_actual(string(), integer()) -> - binary() | [binary()] | {copy, {string(), integer()}}. -bk_to_body_actual(_B, K) when (K rem 5) =:= 1 -> binary:copy(<<"A">>, mb(3)); -bk_to_body_actual(_B, K) when (K rem 5) =:= 2 -> lists:duplicate(2, binary:copy(<<"A">>, mb(5))); -bk_to_body_actual(B, K) when (K rem 5) =:= 3 -> {copy, {B, 1}}; -bk_to_body_actual(B, K) -> binary:copy(lead(B, K), 1024). - --spec bk_to_body_debug(string(), integer()) -> binary() | [binary()]. -bk_to_body_debug(B, K) -> - lead(B, K). - -lead(B, K) -> - to_bin([B, $:, to_str(K), $\n]). - -%% Calculate total byte size for the bucket --spec bucket_bytes(string(), non_neg_integer()) -> non_neg_integer(). -bucket_bytes(B, Count) -> - lists:sum([obj_bytes(B, K) || K <- lists:seq(1, Count)]). - -%% Returns byte size of the binary that will be returned by -%% `bk_to_body(B, K)'. --spec obj_bytes(string(), integer()) -> non_neg_integer(). -obj_bytes(B, K) -> - case os:getenv("CS_RT_DEBUG") of - "true" -> - %% Use OS env var to restrict object body to small binary - %% for debugging. no multi-MB obj, no Multipart, no PUT Copy. - byte_size(bk_to_body_debug(B, K)); - _ -> - obj_bytes_actual(B, K) - end. - -obj_bytes_actual(_B, K) when (K rem 5) =:= 1 -> mb(3); -obj_bytes_actual(_B, K) when (K rem 5) =:= 2 -> 2 * mb(5); -obj_bytes_actual(B, K) when (K rem 5) =:= 3 -> obj_bytes_actual(B, 1); -obj_bytes_actual(B, K) -> kb(byte_size(lead(B, K))). - -kb(KB) -> KB * 1024. - -mb(MB) -> MB * 1024 * 1024. - -merge_all_bitcask(#state{riak_nodes=Nodes, riak_vsn=Vsn} = _State) -> - wait_until_merge_worker_idle(Nodes), - [trigger_bitcask_merge(N, Vsn) || N <- Nodes], - [ok = rt:wait_until(N, - fun(Node) -> - check_data_files_are_small_enough(Node, Vsn) - end) || N <- Nodes], - ok. - -wait_until_merge_worker_idle(Nodes) -> - [ok = rt:wait_until( - N, - fun(Node) -> - Status = rpc:call(Node, bitcask_merge_worker, status, []), - lager:debug("Wait util bitcask_merge_worker to finish on ~p:" - " status=~p~n", [Node, Status]), - Status =:= {0, undefined} - end) || N <- Nodes], - ok. - -trigger_bitcask_merge(Node, Vsn) -> - lager:debug("Trigger bitcask merger for node ~s (version: ~s)~n", [Node, Vsn]), - VnodeNames = bitcask_vnode_names(Node, Vsn), - [begin - VnodeDir = filename:join(bitcask_data_root(), VnodeName), - DataFiles = bitcask_data_files(Node, Vsn, VnodeName, rel), - ok = rpc:call(Node, bitcask_merge_worker, merge, - [VnodeDir, [], {DataFiles, []}]) - end || - VnodeName <- VnodeNames], - ok. - -bitcask_data_root() -> "./data/bitcask". - -%% Returns vnode dir name, -%% For example: "548063113999088594326381812268606132370974703616" --spec bitcask_vnode_names(atom(), previous | current) -> [string()]. -bitcask_vnode_names(Node, Vsn) -> - Prefix = rtcs_config:devpath(riak, Vsn), - BitcaskAbsRoot = rtcs_config:riak_bitcaskroot(Prefix, rtcs_dev:node_id(Node)), - {ok, VnodeDirNames} = file:list_dir(BitcaskAbsRoot), - VnodeDirNames. - -%% Data file names should start bitcask's `data_root' for `bitcask_merge_worker'. -%% This function returns a list proper for the aim, e.g. -%% ["./data/bitcask/548063113999088594326381812268606132370974703616/5.bitcask.data", -%% "./data/bitcask/548063113999088594326381812268606132370974703616/6.bitcask.data"] --spec bitcask_data_files(node(), previous | current, string(), abs | rel) -> - [string()]. -bitcask_data_files(Node, Vsn, VnodeName, AbsOrRel) -> - Prefix = rtcs_config:devpath(riak, Vsn), - BitcaskAbsRoot = rtcs_config:riak_bitcaskroot(Prefix, rtcs_dev:node_id(Node)), - VnodeAbsPath = filename:join(BitcaskAbsRoot, VnodeName), - {ok, Fs0} = file:list_dir(VnodeAbsPath), - [case AbsOrRel of - rel -> filename:join([bitcask_data_root(), VnodeName, F]); - abs -> filename:join([BitcaskAbsRoot, VnodeName, F]) - end || - F <- Fs0, filename:extension(F) =:= ".data"]. - -%% Assert bitcask data is "small" -%% 1) The number of *.data files should be =< 2 -%% 2) Each *.data file size should be < 32 KiB -check_data_files_are_small_enough(Node, Vsn) -> - VnodeNames = bitcask_vnode_names(Node, Vsn), - check_data_files_are_small_enough(Node, Vsn, VnodeNames). - -check_data_files_are_small_enough(_Node, _Vsn, []) -> - true; -check_data_files_are_small_enough(Node, Vsn, [VnodeName|Rest]) -> - DataFiles = bitcask_data_files(Node, Vsn, VnodeName, abs), - FileSizes = [case file:read_file_info(F) of - {ok, #file_info{size=S}} -> {F, S}; - {error, enoent} -> {F, 0} % already deleted - end || F <- DataFiles], - lager:debug("FileSizes (~p): ~p~n", [{Node, VnodeName}, FileSizes]), - TotalSize = lists:sum([S || {_, S} <- FileSizes]), - case {length(FileSizes) =< 2, TotalSize < 32*1024} of - {true, true} -> - lager:info("bitcask data file check OK for ~p ~p", - [Node, VnodeName]), - check_data_files_are_small_enough(Node, Vsn, Rest); - {false, _} -> - lager:info("bitcask data file check failed, count(files)=~p for ~p ~p", - [length(FileSizes), Node, VnodeName]), - false; - {_, false} -> - lager:info("bitcask data file check failed, sum(file size)=~p for ~p ~p", - [TotalSize, Node, VnodeName]), - false - end. - -%% Misc utilities - -concat(IoList1, IoList2) -> - concat([IoList1, IoList2]). - -concat(IoList1, IoList2, IoList3) -> - concat([IoList1, IoList2, IoList3]). - -concat(IoList) -> - lists:flatten(IoList). - -to_str(Int) when is_integer(Int) -> - integer_to_list(Int); -to_str(String) when is_list(String) -> - String; -to_str(Bin) when is_binary(Bin) -> - binary_to_list(Bin). - -to_bin(Int) when is_integer(Int) -> - to_bin(integer_to_list(Int)); -to_bin(String) when is_list(String) -> - iolist_to_binary(String); -to_bin(Bin) when is_binary(Bin) -> - Bin. diff --git a/riak_test/src/list_objects_test_helper.erl b/riak_test/src/list_objects_test_helper.erl deleted file mode 100644 index c537c737f..000000000 --- a/riak_test/src/list_objects_test_helper.erl +++ /dev/null @@ -1,174 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(list_objects_test_helper). - --compile(export_all). --include_lib("eunit/include/eunit.hrl"). - --define(TEST_BUCKET, "riak-test-bucket"). - -test(UserConfig) -> - lager:info("User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:list_objects(?TEST_BUCKET, UserConfig)), - - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - ?assertMatch([{buckets, [[{name, ?TEST_BUCKET}, _]]}], - erlcloud_s3:list_buckets(UserConfig)), - - %% Put 10 objects in the bucket - Count1 = 10, - load_objects(?TEST_BUCKET, Count1, UserConfig), - - %% Successively list the buckets, verify the output, and delete an - %% object from the bucket until the bucket is empty again. - delete_and_verify_objects(?TEST_BUCKET, Count1, UserConfig), - - %% Put 200 objects in the bucket - Count2 = 200, - load_objects(?TEST_BUCKET, Count2, UserConfig), - - %% Successively list the buckets, verify the output, and delete an - %% object from the bucket until the bucket is empty again. - delete_and_verify_objects(?TEST_BUCKET, Count2, UserConfig), - - %% Put 30 objects in the bucket - Count3 = 30, - load_objects(?TEST_BUCKET, Count3, UserConfig), - - %% Use `max-keys' to restrict object list to 20 results - Options1 = [{max_keys, 20}], - ObjList1 = erlcloud_s3:list_objects(?TEST_BUCKET, Options1, UserConfig), - verify_object_list(ObjList1, 20, 30), - - %% Use `marker' to request remainder of results - Options2 = [{marker, "27"}], - verify_object_list(erlcloud_s3:list_objects(?TEST_BUCKET, Options2, UserConfig), 10, 30, 21), - - %% Put 2 sets of 4 objects with keys that have a common subdirectory - Prefix1 = "0/prefix1/", - Prefix2 = "0/prefix2/", - load_objects(?TEST_BUCKET, 4, Prefix1, UserConfig), - load_objects(?TEST_BUCKET, 4, Prefix2, UserConfig), - - %% Use `prefix' and `delimiter' to get the key groups under - %% the `prefix'. Should get 2 common prefix results back. - Options3 = [{prefix, "0/"}, {delimiter, "/"}], - ObjList2 = erlcloud_s3:list_objects(?TEST_BUCKET, Options3, UserConfig), - CommonPrefixes1 = proplists:get_value(common_prefixes, ObjList2), - ?assert(lists:member([{prefix, Prefix1}], CommonPrefixes1)), - ?assert(lists:member([{prefix, Prefix2}], CommonPrefixes1)), - ?assertEqual([], proplists:get_value(contents, ObjList2)), - - %% Use `prefix' option to restrict results to only keys that - %% begin with that prefix. Without the `delimiter' option the keys - %% are returned in the contents instead of as common prefixes. - Options4 = [{prefix, "0/"}], - ObjList3 = erlcloud_s3:list_objects(?TEST_BUCKET, Options4, UserConfig), - CommonPrefixes2 = proplists:get_value(common_prefixes, ObjList3), - ?assertEqual([], CommonPrefixes2), - ExpObjList1 = [Prefix1 ++ integer_to_list(X) || X <- lists:seq(1,4)] ++ - [Prefix2 ++ integer_to_list(Y) || Y <- lists:seq(1,4)], - ?assertEqual(ExpObjList1, [proplists:get_value(key, O) || - O <- proplists:get_value(contents, ObjList3)]), - - %% Request remainder of results - Options5 = [{marker, "7"}], - verify_object_list(erlcloud_s3:list_objects(?TEST_BUCKET, Options5, UserConfig), 2, 30, 29), - - %% Use `delimiter' and verify results include a single common - %% prefixe and 30 keys in the contents - Options6 = [{delimiter, "/"}], - ObjList4 = erlcloud_s3:list_objects(?TEST_BUCKET, Options6, UserConfig), - CommonPrefixes3 = proplists:get_value(common_prefixes, ObjList4), - ?assert(lists:member([{prefix, "0/"}], CommonPrefixes3)), - verify_object_list(ObjList4, 30), - - %% Don't fail even if Prefix is longer than 1024, even if keys are - %% restricted to be shorter than it. That's S3. - TooLongKey = "0/" ++ binary_to_list(binary:copy(<<"b">>, 1025)) ++ "/", - OptionsX = [{prefix, TooLongKey}], - ObjListX = erlcloud_s3:list_objects(?TEST_BUCKET, OptionsX, UserConfig), - ?assertEqual([], proplists:get_value(contents, ObjListX)), - - delete_objects(?TEST_BUCKET, Count3, [], UserConfig), - delete_objects(?TEST_BUCKET, 4, Prefix1, UserConfig), - delete_objects(?TEST_BUCKET, 4, Prefix2, UserConfig), - - Options7 = [{max_keys, "invalid"}], - ?assertError({aws_error, {http_error, 400, _, _}}, - erlcloud_s3:list_objects(?TEST_BUCKET, Options7, UserConfig)), - - lager:info("deleting bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:delete_bucket(?TEST_BUCKET, UserConfig)), - - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:list_objects(?TEST_BUCKET, UserConfig)), - rtcs:pass(). - -load_objects(Bucket, Count, Config) -> - load_objects(Bucket, Count, [], Config). - -load_objects(Bucket, Count, KeyPrefix, Config) -> - [erlcloud_s3:put_object(Bucket, - KeyPrefix ++ integer_to_list(X), - crypto:rand_bytes(100), - Config) || X <- lists:seq(1,Count)]. - -verify_object_list(ObjList, ExpectedCount) -> - verify_object_list(ObjList, ExpectedCount, ExpectedCount, 1). - -verify_object_list(ObjList, ExpectedCount, TotalCount) -> - verify_object_list(ObjList, ExpectedCount, TotalCount, 1). - -verify_object_list(ObjList, ExpectedCount, TotalCount, Offset) -> - verify_object_list(ObjList, ExpectedCount, TotalCount, Offset, []). - -verify_object_list(ObjList, ExpectedCount, TotalCount, 1, KeyPrefix) - when ExpectedCount =:= TotalCount -> - ?assertEqual(lists:sort([KeyPrefix ++ integer_to_list(X) - || X <- lists:seq(1, ExpectedCount)]), - [proplists:get_value(key, O) || - O <- proplists:get_value(contents, ObjList)]); -verify_object_list(ObjList, ExpectedCount, TotalCount, Offset, KeyPrefix) -> - ?assertEqual(lists:sublist( - lists:sort([KeyPrefix ++ integer_to_list(X) - || X <- lists:seq(1, TotalCount)]), - Offset, - ExpectedCount), - [proplists:get_value(key, O) || - O <- proplists:get_value(contents, ObjList)]). - -delete_and_verify_objects(Bucket, 0, Config) -> - verify_object_list(erlcloud_s3:list_objects(Bucket, Config), 0), - ok; -delete_and_verify_objects(Bucket, Count, Config) -> - verify_object_list(erlcloud_s3:list_objects(Bucket, Config), Count), - erlcloud_s3:delete_object(Bucket, integer_to_list(Count), Config), - delete_and_verify_objects(Bucket, Count-1, Config). - -delete_objects(Bucket, Count, Prefix, Config) -> - [erlcloud_s3:delete_object(Bucket, - Prefix ++ integer_to_list(X), - Config) - || X <- lists:seq(1, Count)]. diff --git a/riak_test/src/rc_helper.erl b/riak_test/src/rc_helper.erl deleted file mode 100644 index de48e4e80..000000000 --- a/riak_test/src/rc_helper.erl +++ /dev/null @@ -1,96 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(rc_helper). --compile(export_all). --include_lib("eunit/include/eunit.hrl"). - -to_riak_bucket(objects, CSBucket) -> - %% or make version switch here. - <<"0o:", (md5(CSBucket))/binary>>; -to_riak_bucket(blocks, CSBucket) -> - %% or make version switch here. - <<"0b:", (md5(CSBucket))/binary>>; -to_riak_bucket(_, CSBucket) -> - CSBucket. - --spec md5(iodata()) -> binary(). -md5(IOData) -> - crypto:hash(md5, IOData). - -to_riak_key(objects, CsKey) when is_binary(CsKey) -> - CsKey; -to_riak_key(objects, CsKey) when is_list(CsKey) -> - list_to_binary(CsKey); -to_riak_key(blocks, {UUID, Seq}) -> - <>; -to_riak_key(Kind, _) -> - error({not_yet_implemented, Kind}). - --spec get_riakc_obj([term()], objects | blocks, binary(), term()) -> term(). -get_riakc_obj(RiakNodes, Kind, CsBucket, Opts) -> - {Pbc, Key} = case Kind of - objects -> - {rtcs:pbc(RiakNodes, Kind, CsBucket), Opts}; - blocks -> - {CsKey, UUID, Seq} = Opts, - {rtcs:pbc(RiakNodes, Kind, {CsBucket, CsKey, UUID}), - {UUID, Seq}} - end, - RiakBucket = to_riak_bucket(Kind, CsBucket), - RiakKey = to_riak_key(Kind, Key), - Result = riakc_pb_socket:get(Pbc, RiakBucket, RiakKey), - riakc_pb_socket:stop(Pbc), - Result. - --spec update_riakc_obj([term()], objects | blocks, binary(), term(), riakc_obj:riakc_obj()) -> term(). -update_riakc_obj(RiakNodes, ObjectKind, CsBucket, CsKey, NewObj) -> - Pbc = rtcs:pbc(RiakNodes, ObjectKind, CsBucket), - RiakBucket = to_riak_bucket(ObjectKind, CsBucket), - RiakKey = to_riak_key(ObjectKind, CsKey), - OldObj = case riakc_pb_socket:get(Pbc, RiakBucket, RiakKey, [deletedvclock]) of - {ok, Obj} -> Obj; - {error, notfound} -> riakc_obj:new(RiakBucket, RiakKey); - {error, notfound, OldVclock} -> - riakc_obj:set_vclock(riakc_obj:new(RiakBucket, RiakKey), - OldVclock) - end, - NewMD = riakc_obj:get_metadata(NewObj), - NewValue = riakc_obj:get_value(NewObj), - Updated = riakc_obj:update_value( - riakc_obj:update_metadata(OldObj, NewMD), NewValue), - Result = riakc_pb_socket:put(Pbc, Updated), - riakc_pb_socket:stop(Pbc), - Result. - -delete_riakc_obj(RiakNodes, Kind, CsBucket, Opts) -> - {Pbc, Key} = case Kind of - objects -> - {rtcs:pbc(RiakNodes, Kind, CsBucket), Opts}; - blocks -> - {CsKey, UUID, Seq} = Opts, - {rtcs:pbc(RiakNodes, Kind, {CsBucket, CsKey, UUID}), - {UUID, Seq}} - end, - RiakBucket = to_riak_bucket(Kind, CsBucket), - RiakKey = to_riak_key(Kind, Key), - Result = riakc_pb_socket:delete(Pbc, RiakBucket, RiakKey), - riakc_pb_socket:stop(Pbc), - Result. diff --git a/riak_test/src/repl_helpers.erl b/riak_test/src/repl_helpers.erl deleted file mode 100644 index 47a122430..000000000 --- a/riak_test/src/repl_helpers.erl +++ /dev/null @@ -1,377 +0,0 @@ --module(repl_helpers). --compile(export_all). --include_lib("eunit/include/eunit.hrl"). - -verify_sites_balanced(NumSites, BNodes0) -> - rt:wait_until(fun() -> - L = rpc:call(hd(BNodes0), riak_repl_leader, leader_node, []), - L =/= undefined - end), - Leader = rpc:call(hd(BNodes0), riak_repl_leader, leader_node, []), - case node_has_version(Leader, "1.2.0") of - true -> - BNodes = nodes_with_version(BNodes0, "1.2.0") -- [Leader], - NumNodes = length(BNodes), - case NumNodes of - 0 -> - %% only leader is upgraded, runs clients locally - ?assertEqual(NumSites, client_count(Leader)); - _ -> - NodeCounts = [{Node, client_count(Node)} || Node <- BNodes], - lager:notice("nodecounts ~p", [NodeCounts]), - lager:notice("leader ~p", [Leader]), - Min = NumSites div NumNodes, - [?assert(Count >= Min) || {_Node, Count} <- NodeCounts] - end; - false -> - ok - end. - -%% does the node meet the version requirement? -node_has_version(Node, Version) -> - NodeVersion = rtdev:node_version(rtdev:node_id(Node)), - case NodeVersion of - current -> - %% current always satisfies any version check - true; - _ -> - NodeVersion >= Version - end. - -nodes_with_version(Nodes, Version) -> - [Node || Node <- Nodes, node_has_version(Node, Version)]. - -client_count(Node) -> - Clients = rpc:call(Node, supervisor, which_children, [riak_repl_client_sup]), - length(Clients). - -add_site(Node, {IP, Port, Name}) -> - lager:info("Add site ~p ~p:~p at node ~p", [Name, IP, Port, Node]), - Args = [IP, integer_to_list(Port), Name], - Res = rpc:call(Node, riak_repl_console, add_site, [Args]), - ?assertEqual(ok, Res). - -del_site(Node, Name) -> - lager:info("Del site ~p at ~p", [Name, Node]), - Res = rpc:call(Node, riak_repl_console, del_site, [[Name]]), - ?assertEqual(ok, Res). - -verify_listeners(Listeners) -> - Strs = [IP ++ ":" ++ integer_to_list(Port) || {IP, Port, _} <- Listeners], - [?assertEqual(ok, verify_listener(Node, Strs)) || {_, _, Node} <- Listeners]. - -verify_listener(Node, Strs) -> - lager:info("Verify listeners ~p ~p", [Node, Strs]), - rt:wait_until(Node, - fun(_) -> - Status = rpc:call(Node, riak_repl_console, status, [quiet]), - lists:all(fun(Str) -> - lists:keymember(Str, 2, Status) - end, Strs) - end). - -add_listeners(Nodes=[FirstNode|_]) -> - Ports = gen_ports(9010, length(Nodes)), - IPs = lists:duplicate(length(Nodes), "127.0.0.1"), - PN = lists:zip3(IPs, Ports, Nodes), - [add_listener(FirstNode, Node, IP, Port) || {IP, Port, Node} <- PN], - PN. - -add_listener(N, Node, IP, Port) -> - lager:info("Adding repl listener to ~p ~s:~p", [Node, IP, Port]), - Args = [[atom_to_list(Node), IP, integer_to_list(Port)]], - Res = rpc:call(N, riak_repl_console, add_listener, Args), - ?assertEqual(ok, Res). - -gen_ports(Start, Len) -> - lists:seq(Start, Start + Len - 1). - -verify_site_ips(Leader, Site, Listeners) -> - rt:wait_until( - fun() -> Status = rpc:call(Leader, riak_repl_console, status, [quiet]), - Key = lists:flatten([Site, "_ips"]), - IPStr = proplists:get_value(Key, Status), - IPs = lists:sort(re:split(IPStr, ", ")), - ExpectedIPs = lists:sort( - [list_to_binary([IP, ":", integer_to_list(Port)]) || - {IP, Port, _Node} <- Listeners]), - ExpectedIPs =:= IPs - end). - -start_and_wait_until_fullsync_complete(Node) -> - Status0 = rpc:call(Node, riak_repl_console, status, [quiet]), - Count = proplists:get_value(server_fullsyncs, Status0) + 1, - lager:info("waiting for fullsync count to be ~p", [Count]), - - lager:info("Starting fullsync on ~p (~p)", [Node, - rtdev:node_version(rtdev:node_id(Node))]), - rpc:call(Node, riak_repl_console, start_fullsync, [[]]), - %% sleep because of the old bug where stats will crash if you call it too - %% soon after starting a fullsync - timer:sleep(500), - - Res = rt:wait_until(Node, - fun(_) -> - Status = rpc:call(Node, riak_repl_console, status, [quiet]), - case proplists:get_value(server_fullsyncs, Status) of - C when C >= Count -> - true; - _ -> - false - end - end), - case node_has_version(Node, "1.2.0") of - true -> - ?assertEqual(ok, Res); - _ -> - case Res of - ok -> - ok; - _ -> - ?assertEqual(ok, wait_until_connection(Node)), - lager:warning("Pre 1.2.0 node failed to fullsync, retrying"), - start_and_wait_until_fullsync_complete(Node) - end - end, - - lager:info("Fullsync on ~p complete", [Node]). - - -wait_until_leader(Node) -> - Res = rt:wait_until(Node, - fun(_) -> - Status = rpc:call(Node, riak_repl_console, status, [quiet]), - case Status of - {badrpc, _} -> - false; - _ -> - case proplists:get_value(leader, Status) of - undefined -> - false; - _ -> - true - end - end - end), - ?assertEqual(ok, Res). - - -wait_until_13_leader(Node) -> - wait_until_new_leader(Node, undefined). - -%% taken from -%% https://github.com/basho/riak_test/blob/master/tests/repl_util.erl -wait_until_new_leader(Node, OldLeader) -> - Res = rt:wait_until(Node, - fun(_) -> - Status = rpc:call(Node, riak_core_cluster_mgr, get_leader, []), - case Status of - {badrpc, _} -> - false; - undefined -> - false; - OldLeader -> - false; - _Other -> - true - end - end), - ?assertEqual(ok, Res). - -wait_until_leader_converge([Node|_] = Nodes) -> - rt:wait_until(Node, - fun(_) -> - length(lists:usort([begin - case rpc:call(N, riak_core_cluster_mgr, get_leader, []) of - undefined -> - false; - L -> - %lager:info("Leader for ~p is ~p", - %[N,L]), - L - end - end || N <- Nodes])) == 1 - end). - -wait_until_connection(Node) -> - rt:wait_until(Node, - fun(_) -> - Status = rpc:call(Node, riak_repl_console, status, [quiet]), - case proplists:get_value(server_stats, Status) of - [] -> - false; - [_C] -> - true; - Conns -> - lager:warning("multiple connections detected: ~p", - [Conns]), - true - end - end, 80, 500). %% 40 seconds is enough for repl - -%% The functions below are for 1.3 repl (aka Advanced Mode MDC) -connect_cluster(Node, IP, Port) -> - Res = rpc:call(Node, riak_repl_console, connect, - [[IP, integer_to_list(Port)]]), - ?assertEqual(ok, Res). - -disconnect_cluster(Node, Name) -> - Res = rpc:call(Node, riak_repl_console, disconnect, - [[Name]]), - ?assertEqual(ok, Res). - -wait_for_connection(Node, Name) -> - rt:wait_until(Node, - fun(_) -> - {ok, Connections} = rpc:call(Node, riak_core_cluster_mgr, - get_connections, []), - lists:any(fun({{cluster_by_name, N}, _}) when N == Name -> true; - (_) -> false - end, Connections) - end). - -wait_until_no_connection(Node) -> - rt:wait_until(Node, - fun(_) -> - Status = rpc:call(Node, riak_repl_console, status, [quiet]), - case proplists:get_value(connected_clusters, Status) of - [] -> - true; - _ -> - false - end - end). %% 40 seconds is enough for repl - -enable_realtime(Node, Cluster) -> - Res = rpc:call(Node, riak_repl_console, realtime, [["enable", Cluster]]), - ?assertEqual(ok, Res). - -disable_realtime(Node, Cluster) -> - Res = rpc:call(Node, riak_repl_console, realtime, [["disable", Cluster]]), - ?assertEqual(ok, Res). - -enable_fullsync(Node, Cluster) -> - Res = rpc:call(Node, riak_repl_console, fullsync, [["enable", Cluster]]), - ?assertEqual(ok, Res). - -start_realtime(Node, Cluster) -> - Res = rpc:call(Node, riak_repl_console, realtime, [["start", Cluster]]), - ?assertEqual(ok, Res). - -stop_realtime(Node, Cluster) -> - Res = rpc:call(Node, riak_repl_console, realtime, [["stop", Cluster]]), - ?assertEqual(ok, Res). - -name_cluster(Node, Name) -> - lager:info("Naming cluster ~p",[Name]), - Res = rpc:call(Node, riak_repl_console, clustername, [[Name]]), - ?assertEqual(ok, Res). - -connect_clusters13(LeaderA, ANodes, BPort, Name) -> - lager:info("Connecting to ~p", [Name]), - connect_cluster13(LeaderA, "127.0.0.1", BPort), - ?assertEqual(ok, wait_for_connection13(LeaderA, Name)), - repl_util:enable_realtime(LeaderA, Name), - rt:wait_until_ring_converged(ANodes), - repl_util:start_realtime(LeaderA, Name), - rt:wait_until_ring_converged(ANodes), - repl_util:enable_fullsync(LeaderA, Name), - rt:wait_until_ring_converged(ANodes), - enable_pg13(LeaderA, Name), - rt:wait_until_ring_converged(ANodes), - ?assertEqual(ok, wait_for_connection13(LeaderA, Name)), - rt:wait_until_ring_converged(ANodes). - -disconnect_clusters13(LeaderA, ANodes, Name) -> - lager:info("Disconnecting from ~p", [Name]), - disconnect_cluster13(LeaderA, Name), - repl_util:disable_realtime(LeaderA, Name), - rt:wait_until_ring_converged(ANodes), - repl_util:stop_realtime(LeaderA, Name), - rt:wait_until_ring_converged(ANodes), - disable_pg13(LeaderA, Name), - rt:wait_until_ring_converged(ANodes), - ?assertEqual(ok, wait_until_no_connection13(LeaderA)), - rt:wait_until_ring_converged(ANodes). - -start_and_wait_until_fullsync_complete13(Node) -> - Status0 = rpc:call(Node, riak_repl_console, status, [quiet]), - Count = proplists:get_value(server_fullsyncs, Status0) + 1, - lager:info("waiting for fullsync count to be ~p", [Count]), - - lager:info("Starting fullsync on ~p (~p)", [Node, - rtdev:node_version(rtdev:node_id(Node))]), - rpc:call(Node, riak_repl_console, fullsync, [["start"]]), - %% sleep because of the old bug where stats will crash if you call it too - %% soon after starting a fullsync - timer:sleep(500), - - Res = rt:wait_until(Node, - fun(_) -> - Status = rpc:call(Node, riak_repl_console, status, [quiet]), - case proplists:get_value(server_fullsyncs, Status) of - C when C >= Count -> - true; - _ -> - false - end - end), - ?assertEqual(ok, Res), - - lager:info("Fullsync on ~p complete", [Node]). - -wait_for_connection13(Node, Name) -> - rt:wait_until(Node, - fun(_) -> - {ok, Connections} = rpc:call(Node, riak_core_cluster_mgr, - get_connections, []), - lists:any(fun({{cluster_by_name, N}, _}) when N == Name -> true; - (_) -> false - end, Connections) - end). - -wait_until_no_connection13(Node) -> - rt:wait_until(Node, - fun(_) -> - Status = rpc:call(Node, riak_repl_console, status, [quiet]), - case proplists:get_value(connected_clusters, Status) of - [] -> - true; - _ -> - false - end - end). %% 40 seconds is enough for repl - -wait_until_realtime_sync_complete(Nodes) -> - [wait_until_rtq_drained(Node)||Node <- Nodes]. - -wait_until_rtq_drained(Node) -> - rt:wait_until(Node, - fun(_) -> - case rpc:call(Node, riak_repl2_rtq, dumpq, []) of - [] -> - true; - _ -> - false - end - end), - lager:info("Realtime sync on ~p complete", [Node]). - -connect_cluster13(Node, IP, Port) -> - Res = rpc:call(Node, riak_repl_console, connect, - [[IP, integer_to_list(Port)]]), - ?assertEqual(ok, Res). - -disconnect_cluster13(Node, Name) -> - Res = rpc:call(Node, riak_repl_console, disconnect, - [[Name]]), - ?assertEqual(ok, Res). - -enable_pg13(Node, Cluster) -> - Res = rpc:call(Node, riak_repl_console, proxy_get, [["enable", Cluster]]), - ?assertEqual(ok, Res). - -disable_pg13(Node, Cluster) -> - Res = rpc:call(Node, riak_repl_console, proxy_get, [["disable", Cluster]]), - ?assertEqual(ok, Res). - diff --git a/riak_test/src/rtcs.erl b/riak_test/src/rtcs.erl deleted file mode 100644 index 3a919be1a..000000000 --- a/riak_test/src/rtcs.erl +++ /dev/null @@ -1,418 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% ------------------------------------------------------------------- - --module(rtcs). - --compile(export_all). - --include_lib("eunit/include/eunit.hrl"). --include_lib("erlcloud/include/erlcloud_aws.hrl"). --include_lib("xmerl/include/xmerl.hrl"). - --import(rt, [join/2, - wait_until_nodes_ready/1, - wait_until_no_pending_changes/1]). - --define(DEVS(N), lists:concat(["dev", N, "@127.0.0.1"])). --define(DEV(N), list_to_atom(?DEVS(N))). --define(CSDEVS(N), lists:concat(["rcs-dev", N, "@127.0.0.1"])). --define(CSDEV(N), list_to_atom(?CSDEVS(N))). - -setup(NumNodes) -> - setup(NumNodes, [], current). - -setup(NumNodes, Configs) -> - setup(NumNodes, Configs, current). - -setup(NumNodes, Configs, Vsn) -> - Flavor = rt_config:get(flavor, basic), - lager:info("Flavor : ~p", [Flavor]), - flavored_setup(NumNodes, Flavor, Configs, Vsn). - -setup2x2() -> - setup2x2([]). - -setup2x2(Configs) -> - JoinFun = fun(Nodes) -> - [A,B,C,D] = Nodes, - join(B,A), - join(D,C) - end, - setup_clusters(Configs, JoinFun, 4, current). - -%% 1 cluster with N nodes + M cluster with 1 node -setupNxMsingles(N, M) -> - setupNxMsingles(N, M, [], current). - -setupNxMsingles(N, M, Configs, Vsn) - when Vsn =:= current orelse Vsn =:= previous -> - JoinFun = fun(Nodes) -> - [Target | Joiners] = lists:sublist(Nodes, N), - [join(J, Target) || J <- Joiners] - end, - setup_clusters(Configs, JoinFun, N + M, Vsn). - -flavored_setup(NumNodes, basic, Configs, Vsn) -> - JoinFun = fun(Nodes) -> - [First|Rest] = Nodes, - [join(Node, First) || Node <- Rest] - end, - setup_clusters(Configs, JoinFun, NumNodes, Vsn); -flavored_setup(NumNodes, {multibag, _} = Flavor, Configs, Vsn) - when Vsn =:= current orelse Vsn =:= previous -> - rtcs_bag:flavored_setup(NumNodes, Flavor, Configs, Vsn). - -setup_clusters(Configs, JoinFun, NumNodes, Vsn) -> - %% Start the erlcloud app - erlcloud:start(), - - %% STFU sasl - application:load(sasl), - application:set_env(sasl, sasl_error_logger, false), - - {RiakNodes, _CSNodes, _Stanchion} = Nodes = - deploy_nodes(NumNodes, rtcs_config:configs(Configs, Vsn), Vsn), - rt:wait_until_nodes_ready(RiakNodes), - lager:info("Make cluster"), - JoinFun(RiakNodes), - ?assertEqual(ok, wait_until_nodes_ready(RiakNodes)), - ?assertEqual(ok, wait_until_no_pending_changes(RiakNodes)), - rt:wait_until_ring_converged(RiakNodes), - AdminConfig = - case ssl_options(Configs) of - [] -> - setup_admin_user(NumNodes, Vsn); - _SSLOpts -> - rtcs_admin:create_user_rpc(hd(_CSNodes), "admin-key", "admin-secret") - end, - - {AdminConfig, Nodes}. - -ssl_options(Config) -> - case proplists:get_value(cs, Config) of - undefined -> []; - RiakCS -> - case proplists:get_value(riak_cs, RiakCS) of - undefined -> []; - CSConfig -> - proplists:get_value(ssl, CSConfig, []) - end - end. - -pass() -> - teardown(), - pass. - -teardown() -> - %% catch application:stop(sasl), - catch application:stop(erlcloud), - catch application:stop(ibrowse). - -%% Return Riak node IDs, one per cluster. -%% For example, in basic single cluster case, just return [1]. --spec riak_id_per_cluster(pos_integer()) -> [pos_integer()]. -riak_id_per_cluster(NumNodes) -> - case rt_config:get(flavor, basic) of - basic -> [1]; - {multibag, _} = Flavor -> rtcs_bag:riak_id_per_cluster(NumNodes, Flavor) - end. - --spec deploy_nodes(list(), list(), current|previous) -> any(). -deploy_nodes(NumNodes, InitialConfig, Vsn) - when Vsn =:= current orelse Vsn =:= previous -> - lager:info("Initial Config: ~p", [InitialConfig]), - {RiakNodes, CSNodes, StanchionNode} = Nodes = {riak_nodes(NumNodes), - cs_nodes(NumNodes), - stanchion_node()}, - - NodeMap = orddict:from_list(lists:zip(RiakNodes, lists:seq(1, NumNodes))), - rt_config:set(rt_nodes, NodeMap), - CSNodeMap = orddict:from_list(lists:zip(CSNodes, lists:seq(1, NumNodes))), - rt_config:set(rt_cs_nodes, CSNodeMap), - - {_RiakRoot, RiakVsn} = rtcs_dev:riak_root_and_vsn(Vsn, rt_config:get(build_type, oss)), - lager:debug("setting rt_versions> ~p =>", [Vsn]), - - VersionMap = lists:zip(lists:seq(1, NumNodes), lists:duplicate(NumNodes, RiakVsn)), - rt_config:set(rt_versions, VersionMap), - - rtcs_exec:stop_all_nodes(node_list(NumNodes), Vsn), - - rtcs_dev:create_dirs(RiakNodes), - - %% Set initial config - rtcs_config:set_configs(NumNodes, - InitialConfig, - Vsn), - rtcs_exec:start_all_nodes(node_list(NumNodes), Vsn), - - [ok = rt:wait_until_pingable(N) || N <- RiakNodes ++ CSNodes ++ [StanchionNode]], - [ok = rt:check_singleton_node(N) || N <- RiakNodes], - rt:wait_until_nodes_ready(RiakNodes), - - lager:info("NodeMap: ~p", [ NodeMap ]), - lager:info("VersionMap: ~p", [VersionMap]), - lager:info("Deployed nodes: ~p", [Nodes]), - - Nodes. - -node_id(Node) -> - NodeMap = rt_config:get(rt_cs_nodes), - orddict:fetch(Node, NodeMap). - -setup_admin_user(NumNodes, Vsn) - when Vsn =:= current orelse Vsn =:= previous -> - - %% Create admin user and set in cs and stanchion configs - AdminCreds = rtcs_admin:create_admin_user(1), - #aws_config{access_key_id=KeyID, - secret_access_key=KeySecret} = AdminCreds, - - AdminConf = [{admin_key, KeyID}] - ++ case Vsn of - current -> []; - previous -> [{admin_secret, KeySecret}] - end, - rt:pmap(fun(N) -> - rtcs:set_advanced_conf({cs, Vsn, N}, [{riak_cs, AdminConf}]) - end, lists:seq(1, NumNodes)), - rtcs:set_advanced_conf({stanchion, Vsn}, [{stanchion, AdminConf}]), - - UpdateFun = fun({Node, App}) -> - ok = rpc:call(Node, application, set_env, - [App, admin_key, KeyID]), - ok = rpc:call(Node, application, set_env, - [App, admin_secret, KeySecret]) - end, - ZippedNodes = [{stanchion_node(), stanchion} | - [{CSNode, riak_cs} || CSNode <- cs_nodes(NumNodes) ]], - lists:foreach(UpdateFun, ZippedNodes), - - lager:info("AdminCreds: ~p", [AdminCreds]), - AdminCreds. - --spec set_conf(atom() | {atom(), atom()} | string(), [{string(), string()}]) -> ok. -set_conf(all, NameValuePairs) -> - lager:info("rtcs:set_conf(all, ~p)", [NameValuePairs]), - [ set_conf(DevPath, NameValuePairs) || DevPath <- rtcs_dev:devpaths()], - ok; -set_conf(Name, NameValuePairs) when Name =:= riak orelse - Name =:= cs orelse - Name =:= stanchion -> - set_conf({Name, current}, NameValuePairs), - ok; -set_conf({Name, Vsn}, NameValuePairs) -> - lager:info("rtcs:set_conf({~p, ~p}, ~p)", [Name, Vsn, NameValuePairs]), - set_conf(rtcs_dev:devpath(Name, Vsn), NameValuePairs), - ok; -set_conf({Name, Vsn, N}, NameValuePairs) -> - lager:info("rtcs:set_conf({~p, ~p, ~p}, ~p)", [Name, Vsn, N, NameValuePairs]), - rtdev:append_to_conf_file(rtcs_dev:get_conf(rtcs_dev:devpath(Name, Vsn), N), NameValuePairs), - ok; -set_conf(Node, NameValuePairs) when is_atom(Node) -> - rtdev:append_to_conf_file(rtcs_dev:get_conf(Node), NameValuePairs), - ok; -set_conf(DevPath, NameValuePairs) -> - lager:info("rtcs:set_conf(~p, ~p)", [DevPath, NameValuePairs]), - [rtdev:append_to_conf_file(RiakConf, NameValuePairs) || RiakConf <- rtcs_dev:all_the_files(DevPath, "etc/*.conf")], - ok. - --spec set_advanced_conf(atom() | {atom(), atom()} | string(), [{string(), string()}]) -> ok. -set_advanced_conf(all, NameValuePairs) -> - lager:info("rtcs:set_advanced_conf(all, ~p)", [NameValuePairs]), - [ set_advanced_conf(DevPath, NameValuePairs) || DevPath <- rtcs_dev:devpaths()], - ok; -set_advanced_conf(Name, NameValuePairs) when Name =:= riak orelse - Name =:= cs orelse - Name =:= stanchion -> - set_advanced_conf({Name, current}, NameValuePairs), - ok; -set_advanced_conf({Name, Vsn}, NameValuePairs) -> - lager:info("rtcs:set_advanced_conf({~p, ~p}, ~p)", [Name, Vsn, NameValuePairs]), - set_advanced_conf(rtcs_dev:devpath(Name, Vsn), NameValuePairs), - ok; -set_advanced_conf({Name, Vsn, N}, NameValuePairs) -> - lager:info("rtcs:set_advanced_conf({~p, ~p, ~p}, ~p)", [Name, Vsn, N, NameValuePairs]), - rtcs_dev:update_app_config_file(rtcs_dev:get_app_config(rtcs_dev:devpath(Name, Vsn), N), NameValuePairs), - ok; -set_advanced_conf(Node, NameValuePairs) when is_atom(Node) -> - rtcs_dev:update_app_config_file(rtcs_dev:get_app_config(Node), NameValuePairs), - ok; -set_advanced_conf(DevPath, NameValuePairs) -> - AdvancedConfs = case rtcs_dev:all_the_files(DevPath, "etc/a*.config") of - [] -> - %% no advanced conf? But we _need_ them, so make 'em - rtdev:make_advanced_confs(DevPath); - Confs -> - Confs - end, - lager:info("AdvancedConfs = ~p~n", [AdvancedConfs]), - [rtcs_dev:update_app_config_file(RiakConf, NameValuePairs) || RiakConf <- AdvancedConfs], - ok. - -assert_error_log_empty(N) -> - assert_error_log_empty(current, N). - -assert_error_log_empty(Vsn, N) -> - ErrorLog = rtcs_config:riakcs_logpath(rtcs_config:devpath(cs, Vsn), N, "error.log"), - case file:read_file(ErrorLog) of - {error, enoent} -> ok; - {ok, <<>>} -> ok; - {ok, Errors} -> - lager:warning("Not empty error.log (~s): the first few lines are...~n~s", - [ErrorLog, - lists:map( - fun(L) -> io_lib:format("cs dev~p error.log: ~s\n", [N, L]) end, - lists:sublist(binary:split(Errors, <<"\n">>, [global]), 3))]), - error(not_empty_error_log) - end. - -truncate_error_log(N) -> - Cmd = os:find_executable("rm"), - ErrorLog = rtcs_config:riakcs_logpath(rt_config:get(rtcs_config:cs_current()), N, "error.log"), - ok = rtcs_exec:cmd(Cmd, [{args, ["-f", ErrorLog]}]). - -wait_until(_, _, 0, _) -> - fail; -wait_until(Fun, Condition, Retries, Delay) -> - Result = Fun(), - case Condition(Result) of - true -> - Result; - false -> - timer:sleep(Delay), - wait_until(Fun, Condition, Retries-1, Delay) - end. - -%% Kind = objects | blocks | users | buckets ... -pbc(RiakNodes, ObjectKind, Opts) -> - pbc(rt_config:get(flavor, basic), ObjectKind, RiakNodes, Opts). - -pbc(basic, _ObjectKind, RiakNodes, _Opts) -> - rt:pbc(hd(RiakNodes)); -pbc({multibag, _} = Flavor, ObjectKind, RiakNodes, Opts) -> - rtcs_bag:pbc(Flavor, ObjectKind, RiakNodes, Opts). - -sha_mac(Key,STS) -> crypto:hmac(sha, Key,STS). -sha(Bin) -> crypto:hash(sha, Bin). -md5(Bin) -> crypto:hash(md5, Bin). - -datetime() -> - datetime(calendar:universal_time()). - -datetime({{YYYY,MM,DD}, {H,M,S}}) -> - lists:flatten(io_lib:format( - "~4..0B~2..0B~2..0BT~2..0B~2..0B~2..0BZ", [YYYY, MM, DD, H, M, S])). - -json_get(Key, Json) when is_binary(Key) -> - json_get([Key], Json); -json_get([], Json) -> - Json; -json_get([Key | Keys], {struct, JsonProps}) -> - case lists:keyfind(Key, 1, JsonProps) of - false -> - notfound; - {Key, Value} -> - json_get(Keys, Value) - end. - -check_no_such_bucket(Response, Resource) -> - check_error_response(Response, - 404, - "NoSuchBucket", - "The specified bucket does not exist.", - Resource). - -check_error_response({_, Status, _, RespStr} = _Response, - Status, - Code, Message, Resource) -> - {RespXml, _} = xmerl_scan:string(RespStr), - lists:all(error_child_element_verifier(Code, Message, Resource), - RespXml#xmlElement.content). - -error_child_element_verifier(Code, Message, Resource) -> - fun(#xmlElement{name='Code', content=[Content]}) -> - Content#xmlText.value =:= Code; - (#xmlElement{name='Message', content=[Content]}) -> - Content#xmlText.value =:= Message; - (#xmlElement{name='Resource', content=[Content]}) -> - Content#xmlText.value =:= Resource; - (_) -> - true - end. - -assert_versions(App, Nodes, Regexp) -> - [begin - {ok, Vsn} = rpc:call(N, application, get_key, [App, vsn]), - lager:debug("~s's vsn at ~s: ~s", [App, N, Vsn]), - {match, _} = re:run(Vsn, Regexp) - end || - N <- Nodes]. - - -%% Copy from rts:iso8601/1 -iso8601(Timestamp) when is_integer(Timestamp) -> - GregSec = Timestamp + 719528 * 86400, - Datetime = calendar:gregorian_seconds_to_datetime(GregSec), - {{Y,M,D},{H,I,S}} = Datetime, - io_lib:format("~4..0b~2..0b~2..0bT~2..0b~2..0b~2..0bZ", - [Y, M, D, H, I, S]). - -reset_log(Node) -> - {ok, _Logs} = rpc:call(Node, gen_event, delete_handler, - [lager_event, riak_test_lager_backend, normal]), - ok = rpc:call(Node, gen_event, add_handler, - [lager_event, riak_test_lager_backend, - [rt_config:get(lager_level, info), false]]). - -riak_node(N) -> - ?DEV(N). - -cs_node(N) -> - ?CSDEV(N). - -stanchion_node() -> - 'stanchion@127.0.0.1'. - -maybe_load_intercepts(Node) -> - case rt_intercept:are_intercepts_loaded(Node, [intercept_path()]) of - false -> - ok = rt_intercept:load_intercepts([Node], [intercept_path()]); - true -> - ok - end. - -%% private - -riak_nodes(NumNodes) -> - [?DEV(N) || N <- lists:seq(1, NumNodes)]. - -cs_nodes(NumNodes) -> - [?CSDEV(N) || N <- lists:seq(1, NumNodes)]. - -node_list(NumNodes) -> - NL0 = lists:zip(cs_nodes(NumNodes), - riak_nodes(NumNodes)), - {CS1, R1} = hd(NL0), - [{CS1, R1, stanchion_node()} | tl(NL0)]. - -intercept_path() -> - filename:join([rtcs_dev:srcpath(cs_src_root), - "riak_test", "intercepts", "*.erl"]). diff --git a/riak_test/src/rtcs_admin.erl b/riak_test/src/rtcs_admin.erl deleted file mode 100644 index 4cf037297..000000000 --- a/riak_test/src/rtcs_admin.erl +++ /dev/null @@ -1,238 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(rtcs_admin). - --export([storage_stats_json_request/4, - create_user/2, - create_user/3, - create_user/4, - create_user_rpc/3, - create_admin_user/1, - update_user/5, - get_user/4, - list_users/4, - make_authorization/5, - make_authorization/6, - make_authorization/7, - aws_config/2, - aws_config/3]). - --include_lib("eunit/include/eunit.hrl"). --include_lib("erlcloud/include/erlcloud_aws.hrl"). --include_lib("xmerl/include/xmerl.hrl"). - --define(S3_HOST, "s3.amazonaws.com"). --define(DEFAULT_PROTO, "http"). --define(PROXY_HOST, "localhost"). - --spec storage_stats_json_request(#aws_config{}, #aws_config{}, string(), string()) -> - [{string(), {non_neg_integer(), non_neg_integer()}}]. -storage_stats_json_request(AdminConfig, UserConfig, Begin, End) -> - Samples = samples_from_json_request(AdminConfig, UserConfig, {Begin, End}), - lager:debug("Storage samples[json]: ~p", [Samples]), - {struct, Slice} = latest(Samples, undefined), - by_bucket_list(Slice, []). - -%% Kludge for SSL testing -create_user_rpc(Node, Key, Secret) -> - User = "admin", - Email = "admin@me.com", - - %% You know this is a kludge, user creation via RPC - _Res = rpc:call(Node, riak_cs_user, create_user, [User, Email, Key, Secret]), - aws_config(Key, Secret, rtcs_config:cs_port(1)). - --spec create_admin_user(atom()) -> #aws_config{}. -create_admin_user(Node) -> - User = "admin", - Email = "admin@me.com", - {UserConfig, Id} = create_user(rtcs_config:cs_port(Node), Email, User), - lager:info("Riak CS Admin account created with ~p",[Email]), - lager:info("KeyId = ~p",[UserConfig#aws_config.access_key_id]), - lager:info("KeySecret = ~p",[UserConfig#aws_config.secret_access_key]), - lager:info("Id = ~p",[Id]), - UserConfig. - --spec create_user(atom(), non_neg_integer()) -> #aws_config{}. -create_user(Node, UserIndex) -> - {A, B, C} = erlang:now(), - User = "Test User" ++ integer_to_list(UserIndex), - Email = lists:flatten(io_lib:format("~p~p~p@basho.com", [A, B, C])), - {UserConfig, _Id} = create_user(rtcs_config:cs_port(Node), Email, User), - lager:info("Created user ~p with keys ~p ~p", [Email, - UserConfig#aws_config.access_key_id, - UserConfig#aws_config.secret_access_key]), - UserConfig. - --spec create_user(non_neg_integer(), string(), string()) -> {#aws_config{}, string()}. -create_user(Port, EmailAddr, Name) -> - %% create_user(Port, undefined, EmailAddr, Name). - create_user(Port, aws_config("admin-key", "admin-secret", Port), EmailAddr, Name). - --spec create_user(non_neg_integer(), string(), string(), string()) -> {#aws_config{}, string()}. -create_user(Port, UserConfig, EmailAddr, Name) -> - lager:debug("Trying to create user ~p", [EmailAddr]), - Resource = "/riak-cs/user", - ReqBody = "{\"email\":\"" ++ EmailAddr ++ "\", \"name\":\"" ++ Name ++"\"}", - Delay = rt_config:get(rt_retry_delay), - Retries = rt_config:get(rt_max_wait_time) div Delay, - OutputFun = fun() -> catch erlcloud_s3:s3_request( - UserConfig, post, "", Resource, [], "", - {ReqBody, "application/json"}, []) - end, - Condition = fun({'EXIT', Res}) -> - lager:debug("create_user failing, Res: ~p", [Res]), - false; - ({_ResHeader, _ResBody}) -> - true - end, - {_ResHeader, ResBody} = rtcs:wait_until(OutputFun, Condition, Retries, Delay), - lager:debug("ResBody: ~s", [ResBody]), - JsonData = mochijson2:decode(ResBody), - [KeyId, KeySecret, Id] = [binary_to_list(rtcs:json_get([K], JsonData)) || - K <- [<<"key_id">>, <<"key_secret">>, <<"id">>]], - {aws_config(KeyId, KeySecret, Port), Id}. - --spec update_user(#aws_config{}, non_neg_integer(), string(), string(), string()) -> string(). -update_user(UserConfig, _Port, Resource, ContentType, UpdateDoc) -> - {_ResHeader, ResBody} = erlcloud_s3:s3_request( - UserConfig, put, "", Resource, [], "", - {UpdateDoc, ContentType}, []), - lager:debug("ResBody: ~s", [ResBody]), - ResBody. - --spec get_user(#aws_config{}, non_neg_integer(), string(), string()) -> string(). -get_user(UserConfig, _Port, Resource, AcceptContentType) -> - lager:debug("Retreiving user record"), - Headers = [{"Accept", AcceptContentType}], - {_ResHeader, ResBody} = erlcloud_s3:s3_request( - UserConfig, get, "", Resource, [], "", "", Headers), - lager:debug("ResBody: ~s", [ResBody]), - ResBody. - --spec list_users(#aws_config{}, non_neg_integer(), string(), string()) -> string(). -list_users(UserConfig, _Port, Resource, AcceptContentType) -> - Headers = [{"Accept", AcceptContentType}], - {_ResHeader, ResBody} = erlcloud_s3:s3_request( - UserConfig, get, "", Resource, [], "", "", Headers), - ResBody. - --spec(make_authorization(string(), string(), string(), #aws_config{}, string()) -> string()). -make_authorization(Method, Resource, ContentType, Config, Date) -> - make_authorization(Method, Resource, ContentType, Config, Date, []). - --spec(make_authorization(string(), string(), string(), #aws_config{}, string(), [{string(), string()}]) -> string()). -make_authorization(Method, Resource, ContentType, Config, Date, AmzHeaders) -> - make_authorization(s3, Method, Resource, ContentType, Config, Date, AmzHeaders). - --spec(make_authorization(atom(), string(), string(), string(), #aws_config{}, string(), [{string(), string()}]) -> string()). -make_authorization(Type, Method, Resource, ContentType, Config, Date, AmzHeaders) -> - Prefix = case Type of - s3 -> "AWS"; - velvet -> "MOSS" - end, - StsAmzHeaderPart = [[K, $:, V, $\n] || {K, V} <- AmzHeaders], - StringToSign = [Method, $\n, [], $\n, ContentType, $\n, Date, $\n, - StsAmzHeaderPart, Resource], - lager:debug("StringToSign~n~s~n", [StringToSign]), - Signature = - base64:encode_to_string(rtcs:sha_mac(Config#aws_config.secret_access_key, StringToSign)), - lists:flatten([Prefix, " ", Config#aws_config.access_key_id, $:, Signature]). - --spec aws_config(string(), string(), non_neg_integer()) -> #aws_config{}. -aws_config(Key, Secret, Port) -> - erlcloud_s3:new(Key, - Secret, - ?S3_HOST, - Port, % inets issue precludes using ?S3_PORT - ?DEFAULT_PROTO, - ?PROXY_HOST, - Port, - []). - --spec aws_config(#aws_config{}, [{atom(), term()}]) -> #aws_config{}. -aws_config(UserConfig, []) -> - UserConfig; -aws_config(UserConfig, [{port, Port}|Props]) -> - UpdConfig = erlcloud_s3:new(UserConfig#aws_config.access_key_id, - UserConfig#aws_config.secret_access_key, - ?S3_HOST, - Port, % inets issue precludes using ?S3_PORT - ?DEFAULT_PROTO, - ?PROXY_HOST, - Port, - []), - aws_config(UpdConfig, Props); -aws_config(UserConfig, [{key, KeyId}|Props]) -> - UpdConfig = erlcloud_s3:new(KeyId, - UserConfig#aws_config.secret_access_key, - ?S3_HOST, - UserConfig#aws_config.s3_port, % inets issue precludes using ?S3_PORT - ?DEFAULT_PROTO, - ?PROXY_HOST, - UserConfig#aws_config.s3_port, - []), - aws_config(UpdConfig, Props); -aws_config(UserConfig, [{secret, Secret}|Props]) -> - UpdConfig = erlcloud_s3:new(UserConfig#aws_config.access_key_id, - Secret, - ?S3_HOST, - UserConfig#aws_config.s3_port, % inets issue precludes using ?S3_PORT - ?DEFAULT_PROTO, - ?PROXY_HOST, - UserConfig#aws_config.s3_port, - []), - aws_config(UpdConfig, Props). - -%% private - - -latest([], {_, Candidate}) -> - Candidate; -latest([Sample | Rest], undefined) -> - StartTime = rtcs:json_get([<<"StartTime">>], Sample), - latest(Rest, {StartTime, Sample}); -latest([Sample | Rest], {CandidateStartTime, Candidate}) -> - StartTime = rtcs:json_get([<<"StartTime">>], Sample), - NewCandidate = case StartTime < CandidateStartTime of - true -> {CandidateStartTime, Candidate}; - _ -> {StartTime, Sample} - end, - latest(Rest, NewCandidate). - -by_bucket_list([], Acc) -> - lists:sort(Acc); -by_bucket_list([{<<"StartTime">>, _} | Rest], Acc) -> - by_bucket_list(Rest, Acc); -by_bucket_list([{<<"EndTime">>, _} | Rest], Acc) -> - by_bucket_list(Rest, Acc); -by_bucket_list([{BucketBin, {struct,[{<<"Objects">>, Objs}, - {<<"Bytes">>, Bytes}]}} | Rest], - Acc) -> - by_bucket_list(Rest, [{binary_to_list(BucketBin), {Objs, Bytes}}|Acc]). - -samples_from_json_request(AdminConfig, UserConfig, {Begin, End}) -> - KeyId = UserConfig#aws_config.access_key_id, - StatsKey = string:join(["usage", KeyId, "bj", Begin, End], "/"), - GetResult = erlcloud_s3:get_object("riak-cs", StatsKey, AdminConfig), - Usage = mochijson2:decode(proplists:get_value(content, GetResult)), - rtcs:json_get([<<"Storage">>, <<"Samples">>], Usage). - diff --git a/riak_test/src/rtcs_config.erl b/riak_test/src/rtcs_config.erl deleted file mode 100644 index 7f5ac3fec..000000000 --- a/riak_test/src/rtcs_config.erl +++ /dev/null @@ -1,536 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- --module(rtcs_config). --compile(export_all). --include_lib("eunit/include/eunit.hrl"). - --define(RIAK_CURRENT, <<"build_paths.current">>). --define(RIAK_PREVIOUS, <<"build_paths.previous">>). --define(EE_CURRENT, <<"build_paths.ee_current">>). --define(EE_PREVIOUS, <<"build_paths.ee_previous">>). --define(CS_CURRENT, <<"build_paths.cs_current">>). --define(CS_PREVIOUS, <<"build_paths.cs_previous">>). --define(STANCHION_CURRENT, <<"build_paths.stanchion_current">>). --define(STANCHION_PREVIOUS, <<"build_paths.stanchion_previous">>). - --define(S3_PORT, 80). - --define(REQUEST_POOL_SIZE, 8). --define(BUCKET_LIST_POOL_SIZE, 2). - -request_pool_size() -> - ?REQUEST_POOL_SIZE. - -bucket_list_pool_size() -> - ?BUCKET_LIST_POOL_SIZE. - -configs(CustomConfigs) -> - configs(CustomConfigs, current). - -configs(CustomConfigs, current) -> - merge(default_configs(), CustomConfigs); -configs(CustomConfigs, previous) -> - merge(previous_default_configs(), CustomConfigs). - -previous_configs() -> - previous_configs([]). - -previous_configs(CustomConfigs) -> - merge(previous_default_configs(), CustomConfigs). - -default_configs() -> - [{riak, riak_config()}, - {stanchion, stanchion_config()}, - {cs, cs_config()}]. - -previous_default_configs() -> - [{riak, previous_riak_config()}, - {stanchion, previous_stanchion_config()}, - {cs, previous_cs_config()}]. - -pb_port(N) when is_integer(N) -> - 10000 + (N * 10) + 7; -pb_port(Node) -> - pb_port(rtcs_dev:node_id(Node)). - -cs_port(N) when is_integer(N) -> - 15008 + 10 * N; -cs_port(Node) -> - cs_port(rtcs_dev:node_id(Node)). - -stanchion_port() -> 9095. - -riak_conf() -> - [{"ring_size", "8"}, - {"buckets.default.allow_mult", "true"}, - {"buckets.default.merge_strategy", "2"}]. - -riak_config(CustomConfig) -> - orddict:merge(fun(_, LHS, RHS) -> LHS ++ RHS end, - orddict:from_list(lists:sort(CustomConfig)), - orddict:from_list(lists:sort(riak_config()))). - -riak_config() -> - riak_config( - current, - ?CS_CURRENT, - rt_config:get(build_type, oss), - rt_config:get(backend, {multi_backend, bitcask})). - -riak_config(Vsn, CsVsn, oss, Backend) -> - riak_oss_config(Vsn, CsVsn, Backend); -riak_config(Vsn, CsVsn, ee, Backend) -> - riak_ee_config(Vsn, CsVsn, Backend). - -riak_oss_config(Vsn, CsVsn, Backend) -> - CSPath = rt_config:get(CsVsn), - AddPaths = filelib:wildcard(CSPath ++ "/dev/dev1/lib/riak_cs*/ebin"), - [ - lager_config(), - riak_core_config(Vsn), - {riak_api, - [{pb_backlog, 256}]}, - {riak_kv, - [{add_paths, AddPaths}] ++ - backend_config(CsVsn, Backend) - } - ]. - -riak_core_config(current) -> - {riak_core, []}; -riak_core_config(previous) -> - {riak_core, - [{default_bucket_props, [{allow_mult, true}]}, - {ring_creation_size, 8}] - }. - -backend_config(_CsVsn, memory) -> - [{storage_backend, riak_kv_memory_backend}]; -backend_config(_CsVsn, {multi_backend, BlocksBackend}) -> - [ - {storage_backend, riak_cs_kv_multi_backend}, - {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]}, - {multi_backend_default, be_default}, - {multi_backend, - [{be_default, riak_kv_eleveldb_backend, - [ - {max_open_files, 20}, - {data_root, "./data/leveldb"} - ]}, - blocks_backend_config(BlocksBackend) - ]} - ]; -backend_config(?CS_CURRENT, prefix_multi) -> - [ - {storage_backend, riak_kv_multi_prefix_backend}, - {riak_cs_version, 20000} - ]; -backend_config(OlderCsVsn, prefix_multi) -> - backend_config(OlderCsVsn, {multi_backend, bitcask}). - -blocks_backend_config(fs) -> - {be_blocks, riak_kv_fs2_backend, [{data_root, "./data/fs2"}, - {block_size, 1050000}]}; -blocks_backend_config(_) -> - {be_blocks, riak_kv_bitcask_backend, [{data_root, "./data/bitcask"}]}. - -riak_ee_config(Vsn, CsVsn, Backend) -> - [repl_config() | riak_oss_config(Vsn, CsVsn, Backend)]. - -repl_config() -> - {riak_repl, - [ - {fullsync_on_connect, false}, - {fullsync_interval, disabled}, - {proxy_get, enabled} - ]}. - -previous_riak_config() -> - riak_config( - previous, - ?CS_PREVIOUS, - rt_config:get(build_type, oss), - rt_config:get(backend, {multi_backend, bitcask})). - -previous_riak_config(CustomConfig) -> - orddict:merge(fun(_, LHS, RHS) -> LHS ++ RHS end, - orddict:from_list(lists:sort(CustomConfig)), - orddict:from_list(lists:sort(previous_riak_config()))). - -previous_cs_config() -> - previous_cs_config([], []). - -previous_cs_config(UserExtra) -> - previous_cs_config(UserExtra, []). - -previous_cs_config(UserExtra, OtherApps) -> - [ - lager_config(), - {riak_cs, - UserExtra ++ - [ - {connection_pools, - [ - {request_pool, {request_pool_size(), 0} }, - {bucket_list_pool, {bucket_list_pool_size(), 0} } - ]}, - {block_get_max_retries, 1}, - {proxy_get, enabled}, - {anonymous_user_creation, true}, - {riak_pb_port, 10017}, - {stanchion_port, stanchion_port()}, - {cs_version, 010300} - ] - }] ++ OtherApps. - -cs_config() -> - cs_config([], []). - -cs_config(UserExtra) -> - cs_config(UserExtra, []). - -cs_config(UserExtra, OtherApps) -> - [ - lager_config(), - {riak_cs, - UserExtra ++ - [ - {connection_pools, - [ - {request_pool, {request_pool_size(), 0} }, - {bucket_list_pool, {bucket_list_pool_size(), 0} } - ]}, - {block_get_max_retries, 1}, - {proxy_get, enabled}, - {anonymous_user_creation, true}, - {stanchion_host, {"127.0.0.1", stanchion_port()}}, - {riak_host, {"127.0.0.1", 10017}}, - {cs_version, 010300} - ] - }] ++ OtherApps. - -replace(Key, Value, Config0) -> - Config1 = proplists:delete(Key, Config0), - [proplists:property(Key, Value)|Config1]. - -previous_stanchion_config() -> - [ - lager_config(), - {stanchion, - [ - {stanchion_port, stanchion_port()}, - {riak_pb_port, 10017} - ] - }]. - -stanchion_config() -> - [ - lager_config(), - {stanchion, - [ - {host, {"127.0.0.1", stanchion_port()}}, - {riak_host, {"127.0.0.1", 10017}} - ] - }]. - -lager_config() -> - {lager, - [ - {handlers, - [ - {lager_file_backend, - [ - {"./log/error.log", error, 10485760, "$D0",5}, - {"./log/console.log", rt_config:get(console_log_level, debug), - 10485760, "$D0", 5} - ]} - ]} - ]}. - -riak_bitcaskroot(Prefix, N) -> - io_lib:format("~s/dev/dev~b/data/bitcask", [Prefix, N]). - -riak_binpath(Prefix, N) -> - io_lib:format("~s/dev/dev~b/bin/riak", [Prefix, N]). - -riakcmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s ~s", [riak_binpath(Path, N), Cmd])). - -riakcs_home(Prefix, N) -> - io_lib:format("~s/dev/dev~b/", [Prefix, N]). - -riakcs_binpath(Prefix, N) -> - io_lib:format("~s/dev/dev~b/bin/riak-cs", [Prefix, N]). - -riakcs_etcpath(Prefix, N) -> - io_lib:format("~s/dev/dev~b/etc", [Prefix, N]). - -riakcs_libpath(Prefix, N) -> - io_lib:format("~s/dev/dev~b/lib", [Prefix, N]). - -riakcs_logpath(Prefix, N, File) -> - io_lib:format("~s/dev/dev~b/log/~s", [Prefix, N, File]). - -riakcscmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s ~s", [riakcs_binpath(Path, N), Cmd])). - -riakcs_statuscmd(Path, N) -> - lists:flatten(io_lib:format("~s-admin status", [riakcs_binpath(Path, N)])). - -riakcs_switchcmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s-admin stanchion ~s", [riakcs_binpath(Path, N), Cmd])). - -riakcs_gccmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s-admin gc ~s", [riakcs_binpath(Path, N), Cmd])). - -riakcs_accesscmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s-admin access ~s", [riakcs_binpath(Path, N), Cmd])). - -riakcs_storagecmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s-admin storage ~s", [riakcs_binpath(Path, N), Cmd])). - -stanchion_binpath(Prefix) -> - io_lib:format("~s/dev/stanchion/bin/stanchion", [Prefix]). - -stanchion_etcpath(Prefix) -> - io_lib:format("~s/dev/stanchion/etc", [Prefix]). - -stanchioncmd(Path, Cmd) -> - lists:flatten(io_lib:format("~s ~s", [stanchion_binpath(Path), Cmd])). - -stanchion_statuscmd(Path) -> - lists:flatten(io_lib:format("~s-admin status", [stanchion_binpath(Path)])). - -cs_current() -> - ?CS_CURRENT. - -stanchion_current() -> - ?STANCHION_CURRENT. - -devpath(riak, current) -> - case rt_config:get(build_type, oss) of - oss -> rt_config:get(?RIAK_CURRENT); - ee -> rt_config:get(?EE_CURRENT) - end; -devpath(riak, previous) -> - case rt_config:get(build_type, oss) of - oss -> rt_config:get(?RIAK_PREVIOUS); - ee -> rt_config:get(?EE_PREVIOUS) - end; -devpath(cs, current) -> rt_config:get(?CS_CURRENT); -devpath(cs, previous) -> rt_config:get(?CS_PREVIOUS); -devpath(stanchion, current) -> rt_config:get(?STANCHION_CURRENT); -devpath(stanchion, previous) -> rt_config:get(?STANCHION_PREVIOUS). - -set_configs(NumNodes, Config, Vsn) -> - rtcs:set_conf({riak, Vsn}, riak_conf()), - rt:pmap(fun(N) -> - rtcs_dev:update_app_config(rtcs:riak_node(N), - proplists:get_value(riak, Config)), - update_cs_config(devpath(cs, Vsn), N, - proplists:get_value(cs, Config)) - end, - lists:seq(1, NumNodes)), - update_stanchion_config(devpath(stanchion, Vsn), - proplists:get_value(stanchion, Config)), - enable_zdbbl(Vsn). - -read_config(Vsn, N, Who) -> - Prefix = devpath(Who, Vsn), - EtcPath = case Who of - cs -> riakcs_etcpath(Prefix, N); - stanchion -> stanchion_etcpath(Prefix) - end, - case file:consult(EtcPath ++ "/advanced.config") of - {ok, [Config]} -> - Config; - {error, enoent}-> - {ok, [Config]} = file:consult(EtcPath ++ "/app.config"), - Config - end. - -update_cs_config(Prefix, N, Config, {AdminKey, _AdminSecret}) -> - CSSection = proplists:get_value(riak_cs, Config), - UpdConfig = [{riak_cs, update_admin_creds(CSSection, AdminKey)} | - proplists:delete(riak_cs, Config)], - update_cs_config(Prefix, N, UpdConfig). - -update_cs_config(Prefix, N, Config) -> - CSSection = proplists:get_value(riak_cs, Config), - UpdConfig = [{riak_cs, update_cs_port(CSSection, N)} | - proplists:delete(riak_cs, Config)], - update_app_config(riakcs_etcpath(Prefix, N), UpdConfig). - -update_admin_creds(Config, AdminKey) -> - [{admin_key, AdminKey}| - proplists:delete(admin_key, Config)]. - -update_cs_port(Config, N) -> - Config2 = [{riak_host, {"127.0.0.1", pb_port(N)}} | proplists:delete(riak_host, Config)], - [{listener, {"127.0.0.1", cs_port(N)}} | proplists:delete(listener, Config2)]. - -update_stanchion_config(Prefix, Config, {AdminKey, _AdminSecret}) -> - StanchionSection = proplists:get_value(stanchion, Config), - UpdConfig = [{stanchion, update_admin_creds(StanchionSection, AdminKey)} | - proplists:delete(stanchion, Config)], - update_stanchion_config(Prefix, UpdConfig). - -update_stanchion_config(Prefix, Config) -> - update_app_config(stanchion_etcpath(Prefix), Config). - -update_app_config(Path, Config) -> - lager:debug("rtcs:update_app_config(~s,~p)", [Path, Config]), - FileFormatString = "~s/~s.config", - AppConfigFile = io_lib:format(FileFormatString, [Path, "app"]), - AdvConfigFile = io_lib:format(FileFormatString, [Path, "advanced"]), - %% If there's an app.config, do it old style - %% if not, use cuttlefish's adavnced.config - case filelib:is_file(AppConfigFile) of - true -> - rtcs_dev:update_app_config_file(AppConfigFile, Config); - _ -> - rtcs_dev:update_app_config_file(AdvConfigFile, Config) - end. - -enable_zdbbl(Vsn) -> - Fs = filelib:wildcard(filename:join([devpath(riak, Vsn), - "dev", "dev*", "etc", "vm.args"])), - lager:info("rtcs:enable_zdbbl for vm.args : ~p~n", [Fs]), - [os:cmd("sed -i -e 's/##+zdbbl /+zdbbl /g' " ++ F) || F <- Fs], - ok. - -merge(BaseConfig, undefined) -> - BaseConfig; -merge(BaseConfig, Config) -> - lager:debug("Merging Config: BaseConfig=~p", [BaseConfig]), - lager:debug("Merging Config: Config=~p", [Config]), - MergeA = orddict:from_list(Config), - MergeB = orddict:from_list(BaseConfig), - MergedConfig = orddict:merge(fun internal_merge/3, MergeA, MergeB), - lager:debug("Merged config: ~p", [MergedConfig]), - MergedConfig. - -internal_merge(_Key, [{_, _}|_] = VarsA, [{_, _}|_] = VarsB) -> - MergeC = orddict:from_list(VarsA), - MergeD = orddict:from_list(VarsB), - orddict:merge(fun internal_merge/3, MergeC, MergeD); -internal_merge(_Key, VarsA, _VarsB) -> - VarsA. - -%% @doc update current app.config, assuming CS is already stopped -upgrade_cs(N, AdminCreds) -> - migrate_cs(previous, current, N, AdminCreds). - -%% @doc update config file from `From' to `To' version. -migrate_cs(From, To, N, AdminCreds) -> - migrate(From, To, N, AdminCreds, cs). - -migrate(From, To, N, AdminCreds, Who) when - (From =:= current andalso To =:= previous) - orelse ( From =:= previous andalso To =:= current) -> - Config0 = read_config(From, N, Who), - Config1 = migrate_config(From, To, Config0, Who), - Prefix = devpath(Who, To), - lager:debug("migrating ~s => ~s", [devpath(Who, From), Prefix]), - case Who of - cs -> update_cs_config(Prefix, N, Config1, AdminCreds); - stanchion -> update_stanchion_config(Prefix, Config1, AdminCreds) - end. - -migrate_stanchion(From, To, AdminCreds) -> - migrate(From, To, -1, AdminCreds, stanchion). - -migrate_config(previous, current, Conf, stanchion) -> - {AddList, RemoveList} = diff_config(stanchion_config(), - previous_stanchion_config()), - migrate_config(Conf, AddList, RemoveList); -migrate_config(current, previous, Conf, stanchion) -> - {AddList, RemoveList} = diff_config(previous_stanchion_config(), - stanchion_config()), - migrate_config(Conf, AddList, RemoveList); -migrate_config(previous, current, Conf, cs) -> - {AddList, RemoveList} = diff_config(cs_config([{anonymous_user_creation, false}]), - previous_cs_config()), - migrate_config(Conf, AddList, RemoveList); -migrate_config(current, previous, Conf, cs) -> - {AddList, RemoveList} = diff_config(previous_cs_config(), cs_config()), - migrate_config(Conf, AddList, RemoveList). - -migrate_config(Conf0, AddList, RemoveList) -> - RemoveFun = fun(Key, Config) -> - InnerConf0 = proplists:get_value(Key, Config), - InnerRemoveList = proplists:get_value(Key, RemoveList), - InnerConf1 = lists:foldl(fun proplists:delete/2, - InnerConf0, - proplists:get_keys(InnerRemoveList)), - replace(Key, InnerConf1, Config) - end, - Conf1 = lists:foldl(RemoveFun, Conf0, proplists:get_keys(RemoveList)), - - AddFun = fun(Key, Config) -> - InnerConf = proplists:get_value(Key, Config) - ++ proplists:get_value(Key, AddList), - replace(Key, InnerConf, Config) - end, - lists:foldl(AddFun, Conf1, proplists:get_keys(AddList)). - -diff_config(Conf, BaseConf)-> - Keys = lists:umerge(proplists:get_keys(Conf), - proplists:get_keys(BaseConf)), - - Fun = fun(Key, {AddList, RemoveList}) -> - {Add, Remove} = diff_props(proplists:get_value(Key,Conf), - proplists:get_value(Key, BaseConf)), - case {Add, Remove} of - {[], []} -> - {AddList, RemoveList}; - {{}, Remove} -> - {AddList, RemoveList++[{Key, Remove}]}; - {Add, []} -> - {AddList++[{Key, Add}], RemoveList}; - {Add, Remove} -> - {AddList++[{Key, Add}], RemoveList++[{Key, Remove}]} - end - end, - lists:foldl(Fun, {[], []}, Keys). - -diff_props(undefined, BaseProps) -> - {[], BaseProps}; -diff_props(Props, undefined) -> - {Props, []}; -diff_props(Props, BaseProps) -> - Keys = lists:umerge(proplists:get_keys(Props), - proplists:get_keys(BaseProps)), - Fun = fun(Key, {Add, Remove}) -> - Values = {proplists:get_value(Key, Props), - proplists:get_value(Key, BaseProps)}, - case Values of - {undefined, V2} -> - {Add, Remove++[{Key, V2}]}; - {V1, undefined} -> - {Add++[{Key, V1}], Remove}; - {V, V} -> - {Add, Remove}; - {V1, V2} -> - {Add++[{Key, V1}], Remove++[{Key, V2}]} - end - end, - lists:foldl(Fun, {[], []}, Keys). - diff --git a/riak_test/src/rtcs_dev.erl b/riak_test/src/rtcs_dev.erl deleted file mode 100644 index fec433a6f..000000000 --- a/riak_test/src/rtcs_dev.erl +++ /dev/null @@ -1,522 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2013-2016 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% ------------------------------------------------------------------- - -%% @private --module(rtcs_dev). --compile(export_all). --include_lib("eunit/include/eunit.hrl"). - --define(BUILD_PATHS, (rt_config:get(build_paths))). --define(SRC_PATHS, (rt_config:get(src_paths))). - --define(RIAK_ROOT, <<"build_paths.root">>). --define(EE_ROOT, <<"build_paths.ee_root">>). --define(CS_ROOT, <<"build_paths.cs_root">>). --define(STANCHION_ROOT, <<"build_paths.stanchion_root">>). - -get_deps() -> - lists:flatten(io_lib:format("~s/dev/dev1/lib", [relpath(current)])). - -setup_harness(_Test, _Args) -> - confirm_build_type(rt_config:get(build_type, oss)), - %% Stop all discoverable nodes, not just nodes we'll be using for this test. - rt:pmap(fun(X) -> stop_all(X ++ "/dev") end, devpaths()), - - %% Reset nodes to base state - reset_cluster(), - - lager:info("Cleaning up lingering pipe directories"), - rt:pmap(fun(Dir) -> - %% when joining two absolute paths, filename:join intentionally - %% throws away the first one. ++ gets us around that, while - %% keeping some of the security of filename:join. - %% the extra slashes will be pruned by filename:join, but this - %% ensures that there will be at least one between "/tmp" and Dir - PipeDir = filename:join(["/tmp//" ++ Dir, "dev"]), - %% when using filelib:wildcard/2, there must be a wildchar char - %% before the first '/'. - Files = filelib:wildcard("dev?/*.{r,w}", PipeDir), - [ file:delete(filename:join(PipeDir, File)) || File <- Files], - file:del_dir(PipeDir) - end, devpaths()), - ok. - -confirm_build_type(BuildType) -> - [ok = confirm_build_type(BuildType, Vsn) || Vsn <- [cs_current, cs_previous]]. - -confirm_build_type(BuildType, Vsn) -> - ReplPB = filename:join([relpath(Vsn), "dev/dev1/lib/riak_repl_pb_api*"]), - case {BuildType, filelib:wildcard(ReplPB)} of - {oss, []} -> ok; - {ee, [_|_]} -> ok; - _ -> - lager:error("Build type of ~p is not ~p", - [Vsn, BuildType]), - {error, {build_type_mismatch, Vsn}} - end. - -relpath(Vsn) -> - Path = ?BUILD_PATHS, - path(Vsn, Path). - -srcpath(Vsn) -> - Path = ?SRC_PATHS, - path(Vsn, Path). - -path(Key, [{Key, Path} | _]) -> - Path; -path(Key, [{_, _} | Paths]) -> - path(Key, Paths); -path(current, Path) -> - Path; -path(root, Path) -> - Path; -path(Key, _) -> - Err = io_lib:format("Path '~p' requested but no value provided", [Key]), - throw(lists:flatten(Err)). - -upgrade(Node, NewVersion) -> - N = node_id(Node), - Version = node_version(N), - lager:info("Upgrading ~p : ~p -> ~p", [Node, Version, NewVersion]), - catch stop(Node), - rt:wait_until_unpingable(Node), - OldPath = relpath(Version), - NewPath = relpath(NewVersion), - - Commands = [ - io_lib:format("cp -p -P -R \"~s/dev/dev~b/data\" \"~s/dev/dev~b\"", - [OldPath, N, NewPath, N]), - io_lib:format("rm -rf ~s/dev/dev~b/data/*", - [OldPath, N]), - io_lib:format("cp -p -P -R \"~s/dev/dev~b/etc\" \"~s/dev/dev~b\"", - [OldPath, N, NewPath, N]) - ], - [ begin - lager:info("Running: ~s", [Cmd]), - os:cmd(Cmd) - end || Cmd <- Commands], - VersionMap = orddict:store(N, NewVersion, rt_config:get(rt_versions)), - rt_config:set(rt_versions, VersionMap), - start(Node), - rt:wait_until_pingable(Node), - ok. - --spec riak_root_and_vsn(atom(), atom()) -> {binary(), atom()}. -riak_root_and_vsn(current, oss) -> {?RIAK_ROOT, current}; -riak_root_and_vsn(current, ee) -> {?EE_ROOT, ee_current}; -riak_root_and_vsn(previous, oss) -> {?RIAK_ROOT, previous}; -riak_root_and_vsn(previous, ee) -> {?EE_ROOT, ee_previous}. - --spec reset_cluster() -> ok. -reset_cluster() -> - [reset_nodes(Project, Path) || - {Project, Path} <- [{riak, rt_config:get(?RIAK_ROOT)}, - {riak_ee, rt_config:get(?EE_ROOT)}, - {riak_cs, rt_config:get(?CS_ROOT)}, - {stanchion, rt_config:get(?STANCHION_ROOT)}]], - ok. - --spec reset_nodes(atom(), string()) -> ok. -reset_nodes(Project, Path) -> - %% Reset nodes to base state - lager:info("Resetting ~p nodes to fresh state", [Project]), - lager:debug("Project path for reset: ~p", [Path]), - rtdev:run_git(Path, "reset HEAD --hard"), - rtdev:run_git(Path, "clean -fd"), - ok. - -get_conf(Node) -> - N = node_id(Node), - Path = relpath(node_version(N)), - get_conf(Path, N). - -get_conf(DevPath, N) -> - WildCard = io_lib:format("~s/dev/dev~b/etc/*.conf", [DevPath, N]), - [Conf] = filelib:wildcard(WildCard), - Conf. - -get_app_config(Node) -> - N = node_id(Node), - Path = relpath(node_version(N)), - get_conf(Path, N). - -get_app_config(DevPath, N) -> - WildCard = io_lib:format("~s/dev/dev~b/etc/a*.config", [DevPath, N]), - [Conf] = filelib:wildcard(WildCard), - Conf. - -all_the_app_configs(DevPath) -> - lager:error("The dev path is ~p", [DevPath]), - case filelib:is_dir(DevPath) of - true -> - Devs = filelib:wildcard(DevPath ++ "/dev/dev*"), - [ Dev ++ "/etc/app.config" || Dev <- Devs]; - _ -> - lager:debug("~s is not a directory.", [DevPath]), - [] - end. - -update_app_config(all, Config) -> - lager:info("rtcs_dev:update_app_config(all, ~p)", [Config]), - [ update_app_config(DevPath, Config) || DevPath <- devpaths()]; -update_app_config(Node, Config) when is_atom(Node) -> - N = node_id(Node), - Path = relpath(node_version(N)), - FileFormatString = "~s/dev/dev~b/etc/~s.config", - - AppConfigFile = io_lib:format(FileFormatString, [Path, N, "app"]), - AdvConfigFile = io_lib:format(FileFormatString, [Path, N, "advanced"]), - %% If there's an app.config, do it old style - %% if not, use cuttlefish's adavnced.config - case filelib:is_file(AppConfigFile) of - true -> - update_app_config_file(AppConfigFile, Config); - _ -> - update_app_config_file(AdvConfigFile, Config) - end; -update_app_config(DevPath, Config) -> - [update_app_config_file(AppConfig, Config) || AppConfig <- all_the_app_configs(DevPath)]. - -update_app_config_file(ConfigFile, Config) -> - lager:info("rtcs_dev:update_app_config_file(~s, ~p)", [ConfigFile, Config]), - - BaseConfig = case file:consult(ConfigFile) of - {ok, [ValidConfig]} -> - ValidConfig; - {error, enoent} -> - [] - end, - MergeA = orddict:from_list(Config), - MergeB = orddict:from_list(BaseConfig), - NewConfig = - orddict:merge(fun(_, VarsA, VarsB) -> - MergeC = orddict:from_list(VarsA), - MergeD = orddict:from_list(VarsB), - orddict:merge(fun(_, ValA, _ValB) -> - ValA - end, MergeC, MergeD) - end, MergeA, MergeB), - NewConfigOut = io_lib:format("~p.", [NewConfig]), - ?assertEqual(ok, file:write_file(ConfigFile, NewConfigOut)), - ok. - -%% Appropriate backend will be set by rtcs later. -get_backends() -> - cs_multi_backend. - -node_path(Node) -> - N = node_id(Node), - Path = relpath(node_version(N)), - lists:flatten(io_lib:format("~s/dev/dev~b", [Path, N])). - -create_dirs(Nodes) -> - Snmp = [node_path(Node) ++ "/data/snmp/agent/db" || Node <- Nodes], - [?assertCmd("mkdir -p " ++ Dir) || Dir <- Snmp]. - -clean_data_dir(Nodes, SubDir) when is_list(Nodes) -> - DataDirs = [node_path(Node) ++ "/data/" ++ SubDir || Node <- Nodes], - lists:foreach(fun rm_dir/1, DataDirs). - -rm_dir(Dir) -> - lager:info("Removing directory ~s", [Dir]), - ?assertCmd("rm -rf " ++ Dir), - ?assertEqual(false, filelib:is_dir(Dir)). - -add_default_node_config(Nodes) -> - case rt_config:get(rt_default_config, undefined) of - undefined -> ok; - Defaults when is_list(Defaults) -> - rt:pmap(fun(Node) -> - update_app_config(Node, Defaults) - end, Nodes), - ok; - BadValue -> - lager:error("Invalid value for rt_default_config : ~p", [BadValue]), - throw({invalid_config, {rt_default_config, BadValue}}) - end. - -stop_all(DevPath) -> - case filelib:is_dir(DevPath) of - true -> - Devs = filelib:wildcard(DevPath ++ "/{dev,stanchion}*"), - - %% Works, but I'd like it to brag a little more about it. - Stop = fun(C) -> - Cmd = stop_command(C), - [Output | _Tail] = string:tokens(os:cmd(Cmd), "\n"), - Status = case Output of - "ok" -> "ok"; - _ -> "wasn't running" - end, - lager:info("Stopping Node... ~s ~~ ~s.", [Cmd, Status]) - end, - [Stop(D) || D <- Devs]; - _ -> lager:info("~s is not a directory.", [DevPath]) - end, - ok. - -stop_command(C) -> - IsRiakCS = string:str(C, "riak_cs"), - IsStanchion = string:str(C, "stanchion"), - if - IsRiakCS > 0 -> - C ++ "/bin/riak-cs stop"; - IsStanchion > 0 -> - C ++ "/bin/stanchion stop"; - true -> - C ++ "/bin/riak stop" - end. - -stop(Node) -> - RiakPid = rpc:call(Node, os, getpid, []), - N = node_id(Node), - rtdev:run_riak(N, relpath(node_version(N)), "stop"), - F = fun(_N) -> - os:cmd("kill -0 " ++ RiakPid) =/= [] - end, - ?assertEqual(ok, rt:wait_until(Node, F)), - ok. - -start(Node) -> - N = node_id(Node), - rtdev:run_riak(N, relpath(node_version(N)), "start"), - ok. - -attach(Node, Expected) -> - interactive(Node, "attach", Expected). - -attach_direct(Node, Expected) -> - interactive(Node, "attach-direct", Expected). - -console(Node, Expected) -> - interactive(Node, "console", Expected). - -interactive(Node, Command, Exp) -> - N = node_id(Node), - Path = relpath(node_version(N)), - Cmd = rtdev:riakcmd(Path, N, Command), - lager:info("Opening a port for riak ~s.", [Command]), - lager:debug("Calling open_port with cmd ~s", [binary_to_list(iolist_to_binary(Cmd))]), - P = open_port({spawn, binary_to_list(iolist_to_binary(Cmd))}, - [stream, use_stdio, exit_status, binary, stderr_to_stdout]), - interactive_loop(P, Exp). - -interactive_loop(Port, Expected) -> - receive - {Port, {data, Data}} -> - %% We've gotten some data, so the port isn't done executing - %% Let's break it up by newline and display it. - Tokens = string:tokens(binary_to_list(Data), "\n"), - [lager:debug("~s", [Text]) || Text <- Tokens], - - %% Now we're going to take hd(Expected) which is either {expect, X} - %% or {send, X}. If it's {expect, X}, we foldl through the Tokenized - %% data looking for a partial match via rt:str/2. If we find one, - %% we pop hd off the stack and continue iterating through the list - %% with the next hd until we run out of input. Once hd is a tuple - %% {send, X}, we send that test to the port. The assumption is that - %% once we send data, anything else we still have in the buffer is - %% meaningless, so we skip it. That's what that {sent, sent} thing - %% is about. If there were a way to abort mid-foldl, I'd have done - %% that. {sent, _} -> is just a pass through to get out of the fold. - - NewExpected = lists:foldl(fun(X, Expect) -> - [{Type, Text}|RemainingExpect] = case Expect of - [] -> [{done, "done"}|[]]; - E -> E - end, - case {Type, rt:str(X, Text)} of - {expect, true} -> - RemainingExpect; - {expect, false} -> - [{Type, Text}|RemainingExpect]; - {send, _} -> - port_command(Port, list_to_binary(Text ++ "\n")), - [{sent, "sent"}|RemainingExpect]; - {sent, _} -> - Expect; - {done, _} -> - [] - end - end, Expected, Tokens), - %% Now that the fold is over, we should remove {sent, sent} if it's there. - %% The fold might have ended not matching anything or not sending anything - %% so it's possible we don't have to remove {sent, sent}. This will be passed - %% to interactive_loop's next iteration. - NewerExpected = case NewExpected of - [{sent, "sent"}|E] -> E; - E -> E - end, - %% If NewerExpected is empty, we've met all expected criteria and in order to boot - %% Otherwise, loop. - case NewerExpected of - [] -> ?assert(true); - _ -> interactive_loop(Port, NewerExpected) - end; - {Port, {exit_status,_}} -> - %% This port has exited. Maybe the last thing we did was {send, [4]} which - %% as Ctrl-D would have exited the console. If Expected is empty, then - %% We've met every expectation. Yay! If not, it means we've exited before - %% something expected happened. - ?assertEqual([], Expected) - after rt_config:get(rt_max_wait_time) -> - %% interactive_loop is going to wait until it matches expected behavior - %% If it doesn't, the test should fail; however, without a timeout it - %% will just hang forever in search of expected behavior. See also: Parenting - ?assertEqual([], Expected) - end. - -admin(Node, Args, Options) -> - N = node_id(Node), - Path = relpath(node_version(N)), - Cmd = rtdev:riak_admin_cmd(Path, N, Args), - lager:info("Running: ~s", [Cmd]), - Result = execute_admin_cmd(Cmd, Options), - lager:info("~s", [Result]), - {ok, Result}. - -execute_admin_cmd(Cmd, Options) -> - {_ExitCode, Result} = FullResult = wait_for_cmd(spawn_cmd(Cmd)), - case lists:member(return_exit_code, Options) of - true -> - FullResult; - false -> - Result - end. - -riak(Node, Args) -> - N = node_id(Node), - Path = relpath(node_version(N)), - Result = rtdev:run_riak(N, Path, Args), - lager:info("~s", [Result]), - {ok, Result}. - -node_id(Node) -> - NodeMap = rt_config:get(rt_nodes), - orddict:fetch(Node, NodeMap). - -node_version(N) -> - VersionMap = rt_config:get(rt_versions), - orddict:fetch(N, VersionMap). - -spawn_cmd(Cmd) -> - spawn_cmd(Cmd, []). -spawn_cmd(Cmd, Opts) -> - Port = open_port({spawn, Cmd}, [stream, in, exit_status, stderr_to_stdout] ++ Opts), - Port. - -wait_for_cmd(Port) -> - rt:wait_until(node(), - fun(_) -> - receive - {Port, Msg={data, _}} -> - self() ! {Port, Msg}, - false; - {Port, Msg={exit_status, _}} -> - catch port_close(Port), - self() ! {Port, Msg}, - true - after 0 -> - false - end - end), - get_cmd_result(Port, []). - -cmd(Cmd) -> - cmd(Cmd, []). - -cmd(Cmd, Opts) -> - wait_for_cmd(spawn_cmd(Cmd, Opts)). - -get_cmd_result(Port, Acc) -> - receive - {Port, {data, Bytes}} -> - get_cmd_result(Port, [Bytes|Acc]); - {Port, {exit_status, Status}} -> - Output = lists:flatten(lists:reverse(Acc)), - {Status, Output} - after 0 -> - timeout - end. - -check_node({_N, Version}) -> - case proplists:is_defined(Version, rt_config:get(build_paths)) of - true -> ok; - _ -> - lager:error("You don't have Riak ~s installed or configured", [Version]), - erlang:error("You don't have Riak " ++ atom_to_list(Version) ++ " installed or configured") - end. - -set_backend(Backend) -> - lager:info("rtcs_dev:set_backend(~p)", [Backend]), - update_app_config(all, [{riak_kv, [{storage_backend, Backend}]}]), - get_backends(). - -get_version() -> - case file:read_file(relpath(cs_current) ++ "/VERSION") of - {error, enoent} -> unknown; - {ok, Version} -> Version - end. - -teardown() -> - %% Stop all discoverable nodes, not just nodes we'll be using for this test. - rt:pmap(fun(X) -> stop_all(X ++ "/dev") end, - devpaths()). - -whats_up() -> - io:format("Here's what's running...~n"), - - Up = [rpc:call(Node, os, cmd, ["pwd"]) || Node <- nodes()], - [io:format(" ~s~n",[string:substr(Dir, 1, length(Dir)-1)]) || Dir <- Up]. - -devpaths() -> - lists:usort([ DevPath || {Name, DevPath} <- rt_config:get(build_paths), - not lists:member(Name, [root, ee_root, cs_root, stanchion_root]) - ]). - -all_the_files(DevPath, File) -> - case filelib:is_dir(DevPath) of - true -> - Wildcard = io_lib:format("~s/dev/*/~s", [DevPath, File]), - filelib:wildcard(Wildcard); - _ -> - lager:debug("~s is not a directory.", [DevPath]), - [] - end. - -devpath(Name, Vsn) -> - rtcs_config:devpath(Name, Vsn). - -versions() -> - proplists:get_keys(rt_config:get(build_paths)) -- [root]. - -get_node_logs() -> - lists:flatmap(fun get_node_logs/1, [root, ee_root, cs_root, stanchion_root]). - -get_node_logs(Base) -> - Root = filename:absname(proplists:get_value(Base, ?BUILD_PATHS)), - %% Unlike Riak, Riak CS has multiple things in the root and so we need - %% to distinguish between them. - RootLen = length(filename:dirname(Root)) + 1, %% Remove the leading slash - [ begin - {ok, Port} = file:open(Filename, [read, binary]), - {lists:nthtail(RootLen, Filename), Port} - end || Filename <- filelib:wildcard(Root ++ "/*/dev/dev*/log/*") ]. diff --git a/riak_test/src/rtcs_exec.erl b/riak_test/src/rtcs_exec.erl deleted file mode 100644 index 4464fa9b4..000000000 --- a/riak_test/src/rtcs_exec.erl +++ /dev/null @@ -1,277 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- --module(rtcs_exec). --compile(export_all). - -start_cs_and_stanchion_nodes(NodeList, Vsn) -> - rt:pmap(fun({_CSNode, RiakNode, _Stanchion}) -> - N = rtcs_dev:node_id(RiakNode), - start_stanchion(Vsn), - start_cs(N, Vsn); - ({_CSNode, RiakNode}) -> - N = rtcs_dev:node_id(RiakNode), - start_cs(N, Vsn) - end, NodeList). - -stop_cs_and_stanchion_nodes(NodeList, Vsn) -> - rt:pmap(fun({CSNode, RiakNode, Stanchion}) -> - N = rtcs_dev:node_id(RiakNode), - stop_cs(N, Vsn), - stop_stanchion(Vsn), - rt:wait_until_unpingable(CSNode), - rt:wait_until_unpingable(Stanchion); - ({CSNode, RiakNode}) -> - N = rtcs_dev:node_id(RiakNode), - stop_cs(N, Vsn), - rt:wait_until_unpingable(CSNode) - end, NodeList). - -start_all_nodes(NodeList, Vsn) -> - rt:pmap(fun({_CSNode, RiakNode, _Stanchion}) -> - N = rtcs_dev:node_id(RiakNode), - NodeVersion = rtcs_dev:node_version(N), - lager:debug("starting riak #~p > ~p => ~p", - [N, NodeVersion, - rtcs_dev:relpath(NodeVersion)]), - rtdev:run_riak(N, rtcs_dev:relpath(NodeVersion), "start"), - rt:wait_for_service(RiakNode, riak_kv), - start_stanchion(Vsn), - start_cs(N, Vsn); - ({_CSNode, RiakNode}) -> - N = rtcs_dev:node_id(RiakNode), - rtdev:run_riak(N, rtcs_dev:relpath(rtcs_dev:node_version(N)), "start"), - rt:wait_for_service(RiakNode, riak_kv), - start_cs(N, Vsn) - end, NodeList). - -stop_all_nodes(NodeList, Vsn) -> - rt:pmap(fun({CSNode, RiakNode, Stanchion}) -> - N = rtcs_dev:node_id(RiakNode), - stop_cs(N, Vsn), - stop_stanchion(Vsn), - rtdev:run_riak(N, rtcs_dev:relpath(rtcs_dev:node_version(N)), "stop"), - rt:wait_until_unpingable(CSNode), - rt:wait_until_unpingable(Stanchion), - rt:wait_until_unpingable(RiakNode); - ({CSNode, RiakNode}) -> - N = rtcs_dev:node_id(RiakNode), - stop_cs(N, Vsn), - rtdev:run_riak(N, rtcs_dev:relpath(rtcs_dev:node_version(N)), "stop"), - rt:wait_until_unpingable(CSNode), - rt:wait_until_unpingable(RiakNode) - end, NodeList). - -start_cs(N) -> start_cs(N, current). - -start_cs(N, Vsn) -> - NodePath = rtcs_config:devpath(cs, Vsn), - Cmd = riakcscmd(NodePath, N, "start"), - lager:info("Running ~p", [Cmd]), - R = os:cmd(Cmd), - rtcs:maybe_load_intercepts(rtcs:cs_node(N)), - R. - -stop_cs(N) -> stop_cs(N, current). - -stop_cs(N, Vsn) -> - Cmd = riakcscmd(rtcs_config:devpath(cs, Vsn), N, "stop"), - lager:info("Running ~p", [Cmd]), - os:cmd(Cmd). - -riakcmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s ~s", [riak_binpath(Path, N), Cmd])). - -riakcscmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s ~s", [riakcs_binpath(Path, N), Cmd])). - -riakcs_statuscmd(Path, N) -> - lists:flatten(io_lib:format("~s-admin status", [riakcs_binpath(Path, N)])). - -riakcs_switchcmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s-admin stanchion ~s", [riakcs_binpath(Path, N), Cmd])). - -riakcs_gccmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s-admin gc ~s", [riakcs_binpath(Path, N), Cmd])). - -riakcs_accesscmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s-admin access ~s", [riakcs_binpath(Path, N), Cmd])). - -riakcs_storagecmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s-admin storage ~s", [riakcs_binpath(Path, N), Cmd])). - -riakcs_debugcmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s-debug ~s", [riakcs_binpath(Path, N), Cmd])). - -stanchioncmd(Path, Cmd) -> - lists:flatten(io_lib:format("~s ~s", [stanchion_binpath(Path), Cmd])). - -stanchion_statuscmd(Path) -> - lists:flatten(io_lib:format("~s-admin status", [stanchion_binpath(Path)])). - -riak_bitcaskroot(Prefix, N) -> - io_lib:format("~s/dev/dev~b/data/bitcask", [Prefix, N]). - -riak_binpath(Prefix, N) -> - io_lib:format("~s/dev/dev~b/bin/riak", [Prefix, N]). - -riakcs_home(Prefix, N) -> - io_lib:format("~s/dev/dev~b/", [Prefix, N]). - -riakcs_binpath(Prefix, N) -> - io_lib:format("~s/dev/dev~b/bin/riak-cs", [Prefix, N]). - -riakcs_etcpath(Prefix, N) -> - io_lib:format("~s/dev/dev~b/etc", [Prefix, N]). - -riakcs_libpath(Prefix, N) -> - io_lib:format("~s/dev/dev~b/lib", [Prefix, N]). - -riakcs_logpath(Prefix, N, File) -> - io_lib:format("~s/dev/dev~b/log/~s", [Prefix, N, File]). - -stanchion_binpath(Prefix) -> - io_lib:format("~s/dev/stanchion/bin/stanchion", [Prefix]). - -stanchion_etcpath(Prefix) -> - io_lib:format("~s/dev/stanchion/etc", [Prefix]). - -repair_gc_bucket(N, Options) -> repair_gc_bucket(N, Options, current). - -repair_gc_bucket(N, Options, Vsn) -> - Prefix = rtcs_config:devpath(cs, Vsn), - RepairScriptWild = string:join([riakcs_libpath(Prefix, N), "riak_cs*", - "priv/tools/repair_gc_bucket.erl"] , "/"), - [RepairScript] = filelib:wildcard(RepairScriptWild), - Cmd = riakcscmd(Prefix, N, "escript " ++ RepairScript ++ - " " ++ Options), - lager:info("Running ~p", [Cmd]), - os:cmd(Cmd). - -exec_priv_escript(N, Command, Options) -> - exec_priv_escript(N, Command, Options, cs). - -exec_priv_escript(N, Command, Options, ByWhom) -> - CsPrefix = rtcs_config:devpath(cs, current), - ExecuterPrefix = rtcs_config:devpath(ByWhom, current), - ScriptWild = string:join([riakcs_libpath(CsPrefix, N), "riak_cs*", - "priv/tools/"] , "/"), - [ToolsDir] = filelib:wildcard(ScriptWild), - Cmd = case ByWhom of - cs -> - riakcscmd(ExecuterPrefix, N, "escript " ++ ToolsDir ++ - "/" ++ Command ++ - " " ++ Options); - riak -> - riakcmd(ExecuterPrefix, N, "escript " ++ ToolsDir ++ - "/" ++ Command ++ - " " ++ Options) - end, - lager:info("Running ~p", [Cmd]), - os:cmd(Cmd). - -switch_stanchion_cs(N, Host, Port) -> switch_stanchion_cs(N, Host, Port, current). - -switch_stanchion_cs(N, Host, Port, Vsn) -> - SubCmd = io_lib:format("switch ~s ~p", [Host, Port]), - Cmd = riakcs_switchcmd(rtcs_config:devpath(cs, Vsn), N, SubCmd), - lager:info("Running ~p", [Cmd]), - os:cmd(Cmd). - -show_stanchion_cs(N) -> show_stanchion_cs(N, current). - -show_stanchion_cs(N, Vsn) -> - Cmd = riakcs_switchcmd(rtcs_config:devpath(cs, Vsn), N, "show"), - lager:info("Running ~p", [Cmd]), - os:cmd(Cmd). - -start_stanchion() -> start_stanchion(current). - -start_stanchion(Vsn) -> - Cmd = stanchioncmd(rtcs_config:devpath(stanchion, Vsn), "start"), - lager:info("Running ~p", [Cmd]), - R = os:cmd(Cmd), - rtcs:maybe_load_intercepts(rtcs:stanchion_node()), - R. - -stop_stanchion() -> stop_stanchion(current). - -stop_stanchion(Vsn) -> - Cmd = stanchioncmd(rtcs_config:devpath(stanchion, Vsn), "stop"), - lager:info("Running ~p", [Cmd]), - os:cmd(Cmd). - -flush_access(N) -> flush_access(N, current). - -flush_access(N, Vsn) -> - Cmd = riakcs_accesscmd(rtcs_config:devpath(cs, Vsn), N, "flush"), - lager:info("Running ~p", [Cmd]), - os:cmd(Cmd). - -gc(N, SubCmd) -> gc(N, SubCmd, current). - -gc(N, SubCmd, Vsn) -> - Cmd = riakcs_gccmd(rtcs_config:devpath(cs, Vsn), N, SubCmd), - lager:info("Running ~p", [Cmd]), - os:cmd(Cmd). - -calculate_storage(N) -> calculate_storage(N, current). - -calculate_storage(N, Vsn) -> - Cmd = riakcs_storagecmd(rtcs_config:devpath(cs, Vsn), N, "batch -r"), - lager:info("Running ~p", [Cmd]), - os:cmd(Cmd). - -enable_proxy_get(SrcN, Vsn, SinkCluster) -> - rtdev:run_riak_repl(SrcN, rtcs_config:devpath(riak, Vsn), - "proxy_get enable " ++ SinkCluster). - -disable_proxy_get(SrcN, Vsn, SinkCluster) -> - rtdev:run_riak_repl(SrcN, rtcs_config:devpath(riak, Vsn), - "proxy_get disable " ++ SinkCluster). - -%% TODO: this is added as riak-1.4 branch of riak_test/src/rtcs_dev.erl -%% throws out the return value. Let's get rid of these functions when -%% we entered to Riak CS 2.0 dev, updating to riak_test master branch -cmd(Cmd, Opts) -> - cmd(Cmd, Opts, rt_config:get(rt_max_wait_time)). - -cmd(Cmd, Opts, WaitTime) -> - lager:info("Command: ~s", [Cmd]), - lager:info("Options: ~p", [Opts]), - Port = open_port({spawn_executable, Cmd}, - [in, exit_status, binary, - stream, stderr_to_stdout,{line, 200} | Opts]), - get_cmd_result(Port, WaitTime). - -get_cmd_result(Port, WaitTime) -> - receive - {Port, {data, {Flag, Line}}} when Flag =:= eol orelse Flag =:= noeol -> - lager:info(Line), - get_cmd_result(Port, WaitTime); - {Port, {exit_status, 0}} -> - ok; - {Port, {exit_status, Status}} -> - {error, {exit_status, Status}}; - {Port, Other} -> - lager:warning("Other data from port: ~p", [Other]), - get_cmd_result(Port, WaitTime) - after WaitTime -> - {error, timeout} - end. diff --git a/riak_test/src/rtcs_multipart.erl b/riak_test/src/rtcs_multipart.erl deleted file mode 100644 index d64cd9277..000000000 --- a/riak_test/src/rtcs_multipart.erl +++ /dev/null @@ -1,88 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(rtcs_multipart). - --compile(export_all). --include_lib("eunit/include/eunit.hrl"). - -%% Upload object by multipart and return generetad (=expected) content -multipart_upload(Bucket, Key, Sizes, Config) -> - InitRes = erlcloud_s3_multipart:initiate_upload( - Bucket, Key, "text/plain", [], Config), - UploadId = erlcloud_xml:get_text( - "/InitiateMultipartUploadResult/UploadId", InitRes), - Content = upload_parts(Bucket, Key, UploadId, Config, 1, Sizes, [], []), - Content. - -upload_parts(Bucket, Key, UploadId, Config, _PartCount, [], Contents, Parts) -> - ?assertEqual(ok, erlcloud_s3_multipart:complete_upload( - Bucket, Key, UploadId, lists:reverse(Parts), Config)), - iolist_to_binary(lists:reverse(Contents)); -upload_parts(Bucket, Key, UploadId, Config, PartCount, [Size | Sizes], Contents, Parts) -> - Content = crypto:rand_bytes(Size), - {RespHeaders, _UploadRes} = erlcloud_s3_multipart:upload_part( - Bucket, Key, UploadId, PartCount, Content, Config), - PartEtag = proplists:get_value("ETag", RespHeaders), - lager:debug("UploadId: ~p~n", [UploadId]), - lager:debug("PartEtag: ~p~n", [PartEtag]), - upload_parts(Bucket, Key, UploadId, Config, PartCount + 1, - Sizes, [Content | Contents], [{PartCount, PartEtag} | Parts]). - -upload_part_copy(BucketName, Key, UploadId, PartNum, SrcBucket, SrcKey, Config) -> - upload_part_copy(BucketName, Key, UploadId, PartNum, SrcBucket, SrcKey, undefined, Config). - -upload_part_copy(BucketName, Key, UploadId, PartNum, SrcBucket, SrcKey, SrcRange, Config) -> - Url = "/" ++ Key, - Source = filename:join([SrcBucket, SrcKey]), - Subresources = [{"partNumber", integer_to_list(PartNum)}, - {"uploadId", UploadId}], - Headers = [%%{"content-length", byte_size(PartData)}, - {"x-amz-copy-source", Source} | - source_range(SrcRange)], - erlcloud_s3:s3_request(Config, put, BucketName, Url, - Subresources, [], {<<>>, []}, Headers). - -source_range(undefined) -> []; -source_range({First, Last}) -> - [{"x-amz-copy-source-range", - lists:flatten(io_lib:format("bytes=~b-~b", [First, Last]))}]. - -upload_and_assert_part(Bucket, Key, UploadId, PartNum, PartData, Config) -> - {RespHeaders, _UploadRes} = erlcloud_s3_multipart:upload_part(Bucket, Key, UploadId, PartNum, PartData, Config), - assert_part(Bucket, Key, UploadId, PartNum, Config, RespHeaders). - - -assert_part(Bucket, Key, UploadId, PartNum, Config, RespHeaders) -> - PartEtag = proplists:get_value("ETag", RespHeaders), - PartsTerm = erlcloud_s3_multipart:parts_to_term( - erlcloud_s3_multipart:list_parts(Bucket, Key, UploadId, [], Config)), - %% lager:debug("~p", [PartsTerm]), - Parts = proplists:get_value(parts, PartsTerm), - ?assertEqual(Bucket, proplists:get_value(bucket, PartsTerm)), - ?assertEqual(Key, proplists:get_value(key, PartsTerm)), - ?assertEqual(UploadId, proplists:get_value(upload_id, PartsTerm)), - verify_part(PartEtag, proplists:get_value(PartNum, Parts)), - PartEtag. - -verify_part(_, undefined) -> - ?assert(false); -verify_part(ExpectedEtag, PartInfo) -> - ?assertEqual(ExpectedEtag, proplists:get_value(etag, PartInfo)). diff --git a/riak_test/src/rtcs_object.erl b/riak_test/src/rtcs_object.erl deleted file mode 100644 index 63e3cb46d..000000000 --- a/riak_test/src/rtcs_object.erl +++ /dev/null @@ -1,141 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2016 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(rtcs_object). - --compile(export_all). --include_lib("eunit/include/eunit.hrl"). --include_lib("erlcloud/include/erlcloud_aws.hrl"). - -upload(UserConfig, normal, B, K) -> - Content = crypto:rand_bytes(mb(4)), - erlcloud_s3:put_object(B, K, Content, UserConfig), - {B, K, Content}; -upload(UserConfig, multipart, B, K) -> - Content = rtcs_multipart:multipart_upload(B, K, [mb(10), 400], UserConfig), - {B, K, Content}; -upload(UserConfig, {normal_partial, CL, Actual}, B, K) when is_list(K), - CL >= Actual -> - %% Dumbest handmade S3 PUT Client - %% Send partial payload to the socket and suddenly close - Binary = binary:copy(<<"*">>, Actual), - - %% Fake checksum, this request should fail if all payloads were sent - MD5 = "1B2M2Y8AsgTpgAmY7PhCfg==", - ReqHdr = base_header(B, K, CL, MD5, UserConfig, ""), - lager:info("~s", [iolist_to_binary(ReqHdr)]), - - {Host, Port} = get_config_target_address(UserConfig), - {ok, Sock} = gen_tcp:connect(Host, Port, [{active, false}]), - case gen_tcp:send(Sock, [ReqHdr, $\n, Binary]) of - ok -> - %% Let caller handle the socket call, either close or continue - {ok, Sock}; - Error -> - Error - end; -upload(UserConfig, {https, Size}, B, K) -> - Binary = binary:copy(<<"*">>, Size), - MD5 = base64:encode(crypto:hash(md5, Binary)), - ReqHdr = base_header(B, K, Size, MD5, UserConfig, ""), - send_ssl_request(UserConfig, [ReqHdr, $\n, Binary]). - -upload(UserConfig, normal_copy, B, DstK, SrcK) -> - ?assertEqual([{copy_source_version_id, "false"}, {version_id, "null"}], - erlcloud_s3:copy_object(B, DstK, B, SrcK, UserConfig)); - -upload(UserConfig, https_copy, B, DstK, SrcK) -> - MD5 = "", - CL = 0, - CopyHdr = ["x-amz-copy-source:/", B, "/", SrcK, $\n, - "x-amz-metadata-directive:COPY", $\n], - ReqHdr = base_header(B, DstK, CL, MD5, UserConfig, CopyHdr), - send_ssl_request(UserConfig, [ReqHdr, CopyHdr, $\n]); - -upload(UserConfig, multipart_copy, B, DstK, SrcK) -> - InitUploadRes = erlcloud_s3_multipart:initiate_upload(B, DstK, "text/plain", [], UserConfig), - UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), - - {RespHeaders1, _} = rtcs_multipart:upload_part_copy( - B, DstK, UploadId, 1, B, SrcK, {0, mb(5)-1}, UserConfig), - Etag1 = rtcs_multipart:assert_part(B, DstK, UploadId, 1, UserConfig, RespHeaders1), - {RespHeaders2, _} = rtcs_multipart:upload_part_copy( - B, DstK, UploadId, 2, B, SrcK, {mb(5), mb(10)+400-1}, UserConfig), - Etag2 = rtcs_multipart:assert_part(B, DstK, UploadId, 2, UserConfig, RespHeaders2), - - EtagList = [ {1, Etag1}, {2, Etag2} ], - ?assertEqual(ok, erlcloud_s3_multipart:complete_upload( - B, DstK, UploadId, EtagList, UserConfig)). - -send_ssl_request(Config, Payload) -> - {Host, Port} = get_config_target_address(Config), - {ok, Sock} = ssl:connect(Host, Port, [{active, false}, binary]), - lager:info("sending HTTPS request: ~s", [Payload]), - ok = ssl:send(Sock, Payload), - {ok, Data} = ssl:recv(Sock, 0), - lager:debug("SSL recv: ~p", [Data]), - {ok, Packet, Rest} = erlang:decode_packet(http, Data, []), - lager:debug("~p / ~p", [Packet, Rest]), - ?assertEqual({http_response, {1, 1}, 200, "OK"}, Packet), - ssl:close(Sock), - ok. - -get_config_target_address(#aws_config{s3_port = Port, http_options = Opts}) -> - {proplists:get_value(proxy_host, Opts, "localhost"), - proplists:get_value(proxy_port, Opts, Port)}. - -base_header(B, K, CL, MD5, UserConfig, MetaTags) -> - Host = io_lib:format("~s.s3.amazonaws.com", [B]), - Date = httpd_util:rfc1123_date(erlang:localtime()), - ToSign = ["PUT", $\n, - case CL of 0 -> ""; _ -> MD5 end, $\n, - "application/octet-stream", $\n, - Date, $\n, MetaTags, $/, B, $/, K, []], - lager:debug("String to Sign: ~s", [ToSign]), - Sig = base64:encode_to_string(crypto:hmac( - sha, - UserConfig#aws_config.secret_access_key, - ToSign)), - Auth = io_lib:format("Authorization: AWS ~s:~s", - [UserConfig#aws_config.access_key_id, Sig]), - FirstLine = io_lib:format("PUT /~s HTTP/1.1", [K]), - [FirstLine, $\n, "Host: ", Host, $\n, Auth, $\n, - "Content-Length: ", integer_to_list(CL), $\n, - case CL of - 0 -> ""; - _ -> ["Content-Md5: ", MD5, $\n] - end, - "Content-Type: application/octet-stream", $\n, - "Date: ", Date, $\n]. - - -mb(MegaBytes) -> - MegaBytes * 1024 * 1024. - -assert_whole_content(UserConfig, Bucket, Key, ExpectedContent) -> - Obj = erlcloud_s3:get_object(Bucket, Key, UserConfig), - assert_whole_content(ExpectedContent, Obj). - -assert_whole_content(ExpectedContent, ResultObj) -> - Content = proplists:get_value(content, ResultObj), - ContentLength = proplists:get_value(content_length, ResultObj), - ?assertEqual(byte_size(ExpectedContent), list_to_integer(ContentLength)), - ?assertEqual(byte_size(ExpectedContent), byte_size(Content)), - ?assertEqual(ExpectedContent, Content). diff --git a/riak_test/src/tools_helper.erl b/riak_test/src/tools_helper.erl deleted file mode 100644 index 391daadc9..000000000 --- a/riak_test/src/tools_helper.erl +++ /dev/null @@ -1,103 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(tools_helper). --export([offline_delete/2]). --include_lib("eunit/include/eunit.hrl"). - -%% @doc execute `offline_delete.erl` scripts with assertion at -%% before / after of it. -%% - Assert all blocks in `BlockKeysFileList` exist before execution -%% - Stop all nodes -%% - Execute `offline_delete.erl` -%% - Start all nodes -%% - Assert no blocks in `BlockKeysFileList` exist after execution -offline_delete({RiakNodes, CSNodes, Stanchion}, BlockKeysFileList) -> - lager:info("Assert all blocks exist before deletion"), - [assert_all_blocks_exists(RiakNodes, BlockKeysFile) || - BlockKeysFile <- BlockKeysFileList], - - lager:info("Stop nodes and execute offline_delete script..."), - NL0 = lists:zip(CSNodes, RiakNodes), - {CS1, R1} = hd(NL0), - NodeList = [{CS1, R1, Stanchion} | tl(NL0)], - rtcs_exec:stop_all_nodes(NodeList, current), - - [begin - Res = rtcs_exec:exec_priv_escript( - 1, "internal/offline_delete.erl", - "-r 8 --yes " ++ - rtcs_config:riak_bitcaskroot(rtcs_config:devpath(riak, current), 1) ++ - " " ++ BlockKeysFile, - riak), - lager:debug("offline_delete.erl log:\n~s", [Res]), - lager:debug("offline_delete.erl log:============= END") - end || BlockKeysFile <- BlockKeysFileList], - - lager:info("Assert all blocks are non-existent now"), - rtcs_exec:start_all_nodes(NodeList, current), - [assert_any_blocks_not_exists(RiakNodes, BlockKeysFile) || - BlockKeysFile <- BlockKeysFileList], - lager:info("All cleaned up!"), - ok. - -assert_all_blocks_exists(RiakNodes, BlocksListFile) -> - BlockKeys = block_keys(BlocksListFile), - lager:info("Assert all blocks still exist."), - [assert_block_exists(RiakNodes, BlockKey) || - BlockKey <- BlockKeys], - ok. - -assert_any_blocks_not_exists(RiakNodes, BlocksListFile) -> - BlockKeys = block_keys(BlocksListFile), - lager:info("Assert all blocks still exist."), - [assert_block_not_exists(RiakNodes, BlockKey) || - BlockKey <- BlockKeys], - ok. - -block_keys(FileName) -> - {ok, Bin} = file:read_file(FileName), - Lines = binary:split(Bin, <<"\n">>, [global]), - [begin - [_BHex, _KHex, CsBucket, CsKey, UUIDHex, SeqStr] = - binary:split(L, [<<"\t">>, <<" ">>], [global]), - {CsBucket, - mochihex:to_bin(binary_to_list(CsKey)), - mochihex:to_bin(binary_to_list(UUIDHex)), - list_to_integer(binary_to_list(SeqStr))} - end || L <- Lines, L =/= <<>>]. - -assert_block_exists(RiakNodes, {CsBucket, CsKey, UUID, Seq}) -> - ok = case rc_helper:get_riakc_obj(RiakNodes, blocks, CsBucket, {CsKey, UUID, Seq}) of - {ok, _Obj} -> ok; - Other -> - lager:error("block not found: ~p for ~p~n", - [Other, {CsBucket, CsKey, UUID, Seq}]), - {error, block_notfound} - end. - -assert_block_not_exists(RiakNodes, {CsBucket, CsKey, UUID, Seq}) -> - ok = case rc_helper:get_riakc_obj(RiakNodes, blocks, - CsBucket, {CsKey, UUID, Seq}) of - {error, notfound} -> ok; - {ok, _Obj} -> - lager:error("block found: ~p", [{CsBucket, CsKey, UUID, Seq}]), - {error, block_found} - end. diff --git a/riak_test/tests/access_stats_test.erl b/riak_test/tests/access_stats_test.erl deleted file mode 100644 index 654fbd015..000000000 --- a/riak_test/tests/access_stats_test.erl +++ /dev/null @@ -1,206 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% ------------------------------------------------------------------- - --module(access_stats_test). -%% @doc Integration test for access statistics. -%% TODO: Only several kinds of stats are covered - --export([confirm/0]). - --include_lib("erlcloud/include/erlcloud_aws.hrl"). --include_lib("xmerl/include/xmerl.hrl"). --include_lib("eunit/include/eunit.hrl"). - --define(BUCKET, "access-stats-test-1"). --define(KEY, "a"). - -% default time generate_some_accesses spends doing its thing --define(DURATION_SECS, 11). - -confirm() -> - {UserConfig, {RiakNodes, CSNodes, _Stanchion}} = rtcs:setup(2), - rt:setup_log_capture(hd(CSNodes)), - - Results = generate_some_accesses(UserConfig), - lager:debug("Client results: ~p", [Results]), - flush_access_stats(), - assert_access_stats(json, UserConfig, Results), - assert_access_stats(xml, UserConfig, Results), - verify_stats_lost_logging(UserConfig, RiakNodes, CSNodes), - - rtcs:pass(). - -generate_some_accesses(UserConfig) -> - generate_some_accesses(UserConfig, ?DURATION_SECS). - -generate_some_accesses(UserConfig, DurationSecs) -> - Begin = calendar:universal_time(), - Until = calendar:datetime_to_gregorian_seconds(Begin) + DurationSecs, - R0 = dict:new(), - lager:info("creating bucket ~p", [?BUCKET]), - %% Create bucket - ?assertEqual(ok, erlcloud_s3:create_bucket(?BUCKET, UserConfig)), - R1 = dict:update_counter({"BucketCreate", "Count"}, 1, R0), - %% do stuff for a while ... - R2 = generate_some_accesses(UserConfig, Until, R1), - %% Delete bucket - ?assertEqual(ok, erlcloud_s3:delete_bucket(?BUCKET, UserConfig)), - Results = dict:update_counter({"BucketDelete", "Count"}, 1, R2), - %% Illegal URL such that riak_cs_access_log_handler:handle_event/2 gets {log_access, #wm_log_data{notes=undefined}} - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:get_object("", "//a", UserConfig)), %% Path-style access - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:get_object("riak-cs", "pong", UserConfig)), - {rtcs:datetime(Begin), rtcs:datetime(), dict:to_list(Results)}. - -generate_some_accesses(UserConfig, UntilGregSecs, R0) -> - %% Put random object, twice - O1Size = 100 + random:uniform(100), - O2Size = 100 + random:uniform(100), - _ = erlcloud_s3:put_object(?BUCKET, ?KEY, - crypto:rand_bytes(O1Size), UserConfig), - _ = erlcloud_s3:put_object(?BUCKET, ?KEY, - crypto:rand_bytes(O2Size), UserConfig), - R1 = dict:update_counter({"KeyWrite", "Count"}, 2, R0), - R2 = dict:update_counter({"KeyWrite", "BytesIn"}, O1Size + O2Size, R1), - %% Get object, once - _ = erlcloud_s3:get_object(?BUCKET, ?KEY, UserConfig), - R3 = dict:update_counter({"KeyRead", "Count"}, 1, R2), - R4 = dict:update_counter({"KeyRead", "BytesOut"}, O2Size, R3), - %% Head Object - _ = erlcloud_s3:head_object(?BUCKET, ?KEY, UserConfig), - R5 = dict:update_counter({"KeyStat", "Count"}, 1, R4), - %% List objects (GET bucket) - _ = erlcloud_s3:list_objects(?BUCKET, UserConfig), - R6 = dict:update_counter({"BucketRead", "Count"}, 1, R5), - %% Delete object - _ = erlcloud_s3:delete_object(?BUCKET, ?KEY, UserConfig), - Results = dict:update_counter({"KeyDelete", "Count"}, 1, R6), - GregSecsNow = calendar:datetime_to_gregorian_seconds(calendar:universal_time()), - if - GregSecsNow < UntilGregSecs -> - generate_some_accesses(UserConfig, UntilGregSecs, Results); - true -> - Results - end. - -flush_access_stats() -> - Res = rtcs_exec:flush_access(1), - lager:info("riak-cs-access flush result: ~s", [Res]), - ExpectRegexp = "All access logs were flushed.\n$", - ?assertMatch({match, _}, re:run(Res, ExpectRegexp)). - -assert_access_stats(Format, UserConfig, {Begin, End, ClientStats}) -> - KeyId = UserConfig#aws_config.access_key_id, - FormatInstruction = case Format of - json -> "j"; - xml -> "x" - end, - StatsKey = lists:flatten(["usage/", KeyId, "/a", FormatInstruction, "/", - Begin, "/", End, "/"]), - GetResult = erlcloud_s3:get_object("riak-cs", StatsKey, UserConfig), - lager:debug("GET Access stats response: ~p", [GetResult]), - Content = proplists:get_value(content, GetResult), - Samples = node_samples_from_content(Format, "rcs-dev1@127.0.0.1", Content), - lager:debug("Access samples (~s): ~p", [Format, Samples]), - - ?assertEqual(client_result({"BucketCreate", "Count"}, ClientStats), - sum_samples(Format, "BucketCreate", "Count", Samples)), - ?assertEqual(client_result({"KeyWrite", "Count"}, ClientStats), - sum_samples(Format, "KeyWrite", "Count", Samples)), - ?assertEqual(client_result({"KeyWrite", "BytesIn"}, ClientStats), - sum_samples(Format, "KeyWrite", "BytesIn", Samples)), - ?assertEqual(client_result({"KeyWrite", "BytesOut"}, ClientStats), - sum_samples(Format, "KeyWrite", "BytesOut", Samples)), - ?assertEqual(client_result({"KeyRead", "Count"}, ClientStats), - sum_samples(Format, "KeyRead", "Count", Samples)), - ?assertEqual(client_result({"KeyRead", "BytesIn"}, ClientStats), - sum_samples(Format, "KeyRead", "BytesIn", Samples)), - ?assertEqual(client_result({"KeyRead", "BytesOut"}, ClientStats), - sum_samples(Format, "KeyRead", "BytesOut", Samples)), - ?assertEqual(client_result({"KeyStat", "Count"}, ClientStats), - sum_samples(Format, "KeyStat", "Count", Samples)), - ?assertEqual(client_result({"KeyStat", "BytesOut"}, ClientStats), - sum_samples(Format, "KeyStat", "BytesOut", Samples)), - ?assertEqual(client_result({"BucketRead", "Count"}, ClientStats), - sum_samples(Format, "BucketRead", "Count", Samples)), - ?assertEqual(client_result({"KeyDelete", "Count"}, ClientStats), - sum_samples(Format, "KeyDelete", "Count", Samples)), - ?assertEqual(client_result({"BucketDelete", "Count"}, ClientStats), - sum_samples(Format, "BucketDelete", "Count", Samples)), - pass. - -verify_stats_lost_logging(UserConfig, RiakNodes, CSNodes) -> - KeyId = UserConfig#aws_config.access_key_id, - %% one second ought to be enough - _ = generate_some_accesses(UserConfig, 1), - %% kill riak - [ rt:brutal_kill(Node) || Node <- RiakNodes ], - %% force archive - flush_access_stats(), - %% check logs, at same node with flush_access_stats - CSNode = hd(CSNodes), - lager:info("Checking log in ~p", [CSNode]), - ExpectLine = io_lib:format("lost access stat: User=~s, Slice=", [KeyId]), - lager:debug("expected log line: ~s", [ExpectLine]), - true = rt:expect_in_log(CSNode, ExpectLine), - pass. - -client_result(Key, ResultSet) -> - proplists:get_value(Key, ResultSet, 0). - -node_samples_from_content(json, Node, Content) -> - Usage = mochijson2:decode(Content), - ListOfNodeStats = rtcs:json_get([<<"Access">>, <<"Nodes">>], Usage), - lager:debug("ListOfNodeStats: ~p", [ListOfNodeStats]), - NodeBin = list_to_binary(Node), - [NodeStats | _] = lists:dropwhile( - fun(NodeStats) -> - rtcs:json_get(<<"Node">>, NodeStats) =/= NodeBin - end, ListOfNodeStats), - rtcs:json_get(<<"Samples">>, NodeStats); -node_samples_from_content(xml, Node, Content) -> - {Usage, _Rest} = xmerl_scan:string(unicode:characters_to_list(Content, utf8)), - xmerl_xpath:string("/Usage/Access/Nodes/Node[@name='" ++ Node ++ "']/Sample", Usage). - -sum_samples(json, OperationType, StatsKey, Data) -> - sum_samples_json([list_to_binary(OperationType), list_to_binary(StatsKey)], Data); -sum_samples(xml, OperationType, StatsKey, Data) -> - sum_samples_xml(OperationType, StatsKey, Data). - -%% Sum up statistics entries in possibly multiple samples -sum_samples_json(Keys, Samples) -> - sum_samples_json(Keys, Samples, 0). -sum_samples_json(_Keys, [], Sum) -> - Sum; -sum_samples_json(Keys, [Sample | Samples], Sum) -> - InSample = case rtcs:json_get(Keys, Sample) of - notfound -> - 0; - Value when is_integer(Value) -> - Value - end, - sum_samples_json(Keys, Samples, Sum + InSample). - -sum_samples_xml(OperationType, StatsKey, Samples) -> - lists:sum([list_to_integer(T#xmlText.value) || - Sample <- Samples, - T <- xmerl_xpath:string( - "/Sample/Operation[@type='" ++ OperationType ++ "']/" ++ - StatsKey ++ " /text()", - Sample)]). diff --git a/riak_test/tests/active_delete_test.erl b/riak_test/tests/active_delete_test.erl deleted file mode 100644 index e859c2fe8..000000000 --- a/riak_test/tests/active_delete_test.erl +++ /dev/null @@ -1,40 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(active_delete_test). - -%% @doc `riak_test' module for testing active delete situation behavior. - --export([confirm/0]). -config() -> - [{riak_cs, [{active_delete_threshold, 10000000}]}]. - -confirm() -> - %% 10MB threshold, for 3MB objects are used in cs_suites:run/2 - rtcs:set_advanced_conf(cs, config()), - Setup = rtcs:setup(1), - - %% Just do verify on typical normal case - History = [{cs_suites, run, ["run-1"]}], - {ok, InitialState} = cs_suites:new(Setup), - {ok, EvolvedState} = cs_suites:fold_with_state(InitialState, History), - {ok, _FinalState} = cs_suites:cleanup(EvolvedState), - - rtcs:pass(). diff --git a/riak_test/tests/auth_bypass_test.erl b/riak_test/tests/auth_bypass_test.erl deleted file mode 100644 index b88b31a64..000000000 --- a/riak_test/tests/auth_bypass_test.erl +++ /dev/null @@ -1,110 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(auth_bypass_test). - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). --include_lib("erlcloud/include/erlcloud_aws.hrl"). -config() -> - [{riak_cs, [{admin_auth_enabled, false}]}]. - -confirm() -> - rtcs:set_advanced_conf(cs, config()), - {UserConfig, {RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup(1), - KeyId = UserConfig#aws_config.access_key_id, - Port = rtcs_config:cs_port(hd(RiakNodes)), - - confirm_auth_bypass_for_stats("riak-cs", "stats", UserConfig, Port), - confirm_auth_bypass("riak-cs", "users", UserConfig, Port), - confirm_auth_bypass("riak-cs", "user/" ++ KeyId, UserConfig, Port), - confirm_auth_bypass("riak-cs", "usage/" ++ KeyId ++ "/ab/" ++ - rtcs:datetime() ++ "/" ++ rtcs:datetime(), - UserConfig, Port), - rtcs:pass(). - -confirm_auth_bypass_for_stats(Bucket, Key, UserConfig, Port) -> - {S3Content, CurlContent} = get_both_contents(Bucket, Key, UserConfig, Port), - S3Json = drop_volatile_stats_keys(mochijson2:decode(S3Content)), - CurlJson = drop_volatile_stats_keys(mochijson2:decode(CurlContent)), - ?assertEqual([], remove_volatile(S3Json -- CurlJson)), - ?assertEqual([], remove_volatile(CurlJson -- S3Json)). - -remove_volatile(Lists) -> - lists:filter(fun({<<"memory_", _/binary>>, _V}) -> false; - (_) -> true - end, Lists). - -confirm_auth_bypass(Bucket, Key, UserConfig, Port) -> - {S3Content, CurlContent} = get_both_contents(Bucket, Key, UserConfig, Port), - ?assertEqual(S3Content, CurlContent). - -get_both_contents(Bucket, Key, UserConfig, Port) -> - S3Result = erlcloud_s3:get_object(Bucket, Key, UserConfig), - S3Content = extract_contents(proplists:get_value(content, S3Result)), - lager:debug("erlcloud output: ~p~n", [S3Content]), - - CurlContent = extract_contents(curl_request(Bucket, Key, Port)), - lager:debug("curl output: ~p~n", [CurlContent]), - {S3Content, CurlContent}. - -curl_request(Bucket, Key, Port) -> - Cmd = "curl -s http://localhost:" ++ integer_to_list(Port) - ++ "/" ++ Bucket ++ "/" ++ Key, - lager:debug("cmd: ~p", [Cmd]), - os:cmd(Cmd). - -extract_contents(Output) when is_binary(Output) -> - extract_contents(binary_to_list(Output)); -extract_contents(Output) -> - [MaybeBoundary | Tokens] = string:tokens(Output, "\r\n"), - extract_contents(Tokens, MaybeBoundary, []). - -extract_contents([], NonMultipartContent, []) -> - lager:debug("extracted contents: ~p~n", [NonMultipartContent]), - NonMultipartContent; -extract_contents([], _Boundary, Contents) -> - lager:debug("extracted contents: ~p~n", [Contents]), - Contents; -extract_contents(["Content-Type: application/xml", Content | Tokens], - Boundary, Contents) -> - extract_contents(Tokens, Boundary, Contents ++ [Content]); -extract_contents([Boundary | Tokens], Boundary, Contents) -> - extract_contents(Tokens, Boundary, Contents); -extract_contents([_ | Tokens], Boundary, Contents) -> - extract_contents(Tokens, Boundary, Contents). - -drop_volatile_stats_keys({struct, KVs}) -> - [{K, V} || {K, V} <- KVs, not lists:member(K, volatile_stats_keys())]. - -volatile_stats_keys() -> - [<<"pbc_pool_master_workers">>, - <<"pbc_pool_master_size">>, - <<"object_web_active_sockets">>, - <<"memory_total">>, - <<"memory_processes">>, - <<"memory_processes_used">>, - <<"memory_system">>, - <<"memory_atom_used">>, - <<"memory_binary">>, - <<"memory_ets">>, - <<"sys_monitor_count">>, - <<"sys_port_count">>, - <<"sys_process_count">>]. diff --git a/riak_test/tests/block_audit_test.erl b/riak_test/tests/block_audit_test.erl deleted file mode 100644 index 52d779286..000000000 --- a/riak_test/tests/block_audit_test.erl +++ /dev/null @@ -1,128 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(block_audit_test). - -%% @doc `riak_test' module for testing block audit scripts - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). - --define(BUCKET1, "rt-bucket1"). --define(BUCKET2, "rt-bucket2"). - --define(KEY_ALIVE, "alive"). --define(KEY_ORPHANED, "orphaned"). --define(KEY_FALSE_ORPHANED, "false-orphaned"). --define(KEY_ALIVE_MP, "alive-mp"). --define(KEY_ORPHANED_MP, "orphaned-mp"). --define(KEY_FALSE_ORPHANED_MP, "false-orphaned-mp"). - -confirm() -> - case rt_config:get(flavor, basic) of - {multibag, _} -> - lager:info("Block audit script does not supprt multibag env."), - lager:info("Skip the test."), - rtcs:pass(); - _ -> confirm1() - end. - -confirm1() -> - {UserConfig, {RiakNodes, CSNodes, Stanchion}} = rtcs:setup(1), - ?assertEqual(ok, erlcloud_s3:create_bucket(?BUCKET1, UserConfig)), - ?assertEqual(ok, erlcloud_s3:create_bucket(?BUCKET2, UserConfig)), - FalseOrphans1 = - [setup_objects(RiakNodes, UserConfig, Bucket, normal, - ?KEY_ALIVE, ?KEY_ORPHANED, ?KEY_FALSE_ORPHANED) || - Bucket <- [?BUCKET1, ?BUCKET2]], - FalseOrphans2 = - [setup_objects(RiakNodes, UserConfig, Bucket, mp, - ?KEY_ALIVE_MP, ?KEY_ORPHANED_MP, ?KEY_FALSE_ORPHANED_MP) || - Bucket <- [?BUCKET1, ?BUCKET2]], - Home = rtcs_config:riakcs_home(rtcs_config:devpath(cs, current), 1), - os:cmd("rm -rf " ++ filename:join([Home, "maybe-orphaned-blocks"])), - os:cmd("rm -rf " ++ filename:join([Home, "actual-orphaned-blocks"])), - Res1 = rtcs_exec:exec_priv_escript(1, "internal/block_audit.erl", - "-h 127.0.0.1 -p 10017 -dd"), - lager:debug("block_audit.erl log:\n~s", [Res1]), - lager:debug("block_audit.erl log:============= END"), - fake_false_orphans(RiakNodes, FalseOrphans1 ++ FalseOrphans2), - Res2 = rtcs_exec:exec_priv_escript(1, "internal/ensure_orphan_blocks.erl", - "-h 127.0.0.1 -p 10017 -dd"), - lager:debug("ensure_orphan_blocks.erl log:\n~s", [Res2]), - lager:debug("ensure_orphan_blocks.erl log:============= END"), - assert_result(?BUCKET1), - assert_result(?BUCKET2), - - BlockKeysFileList = [filename:join([Home, "actual-orphaned-blocks", B]) || - B <- [?BUCKET1, ?BUCKET2]], - tools_helper:offline_delete({RiakNodes, CSNodes, Stanchion}, BlockKeysFileList), - rtcs:pass(). - -setup_objects(RiakNodes, UserConfig, Bucket, Type, - KeyAlive, KeyOrphaned, KeyFalseOrphaned) -> - case Type of - normal -> - SingleBlock = crypto:rand_bytes(400), - [erlcloud_s3:put_object(Bucket, Key, SingleBlock, UserConfig) || - Key <- [KeyAlive, KeyOrphaned, KeyFalseOrphaned]]; - mp -> - ok = rc_helper:delete_riakc_obj(RiakNodes, objects, Bucket, KeyOrphaned), - [rtcs_multipart:multipart_upload(Bucket, Key, - [mb(10), mb(5)], UserConfig) || - Key <- [KeyAlive, KeyOrphaned, KeyFalseOrphaned]] - end, - ok = rc_helper:delete_riakc_obj(RiakNodes, objects, Bucket, KeyOrphaned), - lager:info("To fake deficit replicas for ~p, delete objects and restore it " - "between block_audit.er and block_audit2.erl runs", - [{Bucket, KeyFalseOrphaned}]), - {ok, FalseOrphanedRObj} = rc_helper:get_riakc_obj(RiakNodes, objects, - Bucket, KeyFalseOrphaned), - ok = rc_helper:delete_riakc_obj(RiakNodes, objects, Bucket, KeyFalseOrphaned), - {Bucket, KeyFalseOrphaned, FalseOrphanedRObj}. - -fake_false_orphans(RiakNodes, FalseOrphans) -> - [begin - R = rc_helper:update_riakc_obj(RiakNodes, objects, B, K, O), - lager:debug("fake_false_orphans ~p: ~p", [{B, K}, R]) - end || - {B, K, O} <- FalseOrphans]. - -assert_result(Bucket) -> - Home = rtcs_config:riakcs_home(rtcs_config:devpath(cs, current), 1), - OutFile1 = filename:join([Home, "actual-orphaned-blocks", Bucket]), - {ok, Bin} = file:read_file(OutFile1), - KeySeqs = [begin - [_RiakBucketHex, _RiakKeyHex, - _CSBucket, CSKeyHex, _UUIDHex, SeqStr] = - binary:split(Line, [<<$\t>>], [global, trim]), - {binary_to_list(mochihex:to_bin(binary_to_list(CSKeyHex))), - list_to_integer(binary_to_list(SeqStr))} - end || Line <- binary:split(Bin, [<<$\n>>], [global, trim])], - ?assertEqual([?KEY_ORPHANED, ?KEY_ORPHANED_MP], - lists:sort(proplists:get_keys(KeySeqs))), - ?assertEqual([0], proplists:get_all_values(?KEY_ORPHANED, KeySeqs)), - ?assertEqual([0,0,1,1,2,2,3,3,4,4,5,6,7,8,9], - lists:sort(proplists:get_all_values(?KEY_ORPHANED_MP, KeySeqs))), - ok. - -mb(MegaBytes) -> - MegaBytes * 1024 * 1024. - diff --git a/riak_test/tests/buckets_test.erl b/riak_test/tests/buckets_test.erl deleted file mode 100644 index b598603b7..000000000 --- a/riak_test/tests/buckets_test.erl +++ /dev/null @@ -1,220 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(buckets_test). - -%% @doc `riak_test' module for testing object get behavior. - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). - -%% keys for non-multipart objects --define(TEST_BUCKET, "riak-test-bucket"). --define(KEY_SINGLE_BLOCK, "riak_test_key1"). --define(REGION, "boom-boom-tokyo-42"). - -%% keys for multipart uploaded objects --define(KEY_MP, "riak_test_mp"). % single part, single block -config() -> - [{riak_cs, [{region, ?REGION}]}]. - -confirm() -> - rtcs:set_advanced_conf(cs, config()), - {UserConfig, {RiakNodes, CSNodes, _Stanchion}} = rtcs:setup(1), - - - %% User 1, Cluster 1 config - UserConfig1 = rtcs_admin:create_user(hd(RiakNodes), 1), - - ok = verify_create_delete(UserConfig), - - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - ok = verify_bucket_location(UserConfig), - - ok = verify_bucket_delete_fails(UserConfig), - - ok = verify_bucket_mpcleanup(UserConfig), - - ok = verify_bucket_mpcleanup_racecond_and_fix(UserConfig, UserConfig1, - RiakNodes, hd(CSNodes)), - - ok = verify_cleanup_orphan_mp(UserConfig, UserConfig1, RiakNodes, hd(CSNodes)), - - ok = verify_max_buckets_per_user(UserConfig), - - rtcs:pass(). - - -verify_create_delete(UserConfig) -> - lager:info("User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - lager:info("deleting bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:delete_bucket(?TEST_BUCKET, UserConfig)), - lager:info("User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - ok. - -verify_bucket_delete_fails(UserConfig) -> - %% setup objects - SingleBlock = crypto:rand_bytes(400), - erlcloud_s3:put_object(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, SingleBlock, UserConfig), - - %% verify bucket deletion fails if any objects exist - lager:info("deleting bucket ~p (to fail)", [?TEST_BUCKET]), - ?assertError({aws_error, {http_error, _, _, _}}, - erlcloud_s3:delete_bucket(?TEST_BUCKET, UserConfig)), - - %% cleanup object - erlcloud_s3:delete_object(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, UserConfig), - ok. - - -verify_bucket_mpcleanup(UserConfig) -> - Bucket = ?TEST_BUCKET, - Key = ?KEY_SINGLE_BLOCK, - InitUploadRes = erlcloud_s3_multipart:initiate_upload(Bucket, Key, [], [], UserConfig), - lager:info("InitUploadRes = ~p", [InitUploadRes]), - UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), - lager:info("UploadId = ~p", [UploadId]), - - %% make sure that mp uploads created - UploadsList1 = erlcloud_s3_multipart:list_uploads(Bucket, [], UserConfig), - Uploads1 = proplists:get_value(uploads, UploadsList1, []), - ?assertEqual(Bucket, proplists:get_value(bucket, UploadsList1)), - ?assert(mp_upload_test:upload_id_present(UploadId, Uploads1)), - - lager:info("deleting bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:delete_bucket(?TEST_BUCKET, UserConfig)), - - %% check that writing mp uploads never resurrect - %% after bucket delete - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - UploadsList2 = erlcloud_s3_multipart:list_uploads(Bucket, [], UserConfig), - Uploads2 = proplists:get_value(uploads, UploadsList2, []), - ?assertEqual([], Uploads2), - ?assertEqual(Bucket, proplists:get_value(bucket, UploadsList2)), - ?assertNot(mp_upload_test:upload_id_present(UploadId, Uploads2)), - ok. - -%% @doc in race condition: on delete_bucket -verify_bucket_mpcleanup_racecond_and_fix(UserConfig, UserConfig1, - RiakNodes, CSNode) -> - Key = ?KEY_MP, - Bucket = ?TEST_BUCKET, - prepare_bucket_with_orphan_mp(Bucket, Key, UserConfig, RiakNodes), - - %% then fail on creation - %%TODO: check fail fail fail => 500 - ?assertError({aws_error, {http_error, 500, [], _}}, - erlcloud_s3:create_bucket(Bucket, UserConfig)), - - ?assertError({aws_error, {http_error, 500, [], _}}, - erlcloud_s3:create_bucket(Bucket, UserConfig1)), - - %% but we have a cleanup script, for existing system with 1.4.x or earlier - %% DO cleanup here - case rpc:call(CSNode, riak_cs_console, cleanup_orphan_multipart, []) of - {badrpc, Error} -> - lager:error("cleanup_orphan_multipart error: ~p~n", [Error]), - throw(Error); - Res -> - lager:info("Result of cleanup_orphan_multipart: ~p~n", [Res]) - end, - - %% list_keys here? wait for GC? - - %% and Okay, it's clear, another user creates same bucket - ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket, UserConfig1)), - - %% Nothing found - UploadsList2 = erlcloud_s3_multipart:list_uploads(Bucket, [], UserConfig1), - Uploads2 = proplists:get_value(uploads, UploadsList2, []), - ?assertEqual([], Uploads2), - ?assertEqual(Bucket, proplists:get_value(bucket, UploadsList2)), - ok. - -%% @doc cleanup orphan multipart for 30 buckets (> pool size) -verify_cleanup_orphan_mp(UserConfig, UserConfig1, RiakNodes, CSNode) -> - [begin - Suffix = integer_to_list(Index), - Bucket = ?TEST_BUCKET ++ Suffix, - Key = ?KEY_MP ++ Suffix, - prepare_bucket_with_orphan_mp(Bucket, Key, UserConfig, RiakNodes) - end || Index <- lists:seq(1, 30)], - - %% but we have a cleanup script, for existing system with 1.4.x or earlier - %% DO cleanup here - case rpc:call(CSNode, riak_cs_console, cleanup_orphan_multipart, []) of - {badrpc, Error} -> - lager:error("cleanup_orphan_multipart error: ~p~n", [Error]), - throw(Error); - Res -> - lager:info("Result of cleanup_orphan_multipart: ~p~n", [Res]) - end, - - %% and Okay, it's clear, another user creates same bucket - Bucket1 = ?TEST_BUCKET ++ "1", - ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket1, UserConfig1)), - - %% Nothing found - UploadsList = erlcloud_s3_multipart:list_uploads(Bucket1, [], UserConfig1), - Uploads = proplists:get_value(uploads, UploadsList, []), - ?assertEqual([], Uploads), - ?assertEqual(Bucket1, proplists:get_value(bucket, UploadsList)), - ok. - -prepare_bucket_with_orphan_mp(BucketName, Key, UserConfig, RiakNodes) -> - ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), - _InitUploadRes = erlcloud_s3_multipart:initiate_upload(BucketName, Key, [], [], UserConfig), - - %% Reserve riak object to emulate prior 1.4.5 behavior afterwards - {ok, ManiObj} = rc_helper:get_riakc_obj(RiakNodes, objects, BucketName, Key), - - ?assertEqual(ok, erlcloud_s3:delete_bucket(BucketName, UserConfig)), - - %% emulate a race condition, during the deletion MP initiate happened - ok = rc_helper:update_riakc_obj(RiakNodes, objects, BucketName, Key, ManiObj). - - -verify_max_buckets_per_user(UserConfig) -> - [{buckets, Buckets}] = erlcloud_s3:list_buckets(UserConfig), - lager:debug("existing buckets: ~p", [Buckets]), - BucketNameBase = "toomanybuckets", - [begin - BucketName = BucketNameBase++integer_to_list(N), - lager:debug("creating bucket ~p", [BucketName]), - ?assertEqual(ok, - erlcloud_s3:create_bucket(BucketName, UserConfig)) - end - || N <- lists:seq(1,100-length(Buckets))], - lager:debug("100 buckets created", []), - BucketName1 = BucketNameBase ++ "101", - ?assertError({aws_error, {http_error, 400, [], _}}, - erlcloud_s3:create_bucket(BucketName1, UserConfig)), - ok. - -verify_bucket_location(UserConfig) -> - ?assertEqual(?REGION, - erlcloud_s3:get_bucket_attribute(?TEST_BUCKET, location, UserConfig)). diff --git a/riak_test/tests/cs743_regression_test.erl b/riak_test/tests/cs743_regression_test.erl deleted file mode 100644 index d10672180..000000000 --- a/riak_test/tests/cs743_regression_test.erl +++ /dev/null @@ -1,100 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(cs743_regression_test). - -%% @doc Regression test for `riak_cs' -%% issue 286. - --export([confirm/0]). - --include_lib("erlcloud/include/erlcloud_aws.hrl"). --include_lib("eunit/include/eunit.hrl"). - --define(TEST_BUCKET, "riak-test-bucket"). - -confirm() -> - rtcs:set_conf(cs, [{"stats.storage.archive_period", "1s"}]), - rtcs:set_advanced_conf(cs, [{riak_cs, [{storage_calc_timeout, 1}]}]), - {UserConfig, {_RiakNodes, CSNodes, _Stanchion}} = rtcs:setup(2), - - Begin = rtcs:datetime(), - run_storage_batch(hd(CSNodes)), - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - N = 1024, - lager:info("creating ~p objects in ~p", [N, ?TEST_BUCKET]), - ok = etoomanyobjects(N, UserConfig), - timer:sleep(1000), - - run_storage_batch(hd(CSNodes)), - timer:sleep(1000), - End = rtcs:datetime(), - - assert_storage_stats(UserConfig, Begin, End), - rtcs:pass(). - -assert_storage_stats(UserConfig, Begin, End) -> - KeyId = UserConfig#aws_config.access_key_id, - StatsKey = lists:flatten(["usage/", KeyId, "/bj/", Begin, "/", End, "/"]), - GetResult = erlcloud_s3:get_object("riak-cs", StatsKey, UserConfig), - lager:info("Storage stats response: ~p", [GetResult]), - Usage = mochijson2:decode(proplists:get_value(content, GetResult)), - lager:info("Storage Usage: ~p", [Usage]), - Samples = rtcs:json_get([<<"Storage">>, <<"Samples">>], Usage), - - ?assert(lists:any( - fun(Sample) -> - case rtcs:json_get(list_to_binary(?TEST_BUCKET), Sample) of - notfound -> false; - ResultStr -> - ?assert(not is_integer(ResultStr)), - ?assertEqual(<<"{error,{timeout,[]}}">>, ResultStr), - true - end - end, - Samples)). - %% supposed to be "{error, timeout}" - -run_storage_batch(CSNode) -> - {ok, Status0} = rpc:call(CSNode, riak_cs_storage_d, status, []), - lager:info("~p", [Status0]), - ok = rpc:call(CSNode, riak_cs_storage_d, start_batch, [[{recalc,true}]]), - {ok, Status1} = rpc:call(CSNode, riak_cs_storage_d, status, []), - lager:info("~p", [Status1]), - %%{ok, - %% {calculating,[{schedule,[]},{last,undefined},{current,{{2013,12,26},{3,55,29}}}, - %% {next,undefined},{elapsed,0},{users_done,1},{users_skipped,0},{users_left,0}]}} - - {_Status, Result} = Status1, - 1 = proplists:get_value(users_done,Result), - 0 = proplists:get_value(users_skipped,Result), - 0 = proplists:get_value(users_left,Result). - -etoomanyobjects(N, UserConfig) -> - SingleBlock = crypto:rand_bytes(400), - lists:map(fun(I) -> - R = erlcloud_s3:put_object(?TEST_BUCKET, integer_to_list(I), - SingleBlock, UserConfig), - [{version_id,"null"}] = R - end, - lists:seq(1,N)), - ok. diff --git a/riak_test/tests/error_response_test.erl b/riak_test/tests/error_response_test.erl deleted file mode 100644 index 5c351fe51..000000000 --- a/riak_test/tests/error_response_test.erl +++ /dev/null @@ -1,71 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(error_response_test). - --compile(export_all). --export([confirm/0]). - --include_lib("eunit/include/eunit.hrl"). - --define(BUCKET, "error-response-test"). --define(BUCKET2, "error-response-test2"). --define(KEY, "a"). --define(ErrNodeId, 2). - -confirm() -> - {UserConfig, {RiakNodes, CSNodes, Stanchion}} = rtcs:setup(2), - ErrCSNode = lists:nth(?ErrNodeId, CSNodes), - ErrNode = lists:nth(?ErrNodeId, RiakNodes), - ErrConfig = rtcs_admin:aws_config(UserConfig, [{port, rtcs_config:cs_port(ErrNode)}]), - - %% setup initial data - ?assertEqual(ok, erlcloud_s3:create_bucket(?BUCKET, UserConfig)), - SingleBlock = crypto:rand_bytes(400), - erlcloud_s3:put_object(?BUCKET, ?KEY, SingleBlock, UserConfig), - - %% vefity response for timeout during getting a user. - rt_intercept:add(ErrCSNode, {riak_cs_riak_client, [{{get_user, 2}, get_user_timeout}]}), - ?assertError({aws_error, {http_error, 503, [], _}}, - erlcloud_s3:get_object(?BUCKET, ?KEY, ErrConfig)), - rt_intercept:clean(ErrCSNode, riak_cs_riak_client), - - %% vefity response for timeout during getting block. - %% FIXME: This should be http_error 503 - rt_intercept:add(ErrCSNode, {riak_cs_block_server, [{{get_block_local, 6}, get_block_local_timeout}]}), - ?assertError({aws_error, {socket_error, retry_later}}, erlcloud_s3:get_object(?BUCKET, ?KEY, ErrConfig)), - rt_intercept:clean(ErrCSNode, riak_cs_block_server), - - %% vefity response for timeout during get a bucket on stanchion. - %% FIXME: This should be http_error 503 - rt_intercept:add(Stanchion, {riakc_pb_socket, [{{get, 5}, get_timeout}]}), - ?assertError({aws_error, {http_error, 500, [], _}}, - erlcloud_s3:create_bucket(?BUCKET2, ErrConfig)), - rt_intercept:clean(Stanchion, riakc_pb_socket), - - %% vefity response for timeout during put a bucket on stanchion. - %% FIXME: This should be http_error 503 - rt_intercept:add(Stanchion, {riakc_pb_socket, [{{put, 4}, put_timeout}]}), - ?assertError({aws_error, {http_error, 500, [], _}}, - erlcloud_s3:create_bucket(?BUCKET2, ErrConfig)), - rt_intercept:clean(Stanchion, riakc_pb_socket), - - rtcs:pass(). - diff --git a/riak_test/tests/external_client_tests.erl b/riak_test/tests/external_client_tests.erl deleted file mode 100644 index 32506ac3e..000000000 --- a/riak_test/tests/external_client_tests.erl +++ /dev/null @@ -1,42 +0,0 @@ --module(external_client_tests). - --export([confirm/0]). --include_lib("erlcloud/include/erlcloud_aws.hrl"). --include_lib("eunit/include/eunit.hrl"). - --define(TEST_BUCKET, "external-client-test"). - -confirm() -> - %% NOTE: This 'cs_src_root' path must appear in - %% ~/.riak_test.config in the 'rtcs_dev' section, 'src_paths' - %% subsection. - CsSrcDir = rtcs_dev:srcpath(cs_src_root), - lager:debug("cs_src_root = ~p", [CsSrcDir]), - - {UserConfig, {RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup(2, [{cs, cs_config()}]), - ok = erlcloud_s3:create_bucket("external-client-test", UserConfig), - CsPortStr = integer_to_list(rtcs_config:cs_port(hd(RiakNodes))), - - Cmd = os:find_executable("make"), - Args = ["-j", "8", "test-client"], - Env = [{"CS_HTTP_PORT", CsPortStr}, - {"AWS_ACCESS_KEY_ID", UserConfig#aws_config.access_key_id}, - {"AWS_SECRET_ACCESS_KEY", UserConfig#aws_config.secret_access_key}, - {"CS_BUCKET", ?TEST_BUCKET}], - WaitTime = 5 * rt_config:get(rt_max_wait_time), - case rtcs_exec:cmd(Cmd, [{cd, CsSrcDir}, {env, Env}, {args, Args}], WaitTime) of - ok -> - rtcs:pass(); - {error, Reason} -> - lager:error("Error : ~p", [Reason]), - error({external_client_tests, Reason}) - end. - -cs_config() -> - [{riak_cs, - [{connection_pools, [{request_pool, {32, 0}}]}, - {enforce_multipart_part_size, false}, - {max_buckets_per_user, 300}, - {auth_v4_enabled, true} - ] - }]. diff --git a/riak_test/tests/gc_tests.erl b/riak_test/tests/gc_tests.erl deleted file mode 100644 index bdb93f650..000000000 --- a/riak_test/tests/gc_tests.erl +++ /dev/null @@ -1,278 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(gc_tests). - -%% @doc `riak_test' module for testing garbage collection - --export([confirm/0]). - --include_lib("eunit/include/eunit.hrl"). --include("riak_cs.hrl"). - -%% keys for non-multipart objects --define(TEST_BUCKET, "riak-test-bucket"). --define(TEST_KEY, "riak_test_key"). --define(TEST_KEY_MP, "riak_test_mp"). --define(TEST_KEY_BAD_STATE, "riak_test_key_bad_state"). --define(TIMESLICES, 5). - -confirm() -> - NumNodes = 1, - {UserConfig, {RiakNodes, CSNodes, _Stanchion}} = rtcs:setup(NumNodes), - %% Set up to grep logs to verify messages - rt:setup_log_capture(hd(CSNodes)), - - rtcs_exec:gc(1, "set-interval infinity"), - rtcs_exec:gc(1, "set-leeway 1"), - rtcs_exec:gc(1, "cancel"), - - lager:info("Test GC run under an invalid state manifest..."), - {GCKey, {BKey, UUID}} = setup_obj(RiakNodes, UserConfig), - - %% Ensure the leeway has expired - timer:sleep(2000), - - Result = rtcs_exec:gc(1, "earliest-keys"), - lager:debug("~p", [Result]), - ?assert(string:str(Result, "GC keys in") > 0), - - ok = verify_gc_run(hd(CSNodes), GCKey), - ok = verify_riak_object_remaining_for_bad_key(RiakNodes, GCKey, {BKey, UUID}), - - lager:info("Test repair script (repair_gc_bucket.erl) with more invlaid states..."), - ok = put_more_bad_keys(RiakNodes, UserConfig), - %% Ensure the leeway has expired - timer:sleep(2000), - RiakIDs = rtcs:riak_id_per_cluster(NumNodes), - [repair_gc_bucket(ID) || ID <- RiakIDs], - ok = verify_gc_run2(hd(CSNodes)), - - %% Determinisitc GC test - - %% Create keys not to be deleted - setup_normal_obj([{"spam", 42}, {"ham", 65536}, {"egg", 7}], UserConfig), - timer:sleep(1000), %% Next timestamp... - - %% Create keys to be deleted - Start = os:timestamp(), - [begin - setup_normal_obj([{"hop", 42}, {"step", 65536}, {"jump", 7}], UserConfig), - timer:sleep(2000) - end || _ <- lists:seq(0,?TIMESLICES) ], - End = os:timestamp(), - - timer:sleep(1000), %% Next timestamp... - setup_normal_obj([{"spam", 42}, {"ham", 65536}, {"egg", 7}], UserConfig), - - verify_partial_gc_run(hd(CSNodes), RiakNodes, Start, End), - rtcs:pass(). - -setup_normal_obj(ObjSpecs, UserConfig) -> - %% Put and delete some objects - [begin - Block = crypto:rand_bytes(Size), - Key = ?TEST_KEY ++ Suffix, - erlcloud_s3:put_object(?TEST_BUCKET, Key, Block, UserConfig), - erlcloud_s3:delete_object(?TEST_BUCKET, Key, UserConfig) - end || {Suffix, Size} <- ObjSpecs]. - -setup_obj(RiakNodes, UserConfig) -> - %% Setup bucket - lager:info("User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - setup_normal_obj([{"1", 100}, {"2", 200}, {"3", 0}], UserConfig), - - %% Put and delete, but modified to pretend it is in wrong state - SingleBlock = crypto:rand_bytes(400), - erlcloud_s3:put_object(?TEST_BUCKET, ?TEST_KEY_BAD_STATE, SingleBlock, UserConfig), - erlcloud_s3:delete_object(?TEST_BUCKET, ?TEST_KEY_BAD_STATE, UserConfig), - %% Change the state in the manifest in gc bucket to active. - %% See https://github.com/basho/riak_cs/issues/827#issuecomment-54567839 - GCPbc = rtcs:pbc(RiakNodes, objects, ?TEST_BUCKET), - {ok, GCKeys} = riakc_pb_socket:list_keys(GCPbc, ?GC_BUCKET), - BKey = {list_to_binary(?TEST_BUCKET), list_to_binary(?TEST_KEY_BAD_STATE)}, - lager:info("Changing state to active ~p, ~p", [?TEST_BUCKET, ?TEST_KEY_BAD_STATE]), - {ok, GCKey, UUID} = change_state_to_active(GCPbc, BKey, GCKeys), - - %% Put and delete some more objects - setup_normal_obj([{"Z", 0}, {"Y", 150}, {"X", 1}], UserConfig), - - riakc_pb_socket:stop(GCPbc), - {GCKey, {BKey, UUID}}. - -change_state_to_active(_Pbc, TargetBKey, []) -> - lager:warning("Target BKey ~p not found in GC bucket", [TargetBKey]), - {error, notfound}; -change_state_to_active(Pbc, TargetBKey, [GCKey|Rest]) -> - {ok, Obj0} = riakc_pb_socket:get(Pbc, ?GC_BUCKET, GCKey), - Manifests = twop_set:to_list(binary_to_term(riakc_obj:get_value(Obj0))), - case [{UUID, M?MANIFEST{state=active}} || - {UUID, M} <- Manifests, - M?MANIFEST.bkey =:= TargetBKey] of - [] -> - change_state_to_active(Pbc, TargetBKey, Rest); - [{TargetUUID, TargetManifest}] -> - lager:info("Target BKey ~p found in GC bucket ~p", [TargetBKey, GCKey]), - NewManifestSet = - lists:foldl(fun twop_set:add_element/2, twop_set:new(), - [{TargetUUID, - TargetManifest?MANIFEST{ - state = active, - delete_marked_time=undefined, - delete_blocks_remaining=undefined}} | - lists:keydelete(TargetUUID, 1, Manifests)]), - UpdObj = riakc_obj:update_value(Obj0, term_to_binary(NewManifestSet)), - ok = riakc_pb_socket:put(Pbc, UpdObj), - lager:info("Bad state manifests have been put at ~p: ~p~n", - [GCKey, twop_set:to_list(NewManifestSet)]), - {ok, GCKey, TargetUUID} - end. - -put_more_bad_keys(RiakNodes, UserConfig) -> - %% Put and delete some objects - [begin - Block = crypto:rand_bytes(10), - Key = ?TEST_KEY ++ integer_to_list(Suffix), - erlcloud_s3:put_object(?TEST_BUCKET, Key, Block, UserConfig), - erlcloud_s3:delete_object(?TEST_BUCKET, Key, UserConfig) - end || Suffix <- lists:seq(100, 199)], - GCPbc = rtcs:pbc(RiakNodes, objects, ?TEST_BUCKET), - {ok, GCKeys} = riakc_pb_socket:list_keys(GCPbc, ?GC_BUCKET), - BadGCKeys = put_more_bad_keys(GCPbc, GCKeys, []), - lager:info("Bad state manifests have been put at ~p", [BadGCKeys]), - ok. - -put_more_bad_keys(_Pbc, [], BadGCKeys) -> - BadGCKeys; -put_more_bad_keys(Pbc, [GCKey|Rest], BadGCKeys) -> - case riakc_pb_socket:get(Pbc, ?GC_BUCKET, GCKey) of - {error, notfound} -> - put_more_bad_keys(Pbc, Rest, BadGCKeys); - {ok, Obj0} -> - Manifests = twop_set:to_list(binary_to_term(riakc_obj:get_value(Obj0))), - NewManifests = [{UUID, M?MANIFEST{state = active, - delete_marked_time=undefined, - delete_blocks_remaining=undefined}} || - {UUID, M} <- Manifests], - NewManifestSet = - lists:foldl(fun twop_set:add_element/2, twop_set:new(), NewManifests), - UpdObj = riakc_obj:update_value(Obj0, term_to_binary(NewManifestSet)), - ok = riakc_pb_socket:put(Pbc, UpdObj), - put_more_bad_keys(Pbc, Rest, [GCKey | BadGCKeys]) - end. - -repair_gc_bucket(RiakNodeID) -> - PbPort = integer_to_list(rtcs_config:pb_port(RiakNodeID)), - Res = rtcs_exec:repair_gc_bucket(1, "--host 127.0.0.1 --port " ++ PbPort ++ - " --leeway-seconds 1 --page-size 5 --debug"), - Lines = binary:split(list_to_binary(Res), [<<"\n">>], [global]), - lager:info("Repair script result: ==== BEGIN", []), - [lager:info("~s", [L]) || L <- Lines], - lager:info("Repair script result: ==== END", []), - ok. - -verify_gc_run(Node, GCKey) -> - rtcs_exec:gc(1, "batch 1"), - lager:info("Check log, warning for invalid state and info for GC finish"), - true = rt:expect_in_log(Node, - "Invalid state manifest in GC bucket at <<\"" - ++ binary_to_list(GCKey) ++ "\">>, " - ++ "bucket=<<\"" ++ ?TEST_BUCKET ++ "\">> " - ++ "key=<<\"" ++ ?TEST_KEY_BAD_STATE ++ "\">>: "), - true = rt:expect_in_log(Node, - "Finished garbage collection: \\d+ seconds, " - "\\d batch_count, 0 batch_skips, " - "7 manif_count, 4 block_count"), - ok. - -verify_gc_run2(Node) -> - rtcs_exec:gc(1, "batch 1"), - lager:info("Check collected count =:= 101, 1 from setup_obj, " - "100 from put_more_bad_keys."), - true = rt:expect_in_log(Node, - "Finished garbage collection: \\d+ seconds, " - "\\d+ batch_count, 0 batch_skips, " - "101 manif_count, 101 block_count"), - ok. - -%% Verify riak objects in gc buckets, manifest, block are all remaining. -verify_riak_object_remaining_for_bad_key(RiakNodes, GCKey, {{Bucket, Key}, UUID}) -> - {ok, _BlockObj} = rc_helper:get_riakc_obj(RiakNodes, blocks, Bucket, {Key, UUID, 0}), - {ok, _ManifestObj} = rc_helper:get_riakc_obj(RiakNodes, objects, Bucket, Key), - - GCPbc = rtcs:pbc(RiakNodes, objects, Bucket), - {ok, FileSetObj} = riakc_pb_socket:get(GCPbc, ?GC_BUCKET, GCKey), - Manifests = twop_set:to_list(binary_to_term(riakc_obj:get_value(FileSetObj))), - {UUID, Manifest} = lists:keyfind(UUID, 1, Manifests), - riakc_pb_socket:stop(GCPbc), - lager:info("As expected, BAD manifest in GC bucket remains," - " stand off orphan manfiests/blocks: ~p", [Manifest]), - ok. - -verify_partial_gc_run(CSNode, RiakNodes, - {MegaSec0, Sec0, _}, - {MegaSec1, Sec1, _}) -> - Start0 = MegaSec0 * 1000000 + Sec0, - End0 = MegaSec1 * 1000000 + Sec1, - Interval = erlang:max(1, (End0 - Start0) div ?TIMESLICES), - Starts = [ {Start0 + N * Interval, Start0 + (N+1) * Interval} - || N <- lists:seq(0, ?TIMESLICES-1) ] ++ - [{Start0 + ?TIMESLICES * Interval, End0}], - - [begin - %% We have to clear log as the message 'Finished garbage - %% col...' has been output many times before, during this - %% test. - rtcs:reset_log(CSNode), - - lager:debug("GC: (start, end) = (~p, ~p)", [S0, E0]), - S = rtcs:iso8601(S0), - E = rtcs:iso8601(E0), - BatchCmd = "batch -s " ++ S ++ " -e " ++ E, - rtcs_exec:gc(1, BatchCmd), - - true = rt:expect_in_log(CSNode, - "Finished garbage collection: \\d+ seconds, " - "\\d+ batch_count, 0 batch_skips, " - "\\d+ manif_count, \\d+ block_count") - end || {S0, E0} <- Starts], - lager:info("GC target period: (~p, ~p)", [Start0, End0]), - %% Reap! - timer:sleep(3000), - GCPbc = rtcs:pbc(RiakNodes, objects, ?TEST_BUCKET), - {ok, Keys} = riakc_pb_socket:list_keys(GCPbc, ?GC_BUCKET), - lager:debug("Keys: ~p", [Keys]), - StartKey = list_to_binary(integer_to_list(Start0)), - EndKey = list_to_binary(integer_to_list(End0)), - EndKeyHPF = fun(Key) -> EndKey < Key end, - StartKeyLPF = fun(Key) -> Key < StartKey end, - BPF = fun(Key) -> StartKey < Key andalso Key < EndKey end, - - lager:debug("Remaining Keys: ~p", [Keys]), - lager:debug("HPF result: ~p", [lists:filter(EndKeyHPF, Keys)]), - lager:debug("LPF result: ~p", [lists:filter(StartKeyLPF, Keys)]), - ?assertEqual(3, length(lists:filter(EndKeyHPF, Keys))), - ?assertEqual(3, length(lists:filter(StartKeyLPF, Keys))), - ?assertEqual([], lists:filter(BPF, Keys)), - ok. diff --git a/riak_test/tests/https_tests.erl b/riak_test/tests/https_tests.erl deleted file mode 100644 index 51ec1ba0d..000000000 --- a/riak_test/tests/https_tests.erl +++ /dev/null @@ -1,42 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2016 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% ------------------------------------------------------------------- - --module(https_tests). - --export([confirm/0]). - -confirm() -> - {ok, _} = application:ensure_all_started(ssl), - CSConfig = [{ssl, [{certfile, "./etc/cert.pem"}, {keyfile, "./etc/key.pem"}]}], - {UserConfig, _} = rtcs:setup(1, [{cs, [{riak_cs, CSConfig}]}]), - % lager:info("UserConfig: ~p", [UserConfig]), - ok = verify_cs1025(UserConfig), - rtcs:pass(). - -verify_cs1025(UserConfig) -> - B = <<"booper">>, - K = <<"drooper">>, - K2 = <<"super">>, - lager:info("Creating a bucket ~s", [B]), - rtcs_object:upload(UserConfig, {https, 0}, B, <<>>), - lager:info("Creating a source object to copy, ~s", [K]), - rtcs_object:upload(UserConfig, {https, 42}, B, K), - lager:info("Trying copy from ~s to ~s", [K, K2]), - rtcs_object:upload(UserConfig, https_copy, B, K2, K). diff --git a/riak_test/tests/legacy_s3_rewrite_test.erl b/riak_test/tests/legacy_s3_rewrite_test.erl deleted file mode 100644 index c7436b6c2..000000000 --- a/riak_test/tests/legacy_s3_rewrite_test.erl +++ /dev/null @@ -1,64 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(legacy_s3_rewrite_test). - --export([confirm/0]). --include_lib("erlcloud/include/erlcloud_aws.hrl"). --include_lib("eunit/include/eunit.hrl"). - --define(TEST_BUCKET, "legacy-s3-rewrite-test"). - -confirm() -> - %% NOTE: This 'cs_src_root' path must appear in - %% ~/.riak_test.config in the 'rtcs_dev' section, 'src_paths' - %% subsection. - CsSrcDir = rtcs_dev:srcpath(cs_src_root), - lager:debug("cs_src_root = ~p", [CsSrcDir]), - - rtcs:set_advanced_conf(cs, cs_config()), - {UserConfig, {RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup(1), - ok = erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig), - CsPortStr = integer_to_list(rtcs_config:cs_port(hd(RiakNodes))), - - Cmd = os:find_executable("make"), - Args = ["-C", "client_tests/python/boto_tests", "test-auth-v2"], - Env = [{"CS_HTTP_PORT", CsPortStr}, - {"AWS_ACCESS_KEY_ID", UserConfig#aws_config.access_key_id}, - {"AWS_SECRET_ACCESS_KEY", UserConfig#aws_config.secret_access_key}, - {"CS_BUCKET", ?TEST_BUCKET}], - WaitTime = 2 * rt_config:get(rt_max_wait_time), - case rtcs_exec:cmd(Cmd, [{cd, CsSrcDir}, {env, Env}, {args, Args}], WaitTime) of - ok -> - rtcs:pass(); - {error, Reason} -> - lager:error("Error : ~p", [Reason]), - error({?MODULE, Reason}) - end. - -cs_config() -> - [ - {riak_cs, - [ - {enforce_multipart_part_size, false}, - {max_buckets_per_user, 150}, - {rewrite_module, riak_cs_s3_rewrite_legacy} - ] - }]. diff --git a/riak_test/tests/list_objects_test.erl b/riak_test/tests/list_objects_test.erl deleted file mode 100644 index c38072731..000000000 --- a/riak_test/tests/list_objects_test.erl +++ /dev/null @@ -1,37 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(list_objects_test). - -%% @doc Integration test for list the contents of a bucket - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). - --define(TEST_BUCKET, "riak-test-bucket"). - -confirm() -> - rtcs:set_conf(cs, [{"fold_objects_for_list_keys", "off"}]), - {UserConfig, {_RiakNodes, CSNodes, _Stanchion}} = rtcs:setup(1), - assert_v1(CSNodes), - list_objects_test_helper:test(UserConfig). - -assert_v1(CSNodes) -> - false =:= rpc:call(hd(CSNodes), riak_cs_list_objects_utils, fold_objects_for_list_keys, []). diff --git a/riak_test/tests/list_objects_v2_test.erl b/riak_test/tests/list_objects_v2_test.erl deleted file mode 100644 index 5389399e9..000000000 --- a/riak_test/tests/list_objects_v2_test.erl +++ /dev/null @@ -1,57 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(list_objects_v2_test). - -%% @doc Integration test for list the contents of a bucket - --export([confirm/0]). - --include_lib("eunit/include/eunit.hrl"). - -confirm() -> - {UserConfig, {RiakNodes, CSNodes, _Stanchion}} = rtcs:setup(2), - assert_v2_is_default(CSNodes), - pass = list_objects_test_helper:test(UserConfig), - - ok = list_to_non_existent_bucket_many_times(RiakNodes), - rtcs:pass(). - -assert_v2_is_default(CSNodes) -> - true = rpc:call(hd(CSNodes), riak_cs_list_objects_utils, fold_objects_for_list_keys, []), - ok. - -list_to_non_existent_bucket_many_times(RiakNodes) -> - [?assertEqual({0, "404"}, - list_objects_by_anonymous( - RiakNodes, - "non-existent-bucket-" ++ integer_to_list(I))) || - I <- lists:seq(1, 30)], - ok. - -list_objects_by_anonymous(RiakNodes, Bucket) -> - Port = rtcs_config:cs_port(hd(RiakNodes)), - %% --write-out '%{http_code}': output http response status code to stdout - Cmd = "curl -s --write-out '%{http_code}' -o /dev/null http://localhost:" ++ - integer_to_list(Port) ++ "/" ++ Bucket, - rt:cmd(Cmd). - - - diff --git a/riak_test/tests/migration_15_to_20_test.erl b/riak_test/tests/migration_15_to_20_test.erl deleted file mode 100644 index 39b6ca750..000000000 --- a/riak_test/tests/migration_15_to_20_test.erl +++ /dev/null @@ -1,166 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - -%% Upgrading test case from {Riak, CS} = {1.4, 1.5} to {2.0, 2.0} -%% -%% Scenario: -%% - Setup cluster by Riak 1.4.x and CS/Stanchion 1.5.x (i.e. previous) -%% - Execute some S3 API requests and background admin jobs, 1st time -%% - Upgrade Stanchion to 2.x -%% - Upgrade partial pairs of Riak and Riak CS to 2.x -%% - Execute some S3 API requests and background admin jobs, 2nd time -%% - Upgrade remaining pairs of Riak and Riak CS to 2.x -%% - Execute some S3 API requests and background admin jobs, 3rd time -%% - Delete all S3 objects -%% - Trigger bitcask merge and wait for merge & delete finished -%% - Assert bitcask data files are shrinked to small ones - --module(migration_15_to_20_test). - --export([confirm/0]). --export([upgrade_stanchion/1, upgrade_partially/2, upgrade_remaining/2]). - --include_lib("eunit/include/eunit.hrl"). - -%% TODO: More than 1 is better --define(UPGRADE_FIRST, 1). - -confirm() -> - rt_config:set(console_log_level, info), - confirm(upgrade_with_full_ops). - -%% `upgrade_with_reduced_ops' and `no_upgrade_with_reduced_ops' are only for -%% debugging of this module and/or `cs_suites'. --spec confirm(Profile::atom()) -> pass | no_return(). -confirm(upgrade_with_full_ops) -> - SetupRes = setup_previous(), - {ok, InitialState} = cs_suites:new(SetupRes), - {ok, EvolvedState} = cs_suites:fold_with_state(InitialState, upgrade_history()), - {ok, _FinalState} = cs_suites:cleanup(EvolvedState), - rtcs:pass(); -confirm(upgrade_with_reduced_ops) -> - SetupRes = setup_previous(), - {ok, InitialState} = cs_suites:new(SetupRes, rtcs:reduced_ops()), - {ok, EvolvedState} = cs_suites:fold_with_state(InitialState, upgrade_history()), - {ok, _FinalState} = cs_suites:cleanup(EvolvedState), - rtcs:pass(); -confirm(no_upgrade_with_reduced_ops) -> - SetupRes = rtcs:setup(2, rtcs_config:configs(custom_configs(current))), - {ok, InitialState} = cs_suites:new(SetupRes, cs_suites:reduced_ops()), - {ok, EvolvedState} = cs_suites:fold_with_state(InitialState, no_upgrade_history()), - {ok, _FinalState} = cs_suites:cleanup(EvolvedState), - rtcs:pass(). - -setup_previous() -> - PrevConfigs = rtcs_config:previous_configs(custom_configs(previous)), - SetupRes = rtcs:setup(2, PrevConfigs, previous), - lager:info("rt_nodes> ~p", [rt_config:get(rt_nodes)]), - lager:info("rt_versions> ~p", [rt_config:get(rt_versions)]), - {_AdminConfig, {RiakNodes, CSNodes, StanchionNode}} = SetupRes, - rtcs:assert_versions(riak_kv, RiakNodes, "^1\.4\."), - rtcs:assert_versions(stanchion, [StanchionNode], "^1\.5\."), - rtcs:assert_versions(riak_cs, CSNodes, "^1\.5\."), - SetupRes. - -%% Custom configurations for Riak and Riak CS -%% Make data file size tiny and leeway period tight in order to confirm -%% only small data will remain in bitcask directories after deleting all -%% CS objects, run GC and merge+delete of bitcask. -custom_configs(previous) -> - [{riak, - rtcs_config:previous_riak_config([{bitcask, [{max_file_size, 4*1024*1024}]}])}, - {cs, - rtcs_config:previous_cs_config([{leeway_seconds, 1}])}]; -custom_configs(current) -> - %% This branch is only for debugging this module - [{riak, - rtcs_config:riak_config([{bitcask, [{max_file_size, 4*1024*1024}]}])}, - {cs, - rtcs_config:cs_config([{leeway_seconds, 1}])}]. - -upgrade_history() -> - [ - {cs_suites, set_node1_version, [previous]}, - {cs_suites, run, ["1-pre"]}, - {?MODULE , upgrade_stanchion, []}, - {?MODULE , upgrade_partially, [?UPGRADE_FIRST]}, - {cs_suites, run, ["2-mix"]}, - {?MODULE , upgrade_remaining, [?UPGRADE_FIRST]}, - {cs_suites, run, ["3-fin"]} - ]. - -no_upgrade_history() -> - [ - {cs_suites, set_node1_version, [current]}, - {cs_suites, run,["1st"]}, - {cs_suites, run,["2nd"]} - ]. - -upgrade_stanchion(State) -> - rtcs_exec:stop_stanchion(previous), - rtcs_config:migrate_stanchion(previous, current, cs_suites:admin_credential(State)), - rtcs_exec:start_stanchion(current), - rtcs:assert_versions(stanchion, cs_suites:nodes_of(stanchion, State), "^2\."), - {ok, State}. - -upgrade_partially(UpgradeFirstCount, State) -> - RiakNodes = cs_suites:nodes_of(riak, State), - CsNodes = cs_suites:nodes_of(cs, State), - AdminCreds = cs_suites:admin_credential(State), - {RiakUpgrades, RiakRemainings} = lists:split(UpgradeFirstCount, RiakNodes), - {CsUpgrades, CsRemainings} = lists:split(UpgradeFirstCount, CsNodes), - upgrade_nodes(AdminCreds, RiakUpgrades), - rtcs:assert_versions(riak_kv, RiakUpgrades, "^2\."), - rtcs:assert_versions(riak_cs, CsUpgrades, "^2\."), - rtcs:assert_versions(riak_kv, RiakRemainings, "^1\.4\."), - rtcs:assert_versions(riak_cs, CsRemainings, "^1\.5\."), - rt:setup_log_capture(hd(cs_suites:nodes_of(cs, State))), - {ok, NewState} = cs_suites:set_node1_version(current, State), - {ok, NewState}. - -upgrade_remaining(UpgradeFirstCount, State) -> - RiakNodes = cs_suites:nodes_of(riak, State), - CsNodes = cs_suites:nodes_of(cs, State), - AdminCreds = cs_suites:admin_credential(State), - {_RiakUpgraded, RiakRemainings} = lists:split(UpgradeFirstCount, RiakNodes), - {_CsUpgraded, CsRemainings} = lists:split(UpgradeFirstCount, CsNodes), - upgrade_nodes(AdminCreds, RiakRemainings), - rtcs:assert_versions(riak_kv, RiakRemainings, "^2\."), - rtcs:assert_versions(riak_cs, CsRemainings, "^2\."), - {ok, State}. - -%% Upgrade Riak and Riak CS pairs of nodes -upgrade_nodes(AdminCreds, RiakNodes) -> - {_, RiakCurrentVsn} = - rtcs_dev:riak_root_and_vsn(current, rt_config:get(build_type, oss)), - [begin - N = rtcs_dev:node_id(RiakNode), - rtcs_exec:stop_cs(N, previous), - ok = rt:upgrade(RiakNode, RiakCurrentVsn), - rt:wait_for_service(RiakNode, riak_kv), - ok = rtcs_config:upgrade_cs(N, AdminCreds), - rtcs:set_advanced_conf({cs, current, N}, - [{riak_cs, - [{riak_host, {"127.0.0.1", rtcs_config:pb_port(1)}}]}]), - rtcs_exec:start_cs(N, current) - end - || RiakNode <- RiakNodes], - ok = rt:wait_until_ring_converged(RiakNodes), - ok. diff --git a/riak_test/tests/migration_mixed_test.erl b/riak_test/tests/migration_mixed_test.erl deleted file mode 100644 index 189daf4f7..000000000 --- a/riak_test/tests/migration_mixed_test.erl +++ /dev/null @@ -1,141 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - -%% Upgrading test case from {Riak, CS} = {2.0, 1.5} and {1.4, 2.0} - -%% Scenario: -%% | step | riak | stanchion | cs | -%% | 1 | 1.4 | 1.5 | 1.5 | -%% | 2 | 1.4 | 2.0 | 2.0 | -%% | 3 | 2.0 | 2.0 | 1.5 | - --module(migration_mixed_test). - --export([confirm/0]). --export([upgrade_stanchion/1, - transition_to_cs20_with_kv14/1, - transition_to_cs15_with_kv20/1]). - --include_lib("eunit/include/eunit.hrl"). - -confirm() -> - rt_config:set(console_log_level, info), - SetupRes = setup_previous(), - {ok, InitialState} = cs_suites:new(SetupRes), - {ok, EvolvedState} = cs_suites:fold_with_state(InitialState, history()), - {ok, _FinalState} = cs_suites:cleanup(EvolvedState), - rtcs:pass(). - -setup_previous() -> - PrevConfigs = rtcs_config:previous_configs(custom_configs(previous)), - SetupRes = rtcs:setup(2, PrevConfigs, previous), - lager:info("rt_nodes> ~p", [rt_config:get(rt_nodes)]), - lager:info("rt_versions> ~p", [rt_config:get(rt_versions)]), - {_AdminConfig, {RiakNodes, CSNodes, StanchionNode}} = SetupRes, - rtcs:assert_versions(riak_kv, RiakNodes, "^1\.4\."), - rtcs:assert_versions(stanchion, [StanchionNode], "^1\.5\."), - rtcs:assert_versions(riak_cs, CSNodes, "^1\.5\."), - SetupRes. - -%% Custom configurations for Riak and Riak CS -%% Make data file size tiny and leeway period tight in order to confirm -%% only small data will remain in bitcask directories after deleting all -%% CS objects, run GC and merge+delete of bitcask. -custom_configs(previous) -> - [{riak, - rtcs_config:previous_riak_config([{bitcask, [{max_file_size, 4*1024*1024}]}])}, - {cs, - rtcs_config:previous_cs_config([{leeway_seconds, 1}])}]; -custom_configs(current) -> - %% This branch is only for debugging this module - [{riak, - rtcs_config:riak_config([{bitcask, [{max_file_size, 4*1024*1024}]}])}, - {cs, - rtcs_config:cs_config([{leeway_seconds, 1}])}]. - -history() -> - [ - {cs_suites, set_node1_version, [previous]}, - {cs_suites, run, ["15-14"]}, - {?MODULE , upgrade_stanchion, []}, - {?MODULE , transition_to_cs20_with_kv14, []}, - {cs_suites, run, ["20-14"]}, - {?MODULE , transition_to_cs15_with_kv20, []}, - {cs_suites, run, ["15-20"]} - ]. - -upgrade_stanchion(State) -> - rtcs_exec:stop_stanchion(previous), - rtcs_config:migrate_stanchion(previous, current, cs_suites:admin_credential(State)), - rtcs_exec:start_stanchion(current), - rtcs:assert_versions(stanchion, cs_suites:nodes_of(stanchion, State), "^2\."), - {ok, State}. - -transition_to_cs20_with_kv14(State) -> - RiakNodes = cs_suites:nodes_of(riak, State), - CsNodes = cs_suites:nodes_of(cs, State), - AdminCreds = cs_suites:admin_credential(State), - migrate_nodes_to_cs20_with_kv14(AdminCreds, RiakNodes), - rtcs:assert_versions(riak_kv, RiakNodes, "^1\.4\."), - rtcs:assert_versions(riak_cs, CsNodes, "^2\."), - rt:setup_log_capture(hd(cs_suites:nodes_of(cs, State))), - {ok, NewState} = cs_suites:set_node1_version(current, State), - {ok, NewState}. - -migrate_nodes_to_cs20_with_kv14(AdminCreds, RiakNodes) -> - [begin - N = rtcs_dev:node_id(RiakNode), - rtcs_exec:stop_cs(N, previous), - ok = rtcs_config:upgrade_cs(N, AdminCreds), - %% actually after CS 2.1.1 - rtcs:set_advanced_conf({cs, current, N}, - [{riak_cs, - [{riak_host, {"127.0.0.1", rtcs_config:pb_port(1)}}]}]), - rtcs_exec:start_cs(N, current) - end - || RiakNode <- RiakNodes], - ok. - -transition_to_cs15_with_kv20(State) -> - RiakNodes = cs_suites:nodes_of(riak, State), - CsNodes = cs_suites:nodes_of(cs, State), - AdminCreds = cs_suites:admin_credential(State), - migrate_nodes_to_cs15_with_kv20(AdminCreds, RiakNodes), - rtcs:assert_versions(riak_kv, RiakNodes, "^2\."), - rtcs:assert_versions(riak_cs, CsNodes, "^1\.5\."), - rt:setup_log_capture(hd(cs_suites:nodes_of(cs, State))), - {ok, State}. - -migrate_nodes_to_cs15_with_kv20(AdminCreds, RiakNodes) -> - {_, RiakCurrentVsn} = - rtcs_dev:riak_root_and_vsn(current, rt_config:get(build_type, oss)), - [begin - N = rtcs_dev:node_id(RiakNode), - rtcs_exec:stop_cs(N, current), - %% to check error log emptyness afterwards, truncate it here. - rtcs:truncate_error_log(N), - ok = rt:upgrade(RiakNode, RiakCurrentVsn), - rt:wait_for_service(RiakNode, riak_kv), - ok = rtcs_config:migrate_cs(current, previous, N, AdminCreds), - rtcs_exec:start_cs(N, previous) - end - || RiakNode <- RiakNodes], - rt:wait_until_ring_converged(RiakNodes), - ok. diff --git a/riak_test/tests/mp_upload_test.erl b/riak_test/tests/mp_upload_test.erl deleted file mode 100644 index c74de855e..000000000 --- a/riak_test/tests/mp_upload_test.erl +++ /dev/null @@ -1,366 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% ------------------------------------------------------------------- - --module(mp_upload_test). - -%% @doc `riak_test' module for testing multipart upload behavior. - --export([confirm/0, upload_id_present/2]). --include_lib("eunit/include/eunit.hrl"). --include("riak_cs.hrl"). - --define(TEST_BUCKET, "riak-test-bucket"). --define(TEST_KEY1, "riak_test_key1"). --define(TEST_KEY2, "riak_test_key2"). --define(PART_COUNT, 5). --define(GOOD_PART_SIZE, 5*1024*1024). --define(BAD_PART_SIZE, 2*1024*1024). - -confirm() -> - {UserConfig, {_RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup(1), - - lager:info("User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:list_objects(?TEST_BUCKET, UserConfig)), - - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - ?assertMatch([{buckets, [[{name, ?TEST_BUCKET}, _]]}], - erlcloud_s3:list_buckets(UserConfig)), - - %% Test cases - basic_upload_test_case(?TEST_BUCKET, ?TEST_KEY1, UserConfig), - ok = parts_too_small_test_case(?TEST_BUCKET, ?TEST_KEY1, UserConfig), - aborted_upload_test_case(?TEST_BUCKET, ?TEST_KEY2, UserConfig), - nonexistent_bucket_listing_test_case("fake-bucket", UserConfig), - invalid_part_number_test_case(?TEST_BUCKET, ?TEST_KEY1, UserConfig), - - %% Start 10 uploads for 10 different keys - Count1 = 10, - initiate_uploads(?TEST_BUCKET, Count1, UserConfig), - - %% Successively list the in-progress uploads, verify the output, - %% and abort an upload until all uploads are aborted - abort_and_verify_uploads(?TEST_BUCKET, Count1, UserConfig), - - %% Start 100 uploads for 100 different keys - Count2 = 100, - initiate_uploads(?TEST_BUCKET, Count2, UserConfig), - - %% List uploads and verify all 100 are returned - UploadList1 = erlcloud_s3_multipart:list_uploads(?TEST_BUCKET, [], UserConfig), - verify_upload_list(UploadList1, Count2), - - %% List uploads and verify all 100 are returned with empty options. - %% Some s3 tools send empty parameters. - EmptyOptions = [{delimiter, ""}, {prefix, ""}], - UploadList1 = erlcloud_s3_multipart:list_uploads(?TEST_BUCKET, EmptyOptions, UserConfig), - verify_upload_list(UploadList1, Count2), - - %% @TODO Use max-uploads option to request first 50 results - %% Options1 = [{max_uploads, 50}], - %% UploadList2 = erlcloud_s3_multipart:list_uploads(?TEST_BUCKET, Options1, UserConfig), - %% verify_upload_list(ObjList1, 50, 100), - - %% Initiate uploads for 2 sets of 4 objects with keys that have - %% a common subdirectory - Prefix1 = "0/prefix1/", - Prefix2 = "0/prefix2/", - initiate_uploads(?TEST_BUCKET, 4, Prefix1, UserConfig), - initiate_uploads(?TEST_BUCKET, 4, Prefix2, UserConfig), - - %% @TODO Uncomment this block once support for `max-uploads' is done. - %% Use `max-uploads', `prefix' and `delimiter' to get first 50 - %% results back and verify results are truncated and 2 common - %% prefixes are returned. - %% Options2 = [{max_uploads, 50}, {prefix, "0/"}, {delimiter, "/"}], - %% UploadList3 = erlcloud_s3_multipart:list_uploads(?TEST_BUCKET, Options2, UserConfig), - %% CommonPrefixes = proplists:get_value(common_prefixes, UploadList3), - %% ?assert(lists:member([{prefix, Prefix1}], CommonPrefixes)), - %% ?assert(lists:member([{prefix, Prefix2}], CommonPrefixes)), - %% verify_upload_list(UploadList3, 48, 100), - - %% @TODO Replace this with the commented-out code blocks above and - %% below this one once the support for `max-uploads' is in place. - %% Use `prefix' and `delimiter' to get the active uploads back and - %% verify that 2 common prefixes are returned. - Options2 = [{prefix, "0/"}, {delimiter, "/"}], - UploadList3 = erlcloud_s3_multipart:list_uploads(?TEST_BUCKET, Options2, UserConfig), - CommonPrefixes1 = proplists:get_value(common_prefixes, UploadList3), - ?assert(lists:member([{prefix, Prefix1}], CommonPrefixes1)), - ?assert(lists:member([{prefix, Prefix2}], CommonPrefixes1)), - ?assertEqual([], proplists:get_value(uploads, UploadList3)), - - %% Use `delimiter' to get the active uploads back and - %% verify that 2 common prefixes are returned. - Options3 = [{delimiter, "/"}], - UploadList4 = erlcloud_s3_multipart:list_uploads(?TEST_BUCKET, Options3, UserConfig), - CommonPrefixes2 = proplists:get_value(common_prefixes, UploadList4), - ?assert(lists:member([{prefix, "0/"}], CommonPrefixes2)), - verify_upload_list(UploadList4, Count2), - - %% @TODO Uncomment this block once support for `max-uploads' is done. - %% Use `key-marker' and `upload-id-marker' to request - %% remainder of in-progress upload results - %% Options3 = [{key_marker, "48"}, {upload_id_marker, "X"}], - %% UploadList4 = erlcloud_s3_multipart:list_uploads(?TEST_BUCKET, Options3, UserConfig), - %% verify_upload_list(UploadList4, 52, 100, 49), - - %% Abort all uploads for the bucket - abort_uploads(?TEST_BUCKET, UserConfig), - - lager:info("deleting bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:delete_bucket(?TEST_BUCKET, UserConfig)), - - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:list_objects(?TEST_BUCKET, UserConfig)), - rtcs:pass(). - -upload_and_assert_parts(Bucket, Key, UploadId, PartCount, Size, Config) -> - [{X, rtcs_multipart:upload_and_assert_part(Bucket, - Key, - UploadId, - X, - generate_part_data(X, Size), - Config)} - || X <- lists:seq(1, PartCount)]. - - -generate_part_data(X, Size) - when 0 =< X, X =< 255 -> - list_to_binary( - [X || _ <- lists:seq(1, Size)]). - -aborted_upload_test_case(Bucket, Key, Config) -> - %% Initiate a multipart upload - lager:info("Initiating multipart upload"), - InitUploadRes = erlcloud_s3_multipart:initiate_upload(Bucket, Key, [], [], Config), - UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), - lager:info("Upload ID: ~p", [UploadId]), - - %% Verify the upload id is in list_uploads results and - %% that the bucket information is correct - UploadsList1 = erlcloud_s3_multipart:list_uploads(Bucket, [], Config), - Uploads1 = proplists:get_value(uploads, UploadsList1, []), - ?assertEqual(Bucket, proplists:get_value(bucket, UploadsList1)), - ?assert(upload_id_present(UploadId, Uploads1)), - - lager:info("Uploading parts"), - _EtagList = upload_and_assert_parts(Bucket, - Key, - UploadId, - ?PART_COUNT, - ?GOOD_PART_SIZE, - Config), - - %% List bucket contents and verify empty - ObjList1= erlcloud_s3:list_objects(Bucket, Config), - ?assertEqual([], proplists:get_value(contents, ObjList1)), - - %% Abort upload - lager:info("Aborting multipart upload"), - ?assertEqual(ok, erlcloud_s3_multipart:abort_upload(Bucket, - Key, - UploadId, - Config)), - - %% List uploads and verify upload id is no longer present - UploadsList2 = erlcloud_s3_multipart:list_uploads(Bucket, [], Config), - Uploads2 = proplists:get_value(uploads, UploadsList2, []), - ?assertNot(upload_id_present(UploadId, Uploads2)), - - %% List bucket contents and verify key is still not listed - ObjList2 = erlcloud_s3:list_objects(Bucket, Config), - ?assertEqual([], proplists:get_value(contents, ObjList2)). - -nonexistent_bucket_listing_test_case(Bucket, Config) -> - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3_multipart:list_uploads(Bucket, [], Config)). - -invalid_part_number_test_case(Bucket, Key, Config) -> - InitUploadRes = erlcloud_s3_multipart:initiate_upload(Bucket, Key, [], [], Config), - UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), - InvalidPartNumber = ?DEFAULT_MAX_PART_NUMBER + 1, - {'EXIT', {{aws_error, {http_error, 400, _, Body}}, _Backtrace}} = - (catch erlcloud_s3_multipart:upload_part(Bucket, - Key, - UploadId, - InvalidPartNumber, - generate_part_data(0, ?GOOD_PART_SIZE), - Config)), - ErrorPattern = - "InvalidArgument" - "Part number must be an integer between 1 and 10000, inclusive", - ?assertMatch({match, _}, re:run(Body, ErrorPattern, [multiline])), - abort_uploads(Bucket, Config). - - -basic_upload_test_case(Bucket, Key, Config) -> - %% Initiate a multipart upload - lager:info("Initiating multipart upload"), - InitUploadRes = erlcloud_s3_multipart:initiate_upload(Bucket, Key, [], [], Config), - UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), - lager:info("Upload ID: ~p", [UploadId]), - - %% Verify the upload id is in list_uploads results and - %% that the bucket information is correct - UploadsList1 = erlcloud_s3_multipart:list_uploads(Bucket, [], Config), - Uploads1 = proplists:get_value(uploads, UploadsList1, []), - ?assertEqual(Bucket, proplists:get_value(bucket, UploadsList1)), - ?assert(upload_id_present(UploadId, Uploads1)), - - lager:info("Uploading parts"), - EtagList = upload_and_assert_parts(Bucket, - Key, - UploadId, - ?PART_COUNT, - ?GOOD_PART_SIZE, - Config), - - %% List bucket contents and verify empty - ObjList1= erlcloud_s3:list_objects(Bucket, Config), - ?assertEqual([], proplists:get_value(contents, ObjList1)), - - %% Complete upload - lager:info("Completing multipart upload"), - - ?assertEqual(ok, erlcloud_s3_multipart:complete_upload(Bucket, - Key, - UploadId, - EtagList, - Config)), - - %% List uploads and verify upload id is no longer present - UploadsList2 = erlcloud_s3_multipart:list_uploads(Bucket, [], Config), - Uploads2 = proplists:get_value(uploads, UploadsList2, []), - ?assertNot(upload_id_present(UploadId, Uploads2)), - - %% List bucket contents and verify key is now listed - ObjList2 = erlcloud_s3:list_objects(Bucket, Config), - ?assertEqual([Key], - [proplists:get_value(key, O) || - O <- proplists:get_value(contents, ObjList2)]), - - %% Get the object: it better be what we expect - ExpectedObj = list_to_binary([generate_part_data(X, ?GOOD_PART_SIZE) || - X <- lists:seq(1, ?PART_COUNT)]), - GetRes = erlcloud_s3:get_object(Bucket, Key, Config), - ?assertEqual(ExpectedObj, proplists:get_value(content, GetRes)), - - %% Delete uploaded object - erlcloud_s3:delete_object(Bucket, Key, Config), - - %% List bucket contents and verify empty - ObjList3 = erlcloud_s3:list_objects(Bucket, Config), - ?assertEqual([], proplists:get_value(contents, ObjList3)). - -parts_too_small_test_case(Bucket, Key, Config) -> - %% Initiate a multipart upload - lager:info("Initiating multipart upload (bad)"), - InitUploadRes = erlcloud_s3_multipart:initiate_upload(Bucket, Key, [], [], Config), - UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), - lager:info("Upload ID: ~p", [UploadId]), - - lager:info("Uploading parts (bad)"), - EtagList = upload_and_assert_parts(Bucket, - Key, - UploadId, - ?PART_COUNT, - ?BAD_PART_SIZE, - Config), - - %% Complete upload - lager:info("Completing multipart upload (bad)"), - - {'EXIT', {{aws_error, {http_error, 400, _, Body}}, _Backtrace}} = - (catch erlcloud_s3_multipart:complete_upload(Bucket, - Key, - UploadId, - EtagList, - Config)), - ?assertMatch({match, _}, - re:run(Body, "EntityTooSmall", [multiline])), - - Abort = fun() -> erlcloud_s3_multipart:abort_upload(Bucket, - Key, - UploadId, - Config) - end, - ?assertEqual(ok, Abort()), - ?assertError({aws_error, {http_error, 404, _, _}}, Abort()), - ok. - -initiate_uploads(Bucket, Count, Config) -> - initiate_uploads(Bucket, Count, [], Config). - -initiate_uploads(Bucket, Count, KeyPrefix, Config) -> - [erlcloud_s3_multipart:initiate_upload(Bucket, - KeyPrefix ++ integer_to_list(X), - "text/plain", - [], - Config) || X <- lists:seq(1, Count)]. - -verify_upload_list(UploadList, ExpectedCount) -> - verify_upload_list(UploadList, ExpectedCount, ExpectedCount, 1). - -%% verify_upload_list(UploadList, ExpectedCount, TotalCount) -> -%% verify_upload_list(UploadList, ExpectedCount, TotalCount, 1). - -verify_upload_list(UploadList, ExpectedCount, TotalCount, 1) - when ExpectedCount =:= TotalCount -> - ?assertEqual(lists:sort([integer_to_list(X) || X <- lists:seq(1, ExpectedCount)]), - [proplists:get_value(key, O) || - O <- proplists:get_value(uploads, UploadList)]); -verify_upload_list(UploadList, ExpectedCount, TotalCount, Offset) -> - ?assertEqual(lists:sublist( - lists:sort([integer_to_list(X) || X <- lists:seq(1, TotalCount)]), - Offset, - ExpectedCount), - [proplists:get_value(key, O) || - O <- proplists:get_value(uploads, UploadList)]). - -abort_and_verify_uploads(Bucket, 0, Config) -> - verify_upload_list(erlcloud_s3_multipart:list_uploads(Bucket, [], Config), 0), - ok; -abort_and_verify_uploads(Bucket, Count, Config) -> - UploadList = erlcloud_s3_multipart:list_uploads(Bucket, [], Config), - verify_upload_list(UploadList, Count), - Key = integer_to_list(Count), - UploadId = upload_id_for_key(Key, UploadList), - erlcloud_s3_multipart:abort_upload(Bucket, Key, UploadId, Config), - abort_and_verify_uploads(Bucket, Count-1, Config). - -upload_id_present(UploadId, UploadList) -> - [] /= [UploadData || UploadData <- UploadList, - proplists:get_value(upload_id, UploadData) =:= UploadId]. - -upload_id_for_key(Key, UploadList) -> - Uploads = proplists:get_value(uploads, UploadList), - [KeyUpload] = [UploadData || UploadData <- Uploads, - proplists:get_value(key, UploadData) =:= Key], - proplists:get_value(upload_id, KeyUpload). - -abort_uploads(Bucket, Config) -> - UploadList = erlcloud_s3_multipart:list_uploads(Bucket, [], Config), - [begin - Key = proplists:get_value(key, Upload), - UploadId = proplists:get_value(upload_id, Upload), - erlcloud_s3_multipart:abort_upload(Bucket, Key, UploadId, Config) - end || Upload <- proplists:get_value(uploads, UploadList)]. diff --git a/riak_test/tests/object_get_conditional_test.erl b/riak_test/tests/object_get_conditional_test.erl deleted file mode 100644 index aed9b645e..000000000 --- a/riak_test/tests/object_get_conditional_test.erl +++ /dev/null @@ -1,121 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(object_get_conditional_test). - -%% @doc `riak_test' module for testing conditional object get behavior. - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). - -%% keys for non-multipart objects --define(TEST_BUCKET, "riak-test-bucket"). --define(TEST_KEY, "riak_test_key1"). --define(ETAG_NOTEXIST, "\"NoTeXiSt\""). - -confirm() -> - {UserConfig, {_RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup(1), - - lager:info("User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - ?assertMatch([{buckets, [[{name, ?TEST_BUCKET}, _]]}], - erlcloud_s3:list_buckets(UserConfig)), - - {Content, Etag, ThreeDates} = - setup_object(?TEST_BUCKET, ?TEST_KEY, UserConfig), - lager:debug("Etag: ~p~n", [Etag]), - lager:debug("{Before, LastModified, After}: ~p~n", [ThreeDates]), - - last_modified_condition_test_cases(?TEST_BUCKET, ?TEST_KEY, - Content, ThreeDates, UserConfig), - match_condition_test_cases(?TEST_BUCKET, ?TEST_KEY, - Content, Etag, UserConfig), - rtcs:pass(). - -setup_object(Bucket, Key, UserConfig) -> - Content = crypto:rand_bytes(400), - erlcloud_s3:put_object(Bucket, Key, Content, UserConfig), - Obj = erlcloud_s3:get_object(Bucket, Key, UserConfig), - ?assertEqual(Content, proplists:get_value(content, Obj)), - Etag = proplists:get_value(etag, Obj), - {Before, LastModified, After} = before_and_after_of_last_modified(Obj), - {Content, Etag, {Before, LastModified, After}}. - -before_and_after_of_last_modified(Obj) -> - Headers = proplists:get_value(headers, Obj), - LastModified = proplists:get_value("Last-Modified", Headers), - LastModifiedErlDate = httpd_util:convert_request_date(LastModified), - LastModifiedSec = calendar:datetime_to_gregorian_seconds(LastModifiedErlDate), - Before = rfc1123_date(LastModifiedSec - 1), - After = rfc1123_date(LastModifiedSec + 1), - %% Sleep 1 sec because webmachine ignores if-modified-since header - %% if it is future date. - timer:sleep(1000), - {Before, LastModified, After}. - -rfc1123_date(GregorianSecs) -> - ErlDate = calendar:gregorian_seconds_to_datetime(GregorianSecs), - riak_cs_wm_utils:iso_8601_to_rfc_1123(riak_cs_wm_utils:iso_8601_datetime(ErlDate)). - -last_modified_condition_test_cases(Bucket, Key, ExpectedContent, - {Before, LastModified, After}, UserConfig) -> - normal_get_case(Bucket, Key, ExpectedContent, - [{if_modified_since, Before}], UserConfig), - not_modified_case(Bucket, Key, - [{if_modified_since, LastModified}], UserConfig), - not_modified_case(Bucket, Key, - [{if_modified_since, After}], UserConfig), - - normal_get_case(Bucket, Key, ExpectedContent, - [{if_unmodified_since, After}], UserConfig), - precondition_failed_case(Bucket, Key, - [{if_unmodified_since, Before}], UserConfig). - -match_condition_test_cases(Bucket, Key, ExpectedContent, - Etag, UserConfig) -> - normal_get_case(Bucket, Key, ExpectedContent, - [{if_match, Etag}], UserConfig), - normal_get_case(Bucket, Key, ExpectedContent, - [{if_match, Etag ++ ", " ++ ?ETAG_NOTEXIST}], UserConfig), - precondition_failed_case(Bucket, Key, - [{if_match, ?ETAG_NOTEXIST}], UserConfig), - - normal_get_case(Bucket, Key, ExpectedContent, - [{if_none_match, ?ETAG_NOTEXIST}], UserConfig), - not_modified_case(Bucket, Key, - [{if_none_match, Etag}], UserConfig), - not_modified_case(Bucket, Key, - [{if_none_match, Etag ++ ", " ++ ?ETAG_NOTEXIST}], UserConfig). - -normal_get_case(Bucket, Key, ExpectedContent, Options, UserConfig) -> - Obj = erlcloud_s3:get_object(Bucket, Key, Options, UserConfig), - ?assertEqual(ExpectedContent, proplists:get_value(content, Obj)). - -not_modified_case(Bucket, Key, Options, UserConfig) -> - ?assertError({aws_error, {http_error, 304, _, _Body}}, - erlcloud_s3:get_object(Bucket, Key, Options, UserConfig)). - -precondition_failed_case(Bucket, Key, Options, UserConfig) -> - ?assertError({aws_error, {http_error, 412, _, _Body}}, - erlcloud_s3:get_object(Bucket, Key, Options, UserConfig)). diff --git a/riak_test/tests/object_get_test.erl b/riak_test/tests/object_get_test.erl deleted file mode 100644 index 06324bcdc..000000000 --- a/riak_test/tests/object_get_test.erl +++ /dev/null @@ -1,283 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(object_get_test). - -%% @doc `riak_test' module for testing object get behavior. - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). --include_lib("xmerl/include/xmerl.hrl"). - -%% keys for non-multipart objects --define(TEST_BUCKET, "riak-test-bucket"). --define(KEY_SINGLE_BLOCK, "riak_test_key1"). --define(KEY_MULTIPLE_BLOCK, "riak_test_key2"). - -%% keys for multipart uploaded objects --define(KEY_MP_TINY, "riak_test_mp_tiny"). % single part, single block --define(KEY_MP_SMALL, "riak_test_mp_small"). % single part, multiple blocks --define(KEY_MP_LARGE, "riak_test_mp_large"). % multiple parts - - -confirm() -> - {UserConfig, {_RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup(1), - - lager:info("User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - ?assertMatch([{buckets, [[{name, ?TEST_BUCKET}, _]]}], - erlcloud_s3:list_buckets(UserConfig)), - - non_mp_get_cases(UserConfig), - mp_get_cases(UserConfig), - timestamp_skew_cases(UserConfig), - long_key_cases(UserConfig), - rtcs:pass(). - -non_mp_get_cases(UserConfig) -> - %% setup objects - SingleBlock = crypto:rand_bytes(400), - erlcloud_s3:put_object(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, SingleBlock, UserConfig), - MultipleBlock = crypto:rand_bytes(4000000), % not aligned to block boundary - erlcloud_s3:put_object(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, UserConfig), - - %% basic GET test cases - basic_get_test_case(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, SingleBlock, UserConfig), - basic_get_test_case(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, UserConfig), - - %% GET after nval=1 GET failure - rt_intercept:add(rtcs:cs_node(1), {riak_cs_block_server, [{{get_block_local, 6}, get_block_local_insufficient_vnode_at_nval1}]}), - Res = erlcloud_s3:get_object(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, UserConfig), - ?assertEqual(SingleBlock, proplists:get_value(content, Res)), - rt_intercept:clean(rtcs:cs_node(1), riak_cs_block_server), - - %% Range GET for single-block object test cases - [range_get_test_case(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, SingleBlock, - Range, UserConfig) - || Range <- [{10, 20}, - {0, none}, {none, 10}, - {0, 0}, {0, 99}, {0, 1000000}]], - - %% Range GET for multiple-block object test cases - [range_get_test_case(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, - {0, End}, UserConfig) - || End <- [mb(1)-2, mb(1)-1, mb(1), mb(1)+1]], - [range_get_test_case(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, - {Start, mb(2)}, UserConfig) - || Start <- [mb(1)-2, mb(1)-1, mb(1), mb(1)+1]], - range_get_test_case(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, - {100, mb(3)}, UserConfig), - range_get_test_case(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, - {0, none}, UserConfig), - - %% Multiple ranges, CS returns whole resources. - multiple_range_get_test_case(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, - [{10, 20}, {30, 50}], UserConfig), - multiple_range_get_test_case(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, - [{10, 50}, {20, 50}], UserConfig), - - %% Invalid ranges - LastPosExceeded = byte_size(MultipleBlock), - invalid_range_get_test_case(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, - [{LastPosExceeded, LastPosExceeded + 10}], UserConfig), - invalid_range_get_test_case(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, - [{20, 10}], UserConfig), - ok. - -mp_get_cases(UserConfig) -> - TinyContent = multipart_upload(?TEST_BUCKET, ?KEY_MP_TINY, - [400], UserConfig), - SmallContent = multipart_upload(?TEST_BUCKET, ?KEY_MP_SMALL, - [mb(3)], UserConfig), - LargeContent = multipart_upload(?TEST_BUCKET, ?KEY_MP_LARGE, - [mb(10), mb(5), mb(9) + 123, mb(6), 400], % 30MB + 523 B - UserConfig), - - %% Range GET for single part / single block - [range_get_test_case(?TEST_BUCKET, ?KEY_MP_TINY, TinyContent, - Range, UserConfig) - || Range <- [{10, 20}, - {0, none}, {none, 10}, - {0, 0}, {0, 99}, {0, 1000000}]], - - %% Range GET for single part / multiple blocks - [range_get_test_case(?TEST_BUCKET, ?KEY_MP_SMALL, SmallContent, - {Start, End}, UserConfig) - || Start <- [100, mb(1)+100], - End <- [mb(1)+100, mb(3)-1, mb(4)]], - - %% Range GET for multiple parts / multiple blocks - [range_get_test_case(?TEST_BUCKET, ?KEY_MP_LARGE, LargeContent, - {Start, End}, UserConfig) - || Start <- [mb(1), mb(16)], - End <- [mb(16), mb(30), mb(30) + 500, mb(1000)]], - ok. - -timestamp_skew_cases(UserConfig) -> - BucketName = "timestamp-skew-cases", - KeyName = "timestamp-skew-cases", - Data = <<"bark! bark! bark!!!">>, - ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), - erlcloud_s3:put_object(BucketName, KeyName, Data, UserConfig), - - meck:new(httpd_util, [passthrough]), - %% To emulate clock skew, override erlang:localtime/0 to - %% enable random walk time, as long as erlcloud_s3 uses - %% httpd_util:rfc1123_date/1 for generating timestamp of - %% HTTP request header. - %% `Date = httpd_util:rfc1123_date(erlang:localtime()),` - meck:expect(httpd_util, rfc1123_date, - fun(Localtime) -> - Seconds = calendar:datetime_to_gregorian_seconds(Localtime), - SkewedTime = calendar:gregorian_seconds_to_datetime(Seconds - 987), - Date = meck:passthrough([SkewedTime]), - lager:info("Clock skew: ~p => ~p => ~p", [Localtime, SkewedTime, Date]), - Date - end), - try - erlcloud_s3:get_object(BucketName, KeyName, UserConfig) - catch - error:{aws_error, {http_error, 403, _, Body0}} -> - Body = unicode:characters_to_list(Body0), - #xmlElement{name = 'Error'} = XML = element(1,xmerl_scan:string(Body)), - ?assertEqual("RequestTimeTooSkewed", erlcloud_xml:get_text("/Error/Code", XML)), - ErrMsg = "The difference between the request time and the current time is too large.", - ?assertEqual(ErrMsg, erlcloud_xml:get_text("/Error/Message", XML)); - E:R -> - lager:error("~p:~p", [E, R]), - ?assert(false) - after - meck:unload(httpd_util) - end. - -long_key_cases(UserConfig) -> - LongKey = binary_to_list(binary:copy(<<"a">>, 1024)), - TooLongKey = binary_to_list(binary:copy(<<"b">>, 1025)), - Data = <<"pocketburger">>, - ?assertEqual([{version_id,"null"}], - erlcloud_s3:put_object(?TEST_BUCKET, LongKey, Data, UserConfig)), - ErrorString = "" - "KeyTooLongErrorYour key is too long1025" - "1024", - ?assertError({aws_error, {http_error, 400, [], ErrorString}}, - erlcloud_s3:put_object(?TEST_BUCKET, TooLongKey, Data, UserConfig)). - -mb(MegaBytes) -> - MegaBytes * 1024 * 1024. - -basic_get_test_case(Bucket, Key, ExpectedContent, Config) -> - Obj = erlcloud_s3:get_object(Bucket, Key, Config), - assert_whole_content(ExpectedContent, Obj). - -assert_whole_content(ExpectedContent, ResultObj) -> - Content = proplists:get_value(content, ResultObj), - ContentLength = proplists:get_value(content_length, ResultObj), - ?assertEqual(byte_size(ExpectedContent), list_to_integer(ContentLength)), - ?assertEqual(byte_size(ExpectedContent), byte_size(Content)), - ?assertEqual(ExpectedContent, Content). - -range_get_test_case(Bucket, Key, WholeContent, {Start, End}, Config) -> - Range = format_ranges([{Start, End}]), - Obj = erlcloud_s3:get_object(Bucket, Key, [{range, Range}], Config), - Content = proplists:get_value(content, Obj), - ContentLength = proplists:get_value(content_length, Obj), - WholeSize = byte_size(WholeContent), - {Skip, Length} = range_skip_length({Start, End}, WholeSize), - ?assertEqual(Length, list_to_integer(ContentLength)), - ?assertEqual(Length, byte_size(Content)), - assert_content_range(Skip, Length, WholeSize, Obj), - ExpectedContent = binary:part(WholeContent, Skip, Length), - ?assertEqual(ExpectedContent, Content). - -multiple_range_get_test_case(Bucket, Key, WholeContent, Ranges, Config) -> - RangeValue = format_ranges(Ranges), - Obj = erlcloud_s3:get_object(Bucket, Key, [{range, RangeValue}], Config), - assert_whole_content(WholeContent, Obj). - -invalid_range_get_test_case(Bucket, Key, _WholeContent, Ranges, Config) -> - RangeValue = format_ranges(Ranges), - {'EXIT', {{aws_error, {http_error, 416, _, Body}}, _Backtrace}} = - (catch erlcloud_s3:get_object(Bucket, Key, [{range, RangeValue}], Config)), - ?assertMatch({match, _}, - re:run(Body, "InvalidRange", [multiline])). - -format_ranges(Ranges) -> - Formatted = [format_range(Range) || Range <- Ranges], - io_lib:format("bytes=~s", [string:join(Formatted, ",")]). - -format_range(Range) -> - RangeStr = case Range of - {none, End} -> - io_lib:format("-~B", [End]); - {Start, none} -> - io_lib:format("~B-", [Start]); - {Start, End} -> - io_lib:format("~B-~B", [Start, End]) - end, - lists:flatten(RangeStr). - -assert_content_range(Skip, Length, Size, Obj) -> - Expected = lists:flatten( - io_lib:format("bytes ~B-~B/~B", [Skip, Skip + Length - 1, Size])), - Headers = proplists:get_value(headers, Obj), - ContentRange = proplists:get_value("Content-Range", Headers), - ?assertEqual(Expected, ContentRange). - -%% TODO: riak_test includes its own mochiweb by escriptizing. -%% End position which is lager than size is fixed on the branch 1.5 of basho/mochweb: -%% https://github.com/basho/mochiweb/commit/38992be7822ddc1b8e6f318ba8e73fc8c0b7fd22 -%% Accept range end position which exceededs the resource size -%% After mochiweb is tagged, change riakhttpc and webmachine's deps to the tag. -%% So this function should be removed and replaced by mochiweb_http:range_skip_length/2. -range_skip_length(Spec, Size) -> - case Spec of - {Start, End} when is_integer(Start), is_integer(End), - 0 =< Start, Start < Size, Size =< End -> - {Start, Size - Start}; - _ -> - mochiweb_http:range_skip_length(Spec, Size) - end. - -multipart_upload(Bucket, Key, Sizes, Config) -> - InitRes = erlcloud_s3_multipart:initiate_upload( - Bucket, Key, "text/plain", [], Config), - UploadId = erlcloud_xml:get_text( - "/InitiateMultipartUploadResult/UploadId", InitRes), - Content = upload_parts(Bucket, Key, UploadId, Config, 1, Sizes, [], []), - basic_get_test_case(Bucket, Key, Content, Config), - Content. - -upload_parts(Bucket, Key, UploadId, Config, _PartCount, [], Contents, Parts) -> - ?assertEqual(ok, erlcloud_s3_multipart:complete_upload( - Bucket, Key, UploadId, lists:reverse(Parts), Config)), - iolist_to_binary(lists:reverse(Contents)); -upload_parts(Bucket, Key, UploadId, Config, PartCount, [Size | Sizes], Contents, Parts) -> - Content = crypto:rand_bytes(Size), - {RespHeaders, _UploadRes} = erlcloud_s3_multipart:upload_part( - Bucket, Key, UploadId, PartCount, Content, Config), - PartEtag = proplists:get_value("ETag", RespHeaders), - lager:debug("UploadId: ~p~n", [UploadId]), - lager:debug("PartEtag: ~p~n", [PartEtag]), - upload_parts(Bucket, Key, UploadId, Config, PartCount + 1, - Sizes, [Content | Contents], [{PartCount, PartEtag} | Parts]). diff --git a/riak_test/tests/put_copy_test.erl b/riak_test/tests/put_copy_test.erl deleted file mode 100644 index 96799701a..000000000 --- a/riak_test/tests/put_copy_test.erl +++ /dev/null @@ -1,355 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- --module(put_copy_test). - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). - --include_lib("erlcloud/include/erlcloud_aws.hrl"). - --define(assert403(X), - ?assertError({aws_error, {http_error, 403, _, _}}, (X))). --define(assertHeader(Key, Expected, Props), - ?assertEqual(Expected, - proplists:get_value(Key, proplists:get_value(headers, Props)))). - --define(BUCKET, "put-copy-bucket-test"). --define(KEY, "pocket"). - --define(DATA0, <<"pocket">>). - --define(BUCKET2, "put-target-bucket"). --define(KEY2, "sidepocket"). --define(KEY3, "superpocket"). --define(BUCKET3, "the-other-put-target-bucket"). --define(BUCKET4, "no-cl-bucket"). --define(SRC_KEY, "source"). --define(TGT_KEY, "target"). --define(MP_TGT_KEY, "mp-target"). --define(REPLACE_KEY, "replace-target"). - -confirm() -> - {UserConfig, {RiakNodes, _CSNodes, _}} = rtcs:setup(1), - ?assertEqual(ok, erlcloud_s3:create_bucket(?BUCKET, UserConfig)), - Data = ?DATA0, - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(?BUCKET, ?KEY, Data, UserConfig)), - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(?BUCKET, ?KEY2, Data, UserConfig)), - - RiakNode = hd(RiakNodes), - UserConfig2 = rtcs_admin:create_user(RiakNode, 1), - UserConfig3 = rtcs_admin:create_user(RiakNode, 1), - - ?assertEqual(ok, erlcloud_s3:create_bucket(?BUCKET2, UserConfig)), - ?assertEqual(ok, erlcloud_s3:create_bucket(?BUCKET3, UserConfig2)), - - ok = verify_simple_copy(UserConfig), - ok = verify_others_copy(UserConfig, UserConfig2), - ok = verify_multipart_copy(UserConfig), - ok = verify_security(UserConfig, UserConfig2, UserConfig3), - ok = verify_source_not_found(UserConfig), - ok = verify_replace_usermeta(UserConfig), - ok = verify_without_cl_header(UserConfig), - - ?assertEqual([{delete_marker, false}, {version_id, "null"}], - erlcloud_s3:delete_object(?BUCKET, ?KEY, UserConfig)), - ?assertEqual([{delete_marker, false}, {version_id, "null"}], - erlcloud_s3:delete_object(?BUCKET, ?KEY2, UserConfig)), - ?assertEqual([{delete_marker, false}, {version_id, "null"}], - erlcloud_s3:delete_object(?BUCKET2, ?KEY2, UserConfig)), - ?assertEqual([{delete_marker, false}, {version_id, "null"}], - erlcloud_s3:delete_object(?BUCKET3, ?KEY, UserConfig2)), - rtcs:pass(). - - -verify_simple_copy(UserConfig) -> - - ?assertEqual([{copy_source_version_id, "false"}, {version_id, "null"}], - erlcloud_s3:copy_object(?BUCKET2, ?KEY2, ?BUCKET, ?KEY, UserConfig)), - - Props = erlcloud_s3:get_object(?BUCKET2, ?KEY2, UserConfig), - lager:debug("copied object: ~p", [Props]), - ?assertEqual(?DATA0, proplists:get_value(content, Props)), - - ok. - - -verify_others_copy(UserConfig, OtherUserConfig) -> - %% try copy to fail, because no permission - ?assert403(erlcloud_s3:copy_object(?BUCKET3, ?KEY, ?BUCKET, ?KEY, OtherUserConfig)), - - %% set key public - Acl = [{acl, public_read}], - ?assertEqual([{version_id,"null"}], - erlcloud_s3:put_object(?BUCKET, ?KEY, ?DATA0, - Acl, [], UserConfig)), - - %% make sure observable from Other - Props = erlcloud_s3:get_object(?BUCKET, ?KEY, OtherUserConfig), - ?assertEqual(?DATA0, proplists:get_value(content, Props)), - - %% try copy - ?assertEqual([{copy_source_version_id, "false"}, {version_id, "null"}], - erlcloud_s3:copy_object(?BUCKET3, ?KEY, ?BUCKET, ?KEY, OtherUserConfig)), - - Props2 = erlcloud_s3:get_object(?BUCKET3, ?KEY, OtherUserConfig), - lager:debug("copied object: ~p", [Props2]), - ?assertEqual(?DATA0, proplists:get_value(content, Props2)), - ok. - -verify_multipart_copy(UserConfig) -> - %% ~6MB iolist - MillionPockets = binary:copy(<<"pocket">>, 1000000), - MillionBurgers = binary:copy(<<"burger">>, 1000000), - - ?assertEqual([{version_id,"null"}], - erlcloud_s3:put_object(?BUCKET, ?KEY, MillionPockets, UserConfig)), - ?assertEqual([{version_id,"null"}], - erlcloud_s3:put_object(?BUCKET, ?KEY2, MillionBurgers, UserConfig)), - - InitUploadRes=erlcloud_s3_multipart:initiate_upload(?BUCKET2, ?KEY3, "text/plain", [], UserConfig), - UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), - lager:info("~p ~p", [InitUploadRes, UploadId]), - - {RespHeaders1, _} = rtcs_multipart:upload_part_copy(?BUCKET2, ?KEY3, UploadId, 1, - ?BUCKET, ?KEY, UserConfig), - lager:debug("RespHeaders1: ~p", [RespHeaders1]), - Etag1 = rtcs_multipart:assert_part(?BUCKET2, ?KEY3, UploadId, 1, UserConfig, RespHeaders1), - - {RespHeaders2, _} = rtcs_multipart:upload_part_copy(?BUCKET2, ?KEY3, UploadId, 2, - ?BUCKET, ?KEY2, UserConfig), - lager:debug("RespHeaders2: ~p", [RespHeaders2]), - Etag2 = rtcs_multipart:assert_part(?BUCKET2, ?KEY3, UploadId, 2, UserConfig, RespHeaders2), - - List = erlcloud_s3_multipart:list_uploads(?BUCKET2, [], UserConfig), - lager:debug("List: ~p", [List]), - - EtagList = [ {1, Etag1}, {2, Etag2} ], - ?assertEqual(ok, erlcloud_s3_multipart:complete_upload(?BUCKET2, - ?KEY3, - UploadId, - EtagList, - UserConfig)), - - UploadsList2 = erlcloud_s3_multipart:list_uploads(?BUCKET2, [], UserConfig), - Uploads2 = proplists:get_value(uploads, UploadsList2, []), - ?assertNot(mp_upload_test:upload_id_present(UploadId, Uploads2)), - - MillionPocketBurgers = iolist_to_binary([MillionPockets, MillionBurgers]), - Props = erlcloud_s3:get_object(?BUCKET2, ?KEY3, UserConfig), - %% lager:debug("~p> Props => ~p", [?LINE, Props]), - ?assertEqual(MillionPocketBurgers, proplists:get_value(content, Props)), - ok. - -verify_security(Alice, Bob, Charlie) -> - AlicesBucket = "alice", - AlicesPublicBucket = "alice-public", - AlicesObject = "alices-secret-note", - AlicesPublicObject = "alices-public-note", - - BobsBucket = "bob", - BobsObject = "bobs-secret-note", - - CharliesBucket = "charlie", - - %% setup Alice's data - ?assertEqual(ok, erlcloud_s3:create_bucket(AlicesBucket, Alice)), - ?assertEqual(ok, erlcloud_s3:create_bucket(AlicesPublicBucket, public_read_write, Alice)), - - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(AlicesBucket, AlicesObject, - <<"I'm here!!">>, Alice)), - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(AlicesBucket, AlicesPublicObject, - <<"deadbeef">>, [{acl, public_read}], Alice)), - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(AlicesPublicBucket, AlicesObject, - <<"deadly public beef">>, Alice)), - - %% setup Bob's box - ?assertEqual(ok, erlcloud_s3:create_bucket(BobsBucket, Bob)), - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(BobsBucket, BobsObject, - <<"bobfat">>, Bob)), - - %% >> setup Charlie's box - ?assertEqual(ok, erlcloud_s3:create_bucket(CharliesBucket, Charlie)), - - %% >> Bob can do it right - %% Bring Alice's objects to Bob's bucket - ?assert403(erlcloud_s3:copy_object(BobsBucket, AlicesObject, - AlicesBucket, AlicesObject, Bob)), - - ?assertEqual([{copy_source_version_id, "false"}, {version_id, "null"}], - erlcloud_s3:copy_object(BobsBucket, AlicesPublicObject, - AlicesBucket, AlicesPublicObject, Bob)), - - %% TODO: put to public bucket is degrated for now - %% ?assertEqual([{copy_source_version_id, "false"}, {version_id, "null"}], - %% erlcloud_s3:copy_object(BobsBucket, AlicesObject, - %% AlicesPublicBucket, AlicesObject, Bob)), - - %% Bring Bob's object to Alice's bucket - ?assertEqual([{copy_source_version_id, "false"}, {version_id, "null"}], - erlcloud_s3:copy_object(AlicesPublicBucket, BobsObject, - BobsBucket, BobsObject, Bob)), - %% Cleanup Bob's - ?assertEqual([{delete_marker, false}, {version_id, "null"}], - erlcloud_s3:delete_object(BobsBucket, AlicesPublicObject, Bob)), - ?assertEqual([{delete_marker, false}, {version_id, "null"}], - erlcloud_s3:delete_object(BobsBucket, AlicesObject, Bob)), - %% ?assertEqual([{delete_marker, false}, {version_id, "null"}], - %% erlcloud_s3:delete_object(AlicesPublicObject, BobsObject, Bob)), - - %% >> Charlie can't do it - %% try copying Alice's private object to Charlie's - ?assert403(erlcloud_s3:copy_object(CharliesBucket, AlicesObject, - AlicesBucket, AlicesObject, Charlie)), - - ?assert403(erlcloud_s3:copy_object(AlicesPublicBucket, AlicesObject, - AlicesBucket, AlicesObject, Charlie)), - - %% try copy Alice's public object to Bob's - ?assert403(erlcloud_s3:copy_object(BobsBucket, AlicesPublicObject, - AlicesBucket, AlicesPublicObject, Charlie)), - ?assert403(erlcloud_s3:copy_object(BobsBucket, AlicesObject, - AlicesPublicBucket, AlicesObject, Charlie)), - - %% charlie tries to copy anonymously, which should fail in 403 - CSPort = Charlie#aws_config.s3_port, - URL = lists:flatten(io_lib:format("http://~s.~s:~p/~s", - [AlicesPublicBucket, Charlie#aws_config.s3_host, - CSPort, AlicesObject])), - Headers = [{"x-amz-copy-source", string:join([AlicesBucket, AlicesObject], "/")}, - {"Content-Length", 0}], - {ok, Status, Hdr, _Msg} = ibrowse:send_req(URL, Headers, put, [], - Charlie#aws_config.http_options), - lager:debug("request ~p ~p => ~p ~p", [URL, Headers, Status, Hdr]), - ?assertEqual("403", Status), - - ok. - -verify_source_not_found(UserConfig) -> - NonExistingKey = "non-existent-source", - {'EXIT', {{aws_error, {http_error, 404, _, ErrorXml}}, _Stack}} = - (catch erlcloud_s3:copy_object(?BUCKET2, ?KEY2, - ?BUCKET, NonExistingKey, UserConfig)), - lager:debug("ErrorXml: ~s", [ErrorXml]), - ?assert(string:str(ErrorXml, - "/" ++ ?BUCKET ++ - "/" ++ NonExistingKey ++ "") > 0). - -verify_replace_usermeta(UserConfig) -> - lager:info("Verify replacing usermeta using Put Copy"), - - %% Put Initial Object - Headers0 = [{"Content-Type", "text/plain"}], - Options0 = [{meta, [{"key1", "val1"}, {"key2", "val2"}]}], - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(?BUCKET, ?REPLACE_KEY, ?DATA0, Options0, Headers0, UserConfig)), - Props0 = erlcloud_s3:get_object(?BUCKET, ?REPLACE_KEY, UserConfig), - lager:debug("Initial Obj: ~p", [Props0]), - ?assertEqual("text/plain", proplists:get_value(content_type, Props0)), - ?assertHeader("x-amz-meta-key1", "val1", Props0), - ?assertHeader("x-amz-meta-key2", "val2", Props0), - - %% Replace usermeta using Put Copy - Headers1 = [{"Content-Type", "application/octet-stream"}], - Options1 = [{metadata_directive, "REPLACE"}, - {meta, [{"key3", "val3"}, {"key4", "val4"}]}], - ?assertEqual([{copy_source_version_id, "false"}, {version_id, "null"}], - erlcloud_s3:copy_object(?BUCKET, ?REPLACE_KEY, ?BUCKET, ?REPLACE_KEY, - Options1, Headers1, UserConfig)), - Props1 = erlcloud_s3:get_object(?BUCKET, ?REPLACE_KEY, UserConfig), - lager:debug("Updated Obj: ~p", [Props1]), - ?assertEqual(?DATA0, proplists:get_value(content, Props1)), - ?assertEqual("application/octet-stream", proplists:get_value(content_type, Props1)), - ?assertHeader("x-amz-meta-key1", undefined, Props1), - ?assertHeader("x-amz-meta-key2", undefined, Props1), - ?assertHeader("x-amz-meta-key3", "val3", Props1), - ?assertHeader("x-amz-meta-key4", "val4", Props1), - ok. - - -%% Verify reuqests without Content-Length header, they should succeed. -%% To avoid automatic Content-Length header addition by HTTP client library, -%% this test uses `curl' command line utitlity, intended. -verify_without_cl_header(UserConfig) -> - ?assertEqual(ok, erlcloud_s3:create_bucket(?BUCKET4, UserConfig)), - Data = ?DATA0, - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(?BUCKET4, ?SRC_KEY, Data, UserConfig)), - verify_without_cl_header(UserConfig, normal, Data), - verify_without_cl_header(UserConfig, mp, Data), - ok. - -verify_without_cl_header(UserConfig, normal, Data) -> - lager:info("Verify basic (non-MP) PUT copy without Content-Length header"), - Target = fmt("/~s/~s", [?BUCKET4, ?TGT_KEY]), - Source = fmt("/~s/~s", [?BUCKET4, ?SRC_KEY]), - _Res = exec_curl(UserConfig, "PUT", Target, [{"x-amz-copy-source", Source}]), - - Props = erlcloud_s3:get_object(?BUCKET4, ?TGT_KEY, UserConfig), - ?assertEqual(Data, proplists:get_value(content, Props)), - ok; -verify_without_cl_header(UserConfig, mp, Data) -> - lager:info("Verify Multipart upload copy without Content-Length header"), - InitUploadRes = erlcloud_s3_multipart:initiate_upload( - ?BUCKET4, ?MP_TGT_KEY, "application/octet-stream", - [], UserConfig), - UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), - lager:info("~p ~p", [InitUploadRes, UploadId]), - Source = fmt("/~s/~s", [?BUCKET4, ?SRC_KEY]), - MpTarget = fmt("/~s/~s?partNumber=1&uploadId=~s", [?BUCKET4, ?MP_TGT_KEY, UploadId]), - _Res = exec_curl(UserConfig, "PUT", MpTarget, - [{"x-amz-copy-source", Source}, - {"x-amz-copy-source-range", "bytes=1-2"}]), - - ListPartsXml = erlcloud_s3_multipart:list_parts(?BUCKET4, ?MP_TGT_KEY, UploadId, [], UserConfig), - lager:debug("ListParts: ~p", [ListPartsXml]), - ListPartsRes = erlcloud_s3_multipart:parts_to_term(ListPartsXml), - Parts = proplists:get_value(parts, ListPartsRes), - EtagList = [{PartNum, Etag} || {PartNum, [{etag, Etag}, {size, _Size}]} <- Parts], - lager:debug("EtagList: ~p", [EtagList]), - ?assertEqual(ok, erlcloud_s3_multipart:complete_upload( - ?BUCKET4, ?MP_TGT_KEY, UploadId, EtagList, UserConfig)), - Props = erlcloud_s3:get_object(?BUCKET4, ?MP_TGT_KEY, UserConfig), - ExpectedBody = binary:part(Data, 1, 2), - ?assertEqual(ExpectedBody, proplists:get_value(content, Props)), - ok. - -exec_curl(#aws_config{s3_port=Port} = UserConfig, Method, Resource, AmzHeaders) -> - ContentType = "application/octet-stream", - Date = httpd_util:rfc1123_date(), - Auth = rtcs_admin:make_authorization(Method, Resource, ContentType, UserConfig, Date, - AmzHeaders), - HeaderArgs = [fmt("-H '~s: ~s' ", [K, V]) || - {K, V} <- [{"Date", Date}, {"Authorization", Auth}, - {"Content-Type", ContentType} | AmzHeaders]], - Cmd="curl -X " ++ Method ++ " -v -s " ++ HeaderArgs ++ - "'http://127.0.0.1:" ++ integer_to_list(Port) ++ Resource ++ "'", - lager:debug("Curl command line: ~s", [Cmd]), - Res = os:cmd(Cmd), - lager:debug("Curl result: ~s", [Res]), - Res. - -fmt(Fmt, Args) -> - lists:flatten(io_lib:format(Fmt, Args)). diff --git a/riak_test/tests/regression_tests.erl b/riak_test/tests/regression_tests.erl deleted file mode 100644 index cc50bea7b..000000000 --- a/riak_test/tests/regression_tests.erl +++ /dev/null @@ -1,266 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(regression_tests). - -%% @doc this module gathers various regression tests which can be -%% separate easily. Regression tests which needs configuration change -%% can be written as different module. In case of rtcs:setup(1) with -%% vanilla CS setup used. Otherwise feel free to create an independent -%% module like cs743_regression_test. - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). --include("riak_cs.hrl"). --include_lib("erlcloud/include/erlcloud_aws.hrl"). - --define(TEST_BUCKET_CS347, "test-bucket-cs347"). - --define(assert500(X), - ?assertError({aws_error, {http_error, 500, _, _}}, (X))). - -confirm() -> - %% Setting short timeouts to accelarate verify_cs756 - rtcs:set_advanced_conf(cs, [{riak_cs, [{riakc_timeouts, 1000}]}]), - {UserConfig, _} = SetupInfo = rtcs:setup(1), - - ok = verify_cs296(SetupInfo, "test-bucket-cs296"), - ok = verify_cs347(SetupInfo, "test-bucket-cs347"), - ok = verify_cs436(SetupInfo, "test-bucket-cs436"), - ok = verify_cs512(UserConfig, "test-bucket-cs512"), - ok = verify_cs770(SetupInfo, "test-bucket-cs770"), - %% Append your next regression tests here - - %% regression of CS#756 must be the last test as it stops all Riak - %% nodes. - ok = verify_cs756(SetupInfo, "test-bucket-cs756"), - rtcs:pass(). - -%% @doc Regression test for `riak_cs' -%% issue 296. The issue description is: 403 instead of 404 returned when -%% trying to list nonexistent bucket. -verify_cs296(_SetupInfo = {UserConfig, {_RiakNodes, _CSNodes, _Stanchion}}, BucketName) -> - lager:info("CS296: User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:list_objects(BucketName, UserConfig)), - - lager:info("creating bucket ~p", [BucketName]), - ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), - - ?assertMatch([{buckets, [[{name, BucketName}, _]]}], - erlcloud_s3:list_buckets(UserConfig)), - - lager:info("deleting bucket ~p", [BucketName]), - ?assertEqual(ok, erlcloud_s3:delete_bucket(BucketName, UserConfig)), - - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:list_objects(BucketName, UserConfig)), - ok. - -%% @doc Regression test for `riak_cs' -%% issue 347. The issue description is: No response body in 404 to the -%% bucket that have never been created once. -verify_cs347(_SetupInfo = {UserConfig, {_RiakNodes, _CSNodes, _Stanchion}}, BucketName) -> - - lager:info("CS347: User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - - ListObjectRes1 = - case catch erlcloud_s3:list_objects(BucketName, UserConfig) of - {'EXIT', {{aws_error, Error}, _}} -> - Error; - Result -> - Result - end, - ?assert(rtcs:check_no_such_bucket(ListObjectRes1, "/" ++ ?TEST_BUCKET_CS347 ++ "/")), - - lager:info("creating bucket ~p", [BucketName]), - ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), - - ?assertMatch([{buckets, [[{name, BucketName}, _]]}], - erlcloud_s3:list_buckets(UserConfig)), - - lager:info("deleting bucket ~p", [BucketName]), - ?assertEqual(ok, erlcloud_s3:delete_bucket(BucketName, UserConfig)), - - ListObjectRes2 = - case catch erlcloud_s3:list_objects(BucketName, UserConfig) of - {'EXIT', {{aws_error, Error2}, _}} -> - Error2; - Result2 -> - Result2 - end, - ?assert(rtcs:check_no_such_bucket(ListObjectRes2, "/" ++ ?TEST_BUCKET_CS347 ++ "/")), - ok. - - -%% @doc Regression test for `riak_cs' -%% issue 436. The issue description is: A 500 is returned instead of a 404 when -%% trying to put to a nonexistent bucket. -verify_cs436(_SetupInfo = {UserConfig, {_RiakNodes, _CSNodes, _Stanchion}}, BucketName) -> - lager:info("CS436: User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - - ?assertError({aws_error, {http_error, 404, _, _}}, - erlcloud_s3:put_object(BucketName, - "somekey", - crypto:rand_bytes(100), - UserConfig)), - - %% Create and delete test bucket - lager:info("creating bucket ~p", [BucketName]), - ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), - - ?assertMatch([{buckets, [[{name, BucketName}, _]]}], - erlcloud_s3:list_buckets(UserConfig)), - - lager:info("deleting bucket ~p", [BucketName]), - ?assertEqual(ok, erlcloud_s3:delete_bucket(BucketName, UserConfig)), - - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - - %% Attempt to put object again and ensure result is still 404 - ?assertError({aws_error, {http_error, 404, _, _}}, - erlcloud_s3:put_object(BucketName, - "somekey", - crypto:rand_bytes(100), - UserConfig)), - ok. - --define(KEY, "cs512-key"). - -verify_cs512(UserConfig, BucketName) -> - ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), - put_and_get(UserConfig, BucketName, <<"OLD">>), - put_and_get(UserConfig, BucketName, <<"NEW">>), - erlcloud_s3:delete_object(BucketName, ?KEY, UserConfig), - assert_notfound(UserConfig,BucketName), - ok. - -put_and_get(UserConfig, BucketName, Data) -> - erlcloud_s3:put_object(BucketName, ?KEY, Data, UserConfig), - Props = erlcloud_s3:get_object(BucketName, ?KEY, UserConfig), - ?assertEqual(proplists:get_value(content, Props), Data). - -verify_cs770({UserConfig, {RiakNodes, _, _}}, BucketName) -> - %% put object and cancel it; - ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), - Key = "foobar", - lager:debug("starting cs770 verification: ~s ~s", [BucketName, Key]), - - {ok, Socket} = rtcs_object:upload(UserConfig, - {normal_partial, 3*1024*1024, 1024*1024}, - BucketName, Key), - - [[{UUID, M}]] = get_manifests(RiakNodes, BucketName, Key), - - %% Even if CS is smart enough to remove canceled upload, at this - %% time the socket will be still alive, so no cancellation logic - %% shouldn't be triggerred. - ?assertEqual(writing, M?MANIFEST.state), - lager:debug("UUID of ~s ~s: ~p", [BucketName, Key, UUID]), - - %% Emulate socket error with {error, closed} at server - ok = gen_tcp:close(Socket), - %% This wait is just for convenience - timer:sleep(1000), - rt:wait_until(fun() -> - [[{UUID, Mx}]] = get_manifests(RiakNodes, BucketName, Key), - scheduled_delete =:= Mx?MANIFEST.state - end, 8, 4096), - - Pbc = rtcs:pbc(RiakNodes, objects, BucketName), - - %% verify that object is also stored in latest GC bucket - Ms = all_manifests_in_gc_bucket(Pbc), - lager:info("Retrieved ~p manifets from GC bucket", [length(Ms)]), - ?assertMatch( - [{UUID, _}], - lists:filter(fun({UUID0, M1}) when UUID0 =:= UUID -> - ?assertEqual(pending_delete, M1?MANIFEST.state), - true; - ({UUID0, _}) -> - lager:debug("UUID=~p / ~p", - [mochihex:to_hex(UUID0), mochihex:to_hex(UUID)]), - false; - (_Other) -> - lager:error("Unexpected: ~p", [_Other]), - false - end, Ms)), - - lager:info("cs770 verification ok", []), - ?assertEqual(ok, erlcloud_s3:delete_bucket(BucketName, UserConfig)), - ok. - -all_manifests_in_gc_bucket(Pbc) -> - {ok, Keys} = riakc_pb_socket:list_keys(Pbc, ?GC_BUCKET), - Ms = rt:pmap(fun(K) -> - {ok, O} = riakc_pb_socket:get(Pbc, <<"riak-cs-gc">>, K), - Some = [binary_to_term(V) || {_, V} <- riakc_obj:get_contents(O), - V =/= <<>>], - twop_set:to_list(twop_set:resolve(Some)) - end, Keys), - %% lager:debug("All manifests in GC buckets: ~p", [Ms]), - lists:flatten(Ms). - -get_manifests(RiakNodes, BucketName, Key) -> - rt:wait_until(fun() -> - case rc_helper:get_riakc_obj(RiakNodes, objects, BucketName, Key) of - {ok, _} -> true; - Error -> Error - end - end, 8, 500), - {ok, Obj} = rc_helper:get_riakc_obj(RiakNodes, objects, BucketName, Key), - %% Assuming no tombstone; - [binary_to_term(V) || {_, V} <- riakc_obj:get_contents(Obj), - V =/= <<>>]. - -verify_cs756({UserConfig, {RiakNodes, _, _}}, BucketName) -> - %% Making sure API call to CS failed Riak KV underneath, all fails in 500 - %% This could be done with eqc - lager:info("CS756 regression"), - [rt:stop(RiakNode) || RiakNode <- RiakNodes], - [rt:wait_until_unpingable(RiakNode) || RiakNode <- RiakNodes], - - %% test Object APIs before bucket creation - ?assert500(erlcloud_s3:put_object(BucketName, "mine", <<"deadbeef">>, UserConfig)), - ?assert500(erlcloud_s3:get_object(BucketName, "mine", UserConfig)), - - %% test bucket creation fails - ?assert500(erlcloud_s3:create_bucket(BucketName, UserConfig)), - ?assert500(erlcloud_s3:delete_bucket("dummybucket", UserConfig)), - - ?assert500(erlcloud_s3:put_object(BucketName, "mine", <<"deadbeef">>, UserConfig)), - ?assert500(erlcloud_s3:get_object(BucketName, "mine", UserConfig)), - ?assert500(erlcloud_s3:delete_object(BucketName, "mine", UserConfig)), - - %% try copy - ?assert500(erlcloud_s3:copy_object(BucketName, "destination", - BucketName, "mine", UserConfig)), - - ?assert500(erlcloud_s3:delete_bucket("dummybucket", UserConfig)), - ?assert500(erlcloud_s3:delete_bucket(BucketName, UserConfig)), - - ok. - -assert_notfound(UserConfig, BucketName) -> - ?assertException(_, - {aws_error, {http_error, 404, _, _}}, - erlcloud_s3:get_object(BucketName, ?KEY, UserConfig)). diff --git a/riak_test/tests/regression_tests_2.erl b/riak_test/tests/regression_tests_2.erl deleted file mode 100644 index ed3da0bbb..000000000 --- a/riak_test/tests/regression_tests_2.erl +++ /dev/null @@ -1,221 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - -%% @doc regression_tests running with two node cluster, while -%% regression_tests.erl is for single node cluster In case of -%% rtcs:setup(2) with vanilla CS setup used. Otherwise feel free to -%% create an independent module like cs743_regression_test. - - --module(regression_tests_2). - --compile(export_all). --include_lib("eunit/include/eunit.hrl"). - -confirm() -> - {UserConfig, {_RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup(2), - - ok = verify_cs631(UserConfig, "cs-631-test-bukcet"), - ok = verify_cs654(UserConfig), - ok = verify_cs781(UserConfig, "cs-781-test-bucket"), - ok = verify_cs1255(UserConfig, "cs-1255-test-bucket"), - - %% Append your next regression tests here - - rtcs:pass(). - - -%% @doc Integration test for [https://github.com/basho/riak_cs/issues/631] -verify_cs631(UserConfig, BucketName) -> - ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), - test_unknown_canonical_id_grant_returns_400(UserConfig, BucketName), - test_canned_acl_and_grants_returns_400(UserConfig, BucketName), - ok. - --define(KEY_1, "key-1"). --define(KEY_2, "key-2"). --define(VALUE, <<"632-test-value">>). - -test_canned_acl_and_grants_returns_400(UserConfig, BucketName) -> - Acl = [{acl, public_read}], - Headers = [{"x-amz-grant-write", "email=\"doesnmatter@example.com\""}], - ?assertError({aws_error, {http_error, 400, _, _}}, - erlcloud_s3:put_object(BucketName, ?KEY_1, ?VALUE, - Acl, Headers, UserConfig)). - -test_unknown_canonical_id_grant_returns_400(UserConfig, BucketName) -> - Acl = [], - Headers = [{"x-amz-grant-write", "id=\"badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbad9badbad\""}], - ?assertError({aws_error, {http_error, 400, _, _}}, - erlcloud_s3:put_object(BucketName, ?KEY_2, ?VALUE, - Acl, Headers, UserConfig)). - -%% @doc Integration test for [https://github.com/basho/riak_cs/issues/654] -verify_cs654(UserConfig) -> - run_test_empty_common_prefixes(UserConfig), - run_test_no_duplicate_key(UserConfig), - run_test_no_infinite_loop(UserConfig). - -%% Test for the original issue found in Github #654: -%% ``` -%% $ s3cmd mb s3://test/ -%% $ mkdir a -%% $ for i in {0001..1002}; do echo ${i} > a/${i}.txt; done # in zsh -%% $ s3cmd put --recursive a s3://test -%% $ s3cmd del --recursive --force s3://test -%% $ s3cmd ls s3://test # !!FAIL!! -%% ''' - --define(TEST_BUCKET_1, "cs-654-test-bucket-1"). --define(KEY_PREFIX_1, "a/"). - -run_test_empty_common_prefixes(UserConfig) -> - lager:info("creating bucket ~p", [?TEST_BUCKET_1]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET_1, UserConfig)), - Count = 1002, - list_objects_test_helper:load_objects(?TEST_BUCKET_1, Count, ?KEY_PREFIX_1, UserConfig), - list_objects_test_helper:delete_objects(?TEST_BUCKET_1, Count, ?KEY_PREFIX_1, UserConfig), - ListObjectsOptions = [{delimiter, "/"}], - ?assertEqual([], - proplists:get_value(contents, - erlcloud_s3:list_objects(?TEST_BUCKET_1, - ListObjectsOptions, - UserConfig))), - ok. - -%% Test for issue in comment -%% [https://github.com/basho/riak_cs/pull/655#issuecomment-23309088] -%% The comment is reproduced here: -%% -%% When there are both some common prefixes and non-prefixed keys, -%% next start key is "rewinded" by skip_past_prefix_and_delimiter. -%% -%% A situation is like this: -%% -%% 100 active objects under 0/ -%% 1 active object whose name is 1.txt -%% 1000 pending_delete objects under 2/ -%% ls reports duplicated 1.txt. -%% -%% ``` -%% $ s3cmd ls s3://test -%% DIR s3://test/0/ -%% 2013-08-27 02:09 9 s3://test/1.txt -%% 2013-08-27 02:09 9 s3://test/1.txt -%% ''' - --define(TEST_BUCKET_2, "cs-654-test-bucket-2"). --define(ACTIVE_PREFIX, "0/"). --define(SINGLE_OBJECT, "1.txt"). --define(PENDING_DELETE_PREFIX, "2/"). - -run_test_no_duplicate_key(UserConfig) -> - lager:info("creating bucket ~p", [?TEST_BUCKET_2]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET_2, UserConfig)), - - list_objects_test_helper:load_objects(?TEST_BUCKET_2, 100, ?ACTIVE_PREFIX, - UserConfig), - - erlcloud_s3:put_object(?TEST_BUCKET_2, ?SINGLE_OBJECT, - crypto:rand_bytes(100), UserConfig), - - list_objects_test_helper:load_objects(?TEST_BUCKET_2, 1000, - ?PENDING_DELETE_PREFIX, - UserConfig), - list_objects_test_helper:delete_objects(?TEST_BUCKET_2, 1000, - ?PENDING_DELETE_PREFIX, - UserConfig), - - ListObjectsOptions = [{delimiter, "/"}], - Response = erlcloud_s3:list_objects(?TEST_BUCKET_2, - ListObjectsOptions, - UserConfig), - [SingleResult] = proplists:get_value(contents, Response), - ?assertEqual("1.txt", proplists:get_value(key, SingleResult)), - ok. - -%% Test for issue in comment -%% [https://github.com/basho/riak_cs/pull/655#issuecomment-23390742] -%% The comment is reproduced here: -%% Found one more issue. -%% -%% Infinite loop happens for list objects request with prefix without delimiter. -%% -%% Assume test bucket has 1100 active keys under prefix 0/. -%% s3cmd -c s3cfg.dev1.alice ls s3://test/0 (no slash at the end) does not respond -%% and CPU is used constantly even after killing s3cmd. - --define(TEST_BUCKET_3, "cs-654-test-bucket-3"). --define(ACTIVE_PREFIX_2, "0/"). - -run_test_no_infinite_loop(UserConfig) -> - lager:info("creating bucket ~p", [?TEST_BUCKET_3]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET_3, UserConfig)), - - list_objects_test_helper:load_objects(?TEST_BUCKET_3, 1100, ?ACTIVE_PREFIX, - UserConfig), - - ListObjectsOptions = [{delimiter, "/"}, {prefix, "0"}], - Response = erlcloud_s3:list_objects(?TEST_BUCKET_2, - ListObjectsOptions, - UserConfig), - [SingleResult] = proplists:get_value(common_prefixes, Response), - ?assertEqual("0/", proplists:get_value(prefix, SingleResult)), - ok. - - - -format_int(Int) -> - binary_to_list(iolist_to_binary(io_lib:format("~4..0B", [Int]))). - -%% @doc Integration test for [https://github.com/basho/riak_cs/issues/781] -verify_cs781(UserConfig, BucketName) -> - ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), - Count = 1003, - [erlcloud_s3:put_object(BucketName, - format_int(X), - crypto:rand_bytes(100), - UserConfig) || X <- lists:seq(1, Count)], - erlcloud_s3:delete_object(BucketName, format_int(1), UserConfig), - erlcloud_s3:delete_object(BucketName, format_int(2), UserConfig), - ?assertEqual(true, - proplists:get_value(is_truncated, - erlcloud_s3:list_objects(BucketName, - [], - UserConfig))), - ok. - -%% Test for [https://github.com/basho/riak_cs/pull/1255] -verify_cs1255(UserConfig, BucketName) -> - ?assertEqual(ok, erlcloud_s3:create_bucket(BucketName, UserConfig)), - POSTData = {iolist_to_binary(crypto:rand_bytes(100)), "application/octet-stream"}, - - %% put objects using a binary key - erlcloud_s3:s3_request(UserConfig, put, BucketName, <<"/", 00>>, [], [], POSTData, []), - erlcloud_s3:s3_request(UserConfig, put, BucketName, <<"/", 01>>, [], [], POSTData, []), - erlcloud_s3:s3_request(UserConfig, put, BucketName, <<"/valid_key">>, [], [], POSTData, []), - - %% list objects without xmerl which throws error when parsing invalid charactor as XML 1.0 - {_Header, Body} = erlcloud_s3:s3_request(UserConfig, get, BucketName, "/", [], [], <<>>, []), - ?assertMatch({_, _}, binary:match(list_to_binary(Body), <<"", 00, "">>)), - ?assertMatch({_, _}, binary:match(list_to_binary(Body), <<"", 01, "">>)), - ?assertMatch({_, _}, binary:match(list_to_binary(Body), <<"valid_key">>)), - - ok. diff --git a/riak_test/tests/repl_v3_test.erl b/riak_test/tests/repl_v3_test.erl deleted file mode 100644 index 798b8abe6..000000000 --- a/riak_test/tests/repl_v3_test.erl +++ /dev/null @@ -1,325 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2013-2016 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% ------------------------------------------------------------------- - --module(repl_v3_test). - --export([confirm/0]). - --include_lib("eunit/include/eunit.hrl"). - --define(TEST_BUCKET, "riak-test-bucket"). - -confirm() - ->case rt_config:get(build_type, oss) of - ee -> - confirm_ee(); - _ -> - lager:info("~s test is only valid on riak_ee, skipping", [?MODULE]), - pass - end. - -confirm_ee() -> - {UserConfig, {RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup2x2(), - lager:info("UserConfig = ~p", [UserConfig]), - [A,B,C,D] = RiakNodes, - - ANodes = [A,B], - BNodes = [C,D], - - AFirst = hd(ANodes), - BFirst = hd(BNodes), - - %% User 1, Cluster 1 config - U1C1Config = rtcs_admin:create_user(AFirst, 1), - %% User 1, Cluster 2 config - U1C2Config = rtcs_admin:aws_config(U1C1Config, [{port, rtcs_config:cs_port(BFirst)}]), - - %% User 2, Cluster 2 config - U2C2Config = rtcs_admin:create_user(BFirst, 2), - %% User 2, Cluster 1 config - U2C1Config = rtcs_admin:aws_config(U2C2Config, [{port, rtcs_config:cs_port(AFirst)}]), - - lager:info("User 1 IS valid on the primary cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(U1C1Config)), - - lager:info("User 2 IS valid on the primary cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(U2C1Config)), - - lager:info("User 2 is NOT valid on the secondary cluster"), - ?assertError({aws_error, _}, erlcloud_s3:list_buckets(U2C2Config)), - - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, U1C1Config)), - - ?assertMatch([{buckets, [[{name, ?TEST_BUCKET}, _]]}], - erlcloud_s3:list_buckets(U1C1Config)), - - ObjList1= erlcloud_s3:list_objects(?TEST_BUCKET, U1C1Config), - ?assertEqual([], proplists:get_value(contents, ObjList1)), - - Object1 = crypto:rand_bytes(4194304), - - erlcloud_s3:put_object(?TEST_BUCKET, "object_one", Object1, U1C1Config), - - ObjList2 = erlcloud_s3:list_objects(?TEST_BUCKET, U1C1Config), - ?assertEqual(["object_one"], - [proplists:get_value(key, O) || - O <- proplists:get_value(contents, ObjList2)]), - - Obj = erlcloud_s3:get_object(?TEST_BUCKET, "object_one", U1C1Config), - ?assertEqual(Object1, proplists:get_value(content, Obj)), - - lager:info("set up v3 replication between clusters"), - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %% Name and connect Riak Enterprise V3 replication between A and B - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - repl_helpers:name_cluster(AFirst,"A"), - repl_helpers:name_cluster(BFirst,"B"), - - - rt:wait_until_ring_converged(ANodes), - rt:wait_until_ring_converged(BNodes), - - repl_helpers:wait_until_13_leader(AFirst), - LeaderA = rpc:call(AFirst, riak_core_cluster_mgr, get_leader, []), - LeaderB = rpc:call(BFirst, riak_core_cluster_mgr, get_leader, []), - - ModeResA = rpc:call(LeaderA, riak_repl_console, modes, [["mode_repl13"]]), - ModeResB = rpc:call(LeaderB, riak_repl_console, modes, [["mode_repl13"]]), - lager:info("Replication Modes = ~p", [ModeResA]), - lager:info("Replication Modes = ~p", [ModeResB]), - - - {ok, {_IP, BPort}} = rpc:call(BFirst, application, get_env, - [riak_core, cluster_mgr]), - repl_helpers:connect_clusters13(LeaderA, ANodes, BPort, "B"), - - ?assertEqual(ok, repl_helpers:wait_for_connection13(LeaderA, "B")), - rt:wait_until_ring_converged(ANodes), - - repl_helpers:enable_realtime(LeaderA, "B"), - repl_helpers:start_realtime(LeaderA, "B"), - - PGEnableResult = rpc:call(LeaderA, riak_repl_console, proxy_get, [["enable","B"]]), - lager:info("Enabled pg: ~p", [PGEnableResult]), - Status = rpc:call(LeaderA, riak_repl_console, status, [quiet]), - - case proplists:get_value(proxy_get_enabled, Status) of - undefined -> ?assert(false); - EnabledFor -> lager:info("PG enabled for cluster ~p",[EnabledFor]) - end, - rt:wait_until_ring_converged(ANodes), - rt:wait_until_ring_converged(BNodes), - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %% Done connection replication - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - %% run an initial fullsync - repl_helpers:start_and_wait_until_fullsync_complete13(LeaderA), - - lager:info("User 2 is valid on secondary cluster after fullsync," - " still no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(U2C2Config)), - - lager:info("User 1 has the test bucket on the secondary cluster now"), - ?assertMatch([{buckets, [[{name, ?TEST_BUCKET}, _]]}], - erlcloud_s3:list_buckets(U1C2Config)), - - lager:info("Object written on primary cluster is readable from secondary " - "cluster"), - Obj2 = erlcloud_s3:get_object(?TEST_BUCKET, "object_one", U1C2Config), - ?assertEqual(Object1, proplists:get_value(content, Obj2)), - - lager:info("write 2 more objects to the primary cluster"), - - Object2 = crypto:rand_bytes(4194304), - - erlcloud_s3:put_object(?TEST_BUCKET, "object_two", Object2, U1C1Config), - - Object3 = crypto:rand_bytes(4194304), - - erlcloud_s3:put_object(?TEST_BUCKET, "object_three", Object3, U1C1Config), - - lager:info("disable proxy_get"), - disable_pg(LeaderA, "B", ANodes, BNodes, BPort), - - lager:info("check we can still read the fullsynced object"), - Obj3 = erlcloud_s3:get_object(?TEST_BUCKET, "object_one", U1C2Config), - ?assertEqual(Object1, proplists:get_value(content,Obj3)), - - lager:info("check all 3 objects are listed on the sink cluster"), - ?assertEqual(["object_one", "object_three", "object_two"], - [proplists:get_value(key, O) || O <- proplists:get_value(contents, - erlcloud_s3:list_objects(?TEST_BUCKET, U1C2Config))]), - - lager:info("check that the 2 other objects can't be read"), - %% We expect errors here since proxy_get will fail due to the - %% clusters being disconnected. - ?assertError({aws_error, _}, erlcloud_s3:get_object(?TEST_BUCKET, - "object_two", U1C2Config)), - ?assertError({aws_error, _}, erlcloud_s3:get_object(?TEST_BUCKET, - "object_three", U1C2Config)), - - lager:info("enable proxy_get"), - enable_pg(LeaderA, "B", ANodes, BNodes, BPort), - - lager:info("check we can read object_two via proxy get"), - Obj6 = erlcloud_s3:get_object(?TEST_BUCKET, "object_two", U1C2Config), - ?assertEqual(Object2, proplists:get_value(content, Obj6)), - - lager:info("disable proxy_get again"), - disable_pg(LeaderA, "B", ANodes, BNodes, BPort), - - lager:info("check we still can't read object_three"), - ?assertError({aws_error, _}, erlcloud_s3:get_object(?TEST_BUCKET, - "object_three", U1C2Config)), - - lager:info("check that proxy getting object_two wrote it locally, so we" - " can read it"), - Obj8 = erlcloud_s3:get_object(?TEST_BUCKET, "object_two", U1C2Config), - ?assertEqual(Object2, proplists:get_value(content, Obj8)), - - lager:info("delete object_one while clusters are disconnected"), - erlcloud_s3:delete_object(?TEST_BUCKET, "object_one", U1C1Config), - - lager:info("enable proxy_get"), - enable_pg(LeaderA, "B", ANodes, BNodes, BPort), - - lager:info("delete object_two while clusters are connected"), - erlcloud_s3:delete_object(?TEST_BUCKET, "object_two", U1C1Config), - - lager:info("object_one is still visible on secondary cluster"), - Obj9 = erlcloud_s3:get_object(?TEST_BUCKET, "object_one", U1C2Config), - ?assertEqual(Object1, proplists:get_value(content, Obj9)), - - lager:info("object_two is deleted"), - ?assertError({aws_error, _}, - erlcloud_s3:get_object(?TEST_BUCKET, "object_two", U1C2Config)), - - repl_helpers:start_and_wait_until_fullsync_complete13(LeaderA), - - lager:info("object_one is deleted after fullsync"), - ?assertError({aws_error, _}, - erlcloud_s3:get_object(?TEST_BUCKET, "object_one", U1C2Config)), - - lager:info("disable proxy_get again"), - disable_pg(LeaderA, "B", ANodes, BNodes, BPort), - - Object3A = crypto:rand_bytes(4194304), - ?assert(Object3 /= Object3A), - - lager:info("write a new version of object_three"), - - erlcloud_s3:put_object(?TEST_BUCKET, "object_three", Object3A, U1C1Config), - - lager:info("Independently write different object_four and object_five to bolth clusters"), - - Object4A = crypto:rand_bytes(4194304), - Object4B = crypto:rand_bytes(4194304), - - Object5A = crypto:rand_bytes(4194304), - Object5B = crypto:rand_bytes(4194304), - - erlcloud_s3:put_object(?TEST_BUCKET, "object_four", Object4A, U1C1Config), - - erlcloud_s3:put_object(?TEST_BUCKET, "object_four", Object4B, U1C2Config), - erlcloud_s3:put_object(?TEST_BUCKET, "object_five", Object5B, U1C2Config), - - lager:info("delay writing object 5 on primary cluster 1 second after " - "writing to secondary cluster"), - timer:sleep(1000), - erlcloud_s3:put_object(?TEST_BUCKET, "object_five", Object5A, U1C1Config), - - lager:info("enable proxy_get"), - enable_pg(LeaderA, "B", ANodes, BNodes, BPort), - - lager:info("secondary cluster has old version of object three"), - Obj10 = erlcloud_s3:get_object(?TEST_BUCKET, "object_three", U1C2Config), - ?assertEqual(Object3, proplists:get_value(content, Obj10)), - - lager:info("secondary cluster has 'B' version of object four"), - Obj11 = erlcloud_s3:get_object(?TEST_BUCKET, "object_four", U1C2Config), - ?assertEqual(Object4B, proplists:get_value(content, Obj11)), - - repl_helpers:start_and_wait_until_fullsync_complete13(LeaderA), - - lager:info("secondary cluster has new version of object three"), - Obj12 = erlcloud_s3:get_object(?TEST_BUCKET, "object_three", U1C2Config), - ?assertEqual(Object3A, proplists:get_value(content, Obj12)), - - lager:info("secondary cluster has 'B' version of object four"), - Obj13 = erlcloud_s3:get_object(?TEST_BUCKET, "object_four", U1C2Config), - ?assertEqual(Object4B, proplists:get_value(content, Obj13)), - - lager:info("secondary cluster has 'A' version of object five, because it " - "was written later"), - Obj14 = erlcloud_s3:get_object(?TEST_BUCKET, "object_five", U1C2Config), - ?assertEqual(Object5A, proplists:get_value(content, Obj14)), - - lager:info("write 'A' version of object four again on primary cluster"), - - erlcloud_s3:put_object(?TEST_BUCKET, "object_four", Object4A, U1C1Config), - - lager:info("secondary cluster now has 'A' version of object four"), - - Obj15 = erlcloud_s3:get_object(?TEST_BUCKET, "object_four", U1C2Config), - ?assertEqual(Object4A, proplists:get_value(content,Obj15)), - - lager:info("Disable proxy_get (not disconnect) " - "and enable realtime block replication"), - set_proxy_get(LeaderA, "disable", "B", ANodes, BNodes), - set_block_rt(RiakNodes), - - Object6 = crypto:rand_bytes(4194304), - erlcloud_s3:put_object(?TEST_BUCKET, "object_six", Object6, U1C1Config), - repl_helpers:wait_until_realtime_sync_complete(ANodes), - lager:info("The object can be downloaded from sink cluster"), - Obj16 = erlcloud_s3:get_object(?TEST_BUCKET, "object_six", U1C2Config), - ?assertEqual(Object6, proplists:get_value(content, Obj16)), - - rtcs:pass(). - -enable_pg(SourceLeader, SinkName, ANodes, BNodes, BPort) -> - repl_helpers:connect_clusters13(SourceLeader, ANodes, BPort, SinkName), - set_proxy_get(SourceLeader, "enable", SinkName, ANodes, BNodes). - -disable_pg(SourceLeader, SinkName, ANodes, BNodes, _BPort) -> - set_proxy_get(SourceLeader, "disable", SinkName, ANodes, BNodes), - repl_helpers:disconnect_clusters13(SourceLeader, ANodes, SinkName). - -set_proxy_get(SourceLeader, EnableOrDisable, SinkName, ANodes, BNodes) -> - PGEnableResult = rpc:call(SourceLeader, riak_repl_console, proxy_get, - [[EnableOrDisable,SinkName]]), - - lager:info("Enabled pg: ~p", [PGEnableResult]), - Status = rpc:call(SourceLeader, riak_repl_console, status, [quiet]), - - case proplists:get_value(proxy_get_enabled, Status) of - undefined -> ?assert(false); - EnabledFor -> lager:info("PG enabled for cluster ~p",[EnabledFor]) - end, - rt:wait_until_ring_converged(ANodes), - rt:wait_until_ring_converged(BNodes), - ok. - -set_block_rt(RiakNodes) -> - rpc:multicall(RiakNodes, application, set_env, - [riak_repl, replicate_cs_blocks_realtime, true]). diff --git a/riak_test/tests/riak_cs_debug_test.erl b/riak_test/tests/riak_cs_debug_test.erl deleted file mode 100644 index 241d4b9fe..000000000 --- a/riak_test/tests/riak_cs_debug_test.erl +++ /dev/null @@ -1,154 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(riak_cs_debug_test). - --compile(export_all). --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). - --define(assertContainsAll(ExpectedList,ActualList), - lists:foreach( - fun(X) -> ?assert(lists:member(X, ActualList)) end, - ExpectedList)). - --define(assertMatchAny(Pattern, ActualList), - ?assert( - lists:any( - fun(X) -> - case re:run(X, Pattern) of - {match, _} -> true; - nomatch -> false - end - end, ActualList))). - --define(assertNotMatchAny(Pattern, ActualList), - ?assert( - lists:all( - fun(X) -> - case re:run(X, Pattern) of - {match, _} -> false; - nomatch -> true - end - end, ActualList))). - -confirm() -> - %% Run riak-cs-debug before cuttlefish generates configs. - TarGz1 = exec_cs_debug(), - List1 = trim_dir_prefix(list_files(TarGz1)), - ?assertContainsAll(minimum_necessary_files(), List1), - - _ = rtcs:setup(1), - - %% Run riak-cs-debug after cuttlefish generates configs. - TarGz2 = exec_cs_debug(), - List2 = trim_dir_prefix(list_files(TarGz2)), - ?assertContainsAll(minimum_necessary_files_after_boot(), List2), - ?assertMatchAny("^logs/platform_log_dir/access.log.*", List2), - ?assertMatchAny("^config/generated.configs/app.*.config", List2), - ?assertMatchAny("^config/generated.configs/vm.*.args", List2), - ?assertNotMatchAny("^config/*.pem$", List2), - ok = file:delete(TarGz2), - - %% Run riak-cs-debug with app.config and vm.args. - move_generated_configs_as_appconfigs(), - restart_cs_node(), - TarGz3 = exec_cs_debug(), - List3 = trim_dir_prefix(list_files(TarGz3)), - ?assertContainsAll(minimum_necessary_files_after_boot() - ++ ["config/app.config", "config/vm.args"], - List3), - ?assertNotMatchAny("^config/generated.configs/app.*.config", List3), - ?assertNotMatchAny("^config/generated.configs/vm.*.args", List3), - - rtcs:pass(). - -restart_cs_node() -> - rtcs_exec:stop_cs(1), - rt:wait_until_unpingable(rtcs:cs_node(1)), - rtcs_exec:start_cs(1), - ok. - -move_generated_configs_as_appconfigs() -> - DevPath = rtcs_config:devpath(cs, current), - GenConfPath = DevPath ++ "/dev/dev1/data/generated.configs/", - AppConfig = filelib:wildcard([GenConfPath ++ "app.*.config"]), - VmArgs = filelib:wildcard([GenConfPath ++ "vm.*.args"]), - - ConfPath = DevPath ++ "/dev/dev1/etc/", - ok = file:rename(AppConfig, ConfPath ++ "app.config"), - ok = file:rename(VmArgs, ConfPath ++ "vm.args"), - ok. - -exec_cs_debug() -> - DevPath = rtcs_config:devpath(cs, current), - Cmd = rtcs_exec:riakcs_debugcmd(DevPath, 1, []), - Output = os:cmd("cd " ++ DevPath ++ " && " ++ Cmd), - [_Results, File] = string:tokens(Output, " \n"), - File. - -list_files(TarGz) -> - Output = os:cmd("tar tf "++TarGz), - string:tokens(Output, " \n"). - -trim_dir_prefix(Files) -> - lists:map(fun(File) -> - [_Prefix|List] = string:tokens(File, "/"), - string:join(List, "/") - end - ,Files). - -minimum_necessary_files() -> - [ - "config/advanced.config", - "config/riak-cs.conf", - "commands/cluster-info", - "commands/cluster-info.html", - "commands/date", - "commands/df", - "commands/df_i", - "commands/dmesg", - "commands/hostname", - "commands/ifconfig", - "commands/last", - "commands/mount", - "commands/netstat_an", - "commands/netstat_i", - "commands/netstat_rn", - "commands/ps", - "commands/riak_cs_gc_status", - "commands/riak_cs_ping", - "commands/riak_cs_status", - "commands/riak_cs_storage_status", - "commands/riak_cs_version", - "commands/sysctl", - "commands/uname", - "commands/w" - ]. - -minimum_necessary_files_after_boot() -> - minimum_necessary_files() ++ - [ - "logs/platform_log_dir/console.log", - "logs/platform_log_dir/run_erl.log", - "logs/platform_log_dir/erlang.log.1", - "logs/platform_log_dir/crash.log", - "logs/platform_log_dir/error.log" - ]. diff --git a/riak_test/tests/select_gc_bucket_test.erl b/riak_test/tests/select_gc_bucket_test.erl deleted file mode 100644 index ee138db6b..000000000 --- a/riak_test/tests/select_gc_bucket_test.erl +++ /dev/null @@ -1,85 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(select_gc_bucket_test). - -%% @doc `riak_test' module for testing select_gc_bucket script - --export([confirm/0]). - --include_lib("eunit/include/eunit.hrl"). - --define(BUCKET, "rt-bucket"). - --define(KEY_ALIVE, "alive"). --define(KEY_DELETED_S, "deleted-S"). --define(KEY_ALIVE_MP, "alive-mp"). --define(KEY_DELETED_L1, "deleted-L1"). --define(KEY_DELETED_L2, "deleted-L2"). - -confirm() -> - case rt_config:get(flavor, basic) of - {multibag, _} -> - lager:info("select_gc_bucket script does not supprt multibag env."), - lager:info("Skip the test."), - rtcs:pass(); - _ -> confirm1() - end. - -confirm1() -> - {UserConfig, {RiakNodes, CSNodes, Stanchion}} = rtcs:setup(1), - - BlockKeysFile = "/tmp/select_gc.txt", - os:cmd("rm -f " ++ BlockKeysFile), - rtcs_exec:gc(1, "set-interval infinity"), - rtcs_exec:gc(1, "cancel"), - - ?assertEqual(ok, erlcloud_s3:create_bucket(?BUCKET, UserConfig)), - [upload_object(UserConfig, ?BUCKET, normal, K) || - K <- [?KEY_ALIVE, ?KEY_DELETED_S]], - [upload_object(UserConfig, ?BUCKET, mp, K) || - K <- [?KEY_ALIVE_MP, ?KEY_DELETED_L1, ?KEY_DELETED_L2]], - [delete_object(UserConfig, ?BUCKET, K) || - K <- [?KEY_DELETED_S, ?KEY_DELETED_L1, ?KEY_DELETED_L2]], - - timer:sleep(1000), - Res1 = rtcs_exec:exec_priv_escript(1, "internal/select_gc_bucket.erl", - "-h 127.0.0.1 -p 10017 -e today " - "-o " ++ BlockKeysFile), - lager:debug("select_gc_bucket.erl log:\n~s", [Res1]), - lager:debug("select_gc_bucket.erl log:============= END"), - - tools_helper:offline_delete({RiakNodes, CSNodes, Stanchion}, [BlockKeysFile]), - rtcs:pass(). - -upload_object(UserConfig, Bucket, normal, Key) -> - SingleBlock = crypto:rand_bytes(400), - erlcloud_s3:put_object(Bucket, Key, SingleBlock, UserConfig); -upload_object(UserConfig, Bucket, mp, Key) -> - rtcs_multipart:multipart_upload(Bucket, Key, - [mb(5), mb(1)], UserConfig). - -delete_object(UserConfig, Bucket, Key) -> - ?assertEqual([{delete_marker, false}, {version_id, "null"}], - erlcloud_s3:delete_object(Bucket, Key, UserConfig)). - -mb(MegaBytes) -> - MegaBytes * 1024 * 1024. - diff --git a/riak_test/tests/sibling_benchmark.erl b/riak_test/tests/sibling_benchmark.erl deleted file mode 100644 index fe354633d..000000000 --- a/riak_test/tests/sibling_benchmark.erl +++ /dev/null @@ -1,256 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(sibling_benchmark). - -%% @doc Microbenchmark of sibling convergence. Verifies the number of -%% siblings are in the same magnitude with number of update -%% concurrency. To test with previous version, add a configuration -%% like this to your harness:: -%% -%% {sibling_benchmark, -%% [{write_concurrency, 2}, -%% {duration_sec, 30}, -%% {leave_and_join, 0}, %% number of cluster membership change during the benchmark -%% {dvv_enabled, true}, -%% {version, previous}] -%% %%{version, current}] -%% }, - - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). - -%% keys for non-multipart objects --define(TEST_BUCKET, "riak-test-bucket"). --define(KEY_SINGLE_BLOCK, "riak_test_key1"). - -confirm() -> - RTConfig = rt_config:get(sibling_benchmark, []), - Concurrency = proplists:get_value(write_concurrency, RTConfig, 4), - ?assert(is_integer(Concurrency) andalso Concurrency >= 0), - %% msec - Interval = proplists:get_value(write_interval, RTConfig, 100), - ?assert(is_integer(Interval) andalso Interval >= 0), - - Duration = proplists:get_value(duration_sec, RTConfig, 16), - ?assert(is_integer(Duration) andalso Duration >= 0), - - DVVEnabled = proplists:get_value(dvv_enabled, RTConfig, true), - ?assert(is_boolean(DVVEnabled)), - - Config = [{cs, - [{riak_cs, - [{leeway_seconds, 5}, - {gc_interval, 10}, - {connection_pools, [{request_pool, {Concurrency*2 + 5, 0}}]} - ]}]}, - {riak, - [{riak_core, - [{default_bucket_props, - [{allow_mult, true}, {dvv_enabled, DVVEnabled}]}]} - ]}], - {UserConfig, {RiakNodes, CSNodes, _Stanchion}} = - case proplists:get_value(version, RTConfig, current) of - current -> - put(version, current), - rtcs:setup(4, Config); - previous -> - put(version, previous), - rtcs:setup(4, Config, previous) - end, - - %% setting up the stage - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - %% The first object - erlcloud_s3:put_object(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, <<"boom!">>, UserConfig), - - get_counts(RiakNodes, ?TEST_BUCKET, ?KEY_SINGLE_BLOCK), - lager:info("====================== run benchmark ====================="), - {ok, Pid} = start_stats_checker(RiakNodes), - - lager:info("write_concurrency: ~p, write_interval: ~p msec, DVV: ~p", - [Concurrency, Interval, DVVEnabled]), - - Writers = [start_object_writer(UserConfig, Interval) || _ <- lists:seq(1, Concurrency)], - {ok, Reader} = start_object_reader(UserConfig), - - %% Do your madness or evil here - timer:sleep(Duration * 1000), - LeaveAndJoin = proplists:get_value(leave_and_join, RTConfig, 0), - leave_and_join_node(RiakNodes, LeaveAndJoin), - - ok = stop_object_reader(Reader), - [stop_object_writer(Writer) || {ok, Writer} <- Writers], - lager:info("====================== benchmark done ===================="), - MaxSib = stop_stats_checker(Pid), - %% Max number of siblings should not exceed number of upload concurrency - %% according to DVVset implementation - lager:info("MaxSib:Concurrency = ~p:~p", [MaxSib, Concurrency]), - %% Real concurrency is, added by GC workers - ?assert(MaxSib =< Concurrency + 5), - - get_counts(RiakNodes, ?TEST_BUCKET, ?KEY_SINGLE_BLOCK), - - %% Just test sibling resolver, for a major case of manifests - RawManifestBucket = rc_helper:to_riak_bucket(objects, ?TEST_BUCKET), - RawKey = ?KEY_SINGLE_BLOCK, - case rpc:call(hd(CSNodes), riak_cs_console, resolve_siblings, - [RawManifestBucket, RawKey]) of - ok -> ok; - {error, not_supported} -> - _ = lager:info("resolve_siblings does not suport multibag yet, skip it"), - ok - end, - - %% tearing down the stage - erlcloud_s3:delete_object(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, UserConfig), - lager:info("deleting bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:delete_bucket(?TEST_BUCKET, UserConfig)), - lager:info("User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - rtcs:pass(). - -start_object_reader(UserConfig) -> - Pid = spawn_link(fun() -> object_reader(UserConfig, 1) end), - {ok, Pid}. - -stop_object_reader(Pid) -> - Pid ! {stop, self()}, - receive Reply -> Reply end. - -object_reader(UserConfig, IntervalSec)-> - erlcloud_s3:get_object(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, UserConfig), - receive - {stop, From} -> From ! ok - after IntervalSec * 1000 -> - object_reader(UserConfig, IntervalSec) - end. - -start_object_writer(UserConfig, IntervalMilliSec) -> - timer:sleep(IntervalMilliSec), - Pid = spawn_link(fun() -> object_writer(UserConfig, IntervalMilliSec) end), - {ok, Pid}. - -stop_object_writer(Pid) -> - Pid ! {stop, self()}, - receive Reply -> Reply end. - -object_writer(UserConfig, IntervalMilliSec)-> - SingleBlock = crypto:rand_bytes(400), - erlcloud_s3:put_object(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, SingleBlock, UserConfig), - receive - {stop, From} -> From ! ok - after IntervalMilliSec -> - object_writer(UserConfig, IntervalMilliSec) - end. - -start_stats_checker(Nodes) -> - Pid = spawn_link(fun() -> stats_checker(Nodes, 5, -1) end), - {ok, Pid}. - -stop_stats_checker(Pid) -> - Pid ! {stop, self()}, - receive Reply -> Reply end. - -stats_checker(Nodes, IntervalSec, MaxSib0) -> - NewMaxSib = check_stats(Nodes, MaxSib0), - receive - {stop, From} -> From ! check_stats(Nodes, NewMaxSib) - after IntervalSec * 1000 -> - stats_checker(Nodes, IntervalSec, NewMaxSib) - end. - -check_stats(Nodes, MaxSib0) -> - Stats = collect_stats(Nodes), - MaxSib = pp_siblings(Stats), - pp_objsize(Stats), - pp_time(Stats), - get_counts(Nodes, ?TEST_BUCKET, ?KEY_SINGLE_BLOCK), - case MaxSib of - _ when is_integer(MaxSib) andalso MaxSib0 < MaxSib -> - MaxSib; - _ -> - MaxSib0 - end. - -collect_stats(Nodes) -> - RiakNodes = Nodes, - {Stats, _} = rpc:multicall(RiakNodes, riak_kv_stat, get_stats, []), - Stats. - -pp_siblings(Stats) -> pp(siblings, Stats). - -pp_objsize(Stats) -> pp(objsize, Stats). - -pp_time(Stats) -> pp(time, Stats). - -pp(Target, Stats) -> - AtomMeans = list_to_atom(lists:flatten(["node_get_fsm_", atom_to_list(Target), "_mean"])), - AtomMaxs = list_to_atom(lists:flatten(["node_get_fsm_", atom_to_list(Target), "_100"])), - Means = [ safe_get_value(AtomMeans, Stat) || Stat <- Stats ], - Maxs = [ safe_get_value(AtomMaxs, Stat) || Stat <- Stats ], - MeansStr = [ "\t" ++ safe_integer_to_list(Mean) || Mean <- Means ], - MaxsStr = [ "\t" ++ safe_integer_to_list(Max) || Max <- Maxs ], - lager:info("~s Mean: ~s", [Target, MeansStr]), - lager:info("~s Max: ~s", [Target, MaxsStr]), - Max = lists:foldl(fun erlang:max/2, 0, - lists:filter(fun is_integer/1, Maxs)), - %% lager:debug("Max ~p: ~p <= ~p", [Target, Max, Maxs]), - Max. - -safe_get_value(_AtomKey, {badrpc, _}) -> undefined; -safe_get_value(AtomKey, Stat) when is_list(Stat) -> proplists:get_value(AtomKey, Stat); -safe_get_value(_, _) -> undefined. - -safe_integer_to_list(I) when is_integer(I) -> - integer_to_list(I); -safe_integer_to_list(_) -> - " - ". - --spec get_counts(list(), string(), string()) -> {ok, non_neg_integer(), [non_neg_integer()]}. -get_counts(RiakNodes, Bucket, Key) -> - {ok, RiakObj} = rc_helper:get_riakc_obj(RiakNodes, objects, Bucket, Key), - SiblingCount = riakc_obj:value_count(RiakObj), - Histories = [ binary_to_term(V) || - V <- riakc_obj:get_values(RiakObj), - V /= <<>>], - %% [lager:info("History Length: ~p", [length(H)]) || H <- Histories], - HistoryCounts = [ length(H) || H <- Histories ], - lager:info("SiblingCount: ~p, HistoryCounts: ~w", [SiblingCount, HistoryCounts]), - {ok, SiblingCount, HistoryCounts}. - -leave_and_join_node(_RiakNodes, 0) -> ok; -leave_and_join_node(RiakNodes, N) -> - lager:info("leaving node2 (~p)", [N]), - Node2 = hd(tl(RiakNodes)), - rt:leave(Node2), - ?assertEqual(ok, rt:wait_until_unpingable(Node2)), - timer:sleep(1000), - - lager:info("joining node2 again (~p)", [N]), - Node1 = hd(RiakNodes), - rt:start_and_wait(Node2), - rt:staged_join(Node2, Node1), - rt:plan_and_commit(Node2), - timer:sleep(1000), - leave_and_join_node(RiakNodes, N-1). diff --git a/riak_test/tests/stanchion_switch_test.erl b/riak_test/tests/stanchion_switch_test.erl deleted file mode 100644 index 0c364e358..000000000 --- a/riak_test/tests/stanchion_switch_test.erl +++ /dev/null @@ -1,79 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(stanchion_switch_test). - -%% @doc `riak_test' module for testing riak-cs-stanchion switch command. - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). - --define(TEST_BUCKET, "riak-test-bucket"). - --define(BACKUP_PORT, 9096). - -confirm() -> - {UserConfig, {RiakNodes, _CSNodes, Stanchion}} = rtcs:setup(1), - - lists:foreach(fun(RiakNode) -> - N = rtcs_dev:node_id(RiakNode), - ?assertEqual("Current Stanchion Address: http://127.0.0.1:9095\n", - rtcs_exec:show_stanchion_cs(N)) - end, RiakNodes), - - %% stanchion ops ok - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - lager:info("deleting bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:delete_bucket(?TEST_BUCKET, UserConfig)), - - %% stop stanchion to check ops fails - _ = rtcs_exec:stop_stanchion(), - rt:wait_until_unpingable(Stanchion), - - %% stanchion ops ng; we get 500 here for sure. - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertException(error, {aws_error, {http_error, 500, _, _}}, - erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - rtcs:set_advanced_conf(stanchion, [{stanchion, [{host, {"127.0.0.1", ?BACKUP_PORT}}]}]), - _ = rtcs_exec:start_stanchion(), - rt:wait_until_pingable(Stanchion), - - %% stanchion ops ng; we get 500 here for sure. - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertException(error, {aws_error, {http_error, 500, _, _}}, - erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - %% switch stanchion here, for all CS nodes - lists:foreach(fun(RiakNode) -> - N = rtcs_dev:node_id(RiakNode), - rtcs_exec:switch_stanchion_cs(N, "127.0.0.1", ?BACKUP_PORT), - ?assertEqual("Current Stanchion Address: http://127.0.0.1:9096\n", - rtcs_exec:show_stanchion_cs(N)) - end, RiakNodes), - - %% stanchion ops ok again - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - lager:info("deleting bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:delete_bucket(?TEST_BUCKET, UserConfig)), - rtcs:pass(). - diff --git a/riak_test/tests/stats_test.erl b/riak_test/tests/stats_test.erl deleted file mode 100644 index 1de0e81d3..000000000 --- a/riak_test/tests/stats_test.erl +++ /dev/null @@ -1,167 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(stats_test). - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). --include_lib("erlcloud/include/erlcloud_aws.hrl"). - -confirm() -> - {UserConfig, {RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup(1), - - lager:info("Confirming initial stats"), - confirm_initial_stats(cs, UserConfig, rtcs_config:cs_port(hd(RiakNodes))), - confirm_initial_stats(stanchion, UserConfig, rtcs_config:stanchion_port()), - - do_some_api_calls(UserConfig, "bucket1", "bucket2"), - - lager:info("Confirming stats after some operations"), - confirm_stats(cs, UserConfig, rtcs_config:cs_port(hd(RiakNodes))), - confirm_stats(stanchion, UserConfig, rtcs_config:stanchion_port()), - rtcs:pass(). - -confirm_initial_stats(cs, UserConfig, Port) -> - StatData = query_stats(cs, UserConfig, Port), - lager:debug("length(StatData) = ~p", [length(StatData)]), - ?assert(1125 < length(StatData)), - [begin - StatKey = list_to_binary(StatType ++ "_out_one"), - lager:debug("StatKey: ~p~n", [StatKey]), - ?assert(proplists:is_defined(StatKey, StatData)), - Value = proplists:get_value(StatKey, StatData), - ?assertEqual(0, Value) - end || StatType <- ["service_get", - "list_objects_get", - "bucket_put", - "bucket_delete", - "bucket_acl_get", - "bucket_acl_put", - "object_get", - "object_put", - "object_head", - "object_delete", - "object_acl_get", - "object_acl_put", - "riakc_get_block_n_one", - "riakc_put_block", - "riakc_delete_block_constrained" - ]], - ?assertEqual(1, proplists:get_value(<<"velvet_create_user_in_one">>, StatData)), - ?assertEqual(rtcs_config:request_pool_size() - 1, - proplists:get_value(<<"request_pool_workers">>, StatData)), - ?assertEqual(rtcs_config:bucket_list_pool_size(), - proplists:get_value(<<"bucket_list_pool_workers">>, StatData)); - -confirm_initial_stats(stanchion, UserConfig, Port) -> - Stats = query_stats(stanchion, UserConfig, Port), - lager:debug("length(Stats) = ~p", [length(Stats)]), - ?assert(130 < length(Stats)), - [begin - StatKey = list_to_binary(StatType ++ "_one"), - lager:debug("StatKey: ~p~n", [StatKey]), - ?assert(proplists:is_defined(StatKey, Stats)), - Value = proplists:get_value(StatKey, Stats), - ?assertEqual(0, Value) - end || StatType <- ["bucket_create", - "bucket_delete", - "bucket_put_acl", - "riakc_get_cs_bucket", - "riakc_put_cs_bucket", - "riakc_get_cs_user_strong", - "riakc_list_all_manifest_keys" - ]], - confirm_stat_count(Stats, <<"user_create_one">>, 1), - confirm_stat_count(Stats, <<"riakc_put_cs_user_one">>, 1), - - ?assert(proplists:is_defined(<<"waiting_time_mean">>, Stats)), - ?assert(proplists:is_defined(<<"waiting_time_median">>, Stats)), - ?assert(proplists:is_defined(<<"waiting_time_95">>, Stats)), - ?assert(proplists:is_defined(<<"waiting_time_99">>, Stats)), - ?assert(proplists:is_defined(<<"waiting_time_100">>, Stats)), - ?assert(proplists:is_defined(<<"sys_process_count">>, Stats)), - ?assert(proplists:is_defined(<<"webmachine_mochiweb_active_sockets">>, Stats)), - ok. - -confirm_stats(cs, UserConfig, Port) -> - confirm_status_cmd(cs, "service_get_in_one"), - Stats = query_stats(cs, UserConfig, Port), - confirm_stat_count(Stats, <<"service_get_out_one">>, 2), - confirm_stat_count(Stats, <<"object_get_out_one">>, 1), - confirm_stat_count(Stats, <<"object_put_out_one">>, 1), - confirm_stat_count(Stats, <<"object_delete_out_one">>, 1); -confirm_stats(stanchion, UserConfig, Port) -> - confirm_status_cmd(stanchion, "bucket_create_one"), - Stats = query_stats(stanchion, UserConfig, Port), - confirm_stat_count(Stats, <<"user_create_one">>, 1), - confirm_stat_count(Stats, <<"bucket_create_one">>, 2), - confirm_stat_count(Stats, <<"bucket_delete_one">>, 1), - confirm_stat_count(Stats, <<"riakc_put_cs_user_one">>, 1), - confirm_stat_count(Stats, <<"riakc_put_cs_bucket_one">>, 3), - %% this heavy list/gets can be reduced to ONE per delete-bucket (/-o-)/ ⌒ ┤ - confirm_stat_count(Stats, <<"riakc_list_all_manifest_keys_one">>, 2), - confirm_stat_count(Stats, <<"riakc_get_user_by_index_one">>, 1). - -do_some_api_calls(UserConfig, Bucket1, Bucket2) -> - ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket1, UserConfig)), - - ?assertMatch([{buckets, [[{name, Bucket1}, _]]}], - erlcloud_s3:list_buckets(UserConfig)), - - Object = crypto:rand_bytes(500), - erlcloud_s3:put_object(Bucket1, "object_one", Object, UserConfig), - erlcloud_s3:get_object(Bucket1, "object_one", UserConfig), - erlcloud_s3:delete_object(Bucket1, "object_one", UserConfig), - erlcloud_s3:list_buckets(UserConfig), - - ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket2, UserConfig)), - ?assertEqual(ok, erlcloud_s3:delete_bucket(Bucket2, UserConfig)), - ok. - -query_stats(Type, UserConfig, Port) -> - lager:debug("Querying stats to ~p", [Type]), - Date = httpd_util:rfc1123_date(), - {Resource, SignType} = case Type of - cs -> {"/riak-cs/stats", s3}; - stanchion -> {"/stats", velvet} - end, - Cmd="curl -s -H 'Date: " ++ Date ++ "' -H 'Authorization: " ++ - rtcs_admin:make_authorization(SignType, "GET", Resource, [], UserConfig, Date, []) ++ - "' http://localhost:" ++ - integer_to_list(Port) ++ Resource, - lager:info("Stats query cmd: ~p", [Cmd]), - Output = os:cmd(Cmd), - lager:debug("Stats output=~p~n",[Output]), - {struct, JsonData} = mochijson2:decode(Output), - JsonData. - -confirm_stat_count(StatData, StatType, ExpectedCount) -> - lager:debug("confirm_stat_count for ~p", [StatType]), - ?assertEqual(ExpectedCount, proplists:get_value(StatType, StatData)). - -confirm_status_cmd(Type, ExpectedToken) -> - Cmd = case Type of - cs -> - rtcs_exec:riakcs_statuscmd(rtcs_config:devpath(cs, current), 1); - stanchion -> - rtcs_exec:stanchion_statuscmd(rtcs_config:devpath(stanchion, current)) - end, - Res = os:cmd(Cmd), - ?assert(string:str(Res, ExpectedToken) > 0). diff --git a/riak_test/tests/storage_stats_detailed_test.erl b/riak_test/tests/storage_stats_detailed_test.erl deleted file mode 100644 index 33a22238a..000000000 --- a/riak_test/tests/storage_stats_detailed_test.erl +++ /dev/null @@ -1,155 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(storage_stats_detailed_test). -%% @doc Integration test for storage statistics. - --compile(export_all). --export([confirm/0]). - --include_lib("erlcloud/include/erlcloud_aws.hrl"). --include_lib("xmerl/include/xmerl.hrl"). --include_lib("eunit/include/eunit.hrl"). - --include("riak_cs.hrl"). - --define(BUCKET, "storage-stats-detailed"). - --define(KEY1, "1"). --define(KEY2, "2"). --define(KEY3, "3"). - -confirm() -> - rtcs:set_advanced_conf(cs, [{riak_cs, [{detailed_storage_calc, true}]}]), - SetupRes = rtcs:setup(1), - {AdminConfig, {RiakNodes, CSNodes, _Stanchion}} = SetupRes, - RiakNode = hd(RiakNodes), - UserConfig = rtcs_admin:create_user(RiakNode, 1), - - ?assertEqual(ok, erlcloud_s3:create_bucket(?BUCKET, UserConfig)), - lager:info("Investigating stats for this empty bucket..."), - assert_results_for_empty_bucket(AdminConfig, UserConfig, hd(CSNodes), ?BUCKET), - - setup_objects(UserConfig, ?BUCKET), - lager:info("Investigating stats for non empty bucket..."), - assert_results_for_non_empty_bucket(AdminConfig, UserConfig, hd(CSNodes), ?BUCKET), - - storage_stats_test:confirm_2(SetupRes), - rtcs:pass(). - -assert_results_for_empty_bucket(AdminConfig, UserConfig, CSNode, Bucket) -> - rt:setup_log_capture(CSNode), - {Begin, End} = storage_stats_test:calc_storage_stats(CSNode), - {JsonStat, XmlStat} = storage_stats_test:storage_stats_request( - AdminConfig, UserConfig, Begin, End), - rtcs:reset_log(CSNode), - lists:foreach(fun(K) -> - assert_storage_json_stats(Bucket, K, 0, JsonStat), - assert_storage_xml_stats(Bucket, K, 0, XmlStat) - end, - ["Objects", - "Bytes", - "Blocks", - "WritingMultipartObjects", - "WritingMultipartBytes", - "WritingMultipartBlocks", - "ScheduledDeleteNewObjects", - "ScheduledDeleteNewBytes", - "ScheduledDeleteNewBlocks"]), - ok. - -setup_objects(UserConfig, Bucket) -> - Block1 = crypto:rand_bytes(100), - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(Bucket, ?KEY1, Block1, UserConfig)), - Block1Overwrite = crypto:rand_bytes(300), - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(Bucket, ?KEY1, Block1Overwrite, UserConfig)), - Block2 = crypto:rand_bytes(200), - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(Bucket, ?KEY2, Block2, UserConfig)), - ?assertEqual([{delete_marker, false}, {version_id, "null"}], - erlcloud_s3:delete_object(Bucket, ?KEY2, UserConfig)), - - InitRes = erlcloud_s3_multipart:initiate_upload( - Bucket, ?KEY3, "text/plain", [], UserConfig), - UploadId = erlcloud_xml:get_text( - "/InitiateMultipartUploadResult/UploadId", InitRes), - MPBlocks = crypto:rand_bytes(2*1024*1024), - {_RespHeaders1, _UploadRes} = erlcloud_s3_multipart:upload_part( - Bucket, ?KEY3, UploadId, 1, MPBlocks, UserConfig), - {_RespHeaders2, _UploadRes} = erlcloud_s3_multipart:upload_part( - Bucket, ?KEY3, UploadId, 2, MPBlocks, UserConfig), - ok. - -assert_results_for_non_empty_bucket(AdminConfig, UserConfig, CSNode, Bucket) -> - rt:setup_log_capture(CSNode), - - {Begin, End} = storage_stats_test:calc_storage_stats(CSNode), - lager:info("Admin user will get every fields..."), - {JsonStat, XmlStat} = storage_stats_test:storage_stats_request( - AdminConfig, UserConfig, Begin, End), - - ?assert(rtcs:json_get([<<"StartTime">>], JsonStat) =/= notfound), - ?assert(rtcs:json_get([<<"EndTime">>], JsonStat) =/= notfound), - ?assert(proplists:get_value('StartTime', XmlStat) =/= notfound), - ?assert(proplists:get_value('EndTime', XmlStat) =/= notfound), - lists:foreach(fun({K, V}) -> - assert_storage_json_stats(Bucket, K, V, JsonStat), - assert_storage_xml_stats(Bucket, K, V, XmlStat) - end, - [{"Objects", 1 + 2}, - {"Bytes", 300 + 2 * 2*1024*1024}, - {"Blocks", 1 + 4}, - {"WritingMultipartObjects", 2}, - {"WritingMultipartBytes", 2 * 2*1024*1024}, - {"WritingMultipartBlocks", 2 * 2}, - {"ScheduledDeleteNewObjects", 2}, - {"ScheduledDeleteNewBytes", 100 + 200}, - {"ScheduledDeleteNewBlocks", 2}]), - - lager:info("Non-admin user will get only Objects and Bytes..."), - {JsonStat2, XmlStat2} = storage_stats_test:storage_stats_request( - UserConfig, UserConfig, Begin, End), - lists:foreach(fun({K, V}) -> - assert_storage_json_stats(Bucket, K, V, JsonStat2), - assert_storage_xml_stats(Bucket, K, V, XmlStat2) - end, - [{"Objects", 1 + 2}, - {"Bytes", 300 + 2 * 2*1024*1024}, - {"Blocks", notfound}, - {"WritingMultipartObjects", notfound}, - {"WritingMultipartBytes", notfound}, - {"WritingMultipartBlocks", notfound}, - {"ScheduledDeleteNewObjects", notfound}, - {"ScheduledDeleteNewBytes", notfound}, - {"ScheduledDeleteNewBlocks", notfound}]), - ok. - -assert_storage_json_stats(Bucket, K, V, Sample) -> - lager:debug("assert json: ~p", [{K, V}]), - ?assertEqual(V, rtcs:json_get([list_to_binary(Bucket), list_to_binary(K)], - Sample)). - -assert_storage_xml_stats(Bucket, K, V, Sample) -> - lager:debug("assert xml: ~p", [{K, V}]), - ?assertEqual(V, proplists:get_value(list_to_atom(K), - proplists:get_value(Bucket, Sample), - notfound)). diff --git a/riak_test/tests/storage_stats_test.erl b/riak_test/tests/storage_stats_test.erl deleted file mode 100644 index fe51a589d..000000000 --- a/riak_test/tests/storage_stats_test.erl +++ /dev/null @@ -1,324 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(storage_stats_test). -%% @doc Integration test for storage statistics. - --compile(export_all). --export([confirm/0]). - --include_lib("erlcloud/include/erlcloud_aws.hrl"). --include_lib("xmerl/include/xmerl.hrl"). --include_lib("eunit/include/eunit.hrl"). - --include("riak_cs.hrl"). - --define(BUCKET1, "storage-stats-test-1"). --define(BUCKET2, "storage-stats-test-2"). --define(BUCKET3, "storage-stats-test-3"). - --define(BUCKET4, "storage-stats-test-4"). --define(BUCKET5, "storage-stats-test-5"). --define(BUCKET6, "storage-stats-test-6"). --define(BUCKET7, "storage-stats-test-7"). --define(BUCKET8, "storage-stats-test-8"). - --define(BUCKET9, "storage-stats-test-9"). - --define(KEY, "1"). - --define(HIDDEN_KEY, "5=pockets"). - -confirm() -> - confirm_1(false). - -confirm_1(Use2iForStorageCalc) when is_boolean(Use2iForStorageCalc) -> - rtcs:set_advanced_conf(riak, [{riak_kv, [{delete_mode, keep}]}]), - rtcs:set_advanced_conf(cs, [{riak_cs, - [{use_2i_for_storage_calc, Use2iForStorageCalc}]}]), - SetupRes = rtcs:setup(1), - confirm_2(SetupRes). - -confirm_2({UserConfig, {RiakNodes, CSNodes, _Stanchion}}) -> - UserConfig2 = rtcs_admin:create_user(hd(RiakNodes), 1), - - TestSpecs = [store_object(?BUCKET1, UserConfig), - delete_object(?BUCKET2, UserConfig), - store_objects(?BUCKET3, UserConfig), - - %% for CS #840 regression - store_object(?BUCKET4, UserConfig), - store_object(?BUCKET5, UserConfig), - store_object(?BUCKET6, UserConfig), - store_object(?BUCKET7, UserConfig), - store_object(?BUCKET8, UserConfig), - give_over_bucket(?BUCKET9, UserConfig, UserConfig2) - ], - - verify_cs840_regression(UserConfig, RiakNodes), - - %% Set up to grep logs to verify messages - rt:setup_log_capture(hd(CSNodes)), - - {Begin, End} = calc_storage_stats(hd(CSNodes)), - {JsonStat, XmlStat} = storage_stats_request(UserConfig, Begin, End), - lists:foreach(fun(Spec) -> - assert_storage_json_stats(Spec, JsonStat), - assert_storage_xml_stats(Spec, XmlStat) - end, TestSpecs), - rtcs:pass(). - -%% @doc garbage data to check #840 regression, -%% due to this garbages, following tests may fail -%% makes manifest in BUCKET(4,5,6,7,8) to garbage, which can -%% be generated from former versions of riak cs than 1.4.5 -verify_cs840_regression(UserConfig, RiakNodes) -> - - %% None of thes objects should not be calculated effective in storage - ok = mess_with_writing_various_props( - RiakNodes, UserConfig, - [%% state=writing, .props=undefined - {?BUCKET4, ?KEY, writing, undefined}, - %% badly created ongoing multipart uploads (not really) - {?BUCKET5, ?KEY, writing, [{multipart, undefined}]}, - {?BUCKET6, ?KEY, writing, [{multipart, pocketburgerking}]}]), - - %% state=active, .props=undefined in {?BUCKET7, ?KEY} - ok = mess_with_active_undefined(RiakNodes), - %% tombstone in siblings in {?BUCKET8, ?KEY} - ok = mess_with_tombstone(RiakNodes, UserConfig), - ok. - -mess_with_writing_various_props(RiakNodes, UserConfig, VariousProps) -> - F = fun({CSBucket, CSKey, NewState, Props}) -> - Bucket = <<"0o:", (rtcs:md5(list_to_binary(CSBucket)))/binary>>, - Pid = rtcs:pbc(RiakNodes, objects, CSBucket), - {ok, RiakObject0} = riakc_pb_socket:get(Pid, Bucket, list_to_binary(CSKey)), - [{UUID, Manifest0}|_] = hd([binary_to_term(V) || V <- riakc_obj:get_values(RiakObject0)]), - Manifest1 = Manifest0?MANIFEST{state=NewState, props=Props}, - RiakObject = riakc_obj:update_value(RiakObject0, - term_to_binary([{UUID, Manifest1}])), - lager:info("~p", [Manifest1?MANIFEST.props]), - - Block = crypto:rand_bytes(100), - ?assertEqual([{version_id, "null"}], erlcloud_s3:put_object(CSBucket, CSKey, - Block, UserConfig)), - ok = riakc_pb_socket:put(Pid, RiakObject), - assure_num_siblings(Pid, Bucket, list_to_binary(CSKey), 2), - ok = riakc_pb_socket:stop(Pid) - end, - lists:foreach(F, VariousProps). - - -mess_with_active_undefined(RiakNodes) -> - CSBucket = ?BUCKET7, CSKey = ?KEY, - Pid = rtcs:pbc(RiakNodes, objects, CSBucket), - Bucket = <<"0o:", (rtcs:md5(list_to_binary(CSBucket)))/binary>>, - {ok, RiakObject0} = riakc_pb_socket:get(Pid, Bucket, list_to_binary(CSKey)), - [{UUID, Manifest0}|_] = hd([binary_to_term(V) || V <- riakc_obj:get_values(RiakObject0)]), - Manifest1 = Manifest0?MANIFEST{props=undefined}, - RiakObject = riakc_obj:update_value(RiakObject0, - term_to_binary([{UUID, Manifest1}])), - ok = riakc_pb_socket:put(Pid, RiakObject), - ok = riakc_pb_socket:stop(Pid). - -%% @doc messing with tombstone (see above adding {delete_mode, keep} to riak_kv) -mess_with_tombstone(RiakNodes, UserConfig) -> - CSBucket = ?BUCKET8, - CSKey = ?KEY, - Pid = rtcs:pbc(RiakNodes, objects, CSBucket), - Block = crypto:rand_bytes(100), - ?assertEqual([{version_id, "null"}], erlcloud_s3:put_object(CSBucket, CSKey, - Block, UserConfig)), - Bucket = <<"0o:", (rtcs:md5(list_to_binary(?BUCKET8)))/binary>>, - - %% %% This leaves a tombstone which messes up the storage calc - ok = riakc_pb_socket:delete(Pid, Bucket, list_to_binary(CSKey)), - %% lager:info("listkeys: ~p", [riakc_pb_socket:list_keys(Pid, Bucket)]), - - ?assertEqual([{version_id, "null"}], erlcloud_s3:put_object(?BUCKET8, CSKey, - Block, UserConfig)), - - {ok, RiakObject0} = riakc_pb_socket:get(Pid, Bucket, list_to_binary(CSKey)), - assure_num_siblings(Pid, Bucket, list_to_binary(CSKey), 1), - - Block2 = crypto:rand_bytes(100), - ?assertEqual([{version_id, "null"}], erlcloud_s3:put_object(?BUCKET8, CSKey, - Block2, UserConfig)), - - ok = riakc_pb_socket:delete_vclock(Pid, Bucket, list_to_binary(CSKey), - riakc_obj:vclock(RiakObject0)), - - %% Two siblings, alive object and new tombstone - assure_num_siblings(Pid, Bucket, list_to_binary(CSKey), 2), - - %% Here at last, ?BUCKET8 should have ?KEY alive and counted, but - %% #840 causes, ?KEY won't be counted in usage calc - Obj = erlcloud_s3:get_object(?BUCKET8, CSKey, UserConfig), - ?assertEqual(byte_size(Block2), list_to_integer(proplists:get_value(content_length, Obj))), - ?assertEqual(Block2, proplists:get_value(content, Obj)), - ok = riakc_pb_socket:stop(Pid). - -assure_num_siblings(Pid, Bucket, Key, Num) -> - {ok, RiakObject0} = riakc_pb_socket:get(Pid, Bucket, Key), - Contents = riakc_obj:get_values(RiakObject0), - ?assertEqual(Num, length(Contents)). - - -store_object(Bucket, UserConfig) -> - lager:info("creating bucket ~p", [Bucket]), - %% Create bucket - ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket, UserConfig)), - %% Put 100-byte object - Block = crypto:rand_bytes(100), - ?assertEqual([{version_id, "null"}], erlcloud_s3:put_object(Bucket, ?KEY, Block, UserConfig)), - ExpectedObjects = 1, - ExpectedBytes = 100, - {Bucket, ExpectedObjects, ExpectedBytes}. - -delete_object(Bucket, UserConfig) -> - lager:info("creating bucket ~p", [Bucket]), - %% Create bucket - ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket, UserConfig)), - %% Put 100-byte object - Block = crypto:rand_bytes(100), - ?assertEqual([{version_id, "null"}], erlcloud_s3:put_object(Bucket, ?KEY, Block, UserConfig)), - ?assertEqual([{delete_marker, false}, {version_id, "null"}], erlcloud_s3:delete_object(Bucket, ?KEY, UserConfig)), - ExpectedObjects = 0, - ExpectedBytes = 0, - {Bucket, ExpectedObjects, ExpectedBytes}. - -store_objects(Bucket, UserConfig) -> - lager:info("creating bucket ~p", [Bucket]), - %% Create bucket - ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket, UserConfig)), - %% Put 100-byte object 10 times - Block = crypto:rand_bytes(100), - [?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(Bucket, integer_to_list(Key), Block, UserConfig)) - || Key <- lists:seq(1, 10)], - ExpectedObjects = 10, - ExpectedBytes = 1000, - {Bucket, ExpectedObjects, ExpectedBytes}. - -give_over_bucket(Bucket, UserConfig, AnotherUser) -> - %% Create bucket, put/delete object, delete bucket finally - ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket, UserConfig)), - Block = crypto:rand_bytes(100), - ?assertEqual([{version_id, "null"}], erlcloud_s3:put_object(Bucket, ?KEY, Block, UserConfig)), - ?assertEqual([{delete_marker, false}, {version_id, "null"}], erlcloud_s3:delete_object(Bucket, ?KEY, UserConfig)), - ?assertEqual(ok, erlcloud_s3:delete_bucket(Bucket, UserConfig)), - - %% Another user re-create the bucket and put an object into it. - ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket, AnotherUser)), - Block2 = crypto:rand_bytes(100), - ?assertEqual([{version_id, "null"}], - erlcloud_s3:put_object(Bucket, ?KEY, Block2, AnotherUser)), - {Bucket, undefined, undefined}. - -calc_storage_stats(CSNode) -> - Begin = rtcs:datetime(), - %% FIXME: workaround for #766 - timer:sleep(1000), - Res = rtcs_exec:calculate_storage(1), - lager:info("riak-cs-storage batch result: ~s", [Res]), - ExpectRegexp = "Batch storage calculation started.\n$", - ?assertMatch({match, _}, re:run(Res, ExpectRegexp)), - true = rt:expect_in_log(CSNode, "Finished storage calculation"), - %% FIXME: workaround for #766 - timer:sleep(1000), - End = rtcs:datetime(), - {Begin, End}. - -assert_storage_json_stats({Bucket, undefined, undefined}, Sample) -> - ?assertEqual(notfound, rtcs:json_get([list_to_binary(Bucket)], Sample)); -assert_storage_json_stats({Bucket, ExpectedObjects, ExpectedBytes}, Sample) -> - ?assertEqual(ExpectedObjects, rtcs:json_get([list_to_binary(Bucket), <<"Objects">>], Sample)), - ?assertEqual(ExpectedBytes, rtcs:json_get([list_to_binary(Bucket), <<"Bytes">>], Sample)), - ?assert(rtcs:json_get([<<"StartTime">>], Sample) =/= notfound), - ?assert(rtcs:json_get([<<"EndTime">>], Sample) =/= notfound), - ok. - -assert_storage_xml_stats({Bucket, undefined, undefined}, Sample) -> - ?assertEqual(undefined, proplists:get_value(Bucket, Sample)); -assert_storage_xml_stats({Bucket, ExpectedObjects, ExpectedBytes}, Sample) -> - ?assertEqual(ExpectedObjects, proplists:get_value('Objects', proplists:get_value(Bucket, Sample))), - ?assertEqual(ExpectedBytes, proplists:get_value('Bytes', proplists:get_value(Bucket, Sample))), - ?assert(proplists:get_value('StartTime', Sample) =/= notfound), - ?assert(proplists:get_value('EndTime', Sample) =/= notfound), - ok. - -storage_stats_request(UserConfig, Begin, End) -> - storage_stats_request(UserConfig, UserConfig, Begin, End). - -storage_stats_request(SignUserConfig, UserConfig, Begin, End) -> - {storage_stats_json_request(SignUserConfig, UserConfig, Begin, End), - storage_stats_xml_request(SignUserConfig, UserConfig, Begin, End)}. - -storage_stats_json_request(SignUserConfig, UserConfig, Begin, End) -> - Samples = samples_from_json_request(SignUserConfig, UserConfig, {Begin, End}), - lager:debug("Storage samples[json]: ~p", [Samples]), - ?assertEqual(1, length(Samples)), - [Sample] = Samples, - lager:info("Storage sample[json]: ~p", [Sample]), - Sample. - -storage_stats_xml_request(SignUserConfig, UserConfig, Begin, End) -> - Samples = samples_from_xml_request(SignUserConfig, UserConfig, {Begin, End}), - lager:debug("Storage samples[xml]: ~p", [Samples]), - ?assertEqual(1, length(Samples)), - [Sample] = Samples, - ParsedSample = to_proplist_stats(Sample), - lager:info("Storage sample[xml]: ~p", [ParsedSample]), - ParsedSample. - -samples_from_json_request(SignUserConfig, UserConfig, {Begin, End}) -> - KeyId = UserConfig#aws_config.access_key_id, - StatsKey = string:join(["usage", KeyId, "bj", Begin, End], "/"), - GetResult = erlcloud_s3:get_object("riak-cs", StatsKey, SignUserConfig), - lager:debug("GET Storage stats response[json]: ~p", [GetResult]), - Usage = mochijson2:decode(proplists:get_value(content, GetResult)), - lager:debug("Usage Response[json]: ~p", [Usage]), - rtcs:json_get([<<"Storage">>, <<"Samples">>], Usage). - -samples_from_xml_request(SignUserConfig, UserConfig, {Begin, End}) -> - KeyId = UserConfig#aws_config.access_key_id, - StatsKey = string:join(["usage", KeyId, "bx", Begin, End], "/"), - GetResult = erlcloud_s3:get_object("riak-cs", StatsKey, SignUserConfig), - lager:debug("GET Storage stats response[xml]: ~p", [GetResult]), - {Usage, _Rest} = xmerl_scan:string(binary_to_list(proplists:get_value(content, GetResult))), - lager:debug("Usage Response[xml]: ~p", [Usage]), - xmerl_xpath:string("//Storage/Samples/Sample",Usage). - -to_proplist_stats(Sample) -> - lists:foldl(fun extract_bucket/2, [], Sample#xmlElement.content) - ++ lists:foldl(fun extract_slice/2, [], Sample#xmlElement.attributes). - -extract_bucket(#xmlElement{name='Bucket', attributes=[#xmlAttribute{value=Bucket}], content=Content}, Acc) -> - [{Bucket, lists:foldl(fun extract_usage/2,[], Content)}|Acc]. - -extract_slice(#xmlAttribute{name=Name, value=Value}, Acc) -> - [{Name, Value}|Acc]. - -extract_usage(#xmlElement{name=Name, content=[Content]}, Acc) -> - [{Name, extract_value(Content)}|Acc]. - -extract_value(#xmlText{value=Content}) -> - list_to_integer(Content). diff --git a/riak_test/tests/storage_stats_test_2.erl b/riak_test/tests/storage_stats_test_2.erl deleted file mode 100644 index 32a2bc75b..000000000 --- a/riak_test/tests/storage_stats_test_2.erl +++ /dev/null @@ -1,28 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(storage_stats_test_2). -%% @doc Integration test for storage statistics. - --compile(export_all). --export([confirm/0]). - -confirm() -> - storage_stats_test:confirm_1(true). diff --git a/riak_test/tests/too_large_entity_test.erl b/riak_test/tests/too_large_entity_test.erl deleted file mode 100644 index aabb92597..000000000 --- a/riak_test/tests/too_large_entity_test.erl +++ /dev/null @@ -1,117 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(too_large_entity_test). - -%% @doc `riak_test' module for testing the behavior in dealing with -%% entities that violate the specified object size restrictions - --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). - --define(TEST_BUCKET, "riak-test-bucket"). --define(TEST_KEY1, "riak_test_key1"). --define(TEST_KEY2, "riak_test_key2"). --define(PART_COUNT, 5). --define(GOOD_PART_SIZE, 5*1024*1024). --define(BAD_PART_SIZE, 2*1024*1024). - -confirm() -> - rtcs:set_advanced_conf(cs, cs_config()), - {UserConfig, {_RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup(1), - - lager:info("User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:list_objects(?TEST_BUCKET, UserConfig)), - - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - ?assertMatch([{buckets, [[{name, ?TEST_BUCKET}, _]]}], - erlcloud_s3:list_buckets(UserConfig)), - - %% Test cases - too_large_upload_part_test_case(?TEST_BUCKET, ?TEST_KEY1, UserConfig), - too_large_object_put_test_case(?TEST_BUCKET, ?TEST_KEY2, UserConfig), - - lager:info("deleting bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:delete_bucket(?TEST_BUCKET, UserConfig)), - - ?assertError({aws_error, {http_error, 404, _, _}}, erlcloud_s3:list_objects(?TEST_BUCKET, UserConfig)), - rtcs:pass(). - -generate_part_data(X, Size) - when 0 =< X, X =< 255 -> - list_to_binary( - [X || _ <- lists:seq(1, Size)]). - -too_large_upload_part_test_case(Bucket, Key, Config) -> - %% Initiate a multipart upload - lager:info("Initiating multipart upload"), - InitUploadRes = erlcloud_s3_multipart:initiate_upload(Bucket, Key, [], [], Config), - UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), - - %% Verify the upload id is in list_uploads results and - %% that the bucket information is correct - UploadsList1 = erlcloud_s3_multipart:list_uploads(Bucket, [], Config), - Uploads1 = proplists:get_value(uploads, UploadsList1, []), - ?assertEqual(Bucket, proplists:get_value(bucket, UploadsList1)), - ?assert(upload_id_present(UploadId, Uploads1)), - - lager:info("Uploading an oversize part"), - ?assertError({aws_error, {http_error, 400, _, _}}, - erlcloud_s3_multipart:upload_part(Bucket, - Key, - UploadId, - 1, - generate_part_data(61, 2000), - Config)). - -too_large_object_put_test_case(Bucket, Key, Config) -> - Object1 = crypto:rand_bytes(1001), - Object2 = crypto:rand_bytes(1000), - - ?assertError({aws_error, {http_error, 400, _, _}}, - erlcloud_s3:put_object(Bucket, Key, Object1, Config)), - - erlcloud_s3:put_object(Bucket, Key, Object2, Config), - - ObjList1 = erlcloud_s3:list_objects(Bucket, Config), - ?assertEqual([Key], - [proplists:get_value(key, O) || - O <- proplists:get_value(contents, ObjList1)]), - - erlcloud_s3:delete_object(Bucket, Key, Config), - - ObjList2 = erlcloud_s3:list_objects(Bucket, Config), - ?assertEqual([], proplists:get_value(contents, ObjList2)). - -upload_id_present(UploadId, UploadList) -> - [] /= [UploadData || UploadData <- UploadList, - proplists:get_value(upload_id, UploadData) =:= UploadId]. - -cs_config() -> - [{riak_cs, - [ - {max_content_length, 1000}, - {enforce_multipart_part_size, false} - ] - }]. diff --git a/riak_test/tests/upgrade_downgrade_test.erl b/riak_test/tests/upgrade_downgrade_test.erl deleted file mode 100644 index cff44d5a7..000000000 --- a/riak_test/tests/upgrade_downgrade_test.erl +++ /dev/null @@ -1,156 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(upgrade_downgrade_test). --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). --include_lib("erlcloud/include/erlcloud_aws.hrl"). - --define(TEST_BUCKET, "riak-test-bucket-foobar"). --define(KEY_SINGLE_BLOCK, "riak_test_key1"). --define(KEY_MULTIPLE_BLOCK, "riak_test_key2"). - -confirm() -> - PrevConfig = rtcs_config:previous_configs(), - {UserConfig, {RiakNodes, _CSNodes, _Stanchion}} = - rtcs:setup(2, PrevConfig, previous), - - lager:info("nodes> ~p", [rt_config:get(rt_nodes)]), - lager:info("versions> ~p", [rt_config:get(rt_versions)]), - - {ok, Data} = prepare_all_data(UserConfig), - ok = verify_all_data(UserConfig, Data), - - AdminCreds = {UserConfig#aws_config.access_key_id, - UserConfig#aws_config.secret_access_key}, - {_, RiakCurrentVsn} = - rtcs_dev:riak_root_and_vsn(current, rt_config:get(build_type, oss)), - - %% Upgrade!!! - [begin - N = rtcs_dev:node_id(RiakNode), - lager:debug("upgrading ~p", [N]), - rtcs_exec:stop_cs(N, previous), - ok = rt:upgrade(RiakNode, RiakCurrentVsn), - rt:wait_for_service(RiakNode, riak_kv), - ok = rtcs_config:upgrade_cs(N, AdminCreds), - rtcs:set_advanced_conf({cs, current, N}, - [{riak_cs, - [{riak_host, {"127.0.0.1", rtcs_config:pb_port(1)}}]}]), - rtcs_exec:start_cs(N, current) - end - || RiakNode <- RiakNodes], - rt:wait_until_ring_converged(RiakNodes), - rtcs_exec:stop_stanchion(previous), - rtcs_config:migrate_stanchion(previous, current, AdminCreds), - rtcs_exec:start_stanchion(current), - - ok = verify_all_data(UserConfig, Data), - ok = cleanup_all_data(UserConfig), - lager:info("Upgrading to current successfully done"), - - {ok, Data2} = prepare_all_data(UserConfig), - - {_, RiakPrevVsn} = - rtcs_dev:riak_root_and_vsn(previous, rt_config:get(build_type, oss)), - - - %% Downgrade!! - rtcs_exec:stop_stanchion(current), - rtcs_config:migrate_stanchion(current, previous, AdminCreds), - rtcs_exec:start_stanchion(previous), - [begin - N = rtcs_dev:node_id(RiakNode), - lager:debug("downgrading ~p", [N]), - rtcs_exec:stop_cs(N, current), - rt:stop(RiakNode), - rt:wait_until_unpingable(RiakNode), - - %% get the bitcask directory - BitcaskDataDir = filename:join([rtcs_dev:node_path(RiakNode), "data", "bitcask"]), - lager:info("downgrading Bitcask datadir ~s...", [BitcaskDataDir]), - %% and run the downgrade script: - %% Downgrading from 2.0 does not work... - %% https://github.com/basho/bitcask/issues/178 - %% And here's the downgrade script, which is downloaded at `make compile-riak-test`. - %% https://github.com/basho/bitcask/pull/184 - Result = downgrade_bitcask:main([BitcaskDataDir]), - lager:info("downgrade script done: ~p", [Result]), - - ok = rt:upgrade(RiakNode, RiakPrevVsn), - rt:wait_for_service(RiakNode, riak_kv), - ok = rtcs_config:migrate_cs(current, previous, N, AdminCreds), - rtcs_exec:start_cs(N, previous) - end - || RiakNode <- RiakNodes], - rt:wait_until_ring_converged(RiakNodes), - - ok = verify_all_data(UserConfig, Data2), - lager:info("Downgrading to previous successfully done"), - - rtcs:pass(). - -%% TODO: add more data and test cases -prepare_all_data(UserConfig) -> - lager:info("User is valid on the cluster, and has no buckets"), - ?assertEqual([{buckets, []}], erlcloud_s3:list_buckets(UserConfig)), - - lager:info("creating bucket ~p", [?TEST_BUCKET]), - ?assertEqual(ok, erlcloud_s3:create_bucket(?TEST_BUCKET, UserConfig)), - - ?assertMatch([{buckets, [[{name, ?TEST_BUCKET}, _]]}], - erlcloud_s3:list_buckets(UserConfig)), - - %% setup objects - SingleBlock = crypto:rand_bytes(400), - erlcloud_s3:put_object(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, SingleBlock, UserConfig), - MultipleBlock = crypto:rand_bytes(4000000), % not aligned to block boundary - erlcloud_s3:put_object(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, UserConfig), - - {ok, [{single_block, SingleBlock}, - {multiple_block, MultipleBlock}]}. - -%% TODO: add more data and test cases -verify_all_data(UserConfig, Data) -> - SingleBlock = proplists:get_value(single_block, Data), - MultipleBlock = proplists:get_value(multiple_block, Data), - - %% basic GET test cases - basic_get_test_case(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, SingleBlock, UserConfig), - basic_get_test_case(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock, UserConfig), - - ok. - -cleanup_all_data(UserConfig) -> - erlcloud_s3:delete_object(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, UserConfig), - erlcloud_s3:delete_object(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, UserConfig), - erlcloud_s3:delete_bucket(?TEST_BUCKET, UserConfig), - ok. - -basic_get_test_case(Bucket, Key, ExpectedContent, Config) -> - Obj = erlcloud_s3:get_object(Bucket, Key, Config), - assert_whole_content(ExpectedContent, Obj). - -assert_whole_content(ExpectedContent, ResultObj) -> - Content = proplists:get_value(content, ResultObj), - ContentLength = proplists:get_value(content_length, ResultObj), - ?assertEqual(byte_size(ExpectedContent), list_to_integer(ContentLength)), - ?assertEqual(byte_size(ExpectedContent), byte_size(Content)), - ?assertEqual(ExpectedContent, Content). diff --git a/riak_test/tests/user_test.erl b/riak_test/tests/user_test.erl deleted file mode 100644 index 249718c50..000000000 --- a/riak_test/tests/user_test.erl +++ /dev/null @@ -1,382 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - --module(user_test). - --compile(export_all). --export([confirm/0]). --include_lib("eunit/include/eunit.hrl"). --include_lib("erlcloud/include/erlcloud_aws.hrl"). --include_lib("xmerl/include/xmerl.hrl"). - --define(TEST_BUCKET, "riak-test-bucket"). --define(JSON, "application/json"). --define(XML, "application/xml"). - -confirm() -> - {AdminUserConfig, {RiakNodes, _CSNodes, _Stanchion}} = rtcs:setup(1), - - HeadRiakNode = hd(RiakNodes), - AdminUser = {"admin@me.com", "admin", - AdminUserConfig#aws_config.access_key_id, - AdminUserConfig#aws_config.secret_access_key, - "enabled"}, - user_listing_json_test_case([AdminUser], AdminUserConfig, HeadRiakNode), - user_listing_xml_test_case([AdminUser], AdminUserConfig, HeadRiakNode), - - %% Create other 1003 users and re-run user listing test cases - Port = rtcs_config:cs_port(HeadRiakNode), - Users1 = [AdminUser | - create_users(Port, [{"bart@simpsons.com", "bart"}, - {"homer@simpsons.com", "homer"}, - {"taro@example.co.jp", japanese_aiueo()}], [])], - Users2 = Users1 ++ create_200_users(Port), - ?assertEqual(1 + 3 + 200, length(Users2)), - - user_listing_json_test_case(Users2, AdminUserConfig, HeadRiakNode), - user_listing_xml_test_case(Users2, AdminUserConfig, HeadRiakNode), - user_listing_many_times(Users2, AdminUserConfig, HeadRiakNode), - update_user_json_test_case(AdminUserConfig, HeadRiakNode), - update_user_xml_test_case(AdminUserConfig, HeadRiakNode), - rtcs:pass(). - -japanese_aiueo() -> - %% To avoid dependency on source code encoding, create list from chars. - %% These five numbers represents "あいうえお" (A-I-U-E-O in Japanese). - %% unicode:characters_to_binary([12354,12356,12358,12360,12362]). - Chars = [12354,12356,12358,12360,12362], - binary_to_list(unicode:characters_to_binary(Chars)). - -create_200_users(Port) -> - From = self(), - Processes = 5, - PerProcess = 40, - [spawn(fun() -> - Users = create_users( - Port, - [begin - Name = "zzz-" ++ integer_to_list(I * PerProcess + J), - {Name ++ "@thousand.example.com", Name} - end || J <- lists:seq(1, PerProcess)], - []), - From ! Users - end) || - I <- lists:seq(1, Processes)], - collect_users(Processes, []). - -collect_users(0, Acc) -> - lists:usort(lists:flatten(Acc)); -collect_users(N, Acc) -> - receive - Users -> collect_users(N-1, [Users | Acc]) - end. - -create_users(_Port, [], Acc) -> - ordsets:from_list(Acc); -create_users(Port, [{Email, Name} | Users], Acc) -> - {UserConfig, _Id} = rtcs_admin:create_user(Port, Email, Name), - create_users(Port, Users, [{Email, - Name, - UserConfig#aws_config.access_key_id, - UserConfig#aws_config.secret_access_key, - "enabled"} | Acc]). - -user_listing_json_test_case(Users, UserConfig, Node) -> - user_listing_test(Users, UserConfig, Node, ?JSON). - -user_listing_xml_test_case(Users, UserConfig, Node) -> - user_listing_test(Users, UserConfig, Node, ?XML). - -user_listing_many_times(Users, UserConfig, Node) -> - [user_listing_test(Users, UserConfig, Node, ?JSON) || - _I <- lists:seq(1, 15)], - ok. - -user_listing_test(ExpectedUsers, UserConfig, Node, ContentType) -> - Resource = "/riak-cs/users", - Port = rtcs_config:cs_port(Node), - Users = parse_user_info( - rtcs_admin:list_users(UserConfig, Port, Resource, ContentType)), - ?assertEqual(ExpectedUsers, Users). - -update_user_json_test_case(AdminConfig, Node) -> - Users = [{"fergus@brave.sco", "Fergus"}, - {"merida@brave.sco", "Merida"}, - {"seamus@brave.sco", "Seamus"}], - update_user_test(AdminConfig, Node, ?JSON, Users). - -update_user_xml_test_case(AdminConfig, Node) -> - Users = [{"gru@despicable.me", "Gru"}, - {"minion@despicable.me", "Minion Minion"}, - {"dr.nefario@despicable.me", "DrNefario"}], - update_user_test(AdminConfig, Node, ?XML, Users). - -update_user_test(AdminConfig, Node, ContentType, Users) -> - [{Email1, User1}, {Email2, User2}, {Email3, User3}]= Users, - Port = rtcs_config:cs_port(Node), - {UserConfig, _} = rtcs_admin:create_user(Port, Email1, User1), - {BadUserConfig, _} = rtcs_admin:create_user(Port, Email3, User3), - - #aws_config{access_key_id=Key, secret_access_key=Secret} = UserConfig, - - UserResource = "/riak-cs/user", - AdminResource = UserResource ++ "/" ++ Key, - - %% Fetch the user record using the user's own credentials - UserResult1 = parse_user_record( - rtcs_admin:get_user(UserConfig, Port, UserResource, ContentType), - ContentType), - %% Fetch the user record using the admin credentials - UserResult2 = parse_user_record( - rtcs_admin:get_user(AdminConfig, Port, AdminResource, ContentType), - ContentType), - ?assertMatch({Email1, User1, _, Secret, "enabled"}, UserResult1), - ?assertMatch({Email1, User1, _, Secret, "enabled"}, UserResult2), - - %% Attempt to update the user's email to be the same as the admin - %% user and verify that the update attempt returns an error. - Resource = "/riak-cs/user/" ++ Key, - InvalidUpdateDoc = update_email_and_name_doc(ContentType, "admin@me.com", "admin"), - - ErrorResult = parse_error_code( - catch rtcs_admin:update_user(UserConfig, - Port, - Resource, - ContentType, - InvalidUpdateDoc)), - ?assertEqual({409, "UserAlreadyExists"}, ErrorResult), - - %% Test updating the user's name and email - UpdateDoc = update_email_and_name_doc(ContentType, Email2, User2), - _ = rtcs_admin:update_user(UserConfig, Port, Resource, ContentType, UpdateDoc), - - %% Fetch the user record using the user's own credentials - UserResult3 = parse_user_record( - rtcs_admin:get_user(UserConfig, Port, UserResource, ContentType), - ContentType), - %% Fetch the user record using the admin credentials - UserResult4 = parse_user_record( - rtcs_admin:get_user(AdminConfig, Port, AdminResource, ContentType), - ContentType), - ?assertMatch({Email2, User2, _, Secret, "enabled"}, UserResult3), - ?assertMatch({Email2, User2, _, Secret, "enabled"}, UserResult4), - - %% Test that attempting to update another user's status with a - %% non-admin account is disallowed - UpdateDoc2 = update_status_doc(ContentType, "disabled"), - Resource = "/riak-cs/user/" ++ Key, - ErrorResult2 = parse_error_code( - catch rtcs_admin:update_user(BadUserConfig, - Port, - Resource, - ContentType, - UpdateDoc2)), - ?assertEqual({403, "AccessDenied"}, ErrorResult2), - - %% Test updating a user's own status - Resource = "/riak-cs/user/" ++ Key, - _ = rtcs_admin:update_user(UserConfig, Port, Resource, ContentType, UpdateDoc2), - - %% Fetch the user record using the user's own credentials. Since - %% the user is now disabled this should return an error. - UserResult5 = parse_error_code( - catch rtcs_admin:get_user(UserConfig, Port, - UserResource, ContentType)), - - %% Fetch the user record using the admin credentials. The user is - %% not able to retrieve their own account information now that the - %% account is disabled. - UserResult6 = parse_user_record( - rtcs_admin:get_user(AdminConfig, Port, AdminResource, ContentType), - ContentType), - ?assertEqual({403, "AccessDenied"}, UserResult5), - ?assertMatch({Email2, User2, _, Secret, "disabled"}, UserResult6), - - %% Re-enable the user - UpdateDoc3 = update_status_doc(ContentType, "enabled"), - Resource = "/riak-cs/user/" ++ Key, - _ = rtcs_admin:update_user(AdminConfig, Port, Resource, ContentType, UpdateDoc3), - - %% Test issuing a new key_secret - UpdateDoc4 = new_key_secret_doc(ContentType), - Resource = "/riak-cs/user/" ++ Key, - UpdateResult = rtcs_admin:update_user(AdminConfig, - Port, - Resource, - ContentType, - UpdateDoc4), - {_, _, _, UpdSecret1, _} = parse_user_record(UpdateResult, ContentType), - - %% Generate an updated user config with the new secret - UserConfig2 = rtcs_admin:aws_config(UserConfig, [{secret, UpdSecret1}]), - - %% Fetch the user record using the user's own credentials - UserResult7 = parse_user_record( - rtcs_admin:get_user(UserConfig2, Port, UserResource, ContentType), - ContentType), - %% Fetch the user record using the admin credentials - UserResult8 = parse_user_record( - rtcs_admin:get_user(AdminConfig, Port, AdminResource, ContentType), - ContentType), - ?assertMatch({_, _, _, UpdSecret1, _}, UserResult7), - ?assertMatch({_, _, _, UpdSecret1, _}, UserResult8), - ?assertMatch({Email2, User2, _, _, "enabled"}, UserResult7), - ?assertMatch({Email2, User2, _, _, "enabled"}, UserResult8). - -new_key_secret_doc(?JSON) -> - "{\"new_key_secret\": true}"; -new_key_secret_doc(?XML) -> - "true". - -update_status_doc(?JSON, Status) -> - "{\"status\":\"" ++ Status ++ "\"}"; -update_status_doc(?XML, Status) -> - "" ++ Status ++ "". - -update_email_and_name_doc(?JSON, Email, Name) -> - "{\"email\":\"" ++ Email ++ "\", \"name\":\"" ++ Name ++"\"}"; -update_email_and_name_doc(?XML, Email, Name) -> - "" ++ Email ++ - "" ++ Name ++ "enabled". - -parse_user_record(Output, ?JSON) -> - {struct, JsonData} = mochijson2:decode(Output), - Email = binary_to_list(proplists:get_value(<<"email">>, JsonData)), - Name = binary_to_list(proplists:get_value(<<"name">>, JsonData)), - KeyId = binary_to_list(proplists:get_value(<<"key_id">>, JsonData)), - KeySecret = binary_to_list(proplists:get_value(<<"key_secret">>, JsonData)), - Status = binary_to_list(proplists:get_value(<<"status">>, JsonData)), - {Email, Name, KeyId, KeySecret, Status}; -parse_user_record(Output, ?XML) -> - {ParsedData, _Rest} = xmerl_scan:string(Output, []), - lists:foldl(fun user_fields_from_xml/2, - {[], [], [], [], []}, - ParsedData#xmlElement.content). - -parse_user_records(Output, ?JSON) -> - JsonData = mochijson2:decode(Output), - [begin - Email = binary_to_list(proplists:get_value(<<"email">>, UserJson)), - Name = binary_to_list(proplists:get_value(<<"name">>, UserJson)), - KeyId = binary_to_list(proplists:get_value(<<"key_id">>, UserJson)), - KeySecret = binary_to_list(proplists:get_value(<<"key_secret">>, UserJson)), - Status = binary_to_list(proplists:get_value(<<"status">>, UserJson)), - {Email, Name, KeyId, KeySecret, Status} - end || {struct, UserJson} <- JsonData]; -parse_user_records(Output, ?XML) -> - {ParsedData, _Rest} = xmerl_scan:string(Output, []), - [lists:foldl(fun user_fields_from_xml/2, - {[], [], [], [], []}, - UserXml#xmlElement.content) - || UserXml <- ParsedData#xmlElement.content]. - --spec user_fields_from_xml(#xmlText{} | #xmlElement{}, tuple()) -> tuple(). -user_fields_from_xml(#xmlText{}, Acc) -> - Acc; -user_fields_from_xml(Element, {Email, Name, KeyId, Secret, Status}=Acc) -> - case Element#xmlElement.name of - 'Email' -> - [Content | _] = Element#xmlElement.content, - case is_record(Content, xmlText) of - true -> - {xml_text_value(Content), Name, KeyId, Secret, Status}; - false -> - Acc - end; - 'Name' -> - [Content | _] = Element#xmlElement.content, - case is_record(Content, xmlText) of - true -> - {Email, xml_text_value(Content), KeyId, Secret, Status}; - false -> - Acc - end; - 'KeyId' -> - [Content | _] = Element#xmlElement.content, - case is_record(Content, xmlText) of - true -> - {Email, Name, Content#xmlText.value, Secret, Status}; - false -> - Acc - end; - 'KeySecret' -> - [Content | _] = Element#xmlElement.content, - case is_record(Content, xmlText) of - true -> - {Email, Name, KeyId, Content#xmlText.value, Status}; - false -> - Acc - end; - 'Status' -> - [Content | _] = Element#xmlElement.content, - case is_record(Content, xmlText) of - true -> - {Email, Name, KeyId, Secret, Content#xmlText.value}; - false -> - Acc - end; - _ -> - Acc - end. - -xml_text_value(XmlText) -> - %% xmerl return list of UTF-8 characters, each element of it represent - %% one character (or codepoint), not one byte. - binary_to_list(unicode:characters_to_binary(XmlText#xmlText.value)). - -parse_error_code(Output) -> - {'EXIT', {{aws_error, {http_error, Status, _, Body}}, _Backtrace}} = Output, - {ParsedData, _Rest} = xmerl_scan:string(Body, []), - {Status, lists:foldl(fun error_code_from_xml/2, - undefined, - ParsedData#xmlElement.content)}. - -error_code_from_xml(#xmlText{}, Acc) -> - Acc; -error_code_from_xml(Element, Acc) -> - case Element#xmlElement.name of - 'Code' -> - [Content | _] = Element#xmlElement.content, - case is_record(Content, xmlText) of - true -> - Content#xmlText.value; - false -> - Acc - end; - _ -> - Acc - end. - -parse_user_info(Output) -> - [Boundary | Tokens] = string:tokens(Output, "\r\n"), - parse_user_info(Tokens, Boundary, []). - -parse_user_info([_LastToken], _, Users) -> - ordsets:from_list(Users); -parse_user_info(["Content-Type: application/xml", RawXml | RestTokens], - Boundary, Users) -> - UpdUsers = parse_user_records(RawXml, ?XML) ++ Users, - parse_user_info(RestTokens, Boundary, UpdUsers); -parse_user_info(["Content-Type: application/json", RawJson | RestTokens], - Boundary, Users) -> - UpdUsers = parse_user_records(RawJson, ?JSON) ++ Users, - parse_user_info(RestTokens, Boundary, UpdUsers); -parse_user_info([_ | RestTokens], Boundary, Users) -> - parse_user_info(RestTokens, Boundary, Users). diff --git a/riak_test/tests/xml_response_test.erl b/riak_test/tests/xml_response_test.erl deleted file mode 100644 index 0d0178551..000000000 --- a/riak_test/tests/xml_response_test.erl +++ /dev/null @@ -1,162 +0,0 @@ -%% ------------------------------------------------------------------- -%% -%% Copyright (c) 2016 Basho Technologies, Inc. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% ------------------------------------------------------------------- - --module(xml_response_test). - --export([confirm/0]). - --include_lib("eunit/include/eunit.hrl"). --include_lib("xmerl/include/xmerl.hrl"). --include_lib("erlcloud/include/erlcloud_aws.hrl"). - --define(test_bucket(Label), "test-bucket-" Label). --define(test_key(Label), "test-key-" Label). - -% use something that shouldn't occur naturally --define(root_host_alt, "foo.bar.example.com"). - -confirm() -> - verify_multipart_upload_response(). - -verify_multipart_upload_response() -> - Host = ?root_host_alt, - Bucket = ?test_bucket("vrhr"), - Key = ?test_key("vrhr"), - NumParts = 3, - PartSize = (5 * 1024 * 1024), - - rtcs:set_conf({cs, current, 1}, [{root_host, Host}]), - {AdminConfig, _} = rtcs:setup(1), - % erlcloud requires that 's3_host' matches our 'root_host' - % TODO: rtcs:setup should read this from the conf file - Config = AdminConfig#aws_config{s3_host = Host}, - - lager:info("creating bucket ~p", [Bucket]), - ?assertEqual(ok, erlcloud_s3:create_bucket(Bucket, Config)), - - {ok, {_, Result}} = perform_multipart_upload( - Bucket, Key, NumParts, PartSize, Config), - % lager:info("Response Data of '~s/~s':\n~p\n", [Bucket, Key, Result]), - - verify_multipart_upload_response(Result, Host, Bucket, Key), - - rtcs:pass(). - -perform_multipart_upload(Bucket, Key, NumParts, PartSize, Config) -> - lager:info("initiating multipart upload of '~s/~s'", [Bucket, Key]), - UploadId = erlcloud_s3_multipart:upload_id( - erlcloud_s3_multipart:initiate_upload(Bucket, Key, [], [], Config)), - - lager:info("uploading parts of '~s/~s'", [Bucket, Key]), - EtagList = upload_and_assert_parts( - Bucket, Key, UploadId, NumParts, PartSize, Config), - % lager:info("ETags of '~s/~s': ~p", [Bucket, Key, EtagList]), - - lager:info("completing upload of '~s/~s'", [Bucket, Key]), - complete_multipart_upload(Bucket, Key, UploadId, EtagList, Config). - -verify_multipart_upload_response(ResponseBody, RootHost, Bucket, Key) -> - [#xmlText{value = ResBucket}] = get_response_value( - ResponseBody, 'CompleteMultipartUploadResult', 'Bucket'), - [#xmlText{value = ResKey}] = get_response_value( - ResponseBody, 'CompleteMultipartUploadResult', 'Key'), - [#xmlText{value = ResLocation}] = get_response_value( - ResponseBody, 'CompleteMultipartUploadResult', 'Location'), - - Location = lists:flatten( - io_lib:format("http://~s.~s/~s", [Bucket, RootHost, Key])), - - ?assertEqual(Bucket, ResBucket), - ?assertEqual(Key, ResKey), - ?assertEqual(Location, ResLocation). - -get_response_value( - #xmlElement{name = TopLevel, content = Content}, TopLevel, Field) -> - get_response_value(Content, Field); -get_response_value(ResponseBody, TopLevel, Field) - when erlang:is_tuple(ResponseBody) - andalso erlang:tuple_size(ResponseBody) > 0 -> - get_response_value(erlang:element(1, ResponseBody), TopLevel, Field). - -get_response_value([#xmlElement{name = Field, content = Value} | _], Field) -> - Value; -get_response_value([_ | Content], Field) -> - get_response_value(Content, Field). - -% -% Use erlcloud_s3:s3_request instead of erlcloud_s3_multipart:complete_upload -% to be able to process the full result XML. -% -complete_multipart_upload(Bucket, Key, UploadId, EtagList, Config) -> - Response = erlcloud_s3:s3_request( - Config, post, Bucket, - [$/ | Key], % URL - [{"uploadId", UploadId}], % sub-resources - [], % params - etags_to_multipart_request(EtagList), % POST data - []), % headers - % lager:info("Raw Response: ~p", [Response]), - case Response of - {_, []} -> - {ok, Response}; - {Headers, BodyXML} -> - Body = xmerl_scan:string(BodyXML), - case erlang:element(1, Body) of - #xmlElement{name = 'Error'} -> - {error, {msg, text, {Headers, Body}}}; - _ -> - {ok, {Headers, Body}} - end - end. - -etags_to_multipart_request(EtagList) -> - ReqData = [{'Part', [ - {'PartNumber', [erlang:integer_to_list(N)]}, - {'ETag', [T]}]} || {N, T} <- EtagList], - % lager:info("Request Data: ~p", [ReqData]), - Request = {'CompleteMultipartUpload', ReqData}, - erlang:list_to_binary(xmerl:export_simple([Request], xmerl_xml)). - - -upload_and_assert_parts(Bucket, Key, UploadId, NumParts, PartSize, Config) -> - upload_and_assert_parts( - Bucket, Key, UploadId, NumParts, PartSize, Config, []). - -upload_and_assert_parts(_, _, _, 0, _, _, Result) -> - Result; -upload_and_assert_parts(Bucket, Key, UploadId, PartNum, PartSize, Config, Result) -> - upload_and_assert_parts( - Bucket, Key, UploadId, (PartNum - 1), PartSize, Config, - [{PartNum, rtcs_multipart:upload_and_assert_part( - Bucket, Key, UploadId, PartNum, - generate_part_data(PartNum, PartSize), Config)} | Result]). - -% -% assume PartNum is < 256 and PartSize is not negative -% -generate_part_data(PartNum, PartSize) -> - generate_part_data(PartNum, PartSize, <<>>). - -generate_part_data(_, 0, Result) -> - Result; -generate_part_data(PartNum, Remain, Result) -> - generate_part_data(PartNum, (Remain - 1), <>). - - From aeda7e88693ba386ab9ea3dca149779f5d5c46cc Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 28 Mar 2021 06:27:03 +0300 Subject: [PATCH 077/831] Makefile touchup --- tools.mk | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools.mk b/tools.mk index de85f76ea..2c1bdd730 100644 --- a/tools.mk +++ b/tools.mk @@ -24,18 +24,18 @@ # wholesale when a new version of tools.mk is released. # ------------------------------------------------------------------- -REBAR ?= rebar3 +REBAR ?= ./rebar3 REVISION ?= $(shell git rev-parse --short HEAD) PROJECT ?= $(shell basename `find src -name "*.app.src"` .app.src) -.PHONY: compile-no-deps test docs xref dialyzer-run dialyzer-quick dialyzer \ +.PHONY: compile test docs xref dialyzer-run dialyzer-quick dialyzer \ cleanplt upload-docs -compile-no-deps: - ${REBAR} compile skip_deps=true +compile: + ${REBAR} compile test: compile - ${REBAR} eunit skip_deps=true + ${REBAR} eunit upload-docs: docs @if [ -z "${BUCKET}" -o -z "${PROJECT}" -o -z "${REVISION}" ]; then \ @@ -45,10 +45,10 @@ upload-docs: docs @echo "Docs built at: http://${BUCKET}.s3-website-us-east-1.amazonaws.com/${PROJECT}/${REVISION}" docs: - ${REBAR} doc skip_deps=true + ${REBAR} doc xref: compile - ${REBAR} xref skip_deps=true + ${REBAR} xref PLT ?= $(HOME)/.combo_dialyzer_plt LOCAL_PLT = .local_dialyzer_plt @@ -135,7 +135,7 @@ dialyzer-run: dialyzer $(DIALYZER_FLAGS) --plts $${PLTS} -c ebin; \ fi -dialyzer-quick: compile-no-deps dialyzer-run +dialyzer-quick: compile dialyzer-run dialyzer: ${PLT} ${LOCAL_PLT} dialyzer-run From 9dd6b2f1231abc1c3b40f1e969e8c67be25d90d7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 28 Mar 2021 06:27:17 +0300 Subject: [PATCH 078/831] draft Dockerfile --- Dockerfile | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..39366d258 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +# This is a draft Dockerfile for riak_cs +# NOT TESTED! Final version will be re-uploaded when ready. + +FROM erlang:22.3.4.10 AS compile-image + +WORKDIR /usr/src/riak_cs +COPY . /usr/src/riak_cs + +RUN rebar3 as prod tar + +RUN mkdir -p /opt/riak_cs +RUN tar -zxvf /usr/src/riak_cs/_build/prod/rel/*/*.tar.gz -C /opt/riak_cs + +FROM debian:buster AS runtime-image + +# the usual dance with libssl and crypto (depending on what's shipped +# with this debian version): +#RUN apt-get update && apt-get -y install libssl1.1 + +COPY --from=compile-image /opt/riak_cs /opt/riak_cs + +# Add Tini -- this is meant to solve the PID 1 zombie reaping problem +ENV TINI_VERSION v0.18.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini +RUN chmod +x /tini + +ENTRYPOINT ["/tini", "--"] +CMD ["/opt/riak_cs/bin/riak_cs", "foreground"] From 16eee596b4573e826b8a2d1371fe440e673e83e9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 29 Mar 2021 19:09:44 +0300 Subject: [PATCH 079/831] Makefile WIP --- Makefile | 159 +++++++++++++++++++++++++++---------------------------- tools.mk | 149 --------------------------------------------------- 2 files changed, 78 insertions(+), 230 deletions(-) delete mode 100644 tools.mk diff --git a/Makefile b/Makefile index a04f613a1..98b019c8d 100644 --- a/Makefile +++ b/Makefile @@ -1,54 +1,103 @@ -REPO ?= riak_cs -PKG_REVISION ?= $(shell git describe --tags) -PKG_VERSION ?= $(shell git describe --tags | tr - .) +REPO ?= riak_cs +HEAD_REVISION ?= $(shell git describe --tags --exact-match HEAD 2>/dev/null) +PKG_REVISION ?= $(shell git describe --tags 2>/dev/null) +PKG_VERSION ?= $(shell git describe --tags | tr - .) PKG_ID = riak-cs-$(PKG_VERSION) PKG_BUILD = 1 BASE_DIR = $(shell pwd) -ERLANG_BIN = $(shell dirname $(shell which erl)) -REBAR ?= rebar3 -OVERLAY_VARS ?= +ERLANG_BIN = $(shell dirname $(shell which erl 2>/dev/null) 2>/dev/null) +OTP_VER = $(shell echo $(ERLANG_BIN) | rev | cut -d "/" -f 2 | rev) +REBAR ?= $(BASE_DIR)/rebar3 +REL_DIR ?= _build/default/rel CS_HTTP_PORT ?= 8080 PULSE_TESTS = riak_cs_get_fsm_pulse -.PHONY: rel stagedevrel deps test depgraph graphviz all compile compile-src +.PHONY: rel stagedevrel deps test depgraph graphviz all compile all: compile compile: - -compile-src: deps @($(REBAR) compile) -compile-client-test: all - @$(REBAR) client_test_compile +deps: + $(if $(HEAD_REVISION),$(warning "Warning: you have checked out a tag ($(HEAD_REVISION)) and should use the compile target")) + $(REBAR) upgrade -bitcask-downgrade-script: riak_test/src/downgrade_bitcask.erl +clean: testclean + $(REBAR) clean -clean-client-test: - @$(REBAR) client_test_clean +distclean: clean devclean relclean ballclean + @rm -rf _build -deps: - @$(REBAR) get-deps +## +## Release targets +## +rel: compile + $(REBAR) as rel release + cp -a _build/rel/rel/riak rel/ + +rel-rpm: compile + $(REBAR) as rpm release + cp -a _build/rpm/rel/riak rel/ + +rel-deb: compile + $(REBAR) as deb release + cp -a _build/deb/rel/riak rel/ + +relclean: + rm -rf $(REL_DIR) + rm -rf rel/riak_cs ## -## Lock Targets +## Developer targets +## +## devN - Make a dev build for node N +## stagedevN - Make a stage dev build for node N (symlink libraries) +## devrel - Make a dev build for 1..$DEVNODES +## stagedevrel Make a stagedev build for 1..$DEVNODES ## -## see https://github.com/seth/rebar_lock_deps_plugin -lock: deps compile - $(REBAR) lock-deps +## Example, make a 68 node devrel cluster +## make stagedevrel DEVNODES=68 + +.PHONY : stagedevrel devrel +DEVNODES ?= 8 + +# 'seq' is not available on all *BSD, so using an alternate in awk +SEQ = $(shell awk 'BEGIN { for (i = 1; i < '$(DEVNODES)'; i++) printf("%i ", i); print i ;exit(0);}') + +$(eval stagedevrel : $(foreach n,$(SEQ),stagedev$(n))) +$(eval devrel : $(foreach n,$(SEQ),dev$(n))) + +dev% : all + rel/gen_dev dev$* rel/vars/dev_vars.config.src rel/vars/$*_vars.config + $(REBAR) as dev release -o dev/dev$* --overlay_vars rel/vars/$*_vars.config + +stagedev% : all + rel/gen_dev dev$* rel/vars/dev_vars.config.src rel/vars/$*_vars.config + $(REBAR) as dev release -o dev/dev$* --overlay_vars rel/vars/$*_vars.config + +devclean: clean + rm -rf dev + +stage : rel + $(foreach app,$(wildcard apps/*), rm -rf rel/riak-cs/lib/$(shell basename $(app))* && ln -sf $(abspath $(app)) rel/riak-cs/lib;) + $(foreach dep,$(wildcard deps/*), rm -rf rel/riak-cs/lib/$(shell basename $(dep))* && ln -sf $(abspath $(dep)) rel/riak-cs/lib;) -locked-all: locked-deps compile -locked-deps: - @echo "Using rebar.config.lock file to fetch dependencies" - $(REBAR) -C rebar.config.lock get-deps +DIALYZER_APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools crypto inets \ + webtool eunit syntax_tools compiler +PLT ?= $(HOME)/.riak-cs_dialyzer_plt -clean: - @$(REBAR) clean -distclean: clean - @$(REBAR) delete-deps - @rm -rf $(PKG_ID).tar.gz + +## to fix: +compile-client-test: all + @$(REBAR) client_test_compile + +bitcask-downgrade-script: riak_test/src/downgrade_bitcask.erl + +clean-client-test: + @$(REBAR) client_test_clean ## Create a dependency graph png depgraph: graphviz @@ -92,56 +141,6 @@ test-php: test-go: @cd client_tests/go && ${MAKE} -## -## Release targets -## -rel: deps compile - @$(REBAR) generate skip_deps=true $(OVERLAY_VARS) - -relclean: - rm -rf rel/riak-cs - -## -## Developer targets -## -## devN - Make a dev build for node N -## stagedevN - Make a stage dev build for node N (symlink libraries) -## devrel - Make a dev build for 1..$DEVNODES -## stagedevrel Make a stagedev build for 1..$DEVNODES -## -## Example, make a 68 node devrel cluster -## make stagedevrel DEVNODES=68 - -.PHONY : stagedevrel devrel -DEVNODES ?= 8 - -# 'seq' is not available on all *BSD, so using an alternate in awk -SEQ = $(shell awk 'BEGIN { for (i = 1; i < '$(DEVNODES)'; i++) printf("%i ", i); print i ;exit(0);}') - -$(eval stagedevrel : $(foreach n,$(SEQ),stagedev$(n))) -$(eval devrel : $(foreach n,$(SEQ),dev$(n))) - -dev% : all - mkdir -p dev - rel/gen_dev $@ rel/vars/dev_vars.config.src rel/vars/$@_vars.config - (cd rel && $(REBAR) generate target_dir=../dev/$@ overlay_vars=vars/$@_vars.config) - -stagedev% : dev% - $(foreach app,$(wildcard apps/*), rm -rf dev/$^/lib/$(shell basename $(app))* && ln -sf $(abspath $(app)) dev/$^/lib;) - $(foreach dep,$(wildcard deps/*), rm -rf dev/$^/lib/$(shell basename $(dep))* && ln -sf $(abspath $(dep)) dev/$^/lib;) - -devclean: clean - rm -rf dev - -stage : rel - $(foreach app,$(wildcard apps/*), rm -rf rel/riak-cs/lib/$(shell basename $(app))* && ln -sf $(abspath $(app)) rel/riak-cs/lib;) - $(foreach dep,$(wildcard deps/*), rm -rf rel/riak-cs/lib/$(shell basename $(dep))* && ln -sf $(abspath $(dep)) rel/riak-cs/lib;) - - -DIALYZER_APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools crypto inets \ - webtool eunit syntax_tools compiler -PLT ?= $(HOME)/.riak-cs_dialyzer_plt - ## ## Packaging targets ## @@ -172,5 +171,3 @@ package: package.src pkgclean: distclean rm -rf package - -include tools.mk diff --git a/tools.mk b/tools.mk deleted file mode 100644 index 2c1bdd730..000000000 --- a/tools.mk +++ /dev/null @@ -1,149 +0,0 @@ -# ------------------------------------------------------------------- -# -# Copyright (c) 2014 Basho Technologies, Inc. -# -# This file is provided to you under the Apache License, -# Version 2.0 (the "License"); you may not use this file -# except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# -# ------------------------------------------------------------------- - -# ------------------------------------------------------------------- -# NOTE: This file is is from https://github.com/basho/tools.mk. -# It should not be edited in a project. It should simply be updated -# wholesale when a new version of tools.mk is released. -# ------------------------------------------------------------------- - -REBAR ?= ./rebar3 -REVISION ?= $(shell git rev-parse --short HEAD) -PROJECT ?= $(shell basename `find src -name "*.app.src"` .app.src) - -.PHONY: compile test docs xref dialyzer-run dialyzer-quick dialyzer \ - cleanplt upload-docs - -compile: - ${REBAR} compile - -test: compile - ${REBAR} eunit - -upload-docs: docs - @if [ -z "${BUCKET}" -o -z "${PROJECT}" -o -z "${REVISION}" ]; then \ - echo "Set BUCKET, PROJECT, and REVISION env vars to upload docs"; \ - exit 1; fi - @cd doc; s3cmd put -P * "s3://${BUCKET}/${PROJECT}/${REVISION}/" > /dev/null - @echo "Docs built at: http://${BUCKET}.s3-website-us-east-1.amazonaws.com/${PROJECT}/${REVISION}" - -docs: - ${REBAR} doc - -xref: compile - ${REBAR} xref - -PLT ?= $(HOME)/.combo_dialyzer_plt -LOCAL_PLT = .local_dialyzer_plt -DIALYZER_FLAGS ?= -Wunmatched_returns - -${PLT}: compile - @if [ -f $(PLT) ]; then \ - dialyzer --check_plt --plt $(PLT) --apps $(DIALYZER_APPS) && \ - dialyzer --add_to_plt --plt $(PLT) --output_plt $(PLT) --apps $(DIALYZER_APPS) ; test $$? -ne 1; \ - else \ - dialyzer --build_plt --output_plt $(PLT) --apps $(DIALYZER_APPS); test $$? -ne 1; \ - fi - -${LOCAL_PLT}: compile - @if [ -d deps ]; then \ - if [ -f $(LOCAL_PLT) ]; then \ - dialyzer --check_plt --plt $(LOCAL_PLT) deps/*/ebin && \ - dialyzer --add_to_plt --plt $(LOCAL_PLT) --output_plt $(LOCAL_PLT) deps/*/ebin ; test $$? -ne 1; \ - else \ - dialyzer --build_plt --output_plt $(LOCAL_PLT) deps/*/ebin ; test $$? -ne 1; \ - fi \ - fi - -dialyzer-run: - @echo "==> $(shell basename $(shell pwd)) (dialyzer)" -# The bulk of the code below deals with the dialyzer.ignore-warnings file -# which contains strings to ignore if output by dialyzer. -# Typically the strings include line numbers. Using them exactly is hard -# to maintain as the code changes. This approach instead ignores the line -# numbers, but takes into account the number of times a string is listed -# for a given file. So if one string is listed once, for example, and it -# appears twice in the warnings, the user is alerted. It is possible but -# unlikely that this approach could mask a warning if one ignored warning -# is removed and two warnings of the same kind appear in the file, for -# example. But it is a trade-off that seems worth it. -# Details of the cryptic commands: -# - Remove line numbers from dialyzer.ignore-warnings -# - Pre-pend duplicate count to each warning with sort | uniq -c -# - Remove annoying white space around duplicate count -# - Save in dialyer.ignore-warnings.tmp -# - Do the same to dialyzer_warnings -# - Remove matches from dialyzer.ignore-warnings.tmp from output -# - Remove duplicate count -# - Escape regex special chars to use lines as regex patterns -# - Add pattern to match any line number (file.erl:\d+:) -# - Anchor to match the entire line (^entire line$) -# - Save in dialyzer_unhandled_warnings -# - Output matches for those patterns found in the original warnings - @if [ -f $(LOCAL_PLT) ]; then \ - PLTS="$(PLT) $(LOCAL_PLT)"; \ - else \ - PLTS=$(PLT); \ - fi; \ - if [ -f dialyzer.ignore-warnings ]; then \ - if [ $$(grep -cvE '[^[:space:]]' dialyzer.ignore-warnings) -ne 0 ]; then \ - echo "ERROR: dialyzer.ignore-warnings contains a blank/empty line, this will match all messages!"; \ - exit 1; \ - fi; \ - dialyzer $(DIALYZER_FLAGS) --plts $${PLTS} -c ebin > dialyzer_warnings ; \ - cat dialyzer.ignore-warnings \ - | sed -E 's/^([^:]+:)[^:]+:/\1/' \ - | sort \ - | uniq -c \ - | sed -E '/.*\.erl: /!s/^[[:space:]]*[0-9]+[[:space:]]*//' \ - > dialyzer.ignore-warnings.tmp ; \ - egrep -v "^[[:space:]]*(done|Checking|Proceeding|Compiling)" dialyzer_warnings \ - | sed -E 's/^([^:]+:)[^:]+:/\1/' \ - | sort \ - | uniq -c \ - | sed -E '/.*\.erl: /!s/^[[:space:]]*[0-9]+[[:space:]]*//' \ - | grep -F -f dialyzer.ignore-warnings.tmp -v \ - | sed -E 's/^[[:space:]]*[0-9]+[[:space:]]*//' \ - | sed -E 's/([]\^:+?|()*.$${}\[])/\\\1/g' \ - | sed -E 's/(\\\.erl\\\:)/\1[[:digit:]]+:/g' \ - | sed -E 's/^(.*)$$/^[[:space:]]*\1$$/g' \ - > dialyzer_unhandled_warnings ; \ - rm dialyzer.ignore-warnings.tmp; \ - if [ $$(cat dialyzer_unhandled_warnings | wc -l) -gt 0 ]; then \ - egrep -f dialyzer_unhandled_warnings dialyzer_warnings ; \ - found_warnings=1; \ - fi; \ - [ "$$found_warnings" != 1 ] ; \ - else \ - dialyzer $(DIALYZER_FLAGS) --plts $${PLTS} -c ebin; \ - fi - -dialyzer-quick: compile dialyzer-run - -dialyzer: ${PLT} ${LOCAL_PLT} dialyzer-run - -cleanplt: - @echo - @echo "Are you sure? It takes several minutes to re-build." - @echo Deleting $(PLT) and $(LOCAL_PLT) in 5 seconds. - @echo - sleep 5 - rm $(PLT) - rm $(LOCAL_PLT) From 6e7712ba93ab372face66ca93caf6183dcb9a6cb Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 29 Mar 2021 19:10:44 +0300 Subject: [PATCH 080/831] include riak_repl_pb_api in riak_cs.app (no longer restricted to ee?) --- apps/riak_cs/src/riak_cs.app.src | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index 696b2c7bb..49769d67b 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -15,7 +15,8 @@ poolboy, cluster_info, exometer_core, - riakc + riakc, + riak_repl_pb_api ]}, {mod, { riak_cs_app, []}}, {env, [ From 5655634b6593579d0fc170504904596bcef47f6c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 31 Mar 2021 01:06:03 +0300 Subject: [PATCH 081/831] Makefile path fixups --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 98b019c8d..e99a42300 100644 --- a/Makefile +++ b/Makefile @@ -34,19 +34,19 @@ distclean: clean devclean relclean ballclean ## rel: compile $(REBAR) as rel release - cp -a _build/rel/rel/riak rel/ + cp -a _build/rel/rel/riak-cs rel/ rel-rpm: compile $(REBAR) as rpm release - cp -a _build/rpm/rel/riak rel/ + cp -a _build/rpm/rel/riak-cs rel/ rel-deb: compile $(REBAR) as deb release - cp -a _build/deb/rel/riak rel/ + cp -a _build/deb/rel/riak-cs rel/ relclean: rm -rf $(REL_DIR) - rm -rf rel/riak_cs + rm -rf rel/riak-cs ## ## Developer targets From 431c56b21dfd1041ae509445cf89dac0ce6893ce Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 31 Mar 2021 01:17:22 +0300 Subject: [PATCH 082/831] rebar.config trivia --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index 12e773c0e..f08ef7753 100644 --- a/rebar.config +++ b/rebar.config @@ -40,7 +40,7 @@ ] } , {overlay_vars, "rel/vars.config"} - , {mode, prod} + , {dev_mode, false} , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} , {template, "rel/files/riak-cs-access", "bin/riak-cs-access"} , {template, "rel/files/riak-cs-admin", "bin/riak-cs-admin"} From 8947f7ab6e80e14074f9b9cf15a7c38467e698af Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 31 Mar 2021 02:48:54 +0300 Subject: [PATCH 083/831] use hmmr/rebar3_cuttlefish (forked from basho, with fqdn datatype) --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index f08ef7753..b100dbc26 100644 --- a/rebar.config +++ b/rebar.config @@ -14,7 +14,7 @@ ] }. -{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/hmmr/rebar3_cuttlefish", {tag, "riak_cs-2.2"}}} +{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/hmmr/rebar3_cuttlefish", {tag, "2.1.1"}}} ] }. From 8aaa1ffce3f1968655fde60591007d47ef6946a5 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 31 Mar 2021 04:17:43 +0300 Subject: [PATCH 084/831] config fixups, cuttlefish schema related --- {apps/riak_cs/priv => priv}/riak_cs.schema | 20 ++++++++++---------- rebar.config | 1 - rel/vars.config | 5 +++++ 3 files changed, 15 insertions(+), 11 deletions(-) rename {apps/riak_cs/priv => priv}/riak_cs.schema (98%) diff --git a/apps/riak_cs/priv/riak_cs.schema b/priv/riak_cs.schema similarity index 98% rename from apps/riak_cs/priv/riak_cs.schema rename to priv/riak_cs.schema index 84e9f4cb9..76f4e79fb 100644 --- a/apps/riak_cs/priv/riak_cs.schema +++ b/priv/riak_cs.schema @@ -435,16 +435,16 @@ {datatype, flag} ]}. -%% @doc Where to emit the default log messages (typically at 'info' -%% severity): -%% off: disabled -%% file: the file specified by log.console.file -%% console: to standard output (seen when using `riak attach-direct`) -%% both: log.console.file and standard out. -{mapping, "log.console", "lager.handlers", [ - {default, {{console_log_default}} }, - {datatype, {enum, [off, file, console, both]}} -]}. +%% %% @doc Where to emit the default log messages (typically at 'info' +%% %% severity): +%% %% off: disabled +%% %% file: the file specified by log.console.file +%% %% console: to standard output (seen when using `riak attach-direct`) +%% %% both: log.console.file and standard out. +%% {mapping, "log.console", "lager.handlers", [ +%% {default, {{console_log_default}} }, +%% {datatype, {enum, [off, file, console, both]}} +%% ]}. %% @doc The severity level of the console log, default is 'info'. {mapping, "log.console.level", "lager.handlers", [ diff --git a/rebar.config b/rebar.config index b100dbc26..a4b132bde 100644 --- a/rebar.config +++ b/rebar.config @@ -39,7 +39,6 @@ , riak_cs ] } - , {overlay_vars, "rel/vars.config"} , {dev_mode, false} , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} , {template, "rel/files/riak-cs-access", "bin/riak-cs-access"} diff --git a/rel/vars.config b/rel/vars.config index ae9f866a4..2f8595e4c 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -49,3 +49,8 @@ %% logger {console_log_default, file}. +%% +%% cuttlefish +%% +{cuttlefish, "on"}. +{cuttlefish_conf, "riak-cs.conf"}. From e3712e832fd8eeae2cb189c0d2ff7579430d183f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 31 Mar 2021 04:20:15 +0300 Subject: [PATCH 085/831] move /priv back to root --- {apps/riak_cs/priv => priv}/tools/internal/README.md | 0 {apps/riak_cs/priv => priv}/tools/internal/block_audit.erl | 0 .../riak_cs/priv => priv}/tools/internal/ensure_orphan_blocks.erl | 0 {apps/riak_cs/priv => priv}/tools/internal/offline_delete.erl | 0 {apps/riak_cs/priv => priv}/tools/internal/riak_cs_inspector.erl | 0 {apps/riak_cs/priv => priv}/tools/internal/select_gc_bucket.erl | 0 {apps/riak_cs/priv => priv}/tools/repair_gc_bucket.erl | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename {apps/riak_cs/priv => priv}/tools/internal/README.md (100%) rename {apps/riak_cs/priv => priv}/tools/internal/block_audit.erl (100%) rename {apps/riak_cs/priv => priv}/tools/internal/ensure_orphan_blocks.erl (100%) rename {apps/riak_cs/priv => priv}/tools/internal/offline_delete.erl (100%) rename {apps/riak_cs/priv => priv}/tools/internal/riak_cs_inspector.erl (100%) rename {apps/riak_cs/priv => priv}/tools/internal/select_gc_bucket.erl (100%) rename {apps/riak_cs/priv => priv}/tools/repair_gc_bucket.erl (100%) diff --git a/apps/riak_cs/priv/tools/internal/README.md b/priv/tools/internal/README.md similarity index 100% rename from apps/riak_cs/priv/tools/internal/README.md rename to priv/tools/internal/README.md diff --git a/apps/riak_cs/priv/tools/internal/block_audit.erl b/priv/tools/internal/block_audit.erl similarity index 100% rename from apps/riak_cs/priv/tools/internal/block_audit.erl rename to priv/tools/internal/block_audit.erl diff --git a/apps/riak_cs/priv/tools/internal/ensure_orphan_blocks.erl b/priv/tools/internal/ensure_orphan_blocks.erl similarity index 100% rename from apps/riak_cs/priv/tools/internal/ensure_orphan_blocks.erl rename to priv/tools/internal/ensure_orphan_blocks.erl diff --git a/apps/riak_cs/priv/tools/internal/offline_delete.erl b/priv/tools/internal/offline_delete.erl similarity index 100% rename from apps/riak_cs/priv/tools/internal/offline_delete.erl rename to priv/tools/internal/offline_delete.erl diff --git a/apps/riak_cs/priv/tools/internal/riak_cs_inspector.erl b/priv/tools/internal/riak_cs_inspector.erl similarity index 100% rename from apps/riak_cs/priv/tools/internal/riak_cs_inspector.erl rename to priv/tools/internal/riak_cs_inspector.erl diff --git a/apps/riak_cs/priv/tools/internal/select_gc_bucket.erl b/priv/tools/internal/select_gc_bucket.erl similarity index 100% rename from apps/riak_cs/priv/tools/internal/select_gc_bucket.erl rename to priv/tools/internal/select_gc_bucket.erl diff --git a/apps/riak_cs/priv/tools/repair_gc_bucket.erl b/priv/tools/repair_gc_bucket.erl similarity index 100% rename from apps/riak_cs/priv/tools/repair_gc_bucket.erl rename to priv/tools/repair_gc_bucket.erl From 12f674585a1fc7e3d58607bc3e6efca0667bf55d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 31 Mar 2021 04:48:47 +0300 Subject: [PATCH 086/831] cowardly revert to lager --- apps/riak_cs/src/riak_cs.app.src | 1 + apps/riak_cs/src/riak_cs_access.erl | 4 +- apps/riak_cs/src/riak_cs_access_archiver.erl | 7 ++- .../src/riak_cs_access_archiver_manager.erl | 19 +++--- .../src/riak_cs_access_log_handler.erl | 16 ++--- apps/riak_cs/src/riak_cs_acl.erl | 22 +++---- apps/riak_cs/src/riak_cs_acl_utils.erl | 44 +++++++------- apps/riak_cs/src/riak_cs_app.erl | 48 ++++++++------- apps/riak_cs/src/riak_cs_block_server.erl | 27 +++++---- apps/riak_cs/src/riak_cs_bucket.erl | 30 +++++----- apps/riak_cs/src/riak_cs_config.erl | 11 ++-- apps/riak_cs/src/riak_cs_console.erl | 41 ++++++------- apps/riak_cs/src/riak_cs_copy_object.erl | 8 +-- apps/riak_cs/src/riak_cs_delete_fsm.erl | 8 +-- apps/riak_cs/src/riak_cs_gc.erl | 21 +++---- apps/riak_cs/src/riak_cs_gc_batch.erl | 52 ++++++++-------- apps/riak_cs/src/riak_cs_gc_key_list.erl | 14 ++--- apps/riak_cs/src/riak_cs_gc_manager.erl | 17 +++--- apps/riak_cs/src/riak_cs_gc_worker.erl | 8 +-- apps/riak_cs/src/riak_cs_get_fsm.erl | 21 +++---- apps/riak_cs/src/riak_cs_json.erl | 2 +- apps/riak_cs/src/riak_cs_keystone_auth.erl | 3 +- apps/riak_cs/src/riak_cs_kv_multi_backend.erl | 4 +- apps/riak_cs/src/riak_cs_lfs_utils.erl | 14 ++--- .../src/riak_cs_list_objects_ets_cache.erl | 10 ++-- apps/riak_cs/src/riak_cs_list_objects_fsm.erl | 14 ++--- .../src/riak_cs_list_objects_fsm_v2.erl | 9 +-- apps/riak_cs/src/riak_cs_manifest.erl | 4 +- apps/riak_cs/src/riak_cs_manifest_fsm.erl | 2 +- apps/riak_cs/src/riak_cs_mb_helper.erl | 2 +- apps/riak_cs/src/riak_cs_mp_utils.erl | 8 +-- apps/riak_cs/src/riak_cs_oos_response.erl | 6 +- apps/riak_cs/src/riak_cs_oos_utils.erl | 8 +-- apps/riak_cs/src/riak_cs_pbc.erl | 8 ++- apps/riak_cs/src/riak_cs_put_fsm.erl | 9 +-- apps/riak_cs/src/riak_cs_quota.erl | 4 +- apps/riak_cs/src/riak_cs_riak_client.erl | 2 +- apps/riak_cs/src/riak_cs_s3_auth.erl | 12 ++-- apps/riak_cs/src/riak_cs_s3_policy.erl | 17 +++--- apps/riak_cs/src/riak_cs_s3_response.erl | 8 +-- apps/riak_cs/src/riak_cs_simple_bwlimiter.erl | 22 +++---- apps/riak_cs/src/riak_cs_simple_quota.erl | 14 ++--- .../riak_cs/src/riak_cs_stanchion_console.erl | 2 +- apps/riak_cs/src/riak_cs_stats.erl | 6 +- apps/riak_cs/src/riak_cs_storage.erl | 6 +- apps/riak_cs/src/riak_cs_storage_d.erl | 60 ++++++++++--------- apps/riak_cs/src/riak_cs_storage_mr.erl | 7 ++- apps/riak_cs/src/riak_cs_user.erl | 8 +-- apps/riak_cs/src/riak_cs_utils.erl | 12 ++-- apps/riak_cs/src/riak_cs_wm_bucket_delete.erl | 4 +- apps/riak_cs/src/riak_cs_wm_common.erl | 18 +++--- apps/riak_cs/src/riak_cs_wm_object.erl | 10 ++-- .../src/riak_cs_wm_object_upload_part.erl | 10 ++-- apps/riak_cs/src/riak_cs_wm_user.erl | 4 +- apps/riak_cs/src/riak_cs_wm_users.erl | 4 +- apps/riak_cs/src/riak_cs_wm_utils.erl | 18 +++--- .../src/riak_cs_yessir_riak_client.erl | 10 ++-- apps/riak_cs/test/riak_cs_dummy_reader.erl | 2 +- ...k_cs_dummy_riak_client_list_objects_v2.erl | 2 +- .../test/riak_cs_gc_single_run_eqc.erl | 2 +- apps/riak_cs/test/riak_cs_get_fsm_pulse.erl | 3 +- apps/riak_cs/test/riak_cs_lfs_utils_test.erl | 2 +- .../test/riak_cs_list_objects_fsm_v2_eqc.erl | 2 +- apps/riak_cs/test/riak_cs_wm_test_utils.erl | 1 + priv/riak_cs.schema | 20 +++---- priv/tools/internal/block_audit.erl | 8 ++- priv/tools/internal/ensure_orphan_blocks.erl | 8 ++- priv/tools/repair_gc_bucket.erl | 9 +-- rebar.config | 2 + rebar.lock | 14 +++++ 70 files changed, 449 insertions(+), 406 deletions(-) diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index 49769d67b..059b422d8 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -15,6 +15,7 @@ poolboy, cluster_info, exometer_core, + lager, riakc, riak_repl_pb_api ]}, diff --git a/apps/riak_cs/src/riak_cs_access.erl b/apps/riak_cs/src/riak_cs_access.erl index 0464271b5..249935117 100644 --- a/apps/riak_cs/src/riak_cs_access.erl +++ b/apps/riak_cs/src/riak_cs_access.erl @@ -176,8 +176,8 @@ flush_access_object_to_log(User, RiakObj, Slice) -> Start = rts:iso8601(Start0), End = rts:iso8601(End0), Accesses = riakc_obj:get_update_value(RiakObj), - logger:warning("lost access stat: User=~s, Slice=(~s, ~s), Accesses:'~s'", - [User, Start, End, Accesses]). + _ = lager:warning("lost access stat: User=~s, Slice=(~s, ~s), Accesses:'~s'", + [User, Start, End, Accesses]). -ifdef(TEST). diff --git a/apps/riak_cs/src/riak_cs_access_archiver.erl b/apps/riak_cs/src/riak_cs_access_archiver.erl index dfe7bd436..7802a9aee 100644 --- a/apps/riak_cs/src/riak_cs_access_archiver.erl +++ b/apps/riak_cs/src/riak_cs_access_archiver.erl @@ -156,8 +156,8 @@ terminate(Reason, StateName, #state{table=Table, terminate(_Reason, _StateName, #state{table=Table, riak_client=RcPid, mon=Mon}) -> - logger:warning("Access archiver stopping with work left to do;" - " logs will be dropped"), + _ = lager:warning("Access archiver stopping with work left to do;" + " logs will be dropped"), cleanup(Table, RcPid, Mon), ok. @@ -205,7 +205,8 @@ store(User, RcPid, Record, Slice) -> Timeout = riak_cs_config:put_access_timeout(), case catch riak_cs_pbc:put(MasterPbc, Record, Timeout, [riakc, put_access]) of ok -> - logger:debug("Archived access stats for ~s ~p", [User, Slice]); + ok = lager:debug("Archived access stats for ~s ~p", + [User, Slice]); {error, Reason} -> riak_cs_pbc:check_connection_status(MasterPbc, "riak_cs_access_archiver:store/4"), diff --git a/apps/riak_cs/src/riak_cs_access_archiver_manager.erl b/apps/riak_cs/src/riak_cs_access_archiver_manager.erl index 8bb89be44..0f3d3f4ee 100644 --- a/apps/riak_cs/src/riak_cs_access_archiver_manager.erl +++ b/apps/riak_cs/src/riak_cs_access_archiver_manager.erl @@ -69,7 +69,8 @@ archive(Table, Slice) -> ets:give_away(Table, Pid, Slice) catch error:badarg -> - logger:error("~p was not available, access stats for ~p lost", [?MODULE, Slice]), + _ = lager:error("~p was not available, access stats for ~p lost", + [?MODULE, Slice]), riak_cs_access:flush_to_log(Table, Slice), %% if the archiver had been alive just now, but crashed %% during operation, the stats also would have been lost, @@ -82,8 +83,8 @@ archive(Table, Slice) -> false %% opposite of ets:give_away/3 success end; _ -> - logger:error("~p was not available, access stats for ~p lost", - [?MODULE, Slice]), + _ = lager:error("~p was not available, access stats for ~p lost", + [?MODULE, Slice]), riak_cs_access:flush_to_log(Table, Slice), ets:delete(Table), false @@ -123,7 +124,7 @@ init([]) -> riak_cs, access_archiver_max_workers) of {ok, Workers} when is_integer(Workers) -> Workers; _ -> - logger:warning( + _ = lager:warning( "access_archiver_max_workers was unset or" " invalid; overriding with default of ~b", [?DEFAULT_MAX_ARCHIVERS]), @@ -133,7 +134,7 @@ init([]) -> riak_cs, access_archiver_max_backlog) of {ok, MB} when is_integer(MB) -> MB; _ -> - logger:warning( + _ = lager:warning( "access_archiver_max_backlog was unset or" " invalid; overriding with default of ~b", [?DEFAULT_MAX_BACKLOG]), @@ -179,9 +180,9 @@ handle_info({'ETS-TRANSFER', Table, _From, Slice}, State) -> false -> %% too much in the backlog, drop the first item in the backlog [{_DropTable, DropSlice}|RestBacklog] = Backlog, - logger:error("Skipping archival of accesses ~p to" - " catch up on backlog", - [DropSlice]), + ok = lager:error("Skipping archival of accesses ~p to" + " catch up on backlog", + [DropSlice]), State#state{backlog=RestBacklog++[{Table, Slice}]} end, {noreply, NewState}; @@ -191,7 +192,7 @@ handle_info(_Info, State) -> terminate(_Reason, #state{backlog=[]}) -> ok; terminate(_Reason, _State) -> - logger:warning("Access archiver manager stopping with a backlog;" + _ = lager:warning("Access archiver manager stopping with a backlog;" " logs will be dropped"), ok. diff --git a/apps/riak_cs/src/riak_cs_access_log_handler.erl b/apps/riak_cs/src/riak_cs_access_log_handler.erl index ceb2de5b4..258c484d3 100644 --- a/apps/riak_cs/src/riak_cs_access_log_handler.erl +++ b/apps/riak_cs/src/riak_cs_access_log_handler.erl @@ -163,14 +163,14 @@ init(_) -> end, {ok, SchedState}; {{error, Reason}, _} -> - logger:error("Error starting access logger: ~s", [Reason]), + _ = lager:error("Error starting access logger: ~s", [Reason]), %% can't simply {error, Reason} out here, because %% webmachine/mochiweb will just ignore the failed %% startup; using init:stop/0 here so that the user isn't %% suprised later when there are no logs init:stop(); {_, {error, Reason}} -> - logger:error("Error starting access logger: ~s", [Reason]), + _ = lager:error("Error starting access logger: ~s", [Reason]), init:stop() end. @@ -185,7 +185,7 @@ handle_call(_Request, State) -> handle_event({log_access, #wm_log_data{notes=undefined, method=Method, path=Path, headers=Headers}}, State) -> - logger:debug("No WM route: ~p ~s ~p", [Method, Path, Headers]), + lager:debug("No WM route: ~p ~s ~p\n", [Method, Path, Headers]), {ok, State}; handle_event({log_access, LogData}, #state{table=T, size=S, max_size=MaxS}=State) -> @@ -229,9 +229,9 @@ handle_info({archive, Ref}, #state{archive=Ref}=State) -> %% simple "missed window" is too lossy [{message_queue_len, MessageCount}] = process_info(self(), [message_queue_len]), - logger:error("Access logger is running ~b seconds behind," - " skipping ~p log messages to catch up", - [Behind, MessageCount]), + _ = lager:error("Access logger is running ~b seconds behind," + " skipping ~p log messages to catch up", + [Behind, MessageCount]), remove_handler end; handle_info(_Info, State) -> @@ -265,7 +265,7 @@ schedule_archival(#state{current={_,E}}=State) -> TL = calendar:datetime_to_gregorian_seconds(E)-Now, case TL < 0 of false -> - logger:debug("Next access archival in ~b seconds", [TL]), + _ = lager:debug("Next access archival in ~b seconds", [TL]), %% time left is in seconds, we need milliseconds erlang:send_after(TL*1000, self(), {archive, Ref}), @@ -287,7 +287,7 @@ force_archive(#state{current=C}=State, FlushEnd) -> %% for storage. Create a clean table to store the next slice's accesses. -spec do_archive(state()) -> state(). do_archive(#state{period=P, table=T, current=C}=State) -> - logger:debug("Rolling access for ~p", [C]), + _ = lager:debug("Rolling access for ~p", [C]), %% archiver takes ownership of the table, and deletes it when done riak_cs_access_archiver_manager:archive(T, C), diff --git a/apps/riak_cs/src/riak_cs_acl.erl b/apps/riak_cs/src/riak_cs_acl.erl index 5860c2e8a..b16ff002c 100644 --- a/apps/riak_cs/src/riak_cs_acl.erl +++ b/apps/riak_cs/src/riak_cs_acl.erl @@ -69,7 +69,7 @@ anonymous_bucket_access(Bucket, RequestedAccess, RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - logger:error("Anonymous bucket access check failed due to error. Reason: ~p", [Reason]), + _ = lager:error("Anonymous bucket access check failed due to error. Reason: ~p", [Reason]), false end; anonymous_bucket_access(_Bucket, RequestedAccess, RcPid, BucketAcl) -> @@ -108,7 +108,7 @@ anonymous_object_access(BucketObj, ObjAcl, 'WRITE', RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - logger:error("Anonymous object access check failed due to error. Reason: ~p", [Reason]), + _ = lager:error("Anonymous object access check failed due to error. Reason: ~p", [Reason]), false end; anonymous_object_access(_BucketObj, _ObjAcl, 'WRITE', RcPid, BucketAcl) -> @@ -150,7 +150,7 @@ bucket_access(Bucket, RequestedAccess, CanonicalId, RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - logger:error("Bucket access check failed due to error. Reason: ~p", [Reason]), + _ = lager:error("Bucket access check failed due to error. Reason: ~p", [Reason]), false end; bucket_access(_, RequestedAccess, CanonicalId, RcPid, Acl) -> @@ -180,9 +180,9 @@ fetch_bucket_acl(Bucket, RcPid) -> {ok, Obj} -> bucket_acl(Obj); {error, Reason} -> - logger:debug("Failed to fetch ACL. Bucket ~p " - " does not exist. Reason: ~p", - [Bucket, Reason]), + _ = lager:debug("Failed to fetch ACL. Bucket ~p " + " does not exist. Reason: ~p", + [Bucket, Reason]), {error, notfound} end. @@ -260,7 +260,7 @@ object_access(BucketObj, ObjAcl, 'WRITE', CanonicalId, RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - logger:error("Object access check failed due to error. Reason: ~p", [Reason]), + _ = lager:error("Object access check failed due to error. Reason: ~p", [Reason]), false end; object_access(_BucketObj, _ObjAcl, 'WRITE', CanonicalId, RcPid, BucketAcl) -> @@ -278,13 +278,13 @@ object_access(_BucketObj, _ObjAcl, 'WRITE', CanonicalId, RcPid, BucketAcl) -> false end; object_access(_BucketObj, ObjAcl, RequestedAccess, CanonicalId, RcPid, _) -> - logger:debug("ObjAcl: ~p~nCanonicalId: ~p", [ObjAcl, CanonicalId]), + _ = lager:debug("ObjAcl: ~p~nCanonicalId: ~p", [ObjAcl, CanonicalId]), IsObjOwner = is_owner(ObjAcl, CanonicalId), HasObjPerm = has_permission(acl_grants(ObjAcl), RequestedAccess, CanonicalId), - logger:debug("IsObjOwner: ~p", [IsObjOwner]), - logger:debug("HasObjPerm: ~p", [HasObjPerm]), + _ = lager:debug("IsObjOwner: ~p", [IsObjOwner]), + _ = lager:debug("HasObjPerm: ~p", [HasObjPerm]), if (RequestedAccess == 'READ_ACP' orelse RequestedAccess == 'WRITE_ACP') andalso @@ -314,7 +314,7 @@ owner_id(#acl_v1{owner=OwnerData}, RcPid) -> {ok, {Owner, _}} -> Owner?RCS_USER.key_id; {error, _} -> - logger:warning("Failed to retrieve key_id for user ~p with canonical_id ~p", [Name, CanonicalId]), + _ = lager:warning("Failed to retrieve key_id for user ~p with canonical_id ~p", [Name, CanonicalId]), [] end. diff --git a/apps/riak_cs/src/riak_cs_acl_utils.erl b/apps/riak_cs/src/riak_cs_acl_utils.erl index bb64eac6e..60faed710 100644 --- a/apps/riak_cs/src/riak_cs_acl_utils.erl +++ b/apps/riak_cs/src/riak_cs_acl_utils.erl @@ -470,7 +470,7 @@ canonical_for_email(Email, RcPid) -> {ok, {User, _}} -> {ok, User?RCS_USER.canonical_id}; {error, Reason} -> - logger:debug("Failed to retrieve canonical id for ~p. Reason: ~p", [Email, Reason]), + _ = lager:debug("Failed to retrieve canonical id for ~p. Reason: ~p", [Email, Reason]), {error, unresolved_grant_email} end. @@ -498,7 +498,7 @@ process_acl_contents([], Acl, _) -> process_acl_contents([#xmlElement{content=Content, name=ElementName} | RestElements], Acl, RcPid) -> - logger:debug("Element name: ~p", [ElementName]), + _ = lager:debug("Element name: ~p", [ElementName]), UpdAclRes = case ElementName of 'Owner' -> @@ -506,7 +506,7 @@ process_acl_contents([#xmlElement{content=Content, 'AccessControlList' -> process_grants(Content, Acl, RcPid); _ -> - logger:debug("Encountered unexpected element: ~p", [ElementName]), + _ = lager:debug("Encountered unexpected element: ~p", [ElementName]), Acl end, case UpdAclRes of @@ -541,15 +541,15 @@ process_owner([#xmlElement{content=[Content], UpdOwner = case ElementName of 'ID' -> - logger:debug("Owner ID value: ~p", [Value]), + _ = lager:debug("Owner ID value: ~p", [Value]), {OwnerName, _, OwnerKeyId} = Owner, {OwnerName, Value, OwnerKeyId}; 'DisplayName' -> - logger:debug("Owner Name content: ~p", [Value]), + _ = lager:debug("Owner Name content: ~p", [Value]), {_, OwnerId, OwnerKeyId} = Owner, {Value, OwnerId, OwnerKeyId}; _ -> - logger:debug("Encountered unexpected element: ~p", [ElementName]), + _ = lager:debug("Encountered unexpected element: ~p", [ElementName]), Owner end, process_owner(RestElements, Acl?ACL{owner=UpdOwner}, RcPid); @@ -581,7 +581,7 @@ process_grants([#xmlElement{content=Content, Acl?ACL{grants=add_grant(Grant, Acl?ACL.grants)} end; _ -> - logger:debug("Encountered unexpected grants element: ~p", [ElementName]), + _ = lager:debug("Encountered unexpected grants element: ~p", [ElementName]), Acl end, case UpdAcl of @@ -601,8 +601,8 @@ process_grant([], Grant, _, _) -> process_grant([#xmlElement{content=Content, name=ElementName} | RestElements], Grant, AclOwner, RcPid) -> - logger:debug("ElementName: ~p", [ElementName]), - logger:debug("Content: ~p", [Content]), + _ = lager:debug("ElementName: ~p", [ElementName]), + _ = lager:debug("Content: ~p", [Content]), UpdGrant = case ElementName of 'Grantee' -> @@ -610,7 +610,7 @@ process_grant([#xmlElement{content=Content, 'Permission' -> process_permission(Content, Grant); _ -> - logger:debug("Encountered unexpected grant element: ~p", [ElementName]), + _ = lager:debug("Encountered unexpected grant element: ~p", [ElementName]), Grant end, case UpdGrant of @@ -649,16 +649,16 @@ process_grantee([#xmlElement{content=[Content], Value = Content#xmlText.value, case ElementName of 'ID' -> - logger:debug("ID value: ~p", [Value]), + _ = lager:debug("ID value: ~p", [Value]), {{Name, _}, Perms} = Grant, UpdGrant = {{Name, Value}, Perms}; 'EmailAddress' -> - logger:debug("Email value: ~p", [Value]), + _ = lager:debug("Email value: ~p", [Value]), UpdGrant = case canonical_for_email(Value, RcPid) of {ok, Id} -> %% Get the canonical id for a given email address - logger:debug("ID value: ~p", [Id]), + _ = lager:debug("ID value: ~p", [Id]), {{Name, _}, Perms} = Grant, {{Name, Id}, Perms}; {error, _}=Error -> @@ -780,7 +780,7 @@ acl_from_json(Json) -> process_acl_contents([], Acl) -> Acl; process_acl_contents([{Name, Value} | RestObjects], Acl) -> - logger:debug("Object name: ~p", [Name]), + _ = lager:debug("Object name: ~p", [Name]), case Name of <<"owner">> -> {struct, OwnerData} = Value, @@ -804,19 +804,19 @@ process_owner([{Name, Value} | RestObjects], Acl) -> Owner = Acl?ACL.owner, case Name of <<"key_id">> -> - logger:debug("Owner Key ID value: ~p", [Value]), + _ = lager:debug("Owner Key ID value: ~p", [Value]), {OwnerName, OwnerCID, _} = Owner, UpdOwner = {OwnerName, OwnerCID, binary_to_list(Value)}; <<"canonical_id">> -> - logger:debug("Owner ID value: ~p", [Value]), + _ = lager:debug("Owner ID value: ~p", [Value]), {OwnerName, _, OwnerId} = Owner, UpdOwner = {OwnerName, binary_to_list(Value), OwnerId}; <<"display_name">> -> - logger:debug("Owner Name content: ~p", [Value]), + _ = lager:debug("Owner Name content: ~p", [Value]), {_, OwnerCID, OwnerId} = Owner, UpdOwner = {binary_to_list(Value), OwnerCID, OwnerId}; _ -> - logger:debug("Encountered unexpected element: ~p", [Name]), + _ = lager:debug("Encountered unexpected element: ~p", [Name]), UpdOwner = Owner end, process_owner(RestObjects, Acl?ACL{owner=UpdOwner}). @@ -838,22 +838,22 @@ process_grant([], Grant) -> process_grant([{Name, Value} | RestObjects], Grant) -> case Name of <<"canonical_id">> -> - logger:debug("ID value: ~p", [Value]), + _ = lager:debug("ID value: ~p", [Value]), {{DispName, _}, Perms} = Grant, UpdGrant = {{DispName, binary_to_list(Value)}, Perms}; <<"display_name">> -> - logger:debug("Name value: ~p", [Value]), + _ = lager:debug("Name value: ~p", [Value]), {{_, Id}, Perms} = Grant, UpdGrant = {{binary_to_list(Value), Id}, Perms}; <<"group">> -> - logger:debug("Group value: ~p", [Value]), + _ = lager:debug("Group value: ~p", [Value]), {_, Perms} = Grant, UpdGrant = {list_to_atom( binary_to_list(Value)), Perms}; <<"permissions">> -> {Grantee, _} = Grant, Perms = process_permissions(Value), - logger:debug("Perms value: ~p", [Value]), + _ = lager:debug("Perms value: ~p", [Value]), UpdGrant = {Grantee, Perms}; _ -> UpdGrant = Grant diff --git a/apps/riak_cs/src/riak_cs_app.erl b/apps/riak_cs/src/riak_cs_app.erl index 661da3c1a..e364f53a4 100644 --- a/apps/riak_cs/src/riak_cs_app.erl +++ b/apps/riak_cs/src/riak_cs_app.erl @@ -58,29 +58,29 @@ check_admin_creds() -> case riak_cs_config:admin_creds() of {ok, {"admin-key", _}} -> %% The default key - logger:warning("admin.key is defined as default. Please create" + lager:warning("admin.key is defined as default. Please create" " admin user and configure it.", []), application:set_env(riak_cs, admin_secret, "admin-secret"), ok; {ok, {undefined, _}} -> - logger:warning("The admin user's key id has not been specified."), + _ = lager:warning("The admin user's key id has not been specified."), {error, admin_key_undefined}; {ok, {[], _}} -> - logger:warning("The admin user's key id has not been specified."), + _ = lager:warning("The admin user's key id has not been specified."), {error, admin_key_undefined}; {ok, {Key, undefined}} -> fetch_and_cache_admin_creds(Key); {ok, {Key, []}} -> fetch_and_cache_admin_creds(Key); {ok, {Key, _}} -> - logger:warning("The admin user's secret is specified. Ignoring."), + _ = lager:warning("The admin user's secret is specified. Ignoring."), fetch_and_cache_admin_creds(Key) end. fetch_and_cache_admin_creds(Key) -> %% Not using as the master pool might not be initialized {ok, MasterPbc} = riak_connection(), - logger:debug("setting admin as ~s", [Key]), + _ = lager:debug("setting admin as ~s", [Key]), try %% Do we count this into stats?; This is a startup query and %% system latency is expected to be low. So get timeout can be @@ -93,12 +93,13 @@ fetch_and_cache_admin_creds(Key) -> Secret = User?RCS_USER.key_secret, application:set_env(riak_cs, admin_secret, Secret); Error -> - logger:error("Couldn't get admin user (~s) record: ~p", [Key, Error]), + _ = lager:error("Couldn't get admin user (~s) record: ~p", + [Key, Error]), Error end catch T:E -> - logger:error("Couldn't get admin user (~s) record: ~p", - [Key, {T, E}]), + _ = lager:error("Couldn't get admin user (~s) record: ~p", + [Key, {T, E}]), {error, {T, E}} after riakc_pb_socket:stop(MasterPbc) @@ -111,22 +112,22 @@ fetch_and_cache_admin_creds(Key) -> sanity_check(true, ok, {ok, true}) -> riak_cs_sup:start_link(); sanity_check(false, _, _) -> - logger:error("You must update your Riak CS app.config. Please see the" - "release notes for more information on updating you" - "configuration."), + _ = lager:error("You must update your Riak CS app.config. Please see the" + "release notes for more information on updating you" + "configuration."), {error, bad_config}; sanity_check(true, _, {ok, false}) -> - logger:error("Invalid Riak bucket properties detected. Please " - "verify that allow_mult is set to true for all " - "buckets."), + _ = lager:error("Invalid Riak bucket properties detected. Please " + "verify that allow_mult is set to true for all " + "buckets."), {error, invalid_bucket_props}; sanity_check(true, _, {error, Reason}) -> - logger:error("Could not verify bucket properties. Error was" - " ~p.", [Reason]), + _ = lager:error("Could not verify bucket properties. Error was" + " ~p.", [Reason]), {error, error_verifying_props}; sanity_check(_, {error, Reason}, _) -> - logger:error("Admin credentials are not properly set: ~p.", - [Reason]), + _ = lager:error("Admin credentials are not properly set: ~p.", + [Reason]), {error, Reason}. -spec is_config_valid() -> boolean(). @@ -174,15 +175,16 @@ check_bucket_props(Bucket, MasterPbc) -> {ok, Props} -> case lists:keyfind(allow_mult, 1, Props) of {allow_mult, true} -> - logger:debug("~s bucket was already configured correctly.", - [Bucket]), + _ = lager:debug("~s bucket was" + " already configured correctly.", + [Bucket]), {ok, true}; _ -> - logger:warning("~p is misconfigured", [Bucket]), + _ = lager:warning("~p is misconfigured", [Bucket]), {ok, false} end; {error, Reason}=E -> - logger:warning( + _ = lager:warning( "Unable to verify ~s bucket settings (~p).", [Bucket, Reason]), E @@ -190,7 +192,7 @@ check_bucket_props(Bucket, MasterPbc) -> riak_connection() -> {Host, Port} = riak_cs_config:riak_host_port(), - logger:debug("connecting to ~p", [{Host, Port}]), + lager:debug("connecting to ~p", [{Host, Port}]), Timeout = case application:get_env(riak_cs, riakc_connect_timeout) of {ok, ConfigValue} -> ConfigValue; diff --git a/apps/riak_cs/src/riak_cs_block_server.erl b/apps/riak_cs/src/riak_cs_block_server.erl index 65f1bbc40..07d71b4f3 100644 --- a/apps/riak_cs/src/riak_cs_block_server.erl +++ b/apps/riak_cs/src/riak_cs_block_server.erl @@ -190,8 +190,8 @@ handle_cast({put_block, ReplyPid, Bucket, Key, UUID, BlockNumber, Value, BCSum}, {?USERMETA_KEY, Key}, {?USERMETA_BCSUM, BCSum}]), FailFun = fun(Error) -> - logger:error("Put ~p ~p UUID ~p block ~p failed: ~p", - [Bucket, Key, UUID, BlockNumber, Error]) + _ = lager:error("Put ~p ~p UUID ~p block ~p failed: ~p\n", + [Bucket, Key, UUID, BlockNumber, Error]) end, %% TODO: Handle put failure here. ok = do_put_block(FullBucket, FullKey, <<>>, Value, MD, @@ -217,7 +217,7 @@ handle_cast({delete_block, ReplyPid, Bucket, Key, UUID, BlockNumber}, State=#sta riak_cs_delete_fsm:block_deleted(ReplyPid, {ok, {UUID, BlockNumber}}); {error, _} = Error -> %% Report errors in HEADs to prevent crashing block - %% servers, as crash logs forces logger to sync log + %% servers, as crash logs forces lager to sync log %% files at each line. Result = format_delete_result(Error, {UUID, BlockNumber}), riak_cs_delete_fsm:block_deleted(ReplyPid, Result) @@ -253,14 +253,14 @@ do_get_block(ReplyPid, _Bucket, _Key, _ClusterID, _UseProxyGet, _ProxyActive, when is_list(ErrorReasons) andalso is_atom(LastReason) -> %% Not worth retrying, 'failure' comes as LastReason Sorry = {error, ErrorReasons}, - logger:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), + _ = lager:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), ok = riak_cs_get_fsm:chunk(ReplyPid, {UUID, BlockNumber}, Sorry); do_get_block(ReplyPid, _Bucket, _Key, _ClusterID, _UseProxyGet, _ProxyActive, UUID, BlockNumber, _RcPid, MaxRetries, ErrorReasons) when is_list(ErrorReasons) andalso length(ErrorReasons) > MaxRetries -> Sorry = {error, ErrorReasons}, - logger:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), + _ = lager:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), ok = riak_cs_get_fsm:chunk(ReplyPid, {UUID, BlockNumber}, Sorry); do_get_block(ReplyPid, Bucket, Key, ClusterID, UseProxyGet, ProxyActive, @@ -306,7 +306,7 @@ try_local_get(RcPid, FullBucket, FullKey, GetOptions1, GetOptions2, [{local_one, Why}|ErrorReasons], UseProxyGet, ProxyActive, ClusterID); {error, Other} -> - logger:error("do_get_block: other error 1: ~p", [Other]), + _ = lager:error("do_get_block: other error 1: ~p\n", [Other]), RetryFun({failure, [{local_one, Other}|ErrorReasons]}) end. @@ -322,7 +322,7 @@ handle_local_notfound(RcPid, FullBucket, FullKey, GetOptions2, {error, Why} when Why == disconnected; Why == timeout -> - logger:debug("get_block_local() failed: {error, ~p}", [Why]), + _ = lager:debug("get_block_local() failed: {error, ~p}", [Why]), _ = riak_cs_pbc:pause_to_reconnect(block_pbc(RcPid), Why, Timeout), RetryFun([{local_quorum, Why}|ErrorReasons]); @@ -341,7 +341,7 @@ handle_local_notfound(RcPid, FullBucket, FullKey, GetOptions2, {error, notfound} -> RetryFun({failure, [{local_quorum, notfound}|ErrorReasons]}); {error, Other} -> - logger:error("do_get_block: other error 2: ~p", [Other]), + _ = lager:error("do_get_block: other error 2: ~p\n", [Other]), RetryFun({failure, [{local_quorum, Other}|ErrorReasons]}) end. @@ -413,7 +413,7 @@ secondary_delete_check({error, {unsatisfied_constraint, _, _}}, RcPid, RiakObjec StatsKey = [riakc, delete_block_secondary], riak_cs_pbc:delete_obj(block_pbc(RcPid), RiakObject, [], Timeout, StatsKey); secondary_delete_check({error, Reason} = E, _, _) -> - logger:warning("Constrained block deletion failed. Reason: ~p", [Reason]), + _ = lager:warning("Constrained block deletion failed. Reason: ~p", [Reason]), E; secondary_delete_check(_, _, _) -> ok. @@ -512,18 +512,19 @@ resolve_block_object(RObj, RcPid) -> error -> [] end, - logger:info("Repairing riak ~p ~p for ~p", [RBucket, RKey, S3Info]), + _ = lager:info("Repairing riak ~p ~p for ~p\n", + [RBucket, RKey, S3Info]), Bucket = proplists:get_value(<>, S3Info), Key = proplists:get_value(<>, S3Info), VClock = riakc_obj:vclock(RObj), FailFun = fun(Error) -> - logger:error("Put S3 ~p ~p Riak ~p ~p failed: ~p", - [Bucket, Key, RBucket, RKey, Error]) + _ = lager:error("Put S3 ~p ~p Riak ~p ~p failed: ~p\n", + [Bucket, Key, RBucket, RKey, Error]) end, do_put_block(RBucket, RKey, VClock, Value, MD, RcPid, [riakc, put_block_resolved], FailFun); NeedRepair andalso not is_binary(Value) -> - logger:error("All checksums fail: ~P", [RObj, 200]); + _ = lager:error("All checksums fail: ~P\n", [RObj, 200]); true -> ok end, diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index ea8879f2a..9238f8230 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -175,7 +175,7 @@ delete_bucket(User, UserObj, Bucket, RcPid) -> %% TODO: output log if failed in cleaning up existing uploads. %% The number of retry is hardcoded. {ok, Count} = delete_all_uploads(Bucket, RcPid), - logger:debug("deleted ~p multiparts before bucket deletion.", [Count]), + _ = lager:debug("deleted ~p multiparts before bucket deletion.", [Count]), %% This call still may return {error, remaining_multipart_upload} %% even if all uploads cleaned up above, because concurrent %% multiple deletion may happen. Then Riak CS returns 409 confliction @@ -228,12 +228,12 @@ fold_delete_uploads(Bucket, RcPid, [D|Ds], Timestamp, Count)-> {ok, _NewObj} -> fold_delete_uploads(Bucket, RcPid, Ds, Timestamp, Count+1); E -> - logger:debug("cannot delete multipart manifest: ~p ~p (~p)", + lager:debug("cannot delete multipart manifest: ~p ~p (~p)", [{Bucket, Key}, M?MANIFEST.uuid, E]), E end; _E -> - logger:debug("skipping multipart manifest: ~p ~p (~p)", + lager:debug("skipping multipart manifest: ~p ~p (~p)", [{Bucket, Key}, UploadId, _E]), fold_delete_uploads(Bucket, RcPid, Ds, Timestamp, Count) end. @@ -266,7 +266,7 @@ iterate_csbuckets(RcPid, Acc0, Fun, Cont0) -> end; Error -> - logger:error("iterating CS buckets: ~p", [Error]), + _ = lager:error("iterating CS buckets: ~p", [Error]), {error, {Error, Acc0}} end. @@ -440,17 +440,17 @@ fetch_bucket_object_raw(BucketName, RcPid) -> -spec maybe_log_sibling_warning(binary(), list(riakc_obj:value())) -> ok. maybe_log_sibling_warning(Bucket, Values) when length(Values) > 1 -> - logger:warning("The bucket ~s has ~b siblings that may need resolution.", - [binary_to_list(Bucket), length(Values)]), + _ = lager:warning("The bucket ~s has ~b siblings that may need resolution.", + [binary_to_list(Bucket), length(Values)]), ok; maybe_log_sibling_warning(_, _) -> ok. -spec maybe_log_bucket_owner_error(binary(), list(riakc_obj:value())) -> ok. maybe_log_bucket_owner_error(Bucket, Values) when length(Values) > 1 -> - logger:error("The bucket ~s has ~b owners." - " This situation requires administrator intervention.", - [binary_to_list(Bucket), length(Values)]), + _ = lager:error("The bucket ~s has ~b owners." + " This situation requires administrator intervention.", + [binary_to_list(Bucket), length(Values)]), ok; maybe_log_bucket_owner_error(_, _) -> ok. @@ -725,21 +725,21 @@ handle_stanchion_response(409, ErrorDoc, Op, Bucket) Value = riak_cs_s3_response:xml_error_code(ErrorDoc), case {lists:flatten(Value), Op} of {"MultipartUploadRemaining", delete} -> - logger:error("Concurrent multipart upload might have" - " happened on deleting bucket '~s'.", [Bucket]), + _ = lager:error("Concurrent multipart upload might have" + " happened on deleting bucket '~s'.", [Bucket]), {error, remaining_multipart_upload}; {"MultipartUploadRemaining", create} -> %% might be security issue - logger:critical("Multipart upload remains in deleted bucket (~s)" - " Clean up the deleted buckets now.", [Bucket]), + _ = lager:critical("Multipart upload remains in deleted bucket (~s)" + " Clean up the deleted buckets now.", [Bucket]), %% Broken, returns 500 throw({remaining_multipart_upload_on_deleted_bucket, Bucket}); Other -> - logger:debug("errordoc: ~p => ~s", [Other, ErrorDoc]), + _ = lager:debug("errordoc: ~p => ~s", [Other, ErrorDoc]), riak_cs_s3_response:error_response(ErrorDoc) end; handle_stanchion_response(_C, ErrorDoc, _M, _) -> - %% logger:error("unexpected errordoc: (~p, ~p) ~s", [_C, _M, ErrorDoc]), + %% _ = lager:error("unexpected errordoc: (~p, ~p) ~s", [_C, _M, ErrorDoc]), riak_cs_s3_response:error_response(ErrorDoc). %% @doc Update a bucket record to convert the name from binary diff --git a/apps/riak_cs/src/riak_cs_config.erl b/apps/riak_cs/src/riak_cs_config.erl index 721227062..92c27888a 100644 --- a/apps/riak_cs/src/riak_cs_config.erl +++ b/apps/riak_cs/src/riak_cs_config.erl @@ -116,7 +116,7 @@ -define(MAYBE_WARN(Bool, Msg), case (Bool) of - true -> logger:warning((Msg)); + true -> _ = lager:warning((Msg)); _ -> ok end). @@ -269,7 +269,8 @@ proxy_get_active() -> disabled -> false; Flag when is_boolean(Flag) -> Flag; Other -> - logger:warning("proxy_get value in advanced.config is invalid: ~p", [Other]), + _ = lager:warning("proxy_get value in advanced.config is invalid: ~p", + [Other]), false end. @@ -279,7 +280,7 @@ trust_x_forwarded_for() -> {ok, true} -> true; {ok, false} -> false; {ok, _} -> - logger:warning("trust_x_forwarded_for value in app.config is invalid"), + _ = lager:warning("trust_x_forwarded_for value in app.config is invalid"), false; undefined -> false %% secure by default! end. @@ -374,13 +375,13 @@ stanchion() -> {Host, Port} = case application:get_env(riak_cs, stanchion_host) of {ok, HostPort} -> HostPort; undefined -> - logger:warning("No stanchion access defined. Using default."), + _ = lager:warning("No stanchion access defined. Using default."), {?DEFAULT_STANCHION_IP, ?DEFAULT_STANCHION_PORT} end, SSL = case application:get_env(riak_cs, stanchion_ssl) of {ok, SSL0} -> SSL0; undefined -> - logger:warning("No ssl flag for stanchion access defined. Using default."), + _ = lager:warning("No ssl flag for stanchion access defined. Using default."), ?DEFAULT_STANCHION_SSL end, {Host, Port, SSL}. diff --git a/apps/riak_cs/src/riak_cs_console.erl b/apps/riak_cs/src/riak_cs_console.erl index 106420679..77a1c5661 100644 --- a/apps/riak_cs/src/riak_cs_console.erl +++ b/apps/riak_cs/src/riak_cs_console.erl @@ -60,7 +60,7 @@ cluster_info([OutFile]) -> error:{badmatch, {error, enotdir}} -> io:format("Cluster_info failed, not a directory ~p~n", [filename:dirname(OutFile)]); Exception:Reason -> - logger:error("Cluster_info failed ~p:~p", [Exception, Reason]), + lager:error("Cluster_info failed ~p:~p", [Exception, Reason]), io:format("Cluster_info failed, see log for details~n"), error end. @@ -86,13 +86,13 @@ audit_bucket_ownership() -> audit_bucket_ownership0(RcPid) -> FromUsers = ownership_from_users(RcPid), {FromBuckets, OwnedBy} = ownership_from_buckets(RcPid), - logger:debug("FromUsers: ~p~n", [lists:usort(gb_sets:to_list(FromUsers))]), - logger:debug("FromBuckets: ~p~n", [lists:usort(gb_sets:to_list(FromBuckets))]), - logger:debug("OwnedBy: ~p~n", [lists:usort(gb_trees:to_list(OwnedBy))]), + lager:debug("FromUsers: ~p~n", [lists:usort(gb_sets:to_list(FromUsers))]), + lager:debug("FromBuckets: ~p~n", [lists:usort(gb_sets:to_list(FromBuckets))]), + lager:debug("OwnedBy: ~p~n", [lists:usort(gb_trees:to_list(OwnedBy))]), Inconsistencies0 = gb_sets:fold( fun ({U, B}, Acc) -> - logger:info( + lager:info( "Bucket is not tracked by user: {User, Bucket} = {~s, ~s}", [U, B]), [{not_tracked, {U, B}} | Acc] @@ -101,11 +101,11 @@ audit_bucket_ownership0(RcPid) -> fun({U,B}, Acc) -> case gb_trees:lookup(B, OwnedBy) of none -> - logger:info( + lager:info( "Bucket does not exist: {User, Bucket} = {~s, ~s}", [U, B]), [{no_bucket_object, {U, B}} | Acc]; {value, DifferentUser} -> - logger:info( + lager:info( "Bucket is owned by different user: {User, Bucket, DifferentUser} = " "{~s, ~s, ~s}", [U, B, DifferentUser]), [{different_user, {U, B, DifferentUser}} | Acc] @@ -171,7 +171,7 @@ cleanup_orphan_multipart(Timestamp) when is_list(Timestamp) -> cleanup_orphan_multipart(Timestamp) when is_binary(Timestamp) -> {ok, RcPid} = riak_cs_riak_client:start_link([]), - logger:info("cleaning up with timestamp ~s", [Timestamp]), + _ = lager:info("cleaning up with timestamp ~s", [Timestamp]), _ = io:format("cleaning up with timestamp ~s", [Timestamp]), Fun = fun(RcPidForOneBucket, BucketName, GetResult, Acc0) -> ok = maybe_cleanup_csbucket(RcPidForOneBucket, BucketName, @@ -181,7 +181,7 @@ cleanup_orphan_multipart(Timestamp) when is_binary(Timestamp) -> _ = riak_cs_bucket:fold_all_buckets(Fun, [], RcPid), ok = riak_cs_riak_client:stop(RcPid), - logger:info("All old unaborted orphan multipart uploads have been deleted.", []), + _ = lager:info("All old unaborted orphan multipart uploads have been deleted.", []), _ = io:format("~nAll old unaborted orphan multipart uploads have been deleted.~n", []). @@ -225,24 +225,24 @@ resolve_siblings(Pid, RawBucket, RawKey) -> resolve_siblings(Pid, RawBucket, RawKey, GetOptions, GetTimeout, PutOptions, PutTimeout) when is_integer(GetTimeout) andalso is_integer(PutTimeout) -> - logger:info("Getting ~p:~p~n", [RawBucket, RawKey]), + _ = lager:info("Getting ~p:~p~n", [RawBucket, RawKey]), case riakc_pb_socket:get(Pid, RawBucket, RawKey, GetOptions, GetTimeout) of {ok, RiakObj} -> - logger:info("Trying to resolve ~p sibling(s) of ~p:~p", - [riakc_obj:value_count(RiakObj), RawBucket, RawKey]), + _ = lager:info("Trying to resolve ~p sibling(s) of ~p:~p", + [riakc_obj:value_count(RiakObj), RawBucket, RawKey]), case resolve_ro_siblings(RiakObj, RawBucket, RawKey) of {ok, RiakObj2} -> R = riakc_pb_socket:put(Pid, RiakObj2, PutOptions, PutTimeout), - logger:info("Resolution result: ~p~n", [R]), + _ = lager:info("Resolution result: ~p~n", [R]), R; ok -> - logger:info("No siblings in ~p:~p~n", [RawBucket, RawKey]); + lager:info("No siblings in ~p:~p~n", [RawBucket, RawKey]); {error, _} = E -> - logger:info("Not updating ~p:~p: ~p~n", [RawBucket, RawKey, E]), + _ = lager:info("Not updating ~p:~p: ~p~n", [RawBucket, RawKey, E]), E end; {error, Reason} = E -> - logger:info("Failed to get an object before resolution: ~p~n", [Reason]), + _ = lager:info("Failed to get an object before resolution: ~p~n", [Reason]), E end. @@ -283,7 +283,7 @@ resolve_ro_siblings(RO, <<"0b:", _/binary>>, _) -> RO1 = riakc_obj:update_metadata(RO, MD), {ok, riakc_obj:update_value(RO1, Value)}; {E, true} -> - logger:info("Cannot resolve: ~p~n", [E]), + _ = lager:info("Cannot resolve: ~p~n", [E]), {error, E}; {_, false} -> ok @@ -291,7 +291,8 @@ resolve_ro_siblings(RO, <<"0b:", _/binary>>, _) -> resolve_ro_siblings(RiakObject, <<"0o:", _/binary>>, _RawKey) -> [{_, Manifest}|_] = Manifests = riak_cs_manifest:manifests_from_riak_object(RiakObject), - logger:info("Number of histories after sibling resolution: ~p.~n", [length(Manifests)]), + _ = lager:info("Number of histories after sibling resolution: ~p.~n", + [length(Manifests)]), ObjectToWrite0 = riak_cs_utils:update_obj_value( RiakObject, riak_cs_utils:encode_term(Manifests)), @@ -314,7 +315,7 @@ maybe_cleanup_csbucket(RcPidForOneBucket, BucketName, {ok, RiakObj}, Timestamp) {ok, Count} -> io:format(" aborted ~p uploads.~n", [Count]); Error -> - logger:warning("Error in deleting old uploads: ~p~n", [Error]), + lager:warning("Error in deleting old uploads: ~p~n", [Error]), io:format("Error in deleting old uploads: ~p <<< ~n", [Error]), Error end; @@ -331,6 +332,6 @@ maybe_cleanup_csbucket(RcPidForOneBucket, BucketName, {ok, RiakObj}, Timestamp) maybe_cleanup_csbucket(_, _, {error, notfound}, _) -> ok; maybe_cleanup_csbucket(_, BucketName, {error, _} = Error, _) -> - logger:error("~p on processing ~s", [Error, BucketName]), + lager:error("~p on processing ~s", [Error, BucketName]), io:format("Error: ~p on processing ~s\n", [Error, BucketName]), Error. diff --git a/apps/riak_cs/src/riak_cs_copy_object.erl b/apps/riak_cs/src/riak_cs_copy_object.erl index fbc543eb4..61c4affa1 100644 --- a/apps/riak_cs/src/riak_cs_copy_object.erl +++ b/apps/riak_cs/src/riak_cs_copy_object.erl @@ -76,7 +76,7 @@ authorize_on_src(RcPid, SrcManifest, RD, {undefined, undefined} end, - logger:debug("UserKey: ~p / ~p", [UserKey, User]), + _ = lager:debug("UserKey: ~p / ~p", [UserKey, User]), %% Build fake context for checking read access to the src object OtherLocalCtx = LocalCtx#key_context{bucket=SrcBucket, @@ -91,8 +91,8 @@ authorize_on_src(RcPid, SrcManifest, RD, %% TODO: use unicode module for for key? or is this encoded? Path = string:join(["/buckets", binary_to_list(SrcBucket), "objects", binary_to_list(SrcKey)], "/"), - logger:debug("raw path: ~p => ~p", [wrq:raw_path(RD), Path]), - logger:debug("src bucket obj: ~p", [SrcBucketObj]), + _ = lager:debug("raw path: ~p => ~p", [wrq:raw_path(RD), Path]), + _ = lager:debug("src bucket obj: ~p", [SrcBucketObj]), OtherRD0 = wrq:create('GET', wrq:version(RD), Path, wrq:req_headers(RD)), OtherRD = wrq:load_dispatch_data([{bucket, binary_to_list(SrcBucket)}, {object, binary_to_list(SrcKey)}], @@ -246,7 +246,7 @@ get_and_put(GetPid, PutPid, MD5, ContFun) -> get_and_put(GetPid, PutPid, MD5, ContFun) end; false -> - logger:debug("Connection lost during a copy", []), + _ = lager:debug("Connection lost during a copy", []), catch riak_cs_get_fsm:stop(GetPid), catch riak_cs_put_fsm:force_stop(PutPid), {error, connection_lost} diff --git a/apps/riak_cs/src/riak_cs_delete_fsm.erl b/apps/riak_cs/src/riak_cs_delete_fsm.erl index c5da8346a..7e825c82a 100644 --- a/apps/riak_cs/src/riak_cs_delete_fsm.erl +++ b/apps/riak_cs/src/riak_cs_delete_fsm.erl @@ -204,9 +204,9 @@ handle_receiving_manifest(State=#state{manifest=Manifest, start_block_servers(NewState); {error, invalid_state} -> {Bucket, Key} = Manifest?MANIFEST.bkey, - logger:warning("Invalid state manifest in GC bucket at ~p, " - "bucket=~p key=~p: ~p", - [GCKey, Bucket, Key, Manifest]), + _ = lager:warning("Invalid state manifest in GC bucket at ~p, " + "bucket=~p key=~p: ~p", + [GCKey, Bucket, Key, Manifest]), %% If total blocks and deleted blocks are the same, %% gc worker attempt to delete the manifest in fileset. %% Then manifests and blocks becomes orphan. @@ -258,7 +258,7 @@ maybe_delete_blocks(State=#state{bucket=Bucket, NewUnackedDeletes = ordsets:add_element(BlockID, UnackedDeletes), NewDeleteBlocksRemaining = ordsets:del_element(BlockID, DeleteBlocksRemaining), {UUID, Seq} = BlockID, - logger:debug("Deleting block: ~p ~p ~p ~p", [Bucket, Key, UUID, Seq]), + _ = lager:debug("Deleting block: ~p ~p ~p ~p", [Bucket, Key, UUID, Seq]), riak_cs_block_server:delete_block(DeleterPid, Bucket, Key, UUID, Seq), NewFreeDeleters = ordsets:del_element(DeleterPid, FreeDeleters), maybe_delete_blocks(State#state{unacked_deletes=NewUnackedDeletes, diff --git a/apps/riak_cs/src/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl index 9337163c8..75994e9de 100644 --- a/apps/riak_cs/src/riak_cs_gc.erl +++ b/apps/riak_cs/src/riak_cs_gc.erl @@ -219,7 +219,7 @@ handle_mark_as_pending_delete({ok, RiakObject}, Bucket, Key, UUIDsToMark, RcPid) end; handle_mark_as_pending_delete({error, _Error}=Error, _Bucket, _Key, _UUIDsToMark, _RcPid) -> - logger:warning("Failed to mark as pending_delete, reason: ~p", [Error]), + _ = lager:warning("Failed to mark as pending_delete, reason: ~p", [Error]), Error. %% @doc Return the number of seconds to wait after finishing garbage @@ -394,7 +394,7 @@ maybe_delete_small_objects(Manifests, RcPid, Threshold) -> when ContentLength < Threshold -> %% actually this won't be scheduled :P UUIDManifest = {UUID, Manifest?MANIFEST{state=scheduled_delete}}, - logger:debug("trying to delete ~p at ~p", [UUIDManifest, BagId]), + _ = lager:debug("trying to delete ~p at ~p", [UUIDManifest, BagId]), case try_delete_blocks(BagId, UUIDManifest) of ok -> {Survivors, [UUID|UUIDsToDelete]}; @@ -404,8 +404,8 @@ maybe_delete_small_objects(Manifests, RcPid, Threshold) -> end; ({UUID, M}, {Survivors, UUIDsToDelete}) -> ContentLength = M?MANIFEST.content_length, - logger:debug("~p is not being deleted: (CL, threshold)=(~p, ~p)", - [UUID, ContentLength, Threshold]), + _ = lager:debug("~p is not being deleted: (CL, threshold)=(~p, ~p)", + [UUID, ContentLength, Threshold]), {[{UUID, M}|Survivors], UUIDsToDelete} end, %% Obtain a new history! @@ -420,17 +420,18 @@ try_delete_blocks(BagId, {UUID, _} = UUIDManifest) -> case riak_cs_delete_fsm:sync_delete(Pid) of {Pid, {ok, {_, _, _, TotalBlocks, TotalBlocks}}} -> %% all the blocks are successfully deleted - logger:debug("Active deletion of ~p succeeded", [UUID]), + _ = lager:debug("Active deletion of ~p succeeded", [UUID]), ok; {Pid, {ok, {_, _, _, NumDeleted, TotalBlocks}}} -> - logger:debug("Only ~p/~p blocks of ~p deleted", - [NumDeleted, TotalBlocks, UUID]), + _ = lager:debug("Only ~p/~p blocks of ~p deleted", + [NumDeleted, TotalBlocks, UUID]), {error, partially_deleted}; {Pid, {error, _} = E} -> - logger:warning("Active deletion of ~p failed. Reason: ~p", [UUID, E]), + _ = lager:warning("Active deletion of ~p failed. Reason: ~p", + [UUID, E]), E; Other -> - logger:error("Active deletion failed. Reason: ~p", [Other]), + _ = lager:error("Active deletion failed. Reason: ~p", [Other]), {error, Other} end. @@ -463,7 +464,7 @@ move_manifests_to_gc_bucket(Manifests, RcPid) -> end, %% Create a set from the list of manifests - logger:debug("Manifests scheduled for deletion: ~p", [ManifestSet]), + _ = lager:debug("Manifests scheduled for deletion: ~p", [ManifestSet]), Timeout1 = riak_cs_config:put_gckey_timeout(), riak_cs_pbc:put(ManifestPbc, ObjectToWrite, [], Timeout1, [riakc, put_gc_manifest_set]). diff --git a/apps/riak_cs/src/riak_cs_gc_batch.erl b/apps/riak_cs/src/riak_cs_gc_batch.erl index 6e9b191d9..6bec9d2ea 100644 --- a/apps/riak_cs/src/riak_cs_gc_batch.erl +++ b/apps/riak_cs/src/riak_cs_gc_batch.erl @@ -100,22 +100,22 @@ init([#gc_batch_state{ 1000000000 =< EndKey -> %% StartKey < EndKey %% EndKey <= BatchStart - Leeway - logger:info("Starting garbage collection: " - "(start, end) = (~p, ~p), " - "leeway=~p, batch_start=~p, max_workers=~p, page-size=~p", - [StartKey, EndKey, Leeway, BatchStart, MaxWorkers, BatchSize]), + _ = lager:info("Starting garbage collection: " + "(start, end) = (~p, ~p), " + "leeway=~p, batch_start=~p, max_workers=~p, page-size=~p", + [StartKey, EndKey, Leeway, BatchStart, MaxWorkers, BatchSize]), {ok, prepare, State, 0}; DefaultEndKey -> - logger:error("GC did not start: " - "End of GC target period was too recent (~p > ~p)", - [EndKey, DefaultEndKey]), + _ = lager:error("GC did not start: " + "End of GC target period was too recent (~p > ~p)", + [EndKey, DefaultEndKey]), {stop, {error, invalid_gc_end_key}} end; init([#gc_batch_state{start_key=StartKey, end_key=EndKey}]) -> - logger:error("GC did not start due to wrong GC target period: " - "(start, end) = (~p, ~p)", - [StartKey, EndKey]), + _ = lager:error("GC did not start due to wrong GC target period: " + "(start, end) = (~p, ~p)", + [StartKey, EndKey]), {stop, {error, invalid_gc_start_key}}. @@ -177,20 +177,20 @@ handle_info(_Info, StateName, State) -> %% @doc TODO: log warnings if this fsm is asked to terminate in the %% middle of running a gc batch terminate(normal, _StateName, State) -> - logger:info("Finished garbage collection: " - "~b seconds, ~p batch_count, ~p batch_skips, " - "~p manif_count, ~p block_count\n", - [elapsed(State?STATE.batch_start), State?STATE.batch_count, - State?STATE.batch_skips, State?STATE.manif_count, - State?STATE.block_count]), - riak_cs_gc_manager:finished(State); -terminate(cancel, _StateName, State) -> - logger:warning("Garbage collection has been canceled: " + _ = lager:info("Finished garbage collection: " "~b seconds, ~p batch_count, ~p batch_skips, " "~p manif_count, ~p block_count\n", [elapsed(State?STATE.batch_start), State?STATE.batch_count, State?STATE.batch_skips, State?STATE.manif_count, State?STATE.block_count]), + riak_cs_gc_manager:finished(State); +terminate(cancel, _StateName, State) -> + _ = lager:warning("Garbage collection has been canceled: " + "~b seconds, ~p batch_count, ~p batch_skips, " + "~p manif_count, ~p block_count\n", + [elapsed(State?STATE.batch_start), State?STATE.batch_count, + State?STATE.batch_skips, State?STATE.manif_count, + State?STATE.block_count]), ok; terminate(_Reason, _StateName, _State) -> ok. @@ -230,7 +230,7 @@ fetch_first_keys(?STATE{batch_start=_BatchStart, {KeyListRes, KeyListState} = riak_cs_gc_key_list:new(StartKey, EndKey, BatchSize), #gc_key_list_result{bag_id=BagId, batch=Batch} = KeyListRes, - logger:debug("Initial batch keys: ~p", [Batch]), + _ = lager:debug("Initial batch keys: ~p", [Batch]), State?STATE{batch=Batch, key_list_state=KeyListState, bag_id=BagId}. @@ -248,7 +248,7 @@ handle_batch_complete(WorkerPid, WorkerState, State) -> batch_skips=WorkerBatchSkips, manif_count=WorkerManifestCount, block_count=WorkerBlockCount} = WorkerState, - logger:debug("~p completed (~p)", [WorkerPid, WorkerState]), + _ = lager:debug("~p completed (~p)", [WorkerPid, WorkerState]), UpdWorkerPids = lists:delete(WorkerPid, WorkerPids), %% @TODO Workout the terminiology for these stats. i.e. Is batch %% count just an increment or represenative of something else. @@ -267,7 +267,7 @@ start_worker(?STATE{batch=[NextBatch|RestBatches], worker_pids=WorkerPids} = State) -> case ?GC_WORKER:start_link(BagId, NextBatch) of {ok, Pid} -> - logger:debug("GC worker ~p for bag ~p has started", [Pid, BagId]), + _ = lager:debug("GC worker ~p for bag ~p has started", [Pid, BagId]), State?STATE{batch=RestBatches, worker_pids=[Pid | WorkerPids]}; {error, _Reason} -> @@ -279,8 +279,8 @@ start_worker(?STATE{batch=[NextBatch|RestBatches], cancel_batch(?STATE{batch_start=BatchStart, worker_pids=WorkerPids}=_State) -> %% Interrupt the batch of deletes - logger:info("Canceled garbage collection batch after ~b seconds.", - [elapsed(BatchStart)]), + _ = lager:info("Canceled garbage collection batch after ~b seconds.", + [elapsed(BatchStart)]), [riak_cs_gc_worker:stop(P) || P <- WorkerPids]. -spec ok_reply(atom(), ?STATE{}) -> {reply, ok, atom(), ?STATE{}}. @@ -305,7 +305,7 @@ maybe_start_workers(?STATE{max_workers=MaxWorkers, %% Fetch the next set of manifests for deletion {KeyListRes, UpdKeyListState} = riak_cs_gc_key_list:next(KeyListState), #gc_key_list_result{bag_id=BagId, batch=Batch} = KeyListRes, - logger:debug("Next batch keys: ~p", [Batch]), + _ = lager:debug("Next batch keys: ~p", [Batch]), State2 = State?STATE{batch=Batch, key_list_state=UpdKeyListState, bag_id=BagId}, @@ -317,7 +317,7 @@ maybe_start_workers(?STATE{max_workers=MaxWorkers, worker_pids=WorkerPids, batch=Batch} = State) when MaxWorkers > length(WorkerPids) -> - logger:debug("Batch: ~p", [Batch, WorkerPids]), + _ = lager:debug("Batch: ~p", [Batch, WorkerPids]), State2 = start_worker(State), maybe_start_workers(State2). diff --git a/apps/riak_cs/src/riak_cs_gc_key_list.erl b/apps/riak_cs/src/riak_cs_gc_key_list.erl index 0848b9d54..586e0de9f 100644 --- a/apps/riak_cs/src/riak_cs_gc_key_list.erl +++ b/apps/riak_cs/src/riak_cs_gc_key_list.erl @@ -57,7 +57,7 @@ next(#gc_key_list_state{current_riak_client=RcPid, continuation=Continuation} = State) -> {Batch, UpdContinuation} = fetch_eligible_manifest_keys(RcPid, StartKey, EndKey, BatchSize, Continuation), - logger:debug("next Batch: ~p~n", [Batch]), + lager:debug("next Batch: ~p~n", [Batch]), {#gc_key_list_result{bag_id=BagId, batch=Batch}, State#gc_key_list_state{continuation=UpdContinuation}}. @@ -81,15 +81,15 @@ next_pool(#gc_key_list_state{ ok = riak_cs_riak_client:set_manifest_bag(RcPid, BagId), {Batch, Continuation} = fetch_eligible_manifest_keys(RcPid, StartKey, EndKey, BatchSize, undefined), - logger:debug("next_bag ~s Batch: ~p~n", [BagId, Batch]), + lager:debug("next_bag ~s Batch: ~p~n", [BagId, Batch]), {#gc_key_list_result{bag_id=BagId, batch=Batch}, State#gc_key_list_state{remaining_bags=Rest, current_riak_client=RcPid, current_bag_id=BagId, continuation=Continuation}}; {error, Reason} -> - logger:error("Connection error for bag ~s in garbage collection: ~p", - [BagId, Reason]), + lager:error("Connection error for bag ~s in garbage collection: ~p", + [BagId, Reason]), next_pool(State#gc_key_list_state{remaining_bags=Rest}) end. @@ -121,9 +121,9 @@ eligible_manifest_keys({{ok, ?INDEX_RESULTS{keys=Keys}}, _}, false, BatchSize) -> split_eligible_manifest_keys(BatchSize, Keys, []); eligible_manifest_keys({{error, Reason}, {StartKey, EndKey}}, _, _) -> - logger:warning("Error occurred trying to query from time ~p to ~p" - "in gc key index. Reason: ~p", - [StartKey, EndKey, Reason]), + _ = lager:warning("Error occurred trying to query from time ~p to ~p" + "in gc key index. Reason: ~p", + [StartKey, EndKey, Reason]), []. %% @doc Break a list of gc-eligible keys from the GC bucket into smaller sets diff --git a/apps/riak_cs/src/riak_cs_gc_manager.erl b/apps/riak_cs/src/riak_cs_gc_manager.erl index 92bf37a57..a97e8bd44 100644 --- a/apps/riak_cs/src/riak_cs_gc_manager.erl +++ b/apps/riak_cs/src/riak_cs_gc_manager.erl @@ -138,8 +138,8 @@ init([]) -> Interval2 = Interval + InitialDelay, Next = riak_cs_gc:timestamp() + Interval2, TimerRef = erlang:send_after(Interval2 * 1000, self(), {start, []}), - logger:info("Scheduled next batch at ~s", - [riak_cs_gc_console:human_time(Next)]), + _ = lager:info("Scheduled next batch at ~s", + [riak_cs_gc_console:human_time(Next)]), #gc_manager_state{next=Next, interval=Interval, @@ -215,7 +215,7 @@ handle_info({'EXIT', Pid, Reason}, _StateName, #gc_manager_state{gc_batch_pid=Pid} = State) -> case Reason of Reason when Reason =/= normal andalso Reason =/= cancel -> - logger:warning("GC batch has terminated for reason: ~p", [Reason]); + _ = lager:warning("GC batch has terminated for reason: ~p", [Reason]); _ -> ok end, @@ -226,7 +226,7 @@ handle_info({start, Options}, idle, State) -> {ok, NextState} -> {next_state, running, NextState}; Error -> - logger:error("Cannot start batch. Reason: ~p", [Error]), + _ = lager:error("Cannot start batch. Reason: ~p", [Error]), NextState = schedule_next(State), {next_state, idle, NextState} end; @@ -235,8 +235,8 @@ handle_info({start, _}, running, State) -> {next_state, running, State}; handle_info(Info, StateName, State) -> %% This is really unexpected and unknown - warning. - logger:warning("Unexpected message received at GC process (~p): ~p", - [StateName, Info]), + _ = lager:warning("Unexpected message received at GC process (~p): ~p", + [StateName, Info]), {next_state, StateName, State}. %% @private @@ -320,7 +320,7 @@ schedule_next(#gc_manager_state{timer_ref=Ref}=State) false -> schedule_next(State#gc_manager_state{timer_ref=undefined}); _ -> - logger:debug("Timer is already scheduled, maybe manually triggered?"), + _ = lager:debug("Timer is already scheduled, maybe manually triggered?"), %% Timer is already scheduled, do nothing State end; @@ -331,7 +331,8 @@ schedule_next(#gc_manager_state{interval=Interval}=State) -> RevisedNext = riak_cs_gc:timestamp() + Interval, TimerValue = Interval * 1000, TimerRef = erlang:send_after(TimerValue, self(), {start, []}), - logger:info("Scheduled next batch at ~s", [riak_cs_gc_console:human_time(RevisedNext)]), + _ = lager:info("Scheduled next batch at ~s", + [riak_cs_gc_console:human_time(RevisedNext)]), State#gc_manager_state{next=RevisedNext, timer_ref=TimerRef}. diff --git a/apps/riak_cs/src/riak_cs_gc_worker.erl b/apps/riak_cs/src/riak_cs_gc_worker.erl index 66f89949b..6798ac551 100644 --- a/apps/riak_cs/src/riak_cs_gc_worker.erl +++ b/apps/riak_cs/src/riak_cs_gc_worker.erl @@ -235,9 +235,9 @@ fetch_next_fileset(ManifestSetKey, RcPid) -> {error, notfound}=Error -> Error; {error, Reason}=Error -> - logger:info("Error occurred trying to read the fileset" - " for ~p for gc. Reason: ~p", - [ManifestSetKey, Reason]), + _ = lager:info("Error occurred trying to read the fileset" + " for ~p for gc. Reason: ~p", + [ManifestSetKey, Reason]), riak_cs_pbc:check_connection_status(ManifestPbc, fetch_next_fileset), Error end. @@ -257,7 +257,7 @@ finish_file_delete(0, _, RiakObj, RcPid) -> Timeout, [riakc, delete_gc_manifest_set]), ok; finish_file_delete(_, FileSet, _RiakObj, _RcPid) -> - logger:debug("Remaining file keys: ~p", [twop_set:to_list(FileSet)]), + _ = lager:debug("Remaining file keys: ~p", [twop_set:to_list(FileSet)]), %% NOTE: we used to do a PUT here, but now with multidc replication %% we run garbage collection seprarately on each cluster, so we don't %% want to send this update to another data center. When we delete this diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl index d35d8e4d8..4b9c86015 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm.erl @@ -219,7 +219,7 @@ waiting_continue_or_stop({continue, Range}, #state{manifest=Manifest, [] -> %% We should never get here because empty %% files are handled by the wm resource. - logger:warning("~p:~p has no blocks", [BucketName, Key]), + _ = lager:warning("~p:~p has no blocks", [BucketName, Key]), {stop, normal, State}; [InitialBlock|_] -> TotalBlocks = length(BlocksOrder), @@ -230,7 +230,7 @@ waiting_continue_or_stop({continue, Range}, #state{manifest=Manifest, FreeReaders = riak_cs_block_server:start_block_servers(Manifest, RcPid, FetchConcurrency), - logger:debug("Block Servers: ~p", [FreeReaders]); + _ = lager:debug("Block Servers: ~p", [FreeReaders]); _ -> FreeReaders = Readers end, @@ -246,7 +246,8 @@ waiting_continue_or_stop({continue, Range}, #state{manifest=Manifest, end. waiting_continue_or_stop(Event, From, State) -> - logger:info("Pid ~p got unknown event ~p from ~p", [self(), Event, From]), + _ = lager:info("Pid ~p got unknown event ~p from ~p\n", + [self(), Event, From]), {next_state, waiting_continue_or_stop, State}. waiting_chunks(get_next_chunk, From, State=#state{num_sent=TotalNumBlocks, @@ -280,7 +281,7 @@ perhaps_send_to_user(From, #state{got_blocks=Got, {{value, NextBlock}, UpdIntransit} -> case orddict:find(NextBlock, Got) of {ok, Block} -> - logger:debug("Returning block ~p to client", [NextBlock]), + _ = lager:debug("Returning block ~p to client", [NextBlock]), %% Must use gen_fsm:reply/2 here! We are shared %% with an async event func and must return next_state. gen_fsm:reply(From, {chunk, Block}), @@ -296,7 +297,7 @@ waiting_chunks(stop, State) -> {stop, normal, State}; waiting_chunks(timeout, State = #state{got_blocks = Got}) -> GotSize = orddict:size(Got), - logger:debug("starting fetch again with ~p left in queue", [GotSize]), + _ = lager:debug("starting fetch again with ~p left in queue", [GotSize]), UpdState = read_blocks(State), {next_state, waiting_chunks, UpdState}; @@ -309,12 +310,12 @@ waiting_chunks({chunk, Pid, {NextBlock, BlockReturnValue}}, skip_bytes_initial=SkipInitial, keep_bytes_final=KeepFinal }=State) -> - logger:debug("Retrieved block ~p", [NextBlock]), + _ = lager:debug("Retrieved block ~p", [NextBlock]), case BlockReturnValue of {error, _} = ErrorRes -> #state{bucket=Bucket, key=Key} = State, - logger:error("~p: Cannot get S3 ~p ~p block# ~p: ~p", - [?MODULE, Bucket, Key, NextBlock, ErrorRes]), + _ = lager:error("~p: Cannot get S3 ~p ~p block# ~p: ~p\n", + [?MODULE, Bucket, Key, NextBlock, ErrorRes]), %% Our terminate() will explicitly stop dependent processes, %% we don't need an abnormal exit to kill them for us. exit(normal); @@ -327,7 +328,7 @@ waiting_chunks({chunk, Pid, {NextBlock, BlockReturnValue}}, {InitialBlock, FinalBlock}, {SkipInitial, KeepFinal}), UpdGot = orddict:store(NextBlock, BlockValue, Got), - %% TODO: logger:debug("BlocksLeft: ~p", [BlocksLeft]), + %% TODO: _ = lager:debug("BlocksLeft: ~p", [BlocksLeft]), GotSize = orddict:size(UpdGot), UpdState0 = State#state{got_blocks = UpdGot, free_readers = [Pid|FreeReaders]}, MaxGotSize = riak_cs_lfs_utils:get_fsm_buffer_size_factor(), @@ -407,7 +408,7 @@ prepare(#state{bucket=Bucket, {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, RcPid), case riak_cs_manifest_fsm:get_active_manifest(ManiPid) of {ok, Manifest} -> - logger:debug("Manifest: ~p", [Manifest]), + _ = lager:debug("Manifest: ~p", [Manifest]), case riak_cs_mp_utils:clean_multipart_unused_parts(Manifest, RcPid) of same -> State#state{manifest=Manifest, diff --git a/apps/riak_cs/src/riak_cs_json.erl b/apps/riak_cs/src/riak_cs_json.erl index ca5181b87..dda831d97 100644 --- a/apps/riak_cs/src/riak_cs_json.erl +++ b/apps/riak_cs/src/riak_cs_json.erl @@ -88,7 +88,7 @@ to_json([]) -> -spec value_or_default({ok, term()} | {error, term()}, term()) -> term(). value_or_default({error, Reason}, Default) -> - logger:debug("JSON error: ~p", [Reason]), + _ = lager:debug("JSON error: ~p", [Reason]), Default; value_or_default({ok, Value}, _) -> Value. diff --git a/apps/riak_cs/src/riak_cs_keystone_auth.erl b/apps/riak_cs/src/riak_cs_keystone_auth.erl index baeac422f..b6211d34b 100644 --- a/apps/riak_cs/src/riak_cs_keystone_auth.erl +++ b/apps/riak_cs/src/riak_cs_keystone_auth.erl @@ -130,7 +130,8 @@ handle_token_info_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, TokenInfo} handle_token_info_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, _}}) -> failed; handle_token_info_response({error, Reason}) -> - logger:warning("Error occurred requesting token from keystone. Reason: ~p", [Reason]), + _ = lager:warning("Error occurred requesting token from keystone. Reason: ~p", + [Reason]), failed. parse_auth_header("AWS " ++ Key) -> diff --git a/apps/riak_cs/src/riak_cs_kv_multi_backend.erl b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl index 329928af5..9b8939e18 100644 --- a/apps/riak_cs/src/riak_cs_kv_multi_backend.erl +++ b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl @@ -425,8 +425,8 @@ backend_fix_index({_, Mod, ModState}, Bucket, StorageKey, ForUpgrade) -> {reply, Reply, _UpModState} -> Reply; {error, Reason} -> - logger:error("Failed to fix index for bucket ~p, key ~p, backend ~p: ~p", - [Bucket, StorageKey, Mod, Reason]), + _ = lager:error("Failed to fix index for bucket ~p, key ~p, backend ~p: ~p", + [Bucket, StorageKey, Mod, Reason]), {0, 0, length(StorageKey)} end. diff --git a/apps/riak_cs/src/riak_cs_lfs_utils.erl b/apps/riak_cs/src/riak_cs_lfs_utils.erl index 92d1c4d46..722f850d6 100644 --- a/apps/riak_cs/src/riak_cs_lfs_utils.erl +++ b/apps/riak_cs/src/riak_cs_lfs_utils.erl @@ -119,9 +119,9 @@ initial_blocks(ContentLength, SafeBlockSize, UUID) -> range_blocks(Start, End, SafeBlockSize, UUID) -> SkipInitial = Start rem SafeBlockSize, KeepFinal = (End rem SafeBlockSize) + 1, - logger:debug("InitialBlock: ~p, FinalBlock: ~p~n", - [Start div SafeBlockSize, End div SafeBlockSize]), - logger:debug("SkipInitial: ~p, KeepFinal: ~p~n", [SkipInitial, KeepFinal]), + _ = lager:debug("InitialBlock: ~p, FinalBlock: ~p~n", + [Start div SafeBlockSize, End div SafeBlockSize]), + _ = lager:debug("SkipInitial: ~p, KeepFinal: ~p~n", [SkipInitial, KeepFinal]), {[{UUID, B} || B <- lists:seq(Start div SafeBlockSize, End div SafeBlockSize)], SkipInitial, KeepFinal}. @@ -171,8 +171,8 @@ block_sort_fun(SafeBlockSize) -> block_sequences_for_part_manifests_skip(SafeBlockSize, [PM | Rest], StartOffset, EndOffset) -> - logger:debug("StartOffset: ~p, EndOffset: ~p, PartLength: ~p~n", - [StartOffset, EndOffset, PM?PART_MANIFEST.content_length]), + _ = lager:debug("StartOffset: ~p, EndOffset: ~p, PartLength: ~p~n", + [StartOffset, EndOffset, PM?PART_MANIFEST.content_length]), case PM?PART_MANIFEST.content_length of %% Skipped PartLength when PartLength =< StartOffset -> @@ -195,8 +195,8 @@ block_sequences_for_part_manifests_skip(SafeBlockSize, [PM | Rest], block_sequences_for_part_manifests_keep(SafeBlockSize, SkipInitial, [PM | Rest], EndOffset, ListOfBlocks) -> - logger:debug("EndOffset: EndOffset: ~p, PartLength: ~p~n", - [EndOffset, PM?PART_MANIFEST.content_length]), + _ = lager:debug("EndOffset: EndOffset: ~p, PartLength: ~p~n", + [EndOffset, PM?PART_MANIFEST.content_length]), case PM?PART_MANIFEST.content_length of %% More blocks needed PartLength when PartLength =< EndOffset -> diff --git a/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl index 71a6ea41a..4f6425013 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl @@ -72,11 +72,11 @@ start_link() -> -spec lookup(binary()) -> cache_lookup_result(). lookup(Key) -> try - logger:debug("Reading info for ~p from cache", [Key]), + _ = lager:debug("Reading info for ~p from cache", [Key]), format_lookup_result(ets:lookup(default_ets_table(), Key)) catch _:Reason -> - logger:warning("List objects cache lookup failed. Reason: ~p", [Reason]), + _ = lager:warning("List objects cache lookup failed. Reason: ~p", [Reason]), false end. @@ -100,7 +100,7 @@ write(Key, Value) -> unsafe_write(Key, Value) catch _:Reason -> - logger:warning("List objects cache write failed. Reason: ~p", [Reason]), + _ = lager:warning("List objects cache write failed. Reason: ~p", [Reason]), ok end. @@ -136,7 +136,7 @@ handle_call({can_write, {CacheKey, MonitorPid, NumKeys}}, end, {reply, Bool, NewState}; handle_call(Msg, _From, State) -> - logger:debug("got unknown message: ~p", [Msg]), + _ = lager:debug("got unknown message: ~p", [Msg]), {reply, ok, State}. handle_cast(_Msg, State) -> @@ -227,7 +227,7 @@ num_keys_to_bytes(NumKeys) -> unsafe_write(Key, Value) -> TS = riak_cs_utils:second_resolution_timestamp(os:timestamp()), - logger:debug("Writing entry for ~p to LO Cache", [Key]), + _ = lager:debug("Writing entry for ~p to LO Cache", [Key]), ets:insert(default_ets_table(), {Key, Value, TS}), ok. diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl index 3776a4f0d..a47a07fd9 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl @@ -229,7 +229,7 @@ handle_sync_event(get_internal_state, _From, StateName, State) -> Reply = {StateName, State}, {reply, Reply, StateName, State}; handle_sync_event(Event, _From, StateName, State) -> - logger:debug("got unknown event ~p in state ~p", [Event, StateName]), + _ = lager:debug("got unknown event ~p in state ~p", [Event, StateName]), Reply = ok, {reply, Reply, StateName, State}. @@ -276,10 +276,10 @@ maybe_write_to_cache(#state{cache_key=CacheKey, CallerPid, ListOfListOfKeysLength) of true -> - logger:debug("writing to the cache"), + _ = lager:debug("writing to the cache"), riak_cs_list_objects_ets_cache:write(CacheKey, ListofListofKeys); false -> - logger:debug("not writing to the cache"), + _ = lager:debug("not writing to the cache"), ok end. @@ -289,12 +289,12 @@ maybe_write_to_cache(#state{cache_key=CacheKey, -spec fetch_key_list(riak_client(), list_object_request(), state(), cache_lookup_result()) -> fsm_state_return(). fetch_key_list(_, _, State, {true, Value}) -> - logger:debug("Using cached key list"), + _ = lager:debug("Using cached key list"), NewState = prepare_state_for_first_mapred(Value, State#state{key_buffer=Value}), maybe_map_reduce(NewState); fetch_key_list(RcPid, Request, State, false) -> - logger:debug("Requesting fresh key list"), + _ = lager:debug("Requesting fresh key list"), handle_streaming_list_keys_call( make_list_keys_request(RcPid, Request), State). @@ -669,8 +669,8 @@ update_state_with_mr_end_profiling(State=#state{req_profiles=Profiling}) -> State#state{req_profiles=Profiling2}. print_profiling(Profiling) -> - logger:debug(format_list_keys_profile(Profiling)), - logger:debug(format_map_reduce_profile(Profiling)). + _ = lager:debug(format_list_keys_profile(Profiling)), + _ = lager:debug(format_map_reduce_profile(Profiling)). format_list_keys_profile(#profiling{list_keys_start_time=undefined, list_keys_num_results=NumResults}) -> diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl index 73ec4b693..79d81be0e 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl @@ -173,7 +173,7 @@ handle_sync_event(get_internal_state, _From, StateName, State) -> Reply = {StateName, State}, {reply, Reply, StateName, State}; handle_sync_event(Event, _From, StateName, State) -> - logger:debug("got unknown event ~p in state ~p", [Event, StateName]), + _ = lager:debug("got unknown event ~p in state ~p", [Event, StateName]), Reply = ok, {reply, Reply, StateName, State}. @@ -183,11 +183,12 @@ handle_sync_event(Event, _From, StateName, State) -> handle_info(Info, waiting_object_list, State) -> waiting_object_list(Info, State); handle_info(Info, StateName, _State) -> - logger:debug("Received unknown info message ~p in state ~p", [Info, StateName]), + _ = lager:debug("Received unknown info message ~p" + "in state ~p", [Info, StateName]), ok. terminate(normal, _StateName, State) -> - logger:debug(format_profiling_from_state(State)); + lager:debug(format_profiling_from_state(State)); terminate(_Reason, _StateName, _State) -> ok. @@ -228,7 +229,7 @@ handle_done(State=#state{object_buffer=ObjectBuffer, common_prefixes=NewPrefixes, reached_end_of_keyspace=ReachedEnd, object_buffer=[]}, - logger:debug("Ranges: ~p", [NewStateData#state.object_list_ranges]), + _ = lager:debug("Ranges: ~p", [NewStateData#state.object_list_ranges]), respond(NewStateData, NewManis, NewPrefixes). -spec reached_end_of_keyspace(non_neg_integer(), diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl index 5893a1f40..72e196624 100644 --- a/apps/riak_cs/src/riak_cs_manifest.erl +++ b/apps/riak_cs/src/riak_cs_manifest.erl @@ -150,6 +150,6 @@ maybe_warn_bloated_manifests(Bucket, Key, Actual, Threshold, Message, Unit) -> case Threshold of disabled -> ok; _ when Actual < Threshold -> ok; - _ -> logger:warning("~s (~p ~s) for bucket=~p key=~p", - [Message, Actual, Unit, Bucket, Key]) + _ -> _ = lager:warning("~s (~p ~s) for bucket=~p key=~p", + [Message, Actual, Unit, Bucket, Key]) end. diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl index 2b7ddb980..c3325317f 100644 --- a/apps/riak_cs/src/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/riak_cs_manifest_fsm.erl @@ -390,7 +390,7 @@ maybe_backpressure_sleep(Siblings, _BackpressureThreshold) -> MeanSleepMS = min(Coefficient * Siblings, MaxSleep), Delta = MeanSleepMS div 2, SleepMS = MeanSleepMS - Delta + rand:uniform(MeanSleepMS + Delta), - logger:debug("maybe_backpressure_sleep: Siblings=~p, SleepMS=~p~n", [Siblings, SleepMS]), + lager:debug("maybe_backpressure_sleep: Siblings=~p, SleepMS=~p~n", [Siblings, SleepMS]), ok = riak_cs_stats:countup([manifest, siblings_bp_sleep]), ok = timer:sleep(SleepMS), true. diff --git a/apps/riak_cs/src/riak_cs_mb_helper.erl b/apps/riak_cs/src/riak_cs_mb_helper.erl index 97f38080d..9d01ad895 100644 --- a/apps/riak_cs/src/riak_cs_mb_helper.erl +++ b/apps/riak_cs/src/riak_cs_mb_helper.erl @@ -84,7 +84,7 @@ get_cluster_id(BagId) -> {ok, Pbc} = riak_cs_utils:riak_connection(PbcPool), try ClusterId = riak_cs_pbc:get_cluster_id(Pbc), - logger:info("Cluster ID for bag ~p : ~p", [BagId, ClusterId]), + lager:info("Cluster ID for bag ~p : ~p", [BagId, ClusterId]), ClusterId after riak_cs_utils:close_riak_connection(PbcPool, Pbc) diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 400a628c9..15cdf2e3e 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -105,9 +105,9 @@ clean_multipart_unused_parts(?MANIFEST{bkey=BKey, props=Props} = Manifest, RcPid UpdManifest = Manifest?MANIFEST{props=[multipart_clean|Props]}, ok = update_manifest_with_confirmation(RcPid, UpdManifest) catch X:Y:ST -> - logger:debug("clean_multipart_unused_parts: " - "bkey ~p: ~p ~p @ ~p\n", - [BKey, X, Y, ST]) + lager:debug("clean_multipart_unused_parts: " + "bkey ~p: ~p ~p @ ~p\n", + [BKey, X, Y, ST]) end, %% Return same value to caller, regardless of ok/catch updated; @@ -685,7 +685,7 @@ comb_parts(MpM, PartETags) -> KeepPartIDs = [PM?PART_MANIFEST.part_id || PM <- KeepPMs], ToDelete = [PM || PM <- Parts, not lists:member(PM?PART_MANIFEST.part_id, KeepPartIDs)], - logger:debug("Part count to be deleted at completion = ~p~n", [length(ToDelete)]), + lager:debug("Part count to be deleted at completion = ~p~n", [length(ToDelete)]), {KeepBytes, riak_cs_utils:md5_final(MD5Context), lists:reverse(KeepPMs), ToDelete}. comb_parts_fold({LastPartNum, LastPartETag} = _K, diff --git a/apps/riak_cs/src/riak_cs_oos_response.erl b/apps/riak_cs/src/riak_cs_oos_response.erl index 0a4f05fe6..9a841136c 100644 --- a/apps/riak_cs/src/riak_cs_oos_response.erl +++ b/apps/riak_cs/src/riak_cs_oos_response.erl @@ -156,7 +156,7 @@ error_message(invalid_range) -> "The requested range is not satisfiable"; error_message(invalid_bucket_name) -> "The specified bucket is not valid."; error_message(not_implemented) -> "A request you provided implies functionality that is not implemented"; error_message(ErrorName) -> - logger:debug("Unknown error: ~p", [ErrorName]), + _ = lager:debug("Unknown error: ~p", [ErrorName]), "Please reduce your request rate.". -spec error_code(atom() | {'riak_connect_failed', term()}) -> string(). @@ -192,7 +192,7 @@ error_code(invalid_bucket_name) -> "InvalidBucketName"; error_code(unresolved_grant_email) -> "UnresolvableGrantByEmailAddress"; error_code(not_implemented) -> "NotImplemented"; error_code(ErrorName) -> - logger:debug("Unknown error: ~p", [ErrorName]), + _ = lager:debug("Unknown error: ~p", [ErrorName]), "ServiceUnavailable". %% These should match: @@ -234,5 +234,5 @@ status_code(invalid_range) -> 416; status_code(invalid_bucket_name) -> 400; status_code(not_implemented) -> 501; status_code(ErrorName) -> - logger:debug("Unknown error: ~p", [ErrorName]), + _ = lager:debug("Unknown error: ~p", [ErrorName]), 503. diff --git a/apps/riak_cs/src/riak_cs_oos_utils.erl b/apps/riak_cs/src/riak_cs_oos_utils.erl index 0631410bc..ef272ec85 100644 --- a/apps/riak_cs/src/riak_cs_oos_utils.erl +++ b/apps/riak_cs/src/riak_cs_oos_utils.erl @@ -83,8 +83,8 @@ handle_user_data_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, _}}) -> %% @TODO Log error undefined; handle_user_data_response({error, Reason}) -> - logger:warning("Error occurred requesting user data from keystone. Reason: ~p", - [Reason]), + _ = lager:warning("Error occurred requesting user data from keystone. Reason: ~p", + [Reason]), undefined. handle_ec2_creds_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, CredsInfo}}, TenantId) @@ -95,8 +95,8 @@ handle_ec2_creds_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, _}}, _) -> %% @TODO Log error {undefined, []}; handle_ec2_creds_response({error, Reason}, _) -> - logger:warning("Error occurred requesting user EC2 credentials from keystone. Reason: ~p", - [Reason]), + _ = lager:warning("Error occurred requesting user EC2 credentials from keystone. Reason: ~p", + [Reason]), {undefined, []}. ec2_creds_for_tenant({error, decode_failed}, _) -> diff --git a/apps/riak_cs/src/riak_cs_pbc.erl b/apps/riak_cs/src/riak_cs_pbc.erl index a72806ae4..218c6c206 100644 --- a/apps/riak_cs/src/riak_cs_pbc.erl +++ b/apps/riak_cs/src/riak_cs_pbc.erl @@ -207,11 +207,13 @@ check_connection_status(Pbc, Where) -> case riakc_pb_socket:is_connected(Pbc) of true -> ok; Other -> - logger:warning("Connection status of ~p at ~p: ~p", [Pbc, Where, Other]) + _ = lager:warning("Connection status of ~p at ~p: ~p", + [Pbc, Where, Other]) end catch Type:Error -> - logger:warning("Connection status of ~p at ~p: ~p", [Pbc, Where, {Type, Error}]) + _ = lager:warning("Connection status of ~p at ~p: ~p", + [Pbc, Where, {Type, Error}]) end. %% @doc Pause for a while so that underlying `riaic_pb_socket' can have @@ -228,7 +230,7 @@ pause_to_reconnect(_Pbc, _Other, _Timeout) -> ok. pause_to_reconnect0(Pbc, Timeout, Start) -> - logger:debug("riak_cs_pbc:pause_to_reconnect0"), + lager:debug("riak_cs_pbc:pause_to_reconnect0"), case riakc_pb_socket:is_connected(Pbc, ?FIRST_RECONNECT_INTERVAL) of true -> ok; {false, _} -> diff --git a/apps/riak_cs/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl index 6c1386453..9fc21c3cf 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm.erl @@ -309,7 +309,7 @@ done(finalize, false, From, State=#state{manifest=Manifest, ok = maybe_update_manifest_with_confirmation(ManiPid, NotActive), gen_fsm:reply(From, {error, invalid_digest}), - logger:debug("Invalid digest in the PUT FSM"), + _ = lager:debug("Invalid digest in the PUT FSM"), {stop, normal, State}; done(finalize, true, From, State=#state{manifest=Manifest, mani_pid=ManiPid, @@ -328,11 +328,12 @@ done(finalize, true, From, State=#state{manifest=Manifest, -spec is_digest_valid(binary(), undefined | string()) -> boolean(). is_digest_valid(D1, undefined) -> %% reported MD5 is not in request header - logger:debug("Calculated = ~p, Reported = undefined~n", [D1]), + _ = lager:debug("Calculated = ~p, Reported = undefined~n", [D1]), true; is_digest_valid(CalculatedMD5, ReportedMD5) -> StringCalculatedMD5 = base64:encode(CalculatedMD5), - logger:debug("Calculated = ~p, Reported = ~p~n", [StringCalculatedMD5, ReportedMD5]), + _ = lager:debug("Calculated = ~p, Reported = ~p~n", + [StringCalculatedMD5, ReportedMD5]), StringCalculatedMD5 =:= list_to_binary(ReportedMD5). %%-------------------------------------------------------------------- @@ -350,7 +351,7 @@ handle_sync_event(current_state, _From, StateName, State) -> handle_sync_event(force_stop, _From, _StateName, State = #state{mani_pid=ManiPid, uuid=UUID}) -> Res = riak_cs_manifest_fsm:gc_specific_manifest(ManiPid, UUID), - logger:debug("Manifest collection on upload failure: ~p", [Res]), + lager:debug("Manifest collection on upload failure: ~p", [Res]), {stop, normal, Res, State}; handle_sync_event(_Event, _From, StateName, State) -> Reply = ok, diff --git a/apps/riak_cs/src/riak_cs_quota.erl b/apps/riak_cs/src/riak_cs_quota.erl index 35a99ef76..cadd6cccd 100644 --- a/apps/riak_cs/src/riak_cs_quota.erl +++ b/apps/riak_cs/src/riak_cs_quota.erl @@ -117,7 +117,7 @@ invoke_all_callbacks(Owner, Access, Ctx0) -> {ok, _, _} = R-> R; {error, Reason} -> - logger:debug("quota check failed at ~p: ~p", [Module, Reason]), + lager:debug("quota check failed at ~p: ~p", [Module, Reason]), {error, Module, Reason, RD, Ctx} end; (_, Other) -> @@ -128,7 +128,7 @@ invoke_all_callbacks(Owner, Access, Ctx0) -> update_all_states(User, LogData) -> Modules = riak_cs_config:quota_modules(), [begin - logger:debug("quota update at ~p: ~p", [Module, User]), + lager:debug("quota update at ~p: ~p", [Module, User]), (catch Module:update(list_to_binary(User), LogData)) end || Module <- Modules]. diff --git a/apps/riak_cs/src/riak_cs_riak_client.erl b/apps/riak_cs/src/riak_cs_riak_client.erl index 5eb798bab..c0c961fb7 100644 --- a/apps/riak_cs/src/riak_cs_riak_client.erl +++ b/apps/riak_cs/src/riak_cs_riak_client.erl @@ -334,7 +334,7 @@ get_user_with_pbc(MasterPbc, Key, false) -> {error, <<"{pr_val_unsatisfied,", _/binary>>} -> weak_get_user_with_pbc(MasterPbc, Key); {error, Reason} -> - logger:warning("Fetching user record with strong option failed: ~p", [Reason]), + _ = lager:warning("Fetching user record with strong option failed: ~p", [Reason]), Timeout = riak_cs_config:get_user_timeout(), _ = riak_cs_pbc:pause_to_reconnect(MasterPbc, Reason, Timeout), weak_get_user_with_pbc(MasterPbc, Key) diff --git a/apps/riak_cs/src/riak_cs_s3_auth.erl b/apps/riak_cs/src/riak_cs_s3_auth.erl index a8a97a1a2..073c8d7f4 100644 --- a/apps/riak_cs/src/riak_cs_s3_auth.erl +++ b/apps/riak_cs/src/riak_cs_s3_auth.erl @@ -139,7 +139,7 @@ parse_auth_v4_header(String) -> parse_auth_v4_header([], UserId, Acc) -> {UserId, {v4, lists:reverse(Acc)}}; parse_auth_v4_header([KV | KVs], UserId, Acc) -> - logger:debug("Auth header ~p~n", [KV]), + lager:debug("Auth header ~p~n", [KV]), case string:tokens(KV, "=") of [Key, Value] -> case Key of @@ -188,7 +188,7 @@ calculate_signature_v2(KeyData, RD) -> Date, AmazonHeaders, Resource], - logger:debug("STS: ~p", [STS]), + _ = lager:debug("STS: ~p", [STS]), base64:encode_to_string(riak_cs_utils:sha_mac(KeyData, STS)). @@ -204,14 +204,14 @@ authenticate_v4(?RCS_USER{key_secret = SecretAccessKey} = _User, AuthAttrs, RD) authenticate_v4(SecretAccessKey, AuthAttrs, Method, Path, Qs, AllHeaders) -> CanonicalRequest = canonical_request_v4(AuthAttrs, Method, Path, Qs, AllHeaders), - logger:debug("CanonicalRequest(v4):~n~s~nEND-OF-CANONICAL-REQUEST", [CanonicalRequest]), + _ = lager:debug("CanonicalRequest(v4):~n~s~nEND-OF-CANONICAL-REQUEST", [CanonicalRequest]), {StringToSign, Scope} = string_to_sign_v4(AuthAttrs, AllHeaders, CanonicalRequest), - logger:debug("StringToSign(v4):~n~s~nEND-OF-STRING-TO-SIGN", [StringToSign]), + _ = lager:debug("StringToSign(v4):~n~s~nEND-OF-STRING-TO-SIGN", [StringToSign]), CalculatedSignature = calculate_signature_v4(SecretAccessKey, Scope, StringToSign), - logger:debug("CalculatedSignature(v4): ~s", [CalculatedSignature]), + _ = lager:debug("CalculatedSignature(v4): ~s", [CalculatedSignature]), {"Signature", PresentedSignature} = lists:keyfind("Signature", 1, AuthAttrs), - logger:debug("PresentedSignature(v4) : ~s", [PresentedSignature]), + _ = lager:debug("PresentedSignature(v4) : ~s", [PresentedSignature]), case CalculatedSignature of PresentedSignature -> ok; _ -> {error, {unmatched_signature, PresentedSignature, CalculatedSignature}} diff --git a/apps/riak_cs/src/riak_cs_s3_policy.erl b/apps/riak_cs/src/riak_cs_s3_policy.erl index 4e4d60de0..a33b49b5e 100644 --- a/apps/riak_cs/src/riak_cs_s3_policy.erl +++ b/apps/riak_cs/src/riak_cs_s3_policy.erl @@ -129,7 +129,7 @@ check_version(?POLICY{version = ?AMZ_DEFAULT_VERSION}) -> check_version(?POLICY{version = ?AMZ_POLICY_OLD_VERSION}) -> true; check_version(?POLICY{version = Version}) -> - logger:debug("unknown version: ~p", [Version]), + _ = lager:debug("unknown version: ~p", [Version]), false. % @doc confirm if forbidden action included in policy @@ -233,7 +233,7 @@ policy_from_json(JSON) -> E; {'EXIT', {{case_clause, B}, _}} when is_binary(B) -> %% mochiweb failed to parse the JSON - logger:debug("~p", [B]), + _ = lager:debug("~p", [B]), {error, malformed_policy_json} end. @@ -258,10 +258,10 @@ supported_bucket_action() -> ?SUPPORTED_BUCKET_ACTION. %% to make policy json parser safer by using erlang:binary_to_existing_atom/2. -spec log_supported_actions() -> ok. log_supported_actions()-> - logger:info("supported object actions: ~p", - [lists:map(fun atom_to_list/1, supported_object_action())]), - logger:info("supported bucket actions: ~p", - [lists:map(fun atom_to_list/1, supported_bucket_action())]), + _ = lager:info("supported object actions: ~p", + [lists:map(fun atom_to_list/1, supported_object_action())]), + _ = lager:info("supported bucket actions: ~p", + [lists:map(fun atom_to_list/1, supported_bucket_action())]), ok. %% @doc Fetch the policy for a bucket @@ -279,8 +279,9 @@ fetch_bucket_policy(Bucket, RcPid) -> Contents = riakc_obj:get_contents(Obj), bucket_policy_from_contents(Bucket, Contents); {error, Reason} -> - logger:debug("Failed to fetch policy. Bucket ~p does not exist. Reason: ~p", - [Bucket, Reason]), + _ = lager:debug("Failed to fetch policy. Bucket ~p " + " does not exist. Reason: ~p", + [Bucket, Reason]), {error, notfound} end. diff --git a/apps/riak_cs/src/riak_cs_s3_response.erl b/apps/riak_cs/src/riak_cs_s3_response.erl index 4c27fca99..8ca63ebb6 100644 --- a/apps/riak_cs/src/riak_cs_s3_response.erl +++ b/apps/riak_cs/src/riak_cs_s3_response.erl @@ -114,7 +114,7 @@ error_message(remaining_multipart_upload) -> "Concurrent multipart upload initia error_message(disconnected) -> "Please contact administrator."; error_message(not_implemented) -> "A request you provided implies functionality that is not implemented"; error_message(ErrorName) -> - logger:debug("Unknown error: ~p", [ErrorName]), + _ = lager:debug("Unknown error: ~p", [ErrorName]), "Please reduce your request rate.". -spec error_code(error_reason()) -> string(). @@ -165,7 +165,7 @@ error_code(remaining_multipart_upload) -> "MultipartUploadRemaining"; error_code(disconnected) -> "ServiceUnavailable"; error_code(not_implemented) -> "NotImplemented"; error_code(ErrorName) -> - logger:debug("Unknown error: ~p", [ErrorName]), + _ = lager:debug("Unknown error: ~p", [ErrorName]), "ServiceUnavailable". %% These should match: @@ -223,7 +223,7 @@ status_code(remaining_multipart_upload) -> 409; status_code(disconnected) -> 500; status_code(not_implemented) -> 501; status_code(ErrorName) -> - logger:debug("Unknown error: ~p", [ErrorName]), + _ = lager:debug("Unknown error: ~p", [ErrorName]), 503. -spec respond(term(), #wm_reqdata{}, #context{}) -> @@ -406,7 +406,7 @@ process_xml_error([]) -> process_xml_error([#xmlText{value=" "}|Rest]) -> process_xml_error(Rest); process_xml_error([HeadElement | RestElements]) -> - logger:debug("Element name: ~p", [HeadElement#xmlElement.name]), + _ = lager:debug("Element name: ~p", [HeadElement#xmlElement.name]), ElementName = HeadElement#xmlElement.name, case ElementName of 'Code' -> diff --git a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl index 65eee7ea4..9110f8f4e 100644 --- a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl +++ b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl @@ -113,12 +113,12 @@ refresher() -> end, receive reset -> - logger:debug("reset received: ~p", [?MODULE]), + lager:debug("reset received: ~p", [?MODULE]), refresher(); _ -> ets:delete(?MODULE) after IntervalSec * 1000 -> - logger:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), + lager:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), ets:delete_all_objects(?MODULE), refresher() end. @@ -127,7 +127,7 @@ refresher() -> allow(Owner, #access_v1{req = RD} = _Access, Ctx) -> OwnerKey = list_to_binary(riak_cs_user:key_id(Owner)), - logger:debug("access => ~p", [OwnerKey]), + lager:debug("access => ~p", [OwnerKey]), UserState = case ets:lookup(?MODULE, OwnerKey) of [UserState0] -> UserState0; [] -> new_user_state(OwnerKey) @@ -143,20 +143,20 @@ allow(Owner, #access_v1{req = RD} = _Access, Ctx) -> ok -> {ok, RD, Ctx}; {error, {_, Current, Threshold}} = Error -> - logger:warning("User ~p has exceeded access limit: usage, limit = ~p, ~p (/sec)", - [OwnerKey, Current, Threshold]), + lager:warning("User ~p has exceeded access limit: usage, limit = ~p, ~p (/sec)", + [OwnerKey, Current, Threshold]), Error end; {error, {_, Current, Threshold}} = Error2 -> - logger:warning("User ~p has exceeded bandwidth limit: usage, limit = ~p, ~p (bytes/sec)", - [OwnerKey, Current, Threshold]), + lager:warning("User ~p has exceeded bandwidth limit: usage, limit = ~p, ~p (bytes/sec)", + [OwnerKey, Current, Threshold]), Error2 end. -spec new_user_state(binary()) -> #user_state{}. new_user_state(User) -> UserState = #user_state{user = User}, - logger:debug("quota init: ~p => ~p", [User, UserState]), + lager:debug("quota init: ~p => ~p", [User, UserState]), %% Here's a race condition where if so many concurrent access %% come, each access can yield a new fresh state and then %% receives not access limitation. @@ -210,16 +210,16 @@ update(User, [_, _] -> ok; Error0 -> - logger:warning("something wrong? ~p", [Error0]), + lager:warning("something wrong? ~p", [Error0]), {error, Error0} end catch error:badarg -> %% record not just found here - logger:debug("Cache of ~p (maybe not found)", [User]), + lager:debug("Cache of ~p (maybe not found)", [User]), ok; Type:Error -> %% TODO: show out stacktrace heah - logger:warning("something wrong? ~p", [Error]), + _ = lager:warning("something wrong? ~p", [Error]), {error, {Type, Error}} end. diff --git a/apps/riak_cs/src/riak_cs_simple_quota.erl b/apps/riak_cs/src/riak_cs_simple_quota.erl index c71c0c1a9..49a032516 100644 --- a/apps/riak_cs/src/riak_cs_simple_quota.erl +++ b/apps/riak_cs/src/riak_cs_simple_quota.erl @@ -101,12 +101,12 @@ refresher() -> end, receive reset -> - logger:debug("reset received: ~p", [?MODULE]), + lager:debug("reset received: ~p", [?MODULE]), refresher(); _ -> ets:delete(?MODULE) after IntervalSec * 1000 -> - logger:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), + lager:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), ets:delete_all_objects(?MODULE), refresher() end. @@ -118,7 +118,7 @@ refresher() -> {error, {disk_quota, non_neg_integer(), non_neg_integer()}}. allow(Owner, #access_v1{req = RD, method = 'PUT'} = _Access, Ctx) -> OwnerKey = iolist_to_binary(riak_cs_user:key_id(Owner)), - logger:debug("access => ~p", [OwnerKey]), + lager:debug("access => ~p", [OwnerKey]), {_, Usage} = case ets:lookup(?MODULE, OwnerKey) of [{OwnerKey, _Usage} = UserState0] -> UserState0; @@ -133,8 +133,8 @@ allow(Owner, #access_v1{req = RD, method = 'PUT'} = _Access, Ctx) -> Quota < 0 -> {ok, RD, Ctx}; Usage < Quota -> {ok, RD, Ctx}; true -> - logger:warning("User ~s has exceeded it's quota: usage, quota = ~p, ~p (bytes)", - [OwnerKey, Usage, Quota]), + lager:warning("User ~s has exceeded it's quota: usage, quota = ~p, ~p (bytes)", + [OwnerKey, Usage, Quota]), {error, {disk_quota, Usage, Quota}} end; allow(_Owner, #access_v1{req = RD} = _Access, Ctx) -> @@ -148,7 +148,7 @@ maybe_usage(User0, _Ctx = #context{riak_client=RiakClient}) -> User = binary_to_list(User0), Usage = case get_latest_usage(RiakClient, User) of {error, notfound} -> - logger:warning("No storage stats data was found. Starting as no usage."), + lager:warning("No storage stats data was found. Starting as no usage."), 0; {ok, Usages} -> sum_all_buckets(lists:last(Usages)) @@ -185,7 +185,7 @@ update(User, ets:update_counter(?MODULE, User, Bytes) catch Type:Error -> %% TODO: show out stacktrace heah - logger:warning("something wrong? ~p", [Error]), + lager:warning("something wrong? ~p", [Error]), {error, {Type, Error}} end; update(_, _) -> diff --git a/apps/riak_cs/src/riak_cs_stanchion_console.erl b/apps/riak_cs/src/riak_cs_stanchion_console.erl index 1fd49a065..b9fc60940 100644 --- a/apps/riak_cs/src/riak_cs_stanchion_console.erl +++ b/apps/riak_cs/src/riak_cs_stanchion_console.erl @@ -60,7 +60,7 @@ switch([Host, Port]) -> ok = application:set_env(riak_cs, stanchion_host, {Host, NewPort}), Msg2 = io_lib:format("Succesfully switched stanchion to ~s:~s: This change is only effective until restart.", [Host, Port]), - logger:info(Msg2), + _ = lager:info(Msg2), io:format("~s~nTo make permanent change, be sure to edit configuration file.~n", [Msg2]) end, Msg); switch(_) -> diff --git a/apps/riak_cs/src/riak_cs_stats.erl b/apps/riak_cs/src/riak_cs_stats.erl index cdee01e0a..7d6e56484 100644 --- a/apps/riak_cs/src/riak_cs_stats.erl +++ b/apps/riak_cs/src/riak_cs_stats.erl @@ -231,7 +231,7 @@ safe_update(ExometerKey, Arg) -> case exometer:update(ExometerKey, Arg) of ok -> ok; {error, Reason} -> - logger:warning("Stats update for key ~p error: ~p", [ExometerKey, Reason]), + lager:warning("Stats update for key ~p error: ~p", [ExometerKey, Reason]), ok end. @@ -331,10 +331,10 @@ metric_to_atom(Key, Suffix) -> -include_lib("eunit/include/eunit.hrl"). stats_test_() -> - Apps = [setup, compiler, syntax_tools, exometer_core], + Apps = [setup, compiler, syntax_tools, exometer_core, lager], {setup, fun() -> - logger:update_primary_config(#{level => none}), + lager:update_primary_config(#{level => none}), [application:ensure_all_started(App) || App <- Apps], ok = init() end, diff --git a/apps/riak_cs/src/riak_cs_storage.erl b/apps/riak_cs/src/riak_cs_storage.erl index d9b68dc03..6e66f41f7 100644 --- a/apps/riak_cs/src/riak_cs_storage.erl +++ b/apps/riak_cs/src/riak_cs_storage.erl @@ -78,9 +78,9 @@ maybe_sum_bucket(User, ?RCS_BUCKET{name=Name} = _Bucket, Detailed, LeewayEdge) case sum_bucket(Name, Detailed, LeewayEdge) of {struct, _} = BucketUsage -> {Name, BucketUsage}; {error, _} = E -> - logger:error("failed to calculate usage of " - "bucket '~s' of user '~s'. Reason: ~p", - [Name, User, E]), + _ = lager:error("failed to calculate usage of " + "bucket '~s' of user '~s'. Reason: ~p", + [Name, User, E]), {Name, iolist_to_binary(io_lib:format("~p", [E]))} end. diff --git a/apps/riak_cs/src/riak_cs_storage_d.erl b/apps/riak_cs/src/riak_cs_storage_d.erl index e68986b7a..a0914f5e3 100644 --- a/apps/riak_cs/src/riak_cs_storage_d.erl +++ b/apps/riak_cs/src/riak_cs_storage_d.erl @@ -149,8 +149,8 @@ idle(_, State) -> %% from the outside world (like `status'). calculating(continue, #state{batch=[], current=Current}=State) -> %% finished with this batch - logger:info("Finished storage calculation in ~b seconds.", - [elapsed(State#state.batch_start)]), + _ = lager:info("Finished storage calculation in ~b seconds.", + [elapsed(State#state.batch_start)]), riak_cs_riak_client:stop(State#state.riak_client), NewState = State#state{riak_client=undefined, last=Current, @@ -200,12 +200,12 @@ calculating({manual_batch, _Options}, _From, State) -> %% this is the manual user request to begin a batch {reply, {error, already_calculating}, calculating, State}; calculating(pause_batch, _From, State) -> - logger:info("Pausing storage calcluation"), + _ = lager:info("Pausing storage calcluation"), {reply, ok, paused, State}; calculating(cancel_batch, _From, #state{current=Current}=State) -> %% finished with this batch - logger:info("Canceled storage calculation after ~b seconds.", - [elapsed(State#state.batch_start)]), + _ = lager:info("Canceled storage calculation after ~b seconds.", + [elapsed(State#state.batch_start)]), riak_cs_riak_client:stop(State#state.riak_client), NewState = State#state{riak_client=undefined, last=Current, @@ -219,7 +219,7 @@ paused(status, From, State) -> {reply, {ok, {_, Status}}, _, State} = calculating(status, From, State), {reply, {ok, {paused, Status}}, paused, State}; paused(resume_batch, _From, State) -> - logger:info("Resuming storage calculation"), + _ = lager:info("Resuming storage calculation"), gen_fsm:send_event(?SERVER, continue), {reply, ok, calculating, State}; paused(cancel_batch, From, State) -> @@ -243,9 +243,9 @@ handle_info({start_batch, Next}, idle, #state{next=Next}=State) -> {next_state, calculating, NewState}; handle_info({start_batch, Next}, InBatch, #state{next=Next, current=Current}=State) -> - logger:error("Unable to start storage calculation for ~p" - " because ~p is still working. Skipping forward...", - [Next, Current]), + _ = lager:error("Unable to start storage calculation for ~p" + " because ~p is still working. Skipping forward...", + [Next, Current]), NewState = schedule_next(State, Next), {next_state, InBatch, NewState}; handle_info(_Info, StateName, State) -> @@ -280,8 +280,8 @@ read_storage_schedule() -> read_storage_schedule1() -> case application:get_env(riak_cs, storage_schedule) of undefined -> - logger:warning("No storage schedule defined." - " Calculation must be triggered manually."), + _ = lager:warning("No storage schedule defined." + " Calculation must be triggered manually."), []; {ok, Sched} -> case catch parse_time(Sched) of @@ -293,13 +293,13 @@ read_storage_schedule1() -> _ = case [ X || {X,{'EXIT',_}} <- Times ] of [] -> ok; Bad -> - logger:error( + _ = lager:error( "Ignoring bad storage schedule elements ~p", [Bad]) end, case [ Parsed || {_, {ok, Parsed}} <- Times] of [] -> - logger:warning( + _ = lager:warning( "No storage schedule defined." " Calculation must be triggered manually."), []; @@ -307,7 +307,7 @@ read_storage_schedule1() -> Good end; _ -> - logger:error( + _ = lager:error( "Invalid storage schedule defined." " Calculation must be triggered manually."), [] @@ -340,12 +340,12 @@ start_batch(Options, Time, State) -> LeewayEdge = {LeewayEdgeTs div 1000000, LeewayEdgeTs rem 1000000, 0}, _ = case Detailed of true -> - logger:info("Starting storage calculation: " - "recalc=~p, detailed=~p, leeway edge=~p", - [Recalc, Detailed, - calendar:now_to_universal_time(LeewayEdge)]); + lager:info("Starting storage calculation: " + "recalc=~p, detailed=~p, leeway edge=~p", + [Recalc, Detailed, + calendar:now_to_universal_time(LeewayEdge)]); _ -> - logger:info("Starting storage calculation: recalc=~p", [Recalc]) + lager:info("Starting storage calculation: recalc=~p", [Recalc]) end, %% TODO: probably want to do this fetch streaming, to avoid %% accidental memory pressure at other points @@ -361,8 +361,9 @@ start_batch(Options, Time, State) -> case riak_cs_user:fetch_user_keys(RcPid) of {ok, UserKeys} -> UserKeys; {error, Error} -> - logger:error("Storage calculator was unable to fetch list of users (~p)", - [Error]), + _ = lager:error("Storage calculator was unable" + " to fetch list of users (~p)", + [Error]), [] end, @@ -391,8 +392,8 @@ calculate_next_user(#state{riak_client=RcPid, End = calendar:universal_time(), store_user(State, User, BucketList, Start, End); {error, Error} -> - logger:error("Error computing storage for user ~s (~p)", - [User, Error]) + _ = lager:error("Error computing storage for user ~s (~p)", + [User, Error]) end, State#state{batch=Rest, batch_count=1+State#state.batch_count}; false -> @@ -423,8 +424,8 @@ store_user(#state{riak_client=RcPid}, User, BucketList, Start, End) -> case riak_cs_pbc:put(MasterPbc, Obj, Timeout, [riakc, put_storage]) of ok -> ok; {error, Error} -> - logger:error("Error storing storage for user ~s (~p)", - [User, Error]) + _ = lager:error("Error storing storage for user ~s (~p)", + [User, Error]) end. %% @doc How many seconds have passed from `Time' to now. @@ -450,13 +451,14 @@ schedule_next(#state{schedule=Schedule}=State, Last) -> NextTime = next_target_time(Last, Schedule), case elapsed(calendar:universal_time(), NextTime) of D when D > 0 -> - logger:info("Scheduling next storage calculation for ~p", [NextTime]), + _ = lager:info("Scheduling next storage calculation for ~p", + [NextTime]), erlang:send_after(D*1000, self(), {start_batch, NextTime}), State#state{next=NextTime}; _ -> - logger:error("Missed start time for storage calculation at ~p," - " skipping to next scheduled time...", - [NextTime]), + _ = lager:error("Missed start time for storage calculation at ~p," + " skipping to next scheduled time...", + [NextTime]), %% just skip everything until the next scheduled time from now schedule_next(State, calendar:universal_time()) end. diff --git a/apps/riak_cs/src/riak_cs_storage_mr.erl b/apps/riak_cs/src/riak_cs_storage_mr.erl index f4156c7c0..8fc48a75e 100644 --- a/apps/riak_cs/src/riak_cs_storage_mr.erl +++ b/apps/riak_cs/src/riak_cs_storage_mr.erl @@ -162,7 +162,7 @@ objs_bytes_and_blocks_non_mp(?MANIFEST{state=State, content_length=CL, block_siz BlockCount = riak_cs_lfs_utils:block_count(CL, BS), {non_mp, State, {1, CL, BlockCount}}; objs_bytes_and_blocks_non_mp(?MANIFEST{state=State} = _M) -> - logger:debug("Strange manifest: ~p~n", [_M]), + lager:debug("Strange manifest: ~p~n", [_M]), %% The branch above is for content_length is properly set. This %% is true for non-MP v2 auth case but not always true for v4 of %% streaming sha256 check of writing. To avoid error, ignore @@ -263,8 +263,9 @@ count_multipart_parts({_UUID, ?MANIFEST{props=Props, state=writing} = M}, Acc; Other -> %% strange thing happened - logger:warning("strange writing multipart manifest detected at ~p: ~p", - [M?MANIFEST.bkey, Other]), + _ = lager:log(warning, self(), + "strange writing multipart manifest detected at ~p: ~p", + [M?MANIFEST.bkey, Other]), Acc end; count_multipart_parts(_, Acc) -> diff --git a/apps/riak_cs/src/riak_cs_user.erl b/apps/riak_cs/src/riak_cs_user.erl index d8e6b6a83..1745a017f 100644 --- a/apps/riak_cs/src/riak_cs_user.erl +++ b/apps/riak_cs/src/riak_cs_user.erl @@ -163,7 +163,7 @@ from_riakc_obj(Obj, KeepDeletedBuckets) -> User = update_user_record(hd(Values)), KeyId = User?RCS_USER.key_id, - logger:warning("User object of '~s' has ~p siblings", [KeyId, N]), + _ = lager:warning("User object of '~s' has ~p siblings", [KeyId, N]), Buckets = riak_cs_bucket:resolve_buckets(Values, [], KeepDeletedBuckets), User?RCS_USER{buckets=Buckets} @@ -195,9 +195,9 @@ get_user_index(Index, Value, RcPid) -> {ok, ?INDEX_RESULTS{keys=[Key | _]}} -> {ok, binary_to_list(Key)}; {error, Reason}=Error -> - logger:warning("Error occurred trying to query ~p in user" - " index ~p. Reason: ~p", - [Value, Index, Reason]), + _ = lager:warning("Error occurred trying to query ~p in user" + "index ~p. Reason: ~p", + [Value, Index, Reason]), Error end. diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index f96cc8b3f..e2f0c8bb7 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -197,12 +197,12 @@ maybe_process_resolved(Object, ResolvedManifestsHandler, ErrorReturn) -> Resolved = riak_cs_manifest_resolution:resolve(Upgraded), ResolvedManifestsHandler(Resolved) catch Type:Reason:StackTrace -> - logger:error("Riak CS object mapreduce failed for ~p:~p with reason ~p:~p at ~p", - [riak_object:bucket(Object), - riak_object:key(Object), - Type, - Reason, - StackTrace]), + lager:error("Riak CS object mapreduce failed for ~p:~p with reason ~p:~p at ~p", + [riak_object:bucket(Object), + riak_object:key(Object), + Type, + Reason, + StackTrace]), ErrorReturn end. diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl index 0a8e37fc8..2594b86aa 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl @@ -78,7 +78,7 @@ handle_with_bucket_obj({error, notfound}, RD, handle_with_bucket_obj({error, _} = Error, RD, #context{response_module=ResponseMod} = Ctx) -> - logger:debug("bucket error: ~p", [Error]), + _ = lager:debug("bucket error: ~p", [Error]), ResponseMod:api_error(Error, RD, Ctx); handle_with_bucket_obj({ok, BucketObj}, @@ -94,7 +94,7 @@ handle_with_bucket_obj({ok, BucketObj}, %% Delete Multiple Objects accepts a request to delete up to 1000 Objects. ResponseMod:api_error(malformed_xml, RD, Ctx); {ok, BinKeys} -> - logger:debug("deleting keys at ~p: ~p", [Bucket, BinKeys]), + lager:debug("deleting keys at ~p: ~p", [Bucket, BinKeys]), Policy = riak_cs_wm_utils:translate_bucket_policy(PolicyMod, BucketObj), CanonicalId = riak_cs_wm_utils:extract_canonical_id(User), diff --git a/apps/riak_cs/src/riak_cs_wm_common.erl b/apps/riak_cs/src/riak_cs_wm_common.erl index 1c3627535..018bd9875 100644 --- a/apps/riak_cs/src/riak_cs_wm_common.erl +++ b/apps/riak_cs/src/riak_cs_wm_common.erl @@ -221,8 +221,8 @@ maybe_create_user({error, disconnected}=Error, _, _, _, _, RcPid) -> riak_cs_pbc:check_connection_status(MasterPid, maybe_create_user), Error; maybe_create_user({error, Reason}=Error, _, Api, _, _, _) -> - logger:error("Retrieval of user record for ~p failed. Reason: ~p", - [Api, Reason]), + _ = lager:error("Retrieval of user record for ~p failed. Reason: ~p", + [Api, Reason]), Error. %% @doc Get the list of methods a resource supports. @@ -478,31 +478,31 @@ post_authentication({ok, User, UserObj}, RD, Ctx, Authorize, _) -> user_object=UserObj}); post_authentication({error, no_user_key}, RD, Ctx, Authorize, true) -> %% no keyid was given, proceed anonymously - logger:debug("No user key"), + _ = lager:debug("No user key"), Authorize(RD, Ctx); post_authentication({error, no_user_key}, RD, Ctx, _, false) -> %% no keyid was given, deny access - logger:debug("No user key, deny"), + _ = lager:debug("No user key, deny"), riak_cs_wm_utils:deny_access(RD, Ctx); post_authentication({error, bad_auth}, RD, Ctx, _, _) -> %% given keyid was found, but signature didn't match - logger:debug("bad_auth"), + _ = lager:debug("bad_auth"), riak_cs_wm_utils:deny_access(RD, Ctx); post_authentication({error, reqtime_tooskewed} = Error, RD, #context{response_module = ResponseMod} = Ctx, _, _) -> - logger:debug("reqtime_tooskewed"), + _ = lager:debug("reqtime_tooskewed"), ResponseMod:api_error(Error, RD, Ctx); post_authentication({error, {auth_not_supported, AuthType}}, RD, #context{response_module=ResponseMod} = Ctx, _, _) -> - logger:debug("auth_not_supported: ~s", [AuthType]), + _ = lager:debug("auth_not_supported: ~s", [AuthType]), ResponseMod:api_error({auth_not_supported, AuthType}, RD, Ctx); post_authentication({error, notfound}, RD, Ctx, _, _) -> - logger:debug("User does not exist"), + _ = lager:debug("User does not exist"), riak_cs_wm_utils:deny_invalid_key(RD, Ctx); post_authentication({error, Reason}, RD, #context{response_module=ResponseMod} = Ctx, _, _) -> %% Lookup failed, basically due to disconnected stuff - logger:debug("Authentication error: ~p", [Reason]), + _ = lager:debug("Authentication error: ~p", [Reason]), ResponseMod:api_error(Reason, RD, Ctx). update_stats_inflow(_RD, undefined = _StatsPrefix) -> diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index 2601ebb7b..c5fcf1896 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -245,7 +245,7 @@ delete_resource(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> %% @private handle_delete_object({error, Error}, UserName, BFile_str, RD, Ctx) -> - logger:error("delete object failed with reason: ~p", [Error]), + _ = lager:error("delete object failed with reason: ~p", [Error]), riak_cs_dtrace:dt_object_return(?MODULE, <<"object_delete">>, [0], [UserName, BFile_str]), {false, RD, Ctx}; handle_delete_object({ok, _UUIDsMarkedforDelete}, UserName, BFile_str, RD, Ctx) -> @@ -352,7 +352,7 @@ handle_normal_put(RD, Ctx) -> %% einval} or disconnected stuff, any errors prevents this %% manifests from being uploaded anymore Res = riak_cs_put_fsm:force_stop(Pid), - logger:debug("PUT FSM force_stop: ~p Reason: ~p", [Res, {Type, Error}]), + _ = lager:debug("PUT FSM force_stop: ~p Reason: ~p", [Res, {Type, Error}]), error({Type, Error}) end. @@ -387,8 +387,8 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey) -> {false, _, _} -> %% start copying - logger:debug("copying! > ~s ~s => ~s ~s via ~p", - [SrcBucket, SrcKey, Bucket, Key, ReadRcPid]), + _ = lager:debug("copying! > ~s ~s => ~s ~s via ~p", + [SrcBucket, SrcKey, Bucket, Key, ReadRcPid]), {ContentType, Metadata} = riak_cs_copy_object:new_metadata(SrcManifest, RD), @@ -416,7 +416,7 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey) -> %% in different return value ResponseMod:api_error(copy_source_access_denied, RD, Ctx); {Result, _, _} = Error -> - logger:debug("~p on ~s ~s", [Result, SrcBucket, SrcKey]), + _ = lager:debug("~p on ~s ~s", [Result, SrcBucket, SrcKey]), Error end; diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl index 2277b05f3..f99b729ac 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl @@ -128,7 +128,7 @@ process_post(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> RcPid) of {ok, NewManifest} -> ETag = riak_cs_manifest:etag(NewManifest), - logger:debug("checksum of all parts checksum: ~p", [ETag]), + _ = lager:debug("checksum of all parts checksum: ~p", [ETag]), XmlDoc = {'CompleteMultipartUploadResult', [{'xmlns', "http://s3.amazonaws.com/doc/2006-03-01/"}], [ @@ -419,8 +419,8 @@ maybe_copy_part(PutPid, case riak_cs_copy_object:test_condition_and_permission(ReadRcPid, SrcManifest, RD, Ctx) of {false, _, _} -> - logger:debug("Start copying! > ~s ~s => ~s ~s via ~p", - [SrcBucket, SrcKey, DstBucket, DstKey, ReadRcPid]), + _ = lager:debug("Start copying! > ~s ~s => ~s ~s via ~p", + [SrcBucket, SrcKey, DstBucket, DstKey, ReadRcPid]), %% Prepare for connection loss or client close FDWatcher = riak_cs_copy_object:connection_checker((RD#wm_reqdata.wm_state)#wm_reqstate.socket), @@ -448,10 +448,10 @@ maybe_copy_part(PutPid, {true, _RD, _OtherCtx} -> %% access to source object not authorized %% TODO: check the return value - logger:debug("access to source object denied (~s, ~s)", [SrcBucket, SrcKey]), + _ = lager:debug("access to source object denied (~s, ~s)", [SrcBucket, SrcKey]), {{halt, 403}, RD, Ctx}; Error -> - logger:debug("unknown error: ~p", [Error]), + _ = lager:debug("unknown error: ~p", [Error]), %% ResponseMod:api_error(Error, RD, Ctx#context{local_context=LocalCtx}) Error end. diff --git a/apps/riak_cs/src/riak_cs_wm_user.erl b/apps/riak_cs/src/riak_cs_wm_user.erl index 1a4fe38ce..89a0ec622 100644 --- a/apps/riak_cs/src/riak_cs_wm_user.erl +++ b/apps/riak_cs/src/riak_cs_wm_user.erl @@ -255,8 +255,8 @@ get_user(AdminCheckResult, _) -> handle_get_user_result({ok, {User, UserObj}}, RD, Ctx) -> {false, RD, Ctx#context{user=User, user_object=UserObj}}; handle_get_user_result({error, Reason}, RD, Ctx) -> - logger:warning("Failed to fetch user record. KeyId: ~p" - " Reason: ~p", [user_key(RD), Reason]), + _ = lager:warning("Failed to fetch user record. KeyId: ~p" + " Reason: ~p", [user_key(RD), Reason]), riak_cs_s3_response:api_error(invalid_access_key_id, RD, Ctx). -spec update_user([{atom(), term()}], #wm_reqdata{}, #context{}) -> diff --git a/apps/riak_cs/src/riak_cs_wm_users.erl b/apps/riak_cs/src/riak_cs_wm_users.erl index 9f7fb4ee2..6a9f4d1fe 100644 --- a/apps/riak_cs/src/riak_cs_wm_users.erl +++ b/apps/riak_cs/src/riak_cs_wm_users.erl @@ -155,8 +155,8 @@ user_fold_fun(RcPid, Status) -> %% Status is defined and does not match the account status Users; {error, Reason} -> - logger:warning("Failed to fetch user record. KeyId: ~p" - " Reason: ~p", [UserId, Reason]), + _ = lager:warning("Failed to fetch user record. KeyId: ~p" + " Reason: ~p", [UserId, Reason]), Users end end. diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index 9e9fa8e12..acf4253d1 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -180,23 +180,23 @@ handle_validation_response({error, disconnected}, RD, Ctx, _Next, _, _Bool) -> {{halt, 503}, RD, Ctx}; handle_validation_response({error, Reason}, RD, Ctx, Next, _, true) -> %% no keyid was given, proceed anonymously - logger:debug("No user key: ~p", [Reason]), + _ = lager:debug("No user key: ~p", [Reason]), Next(RD, Ctx); handle_validation_response({error, no_user_key}, RD, Ctx, _, Conv2KeyCtx, false) -> %% no keyid was given, deny access - logger:debug("No user key, deny"), + _ = lager:debug("No user key, deny"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, bad_auth}, RD, Ctx, _, Conv2KeyCtx, _) -> %% given keyid was found, but signature didn't match - logger:debug("bad_auth"), + _ = lager:debug("bad_auth"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, notfound}, RD, Ctx, _, Conv2KeyCtx, _) -> %% no keyid was found - logger:debug("key_id not found"), + _ = lager:debug("key_id not found"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, Reason}, RD, Ctx, _, Conv2KeyCtx, _) -> %% no matching keyid was found, or lookup failed - logger:debug("Authentication error: ~p", [Reason]), + _ = lager:debug("Authentication error: ~p", [Reason]), deny_invalid_key(RD, Conv2KeyCtx(Ctx)). handle_auth_admin(RD, Ctx, undefined, true) -> @@ -258,8 +258,8 @@ validate_auth_header(RD, AuthBypass, RcPid, Ctx) -> {error, NE}; {error, Reason} -> %% other failures, like Riak fetch timeout, be loud about - logger:error("Retrieval of user record for ~p failed. Reason: ~p", - [KeyId, Reason]), + _ = lager:error("Retrieval of user record for ~p failed. Reason: ~p", + [KeyId, Reason]), {error, Reason} end. @@ -473,7 +473,7 @@ maybe_update_context_with_acl_from_headers(RD, {ok, Ctx#context{acl=DefaultAcl}} end; {error, Reason} -> - logger:error("Failed to retrieve bucket objects for reason ~p", [Reason]), + _ = lager:error("Failed to retrieve bucket objects for reason ~p", [Reason]), {error, {{halt, 500}, RD, Ctx}} end. @@ -1017,7 +1017,7 @@ fetch_bucket_owner(Bucket, RcPid) -> {ok, Acl} -> Acl?ACL.owner; {error, Reason} -> - logger:debug("Failed to retrieve owner info for bucket ~p. Reason ~p", [Bucket, Reason]), + _ = lager:debug("Failed to retrieve owner info for bucket ~p. Reason ~p", [Bucket, Reason]), undefined end. diff --git a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl index 5ba6cbc6a..52f4d821d 100644 --- a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl +++ b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl @@ -124,7 +124,7 @@ handle_call(block_pbc, _From, State) -> {reply, {ok, self()}, State}; handle_call(Request, _From, State) -> - logger:warning("Unknown request: ~p~n", [Request]), + lager:warning("Unknown request: ~p~n", [Request]), Reply = {error, {invalid_request, Request}}, {reply, Reply, State}. @@ -155,8 +155,8 @@ process_get_req(#rpbgetreq{bucket=RiakBucket, key=Key} = _RpbGetReq, [{dict:new(), binary:copy(<<"a">>, 10)}]), {{ok, Obj}, State}; Other -> - logger:warning("Unknown #rpbgetreq{} for ~p, bucket=~p, key=~p~n", - [Other, RiakBucket, Key]), + lager:warning("Unknown #rpbgetreq{} for ~p, bucket=~p, key=~p~n", + [Other, RiakBucket, Key]), error({not_implemented, {rpbgetreq, Other, RiakBucket, Key}}) end. @@ -167,8 +167,8 @@ process_put_req(#rpbputreq{bucket=RiakBucket, key=Key, return_body=1} = _RpbPutR {M, RObj} = new_manifest_ro(BucketName, RiakBucket, Key, Acl), {{ok, RObj}, State#state{manifest = M}}; Other -> - logger:warning("Unknown #rpbgetreq{} with return_body for ~p," " bucket=~p, key=~p~n", - [Other, RiakBucket, Key]), + lager:warning("Unknown #rpbgetreq{} with return_body for ~p," " bucket=~p, key=~p~n", + [Other, RiakBucket, Key]), error({not_implemented, {rpbgetreq_with_return_body, Other, RiakBucket, Key}}) end; process_put_req(_RpbPutReq, State) -> diff --git a/apps/riak_cs/test/riak_cs_dummy_reader.erl b/apps/riak_cs/test/riak_cs_dummy_reader.erl index 59e293dc0..33b472fe2 100644 --- a/apps/riak_cs/test/riak_cs_dummy_reader.erl +++ b/apps/riak_cs/test/riak_cs_dummy_reader.erl @@ -119,7 +119,7 @@ handle_cast({get_block, _From, _Bucket, _Key, UUID, BlockNumber}, State) -> handle_cast({get_block, _From, _Bucket, _Key, _ClusterID, UUID, BlockNumber}, State) -> send_fake_data(UUID, BlockNumber, State); handle_cast(Event, State) -> - loger:warning("Received unknown cast event: ~p", [Event]), + lager:warning("Received unknown cast event: ~p", [Event]), {noreply, State}. %% @doc @TODO diff --git a/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl b/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl index fa3e15c15..61e6764e6 100644 --- a/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl +++ b/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl @@ -116,7 +116,7 @@ handle_cast({send_manifests, StartKey}, _Rest = send_manifests_and_done(Caller, ReqId, StartKey, MaxResults, Manifests), {noreply, State}; handle_cast(Event, State) -> - logger:warning("Received unknown cast event: ~p", [Event]), + lager:warning("Received unknown cast event: ~p", [Event]), {noreply, State}. %% @doc @TODO diff --git a/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl b/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl index 814419066..40f77491a 100644 --- a/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl +++ b/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl @@ -64,7 +64,7 @@ eqc_test_() -> {foreach, fun() -> - logger:update_primary_config(#{level => none}), + application:set_env(lager, handlers, []), exometer:start(), riak_cs_stats:init(), diff --git a/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl b/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl index b33340153..95832995e 100644 --- a/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl +++ b/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl @@ -66,7 +66,8 @@ setup() -> application:load(sasl), application:load(riak_cs), application:set_env(sasl, sasl_error_logger, {file, "cs_get_fsm_sasl.log"}), - error_logger:tty(false). + error_logger:tty(false), + application:start(lager). cleanup(_) -> ok. diff --git a/apps/riak_cs/test/riak_cs_lfs_utils_test.erl b/apps/riak_cs/test/riak_cs_lfs_utils_test.erl index a338809be..c5d05f0db 100644 --- a/apps/riak_cs/test/riak_cs_lfs_utils_test.erl +++ b/apps/riak_cs/test/riak_cs_lfs_utils_test.erl @@ -23,7 +23,7 @@ -include_lib("eunit/include/eunit.hrl"). setup() -> - ok. + application:start(lager). %% TODO: %% Implement this diff --git a/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl b/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl index 64eca1cdb..7aca78a54 100644 --- a/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl +++ b/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl @@ -71,7 +71,7 @@ eqc_test_() -> setup() -> error_logger:tty(false), error_logger:logfile({open, "riak_cs_list_objects_fsm_v2_eqc.log"}), - logger:update_primary_config(#{level => none}), + application:set_env(lager, handlers, []), exometer:start(), riak_cs_stats:init(), ok. diff --git a/apps/riak_cs/test/riak_cs_wm_test_utils.erl b/apps/riak_cs/test/riak_cs_wm_test_utils.erl index 522d5967b..5cd7fdbc9 100644 --- a/apps/riak_cs/test/riak_cs_wm_test_utils.erl +++ b/apps/riak_cs/test/riak_cs_wm_test_utils.erl @@ -27,6 +27,7 @@ setup() -> application:start(sasl), TestNode = list_to_atom("testnode" ++ integer_to_list(element(3, erlang:timestamp()))), net_kernel:start([TestNode, shortnames]), + application:start(lager), application:start(riakc), application:start(inets), application:start(mochiweb), diff --git a/priv/riak_cs.schema b/priv/riak_cs.schema index 76f4e79fb..62c4fbe2b 100644 --- a/priv/riak_cs.schema +++ b/priv/riak_cs.schema @@ -435,16 +435,16 @@ {datatype, flag} ]}. -%% %% @doc Where to emit the default log messages (typically at 'info' -%% %% severity): -%% %% off: disabled -%% %% file: the file specified by log.console.file -%% %% console: to standard output (seen when using `riak attach-direct`) -%% %% both: log.console.file and standard out. -%% {mapping, "log.console", "lager.handlers", [ -%% {default, {{console_log_default}} }, -%% {datatype, {enum, [off, file, console, both]}} -%% ]}. +%% @doc Where to emit the default log messages (typically at 'info' +%% severity): +%% off: disabled +%% file: the file specified by log.console.file +%% console: to standard output (seen when using `riak attach-direct`) +%% both: log.console.file and standard out. +{mapping, "log.console", "lager.handlers", [ + {default, console }, + {datatype, {enum, [off, file, console, both]}} +]}. %% @doc The severity level of the console log, default is 'info'. {mapping, "log.console.level", "lager.handlers", [ diff --git a/priv/tools/internal/block_audit.erl b/priv/tools/internal/block_audit.erl index 9a76345ba..3a391e533 100755 --- a/priv/tools/internal/block_audit.erl +++ b/priv/tools/internal/block_audit.erl @@ -34,13 +34,15 @@ }). main(Args) -> - logger:update_primary_config(#{level => info}), + _ = application:load(lager), + ok = application:set_env(lager, handlers, [{lager_console_backend, info}]), + ok = lager:start(), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of 0 -> info; _ -> - logger:update_primary_config(#{level => debug}), + ok = lager:set_loglevel(lager_console_backend, debug), debug end, debug("Log level is set to ~p", [LogLevel]), @@ -93,7 +95,7 @@ info(Format, Args) -> log(info, Format, Args). log(Level, Format, Args) -> - logger:log(Level, Format, Args). + lager:log(Level, self(), Format, Args). audit(Pid, Opts) -> Buckets = case proplists:get_all_values(bucket, Opts) of diff --git a/priv/tools/internal/ensure_orphan_blocks.erl b/priv/tools/internal/ensure_orphan_blocks.erl index e148c1633..c59b7a716 100755 --- a/priv/tools/internal/ensure_orphan_blocks.erl +++ b/priv/tools/internal/ensure_orphan_blocks.erl @@ -31,13 +31,15 @@ -include_lib("riak_cs/include/riak_cs.hrl"). main(Args) -> - logger:update_primary_config(#{level => info}), + _ = application:load(lager), + ok = application:set_env(lager, handlers, [{lager_console_backend, info}]), + ok = lager:start(), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of 0 -> info; _ -> - logger:update_primary_config(#{level => debug}), + ok = lager:set_loglevel(lager_console_backend, debug), debug end, debug("Log level is set to ~p", [LogLevel]), @@ -92,7 +94,7 @@ info(Format, Args) -> log(info, Format, Args). log(Level, Format, Args) -> - logger:log(Level, Format, Args). + lager:log(Level, self(), Format, Args). audit2(Pid, Opts) -> info("Filter actual orphaned blocks from maybe ones. This may take a while...", []), diff --git a/priv/tools/repair_gc_bucket.erl b/priv/tools/repair_gc_bucket.erl index 436debbc4..381604dc1 100755 --- a/priv/tools/repair_gc_bucket.erl +++ b/priv/tools/repair_gc_bucket.erl @@ -53,14 +53,15 @@ -include_lib("riak_cs/include/riak_cs.hrl"). main(Args) -> - logger:update_primary_config(#{level => info}), - %% application:set_env(lager, handlers, [{lager_console_backend, info}]), + _ = application:load(lager), + ok = application:set_env(lager, handlers, [{lager_console_backend, info}]), + ok = lager:start(), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of 0 -> info; _ -> - ok = logger:update_primary_config(#{level => debug}), + ok = lager:set_loglevel(lager_console_backend, debug), debug end, debug("Log level is set to ~p", [LogLevel]), @@ -111,7 +112,7 @@ info(Format, Args) -> log(info, Format, Args). log(Level, Format, Args) -> - logger:log(Level, Format, Args). + lager:log(Level, self(), Format, Args). -spec repair(pid(), proplists:proplist()) -> term(). repair(Pbc, Options) -> diff --git a/rebar.config b/rebar.config index a4b132bde..67a65a30c 100644 --- a/rebar.config +++ b/rebar.config @@ -11,6 +11,7 @@ , {gen_fsm, sync_send_all_state_event, 3} , {gen_fsm, reply, 2} ]} + , {parse_transform, lager_transform} ] }. @@ -30,6 +31,7 @@ , {riak_repl_pb_api,".*", {git,"git://github.com/hmmr/riak_repl_pb_api.git", {tag, "riak_kv-3.0.2"}}} , {riak_cs_multibag,".*", {git,"git://github.com/hmmr/riak_cs_multibag.git", {tag, "riak_kv-3.0.2"}}} , {parse_trans, "3.3.0"} + , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} ] }. diff --git a/rebar.lock b/rebar.lock index e90367104..93ff06986 100644 --- a/rebar.lock +++ b/rebar.lock @@ -19,8 +19,17 @@ {git,"git://github.com/jcomellas/getopt.git", {ref,"1c963cecd75cb5f7b37f28737abb120e61390c62"}}, 0}, + {<<"goldrush">>,{pkg,<<"goldrush">>,<<"0.1.9">>},2}, {<<"hut">>,{pkg,<<"hut">>,<<"1.2.1">>},1}, {<<"jsx">>,{pkg,<<"jsx">>,<<"2.11.0">>},1}, + {<<"lager">>, + {git,"git://github.com/erlang-lager/lager.git", + {ref,"22e62f28e5afabe90a6f31bcde367a2b5799fc94"}}, + 1}, + {<<"lager_syslog">>, + {git,"git://github.com/basho/lager_syslog.git", + {ref,"152bb8eb254c225ebd8c579f9603f44b50df44ec"}}, + 0}, {<<"lhttpc">>,{pkg,<<"lhttpc">>,<<"1.6.2">>},1}, {<<"meck">>, {git,"https://github.com/basho/meck.git", @@ -57,6 +66,10 @@ {ref,"ea4fcd062f55a67e31c7294a1b8b8ccd957526c8"}}, 0}, {<<"setup">>,{pkg,<<"setup">>,<<"2.0.2">>},1}, + {<<"syslog">>, + {git,"git://github.com/Vagabond/erlang-syslog", + {ref,"4a6c6f2c996483e86c1320e9553f91d337bcb6aa"}}, + 1}, {<<"uuid">>, {git,"git://github.com/okeuday/uuid.git", {ref,"9312cc158a94c76e40c82ca45fd5056fb191c889"}}, @@ -75,6 +88,7 @@ {<<"bear">>, <<"16264309AE5D005D03718A5C82641FCC259C9E8F09ADEB6FD79CA4271168656F">>}, {<<"eini">>, <<"EFC9D836E88591A47550BD34CE964E21CA1369F8716B24F73CFEA513FA99F666">>}, {<<"folsom">>, <<"A885F0AEEE4C84270954C88A55A5A473D6B2C7493E32FFDC5765412DD555A951">>}, + {<<"goldrush">>, <<"F06E5D5F1277DA5C413E84D5A2924174182FB108DABB39D5EC548B27424CD106">>}, {<<"hut">>, <<"08D46679523043424870723923971889E8A34D63B2F946A35B46CF921D1236E7">>}, {<<"jsx">>, <<"08154624050333919B4AC1B789667D5F4DB166DC50E190C4D778D1587F102EE0">>}, {<<"lhttpc">>, <<"044F16F0018C7AA7E945E9E9406C7F6035E0B8BC08BF77B00C78CE260E1071E3">>}, From 5a03820066d79df4d54ebefe015c3954d5315c43 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 3 Apr 2021 00:38:15 +0300 Subject: [PATCH 087/831] mention uuid in riak_cs.app.src --- apps/riak_cs/src/riak_cs.app.src | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index 059b422d8..a9541bf52 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -10,6 +10,7 @@ stdlib, inets, crypto, + uuid, mochiweb, webmachine, poolboy, From c3e197c2817ba583c128f9b2a4f631a099d09bca Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 3 Apr 2021 01:09:01 +0300 Subject: [PATCH 088/831] drop erlcloud --- rebar.config | 1 - rebar.lock | 14 +------------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/rebar.config b/rebar.config index 67a65a30c..129144791 100644 --- a/rebar.config +++ b/rebar.config @@ -27,7 +27,6 @@ , {exometer_core, ".*", {git, "git://github.com/Feuerlabs/exometer_core", {tag, "v1.5.7"}}} , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {xmerl, ".*", {git, "git://github.com/hmmr/xmerl", {tag, "0.1.2"}}} - , {erlcloud, ".*", {git, "git://github.com/erlcloud/erlcloud.git", {tag, "3.5.2"}}} , {riak_repl_pb_api,".*", {git,"git://github.com/hmmr/riak_repl_pb_api.git", {tag, "riak_kv-3.0.2"}}} , {riak_cs_multibag,".*", {git,"git://github.com/hmmr/riak_cs_multibag.git", {tag, "riak_kv-3.0.2"}}} , {parse_trans, "3.3.0"} diff --git a/rebar.lock b/rebar.lock index 93ff06986..c0364b391 100644 --- a/rebar.lock +++ b/rebar.lock @@ -1,15 +1,9 @@ {"1.1.0", -[{<<"base16">>,{pkg,<<"base16">>,<<"1.0.0">>},1}, - {<<"bear">>,{pkg,<<"bear">>,<<"0.8.7">>},2}, +[{<<"bear">>,{pkg,<<"bear">>,<<"0.8.7">>},2}, {<<"cluster_info">>, {git,"git://github.com/basho/cluster_info", {ref,"389d43af7ac1550b3c01cd55b8147bcc0e20022f"}}, 0}, - {<<"eini">>,{pkg,<<"eini">>,<<"1.2.7">>},1}, - {<<"erlcloud">>, - {git,"git://github.com/erlcloud/erlcloud.git", - {ref,"f807268ff2e4b4efd1d2fb1925a6e1418e2ad954"}}, - 0}, {<<"exometer_core">>, {git,"git://github.com/Feuerlabs/exometer_core", {ref,"547f28bc93c7cb3d3f1174fb4c510667a4ebb645"}}, @@ -21,7 +15,6 @@ 0}, {<<"goldrush">>,{pkg,<<"goldrush">>,<<"0.1.9">>},2}, {<<"hut">>,{pkg,<<"hut">>,<<"1.2.1">>},1}, - {<<"jsx">>,{pkg,<<"jsx">>,<<"2.11.0">>},1}, {<<"lager">>, {git,"git://github.com/erlang-lager/lager.git", {ref,"22e62f28e5afabe90a6f31bcde367a2b5799fc94"}}, @@ -30,7 +23,6 @@ {git,"git://github.com/basho/lager_syslog.git", {ref,"152bb8eb254c225ebd8c579f9603f44b50df44ec"}}, 0}, - {<<"lhttpc">>,{pkg,<<"lhttpc">>,<<"1.6.2">>},1}, {<<"meck">>, {git,"https://github.com/basho/meck.git", {ref,"dde759050eff19a1a80fd854d7375174b191665d"}}, @@ -84,14 +76,10 @@ 0}]}. [ {pkg_hash,[ - {<<"base16">>, <<"283644E2B21BD5915ACB7178BED7851FB07C6E5749B8FAD68A53C501092176D9">>}, {<<"bear">>, <<"16264309AE5D005D03718A5C82641FCC259C9E8F09ADEB6FD79CA4271168656F">>}, - {<<"eini">>, <<"EFC9D836E88591A47550BD34CE964E21CA1369F8716B24F73CFEA513FA99F666">>}, {<<"folsom">>, <<"A885F0AEEE4C84270954C88A55A5A473D6B2C7493E32FFDC5765412DD555A951">>}, {<<"goldrush">>, <<"F06E5D5F1277DA5C413E84D5A2924174182FB108DABB39D5EC548B27424CD106">>}, {<<"hut">>, <<"08D46679523043424870723923971889E8A34D63B2F946A35B46CF921D1236E7">>}, - {<<"jsx">>, <<"08154624050333919B4AC1B789667D5F4DB166DC50E190C4D778D1587F102EE0">>}, - {<<"lhttpc">>, <<"044F16F0018C7AA7E945E9E9406C7F6035E0B8BC08BF77B00C78CE260E1071E3">>}, {<<"mochiweb">>, <<"EB55F1DB3E6E960FAC4E6DB4E2DB9EC3602CC9F30B86CD1481D56545C3145D2E">>}, {<<"parse_trans">>, <<"09765507A3C7590A784615CFD421D101AEC25098D50B89D7AA1D66646BC571C1">>}, {<<"setup">>, <<"1203F4CDA11306C2E34434244576DED0A7BBFB0908D9A572356C809BD0CDF085">>}]} From ac482cfc443aca2fd6f017df2b2bd83f764f44d0 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 5 Apr 2021 17:38:16 +0300 Subject: [PATCH 089/831] explicitly depend on mochiweb v2.20.1, unbreaking mochiweb_http:after_response --- rebar.config | 1 + rebar.lock | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index 129144791..4b69f0025 100644 --- a/rebar.config +++ b/rebar.config @@ -21,6 +21,7 @@ {deps, [ {getopt, ".*", {git, "git://github.com/jcomellas/getopt.git", {tag, "v1.0.2"}}} , {webmachine, ".*", {git, "git://github.com/webmachine/webmachine.git", {tag, "1.11.1"}}} + , {mochiweb, "v2.20.1"} , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "riak_kv-3.0.2"}}} , {uuid, ".*", {git, "git://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} diff --git a/rebar.lock b/rebar.lock index c0364b391..c0b1c8571 100644 --- a/rebar.lock +++ b/rebar.lock @@ -27,7 +27,7 @@ {git,"https://github.com/basho/meck.git", {ref,"dde759050eff19a1a80fd854d7375174b191665d"}}, 2}, - {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"2.18.0">>},1}, + {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"2.20.1">>},0}, {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.0">>},0}, {<<"poolboy">>, {git,"git://github.com/basho/poolboy", @@ -80,7 +80,7 @@ {<<"folsom">>, <<"A885F0AEEE4C84270954C88A55A5A473D6B2C7493E32FFDC5765412DD555A951">>}, {<<"goldrush">>, <<"F06E5D5F1277DA5C413E84D5A2924174182FB108DABB39D5EC548B27424CD106">>}, {<<"hut">>, <<"08D46679523043424870723923971889E8A34D63B2F946A35B46CF921D1236E7">>}, - {<<"mochiweb">>, <<"EB55F1DB3E6E960FAC4E6DB4E2DB9EC3602CC9F30B86CD1481D56545C3145D2E">>}, + {<<"mochiweb">>, <<"E4DBD0ED716F076366ECF62ADA5755A844E1D95C781E8C77DF1D4114BE868CDF">>}, {<<"parse_trans">>, <<"09765507A3C7590A784615CFD421D101AEC25098D50B89D7AA1D66646BC571C1">>}, {<<"setup">>, <<"1203F4CDA11306C2E34434244576DED0A7BBFB0908D9A572356C809BD0CDF085">>}]} ]. From cb99c59f1643783a8558a329f0f393fcd6390362 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Apr 2021 00:19:28 +0300 Subject: [PATCH 090/831] catch dyntrace calls --- apps/riak_cs/src/riak_cs_wm_common.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/riak_cs/src/riak_cs_wm_common.erl b/apps/riak_cs/src/riak_cs_wm_common.erl index 018bd9875..79c5dad61 100644 --- a/apps/riak_cs/src/riak_cs_wm_common.erl +++ b/apps/riak_cs/src/riak_cs_wm_common.erl @@ -71,7 +71,7 @@ -spec init([{atom(),term()}]) -> {ok, #context{}}. init(Config) -> - _ = dyntrace:put_tag(pid_to_list(self())), + catch dyntrace:put_tag(pid_to_list(self())), Mod = proplists:get_value(submodule, Config), riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"init">>), %% Check if authentication is disabled and set that in the context. From 21b5ed1ae85a0a60831db6778329f1155d313afa Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Apr 2021 00:34:17 +0300 Subject: [PATCH 091/831] register rewrite module --- apps/riak_cs/src/riak_cs_sup.erl | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index 4b6bd8d91..54c1af596 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -62,6 +62,7 @@ init([]) -> riak_cs_stats:init(), Options = [get_option_val(Option) || Option <- ?OPTIONS], PoolSpecs = pool_specs(Options), + application:set_env(webmachine, rewrite_module, proplists:get_value(rewrite_module, Options)), {ok, { {one_for_one, 10, 10}, PoolSpecs ++ process_specs() ++ web_specs(Options)}}. From c6011dcd3190829a81a57c4018f0292fe94392bf Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Apr 2021 19:57:36 +0300 Subject: [PATCH 092/831] fix signaure calculation for auth v2 --- apps/riak_cs/src/riak_cs_s3_auth.erl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_s3_auth.erl b/apps/riak_cs/src/riak_cs_s3_auth.erl index 073c8d7f4..0f1e3cb84 100644 --- a/apps/riak_cs/src/riak_cs_s3_auth.erl +++ b/apps/riak_cs/src/riak_cs_s3_auth.erl @@ -161,16 +161,16 @@ calculate_signature_v2(KeyData, RD) -> OriginalResource = riak_cs_s3_rewrite:original_resource(RD), Resource = case OriginalResource of undefined -> []; %% TODO: get noisy here? - {Path,QS} -> [Path, canonicalize_qs(v2, QS)] + {Path, QS} -> [Path, canonicalize_qs(v2, QS)] end, Date = case wrq:get_qs_value("Expires", RD) of undefined -> - case proplists:is_defined("x-amz-date", Headers) of - true -> "\n"; - false -> [wrq:get_req_header("date", RD), "\n"] + case wrq:get_req_header("x-amz-date", RD) of + undefined -> wrq:get_req_header("date", RD); + XAmzDate -> XAmzDate end; Expires -> - Expires ++ "\n" + Expires end, CMD5 = case wrq:get_req_header("content-md5", RD) of undefined -> []; @@ -186,6 +186,7 @@ calculate_signature_v2(KeyData, RD) -> ContentType, "\n", Date, + "\n", AmazonHeaders, Resource], _ = lager:debug("STS: ~p", [STS]), From 4196cd5a32ba72e1c4a924aa6dae371b4bed0856 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 8 Apr 2021 02:24:31 +0300 Subject: [PATCH 093/831] fix riak-cs-admin for relx --- rel/files/riak-cs-admin | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index d1252b3f1..6419335f5 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -2,17 +2,15 @@ # -*- tab-width:4;indent-tabs-mode:nil -*- # ex: ts=4 sw=4 et -# Pull environment for this install -. "{{runner_base_dir}}/lib/env.sh" - # Make sure the user running this script is the owner and/or su to that user check_user "$@" # Make sure CWD is set to runner run dir -cd $RUNNER_BASE_DIR +cd "$RUNNER_BASE_DIR" # Identify the script name SCRIPT=`basename $0` +NODETOOL=./nodetool usage() { echo "Usage: $SCRIPT { status | gc | access | storage | stanchion | cluster-info | cleanup-orphan-multipart | audit-bucket-ownership}" @@ -22,16 +20,12 @@ usage() { case "$1" in status) shift - node_up_check $NODETOOL rpc riak_cs_console status ;; gc) shift case "$1" in batch|status|pause|resume|cancel|set-interval|set-leeway|earliest-keys) - # Make sure the local node IS running - node_up_check - $NODETOOL rpc riak_cs_gc_console "$@" ;; *) @@ -46,9 +40,6 @@ case "$1" in shift case "$1" in batch|status|pause|resume|cancel) - # Make sure the local node IS running - node_up_check - $NODETOOL rpc riak_cs_storage_console "$@" ;; *) @@ -61,9 +52,6 @@ case "$1" in shift case "$1" in flush) - # Make sure the local node IS running - node_up_check - $NODETOOL rpc riak_cs_access_console flush "$@" ;; *) @@ -76,9 +64,6 @@ case "$1" in shift case "$1" in switch|show) - # Make sure the local node IS running - node_up_check - $NODETOOL rpc riak_cs_stanchion_console "$@" ;; *) @@ -94,22 +79,15 @@ case "$1" in fi shift - # Make sure the local node is running - node_up_check - $NODETOOL rpc_infinity riak_cs_console cluster_info "$@" ;; cleanup[_-]orphan[_-]multipart) shift - # Make sure the local node IS running - node_up_check - $NODETOOL rpc riak_cs_console cleanup_orphan_multipart "$@" ;; audit[_-]bucket[_-]ownership) shift - node_up_check $NODETOOL rpc riak_cs_console audit_bucket_ownership "$@" ;; *) From 1c7ea7a61e2945aab8492fd6de745ddfcbaf1fcf Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 8 Apr 2021 03:29:49 +0300 Subject: [PATCH 094/831] remove deprecated riak-cs-access & friends --- rebar.config | 5 ----- rel/files/riak-cs-access | 10 ---------- rel/files/riak-cs-gc | 10 ---------- rel/files/riak-cs-multibag | 38 ------------------------------------- rel/files/riak-cs-stanchion | 10 ---------- rel/files/riak-cs-storage | 10 ---------- 6 files changed, 83 deletions(-) delete mode 100755 rel/files/riak-cs-access delete mode 100755 rel/files/riak-cs-gc delete mode 100755 rel/files/riak-cs-multibag delete mode 100755 rel/files/riak-cs-stanchion delete mode 100755 rel/files/riak-cs-storage diff --git a/rebar.config b/rebar.config index 4b69f0025..10cffaed5 100644 --- a/rebar.config +++ b/rebar.config @@ -43,13 +43,8 @@ } , {dev_mode, false} , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} - , {template, "rel/files/riak-cs-access", "bin/riak-cs-access"} , {template, "rel/files/riak-cs-admin", "bin/riak-cs-admin"} , {template, "rel/files/riak-cs-debug", "bin/riak-cs-debug"} - , {template, "rel/files/riak-cs-gc", "bin/riak-cs-gc"} - , {template, "rel/files/riak-cs-multibag", "bin/riak-cs-multibag"} - , {template, "rel/files/riak-cs-stanchion", "bin/riak-cs-stanchion"} - , {template, "rel/files/riak-cs-storage", "bin/riak-cs-storage"} , {template, "rel/files/riak-cs-supercluster", "bin/riak-cs-supercluster"} , {copy, "rel/files/cert.pem", "etc/cert.pem"} , {copy, "rel/files/key.pem", "etc/key.pem"} diff --git a/rel/files/riak-cs-access b/rel/files/riak-cs-access deleted file mode 100755 index f396709fc..000000000 --- a/rel/files/riak-cs-access +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -cat<" instead of this. -############################################################################ -EOS - -{{runner_script_dir}}/riak-cs-admin access "$@" diff --git a/rel/files/riak-cs-gc b/rel/files/riak-cs-gc deleted file mode 100755 index 89367cabd..000000000 --- a/rel/files/riak-cs-gc +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -cat<" instead of this. -############################################################################ -EOS - -{{runner_script_dir}}/riak-cs-admin gc "$@" diff --git a/rel/files/riak-cs-multibag b/rel/files/riak-cs-multibag deleted file mode 100755 index 7d795904b..000000000 --- a/rel/files/riak-cs-multibag +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -cat<" instead of this. -############################################################################ -EOS - -# Pull environment for this install -. "{{runner_base_dir}}/lib/env.sh" - -# Make sure the user running this script is the owner and/or su to that user -check_user $@ - -# Make sure CWD is set to runner run dir -cd $RUNNER_BASE_DIR - -# Identify the script name -SCRIPT=`basename $0` - -# Check the first argument for instructions -case "$1" in - list-members|weight|weight-manifest|weight-block|refresh) - # Make sure the local node IS running - node_up_check - - $NODETOOL rpc riak_cs_multibag_console "$@" - ;; - list-bags) - node_up_check - $NODETOOL rpc riak_cs_multibag_console list-members - ;; - *) - echo "Usage: $SCRIPT { list-members | weight | weight-manifest | weight-block | refresh | list-bags }" - exit 1 - ;; -esac diff --git a/rel/files/riak-cs-stanchion b/rel/files/riak-cs-stanchion deleted file mode 100755 index b3181df1a..000000000 --- a/rel/files/riak-cs-stanchion +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -cat<" instead of this. -############################################################################ -EOS - -{{runner_script_dir}}/riak-cs-admin stanchion "$@" diff --git a/rel/files/riak-cs-storage b/rel/files/riak-cs-storage deleted file mode 100755 index 8d5c0423c..000000000 --- a/rel/files/riak-cs-storage +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -cat<" instead of this. -############################################################################ -EOS - -{{runner_script_dir}}/riak-cs-admin storage "$@" From 62576883e516e76c624f9179427fd966d76d0661 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 8 Apr 2021 19:53:49 +0300 Subject: [PATCH 095/831] no need for forked xmerl given all our callbacks are installed Note that standard xmerl in OTP-22 does not have https://github.com/richcarl/otp/commit/39c7387d3870e4a21a7648eda72703c4b11e7450. Given that the improvement in richcarl's path only concerns error path, which we are not going to hit in riak_cs, it looks to be safe to drop it in favor of xmerl provided by current OTP. --- rebar.config | 1 - rebar.lock | 4 ---- 2 files changed, 5 deletions(-) diff --git a/rebar.config b/rebar.config index 10cffaed5..258dee3fb 100644 --- a/rebar.config +++ b/rebar.config @@ -27,7 +27,6 @@ , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {exometer_core, ".*", {git, "git://github.com/Feuerlabs/exometer_core", {tag, "v1.5.7"}}} , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {xmerl, ".*", {git, "git://github.com/hmmr/xmerl", {tag, "0.1.2"}}} , {riak_repl_pb_api,".*", {git,"git://github.com/hmmr/riak_repl_pb_api.git", {tag, "riak_kv-3.0.2"}}} , {riak_cs_multibag,".*", {git,"git://github.com/hmmr/riak_cs_multibag.git", {tag, "riak_kv-3.0.2"}}} , {parse_trans, "3.3.0"} diff --git a/rebar.lock b/rebar.lock index c0b1c8571..2788fc540 100644 --- a/rebar.lock +++ b/rebar.lock @@ -69,10 +69,6 @@ {<<"webmachine">>, {git,"git://github.com/webmachine/webmachine.git", {ref,"92225b82fc702f78cf9d23248023ec841272df80"}}, - 0}, - {<<"xmerl">>, - {git,"git://github.com/hmmr/xmerl", - {ref,"dd32f193abc611f0dcb91248f7f4265220531c24"}}, 0}]}. [ {pkg_hash,[ From 441d0909fcdf39d646efacec3fc38563c9f3af0c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 9 Apr 2021 00:17:14 +0300 Subject: [PATCH 096/831] bump release version to 3.0 --- rebar.config | 2 +- rel/vars.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index 258dee3fb..ebc9f8e7b 100644 --- a/rebar.config +++ b/rebar.config @@ -35,7 +35,7 @@ }. -{relx, [ {release, {'riak-cs', "2.2"}, +{relx, [ {release, {'riak-cs', "3.0"}, [ sasl , riak_cs ] diff --git a/rel/vars.config b/rel/vars.config index 2f8595e4c..bb0082342 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -21,7 +21,7 @@ {stanchion_ip, "127.0.0.1"}. {stanchion_port, 8085}. {stanchion_ssl, off}. -{cs_version, 010300}. +{cs_version, 030000}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. From 29b5dcb26a815c1db473a0e09fcdd12eeb554940 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 9 Apr 2021 00:17:35 +0300 Subject: [PATCH 097/831] xmerl fixup --- rebar.config | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index ebc9f8e7b..d05128ba5 100644 --- a/rebar.config +++ b/rebar.config @@ -96,8 +96,7 @@ {overrides, - [ {del, xmerl, [{erl_opts, [warnings_as_errors]}]} - , {del, meck, [{erl_opts, [warnings_as_errors]}]} + [ {del, meck, [{erl_opts, [warnings_as_errors]}]} ] }. From e1ced1b5e74e3b5361f563e29cc22c6ea48ca7a2 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 9 Apr 2021 00:41:03 +0300 Subject: [PATCH 098/831] prefer shorter deps notation --- rebar.config | 10 +++++----- rebar.lock | 20 +++++++------------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/rebar.config b/rebar.config index d05128ba5..cd982163d 100644 --- a/rebar.config +++ b/rebar.config @@ -19,17 +19,17 @@ ] }. -{deps, [ {getopt, ".*", {git, "git://github.com/jcomellas/getopt.git", {tag, "v1.0.2"}}} - , {webmachine, ".*", {git, "git://github.com/webmachine/webmachine.git", {tag, "1.11.1"}}} +{deps, [ {parse_trans, "3.3.0"} + , {getopt, "v1.0.2"} + , {webmachine, "1.11.1"} , {mochiweb, "v2.20.1"} - , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "riak_kv-3.0.2"}}} + , {exometer_core, "v1.5.7"} , {uuid, ".*", {git, "git://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} + , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "riak_kv-3.0.2"}}} , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} - , {exometer_core, ".*", {git, "git://github.com/Feuerlabs/exometer_core", {tag, "v1.5.7"}}} , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {riak_repl_pb_api,".*", {git,"git://github.com/hmmr/riak_repl_pb_api.git", {tag, "riak_kv-3.0.2"}}} , {riak_cs_multibag,".*", {git,"git://github.com/hmmr/riak_cs_multibag.git", {tag, "riak_kv-3.0.2"}}} - , {parse_trans, "3.3.0"} , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} ] }. diff --git a/rebar.lock b/rebar.lock index 2788fc540..d9ddb5b57 100644 --- a/rebar.lock +++ b/rebar.lock @@ -4,15 +4,9 @@ {git,"git://github.com/basho/cluster_info", {ref,"389d43af7ac1550b3c01cd55b8147bcc0e20022f"}}, 0}, - {<<"exometer_core">>, - {git,"git://github.com/Feuerlabs/exometer_core", - {ref,"547f28bc93c7cb3d3f1174fb4c510667a4ebb645"}}, - 0}, + {<<"exometer_core">>,{pkg,<<"exometer_core">>,<<"1.5.7">>},0}, {<<"folsom">>,{pkg,<<"folsom">>,<<"0.8.7">>},1}, - {<<"getopt">>, - {git,"git://github.com/jcomellas/getopt.git", - {ref,"1c963cecd75cb5f7b37f28737abb120e61390c62"}}, - 0}, + {<<"getopt">>,{pkg,<<"getopt">>,<<"1.0.2">>},0}, {<<"goldrush">>,{pkg,<<"goldrush">>,<<"0.1.9">>},2}, {<<"hut">>,{pkg,<<"hut">>,<<"1.2.1">>},1}, {<<"lager">>, @@ -66,17 +60,17 @@ {git,"git://github.com/okeuday/uuid.git", {ref,"9312cc158a94c76e40c82ca45fd5056fb191c889"}}, 0}, - {<<"webmachine">>, - {git,"git://github.com/webmachine/webmachine.git", - {ref,"92225b82fc702f78cf9d23248023ec841272df80"}}, - 0}]}. + {<<"webmachine">>,{pkg,<<"webmachine">>,<<"1.11.1">>},0}]}. [ {pkg_hash,[ {<<"bear">>, <<"16264309AE5D005D03718A5C82641FCC259C9E8F09ADEB6FD79CA4271168656F">>}, + {<<"exometer_core">>, <<"AB97E34A5D69AB14E6AE161DB4CCA5B5E655E635B842F830EE6AB2CBFCFDC30A">>}, {<<"folsom">>, <<"A885F0AEEE4C84270954C88A55A5A473D6B2C7493E32FFDC5765412DD555A951">>}, + {<<"getopt">>, <<"33D9B44289FE7AD08627DDFE1D798E30B2DA0033B51DA1B3A2D64E72CD581D02">>}, {<<"goldrush">>, <<"F06E5D5F1277DA5C413E84D5A2924174182FB108DABB39D5EC548B27424CD106">>}, {<<"hut">>, <<"08D46679523043424870723923971889E8A34D63B2F946A35B46CF921D1236E7">>}, {<<"mochiweb">>, <<"E4DBD0ED716F076366ECF62ADA5755A844E1D95C781E8C77DF1D4114BE868CDF">>}, {<<"parse_trans">>, <<"09765507A3C7590A784615CFD421D101AEC25098D50B89D7AA1D66646BC571C1">>}, - {<<"setup">>, <<"1203F4CDA11306C2E34434244576DED0A7BBFB0908D9A572356C809BD0CDF085">>}]} + {<<"setup">>, <<"1203F4CDA11306C2E34434244576DED0A7BBFB0908D9A572356C809BD0CDF085">>}, + {<<"webmachine">>, <<"422BEAD629F3D6C10FB0F24BE4CEE9648338F90099072AE091FADF86BA70C53F">>}]} ]. From 87fe3a6cd45432af783a180c52afc4fba72002c2 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Apr 2021 00:53:25 +0300 Subject: [PATCH 099/831] make riak-cs-admin and -supercluster work, via bin/riak-cs rpc --- apps/riak_cs/src/riak_cs.app.src | 3 ++- rel/files/riak-cs-admin | 33 ++++++++++++++++---------------- rel/files/riak-cs-supercluster | 22 +++++++++------------ 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index a9541bf52..35df45295 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -18,7 +18,8 @@ exometer_core, lager, riakc, - riak_repl_pb_api + riak_repl_pb_api, + riak_cs_multibag ]}, {mod, { riak_cs_app, []}}, {env, [ diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index 6419335f5..d83a9e9c7 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -1,16 +1,15 @@ #!/bin/sh -# -*- tab-width:4;indent-tabs-mode:nil -*- -# ex: ts=4 sw=4 et -# Make sure the user running this script is the owner and/or su to that user -check_user "$@" +SCRIPT=$(readlink $0 || true) +if [ -z $SCRIPT ]; then + SCRIPT=$0 +fi; -# Make sure CWD is set to runner run dir -cd "$RUNNER_BASE_DIR" +SCRIPT_DIR="$(cd `dirname "$SCRIPT"` && pwd -P)" +RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd -P)" +REL_NAME="riak-cs" -# Identify the script name -SCRIPT=`basename $0` -NODETOOL=./nodetool +RPC_HOP=$RELEASE_ROOT_DIR/bin/$REL_NAME usage() { echo "Usage: $SCRIPT { status | gc | access | storage | stanchion | cluster-info | cleanup-orphan-multipart | audit-bucket-ownership}" @@ -20,13 +19,13 @@ usage() { case "$1" in status) shift - $NODETOOL rpc riak_cs_console status + $RPC_HOP rpc riak_cs_console status ;; gc) shift case "$1" in batch|status|pause|resume|cancel|set-interval|set-leeway|earliest-keys) - $NODETOOL rpc riak_cs_gc_console "$@" + $RPC_HOP rpc riak_cs_gc_console "$@" ;; *) echo "Usage: $SCRIPT gc { batch [|--help] | status | pause | resume | cancel |" @@ -40,7 +39,7 @@ case "$1" in shift case "$1" in batch|status|pause|resume|cancel) - $NODETOOL rpc riak_cs_storage_console "$@" + $RPC_HOP rpc riak_cs_storage_console "$@" ;; *) echo "Usage: $SCRIPT storage $1 { batch | status | pause | resume | cancel }" @@ -52,7 +51,7 @@ case "$1" in shift case "$1" in flush) - $NODETOOL rpc riak_cs_access_console flush "$@" + $RPC_HOP rpc riak_cs_access_console flush "$@" ;; *) echo "Usage: $SCRIPT access $1 { flush }" @@ -64,7 +63,7 @@ case "$1" in shift case "$1" in switch|show) - $NODETOOL rpc riak_cs_stanchion_console "$@" + $RPC_HOP rpc riak_cs_stanchion_console "$@" ;; *) echo "Usage: $SCRIPT stanchion $1 { switch HOST PORT | show }" @@ -79,16 +78,16 @@ case "$1" in fi shift - $NODETOOL rpc_infinity riak_cs_console cluster_info "$@" + $RPC_HOP_INF rpc riak_cs_console cluster_info "$@" ;; cleanup[_-]orphan[_-]multipart) shift - $NODETOOL rpc riak_cs_console cleanup_orphan_multipart "$@" + $RPC_HOP rpc riak_cs_console cleanup_orphan_multipart "$@" ;; audit[_-]bucket[_-]ownership) shift - $NODETOOL rpc riak_cs_console audit_bucket_ownership "$@" + $RPC_HOP rpc riak_cs_console audit_bucket_ownership "$@" ;; *) usage diff --git a/rel/files/riak-cs-supercluster b/rel/files/riak-cs-supercluster index e9f4c5cf4..acd20e381 100755 --- a/rel/files/riak-cs-supercluster +++ b/rel/files/riak-cs-supercluster @@ -1,24 +1,20 @@ #!/bin/sh -# Pull environment for this install -. "{{runner_base_dir}}/lib/env.sh" +SCRIPT=$(readlink $0 || true) +if [ -z $SCRIPT ]; then + SCRIPT=$0 +fi; -# Make sure the user running this script is the owner and/or su to that user -check_user $@ +SCRIPT_DIR="$(cd `dirname "$SCRIPT"` && pwd -P)" +RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd -P)" +REL_NAME="riak-cs" -# Make sure CWD is set to runner run dir -cd $RUNNER_BASE_DIR - -# Identify the script name -SCRIPT=`basename $0` +RPC_HOP=$RELEASE_ROOT_DIR/bin/$REL_NAME # Check the first argument for instructions case "$1" in list-members|weight|weight-manifest|weight-block|refresh) - # Make sure the local node IS running - node_up_check - - $NODETOOL rpc riak_cs_multibag_console "$@" + $RPC_HOP rpc riak_cs_multibag_console "$@" ;; *) echo "Usage: $SCRIPT { list-members | weight | weight-manifest | weight-block | refresh }" From ea21ab8da0445e6a321faa17c6ad3ccd42ef390a Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Apr 2021 01:22:26 +0300 Subject: [PATCH 100/831] getopt not in riak_cs.app.src but should be --- apps/riak_cs/src/riak_cs.app.src | 1 + rel/vars/1_vars.config | 55 ++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 rel/vars/1_vars.config diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index 35df45295..785cc424c 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -11,6 +11,7 @@ inets, crypto, uuid, + getopt, mochiweb, webmachine, poolboy, diff --git a/rel/vars/1_vars.config b/rel/vars/1_vars.config new file mode 100644 index 000000000..6913cde6a --- /dev/null +++ b/rel/vars/1_vars.config @@ -0,0 +1,55 @@ +%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- +%% ex: ts=4 sw=4 et + +{devrel, true}. + +%% Platform-specific installation paths +{platform_bin_dir, "./bin"}. +{platform_data_dir, "./data"}. +{platform_etc_dir, "./etc"}. +{platform_lib_dir, "./lib"}. +{platform_log_dir, "./log"}. + +%% +%% etc/app.config +%% +{cs_ip, "127.0.0.1"}. +{cs_port, 15018}. +{admin_ip, "127.0.0.1"}. +{admin_port, 15019}. +{riak_ip, "127.0.0.1"}. +{riak_pb_port, 10017}. +{auth_bypass, false}. +{admin_key, "admin-key"}. +{stanchion_ip, "127.0.0.1"}. +{stanchion_port, 8085}. +{stanchion_ssl, off}. +{cs_version, 010300}. +{rewrite_module, riak_cs_s3_rewrite}. +{auth_module, riak_cs_s3_auth}. + +%% +%% etc/vm.args +%% +{node, "rcs-dev1@127.0.0.1"}. +{crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. + +%% +%% bin/riak_cs +%% +{data_dir, "{{target_dir}}/data"}. +{runner_script_dir, "\`cd \\`dirname $0\\` && /bin/pwd\`"}. +{runner_base_dir, "{{runner_script_dir}}/.."}. +{runner_etc_dir, "$RUNNER_BASE_DIR/etc"}. +{runner_log_dir, "$RUNNER_BASE_DIR/log"}. +{runner_lib_dir, "$RUNNER_BASE_DIR/lib"}. +{runner_patch_dir, "$RUNNER_BASE_DIR/lib/basho-patches"}. +{pipe_dir, "/tmp/$RUNNER_BASE_DIR/"}. +{runner_user, ""}. +{runner_wait_process, "riak_cs_put_fsm_sup"}. + +%% +%% cuttlefish +%% +{cuttlefish, "on"}. +{cuttlefish_conf, "riak-cs.conf"}. From 151102f5e2e47083512863d1a05efd390766c489 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 22 Apr 2021 18:46:46 +0300 Subject: [PATCH 101/831] bump riak_repl_pb_api and some other deps --- rebar.config | 2 +- rebar.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rebar.config b/rebar.config index cd982163d..936229995 100644 --- a/rebar.config +++ b/rebar.config @@ -28,7 +28,7 @@ , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "riak_kv-3.0.2"}}} , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {riak_repl_pb_api,".*", {git,"git://github.com/hmmr/riak_repl_pb_api.git", {tag, "riak_kv-3.0.2"}}} + , {riak_repl_pb_api,".*", {git,"git://github.com/hmmr/riak_repl_pb_api.git", {tag, "riak_kv-3.0.3"}}} , {riak_cs_multibag,".*", {git,"git://github.com/hmmr/riak_cs_multibag.git", {tag, "riak_kv-3.0.2"}}} , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} ] diff --git a/rebar.lock b/rebar.lock index d9ddb5b57..bc678fc14 100644 --- a/rebar.lock +++ b/rebar.lock @@ -18,8 +18,8 @@ {ref,"152bb8eb254c225ebd8c579f9603f44b50df44ec"}}, 0}, {<<"meck">>, - {git,"https://github.com/basho/meck.git", - {ref,"dde759050eff19a1a80fd854d7375174b191665d"}}, + {git,"https://github.com/eproxus/meck.git", + {ref,"4ecc1ae9089edc6977e8c8c4cd41081513cc5590"}}, 2}, {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"2.20.1">>},0}, {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.0">>},0}, @@ -29,7 +29,7 @@ 0}, {<<"protobuffs">>, {git,"https://github.com/basho/erlang_protobuffs.git", - {ref,"43c549e6ccd4524245190a906bb4344039bd2995"}}, + {ref,"098efad8f85dfe556d64e2cf6ce31f2075808f67"}}, 1}, {<<"quickrand">>, {git,"https://github.com/okeuday/quickrand.git", @@ -40,16 +40,16 @@ {ref,"230127a0acc537094225ba802e880275e2455480"}}, 0}, {<<"riak_pb">>, - {git,"https://github.com/basho/riak_pb", + {git,"git://github.com/basho/riak_pb.git", {ref,"b8a946426e0254abba2015f9b5c1a9db4e2405bc"}}, 1}, {<<"riak_repl_pb_api">>, {git,"git://github.com/hmmr/riak_repl_pb_api.git", - {ref,"0b9eed638aef7e84a0ac8f895d670b9201522bf6"}}, + {ref,"8e5de11e1404382f5a6986aad0d4057c5c89d4cf"}}, 0}, {<<"riakc">>, {git,"git://github.com/basho/riak-erlang-client", - {ref,"ea4fcd062f55a67e31c7294a1b8b8ccd957526c8"}}, + {ref,"e51b233a43cfe606bbab9b0e2881609f6d846f0e"}}, 0}, {<<"setup">>,{pkg,<<"setup">>,<<"2.0.2">>},1}, {<<"syslog">>, From aa9de8de03c4c7cfb216565ddf729bd319ddd987 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 22 Apr 2021 23:37:14 +0300 Subject: [PATCH 102/831] initial docker support --- .dockerignore | 4 ++++ Dockerfile | 38 +++++++++++++++++++++++--------------- rebar.config | 5 +++++ rel/docker/tini | Bin 0 -> 24064 bytes rel/docker/vars.config | 41 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 73 insertions(+), 15 deletions(-) create mode 100644 .dockerignore create mode 100644 rel/docker/tini create mode 100644 rel/docker/vars.config diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..76afb090b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +client_tests/ +log/ +misc/ +dev/ diff --git a/Dockerfile b/Dockerfile index 39366d258..2c723182d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,28 +1,36 @@ -# This is a draft Dockerfile for riak_cs -# NOT TESTED! Final version will be re-uploaded when ready. - FROM erlang:22.3.4.10 AS compile-image +ARG stanchion_host=127.0.0.1 \ + stanchion_port=8085 \ + riak_host=127.0.0.1 \ + riak_pb_port=8087 \ + cs_ip=127.0.0.1 \ + cs_port=8080 \ + admin_ip=127.0.0.1 \ + admin_port=8000 + +EXPOSE $stanchion_port + WORKDIR /usr/src/riak_cs COPY . /usr/src/riak_cs -RUN rebar3 as prod tar - -RUN mkdir -p /opt/riak_cs -RUN tar -zxvf /usr/src/riak_cs/_build/prod/rel/*/*.tar.gz -C /opt/riak_cs +RUN sed -i \ + -e "s/@stanchion_port@/${stanchion_port}/" \ + -e "s/@riak_pb_port@/${riak_pb_port}/" \ + rel/docker/vars.config +RUN ./rebar3 as docker release FROM debian:buster AS runtime-image -# the usual dance with libssl and crypto (depending on what's shipped -# with this debian version): -#RUN apt-get update && apt-get -y install libssl1.1 +RUN apt-get update && apt-get -y install libssl1.1 + +COPY --from=compile-image /usr/src/riak_cs/_build/docker/rel/riak-cs /opt/riak-cs -COPY --from=compile-image /opt/riak_cs /opt/riak_cs +RUN mkdir -p /etc/riak-cs /var/lib/riak-cs /var/lib/riak-cs/data +RUN mv /opt/riak-cs/etc/riak-cs.conf /etc/riak-cs -# Add Tini -- this is meant to solve the PID 1 zombie reaping problem -ENV TINI_VERSION v0.18.0 -ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini +COPY --from=compile-image /usr/src/riak_cs/rel/docker/tini /tini RUN chmod +x /tini ENTRYPOINT ["/tini", "--"] -CMD ["/opt/riak_cs/bin/riak_cs", "foreground"] +CMD ["/opt/riak-cs/bin/riak-cs", "foreground"] diff --git a/rebar.config b/rebar.config index 936229995..716660914 100644 --- a/rebar.config +++ b/rebar.config @@ -64,6 +64,11 @@ } ] } + , {docker, [ {relx, [ {overlay_vars, "rel/docker/vars.config"} + ] + } + ] + } , {rpm, [ {relx, [ {overlay_vars, "rel/pkg/rpm/vars.config"}, {overlay, [ {template, "rel/files/riak_cs", "usr/sbin/riak_cs"} , {template, "rel/pkg/rpm/init.script", "etc/init.d/init.script"} diff --git a/rel/docker/tini b/rel/docker/tini new file mode 100644 index 0000000000000000000000000000000000000000..86cb766c6b8af2564ac9201df913fe079acae3d1 GIT binary patch literal 24064 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 Date: Thu, 22 Apr 2021 23:38:49 +0300 Subject: [PATCH 103/831] some packaging touchups and fixes --- rebar.config | 3 +- rel/pkg/rpm/init.script | 8 ++-- rel/pkg/rpm/riak | 17 -------- rel/pkg/rpm/riak-cs | 17 ++++++++ rel/pkg/rpm/specfile | 65 +++++++++++++++-------------- rel/pkg/rpm/vars.config | 91 ++++++++++++++++++++--------------------- rel/vars.config | 17 ++------ 7 files changed, 101 insertions(+), 117 deletions(-) delete mode 100755 rel/pkg/rpm/riak create mode 100755 rel/pkg/rpm/riak-cs diff --git a/rebar.config b/rebar.config index 716660914..d0ce1ae32 100644 --- a/rebar.config +++ b/rebar.config @@ -70,8 +70,7 @@ ] } , {rpm, [ {relx, [ {overlay_vars, "rel/pkg/rpm/vars.config"}, - {overlay, [ {template, "rel/files/riak_cs", "usr/sbin/riak_cs"} - , {template, "rel/pkg/rpm/init.script", "etc/init.d/init.script"} + {overlay, [ {template, "rel/pkg/rpm/init.script", "etc/init.d/init.script"} ] } ] diff --git a/rel/pkg/rpm/init.script b/rel/pkg/rpm/init.script index ec184dff3..4fe9a8933 100755 --- a/rel/pkg/rpm/init.script +++ b/rel/pkg/rpm/init.script @@ -12,8 +12,8 @@ RETVAL=0 PATH=/sbin:/usr/sbin:/bin:/usr/bin -DESC="Riak KV Database" -NAME=riak +DESC="Riak CS Database" +NAME=riak-cs DAEMON=/usr/sbin/$NAME lockfile=/var/lock/subsys/$NAME pidfile=/var/run/$NAME/$NAME.pid @@ -49,7 +49,7 @@ check_pid_status() { start() { # Start daemons. - echo -n $"Starting riak: " + echo -n $"Starting riak-cs: " $DAEMON start RETVAL=$? if [ $RETVAL -eq 0 ]; then @@ -64,7 +64,7 @@ start() { stop() { # Stop daemon. - echo -n $"Shutting down riak: " + echo -n $"Shutting down riak-cs: " $DAEMON stop 2>/dev/null for n in $(seq 1 10); do sleep 1 diff --git a/rel/pkg/rpm/riak b/rel/pkg/rpm/riak deleted file mode 100755 index 3a6372f53..000000000 --- a/rel/pkg/rpm/riak +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -COMMAND={{platform_bin_dir}}/riak - -if [[ $EUID -ne 0 ]]; then - echo "You need to be root or use sudo to run this command." - exit 1 -fi - -case "$1" in - start|console|foreground) - su - riak -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches" - ;; - *) - su - riak -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*}" - ;; -esac diff --git a/rel/pkg/rpm/riak-cs b/rel/pkg/rpm/riak-cs new file mode 100755 index 000000000..c3090048f --- /dev/null +++ b/rel/pkg/rpm/riak-cs @@ -0,0 +1,17 @@ +#!/bin/sh + +COMMAND={{platform_bin_dir}}/riak-cs + +if [[ $EUID -ne 0 ]]; then + echo "You need to be root or use sudo to run this command." + exit 1 +fi + +case "$1" in + start|console|foreground) + su - riak-cs -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches" + ;; + *) + su - riak-cs -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*}" + ;; +esac diff --git a/rel/pkg/rpm/specfile b/rel/pkg/rpm/specfile index 58a3a3d1f..dc5bb4bf5 100644 --- a/rel/pkg/rpm/specfile +++ b/rel/pkg/rpm/specfile @@ -18,10 +18,10 @@ ## ## ------------------------------------------------------------------- -Name: riak +Name: riak-cs Version: %{_version} Release: %{_release}%{?dist} -License: "Apacke 2.0" +License: "Apache 2.0" Group: Development/Libraries Source: %{_tarname} URL: "https://riak.com" @@ -29,21 +29,20 @@ Vendor: "Riak" Packager: "Riak Package Maint" <"packaging@riak.com"> BuildRoot: %{_tmppath}/%{name}-%{_revision}-%{release}-root Summary: "Riak is a distributed data store" -Obsoletes: riak %description "Riak is a distributed data store" -%define init_script %{_sysconfdir}/init.d/riak +%define init_script %{_sysconfdir}/init.d/riak-cs %define debug_package %{nil} %define __prelink_undo_cmd /bin/cat prelink library -%define platform_data_dir %{_localstatedir}/lib/riak -%define platform_etc_dir %{_sysconfdir}/riak -%define platform_base_dir %{_libdir}/riak +%define platform_data_dir %{_localstatedir}/lib/riak-cs +%define platform_etc_dir %{_sysconfdir}/riak-cs +%define platform_base_dir %{_libdir}/riak-cs %define platform_bin_dir %{platform_base_dir}/bin %define platform_lib_dir %{platform_base_dir}/lib -%define platform_log_dir %{_localstatedir}/log/riak +%define platform_log_dir %{_localstatedir}/log/riak-cs %prep @@ -64,17 +63,17 @@ EOF make rel-rpm %install -%define relpath %{_builddir}/%{buildsubdir}/_build/rpm/rel/riak -%define buildroot_lib %{buildroot}%{_libdir}/riak -%define buildroot_etc %{buildroot}%{_sysconfdir}/riak +%define relpath %{_builddir}/%{buildsubdir}/_build/rpm/rel/riak-cs +%define buildroot_lib %{buildroot}%{_libdir}/riak-cs +%define buildroot_etc %{buildroot}%{_sysconfdir}/riak-cs %define buildroot_bin %{buildroot_lib}/bin mkdir -p %{buildroot_etc} mkdir -p %{buildroot_lib} mkdir -p %{buildroot_bin} mkdir -p %{buildroot}%{_sbindir} -mkdir -p %{buildroot}%{_localstatedir}/lib/riak -mkdir -p %{buildroot}%{_localstatedir}/log/riak +mkdir -p %{buildroot}%{_localstatedir}/lib/riak-cs +mkdir -p %{buildroot}%{_localstatedir}/log/riak-cs cp -R %{relpath}/lib %{buildroot_lib} cp -R %{relpath}/erts-* %{buildroot_lib} @@ -87,16 +86,16 @@ if [ -d %{relpath}/bin ]; then \ cd - fi -cp %{relpath}/usr/sbin/riak %{buildroot}%{_sbindir} -cp %{relpath}/etc/riak.conf %{buildroot_etc} +cp %{relpath}/usr/sbin/riak-cs %{buildroot}%{_sbindir} +cp %{relpath}/etc/riak-cs.conf %{buildroot_etc} cp %{relpath}/etc/advanced.config %{buildroot_etc} -mkdir -p %{buildroot}%{_localstatedir}/lib/riak +mkdir -p %{buildroot}%{_localstatedir}/lib/riak-cs cp -R %{relpath}/data/* \ - %{buildroot}%{_localstatedir}/lib/riak + %{buildroot}%{_localstatedir}/lib/riak-cs mkdir -p %{buildroot}%{_sysconfdir}/init.d -install -m755 %{relpath}/etc/init.d/init.script %{buildroot}%{_sysconfdir}/init.d/riak +install -m755 %{relpath}/etc/init.d/init.script %{buildroot}%{_sysconfdir}/init.d/riak-cs # Needed to work around check-rpaths which seems to be hardcoded into recent # RPM releases @@ -105,18 +104,18 @@ export QA_RPATHS=3 %pre # Pre-install script -if ! getent group riak >/dev/null 2>&1; then - groupadd -r riak +if ! getent group riak-cs >/dev/null 2>&1; then + groupadd -r riak-cs fi -if getent passwd riak >/dev/null 2>&1; then - usermod -d %{_localstatedir}/lib/riak riak || true +if getent passwd riak-cs >/dev/null 2>&1; then + usermod -d %{_localstatedir}/lib/riak-cs riak-cs || true else - useradd -r -g riak \ - --home %{_localstatedir}/lib/riak \ + useradd -r -g riak-cs \ + --home %{_localstatedir}/lib/riak-cs \ --comment "Riak User" \ --shell /bin/bash \ - riak + riak-cs fi @@ -125,7 +124,7 @@ fi # For distros with SELinux (RHEL/Fedora) if [ `which selinuxenabled > /dev/null 2>&1` ] ; then # Fixup perms for SELinux (if it is enabled) - selinuxenabled && find %{_localstatedir}/lib/riak -name "*.so" -exec chcon -t textrel_shlib_t {} \; + selinuxenabled && find %{_localstatedir}/lib/riak-cs -name "*.so" -exec chcon -t textrel_shlib_t {} \; fi %preun @@ -133,22 +132,22 @@ fi # Only on uninstall, not upgrades if [ "$1" = 0 ] ; then - /sbin/service riak stop > /dev/null 2>&1 + /sbin/service riak-cs stop > /dev/null 2>&1 fi exit 0 # Man pages are optional and might be missing, read from file %files -%defattr(-,riak,riak) -%{_localstatedir}/lib/riak -%{_localstatedir}/log/riak +%defattr(-,riak-cs,riak-cs) +%{_localstatedir}/lib/riak-cs +%{_localstatedir}/log/riak-cs %{_libdir}/* %defattr(-,root,root) -%{_sysconfdir}/init.d/riak -%dir %{_sysconfdir}/riak +%{_sysconfdir}/init.d/riak-cs +%dir %{_sysconfdir}/riak-cs /usr/sbin/* -%config(noreplace) %{_sysconfdir}/riak/* +%config(noreplace) %{_sysconfdir}/riak-cs/* %clean rm -rf %{buildroot} diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index c2c590e02..117fe4f16 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -2,59 +2,56 @@ %% ex: ft=erlang ts=4 sw=4 et %% Platform-specific installation paths -{platform_bin_dir, "/usr/lib64/riak/bin"}. -{platform_data_dir, "/var/lib/riak"}. -{platform_etc_dir, "/etc/riak"}. -{platform_base_dir, "/usr/lib64/riak"}. -{platform_lib_dir, "/usr/lib64/riak/lib"}. -{platform_log_dir, "/var/log/riak"}. -{platform_gen_dir, "/var/lib/riak"}. - -{runner_script_dir, "/usr/lib64/riak/bin"}. -{runner_base_dir, "/usr/lib64/riak"}. -{runner_etc_dir, "/etc/riak"}. -{runner_log_dir, "/var/log/riak"}. -{runner_user, "riak"}. -{runner_lib_dir, "/usr/lib64/riak/lib"}. -{runner_patch_dir, "/usr/lib64/riak/lib/patches"}. -{pipe_dir, "/tmp/riak/"}. -{pid_dir, "/var/run/riak"}. +{platform_bin_dir, "/usr/lib64/riak-cs/bin"}. +{platform_data_dir, "/var/lib/riak-cs"}. +{platform_etc_dir, "/etc/riak-cs"}. +{platform_base_dir, "/usr/lib64/riak-cs"}. +{platform_lib_dir, "/usr/lib64/riak-cs/lib"}. +{platform_log_dir, "/var/log/riak-cs"}. +{platform_gen_dir, "/var/lib/riak-cs"}. + +{runner_script_dir, "/usr/lib64/riak-cs/bin"}. +{runner_base_dir, "/usr/lib64/riak-cs"}. +{runner_etc_dir, "/etc/riak-cs"}. +{runner_log_dir, "/var/log/riak-cs"}. +{runner_user, "riak-cs"}. +{runner_lib_dir, "/usr/lib64/riak-cs/lib"}. +{runner_patch_dir, "/usr/lib64/riak-cs/lib/patches"}. +{pipe_dir, "/tmp/riak-cs/"}. +{pid_dir, "/var/run/riak-cs"}. {package_replacement_line, ""}. {package_conflicts_line, ""}. -{cluster_manager_ip, "127.0.0.1"}. -{cluster_manager_port, 9080}. +{cs_ip, "127.0.0.1"}. +{cs_port, 8080}. +{admin_ip, "127.0.0.1"}. +{admin_port, 8000}. +{riak_ip, "127.0.0.1"}. +{riak_pb_port, 8087}. +{auth_bypass, false}. +{admin_key, "admin-key"}. +{stanchion_ip, "127.0.0.1"}. +{stanchion_port, 8085}. +{stanchion_ssl, off}. +{cs_version, 030000}. +{rewrite_module, riak_cs_s3_rewrite}. +{auth_module, riak_cs_s3_auth}. -{web_ip, "127.0.0.1"}. -{web_port, 8098}. -{handoff_ip, "0.0.0.0"}. -{handoff_port, 8099}. -{pb_ip, "127.0.0.1"}. -{pb_port, 8087}. - -{storage_backend, "bitcask"}. - -{sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. -{sasl_log_dir, "{{platform_log_dir}}/sasl"}. -{repl_data_root, "{{platform_data_dir}}/riak_repl/"}. -{crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. - -%% -%% cuttlefish -%% {cuttlefish, "on"}. -{cuttlefish_conf, "riak.conf"}. +{cuttlefish_conf, "riak-cs.conf"}. + -%% -%% yokozuna -%% -{yz_solr_port, 8093}. -{yz_solr_jmx_port, 8985}. +{data_dir, "{{platform_data_dir}}/data"}. +{runner_script_dir, "\$(cd \\`dirname $0\\` && /bin/pwd)"}. +{runner_base_dir, "{{runner_script_dir}}/.."}. +{runner_etc_dir, "$RUNNER_BASE_DIR/etc"}. +{runner_log_dir, "$RUNNER_BASE_DIR/log"}. +{runner_lib_dir, "$RUNNER_BASE_DIR/lib"}. +{runner_patch_dir, "$RUNNER_BASE_DIR/lib/patches"}. +{pipe_dir, "/tmp/$RUNNER_BASE_DIR/"}. +{runner_user, ""}. +{runner_wait_process, "riak_cs_put_fsm_sup"}. -%% lager {console_log_default, file}. -%% -%% etc/vm.args -%% -{node, "riak@127.0.0.1"}. +{node, "riak-cs@127.0.0.1"}. diff --git a/rel/vars.config b/rel/vars.config index bb0082342..d40e8b179 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -8,7 +8,7 @@ {platform_log_dir, "./log"}. %% -%% riak_cs.conf +%% riak-cs.conf %% {cs_ip, "127.0.0.1"}. {cs_port, 8080}. @@ -25,32 +25,21 @@ {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. -%% -%% etc/vm.args -%% {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -%% -%% bin/riak_cs -%% {data_dir, "{{target_dir}}/data"}. -{runner_script_dir, "\`cd \\`dirname $0\\` && /bin/pwd\`"}. +{runner_script_dir, "\$(cd \\`dirname $0\\` && /bin/pwd)"}. {runner_base_dir, "{{runner_script_dir}}/.."}. {runner_etc_dir, "$RUNNER_BASE_DIR/etc"}. {runner_log_dir, "$RUNNER_BASE_DIR/log"}. {runner_lib_dir, "$RUNNER_BASE_DIR/lib"}. -{runner_patch_dir, "$RUNNER_BASE_DIR/lib/basho-patches"}. +{runner_patch_dir, "$RUNNER_BASE_DIR/lib/patches"}. {pipe_dir, "/tmp/$RUNNER_BASE_DIR/"}. {runner_user, ""}. {runner_wait_process, "riak_cs_put_fsm_sup"}. - -%% logger {console_log_default, file}. -%% -%% cuttlefish -%% {cuttlefish, "on"}. {cuttlefish_conf, "riak-cs.conf"}. From 486c22ad624667adbb3f7917c455f97f0bf5ab7b Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 23 Apr 2021 14:35:46 +0300 Subject: [PATCH 104/831] typo --- rel/docker/vars.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rel/docker/vars.config b/rel/docker/vars.config index 1f36486dc..eb2912eeb 100644 --- a/rel/docker/vars.config +++ b/rel/docker/vars.config @@ -10,7 +10,7 @@ {cs_port, @cs_port@}. {admin_ip, "@admin_ip@"}. {admin_port, @admin_port@}. -{riak_ip, "@riak_host"}. +{riak_ip, "@riak_host@"}. {riak_pb_port, @riak_pb_port@}. {auth_bypass, false}. {admin_key, "admin-key"}. From ceb57954bbbe3190dc6f299536b90de326053faa Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 23 Apr 2021 15:24:41 +0300 Subject: [PATCH 105/831] Dockerfile fixups --- Dockerfile | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2c723182d..cfb67c817 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,9 +4,9 @@ ARG stanchion_host=127.0.0.1 \ stanchion_port=8085 \ riak_host=127.0.0.1 \ riak_pb_port=8087 \ - cs_ip=127.0.0.1 \ + cs_host=127.0.0.1 \ cs_port=8080 \ - admin_ip=127.0.0.1 \ + admin_host=127.0.0.1 \ admin_port=8000 EXPOSE $stanchion_port @@ -15,8 +15,14 @@ WORKDIR /usr/src/riak_cs COPY . /usr/src/riak_cs RUN sed -i \ - -e "s/@stanchion_port@/${stanchion_port}/" \ - -e "s/@riak_pb_port@/${riak_pb_port}/" \ + -e "s/@cs_ip@/$cs_host/" \ + -e "s/@cs_port@/$cs_port/" \ + -e "s/@admin_ip@/$admin_host/" \ + -e "s/@admin_port@/$admin_port/" \ + -e "s/@stanchion_ip@/$stanchion_host/" \ + -e "s/@stanchion_port@/$stanchion_port/" \ + -e "s/@riak_ip@/$riak_host/" \ + -e "s/@riak_pb_port@/$riak_pb_port/" \ rel/docker/vars.config RUN ./rebar3 as docker release From c3b178b2feeb68e776b484a61424d80386fc5f28 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 23 Apr 2021 15:25:27 +0300 Subject: [PATCH 106/831] reference docker-compose.yml for the riak_cs+stanchion+riak bundle --- misc/bundle/docker-compose.yml | 60 ++++++++++++++++++++++++++++++++ misc/bundle/riak/Dockerfile | 26 ++++++++++++++ misc/bundle/riak_cs/Dockerfile | 48 +++++++++++++++++++++++++ misc/bundle/stanchion/Dockerfile | 41 ++++++++++++++++++++++ 4 files changed, 175 insertions(+) create mode 100644 misc/bundle/docker-compose.yml create mode 100644 misc/bundle/riak/Dockerfile create mode 100644 misc/bundle/riak_cs/Dockerfile create mode 100644 misc/bundle/stanchion/Dockerfile diff --git a/misc/bundle/docker-compose.yml b/misc/bundle/docker-compose.yml new file mode 100644 index 000000000..cf46a83b9 --- /dev/null +++ b/misc/bundle/docker-compose.yml @@ -0,0 +1,60 @@ +version: "3.8" +services: + + riak_cs: + networks: + net0: + aliases: + - riak_cs + ipv4_address: 172.18.0.4 + build: + dockerfile: riak_cs/Dockerfile + context: . + ports: + - "8080:8080" + volumes: + - type: bind + source: ${RIAK_CS_DATA} + target: /var/lib/riak_cs + + stanchion: + networks: + net0: + aliases: + - stanchion + ipv4_address: 172.18.0.2 + build: + dockerfile: stanchion/Dockerfile + context: . + ports: + - "8085:8085" + volumes: + - type: bind + source: ${STANCHION_DATA} + target: /var/lib/stanchion + + riak: + image: basho/riak-kv + networks: + net0: + aliases: + - riak + ipv4_address: 172.18.0.3 + ports: + - "8087:8087" + environment: + - CLUSTER_NAME=rcs + labels: + - "com.basho.riak.cluster.name=rcs" + build: + context: . + volumes: + - type: bind + source: ${RIAK_DATA} + target: /var/lib/riak + +networks: + net0: + ipam: + config: + - subnet: "172.18.0.0/24" diff --git a/misc/bundle/riak/Dockerfile b/misc/bundle/riak/Dockerfile new file mode 100644 index 000000000..e77a2034f --- /dev/null +++ b/misc/bundle/riak/Dockerfile @@ -0,0 +1,26 @@ +FROM centos:latest + +ARG RIAK_VERSION=3.0.4 + +LABEL Description="Riak" \ + "Riak Version"="$RIAK_VERSION" + +RUN set -euxo pipefail && \ + yum install -y "http://s3.amazonaws.com/downloads.basho.com/riak/$(sed 's/.[[:digit:]]*$//' <<< "$RIAK_VERSION")/$RIAK_VERSION/rhel/6/riak-$RIAK_VERSION-1.el6.x86_64.rpm" && \ + yum install -y java && \ + yum autoremove -y && \ + yum clean all && \ + rm -rf /var/cache/yum + +COPY conf/riak.conf /etc/riak/ + +EXPOSE 8087 8098 + +RUN chown riak:riak /var/lib/riak + +#USER riak +CMD chown -R riak:riak /var/lib/riak && \ + su riak -c \ + "riak start && sleep 3 && \ + cat /var/log/riak/*; \ + tail -f /dev/null /var/log/riak/*" diff --git a/misc/bundle/riak_cs/Dockerfile b/misc/bundle/riak_cs/Dockerfile new file mode 100644 index 000000000..be4d9dd92 --- /dev/null +++ b/misc/bundle/riak_cs/Dockerfile @@ -0,0 +1,48 @@ +FROM erlang:22.3.4.10 AS compile-image + +ARG cs_host=172.18.0.4 \ + cs_port=8080 \ + admin_host=172.18.0.4 \ + admin_port=8000 \ + stanchion_host=172.18.0.2 \ + stanchion_port=8085 \ + riak_host=172.18.0.3 \ + riak_pb_port=8087 + +ENV tag="3.0.0pre1" + +WORKDIR /usr/src/riak_cs +ADD https://github.com/TI-Tokyo/riak_cs/archive/refs/tags/${tag}.tar.gz source.tar.gz +RUN tar xzf source.tar.gz +WORKDIR riak_cs-$tag + +EXPOSE $cs_port $admin_port + +RUN sed -i \ + -e "s/@cs_ip@/$cs_host/" \ + -e "s/@cs_port@/$cs_port/" \ + -e "s/@admin_ip@/$admin_host/" \ + -e "s/@admin_port@/$admin_port/" \ + -e "s/@stanchion_ip@/$stanchion_host/" \ + -e "s/@stanchion_port@/$stanchion_port/" \ + -e "s/@riak_ip@/$riak_host/" \ + -e "s/@riak_pb_port@/$riak_pb_port/" \ + rel/docker/vars.config +RUN ./rebar3 as docker release +RUN mv _build/docker/rel/riak-cs ../rel +RUN mv rel/docker/tini .. + +FROM debian:buster AS runtime-image + +RUN apt-get update && apt-get -y install libssl1.1 + +COPY --from=compile-image /usr/src/riak_cs/rel /opt/riak-cs + +RUN mkdir -p /etc/riak-cs /var/lib/riak-cs /var/lib/riak-cs/data +RUN mv /opt/riak-cs/etc/riak-cs.conf /etc/riak-cs + +COPY --from=compile-image /usr/src/riak_cs/tini /tini +RUN chmod +x /tini + +ENTRYPOINT ["/tini", "--"] +CMD ["/opt/riak-cs/bin/riak-cs", "foreground"] diff --git a/misc/bundle/stanchion/Dockerfile b/misc/bundle/stanchion/Dockerfile new file mode 100644 index 000000000..f191cae96 --- /dev/null +++ b/misc/bundle/stanchion/Dockerfile @@ -0,0 +1,41 @@ +FROM erlang:22.3.4.10 AS compile-image + +ARG riak_host=172.18.0.3 \ + riak_pb_port=8087 \ + stanchion_host=172.18.0.2 \ + stanchion_port=8085 + +ENV tag="3.0.0pre1" + +EXPOSE $stanchion_port + +WORKDIR /usr/src/stanchion +ADD https://github.com/TI-Tokyo/stanchion/archive/refs/tags/$tag.tar.gz source.tar.gz +RUN tar xzf source.tar.gz +WORKDIR stanchion-$tag + +RUN sed -i \ + -e "s/@stanchion_ip@/$stanchion_host/" \ + -e "s/@stanchion_port@/$stanchion_port/" \ + -e "s/@riak_ip@/$riak_host/" \ + -e "s/@riak_pb_port@/$riak_pb_port/" \ + rel/docker/vars.config + +RUN ./rebar3 as docker release +RUN mv _build/docker/rel/stanchion ../rel +RUN mv rel/docker/tini .. + +FROM debian:buster AS runtime-image + +RUN apt-get update && apt-get -y install libssl1.1 + +COPY --from=compile-image /usr/src/stanchion/rel /opt/stanchion + +RUN mkdir -p /etc/stanchion /var/lib/stanchion /var/lib/stanchion/data +RUN mv /opt/stanchion/etc/stanchion.conf /etc/stanchion + +COPY --from=compile-image /usr/src/stanchion/tini /tini +RUN chmod +x /tini + +ENTRYPOINT ["/tini", "--"] +CMD ["/opt/stanchion/bin/stanchion", "foreground"] From 0ba5e5c4b5d563f30bba83acfc111e6ce4678b5f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 23 Apr 2021 15:57:26 +0300 Subject: [PATCH 107/831] typo --- rel/docker/vars.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rel/docker/vars.config b/rel/docker/vars.config index eb2912eeb..dff66edb8 100644 --- a/rel/docker/vars.config +++ b/rel/docker/vars.config @@ -10,7 +10,7 @@ {cs_port, @cs_port@}. {admin_ip, "@admin_ip@"}. {admin_port, @admin_port@}. -{riak_ip, "@riak_host@"}. +{riak_ip, "@riak_ip@"}. {riak_pb_port, @riak_pb_port@}. {auth_bypass, false}. {admin_key, "admin-key"}. From 5d9549f7b4c2a4da097a26bd7c2a61ea9e3aaee9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 24 Apr 2021 14:05:18 +0300 Subject: [PATCH 108/831] dockerization fixups --- misc/bundle/docker-compose.yml | 51 ++++++++++++++++++-------------- misc/bundle/riak/Dockerfile | 51 ++++++++++++++++++++------------ misc/bundle/riak_cs/Dockerfile | 14 +++++---- misc/bundle/stanchion/Dockerfile | 14 ++++----- rel/docker/vars.config | 14 ++++----- 5 files changed, 83 insertions(+), 61 deletions(-) diff --git a/misc/bundle/docker-compose.yml b/misc/bundle/docker-compose.yml index cf46a83b9..2b71a16b9 100644 --- a/misc/bundle/docker-compose.yml +++ b/misc/bundle/docker-compose.yml @@ -1,57 +1,64 @@ version: "3.8" services: - riak_cs: + riak: networks: net0: aliases: - - riak_cs - ipv4_address: 172.18.0.4 + - riak + ipv4_address: 172.18.0.3 + ports: + - "8087:8087" + - "8098:8098" + ulimits: + nofile: + soft: 65535 + hard: 65535 build: - dockerfile: riak_cs/Dockerfile + dockerfile: riak/Dockerfile context: . - ports: - - "8080:8080" volumes: - type: bind - source: ${RIAK_CS_DATA} - target: /var/lib/riak_cs + source: ${RIAK_DATA} + target: /var/lib/riak/data stanchion: + depends_on: + - riak networks: net0: aliases: - stanchion ipv4_address: 172.18.0.2 + ports: + - "8085:8085" build: dockerfile: stanchion/Dockerfile context: . - ports: - - "8085:8085" volumes: - type: bind source: ${STANCHION_DATA} - target: /var/lib/stanchion + target: /var/lib/stanchion/data - riak: - image: basho/riak-kv + riak_cs: + depends_on: + - riak + - stanchion networks: net0: aliases: - - riak - ipv4_address: 172.18.0.3 + - riak_cs + ipv4_address: 172.18.0.4 ports: - - "8087:8087" - environment: - - CLUSTER_NAME=rcs - labels: - - "com.basho.riak.cluster.name=rcs" + - "8080:8080" + - "8000:8000" build: + dockerfile: riak_cs/Dockerfile context: . volumes: - type: bind - source: ${RIAK_DATA} - target: /var/lib/riak + source: ${RIAK_CS_DATA} + target: /var/lib/riak_cs/data networks: net0: diff --git a/misc/bundle/riak/Dockerfile b/misc/bundle/riak/Dockerfile index e77a2034f..ebc6a6dc9 100644 --- a/misc/bundle/riak/Dockerfile +++ b/misc/bundle/riak/Dockerfile @@ -1,26 +1,39 @@ -FROM centos:latest +FROM debian:buster -ARG RIAK_VERSION=3.0.4 +ARG RIAK_VERSION=3.0.4 \ + listener_ip=172.18.0.3 \ + listener_pb_port=8087 \ + listener_http_port=8098 -LABEL Description="Riak" \ - "Riak Version"="$RIAK_VERSION" +ENV PKG=riak_${RIAK_VERSION}-OTP22.3_amd64.deb -RUN set -euxo pipefail && \ - yum install -y "http://s3.amazonaws.com/downloads.basho.com/riak/$(sed 's/.[[:digit:]]*$//' <<< "$RIAK_VERSION")/$RIAK_VERSION/rhel/6/riak-$RIAK_VERSION-1.el6.x86_64.rpm" && \ - yum install -y java && \ - yum autoremove -y && \ - yum clean all && \ - rm -rf /var/cache/yum +RUN apt-get update && apt-get install -y wget logrotate sudo +RUN wget -q https://files.tiot.jp/riak/kv/3.0/${RIAK_VERSION}/debian/10/${PKG} +RUN dpkg -i ${PKG} && rm ${PKG} -COPY conf/riak.conf /etc/riak/ +RUN sed -i \ + -e "s|listener.protobuf.internal = 127.0.0.1:8087|listener.protobuf.internal = 0.0.0.0:${listener_pb_port}|" \ + -e "s|listener.http.internal = 127.0.0.1:8098|listener.http.internal = 0.0.0.0:${listener_http_port}|" \ + -e "s|storage_backend = bitcask|storage_backend = multi|" \ + /etc/riak/riak.conf +RUN echo "buckets.default.allow_mult = true" >>/etc/riak/riak.conf +RUN echo "buckets.default.merge_strategy = 2" >>/etc/riak/riak.conf -EXPOSE 8087 8098 +RUN sed -i \ + -e "s|]\\.|, \ + {riak_kv, [ \ + {multi_backend, \ + [{be_default,riak_kv_eleveldb_backend, \ + [{max_open_files,20}]}, \ + {be_blocks,riak_kv_bitcask_backend, \ + []}]}, \ + {multi_backend_default,be_default}, \ + {multi_backend_prefix_list,[{<<\"0b:\">>,be_blocks}]}, \ + {storage_backend,riak_kv_multi_backend} \ + ]} \ + ].|" \ + /etc/riak/advanced.config -RUN chown riak:riak /var/lib/riak +EXPOSE ${listener_pb_port} ${listener_http_port} -#USER riak -CMD chown -R riak:riak /var/lib/riak && \ - su riak -c \ - "riak start && sleep 3 && \ - cat /var/log/riak/*; \ - tail -f /dev/null /var/log/riak/*" +CMD riak foreground diff --git a/misc/bundle/riak_cs/Dockerfile b/misc/bundle/riak_cs/Dockerfile index be4d9dd92..aa090bcfd 100644 --- a/misc/bundle/riak_cs/Dockerfile +++ b/misc/bundle/riak_cs/Dockerfile @@ -7,6 +7,7 @@ ARG cs_host=172.18.0.4 \ stanchion_host=172.18.0.2 \ stanchion_port=8085 \ riak_host=172.18.0.3 \ + riak_http_port=8098 \ riak_pb_port=8087 ENV tag="3.0.0pre1" @@ -28,21 +29,22 @@ RUN sed -i \ -e "s/@riak_ip@/$riak_host/" \ -e "s/@riak_pb_port@/$riak_pb_port/" \ rel/docker/vars.config + RUN ./rebar3 as docker release RUN mv _build/docker/rel/riak-cs ../rel -RUN mv rel/docker/tini .. +RUN echo "riak:${riak_http_port}/ping" >/tmp/riak_host + FROM debian:buster AS runtime-image -RUN apt-get update && apt-get -y install libssl1.1 +RUN apt-get update && apt-get -y install libssl1.1 curl COPY --from=compile-image /usr/src/riak_cs/rel /opt/riak-cs +COPY --from=compile-image /tmp/riak_host /tmp/riak_host RUN mkdir -p /etc/riak-cs /var/lib/riak-cs /var/lib/riak-cs/data RUN mv /opt/riak-cs/etc/riak-cs.conf /etc/riak-cs -COPY --from=compile-image /usr/src/riak_cs/tini /tini -RUN chmod +x /tini +RUN echo "anonymous_user_creation = on" >>/etc/riak-cs/riak-cs.conf -ENTRYPOINT ["/tini", "--"] -CMD ["/opt/riak-cs/bin/riak-cs", "foreground"] +CMD while ! curl -s $(cat /tmp/riak_host); do sleep 1; done && /opt/riak-cs/bin/riak-cs foreground diff --git a/misc/bundle/stanchion/Dockerfile b/misc/bundle/stanchion/Dockerfile index f191cae96..b76aa7125 100644 --- a/misc/bundle/stanchion/Dockerfile +++ b/misc/bundle/stanchion/Dockerfile @@ -2,6 +2,7 @@ FROM erlang:22.3.4.10 AS compile-image ARG riak_host=172.18.0.3 \ riak_pb_port=8087 \ + riak_http_port=8098 \ stanchion_host=172.18.0.2 \ stanchion_port=8085 @@ -23,19 +24,18 @@ RUN sed -i \ RUN ./rebar3 as docker release RUN mv _build/docker/rel/stanchion ../rel -RUN mv rel/docker/tini .. + +RUN echo "riak:${riak_http_port}/ping" >/tmp/riak_host + FROM debian:buster AS runtime-image -RUN apt-get update && apt-get -y install libssl1.1 +RUN apt-get update && apt-get -y install libssl1.1 curl COPY --from=compile-image /usr/src/stanchion/rel /opt/stanchion +COPY --from=compile-image /tmp/riak_host /tmp/riak_host RUN mkdir -p /etc/stanchion /var/lib/stanchion /var/lib/stanchion/data RUN mv /opt/stanchion/etc/stanchion.conf /etc/stanchion -COPY --from=compile-image /usr/src/stanchion/tini /tini -RUN chmod +x /tini - -ENTRYPOINT ["/tini", "--"] -CMD ["/opt/stanchion/bin/stanchion", "foreground"] +CMD while ! curl -s $(cat /tmp/riak_host); do sleep 1; done && /opt/stanchion/bin/stanchion foreground diff --git a/rel/docker/vars.config b/rel/docker/vars.config index dff66edb8..1c4031886 100644 --- a/rel/docker/vars.config +++ b/rel/docker/vars.config @@ -6,7 +6,7 @@ {platform_lib_dir, "/opt/riak-cs/lib"}. {platform_log_dir, "/var/log/riak-cs"}. -{cs_ip, "@cs_host@"}. +{cs_ip, "@cs_ip@"}. {cs_port, @cs_port@}. {admin_ip, "@admin_ip@"}. {admin_port, @admin_port@}. @@ -26,12 +26,12 @@ {data_dir, "{{platform_data_dir}}/data"}. {runner_script_dir, "{{platform_bin_dir}}"}. -{runner_base_dir, "{{runner_script_dir}}/.."}. -{runner_etc_dir, "$RUNNER_BASE_DIR/etc"}. -{runner_log_dir, "$RUNNER_BASE_DIR/log"}. -{runner_lib_dir, "$RUNNER_BASE_DIR/lib"}. -{runner_patch_dir, "$RUNNER_BASE_DIR/lib/patches"}. -{pipe_dir, "/tmp/{{runner_base_dir}}"}. +{runner_base_dir, "{{platform_bin_dir}}/.."}. +{runner_etc_dir, "{{platform_bin_dir}}/../etc"}. +{runner_log_dir, "{{platform_bin_dir}}/../log"}. +{runner_lib_dir, "{{platform_bin_dir}}/../lib"}. +{runner_patch_dir, "{{platform_base_dir}}/lib/patches"}. +{pipe_dir, "/tmp/riak_cs"}. {runner_user, ""}. {runner_wait_process, "riak_cs_put_fsm_sup"}. From 0a7018fbe62c9a355ef35307f5709101d8f85628 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 26 Apr 2021 12:36:51 +0300 Subject: [PATCH 109/831] add bundle/Makefile and README, and parametrize --- misc/bundle/.gitignore | 1 + misc/bundle/Makefile | 29 +++++++++++++++++++++++++ misc/bundle/README.md | 37 ++++++++++++++++++++++++++++++++ misc/bundle/docker-compose.yml | 8 +++---- misc/bundle/riak_cs/Dockerfile | 5 +++-- misc/bundle/stanchion/Dockerfile | 8 +++++-- 6 files changed, 80 insertions(+), 8 deletions(-) create mode 100644 misc/bundle/.gitignore create mode 100644 misc/bundle/Makefile create mode 100644 misc/bundle/README.md diff --git a/misc/bundle/.gitignore b/misc/bundle/.gitignore new file mode 100644 index 000000000..bbd79eaeb --- /dev/null +++ b/misc/bundle/.gitignore @@ -0,0 +1 @@ +dtata/ diff --git a/misc/bundle/Makefile b/misc/bundle/Makefile new file mode 100644 index 000000000..8d5d24f19 --- /dev/null +++ b/misc/bundle/Makefile @@ -0,0 +1,29 @@ +.PHONY: ensure-dirs up down clean + +RIAK_VSN ?= 3.0.4 +RIAK_CS_VSN ?= 3.0.0 +STANCHION_VSN ?= 3.0.0 + +RIAK_DATA ?= $(shell pwd)/data/riak +RIAK_CS_DATA ?= $(shell pwd)/data/riak_cs +STANCHION_DATA ?= $(shell pwd)/data/stanchion + +build: + @docker-compose build \ + --build-arg RIAK_VSN=$(RIAK_VSN) \ + --build-arg RIAK_CS_VSN=$(RIAK_CS_VSN) \ + --build-arg STANCHION_VSN=$(STANCHION_VSN) + +up: ensure-dirs build + @RIAK_DATA=$(RIAK_DATA) RIAK_CS_DATA=$(RIAK_CS_DATA) STANCHION_DATA=$(STANCHION_DATA) \ + docker-compose up --detach + +down: + @RIAK_DATA=$(RIAK_DATA) RIAK_CS_DATA=$(RIAK_CS_DATA) STANCHION_DATA=$(STANCHION_DATA) \ + docker-compose down + +ensure-dirs: + @mkdir -p $(RIAK_DATA) $(RIAK_CS_DATA) $(STANCHION_DATA) + +clean: + @rm -rf $(RIAK_DATA) $(RIAK_CS_DATA) $(STANCHION_DATA) diff --git a/misc/bundle/README.md b/misc/bundle/README.md new file mode 100644 index 000000000..0b4ab1296 --- /dev/null +++ b/misc/bundle/README.md @@ -0,0 +1,37 @@ +# Riak_cs bundle in a docker container + +This is an example of dockerized riak_cs, riak and stanchion, running +in a docker-composed bundle. + +## Building and running + +With `docker-compose up` (or `make up`), you will get riak\_cs, +stanchion and riak images created and their containers +started. Applications versions are defined by environment variables +`RIAK_VSN`, `RIAK_CS_VSN` and `STANCHION_VSN` (with 3.0.4, 3.0.0, +3.0.0, respectively, as defaults). + +Riak CS is reachable at 172.18.0.4. An admin user can be then +created with + +``` +$ curl -sX POST 172.18.0.4:8080/riak-cs/user \ + -H 'Content-Type: application/json' \ + --data '{"name": "fafa", "email": "keke@fa.fa"}' +``` + +Images for riak_cs and stanchion are built from source, pulled from +repos at github.com/TI-Tokyo, while riak is installed from a deb package. + +Containers can be stopped with `docker-compose down` (or `make down`). + +If you want to inspect logs, run `docker-compose up` manually, without +a `--detach` option. + +## Persisting state + +Within containers, application data are bind-mounted to local +filesystem at locations `$RIAK_DATA`, `$RIAK_CS_DATA` and +`$STANCHION_DATA`. Unless explicitly set, these directories will be +created in "./data". + diff --git a/misc/bundle/docker-compose.yml b/misc/bundle/docker-compose.yml index 2b71a16b9..394544bf5 100644 --- a/misc/bundle/docker-compose.yml +++ b/misc/bundle/docker-compose.yml @@ -10,10 +10,6 @@ services: ports: - "8087:8087" - "8098:8098" - ulimits: - nofile: - soft: 65535 - hard: 65535 build: dockerfile: riak/Dockerfile context: . @@ -21,6 +17,10 @@ services: - type: bind source: ${RIAK_DATA} target: /var/lib/riak/data + ulimits: + nofile: + soft: 65535 + hard: 65535 stanchion: depends_on: diff --git a/misc/bundle/riak_cs/Dockerfile b/misc/bundle/riak_cs/Dockerfile index aa090bcfd..480dff07d 100644 --- a/misc/bundle/riak_cs/Dockerfile +++ b/misc/bundle/riak_cs/Dockerfile @@ -1,6 +1,7 @@ FROM erlang:22.3.4.10 AS compile-image -ARG cs_host=172.18.0.4 \ +ARG RIAK_CS_VSN=3.0.0 \ + cs_host=172.18.0.4 \ cs_port=8080 \ admin_host=172.18.0.4 \ admin_port=8000 \ @@ -10,7 +11,7 @@ ARG cs_host=172.18.0.4 \ riak_http_port=8098 \ riak_pb_port=8087 -ENV tag="3.0.0pre1" +ENV tag=${RIAK_CS_VSN} WORKDIR /usr/src/riak_cs ADD https://github.com/TI-Tokyo/riak_cs/archive/refs/tags/${tag}.tar.gz source.tar.gz diff --git a/misc/bundle/stanchion/Dockerfile b/misc/bundle/stanchion/Dockerfile index b76aa7125..0e3f6910f 100644 --- a/misc/bundle/stanchion/Dockerfile +++ b/misc/bundle/stanchion/Dockerfile @@ -1,12 +1,13 @@ FROM erlang:22.3.4.10 AS compile-image -ARG riak_host=172.18.0.3 \ +ARG STANCHION_VSN=3.0.0 \ + riak_host=172.18.0.3 \ riak_pb_port=8087 \ riak_http_port=8098 \ stanchion_host=172.18.0.2 \ stanchion_port=8085 -ENV tag="3.0.0pre1" +ENV tag=${STANCHION_VSN} EXPOSE $stanchion_port @@ -25,6 +26,9 @@ RUN sed -i \ RUN ./rebar3 as docker release RUN mv _build/docker/rel/stanchion ../rel +# relying on depends_on: in the docker-copose.yml is not sufficient, +# so let's ensure riak is actually up and responding before starting +# ourselves (also, variables don't seem to survive the FROM barrier): RUN echo "riak:${riak_http_port}/ping" >/tmp/riak_host From 8c71baeb4708627caf519d7ef82f57d16c415bb0 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 26 Apr 2021 12:53:54 +0300 Subject: [PATCH 110/831] repoint deps to TI-Tokyo repos --- rebar.config | 4 ++-- rebar.lock | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rebar.config b/rebar.config index d0ce1ae32..c35ce5b9e 100644 --- a/rebar.config +++ b/rebar.config @@ -28,8 +28,8 @@ , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "riak_kv-3.0.2"}}} , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {riak_repl_pb_api,".*", {git,"git://github.com/hmmr/riak_repl_pb_api.git", {tag, "riak_kv-3.0.3"}}} - , {riak_cs_multibag,".*", {git,"git://github.com/hmmr/riak_cs_multibag.git", {tag, "riak_kv-3.0.2"}}} + , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "riak_kv-3.0.3"}}} + , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "riak_kv-3.0.2"}}} , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} ] }. diff --git a/rebar.lock b/rebar.lock index bc678fc14..913cf67be 100644 --- a/rebar.lock +++ b/rebar.lock @@ -36,7 +36,7 @@ {ref,"c80077162f32c10002219f70e0afadb71e05f88c"}}, 1}, {<<"riak_cs_multibag">>, - {git,"git://github.com/hmmr/riak_cs_multibag.git", + {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {ref,"230127a0acc537094225ba802e880275e2455480"}}, 0}, {<<"riak_pb">>, @@ -44,7 +44,7 @@ {ref,"b8a946426e0254abba2015f9b5c1a9db4e2405bc"}}, 1}, {<<"riak_repl_pb_api">>, - {git,"git://github.com/hmmr/riak_repl_pb_api.git", + {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {ref,"8e5de11e1404382f5a6986aad0d4057c5c89d4cf"}}, 0}, {<<"riakc">>, From d8ac982b8f723ecb5d85b3f57440594d3e07c7de Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 26 Apr 2021 13:04:38 +0300 Subject: [PATCH 111/831] bundle/README touchup --- misc/bundle/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/bundle/README.md b/misc/bundle/README.md index 0b4ab1296..0cb8c3682 100644 --- a/misc/bundle/README.md +++ b/misc/bundle/README.md @@ -31,7 +31,7 @@ a `--detach` option. ## Persisting state Within containers, application data are bind-mounted to local -filesystem at locations `$RIAK_DATA`, `$RIAK_CS_DATA` and -`$STANCHION_DATA`. Unless explicitly set, these directories will be +filesystem at locations `RIAK_DATA`, `RIAK_CS_DATA` and +`STANCHION_DATA`. Unless explicitly set, these directories will be created in "./data". From 37bdda12dc86a247975b7799a02d07026db22c41 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 4 May 2021 02:38:45 +0300 Subject: [PATCH 112/831] move client_tests (except erlang) over to riak_cs_test --- Makefile | 31 +- client_tests/README.md | 15 - client_tests/clojure/clj-s3/.gitignore | 11 - client_tests/clojure/clj-s3/README.md | 54 - client_tests/clojure/clj-s3/project.clj | 16 - .../clojure/clj-s3/src/aws/sdk/s3.clj | 661 ----------- .../clojure/clj-s3/src/java_s3_tests/core.clj | 17 - .../src/java_s3_tests/user_creation.clj | 58 - .../clj-s3/test/java_s3_tests/test/client.clj | 249 ---- client_tests/erlang/erlcloud_eqc.erl | 402 ------- client_tests/go/.gitignore | 2 - client_tests/go/Makefile | 46 - client_tests/go/README.md | 46 - client_tests/php/.gitignore | 2 - client_tests/php/Makefile | 16 - client_tests/php/README.md | 25 - client_tests/php/composer.json | 11 - client_tests/php/composer.lock | 651 ----------- client_tests/php/phpunit.xml.dist | 16 - client_tests/php/test_services.json | 15 - client_tests/php/tests/S3ClientTest.php | 135 --- client_tests/php/tests/bootstrap.php | 51 - client_tests/python/.gitignore | 2 - client_tests/python/Makefile | 15 - client_tests/python/README.md | 30 - client_tests/python/boto_tests/Makefile | 30 - .../python/boto_tests/auth.py.patched | 1041 ----------------- ...02b1c61b3cf03ba9cafc7a3f6c56adcf92ad.patch | 71 -- client_tests/python/boto_tests/boto_test.py | 883 -------------- .../python/boto_tests/file_generator.py | 118 -- .../python/boto_tests/requirements.txt | 2 - client_tests/python/ceph_tests/Makefile | 34 - client_tests/python/ceph_tests/s3_conf.sh | 89 -- client_tests/ruby/.gitignore | 4 - client_tests/ruby/Gemfile | 10 - client_tests/ruby/README.md | 21 - client_tests/ruby/Rakefile | 11 - client_tests/ruby/spec/helper.rb | 41 - client_tests/ruby/spec/s3_spec.rb | 119 -- 39 files changed, 2 insertions(+), 5049 deletions(-) delete mode 100644 client_tests/README.md delete mode 100644 client_tests/clojure/clj-s3/.gitignore delete mode 100644 client_tests/clojure/clj-s3/README.md delete mode 100644 client_tests/clojure/clj-s3/project.clj delete mode 100644 client_tests/clojure/clj-s3/src/aws/sdk/s3.clj delete mode 100644 client_tests/clojure/clj-s3/src/java_s3_tests/core.clj delete mode 100644 client_tests/clojure/clj-s3/src/java_s3_tests/user_creation.clj delete mode 100644 client_tests/clojure/clj-s3/test/java_s3_tests/test/client.clj delete mode 100644 client_tests/erlang/erlcloud_eqc.erl delete mode 100644 client_tests/go/.gitignore delete mode 100644 client_tests/go/Makefile delete mode 100644 client_tests/go/README.md delete mode 100644 client_tests/php/.gitignore delete mode 100644 client_tests/php/Makefile delete mode 100644 client_tests/php/README.md delete mode 100644 client_tests/php/composer.json delete mode 100644 client_tests/php/composer.lock delete mode 100644 client_tests/php/phpunit.xml.dist delete mode 100644 client_tests/php/test_services.json delete mode 100644 client_tests/php/tests/S3ClientTest.php delete mode 100644 client_tests/php/tests/bootstrap.php delete mode 100644 client_tests/python/.gitignore delete mode 100644 client_tests/python/Makefile delete mode 100644 client_tests/python/README.md delete mode 100644 client_tests/python/boto_tests/Makefile delete mode 100644 client_tests/python/boto_tests/auth.py.patched delete mode 100644 client_tests/python/boto_tests/bb5e02b1c61b3cf03ba9cafc7a3f6c56adcf92ad.patch delete mode 100755 client_tests/python/boto_tests/boto_test.py delete mode 100755 client_tests/python/boto_tests/file_generator.py delete mode 100644 client_tests/python/boto_tests/requirements.txt delete mode 100644 client_tests/python/ceph_tests/Makefile delete mode 100755 client_tests/python/ceph_tests/s3_conf.sh delete mode 100644 client_tests/ruby/.gitignore delete mode 100644 client_tests/ruby/Gemfile delete mode 100644 client_tests/ruby/README.md delete mode 100644 client_tests/ruby/Rakefile delete mode 100644 client_tests/ruby/spec/helper.rb delete mode 100644 client_tests/ruby/spec/s3_spec.rb diff --git a/Makefile b/Makefile index e99a42300..538ab2560 100644 --- a/Makefile +++ b/Makefile @@ -89,6 +89,8 @@ DIALYZER_APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools crypto in PLT ?= $(HOME)/.riak-cs_dialyzer_plt +test-erlang: compile-client-test + @$(REBAR) client_test_run ## to fix: compile-client-test: all @@ -112,35 +114,6 @@ pulse: all @rm -rf $(BASE_DIR)/.eunit @$(REBAR) -D PULSE eunit skip_deps=true suites=$(PULSE_TESTS) -test-client: test-clojure test-boto test-ceph test-erlang test-ruby test-php test-go - -test-python: - @cd client_tests/python/ && ${MAKE} CS_HTTP_PORT=$(CS_HTTP_PORT) - -test-boto: - @cd client_tests/python/ && ${MAKE} boto_tests CS_HTTP_PORT=$(CS_HTTP_PORT) - -test-ceph: - @cd client_tests/python/ && ${MAKE} ceph_tests CS_HTTP_PORT=$(CS_HTTP_PORT) - -test-ruby: - @bundle --gemfile client_tests/ruby/Gemfile --path vendor - @cd client_tests/ruby && bundle exec rake spec - -test-erlang: compile-client-test - @$(REBAR) skip_deps=true client_test_run - -test-clojure: - @command -v lein >/dev/null 2>&1 || { echo >&2 "I require lein but it's not installed. \ - Please read client_tests/clojure/clj-s3/README."; exit 1; } - @cd client_tests/clojure/clj-s3 && lein do deps, midje - -test-php: - @cd client_tests/php && ${MAKE} - -test-go: - @cd client_tests/go && ${MAKE} - ## ## Packaging targets ## diff --git a/client_tests/README.md b/client_tests/README.md deleted file mode 100644 index eae0c63cb..000000000 --- a/client_tests/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Riak CS Client Library Tests - -Within each of the directories at the same level of this README are tests for -language specific S3 client libraries. Executing these tests should typically -be done from the root of the project using `make`. - -Example: - -```bash -$ make test-boto -``` - -If you are interested in using the tests to understand how to communicate with -Riak CS, each language sub-directory contains its own `README` with details on -how to get the tests running locally. diff --git a/client_tests/clojure/clj-s3/.gitignore b/client_tests/clojure/clj-s3/.gitignore deleted file mode 100644 index b3257aa1a..000000000 --- a/client_tests/clojure/clj-s3/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -/pom.xml -*jar -/lib -/classes -/native -/.lein-failures -/checkouts -/.lein-deps-sum -/target -.lein-repl-history -.nrepl-port diff --git a/client_tests/clojure/clj-s3/README.md b/client_tests/clojure/clj-s3/README.md deleted file mode 100644 index 29fc079d3..000000000 --- a/client_tests/clojure/clj-s3/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# Riak CS clj-s3 Tests - -## Overview - -These tests are written using a modified copy of -[clj-aws-s3](https://github.com/weavejester/clj-aws-s3) at tag 0.3.10, -for S3 API call. On the other hand, Riak CS specific administrative API -call is implemented in - -```bash -client_tests/clojure/clj-s3/src/java_s3_tests/user_creation.clj -``` - -New tests cases are added to: - -```bash -client_tests/clojure/clj-s3/test/java_s3_tests/test/client.clj -``` - -The tests are written using the Clojure testing library -[midje](https://github.com/marick/Midje), which has -[great documentation](https://github.com/marick/Midje/wiki). - -## Dependencies - -Install [Leiningen](http://leiningen.org/): - -```bash -$ curl -O https://raw.github.com/technomancy/leiningen/stable/bin/lein -$ mv lein ~/bin # Or some other directory in your $PATH -$ chmod 755 ~/bin/lein -``` - -Install dependencies: - -```bash -$ lein deps -``` - -## Configuration - -Ensure that the Riak CS `app.config` has `anonymous_user_creation` set to -`true`. If it was previously set to `false`, make sure that the `riak-cs` -service is restarted: - -```bash -$ riak-cs restart -``` - -## Execution - -```bash -$ lein midje -``` diff --git a/client_tests/clojure/clj-s3/project.clj b/client_tests/clojure/clj-s3/project.clj deleted file mode 100644 index db654dc1e..000000000 --- a/client_tests/clojure/clj-s3/project.clj +++ /dev/null @@ -1,16 +0,0 @@ -(defproject java-s3-tests/java-s3-tests "0.0.2" - :dependencies [[org.clojure/clojure "1.7.0"] - [org.clojure/tools.logging "0.3.1"] - ;; aws-sdk-java deps - [com.amazonaws/aws-java-sdk-s3 "1.10.8" :exclusions [joda-time]] - [joda-time "2.8.1"] - [com.fasterxml.jackson.core/jackson-core "2.5.3"] - [com.fasterxml.jackson.core/jackson-databind "2.5.3"] - ;; user_creation deps - [clj-http "2.0.0"] - [cheshire "5.1.0"]] - ;; :jvm-opts ["-verbose:class"] - :profiles {:dev {:dependencies [[midje "1.7.0"]]}} - :min-lein-version "2.0.0" - :plugins [[lein-midje "3.1.3"]] - :description "integration tests for Riak CS using the offical Java SDK") diff --git a/client_tests/clojure/clj-s3/src/aws/sdk/s3.clj b/client_tests/clojure/clj-s3/src/aws/sdk/s3.clj deleted file mode 100644 index bab0bad99..000000000 --- a/client_tests/clojure/clj-s3/src/aws/sdk/s3.clj +++ /dev/null @@ -1,661 +0,0 @@ -;; Copyright (c) 2014 James Reeves -;; Distributed under the Eclipse Public License, the same as Clojure. -;; -;; Original repository is https://github.com/weavejester/clj-aws-s3. - -(ns aws.sdk.s3 - "Functions to access the Amazon S3 storage service. - - Each function takes a map of credentials as its first argument. The - credentials map should contain an :access-key key and a :secret-key key, - optionally an :endpoint key to denote an AWS endpoint and optionally a :proxy - key to define a HTTP proxy to go through. - - The :proxy key must contain keys for :host and :port, and may contain keys - for :user, :password, :domain and :workstation." - (:require [clojure.string :as str] - [clj-time.core :as t] - [clj-time.coerce :as coerce] - [clojure.walk :as walk]) - (:import com.amazonaws.auth.BasicAWSCredentials - com.amazonaws.auth.BasicSessionCredentials - com.amazonaws.services.s3.AmazonS3Client - com.amazonaws.AmazonServiceException - com.amazonaws.ClientConfiguration - com.amazonaws.HttpMethod - com.amazonaws.services.s3.model.AccessControlList - com.amazonaws.services.s3.model.Bucket - com.amazonaws.services.s3.model.Grant - com.amazonaws.services.s3.model.CanonicalGrantee - com.amazonaws.services.s3.model.CreateBucketRequest - com.amazonaws.services.s3.model.CopyObjectResult - com.amazonaws.services.s3.model.EmailAddressGrantee - com.amazonaws.services.s3.model.GetObjectRequest - com.amazonaws.services.s3.model.GetObjectMetadataRequest - com.amazonaws.services.s3.model.Grant - com.amazonaws.services.s3.model.GroupGrantee - com.amazonaws.services.s3.model.ListObjectsRequest - com.amazonaws.services.s3.model.ListVersionsRequest - com.amazonaws.services.s3.model.Owner - com.amazonaws.services.s3.model.ObjectMetadata - com.amazonaws.services.s3.model.ObjectListing - com.amazonaws.services.s3.model.Permission - com.amazonaws.services.s3.model.PutObjectRequest - com.amazonaws.services.s3.model.S3Object - com.amazonaws.services.s3.model.S3ObjectSummary - com.amazonaws.services.s3.model.S3VersionSummary - com.amazonaws.services.s3.model.VersionListing - com.amazonaws.services.s3.model.InitiateMultipartUploadRequest - com.amazonaws.services.s3.model.AbortMultipartUploadRequest - com.amazonaws.services.s3.model.CompleteMultipartUploadRequest - com.amazonaws.services.s3.model.UploadPartRequest - java.util.concurrent.Executors - java.io.ByteArrayInputStream - java.io.File - java.io.InputStream - java.nio.charset.Charset)) - -(defn- s3-client* - [cred] - (let [client-configuration (ClientConfiguration.)] - (when-let [conn-timeout (:conn-timeout cred)] - (.setConnectionTimeout client-configuration conn-timeout)) - (when-let [socket-timeout (:socket-timeout cred)] - (.setSocketTimeout client-configuration socket-timeout)) - (when-let [max-retries (:max-retries cred)] - (.setMaxErrorRetry client-configuration max-retries)) - (when-let [max-conns (:max-conns cred)] - (.setMaxConnections client-configuration max-conns)) - (when-let [proxy-host (get-in cred [:proxy :host])] - (.setProxyHost client-configuration proxy-host)) - (when-let [proxy-port (get-in cred [:proxy :port])] - (.setProxyPort client-configuration proxy-port)) - (when-let [proxy-user (get-in cred [:proxy :user])] - (.setProxyUsername client-configuration proxy-user)) - (when-let [proxy-pass (get-in cred [:proxy :password])] - (.setProxyPassword client-configuration proxy-pass)) - (when-let [proxy-domain (get-in cred [:proxy :domain])] - (.setProxyDomain client-configuration proxy-domain)) - (when-let [proxy-workstation (get-in cred [:proxy :workstation])] - (.setProxyWorkstation client-configuration proxy-workstation)) - (let [aws-creds - (if (:token cred) - (BasicSessionCredentials. (:access-key cred) (:secret-key cred) (:token cred)) - (BasicAWSCredentials. (:access-key cred) (:secret-key cred))) - - client (AmazonS3Client. aws-creds client-configuration)] - (when-let [endpoint (:endpoint cred)] - (.setEndpoint client endpoint)) - client))) - -(def ^{:private true :tag AmazonS3Client} - s3-client - (memoize s3-client*)) - -(defprotocol ^{:no-doc true} Mappable - "Convert a value into a Clojure map." - (^{:no-doc true} to-map [x] "Return a map of the value.")) - -(extend-protocol Mappable - Bucket - (to-map [bucket] - {:name (.getName bucket) - :creation-date (.getCreationDate bucket) - :owner (to-map (.getOwner bucket))}) - Owner - (to-map [owner] - {:id (.getId owner) - :display-name (.getDisplayName owner)}) - nil - (to-map [_] nil)) - -(defn bucket-exists? - "Returns true if the supplied bucket name already exists in S3." - [cred name] - (.doesBucketExist (s3-client cred) name)) - -(defn- ^CreateBucketRequest ->CreateBucketRequest - "Create a PutBucketRequest instance from a bucket name." - [^String bucket ^String key request] - (CreateBucketRequest. bucket)) - -(declare create-acl) ; used by create-bucket and put-object - -(defn create-bucket - "Create a new S3 bucket with the supplied name." - [cred ^String name & [metadata & permissions]] - (let [req (CreateBucketRequest. name)] - (when permissions - (.setAccessControlList req (create-acl permissions))) - (.createBucket (s3-client cred) req))) - -(defn delete-bucket - "Delete the S3 bucket with the supplied name." - [cred ^String name] - (.deleteBucket (s3-client cred) name)) - -(defn list-buckets - "List all the S3 buckets for the supplied credentials. The buckets will be - returned as a seq of maps with the following keys: - :name - the bucket name - :creation-date - the date when the bucket was created - :owner - the owner of the bucket" - [cred] - (map to-map (.listBuckets (s3-client cred)))) - -(defprotocol ^{:no-doc true} ToPutRequest - "A protocol for constructing a map that represents an S3 put request." - (^{:no-doc true} put-request [x] "Convert a value into a put request.")) - -(extend-protocol ToPutRequest - InputStream - (put-request [is] {:input-stream is}) - File - (put-request [f] {:file f}) - String - (put-request [s] - (let [bytes (.getBytes s)] - {:input-stream (ByteArrayInputStream. bytes) - :content-length (count bytes) - :content-type (str "text/plain; charset=" (.name (Charset/defaultCharset)))}))) - -(defmacro set-attr - "Set an attribute on an object if not nil." - {:private true} - [object setter value] - `(if-let [v# ~value] - (~setter ~object v#))) - -(defn- maybe-int [x] - (if x (int x))) - -(defn- map->ObjectMetadata - "Convert a map of object metadata into a ObjectMetadata instance." - [metadata] - (doto (ObjectMetadata.) - (set-attr .setCacheControl (:cache-control metadata)) - (set-attr .setContentDisposition (:content-disposition metadata)) - (set-attr .setContentEncoding (:content-encoding metadata)) - (set-attr .setContentLength (:content-length metadata)) - (set-attr .setContentMD5 (:content-md5 metadata)) - (set-attr .setContentType (:content-type metadata)) - (set-attr .setServerSideEncryption (:server-side-encryption metadata)) - (set-attr .setUserMetadata - (walk/stringify-keys (dissoc metadata - :cache-control - :content-disposition - :content-encoding - :content-length - :content-md5 - :content-type - :server-side-encryption))))) - -(defn- ^PutObjectRequest ->PutObjectRequest - "Create a PutObjectRequest instance from a bucket name, key and put request - map." - [^String bucket ^String key request] - (cond - (:file request) - (let [put-obj-req (PutObjectRequest. bucket key ^java.io.File (:file request))] - (.setMetadata put-obj-req (map->ObjectMetadata (dissoc request :file))) - put-obj-req) - (:input-stream request) - (PutObjectRequest. - bucket key - (:input-stream request) - (map->ObjectMetadata (dissoc request :input-stream))))) - -(defn put-object - "Put a value into an S3 bucket at the specified key. The value can be - a String, InputStream or File (or anything that implements the ToPutRequest - protocol). - - An optional map of metadata may also be supplied that can include any of the - following keys: - :cache-control - the cache-control header (see RFC 2616) - :content-disposition - how the content should be downloaded by browsers - :content-encoding - the encoding of the content (e.g. gzip) - :content-length - the length of the content in bytes - :content-md5 - the MD5 sum of the content - :content-type - the mime type of the content - :server-side-encryption - set to AES256 if SSE is required - - An optional list of grant functions can be provided after metadata. - These functions will be applied to a clear ACL and the result will be - the ACL for the newly created object." - [cred bucket key value & [metadata & permissions]] - (let [req (->> (merge (put-request value) metadata) - (->PutObjectRequest bucket key))] - (when permissions - (.setAccessControlList req (create-acl permissions))) - (.putObject (s3-client cred) req))) - -(defn- initiate-multipart-upload - [cred bucket key] - (.getUploadId (.initiateMultipartUpload - (s3-client cred) - (InitiateMultipartUploadRequest. bucket key)))) - -(defn- abort-multipart-upload - [{cred :cred bucket :bucket key :key upload-id :upload-id}] - (.abortMultipartUpload - (s3-client cred) - (AbortMultipartUploadRequest. bucket key upload-id))) - -(defn- complete-multipart-upload - [{cred :cred bucket :bucket key :key upload-id :upload-id e-tags :e-tags}] - (.completeMultipartUpload - (s3-client cred) - (CompleteMultipartUploadRequest. bucket key upload-id e-tags))) - -(defn- upload-part - [{cred :cred bucket :bucket key :key upload-id :upload-id - part-size :part-size offset :offset ^java.io.File file :file}] - (.getPartETag - (.uploadPart - (s3-client cred) - (doto (UploadPartRequest.) - (.setBucketName bucket) - (.setKey key) - (.setUploadId upload-id) - (.setPartNumber (+ 1 (/ offset part-size))) - (.setFileOffset offset) - (.setPartSize ^long (min part-size (- (.length file) offset))) - (.setFile file))))) - -(defn put-multipart-object - "Do a multipart upload of a file into a S3 bucket at the specified key. - The value must be a java.io.File object. The entire file is uploaded - or not at all. If an exception happens at any time the upload is aborted - and the exception is rethrown. The size of the parts and the number of - threads uploading the parts can be configured in the last argument as a - map with the following keys: - :part-size - the size in bytes of each part of the file. Must be 5mb - or larger. Defaults to 5mb - :threads - the number of threads that will upload parts concurrently. - Defaults to 16." - [cred bucket key ^java.io.File file & [{:keys [part-size threads] - :or {part-size (* 5 1024 1024) threads 16}}]] - (let [upload-id (initiate-multipart-upload cred bucket key) - upload {:upload-id upload-id :cred cred :bucket bucket :key key :file file} - pool (Executors/newFixedThreadPool threads) - offsets (range 0 (.length file) part-size) - tasks (map #(fn [] (upload-part (assoc upload :offset % :part-size part-size))) - offsets)] - (try - (complete-multipart-upload - (assoc upload :e-tags (map #(.get ^java.util.concurrent.Future %) (.invokeAll pool tasks)))) - (catch Exception ex - (abort-multipart-upload upload) - (.shutdown pool) - (throw ex)) - (finally (.shutdown pool))))) - -(extend-protocol Mappable - S3Object - (to-map [object] - {:content (.getObjectContent object) - :metadata (to-map (.getObjectMetadata object)) - :bucket (.getBucketName object) - :key (.getKey object)}) - ObjectMetadata - (to-map [metadata] - {:cache-control (.getCacheControl metadata) - :content-disposition (.getContentDisposition metadata) - :content-encoding (.getContentEncoding metadata) - :content-length (.getContentLength metadata) - :content-md5 (.getContentMD5 metadata) - :content-type (.getContentType metadata) - :etag (.getETag metadata) - :last-modified (.getLastModified metadata) - :server-side-encryption (.getServerSideEncryption metadata) - :user (walk/keywordize-keys (into {} (.getUserMetadata metadata))) - :version-id (.getVersionId metadata)}) - ObjectListing - (to-map [listing] - {:bucket (.getBucketName listing) - :objects (map to-map (.getObjectSummaries listing)) - :prefix (.getPrefix listing) - :common-prefixes (seq (.getCommonPrefixes listing)) - :truncated? (.isTruncated listing) - :max-keys (.getMaxKeys listing) - :marker (.getMarker listing) - :next-marker (.getNextMarker listing)}) - S3ObjectSummary - (to-map [summary] - {:metadata {:content-length (.getSize summary) - :etag (.getETag summary) - :last-modified (.getLastModified summary)} - :bucket (.getBucketName summary) - :key (.getKey summary)}) - S3VersionSummary - (to-map [summary] - {:metadata {:content-length (.getSize summary) - :etag (.getETag summary) - :last-modified (.getLastModified summary)} - :version-id (.getVersionId summary) - :latest? (.isLatest summary) - :delete-marker? (.isDeleteMarker summary) - :bucket (.getBucketName summary) - :key (.getKey summary)}) - VersionListing - (to-map [listing] - {:bucket (.getBucketName listing) - :versions (map to-map (.getVersionSummaries listing)) - :prefix (.getPrefix listing) - :common-prefixes (seq (.getCommonPrefixes listing)) - :delimiter (.getDelimiter listing) - :truncated? (.isTruncated listing) - :max-results (maybe-int (.getMaxKeys listing)) ; AWS API is inconsistent, should be .getMaxResults - :key-marker (.getKeyMarker listing) - :next-key-marker (.getNextKeyMarker listing) - :next-version-id-marker (.getNextVersionIdMarker listing) - :version-id-marker (.getVersionIdMarker listing)}) - CopyObjectResult - (to-map [result] - {:etag (.getETag result) - :expiration-time (.getExpirationTime result) - :expiration-time-rule-id (.getExpirationTimeRuleId result) - :last-modified-date (.getLastModifiedDate result) - :server-side-encryption (.getServerSideEncryption result)})) - -(defn get-object - "Get an object from an S3 bucket. The object is returned as a map with the - following keys: - :content - an InputStream to the content - :metadata - a map of the object's metadata - :bucket - the name of the bucket - :key - the object's key - Be extremely careful when using this method; the :content value in the returned - map contains a direct stream of data from the HTTP connection. The underlying - HTTP connection cannot be closed until the user finishes reading the data and - closes the stream. - Therefore: - * Use the data from the :content input stream as soon as possible - * Close the :content input stream as soon as possible - If these rules are not followed, the client can run out of resources by - allocating too many open, but unused, HTTP connections." - ([cred ^String bucket ^String key] - (to-map (.getObject (s3-client cred) bucket key))) - ([cred ^String bucket ^String key ^String version-id] - (to-map (.getObject (s3-client cred) (GetObjectRequest. bucket key version-id))))) - -(defn- map->GetObjectMetadataRequest - "Create a ListObjectsRequest instance from a map of values." - [request] - (GetObjectMetadataRequest. (:bucket request) (:key request) (:version-id request))) - -(defn get-object-metadata - "Get an object's metadata from a bucket. A optional map of options may be supplied. - Available options are: - :version-id - the version of the object - The metadata is a map with the - following keys: - :cache-control - the CacheControl HTTP header - :content-disposition - the ContentDisposition HTTP header - :content-encoding - the character encoding of the content - :content-length - the length of the content in bytes - :content-md5 - the MD5 hash of the content - :content-type - the mime-type of the content - :etag - the HTTP ETag header - :last-modified - the last modified date - :server-side-encryption - the server-side encryption algorithm" - [cred bucket key & [options]] - (to-map - (.getObjectMetadata - (s3-client cred) - (map->GetObjectMetadataRequest (merge {:bucket bucket :key key} options))))) - -(defn- map->ListObjectsRequest - "Create a ListObjectsRequest instance from a map of values." - ^ListObjectsRequest - [request] - (doto (ListObjectsRequest.) - (set-attr .setBucketName (:bucket request)) - (set-attr .setDelimiter (:delimiter request)) - (set-attr .setMarker (:marker request)) - (set-attr .setMaxKeys (maybe-int (:max-keys request))) - (set-attr .setPrefix (:prefix request)))) - -(defn- http-method [method] - (-> method name str/upper-case HttpMethod/valueOf)) - -(defn generate-presigned-url - "Return a presigned URL for an S3 object. Accepts the following options: - :expires - the date at which the URL will expire (defaults to 1 day from now) - :http-method - the HTTP method for the URL (defaults to :get)" - [cred bucket key & [options]] - (.toString - (.generatePresignedUrl - (s3-client cred) - bucket - key - (coerce/to-date (:expires options (-> 1 t/days t/from-now))) - (http-method (:http-method options :get))))) - -(defn list-objects - "List the objects in an S3 bucket. A optional map of options may be supplied. - Available options are: - :delimiter - read only keys up to the next delimiter (such as a '/') - :marker - read objects after this key - :max-keys - read only this many objects - :prefix - read only objects with this prefix - - The object listing will be returned as a map containing the following keys: - :bucket - the name of the bucket - :prefix - the supplied prefix (or nil if none supplied) - :objects - a list of objects - :common-prefixes - the common prefixes of keys omitted by the delimiter - :max-keys - the maximum number of objects to be returned - :truncated? - true if the list of objects was truncated - :marker - the marker of the listing - :next-marker - the next marker of the listing" - [cred bucket & [options]] - (to-map - (.listObjects - (s3-client cred) - (map->ListObjectsRequest (merge {:bucket bucket} options))))) - -(defn delete-object - "Delete an object from an S3 bucket." - [cred bucket key] - (.deleteObject (s3-client cred) bucket key)) - -(defn object-exists? - "Returns true if an object exists in the supplied bucket and key." - [cred bucket key] - (try - (get-object-metadata cred bucket key) - true - (catch AmazonServiceException e - (if (= 404 (.getStatusCode e)) - false - (throw e))))) - -(defn copy-object - "Copy an existing S3 object to another key. Returns a map containing - the data returned from S3" - ([cred bucket src-key dest-key] - (copy-object cred bucket src-key bucket dest-key)) - ([cred src-bucket src-key dest-bucket dest-key] - (to-map (.copyObject (s3-client cred) src-bucket src-key dest-bucket dest-key)))) - -(defn- map->ListVersionsRequest - "Create a ListVersionsRequest instance from a map of values." - [request] - (doto (ListVersionsRequest.) - (set-attr .setBucketName (:bucket request)) - (set-attr .setDelimiter (:delimiter request)) - (set-attr .setKeyMarker (:key-marker request)) - (set-attr .setMaxResults (maybe-int (:max-results request))) - (set-attr .setPrefix (:prefix request)) - (set-attr .setVersionIdMarker (:version-id-marker request)))) - -(defn list-versions - "List the versions in an S3 bucket. A optional map of options may be supplied. - Available options are: - :delimiter - the delimiter used in prefix (such as a '/') - :key-marker - read versions from the sorted list of all versions starting - at this marker. - :max-results - read only this many versions - :prefix - read only versions with keys having this prefix - :version-id-marker - read objects after this version id - - The version listing will be returned as a map containing the following versions: - :bucket - the name of the bucket - :prefix - the supplied prefix (or nil if none supplied) - :versions - a sorted list of versions, newest first, each - version has: - :version-id - the unique version id - :latest? - is this the latest version for that key? - :delete-marker? - is this a delete-marker? - :common-prefixes - the common prefixes of keys omitted by the delimiter - :max-results - the maximum number of results to be returned - :truncated? - true if the results were truncated - :key-marker - the key marker of the listing - :next-version-id-marker - the version ID marker to use in the next listVersions - request in order to obtain the next page of results. - :version-id-marker - the version id marker of the listing" - [cred bucket & [options]] - (to-map - (.listVersions - (s3-client cred) - (map->ListVersionsRequest (merge {:bucket bucket} options))))) - -(defn delete-version - "Deletes a specific version of the specified object in the specified bucket." - [cred bucket key version-id] - (.deleteVersion (s3-client cred) bucket key version-id)) - -(defprotocol ^{:no-doc true} ToClojure - "Convert an object into an idiomatic Clojure value." - (^{:no-doc true} to-clojure [x] "Turn the object into a Clojure value.")) - -(extend-protocol ToClojure - CanonicalGrantee - (to-clojure [grantee] - {:id (.getIdentifier grantee) - :display-name (.getDisplayName grantee)}) - EmailAddressGrantee - (to-clojure [grantee] - {:email (.getIdentifier grantee)}) - GroupGrantee - (to-clojure [grantee] - (condp = grantee - GroupGrantee/AllUsers :all-users - GroupGrantee/AuthenticatedUsers :authenticated-users - GroupGrantee/LogDelivery :log-delivery)) - Permission - (to-clojure [permission] - (condp = permission - Permission/FullControl :full-control - Permission/Read :read - Permission/ReadAcp :read-acp - Permission/Write :write - Permission/WriteAcp :write-acp))) - -(extend-protocol Mappable - Grant - (to-map [grant] - {:grantee (to-clojure (.getGrantee grant)) - :permission (to-clojure (.getPermission grant))}) - AccessControlList - (to-map [acl] - {:grants (set (map to-map (.getGrants acl))) - :owner (to-map (.getOwner acl))})) - -(defn get-bucket-acl - "Get the access control list (ACL) for the supplied bucket. The ACL is a map - containing two keys: - :owner - the owner of the ACL - :grants - a set of access permissions granted - - The grants themselves are maps with keys: - :grantee - the individual or group being granted access - :permission - the type of permission (:read, :write, :read-acp, :write-acp or - :full-control)." - [cred ^String bucket] - (to-map (.getBucketAcl (s3-client cred) bucket))) - -(defn get-object-acl - "Get the access control list (ACL) for the supplied object. See get-bucket-acl - for a detailed description of the return value." - [cred bucket key] - (to-map (.getObjectAcl (s3-client cred) bucket key))) - -(defn- permission [perm] - (case perm - :full-control Permission/FullControl - :read Permission/Read - :read-acp Permission/ReadAcp - :write Permission/Write - :write-acp Permission/WriteAcp)) - -(defn- grantee [grantee] - (cond - (keyword? grantee) - (case grantee - :all-users GroupGrantee/AllUsers - :authenticated-users GroupGrantee/AuthenticatedUsers - :log-delivery GroupGrantee/LogDelivery) - (:id grantee) - (CanonicalGrantee. (:id grantee)) - (:email grantee) - (EmailAddressGrantee. (:email grantee)))) - -(defn- clear-acl [^AccessControlList acl] - (doseq [grantee (->> (.getGrants acl) - (map #(.getGrantee ^Grant %)) - (set))] - (.revokeAllPermissions acl grantee))) - -(defn- add-acl-grants [^AccessControlList acl grants] - (doseq [g grants] - (.grantPermission acl - (grantee (:grantee g)) - (permission (:permission g))))) - -(defn- update-acl [^AccessControlList acl funcs] - (let [grants (:grants (to-map acl)) - update (apply comp (reverse funcs))] - (clear-acl acl) - (add-acl-grants acl (update grants)))) - -(defn- create-acl [permissions] - (doto (AccessControlList.) - (update-acl permissions))) - -(defn update-bucket-acl - "Update the access control list (ACL) for the named bucket using functions - that update a set of grants (see get-bucket-acl). - - This function is often used with the grant and revoke functions, e.g. - - (update-bucket-acl cred bucket - (grant :all-users :read) - (grant {:email \"foo@example.com\"} :full-control) - (revoke {:email \"bar@example.com\"} :write))" - [cred ^String bucket & funcs] - (let [acl (.getBucketAcl (s3-client cred) bucket)] - (update-acl acl funcs) - (.setBucketAcl (s3-client cred) bucket acl))) - -(defn update-object-acl - "Updates the access control list (ACL) for the supplied object using functions - that update a set of grants (see update-bucket-acl for more details)." - [cred ^String bucket ^String key & funcs] - (let [acl (.getObjectAcl (s3-client cred) bucket key)] - (update-acl acl funcs) - (.setObjectAcl (s3-client cred) bucket key acl))) - -(defn grant - "Returns a function that adds a new grant map to a set of grants. - See update-bucket-acl." - [grantee permission] - #(conj % {:grantee grantee :permission permission})) - -(defn revoke - "Returns a function that removes a grant map from a set of grants. - See update-bucket-acl." - [grantee permission] - #(disj % {:grantee grantee :permission permission})) diff --git a/client_tests/clojure/clj-s3/src/java_s3_tests/core.clj b/client_tests/clojure/clj-s3/src/java_s3_tests/core.clj deleted file mode 100644 index e9b735e24..000000000 --- a/client_tests/clojure/clj-s3/src/java_s3_tests/core.clj +++ /dev/null @@ -1,17 +0,0 @@ -;; Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -;; -;; This file is provided to you under the Apache License, -;; Version 2.0 (the "License"); you may not use this file -;; except in compliance with the License. You may obtain -;; a copy of the License at -;; -;; http://www.apache.org/licenses/LICENSE-2.0 -;; -;; Unless required by applicable law or agreed to in writing, -;; software distributed under the License is distributed on an -;; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -;; KIND, either express or implied. See the License for the -;; specific language governing permissions and limitations -;; under the License. - -(ns java-s3-tests.core) diff --git a/client_tests/clojure/clj-s3/src/java_s3_tests/user_creation.clj b/client_tests/clojure/clj-s3/src/java_s3_tests/user_creation.clj deleted file mode 100644 index 55f8db1ef..000000000 --- a/client_tests/clojure/clj-s3/src/java_s3_tests/user_creation.clj +++ /dev/null @@ -1,58 +0,0 @@ -;; Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -;; -;; This file is provided to you under the Apache License, -;; Version 2.0 (the "License"); you may not use this file -;; except in compliance with the License. You may obtain -;; a copy of the License at -;; -;; http://www.apache.org/licenses/LICENSE-2.0 -;; -;; Unless required by applicable law or agreed to in writing, -;; software distributed under the License is distributed on an -;; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -;; KIND, either express or implied. See the License for the -;; specific language governing permissions and limitations -;; under the License. - -(ns java-s3-tests.user-creation - (:require [cheshire.core :as cheshire]) - (:require [clj-http.client :as http])) - -(defn ^:internal make-host-port-string [host port] - (str host ":" port)) - -(defn ^:internal make-url-with-resource [host-port-string resource] - (str host-port-string "/" resource)) - -(defn ^:internal make-body [user-name email] - (cheshire/generate-string - {"email" email "name" user-name})) - -(defn ^:internal make-user-url [host port] - (let [location (make-host-port-string host port)] - (make-url-with-resource location "/riak-cs/user"))) - -(defn ^:internal parse-response-body [string] - (cheshire/parse-string string true)) - -(defn ^:internal parse-response [response] - (parse-response-body (:body response))) - -(defn ^:internal string-uuid [] - (str (java.util.UUID/randomUUID))) - -(defn create-user - "create a new user from the /user - resource. Returns a map with keys - :key_id and :key_secret" - [host port user-name email] - (let [url (make-user-url host port) - body (make-body user-name email) - headers {"Content-Type" "application/json"}] - (parse-response (http/post url {:body body :headers headers})))) - -(defn create-random-user [host port] - (let [random-token (string-uuid) - user-name random-token - email (str random-token "@example.com")] - (create-user host port user-name email))) diff --git a/client_tests/clojure/clj-s3/test/java_s3_tests/test/client.clj b/client_tests/clojure/clj-s3/test/java_s3_tests/test/client.clj deleted file mode 100644 index 40f337058..000000000 --- a/client_tests/clojure/clj-s3/test/java_s3_tests/test/client.clj +++ /dev/null @@ -1,249 +0,0 @@ -;; Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -;; -;; This file is provided to you under the Apache License, -;; Version 2.0 (the "License"); you may not use this file -;; except in compliance with the License. You may obtain -;; a copy of the License at -;; -;; http://www.apache.org/licenses/LICENSE-2.0 -;; -;; Unless required by applicable law or agreed to in writing, -;; software distributed under the License is distributed on an -;; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -;; KIND, either express or implied. See the License for the -;; specific language governing permissions and limitations -;; under the License. - -(ns java-s3-tests.test.client - (:import java.security.MessageDigest - org.apache.commons.codec.binary.Hex - com.amazonaws.services.s3.model.AmazonS3Exception) - - (:require [aws.sdk.s3 :as s3]) - (:require [java-s3-tests.user-creation :as user-creation]) - (:require [clojure.tools.logging :as log]) - (:use midje.sweet)) - -(def ^:internal riak-cs-host "127.0.0.1") -(def ^:internal riak-cs-host-with-protocol (str "http://" riak-cs-host)) - -(defn get-riak-cs-port-str - "Try to get a TCP port number from the OS environment" - [] - (let [port-str (get (System/getenv) "CS_HTTP_PORT")] - (cond (nil? port-str) "8080" - :else port-str))) - -(defn get-riak-cs-port [] - (Integer/parseInt (get-riak-cs-port-str) 10)) - -(defn md5-byte-array [input-byte-array] - (let [instance (MessageDigest/getInstance "MD5")] - (.digest instance input-byte-array))) - -(defn md5-string - [input-byte-array] - (let [b (md5-byte-array input-byte-array)] - (String. (Hex/encodeHex b)))) - -(defn user-to-cred - [user] - {:endpoint "http://s3.amazonaws.com" - :access-key (:key_id user) - :secret-key (:key_secret user) - :proxy {:host riak-cs-host - :port (get-riak-cs-port)}}) - -(defn random-user - [] - (user-creation/create-random-user riak-cs-host-with-protocol (get-riak-cs-port))) - -(defmacro with-random-user - "Execute `body` in implicit do with a random-user bound to `var-name`" - [var-name & body] - `(let [~var-name (random-user)] - (do ~@body))) - -(defn random-cred - [] - (user-to-cred (random-user))) - -(defmacro with-random-cred - "Execute `body` in implicit do with a random-cred bound to `var-name`" - [var-name & body] - `(let [~var-name (random-cred)] - (do ~@body))) - -(defn random-string [] - (str (java.util.UUID/randomUUID))) - -(defn write-file [filename content] - (with-open [w (clojure.java.io/writer filename :append false)] - (.write w content))) - -(defn etag-suffix [etag] - (subs etag (- (count etag) 2))) - -(defn upload-file [cred bucket key file-name part-size] - (let [f (clojure.java.io/file file-name)] - (s3/put-multipart-object cred bucket key f {:part-size part-size :threads 2}) - (.delete f))) - -(fact "bogus creds raises an exception" - (let [bogus-user {:key_id "foo" - :key_secret "bar"}] - (s3/list-buckets (user-to-cred bogus-user))) - => (throws AmazonS3Exception)) - -(fact "new users have no buckets" - (with-random-cred c - (s3/list-buckets c)) - => []) - -(let [bucket-name (random-string)] - (fact "creating a bucket should list one bucket in list buckets" - (with-random-cred c - (s3/create-bucket c bucket-name) - (map :name (s3/list-buckets c)) - => [bucket-name]))) - -(let [bucket-name (random-string) - object-name (random-string)] - (fact "simple put works" - (with-random-cred cred - (s3/create-bucket cred bucket-name) - (s3/put-object cred bucket-name object-name - "contents")) - => truthy)) - -(let [bucket-name (random-string) - object-name (random-string) - value "this is the value!"] - (fact "the value received during GET is the same - as the object that was PUT" - (with-random-cred c - (s3/create-bucket c bucket-name) - (s3/put-object c bucket-name object-name value) - ((comp slurp :content) (s3/get-object c bucket-name object-name))) - => value)) - -(let [bucket-name (random-string) - object-name (random-string) - value "this is the value!" - as-bytes (.getBytes value "UTF-8") - md5-sum (md5-string as-bytes)] - (fact "check that the etag of the response is the same as the md5 - of the original object" - (with-random-cred c - (s3/create-bucket c bucket-name) - (s3/put-object c bucket-name object-name value) - ((comp :etag :metadata) - (s3/get-object - c bucket-name object-name))) - => md5-sum)) - -(let [bucket-name (random-string) - object-name (random-string) - value "aaaaaaaaaabbbbbbbbbb" - file-name "./clj-mp-test.txt"] - (fact "multipart upload works" - (with-random-cred c - (s3/create-bucket c bucket-name) - (write-file file-name value) - (upload-file c bucket-name object-name file-name 10) - (let [fetched-object (s3/get-object - c bucket-name object-name)] - ((comp slurp :content) fetched-object) - => value - ((comp etag-suffix :etag :metadata) fetched-object) - => "-2")))) - -(let [bucket-name (random-string) - object-name (random-string) - value "this is the real value" - wrong-md5 "2945d7de2f70de5b8c0cb3fbcba4fe92"] - (fact "Bad content md5 throws an exception" - (with-random-cred c - (s3/create-bucket c bucket-name) - (s3/put-object c bucket-name object-name value - {:content-md5 wrong-md5})) - => (throws AmazonS3Exception))) - -(def bad-canonical-id - "0f80b2d002a3d018faaa4a956ce8aa243332a30e878f5dc94f82749984ebb30b") - -(let [bucket-name (random-string) - object-name (random-string) - value-string "this is the real value"] - (fact "Nonexistent canonical-id grant header returns HTTP 400 on - a put object request (not just an ACL subresource request)" - (with-random-cred c - (s3/create-bucket c bucket-name) - (s3/put-object c bucket-name object-name value-string {} - (s3/grant {:id bad-canonical-id} :full-control))) - => (throws AmazonS3Exception))) - -(let [bucket-name (random-string) - object-name (random-string) - value-string "this is the real value" - public-read-grant {:grantee :all-users, :permission :read}] - (fact "Creating an object with an ACL returns the same ACL when you read - the ACL" - (with-random-cred c - (s3/create-bucket c bucket-name) - (s3/put-object c bucket-name object-name value-string {} - (s3/grant :all-users :read)) - (:grants (s3/get-object-acl c bucket-name object-name))) - => (contains (just public-read-grant)))) - -(let [bucket-name (random-string) - object-name (random-string) - value-string "this is the real value" - public-read-grant {:grantee :all-users, :permission :read}] - (fact "Creating an object with an ACL returns the same ACL when you read - the ACL" - (with-random-cred c - (s3/create-bucket c bucket-name) - (s3/put-object c bucket-name object-name value-string {} - (s3/grant :all-users :read)) - (:grants (s3/get-object-acl c bucket-name object-name))) - => (contains (just public-read-grant)))) - -(let [bucket-name (random-string) - object-name (random-string) - value-string "this is the real value"] - (with-random-cred c - (with-random-user u2 - (fact "Creating an object with an (non-canned) ACL returns the same ACL - when you read the ACL" - (s3/create-bucket c bucket-name) - (s3/put-object c bucket-name object-name value-string {} - (s3/grant {:id (:id u2)} :read)) - (:grants (s3/get-object-acl c bucket-name object-name)) - => (contains (just {:grantee {:id (:id u2), - :display-name (:display_name u2)}, - :permission :read})))))) - -(let [bucket-name (random-string) - object-name (random-string)] - (fact "Creating a bucket with an ACL returns the same ACL when you read - the ACL" - (with-random-cred c - (do - (s3/create-bucket c bucket-name {} - (s3/grant :all-users :read)) - (:grants (s3/get-bucket-acl c bucket-name)))) - => (contains (just {:grantee :all-users, :permission :read})))) - -(let [bucket-name (random-string) - object-name (random-string)] - (with-random-cred c - (with-random-user u2 - (fact "Creating a bucket with an (non-canned) ACL returns the same ACL - when you read the ACL" - (s3/create-bucket c bucket-name {} - (s3/grant {:id (:id u2)} :write)) - (:grants (s3/get-bucket-acl c bucket-name)) - => (contains (just {:grantee {:id (:id u2), - :display-name (:display_name u2)}, - :permission :write})))))) diff --git a/client_tests/erlang/erlcloud_eqc.erl b/client_tests/erlang/erlcloud_eqc.erl deleted file mode 100644 index 1e75bfc5f..000000000 --- a/client_tests/erlang/erlcloud_eqc.erl +++ /dev/null @@ -1,402 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - -%% @doc Quickcheck test module for `erlcloud' S3 API interaction with Riak CS. - --module(erlcloud_eqc). - --include("riak_cs.hrl"). - --include_lib("erlcloud/include/erlcloud_aws.hrl"). - --ifdef(EQC). --include_lib("eqc/include/eqc.hrl"). --include_lib("eqc/include/eqc_fsm.hrl"). --include_lib("eunit/include/eunit.hrl"). - --compile(export_all). - -%% eqc properties --export([prop_api_test/4 - %% prop_parallel_api_test/4 - ]). - -%% States --export([start/1, - user_created/1, - bucket_created/1, - bucket_deleted/1, - object_created/1, - object_deleted/1]). - -%% eqc_fsm callbacks --export([initial_state/0, - initial_state_data/0, - initial_state_data/4, - next_state_data/5, - precondition/4, - postcondition/5]). - -%% Helpers --export([test/0, - test/2, - test/5, - create_user/3, - user_name/0, - user_email/0]). - --define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> - io:format(user, Str, Args) end, P)). --define(TEST_ITERATIONS, 100). - --define(P(EXPR), PPP = (EXPR), case PPP of true -> ok; _ -> io:format(user, "PPP ~p at line ~p\n", [PPP, ?LINE]) end, PPP). - --define(S3_MODULE, erlcloud_s3). --define(DEFAULT_HOST, "s3.amazonaws.com"). --define(DEFAULT_PORT, 80). --define(DEFAULT_PROXY_HOST, "localhost"). --define(DEFAULT_PROXY_PORT, 8080). --define(VALUE, "test value"). - --record(api_state, {aws_config :: aws_config(), - bucket :: string(), - keys :: [string()]}). - -%%==================================================================== -%% Eunit tests -%%==================================================================== - -eqc_test_() -> - {spawn, - [ - {timeout, 600, ?_assertEqual(true, - quickcheck(numtests(?TEST_ITERATIONS, - ?QC_OUT(prop_api_test(?DEFAULT_HOST, - ?DEFAULT_PORT, - ?DEFAULT_PROXY_HOST, - cs_port())))))} - %% {timeout, 60, ?_assertEqual(true, quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_parallel_api_test(?DEFAULT_HOST, ?DEFAULT_PORT)))))} - ] - }. - -%% ==================================================================== -%% EQC Properties -%% ==================================================================== - -prop_api_test(Host, Port, ProxyHost, ProxyPort) -> - ?FORALL(Cmds, - eqc_gen:noshrink(commands(?MODULE, {start, initial_state_data(Host, Port, ProxyHost, ProxyPort)})), - begin - RunningApps = application:which_applications(), - case lists:keymember(erlcloud, 1, RunningApps) of - true -> - ok; - false -> - erlcloud:start(), - timer:sleep(200), - ok - end, - {H, {_F, _S}, Res} = run_commands(?MODULE, Cmds), - %% application:stop(erlcloud), - - aggregate(zip(state_names(H), command_names(Cmds)), - ?WHENFAIL( - begin - ?debugFmt("Cmds: ~p~n", - [zip(state_names(H), - command_names(Cmds))]), - ?debugFmt("Result: ~p~n", [Res]), - ?debugFmt("History: ~p~n", [H]) - end, - equals(ok, Res))) - end - ). - -%% prop_parallel_api_test(Host, Port, ProxyHost, ProxyPort) -> -%% ?FORALL(Cmds={Seq, Par}, -%% parallel_commands(?MODULE, {start, initial_state_data(Host, Port)}), -%% begin -%% erlcloud:start(), -%% {H, _ParH, Res} = run_parallel_commands(?MODULE, {Seq, Par}), -%% %% aggregate(zip(state_names(H), command_names(Cmds)), -%% aggregate(command_names(Cmds), -%% ?WHENFAIL( -%% begin -%% ?debugFmt("Cmds: ~p~n", -%% [zip(state_names(H), -%% command_names(Cmds))]), -%% ?debugFmt("Result: ~p~n", [Res]), -%% ?debugFmt("History: ~p~n", [H]) -%% end, -%% equals(ok, Res))) -%% end -%% ). - -%%==================================================================== -%% eqc_fsm callbacks -%%==================================================================== - -start(#api_state{aws_config=Config}) -> - [ - {user_created, {call, ?MODULE, create_user, [user_name(), user_email(), Config]}} - ]. - -user_created(#api_state{aws_config=Config}) -> - [ - {history, {call, ?S3_MODULE, list_buckets, [Config]}}, - {bucket_created, {call, ?S3_MODULE, create_bucket, [bucket(), Config]}} - ]. - -bucket_created(#api_state{aws_config=Config, - bucket=Bucket}) -> - [ - {history, {call, ?S3_MODULE, list_buckets, [Config]}}, - {history, {call, ?S3_MODULE, list_objects, [Bucket, Config]}}, - {object_created, {call, ?S3_MODULE, put_object, [Bucket, key(), ?VALUE, Config]}}, - {bucket_deleted, {call, ?S3_MODULE, delete_bucket, [Bucket, Config]}} - ]. - -bucket_deleted(#api_state{aws_config=Config}) -> - [ - {history, {call, ?S3_MODULE, list_buckets, [Config]}}, - {bucket_created, {call, ?S3_MODULE, create_bucket, [bucket(), Config]}} - ]. - -object_created(#api_state{aws_config=Config, - bucket=Bucket, - keys=[Key | _]}) -> - [ - {history, {call, ?MODULE, get_object, [Bucket, Key, Config]}}, - {history, {call, ?S3_MODULE, list_objects, [Bucket, Config]}}, - {object_deleted, {call, ?S3_MODULE, delete_object, [Bucket, Key, Config]}} - ]. - -object_deleted(#api_state{aws_config=Config, - bucket=Bucket, - keys=[Key | _]}) -> - [ - {history, {call, ?S3_MODULE, list_objects, [Bucket, Config]}}, - {bucket_created, {call, ?MODULE, get_object, [Bucket, Key, Config]}} - ]. - -initial_state() -> - start. - -initial_state_data() -> - #api_state{}. - -initial_state_data(Host, Port, ProxyHost, ProxyPort) -> - #api_state{aws_config=#aws_config{s3_host=Host, - s3_port=Port, - s3_prot="http", - http_options=[{proxy_host, ProxyHost}, - {proxy_port, ProxyPort}]}}. - -next_state_data(start, user_created, S, AwsConfig, _C) -> - S#api_state{aws_config=AwsConfig}; -next_state_data(user_created, bucket_created, S, _R, {call, ?S3_MODULE, create_bucket, [Bucket, _]}) -> - S#api_state{bucket=Bucket}; -next_state_data(bucket_created, bucket_deleted, S, _R, {call, ?S3_MODULE, delete_bucket, [_, _]}) -> - S#api_state{bucket=undefined}; -next_state_data(bucket_deleted, bucket_created, S, _R, {call, ?S3_MODULE, create_bucket, [Bucket, _]}) -> - S#api_state{bucket=Bucket}; -next_state_data(object_deleted, bucket_created, S, _R, {call, ?MODULE, get_object, [_, _, _]}) -> - [_ | RestKeys] = S#api_state.keys, - S#api_state{keys=RestKeys}; -next_state_data(bucket_created, object_created, S, _R, {call, ?S3_MODULE, put_object, [_, Key, _, _]}) -> - Keys = update_keys(Key, S#api_state.keys), - S#api_state{keys=Keys}; -next_state_data(object_created, object_deleted, S, _R, {call, ?S3_MODULE, delete_object, [_, _, _]}) -> - S; -next_state_data(_From, _To, S, _R, _C) -> - S. - -precondition(bucket_created, bucket_deleted, #api_state{keys=undefined}, _C) -> - true; -precondition(bucket_created, bucket_deleted, #api_state{keys=[]}, _C) -> - true; -precondition(bucket_created, bucket_deleted, _S, _C) -> - false; -precondition(_From, _To, _S, _C) -> - true. - -postcondition(start, user_created, _S, _C, {error, _}) -> - ?P(false); -postcondition(start, user_created, _S, _C, Config) -> - ?P(is_record(Config, aws_config)); -postcondition(user_created, user_created, _S, _C, [{buckets, []}]) -> - true; -postcondition(user_created, bucket_created, _S, _C, ok) -> - true; -postcondition(user_created, bucket_created, _S, _C, _) -> - ?P(false); -postcondition(bucket_created, bucket_created, #api_state{bucket=Bucket}, {call, _, list_buckets, _}, [{buckets, [Bucket]}]) -> - true; -postcondition(bucket_created, bucket_created, #api_state{bucket=Bucket}, {call, _, list_objects, _}, R) -> - ?P(is_empty_object_list(Bucket, R)); -postcondition(bucket_created, bucket_deleted, _S, _C, ok) -> - true; -postcondition(bucket_created, bucket_deleted, _S, _C, _) -> - ?P(false); -postcondition(bucket_created, object_created, _S, _C, [{version_id, _}]) -> - true; -postcondition(bucket_created, object_created, _S, _C, _) -> - ?P(false); -postcondition(object_created, object_created, _S, {call, _, get_object, _}, R) -> - ContentLength = proplists:get_value(content_length, R), - Content = proplists:get_value(content, R), - ContentLength =:= "10" andalso Content =:= <<"test value">>; -postcondition(object_created, object_created, #api_state{bucket=Bucket, keys=Keys}, {call, _, list_objects, _}, R) -> - Name = proplists:get_value(name, R), - Contents = proplists:get_value(contents, R), - ?P(Name =:= Bucket andalso verify_object_list_contents(Keys, Contents)); -postcondition(object_created, object_deleted, _S, _C, [{delete_marker, _}, {version_id, _}]) -> - true; -postcondition(object_deleted, object_deleted, #api_state{keys=[Key | _]}, _C, R) -> - Contents = proplists:get_value(contents, R, []), - ?P(not lists:member(Key, Contents)); -postcondition(object_created, object_deleted, _S, _C, _) -> - ?P(false); -%% Catch all -postcondition(_From, _To, _S, _C, _R) -> - true. - -%%==================================================================== -%% Helpers -%%==================================================================== - -test() -> - test(?DEFAULT_HOST, ?DEFAULT_PORT). - -test(Host, Port) -> - test(Host, Port, ?DEFAULT_PROXY_HOST, cs_port(), 500). - -test(Host, Port, ProxyHost, ProxyPort, Iterations) -> - eqc:quickcheck(eqc:numtests(Iterations, prop_api_test(Host, Port, ProxyHost, ProxyPort))). - %% eqc:quickcheck(eqc:numtests(Iterations, prop_parallel_api_test(Host, Port, ProxyHost, ProxyPort))). - -create_user(Name, Email, Config) -> - process_post( - post_user_request( - compose_url(Config), - compose_request(Name, Email)), - Config). - -get_object(Bucket, Key, Config) -> - try - ?S3_MODULE:get_object(Bucket, Key, Config) - catch _:_ -> - {error, not_found} - end. - -post_user_request(Url, RequestDoc) -> - Request = {Url, [], "application/json", RequestDoc}, - httpc:request(post, Request, [], []). - -process_post({ok, {{_, 201, _}, _RespHeaders, RespBody}}, Config) -> - User = json_to_user_record(mochijson2:decode(RespBody)), - Config#aws_config{access_key_id=User?RCS_USER.key_id, - secret_access_key=User?RCS_USER.key_secret}; -process_post(Error, _) -> - Error. - -json_to_user_record({struct, UserItems}) -> - lists:foldl(fun item_to_record_field/2, ?RCS_USER{}, UserItems); -json_to_user_record(_) -> - {error, received_invalid_json}. - -item_to_record_field({<<"email">>, Email}, User) -> - User?RCS_USER{email=binary_to_list(Email)}; -item_to_record_field({<<"name">>, Name}, User) -> - User?RCS_USER{name=binary_to_list(Name)}; -item_to_record_field({<<"display_name">>, DispName}, User) -> - User?RCS_USER{display_name=binary_to_list(DispName)}; -item_to_record_field({<<"id">>, Id}, User) -> - User?RCS_USER{canonical_id=binary_to_list(Id)}; -item_to_record_field({<<"key_id">>, KeyId}, User) -> - User?RCS_USER{key_id=binary_to_list(KeyId)}; -item_to_record_field({<<"key_secret">>, KeySecret}, User) -> - User?RCS_USER{key_secret=binary_to_list(KeySecret)}; -item_to_record_field(_, User) -> - User. - -compose_url(#aws_config{http_options=HTTPOptions}) -> - {_, Host} = lists:keyfind(proxy_host, 1, HTTPOptions), - {_, Port} = lists:keyfind(proxy_port, 1, HTTPOptions), - compose_url(Host, Port). - -compose_url(Host, Port) -> - lists:flatten(["http://", Host, ":", integer_to_list(Port), "/riak-cs/user"]). - -compose_request(Name, Email) -> - binary_to_list( - iolist_to_binary( - mochijson2:encode({struct, [{<<"email">>, list_to_binary(Email)}, - {<<"name">>, list_to_binary(Name)}]}))). - -user_name() -> - ?LET(X, timestamp(), X). - -user_email() -> - ?LET(X, timestamp(), lists:flatten([X, $@, "me.com"])). - -bucket() -> - ?LET(X, timestamp(), X). - -key() -> - ?LET(X, timestamp(), X). - -%% @doc Generator for strings that need to be unique within the VM -timestamp() -> - {MegaSecs, Secs, MicroSecs} = erlang:now(), - to_list(MegaSecs) ++ to_list(Secs) ++ to_list(MicroSecs). - -to_list(X) when X < 10 -> - lists:flatten([$0, X]); -to_list(X) -> - integer_to_list(X). - -update_keys(Key, undefined) -> - [Key]; -update_keys(Key, ExistingKeys) -> - [Key | ExistingKeys]. - -is_empty_object_list(Bucket, ObjectList) -> - Bucket =:= proplists:get_value(name, ObjectList) - andalso [] =:= proplists:get_value(contents, ObjectList). - -verify_object_list_contents([], []) -> - true; -verify_object_list_contents(_, []) -> - false; -verify_object_list_contents(ExpectedKeys, [HeadContent | RestContents]) -> - Key = proplists:get_value(key, HeadContent), - verify_object_list_contents(lists:delete(Key, ExpectedKeys), RestContents). - -cs_port() -> - case os:getenv("CS_HTTP_PORT") of - false -> - ?DEFAULT_PROXY_PORT; - Str -> - list_to_integer(Str) - end. - --endif. diff --git a/client_tests/go/.gitignore b/client_tests/go/.gitignore deleted file mode 100644 index d4f1ec763..000000000 --- a/client_tests/go/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -env/ -tmp/ diff --git a/client_tests/go/Makefile b/client_tests/go/Makefile deleted file mode 100644 index 542006784..000000000 --- a/client_tests/go/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -.PHONY: all clean gof3r test-mp-put-get - -CS_HTTP_PORT ?= 8080 -HTTP_PROXY ?= 127.0.0.1:$(CS_HTTP_PORT) -CS_BUCKET ?= test -CS_KEY ?= $(shell date '+%s') - -TMPDIR := $(PWD)/tmp -RANDFILE := $(TMPDIR)/rand-50MB -GETFILE := $(TMPDIR)/rand-get -GOOPTS := --no-ssl - -export GOPATH := $(PWD)/env -export PATH := $(GOPATH)/bin:$(PATH) -export HTTP_PROXY - -all: test-mp-put-get - -#### TESTS - -## Test multipart upload completes without error -## See: https://github.com/basho/riak_cs/issues/855 -test-mp-put-get: gof3r $(RANDFILE) - gof3r put $(GOOPTS) -s 5242880 -p $(RANDFILE) -b $(CS_BUCKET) -k $(CS_KEY) - rm -f $(GETFILE) - gof3r get $(GOOPTS) -b $(CS_BUCKET) -k $(CS_KEY) - > $(GETFILE) - diff $(RANDFILE) $(GETFILE) - rm -f $(GETFILE) - -### Environment setup - -env: - mkdir $(GOPATH) - -gof3r: $(GOPATH)/bin/gof3r - -$(GOPATH)/bin/gof3r: env - go get github.com/rlmcpherson/s3gof3r/gof3r - -$(RANDFILE): - mkdir -p $(TMPDIR) - dd if=/dev/urandom of=$(RANDFILE) bs=1M count=50 - -clean: - rm -rf $(TMPDIR) - rm -rf $(GOPATH) diff --git a/client_tests/go/README.md b/client_tests/go/README.md deleted file mode 100644 index 80f876692..000000000 --- a/client_tests/go/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# Riak CS Go Tests - -## Dependencies - -- Go Lang runtime installation, see http://golang.org/doc/ . - -## Configuration - -Before execution, settings below should be done for Riak CS: - -- Create an user and export its key and secret as environment - variables. -- Create an bucket owned by the user, export its name as an an - environment variable. -- Export proxy information to connect Riak CS. - -Sample bash script to export these settings: - -``` -export AWS_ACCESS_KEY_ID=8P4GB-NTTTWKDBP6AVLF -export AWS_SECRET_ACCESS_KEY=1xJYjxqtVzogYmo697ZzNOVp8r0dMvWbnPVfiQ== -export CS_HTTP_PORT=15018 -export CS_BUCKET=test-gof3r -export CS_KEY=complete-multipart-upload -``` - -`CS_HTTP_PORT` can be ommitted if `HTTP_PROXY` is set -(e.g. `HTTP_PROXY=127.0.0.1:15018`). -`CS_BUCKET` and `CS_KEY` are optional, the default values are `test` -and an epoch seconds each. - -## Execution - -Installation of s3gof3r and gof3r command line is automatically done -by `Makefile`. So all you should do is just `make`. - -``` -cd client_tests/go -make -``` - -This executes one test target `test-mp-put-get`. - -- First creates input file of 50MB at `./tmp`, -- then executes multipart upload with 5MB part size, -- finally gets the object and compares it with the input file. diff --git a/client_tests/php/.gitignore b/client_tests/php/.gitignore deleted file mode 100644 index 8d1c47b37..000000000 --- a/client_tests/php/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -phpunit -vendor diff --git a/client_tests/php/Makefile b/client_tests/php/Makefile deleted file mode 100644 index 78c28bb5b..000000000 --- a/client_tests/php/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -.PHONY: test all clean -.DEFAULT: all - -all: test - -phpunit: - @composer install --dev - -vendor composer.lock: composer.json - @composer install --dev - -test: phpunit - @./phpunit - -clean: - @rm -rf composer.lock vendor phpunit diff --git a/client_tests/php/README.md b/client_tests/php/README.md deleted file mode 100644 index 22e28c5dc..000000000 --- a/client_tests/php/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Riak CS AWS PHP SDK Tests - -## Dependencies - -* PHP54 (5.4.x) - - on OSX with homebrew: - - ```bash - brew tap homebrew/dupes - brew tap josegonzalez/homebrew-php - brew install php54 - ``` - -* [Composer](https://getcomposer.org/): - - ```bash - $ curl -s https://getcomposer.org/installer | php && mv -v composer.phar /usr/local/bin/composer - ``` - -## Execution - -```bash -$ make -``` diff --git a/client_tests/php/composer.json b/client_tests/php/composer.json deleted file mode 100644 index 9f23adb53..000000000 --- a/client_tests/php/composer.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "config": { - "bin-dir": "." - }, - "require": { - "aws/aws-sdk-php": "2.3.*" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*" - } -} diff --git a/client_tests/php/composer.lock b/client_tests/php/composer.lock deleted file mode 100644 index b880513d6..000000000 --- a/client_tests/php/composer.lock +++ /dev/null @@ -1,651 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" - ], - "hash": "2bd51bb9e4409cf52d733e0ccf23d48c", - "packages": [ - { - "name": "aws/aws-sdk-php", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "43b63c66bde4c6c35378a417a09ed1240ec9eecb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/43b63c66bde4c6c35378a417a09ed1240ec9eecb", - "reference": "43b63c66bde4c6c35378a417a09ed1240ec9eecb", - "shasum": "" - }, - "require": { - "guzzle/guzzle": "~3.6.0", - "php": ">=5.3.3" - }, - "require-dev": { - "doctrine/cache": "~1.0", - "ext-apc": "*", - "ext-openssl": "*", - "monolog/monolog": "1.4.*", - "phpunit/phpunit": "3.7.*", - "symfony/class-loader": "2.*", - "symfony/yaml": "2.*" - }, - "suggest": { - "doctrine/cache": "Adds support for caching of credentials and responses", - "ext-apc": "Allows service description opcode caching, request and response caching, and credentials caching", - "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", - "monolog/monolog": "Adds support for logging HTTP requests and responses", - "symfony/yaml": "Eases the ability to write manifests for creating jobs in AWS Import/Export" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, - "autoload": { - "psr-0": { - "Aws": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Amazon Web Services", - "homepage": "http://aws.amazon.com" - } - ], - "description": "AWS SDK for PHP", - "homepage": "http://aws.amazon.com/sdkforphp2", - "keywords": [ - "amazon", - "aws", - "dynamodb", - "ec2", - "s3", - "sdk" - ], - "time": "2013-05-30 16:30:25" - }, - { - "name": "guzzle/guzzle", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "b550d534c9b668c767b6a532bd686d0942505f7a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b550d534c9b668c767b6a532bd686d0942505f7a", - "reference": "b550d534c9b668c767b6a532bd686d0942505f7a", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "php": ">=5.3.2", - "symfony/event-dispatcher": ">=2.1" - }, - "replace": { - "guzzle/batch": "self.version", - "guzzle/cache": "self.version", - "guzzle/common": "self.version", - "guzzle/http": "self.version", - "guzzle/inflection": "self.version", - "guzzle/iterator": "self.version", - "guzzle/log": "self.version", - "guzzle/parser": "self.version", - "guzzle/plugin": "self.version", - "guzzle/plugin-async": "self.version", - "guzzle/plugin-backoff": "self.version", - "guzzle/plugin-cache": "self.version", - "guzzle/plugin-cookie": "self.version", - "guzzle/plugin-curlauth": "self.version", - "guzzle/plugin-error-response": "self.version", - "guzzle/plugin-history": "self.version", - "guzzle/plugin-log": "self.version", - "guzzle/plugin-md5": "self.version", - "guzzle/plugin-mock": "self.version", - "guzzle/plugin-oauth": "self.version", - "guzzle/service": "self.version", - "guzzle/stream": "self.version" - }, - "require-dev": { - "doctrine/cache": "*", - "monolog/monolog": "1.*", - "phpunit/phpunit": "3.7.*", - "psr/log": "1.0.*", - "symfony/class-loader": "*", - "zendframework/zend-cache": "2.0.*", - "zendframework/zend-log": "2.0.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.6-dev" - } - }, - "autoload": { - "psr-0": { - "Guzzle\\Tests": "tests/", - "Guzzle": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Guzzle Community", - "homepage": "https://github.com/guzzle/guzzle/contributors" - } - ], - "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2013-05-30 07:01:25" - }, - { - "name": "symfony/event-dispatcher", - "version": "v2.4.0", - "target-dir": "Symfony/Component/EventDispatcher", - "source": { - "type": "git", - "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "acd1707236f6eb96fbb8d58f63d289b72ebc2f6e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/acd1707236f6eb96fbb8d58f63d289b72ebc2f6e", - "reference": "acd1707236f6eb96fbb8d58f63d289b72ebc2f6e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/dependency-injection": "~2.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "http://symfony.com", - "time": "2013-12-03 14:52:22" - } - ], - "packages-dev": [ - { - "name": "phpunit/php-code-coverage", - "version": "1.2.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "466e7cd2554b4e264c9e3f31216d25ac0e5f3d94" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/466e7cd2554b4e264c9e3f31216d25ac0e5f3d94", - "reference": "466e7cd2554b4e264c9e3f31216d25ac0e5f3d94", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": ">=1.3.0@stable", - "phpunit/php-text-template": ">=1.1.1@stable", - "phpunit/php-token-stream": ">=1.1.3@stable" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*@dev" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.0.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2013-09-10 08:14:32" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "File/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2013-10-10 15:34:57" - }, - { - "name": "phpunit/php-text-template", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5180896f51c5b3648ac946b05f9ec02be78a0b23" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5180896f51c5b3648ac946b05f9ec02be78a0b23", - "reference": "5180896f51c5b3648ac946b05f9ec02be78a0b23", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "Text/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2012-10-31 18:15:28" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2013-08-02 07:42:54" - }, - { - "name": "phpunit/php-token-stream", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "5220af2a7929aa35cf663d97c89ad3d50cf5fa3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/5220af2a7929aa35cf663d97c89ad3d50cf5fa3e", - "reference": "5220af2a7929aa35cf663d97c89ad3d50cf5fa3e", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2013-09-13 04:58:23" - }, - { - "name": "phpunit/phpunit", - "version": "3.7.28", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3b97c8492bcafbabe6b6fbd2ab35f2f04d932a8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3b97c8492bcafbabe6b6fbd2ab35f2f04d932a8d", - "reference": "3b97c8492bcafbabe6b6fbd2ab35f2f04d932a8d", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpunit/php-code-coverage": "~1.2.1", - "phpunit/php-file-iterator": ">=1.3.1", - "phpunit/php-text-template": ">=1.1.1", - "phpunit/php-timer": ">=1.0.4", - "phpunit/phpunit-mock-objects": "~1.2.0", - "symfony/yaml": "~2.0" - }, - "require-dev": { - "pear-pear/pear": "1.9.4" - }, - "suggest": { - "ext-json": "*", - "ext-simplexml": "*", - "ext-tokenizer": "*", - "phpunit/php-invoker": ">=1.1.0,<1.2.0" - }, - "bin": [ - "composer/bin/phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.7.x-dev" - } - }, - "autoload": { - "classmap": [ - "PHPUnit/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "", - "../../symfony/yaml/" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "http://www.phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2013-10-17 07:27:40" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/5794e3c5c5ba0fb037b11d8151add2a07fa82875", - "reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpunit/php-text-template": ">=1.1.1@stable" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "autoload": { - "classmap": [ - "PHPUnit/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2013-01-13 10:24:48" - }, - { - "name": "symfony/yaml", - "version": "v2.4.0", - "target-dir": "Symfony/Component/Yaml", - "source": { - "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "1ae235a1b9d3ad3d9f3860ff20acc072df95b7f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/1ae235a1b9d3ad3d9f3860ff20acc072df95b7f5", - "reference": "1ae235a1b9d3ad3d9f3860ff20acc072df95b7f5", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Yaml\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "http://symfony.com", - "time": "2013-11-26 16:40:27" - } - ], - "aliases": [ - - ], - "minimum-stability": "stable", - "stability-flags": [ - - ], - "platform": [ - - ], - "platform-dev": [ - - ] -} diff --git a/client_tests/php/phpunit.xml.dist b/client_tests/php/phpunit.xml.dist deleted file mode 100644 index 170298107..000000000 --- a/client_tests/php/phpunit.xml.dist +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - tests - - - diff --git a/client_tests/php/test_services.json b/client_tests/php/test_services.json deleted file mode 100644 index 5b7d52a57..000000000 --- a/client_tests/php/test_services.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "includes" : ["_aws"], - "services" : { - "default_settings" : { - "params" : { - "key" : "key_id", - "secret" : "key_secret", - "region" : "us-east-1", - "base_url" : "http://s3.amazonaws.com", - "curl.options": {"CURLOPT_PROXY" : "localhost:8080"}, - "scheme" : "http" - } - } - } -} diff --git a/client_tests/php/tests/S3ClientTest.php b/client_tests/php/tests/S3ClientTest.php deleted file mode 100644 index 8e177e830..000000000 --- a/client_tests/php/tests/S3ClientTest.php +++ /dev/null @@ -1,135 +0,0 @@ -client = $this->getServiceBuilder()->get('s3'); - $this->client->getEventDispatcher()->removeSubscriber(BackoffPlugin::getExponentialBackoff()); // disable retry - $this->bucket = randBucket(); - } - - public function tearDown() - { - if ( ! $this->client->doesBucketExist($this->bucket)) { return; } - - $objects = $this->client->getIterator('ListObjects', array('Bucket' => $this->bucket)); - foreach ($objects as $object) { - $this->client->deleteObject(array('Bucket' => $this->bucket, 'Key' => $object['Key'])); - } - $this->client->deleteBucket(array('Bucket' => $this->bucket)); - } - - public function testBucketNotExists() - { - $this->assertFalse($this->client->doesBucketExist($this->bucket)); - try { - $this->client->getBucketAcl(array('Bucket' => $this->bucket))['Grants']; - $this->fail(); - } catch (Aws\S3\Exception\S3Exception $e) { /* noop */ } - - try { - $this->client->getObject(array('Bucket' => $this->bucket, 'Key' => randKey())); - $this->fail(); - } catch (Aws\S3\Exception\S3Exception $e) { /* noop */ } - } - - public function testCreateDeleteBucket() - { - $this->client->createBucket(array('Bucket' => $this->bucket)); - $this->assertTrue($this->client->doesBucketExist($this->bucket)); - - $this->client->deleteBucket(array('Bucket' => $this->bucket)); - $this->assertFalse($this->client->doesBucketExist($this->bucket)); - } - - public function testPutGetDeleteObject() - { - $this->client->createBucket(array('Bucket' => $this->bucket)); - $key = randKey(); - - $this->client->putObject( - array( - 'Bucket' => $this->bucket, - 'Key' => $key, - 'Content-Type' => 'text/plain', - 'Body' => "This is a entity body.")); - $this->assertTrue($this->client->doesObjectExist($this->bucket, $key)); - - $object = $this->client->getObject(array('Bucket' => $this->bucket, 'Key' => $key)); - $this->assertEquals('This is a entity body.',(string)$object['Body']); - - $this->client->deleteObject(array('Bucket' => $this->bucket, 'Key' => $key)); - $this->assertFalse($this->client->doesObjectExist($this->bucket, $key)); - - } - - public function testBucketACL() - { - $this->client->createBucket(array('Bucket' => $this->bucket)); - $this->client->putBucketAcl(array('Bucket' => $this->bucket, 'ACL' => 'public-read')); - $grants = $this->client->getBucketAcl(array('Bucket' => $this->bucket))['Grants']; - - $filtered_grants = array_filter($grants, function($item){ - return array_key_exists('URI', $item['Grantee']) - && $item['Grantee']['URI'] == self::ALL_USER_URL - && $item['Permission'] == 'READ'; - }); - $this->assertGreaterThanOrEqual(1, sizeof($filtered_grants)); - } - - public function testObjectACL() - { - $this->client->createBucket(array('Bucket' => $this->bucket)); - $key = randKey(); - $this->client->putObject( - array( - 'Bucket' => $this->bucket, - 'Key' => $key, - 'Content-Type' => 'text/plain', - 'Body' => "This is a entity body.")); - $this->client->putObjectAcl(array('Bucket' => $this->bucket, 'Key' => $key,'ACL' => 'public-read')); - $grants = $this->client->getObjectAcl(array('Bucket' => $this->bucket, 'Key' => $key))['Grants']; - $filtered_grants = array_filter($grants, function($item){ - return array_key_exists('URI', $item['Grantee']) - && $item['Grantee']['URI'] == self::ALL_USER_URL - && $item['Permission'] == 'READ'; - }); - $this->assertGreaterThanOrEqual(1, sizeof($filtered_grants)); - } -} -function randBucket() -{ - return uniqid('aws-sdk-test-'); -} - -function randKey() -{ - return uniqid('key-'); -} -?> diff --git a/client_tests/php/tests/bootstrap.php b/client_tests/php/tests/bootstrap.php deleted file mode 100644 index 3143625e2..000000000 --- a/client_tests/php/tests/bootstrap.php +++ /dev/null @@ -1,51 +0,0 @@ - $user['key_id'], - 'secret' => $user['key_secret'], - 'curl.options' => array('CURLOPT_PROXY' => 'localhost:' . cs_port()) - )); -} - -function creat_user() { - $name = uniqid('riakcs-'); - $client = new Client('http://localhost:' . cs_port()); - $request = $client->put('/riak-cs/user', - array('Content-Type' => 'application/json'), - "{\"name\":\"{$name}\", \"email\":\"{$name}@example.com\"}"); - return $request->send()->json(); -} - -function cs_port() { - return getenv('CS_HTTP_PORT') ? getenv('CS_HTTP_PORT') : 8080; -} - - -Guzzle\Tests\GuzzleTestCase::setServiceBuilder(newServiceBuilder()); - -?> diff --git a/client_tests/python/.gitignore b/client_tests/python/.gitignore deleted file mode 100644 index e35672b97..000000000 --- a/client_tests/python/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -env diff --git a/client_tests/python/Makefile b/client_tests/python/Makefile deleted file mode 100644 index 0b2bd9679..000000000 --- a/client_tests/python/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -.PHONY: boto_tests ceph_tests - -all: - $(MAKE) -C ./boto_tests - $(MAKE) -C ./ceph_tests - -boto_tests: - $(MAKE) -C ./boto_tests - -ceph_tests: - $(MAKE) -C ./ceph_tests - -clean: - $(MAKE) -C ./boto_tests clean - $(MAKE) -C ./ceph_tests clean diff --git a/client_tests/python/README.md b/client_tests/python/README.md deleted file mode 100644 index d66ac744d..000000000 --- a/client_tests/python/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Riak CS Python Tests: Boto based tests and ceph's s3-tests - -## Dependencies - -* [virtualenv](http://www.virtualenv.org/en/latest/#installation) (I'm using 1.9.1) -* Python (I'm using 2.7.2) -* `uuidgen` command (e.g. `apt-get install uuid-runtime` on Debian/Ubuntu) - -## Configuration - -Ensure that the Riak CS `advanced.config` has the following items: - -```erlang -{anonymous_user_creation, true}, -{enforce_multipart_part_size, false}, -{max_buckets_per_user, 300}, -{auth_v4_enabled, true}, -``` - -## Execution - -There is a `Makefile` that will set everything up for you, including all of the -dependencies. The `all` target will install everything and run the integration -tests: - -```bash -make -``` - -Take a look at the `Makefile` for more detail about how the test is set up. diff --git a/client_tests/python/boto_tests/Makefile b/client_tests/python/boto_tests/Makefile deleted file mode 100644 index abdcdfd02..000000000 --- a/client_tests/python/boto_tests/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -.PHONY: test test-auth-v2 test-auth-v4 clean all -.DEFAULT: all - -DEPS = env/lib/python2.7/site-packages -BIN = env/bin - -## overwrite auth.py because boto has bugs of auth v4 -## diff from 2.35.1: bb5e02b1c61b3cf03ba9cafc7a3f6c56adcf92ad.patch -PATCHED_AUTH_PY = auth.py.patched - -all: test - -env: - @virtualenv env - -$(DEPS) $(BIN): requirements.txt env - @env/bin/pip install -r requirements.txt - cp $(PATCHED_AUTH_PY) $(DEPS)/boto/auth.py - rm -f $(DEPS)/boto/auth.pyc - -test: test-auth-v2 test-auth-v4 - -test-auth-v2: $(DEPS) $(BIN) - env CS_AUTH=auth-v2 env/bin/python boto_test.py - -test-auth-v4: $(DEPS) $(BIN) - env CS_AUTH=auth-v4 env/bin/python boto_test.py - -clean: - @rm -rf env diff --git a/client_tests/python/boto_tests/auth.py.patched b/client_tests/python/boto_tests/auth.py.patched deleted file mode 100644 index eac147171..000000000 --- a/client_tests/python/boto_tests/auth.py.patched +++ /dev/null @@ -1,1041 +0,0 @@ -# Copyright 2010 Google Inc. -# Copyright (c) 2011 Mitch Garnaat http://garnaat.org/ -# Copyright (c) 2011, Eucalyptus Systems, Inc. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, dis- -# tribute, sublicense, and/or sell copies of the Software, and to permit -# persons to whom the Software is furnished to do so, subject to the fol- -# lowing conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- -# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - - -""" -Handles authentication required to AWS and GS -""" - -import base64 -import boto -import boto.auth_handler -import boto.exception -import boto.plugin -import boto.utils -from collections import OrderedDict -import copy -import datetime -from email.utils import formatdate -import hmac -import os -import posixpath - -from boto.compat import urllib, encodebytes -from boto.auth_handler import AuthHandler -from boto.exception import BotoClientError - -try: - from hashlib import sha1 as sha - from hashlib import sha256 as sha256 -except ImportError: - import sha - sha256 = None - - -# Region detection strings to determine if SigV4 should be used -# by default. -SIGV4_DETECT = [ - '.cn-', - # In eu-central we support both host styles for S3 - '.eu-central', - '-eu-central', -] - - -class HmacKeys(object): - """Key based Auth handler helper.""" - - def __init__(self, host, config, provider): - if provider.access_key is None or provider.secret_key is None: - raise boto.auth_handler.NotReadyToAuthenticate() - self.host = host - self.update_provider(provider) - - def update_provider(self, provider): - self._provider = provider - self._hmac = hmac.new(self._provider.secret_key.encode('utf-8'), - digestmod=sha) - if sha256: - self._hmac_256 = hmac.new(self._provider.secret_key.encode('utf-8'), - digestmod=sha256) - else: - self._hmac_256 = None - - def algorithm(self): - if self._hmac_256: - return 'HmacSHA256' - else: - return 'HmacSHA1' - - def _get_hmac(self): - if self._hmac_256: - digestmod = sha256 - else: - digestmod = sha - return hmac.new(self._provider.secret_key.encode('utf-8'), - digestmod=digestmod) - - def sign_string(self, string_to_sign): - new_hmac = self._get_hmac() - new_hmac.update(string_to_sign.encode('utf-8')) - return encodebytes(new_hmac.digest()).decode('utf-8').strip() - - def __getstate__(self): - pickled_dict = copy.copy(self.__dict__) - del pickled_dict['_hmac'] - del pickled_dict['_hmac_256'] - return pickled_dict - - def __setstate__(self, dct): - self.__dict__ = dct - self.update_provider(self._provider) - - -class AnonAuthHandler(AuthHandler, HmacKeys): - """ - Implements Anonymous requests. - """ - - capability = ['anon'] - - def __init__(self, host, config, provider): - super(AnonAuthHandler, self).__init__(host, config, provider) - - def add_auth(self, http_request, **kwargs): - pass - - -class HmacAuthV1Handler(AuthHandler, HmacKeys): - """ Implements the HMAC request signing used by S3 and GS.""" - - capability = ['hmac-v1', 's3'] - - def __init__(self, host, config, provider): - AuthHandler.__init__(self, host, config, provider) - HmacKeys.__init__(self, host, config, provider) - self._hmac_256 = None - - def update_provider(self, provider): - super(HmacAuthV1Handler, self).update_provider(provider) - self._hmac_256 = None - - def add_auth(self, http_request, **kwargs): - headers = http_request.headers - method = http_request.method - auth_path = http_request.auth_path - if 'Date' not in headers: - headers['Date'] = formatdate(usegmt=True) - - if self._provider.security_token: - key = self._provider.security_token_header - headers[key] = self._provider.security_token - string_to_sign = boto.utils.canonical_string(method, auth_path, - headers, None, - self._provider) - boto.log.debug('StringToSign:\n%s' % string_to_sign) - b64_hmac = self.sign_string(string_to_sign) - auth_hdr = self._provider.auth_header - auth = ("%s %s:%s" % (auth_hdr, self._provider.access_key, b64_hmac)) - boto.log.debug('Signature:\n%s' % auth) - headers['Authorization'] = auth - - -class HmacAuthV2Handler(AuthHandler, HmacKeys): - """ - Implements the simplified HMAC authorization used by CloudFront. - """ - capability = ['hmac-v2', 'cloudfront'] - - def __init__(self, host, config, provider): - AuthHandler.__init__(self, host, config, provider) - HmacKeys.__init__(self, host, config, provider) - self._hmac_256 = None - - def update_provider(self, provider): - super(HmacAuthV2Handler, self).update_provider(provider) - self._hmac_256 = None - - def add_auth(self, http_request, **kwargs): - headers = http_request.headers - if 'Date' not in headers: - headers['Date'] = formatdate(usegmt=True) - if self._provider.security_token: - key = self._provider.security_token_header - headers[key] = self._provider.security_token - - b64_hmac = self.sign_string(headers['Date']) - auth_hdr = self._provider.auth_header - headers['Authorization'] = ("%s %s:%s" % - (auth_hdr, - self._provider.access_key, b64_hmac)) - - -class HmacAuthV3Handler(AuthHandler, HmacKeys): - """Implements the new Version 3 HMAC authorization used by Route53.""" - - capability = ['hmac-v3', 'route53', 'ses'] - - def __init__(self, host, config, provider): - AuthHandler.__init__(self, host, config, provider) - HmacKeys.__init__(self, host, config, provider) - - def add_auth(self, http_request, **kwargs): - headers = http_request.headers - if 'Date' not in headers: - headers['Date'] = formatdate(usegmt=True) - - if self._provider.security_token: - key = self._provider.security_token_header - headers[key] = self._provider.security_token - - b64_hmac = self.sign_string(headers['Date']) - s = "AWS3-HTTPS AWSAccessKeyId=%s," % self._provider.access_key - s += "Algorithm=%s,Signature=%s" % (self.algorithm(), b64_hmac) - headers['X-Amzn-Authorization'] = s - - -class HmacAuthV3HTTPHandler(AuthHandler, HmacKeys): - """ - Implements the new Version 3 HMAC authorization used by DynamoDB. - """ - - capability = ['hmac-v3-http'] - - def __init__(self, host, config, provider): - AuthHandler.__init__(self, host, config, provider) - HmacKeys.__init__(self, host, config, provider) - - def headers_to_sign(self, http_request): - """ - Select the headers from the request that need to be included - in the StringToSign. - """ - headers_to_sign = {'Host': self.host} - for name, value in http_request.headers.items(): - lname = name.lower() - if lname.startswith('x-amz'): - headers_to_sign[name] = value - return headers_to_sign - - def canonical_headers(self, headers_to_sign): - """ - Return the headers that need to be included in the StringToSign - in their canonical form by converting all header keys to lower - case, sorting them in alphabetical order and then joining - them into a string, separated by newlines. - """ - l = sorted(['%s:%s' % (n.lower().strip(), - headers_to_sign[n].strip()) for n in headers_to_sign]) - return '\n'.join(l) - - def string_to_sign(self, http_request): - """ - Return the canonical StringToSign as well as a dict - containing the original version of all headers that - were included in the StringToSign. - """ - headers_to_sign = self.headers_to_sign(http_request) - canonical_headers = self.canonical_headers(headers_to_sign) - string_to_sign = '\n'.join([http_request.method, - http_request.auth_path, - '', - canonical_headers, - '', - http_request.body]) - return string_to_sign, headers_to_sign - - def add_auth(self, req, **kwargs): - """ - Add AWS3 authentication to a request. - - :type req: :class`boto.connection.HTTPRequest` - :param req: The HTTPRequest object. - """ - # This could be a retry. Make sure the previous - # authorization header is removed first. - if 'X-Amzn-Authorization' in req.headers: - del req.headers['X-Amzn-Authorization'] - req.headers['X-Amz-Date'] = formatdate(usegmt=True) - if self._provider.security_token: - req.headers['X-Amz-Security-Token'] = self._provider.security_token - string_to_sign, headers_to_sign = self.string_to_sign(req) - boto.log.debug('StringToSign:\n%s' % string_to_sign) - hash_value = sha256(string_to_sign.encode('utf-8')).digest() - b64_hmac = self.sign_string(hash_value) - s = "AWS3 AWSAccessKeyId=%s," % self._provider.access_key - s += "Algorithm=%s," % self.algorithm() - s += "SignedHeaders=%s," % ';'.join(headers_to_sign) - s += "Signature=%s" % b64_hmac - req.headers['X-Amzn-Authorization'] = s - - -class HmacAuthV4Handler(AuthHandler, HmacKeys): - """ - Implements the new Version 4 HMAC authorization. - """ - - capability = ['hmac-v4'] - - def __init__(self, host, config, provider, - service_name=None, region_name=None): - AuthHandler.__init__(self, host, config, provider) - HmacKeys.__init__(self, host, config, provider) - # You can set the service_name and region_name to override the - # values which would otherwise come from the endpoint, e.g. - # ..amazonaws.com. - self.service_name = service_name - self.region_name = region_name - - def _sign(self, key, msg, hex=False): - if not isinstance(key, bytes): - key = key.encode('utf-8') - - if hex: - sig = hmac.new(key, msg.encode('utf-8'), sha256).hexdigest() - else: - sig = hmac.new(key, msg.encode('utf-8'), sha256).digest() - return sig - - def headers_to_sign(self, http_request): - """ - Select the headers from the request that need to be included - in the StringToSign. - """ - host_header_value = self.host_header(self.host, http_request) - headers_to_sign = {'Host': host_header_value} - for name, value in http_request.headers.items(): - lname = name.lower() - if lname.startswith('x-amz'): - if isinstance(value, bytes): - value = value.decode('utf-8') - headers_to_sign[name] = value - return headers_to_sign - - def host_header(self, host, http_request): - port = http_request.port - secure = http_request.protocol == 'https' - if ((port == 80 and not secure) or (port == 443 and secure)): - return host - return '%s:%s' % (host, port) - - def query_string(self, http_request): - parameter_names = sorted(http_request.params.keys()) - pairs = [] - for pname in parameter_names: - pval = boto.utils.get_utf8_value(http_request.params[pname]) - pairs.append(urllib.parse.quote(pname, safe='') + '=' + - urllib.parse.quote(pval, safe='-_~')) - return '&'.join(pairs) - - def canonical_query_string(self, http_request): - # POST requests pass parameters in through the - # http_request.body field. - if http_request.method == 'POST': - return "" - l = [] - for param in sorted(http_request.params): - value = boto.utils.get_utf8_value(http_request.params[param]) - l.append('%s=%s' % (urllib.parse.quote(param, safe='-_.~'), - urllib.parse.quote(value, safe='-_.~'))) - return '&'.join(l) - - def canonical_headers(self, headers_to_sign): - """ - Return the headers that need to be included in the StringToSign - in their canonical form by converting all header keys to lower - case, sorting them in alphabetical order and then joining - them into a string, separated by newlines. - """ - canonical = [] - - for header in headers_to_sign: - c_name = header.lower().strip() - raw_value = str(headers_to_sign[header]) - if '"' in raw_value: - c_value = raw_value.strip() - else: - c_value = ' '.join(raw_value.strip().split()) - canonical.append('%s:%s' % (c_name, c_value)) - return '\n'.join(canonical) - - def signed_headers(self, headers_to_sign): - l = ['%s' % n.lower().strip() for n in headers_to_sign] - return ';'.join(l) - - def canonical_uri(self, http_request): - path = http_request.auth_path - # Normalize the path - # in windows normpath('/') will be '\\' so we chane it back to '/' - normalized = posixpath.normpath(path).replace('\\', '/') - # Then urlencode whatever's left. - encoded = urllib.parse.quote(normalized) - if len(path) > 1 and path.endswith('/'): - encoded += '/' - return encoded - - def payload(self, http_request): - body = http_request.body - # If the body is a file like object, we can use - # boto.utils.compute_hash, which will avoid reading - # the entire body into memory. - if hasattr(body, 'seek') and hasattr(body, 'read'): - return boto.utils.compute_hash(body, hash_algorithm=sha256)[0] - elif not isinstance(body, bytes): - body = body.encode('utf-8') - return sha256(body).hexdigest() - - def canonical_request(self, http_request): - cr = [http_request.method.upper()] - cr.append(self.canonical_uri(http_request)) - cr.append(self.canonical_query_string(http_request)) - headers_to_sign = self.headers_to_sign(http_request) - cr.append(self.canonical_headers(headers_to_sign) + '\n') - cr.append(self.signed_headers(headers_to_sign)) - cr.append(self.payload(http_request)) - return '\n'.join(cr) - - def scope(self, http_request): - scope = [self._provider.access_key] - scope.append(http_request.timestamp) - scope.append(http_request.region_name) - scope.append(http_request.service_name) - scope.append('aws4_request') - return '/'.join(scope) - - def split_host_parts(self, host): - return host.split('.') - - def determine_region_name(self, host): - parts = self.split_host_parts(host) - if self.region_name is not None: - region_name = self.region_name - elif len(parts) > 1: - if parts[1] == 'us-gov': - region_name = 'us-gov-west-1' - else: - if len(parts) == 3: - region_name = 'us-east-1' - else: - region_name = parts[1] - else: - region_name = parts[0] - - return region_name - - def determine_service_name(self, host): - parts = self.split_host_parts(host) - if self.service_name is not None: - service_name = self.service_name - else: - service_name = parts[0] - return service_name - - def credential_scope(self, http_request): - scope = [] - http_request.timestamp = http_request.headers['X-Amz-Date'][0:8] - scope.append(http_request.timestamp) - # The service_name and region_name either come from: - # * The service_name/region_name attrs or (if these values are None) - # * parsed from the endpoint ..amazonaws.com. - region_name = self.determine_region_name(http_request.host) - service_name = self.determine_service_name(http_request.host) - http_request.service_name = service_name - http_request.region_name = region_name - - scope.append(http_request.region_name) - scope.append(http_request.service_name) - scope.append('aws4_request') - return '/'.join(scope) - - def string_to_sign(self, http_request, canonical_request): - """ - Return the canonical StringToSign as well as a dict - containing the original version of all headers that - were included in the StringToSign. - """ - sts = ['AWS4-HMAC-SHA256'] - sts.append(http_request.headers['X-Amz-Date']) - sts.append(self.credential_scope(http_request)) - sts.append(sha256(canonical_request.encode('utf-8')).hexdigest()) - return '\n'.join(sts) - - def signature(self, http_request, string_to_sign): - key = self._provider.secret_key - k_date = self._sign(('AWS4' + key).encode('utf-8'), - http_request.timestamp) - k_region = self._sign(k_date, http_request.region_name) - k_service = self._sign(k_region, http_request.service_name) - k_signing = self._sign(k_service, 'aws4_request') - return self._sign(k_signing, string_to_sign, hex=True) - - def add_auth(self, req, **kwargs): - """ - Add AWS4 authentication to a request. - - :type req: :class`boto.connection.HTTPRequest` - :param req: The HTTPRequest object. - """ - # This could be a retry. Make sure the previous - # authorization header is removed first. - if 'X-Amzn-Authorization' in req.headers: - del req.headers['X-Amzn-Authorization'] - now = datetime.datetime.utcnow() - req.headers['X-Amz-Date'] = now.strftime('%Y%m%dT%H%M%SZ') - if self._provider.security_token: - req.headers['X-Amz-Security-Token'] = self._provider.security_token - qs = self.query_string(req) - - qs_to_post = qs - - # We do not want to include any params that were mangled into - # the params if performing s3-sigv4 since it does not - # belong in the body of a post for some requests. Mangled - # refers to items in the query string URL being added to the - # http response params. However, these params get added to - # the body of the request, but the query string URL does not - # belong in the body of the request. ``unmangled_resp`` is the - # response that happened prior to the mangling. This ``unmangled_req`` - # kwarg will only appear for s3-sigv4. - if 'unmangled_req' in kwargs: - qs_to_post = self.query_string(kwargs['unmangled_req']) - - if qs_to_post and req.method == 'POST': - # Stash request parameters into post body - # before we generate the signature. - req.body = qs_to_post - req.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8' - req.headers['Content-Length'] = str(len(req.body)) - else: - # Safe to modify req.path here since - # the signature will use req.auth_path. - req.path = req.path.split('?')[0] - - if qs: - # Don't insert the '?' unless there's actually a query string - req.path = req.path + '?' + qs - canonical_request = self.canonical_request(req) - boto.log.debug('CanonicalRequest:\n%s' % canonical_request) - string_to_sign = self.string_to_sign(req, canonical_request) - boto.log.debug('StringToSign:\n%s' % string_to_sign) - signature = self.signature(req, string_to_sign) - boto.log.debug('Signature:\n%s' % signature) - headers_to_sign = self.headers_to_sign(req) - l = ['AWS4-HMAC-SHA256 Credential=%s' % self.scope(req)] - l.append('SignedHeaders=%s' % self.signed_headers(headers_to_sign)) - l.append('Signature=%s' % signature) - req.headers['Authorization'] = ','.join(l) - - -class S3HmacAuthV4Handler(HmacAuthV4Handler, AuthHandler): - """ - Implements a variant of Version 4 HMAC authorization specific to S3. - """ - capability = ['hmac-v4-s3'] - - def __init__(self, *args, **kwargs): - super(S3HmacAuthV4Handler, self).__init__(*args, **kwargs) - - if self.region_name: - self.region_name = self.clean_region_name(self.region_name) - - def clean_region_name(self, region_name): - if region_name.startswith('s3-'): - return region_name[3:] - - return region_name - - def canonical_uri(self, http_request): - # S3 does **NOT** do path normalization that SigV4 typically does. - # Urlencode the path, **NOT** ``auth_path`` (because vhosting). - path = urllib.parse.urlparse(http_request.path) - # Because some quoting may have already been applied, let's back it out. - # unquoted = urllib.parse.unquote(path.path) - unquoted = urllib.parse.unquote(path.path.encode('utf-8')) - # Requote, this time addressing all characters. - encoded = urllib.parse.quote(unquoted) - return encoded - - def canonical_query_string(self, http_request): - # Note that we just do not return an empty string for - # POST request. Query strings in url are included in canonical - # query string. - l = [] - for param in sorted(http_request.params): - value = boto.utils.get_utf8_value(http_request.params[param]) - l.append('%s=%s' % (urllib.parse.quote(param, safe='-_.~'), - urllib.parse.quote(value, safe='-_.~'))) - return '&'.join(l) - - def host_header(self, host, http_request): - port = http_request.port - secure = http_request.protocol == 'https' - if ((port == 80 and not secure) or (port == 443 and secure)): - return http_request.host - return '%s:%s' % (http_request.host, port) - - def headers_to_sign(self, http_request): - """ - Select the headers from the request that need to be included - in the StringToSign. - """ - host_header_value = self.host_header(self.host, http_request) - headers_to_sign = {'host': host_header_value} - for name, value in http_request.headers.items(): - lname = name.lower() - # Hooray for the only difference! The main SigV4 signer only does - # ``Host`` + ``x-amz-*``. But S3 wants pretty much everything - # signed, except for authorization itself. - if lname not in ['authorization']: - headers_to_sign[lname] = value - ordered_headeres = OrderedDict(sorted(headers_to_sign.items(), - key=lambda t: t[0])) - return ordered_headeres - - def determine_region_name(self, host): - # S3's different format(s) of representing region/service from the - # rest of AWS makes this hurt too. - # - # Possible domain formats: - # - s3.amazonaws.com (Classic) - # - s3-us-west-2.amazonaws.com (Specific region) - # - bukkit.s3.amazonaws.com (Vhosted Classic) - # - bukkit.s3-ap-northeast-1.amazonaws.com (Vhosted specific region) - # - s3.cn-north-1.amazonaws.com.cn - (Beijing region) - # - bukkit.s3.cn-north-1.amazonaws.com.cn - (Vhosted Beijing region) - parts = self.split_host_parts(host) - - if self.region_name is not None: - region_name = self.region_name - else: - # Classic URLs - s3-us-west-2.amazonaws.com - if len(parts) == 3: - region_name = self.clean_region_name(parts[0]) - - # Special-case for Classic. - if region_name == 's3': - region_name = 'us-east-1' - else: - # Iterate over the parts in reverse order. - for offset, part in enumerate(reversed(parts)): - part = part.lower() - - # Look for the first thing starting with 's3'. - # Until there's a ``.s3`` TLD, we should be OK. :P - if part == 's3': - # If it's by itself, the region is the previous part. - region_name = parts[-offset] - - # Unless it's Vhosted classic - if region_name == 'amazonaws': - region_name = 'us-east-1' - - break - elif part.startswith('s3-'): - region_name = self.clean_region_name(part) - break - - return region_name - - def determine_service_name(self, host): - # Should this signing mechanism ever be used for anything else, this - # will fail. Consider utilizing the logic from the parent class should - # you find yourself here. - return 's3' - - def mangle_path_and_params(self, req): - """ - Returns a copy of the request object with fixed ``auth_path/params`` - attributes from the original. - """ - modified_req = copy.copy(req) - - # Unlike the most other services, in S3, ``req.params`` isn't the only - # source of query string parameters. - # Because of the ``query_args``, we may already have a query string - # **ON** the ``path/auth_path``. - # Rip them apart, so the ``auth_path/params`` can be signed - # appropriately. - parsed_path = urllib.parse.urlparse(modified_req.auth_path) - modified_req.auth_path = parsed_path.path - - if modified_req.params is None: - modified_req.params = {} - else: - # To keep the original request object untouched. We must make - # a copy of the params dictionary. Because the copy of the - # original request directly refers to the params dictionary - # of the original request. - copy_params = req.params.copy() - modified_req.params = copy_params - - raw_qs = parsed_path.query - existing_qs = urllib.parse.parse_qs( - raw_qs, - keep_blank_values=True - ) - - # ``parse_qs`` will return lists. Don't do that unless there's a real, - # live list provided. - for key, value in existing_qs.items(): - if isinstance(value, (list, tuple)): - if len(value) == 1: - existing_qs[key] = value[0] - - modified_req.params.update(existing_qs) - return modified_req - - def payload(self, http_request): - if http_request.headers.get('x-amz-content-sha256'): - return http_request.headers['x-amz-content-sha256'] - - return super(S3HmacAuthV4Handler, self).payload(http_request) - - def add_auth(self, req, **kwargs): - if 'x-amz-content-sha256' not in req.headers: - if '_sha256' in req.headers: - req.headers['x-amz-content-sha256'] = req.headers.pop('_sha256') - else: - req.headers['x-amz-content-sha256'] = self.payload(req) - updated_req = self.mangle_path_and_params(req) - return super(S3HmacAuthV4Handler, self).add_auth(updated_req, - unmangled_req=req, - **kwargs) - - def presign(self, req, expires, iso_date=None): - """ - Presign a request using SigV4 query params. Takes in an HTTP request - and an expiration time in seconds and returns a URL. - - http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html - """ - if iso_date is None: - iso_date = datetime.datetime.utcnow().strftime('%Y%m%dT%H%M%SZ') - - region = self.determine_region_name(req.host) - service = self.determine_service_name(req.host) - - params = { - 'X-Amz-Algorithm': 'AWS4-HMAC-SHA256', - 'X-Amz-Credential': '%s/%s/%s/%s/aws4_request' % ( - self._provider.access_key, - iso_date[:8], - region, - service - ), - 'X-Amz-Date': iso_date, - 'X-Amz-Expires': expires, - 'X-Amz-SignedHeaders': 'host' - } - - if self._provider.security_token: - params['X-Amz-Security-Token'] = self._provider.security_token - - headers_to_sign = self.headers_to_sign(req) - l = sorted(['%s' % n.lower().strip() for n in headers_to_sign]) - params['X-Amz-SignedHeaders'] = ';'.join(l) - - req.params.update(params) - - cr = self.canonical_request(req) - - # We need to replace the payload SHA with a constant - cr = '\n'.join(cr.split('\n')[:-1]) + '\nUNSIGNED-PAYLOAD' - - # Date header is expected for string_to_sign, but unused otherwise - req.headers['X-Amz-Date'] = iso_date - - sts = self.string_to_sign(req, cr) - signature = self.signature(req, sts) - - # Add signature to params now that we have it - req.params['X-Amz-Signature'] = signature - - return 'https://%s%s?%s' % (req.host, req.path, - urllib.parse.urlencode(req.params)) - - -class STSAnonHandler(AuthHandler): - """ - Provides pure query construction (no actual signing). - - Used for making anonymous STS request for operations like - ``assume_role_with_web_identity``. - """ - - capability = ['sts-anon'] - - def _escape_value(self, value): - # This is changed from a previous version because this string is - # being passed to the query string and query strings must - # be url encoded. In particular STS requires the saml_response to - # be urlencoded when calling assume_role_with_saml. - return urllib.parse.quote(value) - - def _build_query_string(self, params): - keys = list(params.keys()) - keys.sort(key=lambda x: x.lower()) - pairs = [] - for key in keys: - val = boto.utils.get_utf8_value(params[key]) - pairs.append(key + '=' + self._escape_value(val.decode('utf-8'))) - return '&'.join(pairs) - - def add_auth(self, http_request, **kwargs): - headers = http_request.headers - qs = self._build_query_string( - http_request.params - ) - boto.log.debug('query_string in body: %s' % qs) - headers['Content-Type'] = 'application/x-www-form-urlencoded' - # This will be a POST so the query string should go into the body - # as opposed to being in the uri - http_request.body = qs - - -class QuerySignatureHelper(HmacKeys): - """ - Helper for Query signature based Auth handler. - - Concrete sub class need to implement _calc_sigature method. - """ - - def add_auth(self, http_request, **kwargs): - headers = http_request.headers - params = http_request.params - params['AWSAccessKeyId'] = self._provider.access_key - params['SignatureVersion'] = self.SignatureVersion - params['Timestamp'] = boto.utils.get_ts() - qs, signature = self._calc_signature( - http_request.params, http_request.method, - http_request.auth_path, http_request.host) - boto.log.debug('query_string: %s Signature: %s' % (qs, signature)) - if http_request.method == 'POST': - headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8' - http_request.body = qs + '&Signature=' + urllib.parse.quote_plus(signature) - http_request.headers['Content-Length'] = str(len(http_request.body)) - else: - http_request.body = '' - # if this is a retried request, the qs from the previous try will - # already be there, we need to get rid of that and rebuild it - http_request.path = http_request.path.split('?')[0] - http_request.path = (http_request.path + '?' + qs + - '&Signature=' + urllib.parse.quote_plus(signature)) - - -class QuerySignatureV0AuthHandler(QuerySignatureHelper, AuthHandler): - """Provides Signature V0 Signing""" - - SignatureVersion = 0 - capability = ['sign-v0'] - - def _calc_signature(self, params, *args): - boto.log.debug('using _calc_signature_0') - hmac = self._get_hmac() - s = params['Action'] + params['Timestamp'] - hmac.update(s.encode('utf-8')) - keys = params.keys() - keys.sort(cmp=lambda x, y: cmp(x.lower(), y.lower())) - pairs = [] - for key in keys: - val = boto.utils.get_utf8_value(params[key]) - pairs.append(key + '=' + urllib.parse.quote(val)) - qs = '&'.join(pairs) - return (qs, base64.b64encode(hmac.digest())) - - -class QuerySignatureV1AuthHandler(QuerySignatureHelper, AuthHandler): - """ - Provides Query Signature V1 Authentication. - """ - - SignatureVersion = 1 - capability = ['sign-v1', 'mturk'] - - def __init__(self, *args, **kw): - QuerySignatureHelper.__init__(self, *args, **kw) - AuthHandler.__init__(self, *args, **kw) - self._hmac_256 = None - - def _calc_signature(self, params, *args): - boto.log.debug('using _calc_signature_1') - hmac = self._get_hmac() - keys = params.keys() - keys.sort(cmp=lambda x, y: cmp(x.lower(), y.lower())) - pairs = [] - for key in keys: - hmac.update(key.encode('utf-8')) - val = boto.utils.get_utf8_value(params[key]) - hmac.update(val) - pairs.append(key + '=' + urllib.parse.quote(val)) - qs = '&'.join(pairs) - return (qs, base64.b64encode(hmac.digest())) - - -class QuerySignatureV2AuthHandler(QuerySignatureHelper, AuthHandler): - """Provides Query Signature V2 Authentication.""" - - SignatureVersion = 2 - capability = ['sign-v2', 'ec2', 'ec2', 'emr', 'fps', 'ecs', - 'sdb', 'iam', 'rds', 'sns', 'sqs', 'cloudformation'] - - def _calc_signature(self, params, verb, path, server_name): - boto.log.debug('using _calc_signature_2') - string_to_sign = '%s\n%s\n%s\n' % (verb, server_name.lower(), path) - hmac = self._get_hmac() - params['SignatureMethod'] = self.algorithm() - if self._provider.security_token: - params['SecurityToken'] = self._provider.security_token - keys = sorted(params.keys()) - pairs = [] - for key in keys: - val = boto.utils.get_utf8_value(params[key]) - pairs.append(urllib.parse.quote(key, safe='') + '=' + - urllib.parse.quote(val, safe='-_~')) - qs = '&'.join(pairs) - boto.log.debug('query string: %s' % qs) - string_to_sign += qs - boto.log.debug('string_to_sign: %s' % string_to_sign) - hmac.update(string_to_sign.encode('utf-8')) - b64 = base64.b64encode(hmac.digest()) - boto.log.debug('len(b64)=%d' % len(b64)) - boto.log.debug('base64 encoded digest: %s' % b64) - return (qs, b64) - - -class POSTPathQSV2AuthHandler(QuerySignatureV2AuthHandler, AuthHandler): - """ - Query Signature V2 Authentication relocating signed query - into the path and allowing POST requests with Content-Types. - """ - - capability = ['mws'] - - def add_auth(self, req, **kwargs): - req.params['AWSAccessKeyId'] = self._provider.access_key - req.params['SignatureVersion'] = self.SignatureVersion - req.params['Timestamp'] = boto.utils.get_ts() - qs, signature = self._calc_signature(req.params, req.method, - req.auth_path, req.host) - boto.log.debug('query_string: %s Signature: %s' % (qs, signature)) - if req.method == 'POST': - req.headers['Content-Length'] = str(len(req.body)) - req.headers['Content-Type'] = req.headers.get('Content-Type', - 'text/plain') - else: - req.body = '' - # if this is a retried req, the qs from the previous try will - # already be there, we need to get rid of that and rebuild it - req.path = req.path.split('?')[0] - req.path = (req.path + '?' + qs + - '&Signature=' + urllib.parse.quote_plus(signature)) - - -def get_auth_handler(host, config, provider, requested_capability=None): - """Finds an AuthHandler that is ready to authenticate. - - Lists through all the registered AuthHandlers to find one that is willing - to handle for the requested capabilities, config and provider. - - :type host: string - :param host: The name of the host - - :type config: - :param config: - - :type provider: - :param provider: - - Returns: - An implementation of AuthHandler. - - Raises: - boto.exception.NoAuthHandlerFound - """ - ready_handlers = [] - auth_handlers = boto.plugin.get_plugin(AuthHandler, requested_capability) - for handler in auth_handlers: - try: - ready_handlers.append(handler(host, config, provider)) - except boto.auth_handler.NotReadyToAuthenticate: - pass - - if not ready_handlers: - checked_handlers = auth_handlers - names = [handler.__name__ for handler in checked_handlers] - raise boto.exception.NoAuthHandlerFound( - 'No handler was ready to authenticate. %d handlers were checked.' - ' %s ' - 'Check your credentials' % (len(names), str(names))) - - # We select the last ready auth handler that was loaded, to allow users to - # customize how auth works in environments where there are shared boto - # config files (e.g., /etc/boto.cfg and ~/.boto): The more general, - # system-wide shared configs should be loaded first, and the user's - # customizations loaded last. That way, for example, the system-wide - # config might include a plugin_directory that includes a service account - # auth plugin shared by all users of a Google Compute Engine instance - # (allowing sharing of non-user data between various services), and the - # user could override this with a .boto config that includes user-specific - # credentials (for access to user data). - return ready_handlers[-1] - - -def detect_potential_sigv4(func): - def _wrapper(self): - if os.environ.get('EC2_USE_SIGV4', False): - return ['hmac-v4'] - - if boto.config.get('ec2', 'use-sigv4', False): - return ['hmac-v4'] - - if hasattr(self, 'region'): - # If you're making changes here, you should also check - # ``boto/iam/connection.py``, as several things there are also - # endpoint-related. - if getattr(self.region, 'endpoint', ''): - for test in SIGV4_DETECT: - if test in self.region.endpoint: - return ['hmac-v4'] - - return func(self) - return _wrapper - - -def detect_potential_s3sigv4(func): - def _wrapper(self): - if os.environ.get('S3_USE_SIGV4', False): - return ['hmac-v4-s3'] - - if boto.config.get('s3', 'use-sigv4', False): - return ['hmac-v4-s3'] - - if hasattr(self, 'host'): - # If you're making changes here, you should also check - # ``boto/iam/connection.py``, as several things there are also - # endpoint-related. - for test in SIGV4_DETECT: - if test in self.host: - return ['hmac-v4-s3'] - - return func(self) - return _wrapper diff --git a/client_tests/python/boto_tests/bb5e02b1c61b3cf03ba9cafc7a3f6c56adcf92ad.patch b/client_tests/python/boto_tests/bb5e02b1c61b3cf03ba9cafc7a3f6c56adcf92ad.patch deleted file mode 100644 index 1a46648d7..000000000 --- a/client_tests/python/boto_tests/bb5e02b1c61b3cf03ba9cafc7a3f6c56adcf92ad.patch +++ /dev/null @@ -1,71 +0,0 @@ -From bb5e02b1c61b3cf03ba9cafc7a3f6c56adcf92ad Mon Sep 17 00:00:00 2001 -From: Shunichi Shinohara -Date: Wed, 28 Jan 2015 12:14:29 +0900 -Subject: [PATCH] Fix S3 Version 4 HMAC auth bugs - -- Canonical headers must be sorted by *key* for canonical requests. -- Header names in canonical headers must be lowercase even it is - capitalized in HTTP request header. -- Unicode bug in URL path normalzation, path should be treated as - just a binary. This bug manifests when an object key includes - Unicode outside of ASCII and also it is uploaded by Multipart. ---- - boto/auth.py | 15 +++++++++------ - 1 file changed, 9 insertions(+), 6 deletions(-) - -diff --git a/boto/auth.py b/boto/auth.py -index f769472..eac1471 100644 ---- a/boto/auth.py -+++ b/boto/auth.py -@@ -32,6 +32,7 @@ - import boto.exception - import boto.plugin - import boto.utils -+from collections import OrderedDict - import copy - import datetime - from email.utils import formatdate -@@ -375,11 +376,10 @@ def canonical_headers(self, headers_to_sign): - else: - c_value = ' '.join(raw_value.strip().split()) - canonical.append('%s:%s' % (c_name, c_value)) -- return '\n'.join(sorted(canonical)) -+ return '\n'.join(canonical) - - def signed_headers(self, headers_to_sign): - l = ['%s' % n.lower().strip() for n in headers_to_sign] -- l = sorted(l) - return ';'.join(l) - - def canonical_uri(self, http_request): -@@ -569,7 +569,8 @@ def canonical_uri(self, http_request): - # Urlencode the path, **NOT** ``auth_path`` (because vhosting). - path = urllib.parse.urlparse(http_request.path) - # Because some quoting may have already been applied, let's back it out. -- unquoted = urllib.parse.unquote(path.path) -+ # unquoted = urllib.parse.unquote(path.path) -+ unquoted = urllib.parse.unquote(path.path.encode('utf-8')) - # Requote, this time addressing all characters. - encoded = urllib.parse.quote(unquoted) - return encoded -@@ -598,15 +599,17 @@ def headers_to_sign(self, http_request): - in the StringToSign. - """ - host_header_value = self.host_header(self.host, http_request) -- headers_to_sign = {'Host': host_header_value} -+ headers_to_sign = {'host': host_header_value} - for name, value in http_request.headers.items(): - lname = name.lower() - # Hooray for the only difference! The main SigV4 signer only does - # ``Host`` + ``x-amz-*``. But S3 wants pretty much everything - # signed, except for authorization itself. - if lname not in ['authorization']: -- headers_to_sign[name] = value -- return headers_to_sign -+ headers_to_sign[lname] = value -+ ordered_headeres = OrderedDict(sorted(headers_to_sign.items(), -+ key=lambda t: t[0])) -+ return ordered_headeres - - def determine_region_name(self, host): - # S3's different format(s) of representing region/service from the diff --git a/client_tests/python/boto_tests/boto_test.py b/client_tests/python/boto_tests/boto_test.py deleted file mode 100755 index 5f4ad6b96..000000000 --- a/client_tests/python/boto_tests/boto_test.py +++ /dev/null @@ -1,883 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -## --------------------------------------------------------------------- -## -## Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -## -## This file is provided to you under the Apache License, -## Version 2.0 (the "License"); you may not use this file -## except in compliance with the License. You may obtain -## a copy of the License at -## -## http://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, -## software distributed under the License is distributed on an -## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -## KIND, either express or implied. See the License for the -## specific language governing permissions and limitations -## under the License. -## -## --------------------------------------------------------------------- -import os, httplib, json, unittest, uuid, md5 -from cStringIO import StringIO - -from file_generator import FileGenerator - -from boto.exception import S3ResponseError -from boto.s3.connection import S3Connection, OrdinaryCallingFormat -from boto.s3.key import Key -from boto.utils import compute_md5 -import boto - - -def setup_auth_scheme(): - auth_mech=os.environ.get('CS_AUTH', 'auth-v2') - if not boto.config.has_section('s3'): - boto.config.add_section('s3') - if auth_mech == 'auth-v4': - setup_auth_v4() - else: - setup_auth_v2() - -def setup_auth_v4(): - print('Use AWS Version 4 authentication') - if not boto.config.get('s3', 'use-sigv4'): - boto.config.set('s3', 'use-sigv4', 'True') - -def setup_auth_v2(): - print('Use AWS Version 2 authentication') - if not boto.config.get('s3', 'use-sigv4'): - boto.config.set('s3', 'use-sigv4', '') - -setup_auth_scheme() - -def create_user(host, port, name, email): - url = '/riak-cs/user' - body = json.dumps({"email": email, "name": name}) - conn = httplib.HTTPConnection(host, port) - headers = {"Content-Type": "application/json"} - conn.request("POST", url, body, headers) - response = conn.getresponse() - data = response.read() - conn.close() - return json.loads(data) - -# Take a boto 'Key' and returns a hex -# digest of the md5 (calculated by actually -# retrieving the bytes and calculating the md5) -def md5_from_key(boto_key): - m = md5.new() - for byte in boto_key: - m.update(byte) - return m.hexdigest() - -# `parts_list` should be a list of file-like objects -def upload_multipart(bucket, key_name, parts_list, metadata={}, policy=None): - upload = bucket.initiate_multipart_upload(key_name, metadata=metadata, - policy=policy) - for index, val in enumerate(parts_list): - upload.upload_part_from_file(val, index + 1) - result = upload.complete_upload() - return upload, result - - -class S3ApiVerificationTestBase(unittest.TestCase): - host="127.0.0.1" - try: - port=int(os.environ['CS_HTTP_PORT']) - except KeyError: - port=8080 - - user1 = None - user2 = None - - SimpleAcl = "" + \ - "" + \ - "%s" + \ - "%s" + \ - "" + \ - "" + \ - "" + \ - "" + \ - "%s" + \ - "%s" + \ - "" + \ - "%s" + \ - "" + \ - "" + \ - "" - PublicReadAcl = "" + \ - "" + \ - "%s" + \ - "%s" + \ - "" + \ - "" + \ - "" + \ - "" + \ - "http://acs.amazonaws.com/groups/global/AllUsers" + \ - "" + \ - "READ" + \ - "" + \ - "" + \ - "" + \ - "%s" + \ - "%s" + \ - "" + \ - "%s" + \ - "" + \ - "" + \ - "" - - def make_connection(self, user): - return S3Connection(user['key_id'], user['key_secret'], is_secure=False, - host="s3.amazonaws.com", debug=False, - proxy="127.0.0.1", proxy_port=self.port, - calling_format=OrdinaryCallingFormat() ) - - @classmethod - def setUpClass(cls): - # Create test user so credentials don't have to be updated - # for each test setup. - # TODO: Once changes are in place so users can be deleted, use - # userX@example.me for email addresses and clean up at the end of - # the test run. - cls.maxDiff = 10000000000 - cls.user1 = create_user(cls.host, cls.port, "user1", str(uuid.uuid4()) + "@example.me") - cls.user2 = create_user(cls.host, cls.port, "user2", str(uuid.uuid4()) + "@example.me") - cls.bucket_name = str(uuid.uuid4()) - cls.key_name = str(uuid.uuid4()) - cls.data = file("/dev/urandom").read(1024) - - def defaultAcl(self, user): - return self.SimpleAcl % (user['id'], user['display_name'], user['id'], user['display_name'], 'FULL_CONTROL') - - def prAcl(self, user): - return self.PublicReadAcl % (user['id'], user['display_name'], user['id'], user['display_name'], 'FULL_CONTROL') - - def setUp(self): - self.conn = self.make_connection(self.user1) - -class BasicTests(S3ApiVerificationTestBase): - def test_auth(self): - bad_user = json.loads('{"email":"baduser@example.me","display_name":"baduser","name":"user1","key_id":"bad_key","key_secret":"BadSecret","id":"bad_canonical_id"}') - conn = self.make_connection(bad_user) - self.assertRaises(S3ResponseError, conn.get_canonical_user_id) - - def test_auth_weird_query_param(self): - bucket = self.conn.create_bucket(self.bucket_name) - query_args = 'foo=bar%20baz' - response = bucket.connection.make_request('GET', bucket.name, "notfound", - query_args=query_args) - body = response.read() - boto.log.debug(body) - if response.status != 404: - raise bucket.connection.provider.storage_response_error( - response.status, response.reason, body) - - def test_create_bucket(self): - self.conn.create_bucket(self.bucket_name) - self.assertIn(self.bucket_name, - [b.name for b in self.conn.get_all_buckets()]) - - def test_put_object(self): - bucket = self.conn.create_bucket(self.bucket_name) - k = Key(bucket) - k.key = self.key_name - k.set_contents_from_string(self.data) - self.assertEqual(k.get_contents_as_string(), self.data) - self.assertIn(self.key_name, - [k.key for k in bucket.get_all_keys()]) - - def test_put_object_with_trailing_slash(self): - bucket = self.conn.create_bucket(self.bucket_name) - key_name_with_slash = self.key_name + "/" - k = Key(bucket) - k.key = key_name_with_slash - k.set_contents_from_string(self.data) - self.assertEqual(k.get_contents_as_string(), self.data) - self.assertIn(key_name_with_slash, - [k.key for k in bucket.get_all_keys()]) - - def test_delete_object(self): - bucket = self.conn.create_bucket(self.bucket_name) - k = Key(bucket) - k.key = self.key_name - k.delete() - self.assertNotIn(self.key_name, - [k.key for k in bucket.get_all_keys()]) - - def test_delete_objects(self): - bucket = self.conn.create_bucket(self.bucket_name) - keys = ['0', '1', u'Unicodeあいうえお', '2', 'multiple spaces'] - keys.sort() - for key in keys: - k = Key(bucket) - k.key = key - k.set_contents_from_string(key) - - all_keys = [k.key for k in bucket.get_all_keys()] - all_keys.sort() - self.assertEqual(keys, all_keys) - result = bucket.delete_keys(keys) - - self.assertEqual(keys, [k.key for k in result.deleted]) - self.assertEqual([], result.errors) - result = bucket.delete_keys(['nosuchkeys']) - self.assertEqual([], result.errors) - self.assertEqual(['nosuchkeys'], [k.key for k in result.deleted]) - all_keys = [k.key for k in bucket.get_all_keys()] - self.assertEqual([], all_keys) - - def test_delete_bucket(self): - bucket = self.conn.get_bucket(self.bucket_name) - bucket.delete() - self.assertNotIn(self.bucket_name, - [b.name for b in self.conn.get_all_buckets()]) - - def test_get_bucket_acl(self): - bucket = self.conn.create_bucket(self.bucket_name) - self.assertEqual(bucket.get_acl().to_xml(), self.defaultAcl(self.user1)) - - def test_set_bucket_acl(self): - bucket = self.conn.get_bucket(self.bucket_name) - bucket.set_canned_acl('public-read') - self.assertEqual(bucket.get_acl().to_xml(), self.prAcl(self.user1)) - - def test_get_object_acl(self): - bucket = self.conn.create_bucket(self.bucket_name) - k = Key(bucket) - k.key = self.key_name - k.set_contents_from_string(self.data) - self.assertEqual(k.get_contents_as_string(), self.data) - self.assertEqual(k.get_acl().to_xml(), self.defaultAcl(self.user1)) - - def test_set_object_acl(self): - bucket = self.conn.create_bucket(self.bucket_name) - k = Key(bucket) - k.key = self.key_name - k.set_canned_acl('public-read') - self.assertEqual(k.get_acl().to_xml(), self.prAcl(self.user1)) - -class MultiPartUploadTests(S3ApiVerificationTestBase): - def multipart_md5_helper(self, parts, key_suffix=u''): - key_name = unicode(str(uuid.uuid4())) + key_suffix - stringio_parts = [StringIO(p) for p in parts] - expected_md5 = md5.new(''.join(parts)).hexdigest() - bucket = self.conn.create_bucket(self.bucket_name) - upload, result = upload_multipart(bucket, key_name, stringio_parts) - key = Key(bucket, key_name) - actual_md5 = md5_from_key(key) - self.assertEqual(expected_md5, actual_md5) - self.assertEqual(key_name, result.key_name) - return upload, result - - def test_small_strings_upload_1(self): - parts = ['this is part one', 'part two is just a rewording', - 'surprise that part three is pretty much the same', - 'and the last part is number four'] - self.multipart_md5_helper(parts) - - def test_small_strings_upload_2(self): - parts = ['just one lonely part'] - self.multipart_md5_helper(parts) - - def test_small_strings_upload_3(self): - parts = [str(uuid.uuid4()) for _ in xrange(100)] - self.multipart_md5_helper(parts) - - def test_small_strings_upload_4(self): - parts = [str(uuid.uuid4()) for _ in xrange(20)] - self.multipart_md5_helper(parts) - - def test_acl_is_set(self): - parts = [str(uuid.uuid4()) for _ in xrange(5)] - key_name = str(uuid.uuid4()) - stringio_parts = [StringIO(p) for p in parts] - expected_md5 = md5.new(''.join(parts)).hexdigest() - bucket = self.conn.create_bucket(self.bucket_name) - upload = upload_multipart(bucket, key_name, stringio_parts, - policy='public-read') - key = Key(bucket, key_name) - actual_md5 = md5_from_key(key) - self.assertEqual(expected_md5, actual_md5) - self.assertEqual(key.get_acl().to_xml(), self.prAcl(self.user1)) - - def test_standard_storage_class(self): - # Test for bug reported in - # https://github.com/basho/riak_cs/pull/575 - bucket = self.conn.create_bucket(self.bucket_name) - key_name = 'test_standard_storage_class' - _never_finished_upload = bucket.initiate_multipart_upload(key_name) - uploads = list(bucket.list_multipart_uploads()) - for u in uploads: - self.assertEqual(u.storage_class, 'STANDARD') - self.assertTrue(True) - - def test_upload_japanese_key(self): - parts = ['this is part one', 'part two is just a rewording', - 'surprise that part three is pretty much the same', - 'and the last part is number four'] - self.multipart_md5_helper(parts, key_suffix=u'日本語サフィックス') - - def test_list_japanese_key(self): - bucket = self.conn.create_bucket(self.bucket_name) - key_name = u'test_日本語キーのリスト' - _never_finished_upload = bucket.initiate_multipart_upload(key_name) - uploads = list(bucket.list_multipart_uploads()) - for u in uploads: - self.assertEqual(u.key_name, key_name) - -def one_kb_string(): - "Return a 1KB string of all a's" - return ''.join(['a' for _ in xrange(1024)]) - -def kb_gen_fn(num_kilobytes): - s = one_kb_string() - def fn(): - return (s for _ in xrange(num_kilobytes)) - return fn - -def kb_file_gen(num_kilobytes): - gen_fn = kb_gen_fn(num_kilobytes) - return FileGenerator(gen_fn, num_kilobytes * 1024) - -def mb_file_gen(num_megabytes): - return kb_file_gen(num_megabytes * 1024) - -def md5_from_file(file_object): - m = md5.new() - update_md5_from_file(m, file_object) - return m.hexdigest() - -def md5_from_files(file_objects): - "note the plural" - m = md5.new() - for f in file_objects: - update_md5_from_file(m, f) - return m.hexdigest() - -def update_md5_from_file(md5_object, file_object): - "Helper function for calculating the hex md5 of a file-like object" - go = True - while go: - byte = file_object.read(8196) - if byte: - md5_object.update(byte) - else: - go = False - return md5_object - -def remove_double_quotes(string): - "remove double quote from a string" - return string.replace('"', '') - -class FileGenTest(unittest.TestCase): - def test_read_twice(self): - """ Read 2KB file and reset (seek to the head) and re-read 2KB """ - num_kb = 2 - f = kb_file_gen(num_kb) - - first1 = f.read(1024) - self.assertEqual(1024, len(first1)) - first2 = f.read(1024) - self.assertEqual(1024, len(first2)) - self.assertEqual(2048, f.pos) - self.assertEqual('', f.read(1)) - self.assertEqual('', f.read(1)) - self.assertEqual(2048, f.pos) - - f.seek(0) - self.assertEqual(0, f.pos) - second1 = f.read(1024) - self.assertEqual(1024, len(first1)) - second2 = f.read(1024) - self.assertEqual(1024, len(second2)) - self.assertEqual(2048, f.pos) - self.assertEqual('', f.read(1)) - self.assertEqual('', f.read(1)) - -class LargerFileUploadTest(S3ApiVerificationTestBase): - "Larger, regular key uploads" - - def upload_helper(self, num_kilobytes): - key_name = str(uuid.uuid4()) - bucket = self.conn.create_bucket(self.bucket_name) - md5_expected = md5_from_file(kb_file_gen(num_kilobytes)) - file_obj = kb_file_gen(num_kilobytes) - key = Key(bucket, key_name) - key.set_contents_from_file(file_obj, - md5=key.get_md5_from_hexdigest(md5_expected)) - self.assertEqual(md5_expected, remove_double_quotes(key.etag)) - - def test_1kb(self): - return self.upload_helper(1) - - def test_2kb(self): - return self.upload_helper(2) - - def test_256kb(self): - return self.upload_helper(256) - - def test_512kb(self): - return self.upload_helper(512) - - def test_1mb(self): - return self.upload_helper(1 * 1024) - - def test_4mb(self): - return self.upload_helper(4 * 1024) - - def test_8mb(self): - return self.upload_helper(8 * 1024) - - def test_16mb(self): - return self.upload_helper(16 * 1024) - - def test_32mb(self): - return self.upload_helper(32 * 1024) - -class LargerMultipartFileUploadTest(S3ApiVerificationTestBase): - """ - Larger, multipart file uploads - to pass this test, - requires '{enforce_multipart_part_size, false},' entry at riak_cs's app.config - """ - - def upload_parts_helper(self, zipped_parts_and_md5s, expected_md5): - key_name = str(uuid.uuid4()) - bucket = self.conn.create_bucket(self.bucket_name) - upload = bucket.initiate_multipart_upload(key_name) - key = Key(bucket, key_name) - for idx, (part, md5_of_part) in enumerate(zipped_parts_and_md5s): - upload.upload_part_from_file(part, idx + 1, - md5=key.get_md5_from_hexdigest(md5_of_part)) - upload.complete_upload() - actual_md5 = md5_from_key(key) - self.assertEqual(expected_md5, actual_md5) - - def from_mb_list(self, mb_list): - md5_list = [md5_from_file(mb_file_gen(m)) for m in mb_list] - expected_md5 = md5_from_files([mb_file_gen(m) for m in mb_list]) - parts = [mb_file_gen(m) for m in mb_list] - self.upload_parts_helper(zip(parts, md5_list), expected_md5) - - def test_upload_1(self): - mb_list = [5, 6, 5, 7, 8, 9] - self.from_mb_list(mb_list) - - def test_upload_2(self): - mb_list = [10, 11, 5, 7, 9, 14, 12] - self.from_mb_list(mb_list) - - def test_upload_3(self): - mb_list = [15, 14, 13, 12, 11, 10] - self.from_mb_list(mb_list) - -class UnicodeNamedObjectTest(S3ApiVerificationTestBase): - ''' test to check unicode object name works ''' - utf8_key_name = u"utf8ファイル名.txt" - # ^^^^^^^^^ filename in Japanese - - def test_unicode_object(self): - bucket = self.conn.create_bucket(self.bucket_name) - k = Key(bucket) - k.key = UnicodeNamedObjectTest.utf8_key_name - k.set_contents_from_string(self.data) - self.assertEqual(k.get_contents_as_string(), self.data) - self.assertIn(UnicodeNamedObjectTest.utf8_key_name, - [obj.key for obj in bucket.list()]) - - def test_delete_object(self): - bucket = self.conn.create_bucket(self.bucket_name) - k = Key(bucket) - k.key = UnicodeNamedObjectTest.utf8_key_name - k.delete() - self.assertNotIn(UnicodeNamedObjectTest.utf8_key_name, - [obj.key for obj in bucket.list()]) - - -class BucketPolicyTest(S3ApiVerificationTestBase): - "test bucket policy" - - def test_no_policy(self): - bucket = self.conn.create_bucket(self.bucket_name) - bucket.delete_policy() - try: bucket.get_policy() - except S3ResponseError: pass - else: self.fail() - - def create_bucket_and_set_policy(self, policy_template): - bucket = self.conn.create_bucket(self.bucket_name) - bucket.delete_policy() - policy = policy_template % bucket.name - bucket.set_policy(policy, headers={'content-type':'application/json'}) - return bucket - - def test_put_policy_invalid_ip(self): - policy_template = ''' -{"Version":"2008-10-17","Statement":[{"Sid":"Stmtaaa","Effect":"Allow","Principal":"*","Action":["s3:GetObjectAcl","s3:GetObject"],"Resource":"arn:aws:s3:::%s/*","Condition":{"IpAddress":{"aws:SourceIp":"0"}}}]} -''' - try: - self.create_bucket_and_set_policy(policy_template) - except S3ResponseError as e: - self.assertEqual(e.status, 400) - self.assertEqual(e.reason, 'Bad Request') - - def test_put_policy(self): - ### old version name - policy_template = ''' -{"Version":"2008-10-17","Statement":[{"Sid":"Stmtaaa","Effect":"Allow","Principal":"*","Action":["s3:GetObjectAcl","s3:GetObject"],"Resource":"arn:aws:s3:::%s/*","Condition":{"IpAddress":{"aws:SourceIp":"127.0.0.1/32"}}}]} -''' - bucket = self.create_bucket_and_set_policy(policy_template) - got_policy = bucket.get_policy() - self.assertEqual(policy_template % bucket.name , got_policy) - - def test_put_policy_2(self): - ### new version name, also regression of #911 - policy_template = ''' -{"Version":"2012-10-17","Statement":[{"Sid":"Stmtaaa","Effect":"Allow","Principal":"*","Action":["s3:GetObjectAcl","s3:GetObject"],"Resource":"arn:aws:s3:::%s/*","Condition":{"IpAddress":{"aws:SourceIp":"127.0.0.1/32"}}}]} -''' - bucket = self.create_bucket_and_set_policy(policy_template) - got_policy = bucket.get_policy() - self.assertEqual(policy_template % bucket.name, got_policy) - - def test_put_policy_3(self): - policy_template = ''' -{"Version":"somebadversion","Statement":[{"Sid":"Stmtaaa","Effect":"Allow","Principal":"*","Action":["s3:GetObjectAcl","s3:GetObject"],"Resource":"arn:aws:s3:::%s/*","Condition":{"IpAddress":{"aws:SourceIp":"127.0.0.1/32"}}}]} -''' - try: - self.create_bucket_and_set_policy(policy_template) - except S3ResponseError as e: - self.assertEqual(e.status, 400) - self.assertEqual(e.reason, 'Bad Request') - - - def test_ip_addr_policy(self): - policy_template = ''' -{"Version":"2008-10-17","Statement":[{"Sid":"Stmtaaa","Effect":"Deny","Principal":"*","Action":["s3:GetObject"],"Resource":"arn:aws:s3:::%s/*","Condition":{"IpAddress":{"aws:SourceIp":"%s"}}}]} -''' % ('%s', self.host) - bucket = self.create_bucket_and_set_policy(policy_template) - - key_name = str(uuid.uuid4()) - key = Key(bucket, key_name) - - key.set_contents_from_string(self.data) - bucket.list() - try: - key.get_contents_as_string() - self.fail() - except S3ResponseError as e: - self.assertEqual(e.status, 404) - self.assertEqual(e.reason, 'Not Found') - - policy = ''' -{"Version":"2008-10-17","Statement":[{"Sid":"Stmtaaa","Effect":"Allow","Principal":"*","Action":["s3:GetObject"],"Resource":"arn:aws:s3:::%s/*","Condition":{"IpAddress":{"aws:SourceIp":"%s"}}}]} -''' % (bucket.name, self.host) - self.assertTrue(bucket.set_policy(policy, headers={'content-type':'application/json'})) - key.get_contents_as_string() ## throws nothing - - - def test_invalid_transport_addr_policy(self): - bucket = self.conn.create_bucket(self.bucket_name) - key_name = str(uuid.uuid4()) - key = Key(bucket, key_name) - key.set_contents_from_string(self.data) - - ## anyone may GET this object - policy = ''' -{"Version":"2008-10-17","Statement":[{"Sid":"Stmtaaa0","Effect":"Allow","Principal":"*","Action":["s3:GetObject"],"Resource":"arn:aws:s3:::%s/*","Condition":{"Bool":{"aws:SecureTransport":wat}}}]} -''' % bucket.name - try: - bucket.set_policy(policy, headers={'content-type':'application/json'}) - except S3ResponseError as e: - self.assertEqual(e.status, 400) - self.assertEqual(e.reason, 'Bad Request') - - def test_transport_addr_policy(self): - bucket = self.conn.create_bucket(self.bucket_name) - key_name = str(uuid.uuid4()) - key = Key(bucket, key_name) - key.set_contents_from_string(self.data) - - ## anyone may GET this object - policy = ''' -{"Version":"2008-10-17","Statement":[{"Sid":"Stmtaaa0","Effect":"Allow","Principal":"*","Action":["s3:GetObject"],"Resource":"arn:aws:s3:::%s/*","Condition":{"Bool":{"aws:SecureTransport":false}}}]} -''' % bucket.name - self.assertTrue(bucket.set_policy(policy, headers={'content-type':'application/json'})) - key.get_contents_as_string() - - ## policy accepts anyone who comes with http - conn = httplib.HTTPConnection(self.host, self.port) - headers = { "Host" : "%s.s3.amazonaws.com" % bucket.name } - conn.request('GET', ("/%s" % key_name) , None, headers) - response = conn.getresponse() - self.assertEqual(response.status, 200) - self.assertEqual(response.read(), key.get_contents_as_string()) - - ## anyone without https may not do any operation - policy = ''' -{"Version":"2008-10-17","Statement":[{"Sid":"Stmtaaa0","Effect":"Deny","Principal":"*","Action":"*","Resource":"arn:aws:s3:::%s/*","Condition":{"Bool":{"aws:SecureTransport":false}}}]} -''' % bucket.name - self.assertTrue(bucket.set_policy(policy, headers={'content-type':'application/json'})) - - ## policy accepts anyone who comes with http - conn = httplib.HTTPConnection(self.host, self.port) - headers = { "Host" : "%s.s3.amazonaws.com" % bucket.name } - conn.request('GET', ("/%s" % key_name) , None, headers) - response = conn.getresponse() - self.assertEqual(response.status, 403) - self.assertEqual(response.reason, 'Forbidden') - - -class MultipartUploadTestsUnderPolicy(S3ApiVerificationTestBase): - - def test_small_strings_upload_1(self): - bucket = self.conn.create_bucket(self.bucket_name) - parts = ['this is part one', 'part two is just a rewording', - 'surprise that part three is pretty much the same', - 'and the last part is number four'] - stringio_parts = [StringIO(p) for p in parts] - expected_md5 = md5.new(''.join(parts)).hexdigest() - - key_name = str(uuid.uuid4()) - key = Key(bucket, key_name) - - ## anyone may PUT this object - policy = ''' -{"Version":"2008-10-17","Statement":[{"Sid":"Stmtaaa0","Effect":"Allow","Principal":"*","Action":["s3:PutObject"],"Resource":"arn:aws:s3:::%s/*","Condition":{"Bool":{"aws:SecureTransport":false}}}]} -''' % bucket.name - self.assertTrue(bucket.set_policy(policy, headers={'content-type':'application/json'})) - - upload = upload_multipart(bucket, key_name, stringio_parts) - actual_md5 = md5_from_key(key) - self.assertEqual(expected_md5, actual_md5) - - ## anyone without https may not do any operation - policy = ''' -{"Version":"2008-10-17","Statement":[{"Sid":"Stmtaaa0","Effect":"Deny","Principal":"*","Action":["s3:PutObject"],"Resource":"arn:aws:s3:::%s/*","Condition":{"Bool":{"aws:SecureTransport":false}}}]} -''' % bucket.name - self.assertTrue(bucket.set_policy(policy, headers={'content-type':'application/json'})) - - try: - upload = upload_multipart(bucket, key_name, stringio_parts) - self.fail() - except S3ResponseError as e: - self.assertEqual(e.status, 403) - self.assertEqual(e.reason, 'Forbidden') - -class ObjectMetadataTest(S3ApiVerificationTestBase): - "Test object metadata, e.g. Content-Encoding, x-amz-meta-*, for PUT/GET" - - metadata = { - "Content-Disposition": 'attachment; filename="metaname.txt"', - "Content-Encoding": 'identity', - "Cache-Control": "max-age=3600", - "Expires": "Tue, 19 Jan 2038 03:14:07 GMT", - "mtime": "1364742057", - "UID": "0", - "with-hypen": "1", - "space-in-value": "abc xyz"} - - updated_metadata = { - "Content-Disposition": 'attachment; filename="newname.txt"', - "Cache-Control": "private", - "Expires": "Tue, 19 Jan 2038 03:14:07 GMT", - "mtime": "2222222222", - "uid": "0", - "space-in-value": "ABC XYZ", - "new-entry": "NEW"} - - def test_normal_object_metadata(self): - key_name = str(uuid.uuid4()) - bucket = self.conn.create_bucket(self.bucket_name) - key = Key(bucket, key_name) - for k,v in self.metadata.items(): - key.set_metadata(k, v) - key.set_contents_from_string("test_normal_object_metadata") - self.assert_metadata(bucket, key_name) - self.change_metadata(bucket, key_name) - self.assert_updated_metadata(bucket, key_name) - - def test_mp_object_metadata(self): - key_name = str(uuid.uuid4()) - bucket = self.conn.create_bucket(self.bucket_name) - upload = upload_multipart(bucket, key_name, [StringIO("part1")], - metadata=self.metadata) - self.assert_metadata(bucket, key_name) - self.change_metadata(bucket, key_name) - self.assert_updated_metadata(bucket, key_name) - - def assert_metadata(self, bucket, key_name): - key = Key(bucket, key_name) - key.get_contents_as_string() - - self.assertEqual(key.content_disposition, - 'attachment; filename="metaname.txt"') - self.assertEqual(key.content_encoding, "identity") - self.assertEqual(key.cache_control, "max-age=3600") - # TODO: Expires header can be accessed by boto? - # self.assertEqual(key.expires, "Tue, 19 Jan 2038 03:14:07 GMT") - self.assertEqual(key.get_metadata("mtime"), "1364742057") - self.assertEqual(key.get_metadata("uid"), "0") - self.assertEqual(key.get_metadata("with-hypen"), "1") - self.assertEqual(key.get_metadata("space-in-value"), "abc xyz") - # x-amz-meta-* headers should be normalized to lowercase - self.assertEqual(key.get_metadata("Mtime"), None) - self.assertEqual(key.get_metadata("MTIME"), None) - self.assertEqual(key.get_metadata("Uid"), None) - self.assertEqual(key.get_metadata("UID"), None) - self.assertEqual(key.get_metadata("With-Hypen"), None) - self.assertEqual(key.get_metadata("Space-In-Value"), None) - - def change_metadata(self, bucket, key_name): - key = Key(bucket, key_name) - key.copy(bucket.name, key_name, self.updated_metadata) - - def assert_updated_metadata(self, bucket, key_name): - key = Key(bucket, key_name) - key.get_contents_as_string() - - # unchanged - self.assertEqual(key.get_metadata("uid"), "0") - # updated - self.assertEqual(key.content_disposition, - 'attachment; filename="newname.txt"') - self.assertEqual(key.cache_control, "private") - self.assertEqual(key.get_metadata("mtime"), "2222222222") - self.assertEqual(key.get_metadata("space-in-value"), "ABC XYZ") - # removed - self.assertEqual(key.content_encoding, None) - self.assertEqual(key.get_metadata("with-hypen"), None) - # inserted - self.assertEqual(key.get_metadata("new-entry"), "NEW") - # TODO: Expires header can be accessed by boto? - # self.assertEqual(key.expires, "Tue, 19 Jan 2038 03:14:07 GMT") - -class ContentMd5Test(S3ApiVerificationTestBase): - def test_catches_bad_md5(self): - '''Make sure Riak CS catches a bad content-md5 header''' - key_name = str(uuid.uuid4()) - bucket = self.conn.create_bucket(self.bucket_name) - key = Key(bucket, key_name) - s = StringIO('not the real content') - x = compute_md5(s) - with self.assertRaises(S3ResponseError): - key.set_contents_from_string('this is different from the md5 we calculated', md5=x) - - def test_bad_md5_leaves_old_object_alone(self): - '''Github #705 Regression test: - Make sure that overwriting an object using a bad md5 - simply leaves the old version in place.''' - key_name = str(uuid.uuid4()) - bucket = self.conn.create_bucket(self.bucket_name) - value = 'good value' - - good_key = Key(bucket, key_name) - good_key.set_contents_from_string(value) - - bad_key = Key(bucket, key_name) - s = StringIO('not the real content') - x = compute_md5(s) - try: - bad_key.set_contents_from_string('this is different from the md5 we calculated', md5=x) - except S3ResponseError: - pass - self.assertEqual(good_key.get_contents_as_string(), value) - -class SimpleCopyTest(S3ApiVerificationTestBase): - - def create_test_object(self): - bucket = self.conn.create_bucket(self.bucket_name) - k = Key(bucket) - k.key = self.key_name - k.set_contents_from_string(self.data) - self.assertEqual(k.get_contents_as_string(), self.data) - self.assertIn(self.key_name, - [k.key for k in bucket.get_all_keys()]) - return k - - def test_put_copy_object(self): - k = self.create_test_object() - - target_bucket_name = str(uuid.uuid4()) - target_key_name = str(uuid.uuid4()) - target_bucket = self.conn.create_bucket(target_bucket_name) - - target_bucket.copy_key(target_key_name, self.bucket_name, self.key_name) - - target_key = Key(target_bucket) - target_key.key = target_key_name - self.assertEqual(target_key.get_contents_as_string(), self.data) - self.assertIn(target_key_name, - [k.key for k in target_bucket.get_all_keys()]) - - def test_put_copy_object_from_mp(self): - bucket = self.conn.create_bucket(self.bucket_name) - (upload, result) = upload_multipart(bucket, self.key_name, [StringIO(self.data)]) - - target_bucket_name = str(uuid.uuid4()) - target_key_name = str(uuid.uuid4()) - target_bucket = self.conn.create_bucket(target_bucket_name) - - target_bucket.copy_key(target_key_name, self.bucket_name, self.key_name) - - target_key = Key(target_bucket) - target_key.key = target_key_name - self.assertEqual(target_key.get_contents_as_string(), self.data) - self.assertIn(target_key_name, - [k.key for k in target_bucket.get_all_keys()]) - - def test_upload_part_from_non_mp(self): - k = self.create_test_object() - - target_bucket_name = str(uuid.uuid4()) - target_key_name = str(uuid.uuid4()) - target_bucket = self.conn.create_bucket(target_bucket_name) - start_offset=0 - end_offset=9 - target_bucket = self.conn.create_bucket(target_bucket_name) - upload = target_bucket.initiate_multipart_upload(target_key_name) - upload.copy_part_from_key(self.bucket_name, self.key_name, part_num=1, - start=start_offset, end=end_offset) - upload.complete_upload() - print([k.key for k in target_bucket.get_all_keys()]) - - target_key = Key(target_bucket) - target_key.key = target_key_name - self.assertEqual(self.data[start_offset:(end_offset+1)], - target_key.get_contents_as_string()) - - def test_upload_part_from_mp(self): - bucket = self.conn.create_bucket(self.bucket_name) - key_name = str(uuid.uuid4()) - (upload, result) = upload_multipart(bucket, key_name, [StringIO(self.data)]) - - target_bucket_name = str(uuid.uuid4()) - target_bucket = self.conn.create_bucket(target_bucket_name) - start_offset=0 - end_offset=9 - upload2 = target_bucket.initiate_multipart_upload(key_name) - upload2.copy_part_from_key(self.bucket_name, self.key_name, part_num=1, - start=start_offset, end=end_offset) - upload2.complete_upload() - - target_key = Key(target_bucket, key_name) - self.assertEqual(self.data[start_offset:(end_offset+1)], - target_key.get_contents_as_string()) - - def test_put_copy_from_non_existing_key_404(self): - bucket = self.conn.create_bucket(self.bucket_name) - - target_bucket_name = str(uuid.uuid4()) - target_key_name = str(uuid.uuid4()) - target_bucket = self.conn.create_bucket(target_bucket_name) - try: - target_bucket.copy_key(target_key_name, self.bucket_name, 'not_existing') - self.fail() - except S3ResponseError as e: - print e - self.assertEqual(e.status, 404) - self.assertEqual(e.reason, 'Not Found') - -if __name__ == "__main__": - unittest.main(verbosity=2) diff --git a/client_tests/python/boto_tests/file_generator.py b/client_tests/python/boto_tests/file_generator.py deleted file mode 100755 index 65c11adf8..000000000 --- a/client_tests/python/boto_tests/file_generator.py +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/env python -## --------------------------------------------------------------------- -## -## Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -## -## This file is provided to you under the Apache License, -## Version 2.0 (the "License"); you may not use this file -## except in compliance with the License. You may obtain -## a copy of the License at -## -## http://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, -## software distributed under the License is distributed on an -## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -## KIND, either express or implied. See the License for the -## specific language governing permissions and limitations -## under the License. -## -## --------------------------------------------------------------------- - -import os - -class FileGenerator(object): - def __init__(self, gen_fn, size=None): - """ - - Create a read-only file-like object that is driven by a generator. - The file can only be read once or sought to the head. The file also - supports a limited usage of `tell`, mostly just to appease boto's use of - those methods to determine file-size. The optional `size` parameter - _must_ be used if you intend to use this object with boto. - To support seek to the head, generators are created from `gen_fn` - once per seek to the head. The `gen_fn` must return the same - generators for every call. Currently, the total length of the generated - values from generators must agree with `size`, no automatic truncation - will be performed for you. - - Here are some example uses: - - ``` - # create a 1kb string first, to be used by our - # file generator - s = ''.join('a' for _ in xrange(1024)) - # the generator to drive the file, 1MB (1KB * 1024) - def fn(): - return (s for _ in xrange(1024)) - fg = FileGenerator(fn, 1024 ** 2) - - # now remember, each FileGenerator instance can only - # be used once, so pretend a new one is created for each - # of the following example: - - # copy it to 'real' file - import shutil - shutil.copyfileobj(fg, open('destination-file', 'w')) - - # compute the md5 - import md5 - - m = md5.new() - go = True - while go: - byte = fg.read(8196) - if byte: - m.update(byte) - else: - go = False - print m.hexdigest() - """ - self.gen_fn = gen_fn - self.gen = gen_fn() - self.size = size - self.pos = 0 - - self.closed = False - self.buf = None - - def close(self): - self.closed = True - return None - - def tell(self): - return self.pos - - def seek(self, offset, whence=None): - if offset != 0: - raise ValueError('offset must be ZERO') - - if whence == os.SEEK_END and offset == 0: - self.pos = self.size - else: - self.pos = 0 - self.gen = self.gen_fn() - return None - - def read(self, max_size=None): - if not max_size: - res = self.buf + ''.join(list(self.gen)) - self.pos = len(res) - self.buf = '' - return res - else: - if self.buf: - res = self.buf[:max_size] - self.buf = self.buf[max_size:] - self.pos += len(res) - return res - else: - try: - data = self.gen.next() - res = data[:max_size] - self.buf = data[max_size:] - self.pos += len(res) - return res - except StopIteration: - return '' - diff --git a/client_tests/python/boto_tests/requirements.txt b/client_tests/python/boto_tests/requirements.txt deleted file mode 100644 index 1aa451715..000000000 --- a/client_tests/python/boto_tests/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -boto==2.35.1 - diff --git a/client_tests/python/ceph_tests/Makefile b/client_tests/python/ceph_tests/Makefile deleted file mode 100644 index 9d022ab7c..000000000 --- a/client_tests/python/ceph_tests/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -.PHONY: test clean env all -.DEFAULT: all - -DEPS = env/lib/python2.7/site-packages -BIN = env/bin -NOSE_ARGS = s3tests.functional.test_s3 -A -NOSE_ATTR = (method != "post") -NOSE_ATTR += and (resource != "bucket.log") -NOSE_ATTR += and (not versioning) -NOSE_ATTR += and (not cors) -NOSE_ATTR += and (not fails_on_aws) -NOSE_ATTR += and (not fails_with_subdomain) -NOSE_ATTR += and (not fails_on_rcs) - -all: test - -s3-tests: - @git clone --quiet https://github.com/basho/s3-tests \ - -b riakcs-2.1 - -env: - @cd s3-tests && virtualenv env - -$(DEPS) $(BIN): s3-tests env - @cd s3-tests && env/bin/pip install -r requirements.txt - -test: $(DEPS) $(BIN) - @echo $(CS_HTTP_PORT) - @./s3_conf.sh > s3-tests/s3test.conf - cd s3-tests && \ - S3TEST_CONF=s3test.conf env/bin/nosetests $(NOSE_ARGS) '$(NOSE_ATTR)' - -clean: - @rm -rf s3-tests diff --git a/client_tests/python/ceph_tests/s3_conf.sh b/client_tests/python/ceph_tests/s3_conf.sh deleted file mode 100755 index 05de70390..000000000 --- a/client_tests/python/ceph_tests/s3_conf.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/sh - -usage() -{ - echo "$0 [HOST PORT]" -} - -if [ -z "$1" ] -then - HOST="localhost" -else - HOST=$1 -fi - -if [ -z "$2" ] -then - PORT=${CS_HTTP_PORT:=8080} -else - PORT=$2 -fi - -PARSECREDS="import json -import sys -user_input = sys.stdin.read() -user_json = json.loads(user_input) -sys.stdout.write(user_json['key_id'] + ' ' + user_json['key_secret'] + ' ' + user_json['id']) -sys.stdout.flush()" - -NAME1=`uuidgen` -EMAIL1="$NAME1@s3-test.basho" -CREDS1=`curl -s --data "{\"email\":\"$EMAIL1\", \"name\":\"$NAME1\"}" -H 'Content-Type: application/json' "http://$HOST:$PORT/riak-cs/user" | python -c "$PARSECREDS"` -KEYID1=`echo $CREDS1 | awk '{print $1}'` -KEYSECRET1=`echo $CREDS1 | awk '{print $2}'` -CANONICALID1=`echo $CREDS1 | awk '{print $3}'` - -NAME2=`uuidgen` -EMAIL2="$NAME2@s3-test.basho" -CREDS2=`curl -s --data "{\"email\":\"$EMAIL2\", \"name\":\"$NAME2\"}" -H 'Content-Type: application/json' "http://$HOST:$PORT/riak-cs/user" | python -c "$PARSECREDS"` -KEYID2=`echo $CREDS2 | awk '{print $1}'` -KEYSECRET2=`echo $CREDS2 | awk '{print $2}'` -CANONICALID2=`echo $CREDS2 | awk '{print $3}'` - -CONFIG="[DEFAULT] -## this section is just used as default for all the \"s3 *\" -## sections, you can place these variables also directly there - -## replace with e.g. \"localhost\" to run against local software -host = s3.amazonaws.com - -## uncomment the port to use something other than 80 -port = 80 - -proxy = $HOST -proxy_port = $PORT - -## say \"no\" to disable TLS -is_secure = no - -api_name = us-east-1 - -[fixtures] -## all the buckets created will start with this prefix; -## {random} will be filled with random characters to pad -## the prefix to 30 characters long, and avoid collisions -bucket prefix = cs-s3-tests-{random}- - -[s3 main] -## the tests assume two accounts are defined, \"main\" and \"alt\". - -## user_id is a 64-character hexstring -user_id = $CANONICALID1 - -## display name typically looks more like a unix login, \"jdoe\" etc -display_name = $NAME1 - -## replace these with your access keys -access_key = $KEYID1 -secret_key = $KEYSECRET1 - -[s3 alt] -## another user account, used for ACL-related tests -user_id = $CANONICALID2 -display_name = $NAME2 -## the \"alt\" user needs to have email set, too -email = $EMAIL2 -access_key = $KEYID2 -secret_key = $KEYSECRET2" - -echo "$CONFIG" diff --git a/client_tests/ruby/.gitignore b/client_tests/ruby/.gitignore deleted file mode 100644 index 00cbe9d10..000000000 --- a/client_tests/ruby/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -Gemfile.lock -conf/s3.yml -vendor/ -.bundle/ diff --git a/client_tests/ruby/Gemfile b/client_tests/ruby/Gemfile deleted file mode 100644 index d1f7226f4..000000000 --- a/client_tests/ruby/Gemfile +++ /dev/null @@ -1,10 +0,0 @@ -source "https://rubygems.org" - -gem "aws-sdk", "~>1.8.5" -gem "uuid", "~>2.3.6" -gem "rake", "~>10.0.2" -gem "httparty", "~>0.10.2" - -group :test do - gem "rspec", "~>2.11.0" -end diff --git a/client_tests/ruby/README.md b/client_tests/ruby/README.md deleted file mode 100644 index c266679d5..000000000 --- a/client_tests/ruby/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Riak CS AWS Ruby SDK Tests - -## Dependencies - -Install [Bundler](http://gembundler.com/): - -```bash -$ gem install bundler -``` - -Install dependencies: - -```bash -$ bundle --gemfile client_tests/ruby/Gemfile --path vendor -``` - -## Execution - -```bash -$ cd client_tests/ruby && bundle exec rake spec -``` diff --git a/client_tests/ruby/Rakefile b/client_tests/ruby/Rakefile deleted file mode 100644 index 2abe082e3..000000000 --- a/client_tests/ruby/Rakefile +++ /dev/null @@ -1,11 +0,0 @@ -# Rakefile -require 'rspec/core/rake_task' - -RSpec::Core::RakeTask.new(:spec) do |config| - config.rspec_opts = '--color' -end - -task :default => :spec - -# spec/spec_helper.rb -require 'rspec/autorun' diff --git a/client_tests/ruby/spec/helper.rb b/client_tests/ruby/spec/helper.rb deleted file mode 100644 index 4aa2b954b..000000000 --- a/client_tests/ruby/spec/helper.rb +++ /dev/null @@ -1,41 +0,0 @@ -require 'httparty' -require 'json' -require 'uuid' -require 'tempfile' - -def create_user(name) - response = HTTParty.put("#{cs_uri}/riak-cs/user", - :body => { - :name => name, - :email => "#{name}@example.com"}.to_json, - :headers => { - "Content-Type" => "application/json"}) - json_body = JSON.parse(response.body) - return json_body['key_id'], json_body['key_secret'] -end - -def s3_conf - key_id, key_secret = create_user(UUID::generate) - { - access_key_id: key_id, - secret_access_key: key_secret, - proxy_uri: cs_uri, - use_ssl: false, - http_read_timeout: 2000, - max_retries: 0 - } -end - -def cs_uri - "http://localhost:#{cs_port}" -end - -def cs_port - ENV['CS_HTTP_PORT'] || 8080 -end - -def new_mb_temp_file(size) - temp = Tempfile.new 'riakcs-test' - (size*1024*1024).times {|i| temp.write 0} - temp -end diff --git a/client_tests/ruby/spec/s3_spec.rb b/client_tests/ruby/spec/s3_spec.rb deleted file mode 100644 index d46825897..000000000 --- a/client_tests/ruby/spec/s3_spec.rb +++ /dev/null @@ -1,119 +0,0 @@ -## --------------------------------------------------------------------- -## -## Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -## -## This file is provided to you under the Apache License, -## Version 2.0 (the "License"); you may not use this file -## except in compliance with the License. You may obtain -## a copy of the License at -## -## http://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, -## software distributed under the License is distributed on an -## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -## KIND, either express or implied. See the License for the -## specific language governing permissions and limitations -## under the License. -## -## --------------------------------------------------------------------- - -require 'aws-sdk' -require 'uuid' -require 'yaml' -require 'helper' - -class AWS::S3::AccessControlList::Grant - def ==(other) - @grantee.to_s == other.grantee.to_s and @permission.to_s == other.permission.to_s - end -end - -describe AWS::S3 do - let(:s3) { AWS::S3.new( s3_conf ) } - let(:bucket_name) { "aws-sdk-test-" + UUID::generate } - let(:object_name) { "key-" + UUID::generate } - let(:grant_public_read) { - acl = AWS::S3::AccessControlList.new - acl.grant(:read).to(:uri => 'http://acs.amazonaws.com/groups/global/AllUsers') - acl.grants.first - } - - after :each do - begin - if s3.buckets[bucket_name].exists? - if s3.buckets[bucket_name].objects.count > 0 - s3.buckets[bucket_name].objects.each &:delete - end - s3.buckets[bucket_name].delete - end - rescue Exception => e - puts e - end - end - - describe "when there is no bucket" do - it "should not find the bucket." do - s3.buckets[bucket_name].exists?.should == false - end - - it "should fail on delete operation." do - lambda{s3.buckets[bucket_name].delete}.should raise_error - end - - it "should fail on get acl operation" do - lambda{s3.buckets[bucket_name].acl}.should raise_error - end - end - - describe "when there is a bucket" do - it "should be able to create and delete a bucket" do - s3.buckets.create(bucket_name).should be_kind_of(AWS::S3::Bucket) - s3.buckets[bucket_name].exists?.should == true - - lambda{s3.buckets[bucket_name].delete}.should_not raise_error - s3.buckets[bucket_name].exists?.should == false - end - - it "should be able to list buckets" do - s3.buckets.create(bucket_name).should be_kind_of(AWS::S3::Bucket) - s3.buckets.count.should > 0 - end - - it "should be able to put, get and delete object" do - s3.buckets.create(bucket_name).should be_kind_of(AWS::S3::Bucket) - - s3.buckets[bucket_name].objects[object_name].write('Rakefile') - s3.buckets[bucket_name].objects[object_name].exists?.should == true - - s3.buckets[bucket_name].objects[object_name].read.should == 'Rakefile' - - s3.buckets[bucket_name].objects[object_name].delete - s3.buckets[bucket_name].objects[object_name].exists?.should == false - end - - it "should be able to put and get bucket ACL" do - s3.buckets.create(bucket_name, :acl => :public_read).should be_kind_of(AWS::S3::Bucket) - s3.buckets[bucket_name].acl.grants.include?(grant_public_read).should == true - end - - it "should be able to put and get object ACL" do - s3.buckets.create(bucket_name).should be_kind_of(AWS::S3::Bucket) - s3.buckets[bucket_name].objects[object_name].write('Rakefile', :acl => :public_read) - - s3.buckets[bucket_name].objects[object_name].acl.grants.include?(grant_public_read).should == true - end - - it "should be able to put object using multipart upload" do - s3.buckets.create(bucket_name).should be_kind_of(AWS::S3::Bucket) - - temp = new_mb_temp_file 6 # making 6MB file - s3.buckets[bucket_name].objects[object_name].write( - :file => temp.path, - :multipart_threshold => 1024 * 1024, - ) - s3.buckets[bucket_name].objects[object_name].exists?.should == true - temp.close - end - end -end From c68048d040dddc26d5ad87d6b8f0ac9530a5a114 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 4 May 2021 02:40:03 +0300 Subject: [PATCH 113/831] drop bitcask-downgrade target --- Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Makefile b/Makefile index 538ab2560..989cadbf9 100644 --- a/Makefile +++ b/Makefile @@ -96,8 +96,6 @@ test-erlang: compile-client-test compile-client-test: all @$(REBAR) client_test_compile -bitcask-downgrade-script: riak_test/src/downgrade_bitcask.erl - clean-client-test: @$(REBAR) client_test_clean From f19e02ae090dff6a0fec944ea85890744e9c0da1 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 4 May 2021 16:59:00 +0300 Subject: [PATCH 114/831] include tools/ files in release, to unbreak tests invoking them via riak-cs escript --- rebar.config | 8 ++++++++ {priv => rel}/tools/internal/README.md | 0 {priv => rel}/tools/internal/block_audit.erl | 0 {priv => rel}/tools/internal/ensure_orphan_blocks.erl | 0 {priv => rel}/tools/internal/offline_delete.erl | 0 {priv => rel}/tools/internal/riak_cs_inspector.erl | 0 {priv => rel}/tools/internal/select_gc_bucket.erl | 3 ++- {priv => rel}/tools/repair_gc_bucket.erl | 0 8 files changed, 10 insertions(+), 1 deletion(-) rename {priv => rel}/tools/internal/README.md (100%) rename {priv => rel}/tools/internal/block_audit.erl (100%) rename {priv => rel}/tools/internal/ensure_orphan_blocks.erl (100%) rename {priv => rel}/tools/internal/offline_delete.erl (100%) rename {priv => rel}/tools/internal/riak_cs_inspector.erl (100%) rename {priv => rel}/tools/internal/select_gc_bucket.erl (99%) rename {priv => rel}/tools/repair_gc_bucket.erl (100%) diff --git a/rebar.config b/rebar.config index c35ce5b9e..a3afe7ec4 100644 --- a/rebar.config +++ b/rebar.config @@ -47,6 +47,14 @@ , {template, "rel/files/riak-cs-supercluster", "bin/riak-cs-supercluster"} , {copy, "rel/files/cert.pem", "etc/cert.pem"} , {copy, "rel/files/key.pem", "etc/key.pem"} + , {mkdir, "priv/tools/internal"} + , {copy, "rel/tools/repair_gc_bucket.erl", "priv/tools"} + , {copy, "rel/tools/internal/README.md", "priv/tools/internal"} + , {copy, "rel/tools/internal/block_audit.erl", "priv/tools/internal"} + , {copy, "rel/tools/internal/ensure_orphan_blocks.erl", "priv/tools/internal"} + , {copy, "rel/tools/internal/offline_delete.erl", "priv/tools/internal"} + , {copy, "rel/tools/internal/riak_cs_inspector.erl", "priv/tools/internal"} + , {copy, "rel/tools/internal/select_gc_bucket.erl", "priv/tools/internal"} ] } , {generate_start_script, true} diff --git a/priv/tools/internal/README.md b/rel/tools/internal/README.md similarity index 100% rename from priv/tools/internal/README.md rename to rel/tools/internal/README.md diff --git a/priv/tools/internal/block_audit.erl b/rel/tools/internal/block_audit.erl similarity index 100% rename from priv/tools/internal/block_audit.erl rename to rel/tools/internal/block_audit.erl diff --git a/priv/tools/internal/ensure_orphan_blocks.erl b/rel/tools/internal/ensure_orphan_blocks.erl similarity index 100% rename from priv/tools/internal/ensure_orphan_blocks.erl rename to rel/tools/internal/ensure_orphan_blocks.erl diff --git a/priv/tools/internal/offline_delete.erl b/rel/tools/internal/offline_delete.erl similarity index 100% rename from priv/tools/internal/offline_delete.erl rename to rel/tools/internal/offline_delete.erl diff --git a/priv/tools/internal/riak_cs_inspector.erl b/rel/tools/internal/riak_cs_inspector.erl similarity index 100% rename from priv/tools/internal/riak_cs_inspector.erl rename to rel/tools/internal/riak_cs_inspector.erl diff --git a/priv/tools/internal/select_gc_bucket.erl b/rel/tools/internal/select_gc_bucket.erl similarity index 99% rename from priv/tools/internal/select_gc_bucket.erl rename to rel/tools/internal/select_gc_bucket.erl index ca3c989a9..8ea787857 100644 --- a/priv/tools/internal/select_gc_bucket.erl +++ b/rel/tools/internal/select_gc_bucket.erl @@ -22,7 +22,8 @@ -module(select_gc_bucket). --compile(export_all). +-export([main/1]). + -mode(compile). -include_lib("riak_cs/include/riak_cs.hrl"). diff --git a/priv/tools/repair_gc_bucket.erl b/rel/tools/repair_gc_bucket.erl similarity index 100% rename from priv/tools/repair_gc_bucket.erl rename to rel/tools/repair_gc_bucket.erl From c86e2a81041c177cc502ff5c27588ea17cb588b3 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 7 May 2021 02:41:39 +0300 Subject: [PATCH 115/831] accept reqs to amazonaws.com URLs with regions, maybe not matching cs_root_host --- apps/riak_cs/src/riak_cs_s3_rewrite.erl | 48 ++++++++++++++++++------- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/riak_cs_s3_rewrite.erl index 35d878226..76a30885d 100644 --- a/apps/riak_cs/src/riak_cs_s3_rewrite.erl +++ b/apps/riak_cs/src/riak_cs_s3_rewrite.erl @@ -55,6 +55,7 @@ -ifdef(TEST). -compile(export_all). -compile(nowarn_export_all). +-include_lib("eunit/include/eunit.hrl"). -endif. -type subresource() :: {string(), string()}. @@ -65,9 +66,12 @@ -spec rewrite(atom(), atom(), {integer(), integer()}, mochiweb_headers(), string()) -> {mochiweb_headers(), string()}. rewrite(Method, _Scheme, _Vsn, Headers, Url) -> + lager:debug("rewriting ~p ~p", [Method, Url]), riak_cs_dtrace:dt_wm_entry(?MODULE, <<"rewrite">>), {Path, QueryString, _} = mochiweb_util:urlsplit_path(Url), - rewrite_path_and_headers(Method, Headers, Url, Path, QueryString). + Res = rewrite_path_and_headers(Method, Headers, Url, Path, QueryString), + lager:debug("rewritten ~p", [Res]), + Res. -spec original_resource(term()) -> undefined | {string(), [{term(),term()}]}. original_resource(RD) -> @@ -153,20 +157,24 @@ bucket_from_host(HostHeader, RootHost) -> [] -> HostHeader; [H|_] -> H end, - extract_bucket_from_host(HostNoPort, - string:rstr(HostNoPort, RootHost)). + extract_bucket_from_host(HostNoPort, RootHost). -%% @doc Extract the bucket name from the `Host' header value if a -%% bucket name is present. --spec extract_bucket_from_host(string(), non_neg_integer()) -> undefined | string(). -extract_bucket_from_host(_Host, 0) -> - undefined; -extract_bucket_from_host(_Host, 1) -> - undefined; -extract_bucket_from_host(Host, RootHostIndex) -> +extract_bucket_from_host(Host, RootHost) -> %% Take the substring of the everything up to %% the '.' preceding the root host - string:sub_string(Host, 1, RootHostIndex-2). + case re:run(Host, "(.+)\.(s3\.(?:(?:[a-z0-9-])+\.)?amazonaws\.com)", + [{capture, all_but_first, list}]) of + {match, [M1, M2]} -> + if RootHost == M2 -> + M1; + el/=se -> + lager:warning("accepting request sent to a (legitimate) AWS host" + " \"~s\" not matching cs_root_host (\"~s\")", [Host, RootHost]), + M1 + end; + _ -> + undefined + end. %% @doc Separate the bucket name from the rest of the raw path in the %% case where the bucket name is included in the path. @@ -250,3 +258,19 @@ get_subresources(QueryString) -> valid_subresource({Key, _}) -> lists:member(Key, ?SUBRESOURCES). + +-ifdef(TEST). + +extract_bucket_from_host_test() -> + Cases = [ {"asdf.s3.amazonaws.com", "asdf"} + , {"a.s.df.s3.amazonaws.com", "a.s.df"} + , {"a-s.df.s3.amazonaws.com", "a-s.df"} + , {"asdfff.s3.eu-west-1.amazonaws.com", "asdfff"} + , {"a.s.df.s2.amazonaws.com", undefined} + , {"a.s.df.s3.amazonaws.org", undefined} + ], + lists:foreach(fun({A, E}) -> ?assertEqual(extract_bucket_from_host(A, "s3.amazonaws.com"), E) end, Cases), + lists:foreach(fun({A, E}) -> ?assertEqual(extract_bucket_from_host(A, "s3.us-east-2.amazonaws.com"), E) end, Cases), + ok. + +-endif. From 6eb756d67e0cb897a6e8cea747520e4666f7233c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 14 May 2021 05:14:04 +0300 Subject: [PATCH 116/831] tweak .gitignore --- .gitignore | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index e641602ef..eed0fe7f4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,20 +1,13 @@ _build/ .eunit/ rel/riak-cs -rel/vars/dev*_vars.config -ebin/* -riak_test/ebin/* -doc +rel/vars/*_vars.config dev/ -/package/ log/ -*~ +misc/bundle/data current_counterexample.eqc .client_test/ -client_tests/python/ceph_tests/s3-tests -riak-cs.png .local_dialyzer_plt dialyzer.ignore-warnings dialyzer_warnings dialyzer_unhandled_warnings -riak_test/src/downgrade_bitcask.erl From 17ae4c1514e767589765dbd4229600913e46c2b5 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 14 May 2021 05:16:54 +0300 Subject: [PATCH 117/831] bundle: fix nofile limits (for riak user) --- misc/bundle/.dockerignore | 1 + misc/bundle/docker-compose.yml | 4 ---- misc/bundle/riak/Dockerfile | 4 ++++ 3 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 misc/bundle/.dockerignore diff --git a/misc/bundle/.dockerignore b/misc/bundle/.dockerignore new file mode 100644 index 000000000..8fce60300 --- /dev/null +++ b/misc/bundle/.dockerignore @@ -0,0 +1 @@ +data/ diff --git a/misc/bundle/docker-compose.yml b/misc/bundle/docker-compose.yml index 394544bf5..4f0851985 100644 --- a/misc/bundle/docker-compose.yml +++ b/misc/bundle/docker-compose.yml @@ -17,10 +17,6 @@ services: - type: bind source: ${RIAK_DATA} target: /var/lib/riak/data - ulimits: - nofile: - soft: 65535 - hard: 65535 stanchion: depends_on: diff --git a/misc/bundle/riak/Dockerfile b/misc/bundle/riak/Dockerfile index ebc6a6dc9..ea78044d8 100644 --- a/misc/bundle/riak/Dockerfile +++ b/misc/bundle/riak/Dockerfile @@ -36,4 +36,8 @@ RUN sed -i \ EXPOSE ${listener_pb_port} ${listener_http_port} +RUN chown riak:riak /var/lib/riak +RUN echo "riak soft nofile 65536" >>/etc/security/limits.conf +RUN echo "riak hard nofile 65536" >>/etc/security/limits.conf + CMD riak foreground From 33d203f416f7192f68d4df9333febfa59a7dfff9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 14 May 2021 05:18:15 +0300 Subject: [PATCH 118/831] bundle: fix persisting app data --- misc/bundle/README.md | 8 ++++---- misc/bundle/docker-compose.yml | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/misc/bundle/README.md b/misc/bundle/README.md index 0cb8c3682..b9accb841 100644 --- a/misc/bundle/README.md +++ b/misc/bundle/README.md @@ -6,10 +6,10 @@ in a docker-composed bundle. ## Building and running With `docker-compose up` (or `make up`), you will get riak\_cs, -stanchion and riak images created and their containers -started. Applications versions are defined by environment variables -`RIAK_VSN`, `RIAK_CS_VSN` and `STANCHION_VSN` (with 3.0.4, 3.0.0, -3.0.0, respectively, as defaults). +stanchion and riak images created and their containers started. +Applications versions are defined as build args `RIAK_VSN`, +`RIAK_CS_VSN` and `STANCHION_VSN` for `docker build` (with 3.0.6, +3.0.0, 3.0.0, respectively, as defaults). Riak CS is reachable at 172.18.0.4. An admin user can be then created with diff --git a/misc/bundle/docker-compose.yml b/misc/bundle/docker-compose.yml index 4f0851985..37342e0f0 100644 --- a/misc/bundle/docker-compose.yml +++ b/misc/bundle/docker-compose.yml @@ -15,8 +15,8 @@ services: context: . volumes: - type: bind - source: ${RIAK_DATA} - target: /var/lib/riak/data + source: ${RIAK_DATA:-./data/riak} + target: /var/lib/riak stanchion: depends_on: @@ -33,8 +33,8 @@ services: context: . volumes: - type: bind - source: ${STANCHION_DATA} - target: /var/lib/stanchion/data + source: ${STANCHION_DATA:-./data/stanchion} + target: /var/lib/stanchion riak_cs: depends_on: @@ -53,8 +53,8 @@ services: context: . volumes: - type: bind - source: ${RIAK_CS_DATA} - target: /var/lib/riak_cs/data + source: ${RIAK_CS_DATA:-./data/riak_cs} + target: /var/lib/riak_cs networks: net0: From a3440ef855b7f23a2a83e26fee31c27de6f791b0 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 14 May 2021 05:19:08 +0300 Subject: [PATCH 119/831] bundle: bump default riak vsn to 3.0.6 --- misc/bundle/riak/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/bundle/riak/Dockerfile b/misc/bundle/riak/Dockerfile index ea78044d8..9a5de41c6 100644 --- a/misc/bundle/riak/Dockerfile +++ b/misc/bundle/riak/Dockerfile @@ -1,6 +1,6 @@ FROM debian:buster -ARG RIAK_VERSION=3.0.4 \ +ARG RIAK_VERSION=3.0.6 \ listener_ip=172.18.0.3 \ listener_pb_port=8087 \ listener_http_port=8098 From d21fe52f82438dce013eeb64e0a051fc1406223c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 14 May 2021 05:19:30 +0300 Subject: [PATCH 120/831] bundle: Dockerfile touchups --- misc/bundle/riak_cs/Dockerfile | 6 ++---- misc/bundle/stanchion/Dockerfile | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/misc/bundle/riak_cs/Dockerfile b/misc/bundle/riak_cs/Dockerfile index 480dff07d..a785abebc 100644 --- a/misc/bundle/riak_cs/Dockerfile +++ b/misc/bundle/riak_cs/Dockerfile @@ -11,12 +11,10 @@ ARG RIAK_CS_VSN=3.0.0 \ riak_http_port=8098 \ riak_pb_port=8087 -ENV tag=${RIAK_CS_VSN} - WORKDIR /usr/src/riak_cs -ADD https://github.com/TI-Tokyo/riak_cs/archive/refs/tags/${tag}.tar.gz source.tar.gz +ADD https://github.com/TI-Tokyo/riak_cs/archive/refs/tags/${RIAK_CS_VSN}.tar.gz source.tar.gz RUN tar xzf source.tar.gz -WORKDIR riak_cs-$tag +WORKDIR riak_cs-${RIAK_CS_VSN} EXPOSE $cs_port $admin_port diff --git a/misc/bundle/stanchion/Dockerfile b/misc/bundle/stanchion/Dockerfile index 0e3f6910f..726e165c3 100644 --- a/misc/bundle/stanchion/Dockerfile +++ b/misc/bundle/stanchion/Dockerfile @@ -7,14 +7,12 @@ ARG STANCHION_VSN=3.0.0 \ stanchion_host=172.18.0.2 \ stanchion_port=8085 -ENV tag=${STANCHION_VSN} - EXPOSE $stanchion_port WORKDIR /usr/src/stanchion -ADD https://github.com/TI-Tokyo/stanchion/archive/refs/tags/$tag.tar.gz source.tar.gz +ADD https://github.com/TI-Tokyo/stanchion/archive/refs/tags/${STANCHION_VSN}.tar.gz source.tar.gz RUN tar xzf source.tar.gz -WORKDIR stanchion-$tag +WORKDIR stanchion-${STANCHION_VSN} RUN sed -i \ -e "s/@stanchion_ip@/$stanchion_host/" \ From 1fd459eefd537533ebb2faa46a75eeadfcfbf5e3 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 18 May 2021 03:03:49 +0300 Subject: [PATCH 121/831] WIP --- rel/files/riak-cs-admin | 2 +- rel/files/riak-cs-debug | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index d83a9e9c7..cd41a149e 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -3,7 +3,7 @@ SCRIPT=$(readlink $0 || true) if [ -z $SCRIPT ]; then SCRIPT=$0 -fi; +fi SCRIPT_DIR="$(cd `dirname "$SCRIPT"` && pwd -P)" RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd -P)" diff --git a/rel/files/riak-cs-debug b/rel/files/riak-cs-debug index 8af20aad8..247f4e29d 100755 --- a/rel/files/riak-cs-debug +++ b/rel/files/riak-cs-debug @@ -132,16 +132,16 @@ exit ### # These paths may be overridden with environment variables. -RUNNER_BASE_DIR={{runner_base_dir}} -cs_base_dir={{runner_base_dir}} -cs_bin_dir={{runner_script_dir}} -cs_etc_dir={{runner_etc_dir}} -cs_log_dir={{runner_log_dir}} +RUNNER_BASE_DIR=$(cd `dirname $0` && /bin/pwd -P)/.. +cs_base_dir=$RUNNER_BASE_DIR +cs_bin_dir=$RUNNER_BASE_DIR/bin +cs_etc_dir=$RUNNER_BASE_DIR/etc +cs_log_dir=$RUNNER_BASE_DIR/log if [ -d {{platform_data_dir}}/generated.configs ]; then cuttlefish_conf_dir={{platform_data_dir}}/generated.configs else - cuttlefish_conf_dir={{runner_base_dir}}/{{platform_data_dir}}/generated.configs + cuttlefish_conf_dir=$RUNNER_BASE_DIR/data/generated.configs fi get_cfgs=0 From 3f207388f6f391d0a6b4323424bb75dbc4b15ae0 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 18 May 2021 04:01:13 +0300 Subject: [PATCH 122/831] provisionally enable riak-cs-admin cluster-info (may hit 60s timeout) --- rel/files/riak-cs-admin | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index cd41a149e..cd07553e8 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -10,6 +10,12 @@ RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd -P)" REL_NAME="riak-cs" RPC_HOP=$RELEASE_ROOT_DIR/bin/$REL_NAME +# nodetool has a 60 sec value hardcoded for RPC timeout, with no easy +# way to supply an 'infinity' from a script. Much as I hate to +# pretend 60 sec is long enough, here's a TODO note to have it fixed +# (best would be to patch relx/nodetool upstream). The only call +# affected is `riak-cs-admin cluster-info`. +RPC_HOP_INF=$RPC_HOP usage() { echo "Usage: $SCRIPT { status | gc | access | storage | stanchion | cluster-info | cleanup-orphan-multipart | audit-bucket-ownership}" From 6192cc766fd3cc306a6808c863116c730dcf6ab7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 18 May 2021 04:02:59 +0300 Subject: [PATCH 123/831] riak-cs lost "version" arg: add it to riak-cs-admin --- apps/riak_cs/src/riak_cs_console.erl | 6 ++++++ rel/files/riak-cs-admin | 6 +++++- rel/files/riak-cs-debug | 2 +- rel/vars/dev_vars.config.src | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_console.erl b/apps/riak_cs/src/riak_cs_console.erl index 77a1c5661..84ba0ae1e 100644 --- a/apps/riak_cs/src/riak_cs_console.erl +++ b/apps/riak_cs/src/riak_cs_console.erl @@ -21,6 +21,7 @@ -module(riak_cs_console). -export([ + version/1, status/1, cluster_info/1, audit_bucket_ownership/1, @@ -37,6 +38,11 @@ %%% Public API %%%=================================================================== +version([]) -> + {ok, Vsn} = application:get_env(riak_cs, cs_version), + io:format("version : ~p~n", [Vsn]), + ok. + status([]) -> Stats = riak_cs_stats:get_stats(), _ = [io:format("~p : ~p~n", [Name, Value]) diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index cd07553e8..68f3a0af6 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -18,11 +18,15 @@ RPC_HOP=$RELEASE_ROOT_DIR/bin/$REL_NAME RPC_HOP_INF=$RPC_HOP usage() { - echo "Usage: $SCRIPT { status | gc | access | storage | stanchion | cluster-info | cleanup-orphan-multipart | audit-bucket-ownership}" + echo "Usage: $SCRIPT { version | status | gc | access | storage | stanchion | cluster-info | cleanup-orphan-multipart | audit-bucket-ownership}" } # Check the first argument for instructions case "$1" in + version) + shift + $RPC_HOP rpc riak_cs_console version + ;; status) shift $RPC_HOP rpc riak_cs_console status diff --git a/rel/files/riak-cs-debug b/rel/files/riak-cs-debug index 247f4e29d..a308eb077 100755 --- a/rel/files/riak-cs-debug +++ b/rel/files/riak-cs-debug @@ -470,7 +470,7 @@ if [ 1 -eq $get_riakcmds ]; then cd "${start_dir}"/"${debug_dir}"/commands dump riak_cs_ping "$cs_bin_dir"/riak-cs ping - dump riak_cs_version "$cs_bin_dir"/riak-cs version + dump riak_cs_version "$cs_bin_dir"/riak-cs-admin version dump riak_cs_status "$cs_bin_dir"/riak-cs-admin status dump riak_cs_gc_status "$cs_bin_dir"/riak-cs-admin gc status dump riak_cs_storage_status "$cs_bin_dir"/riak-cs-admin storage status diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index 071bd0797..563b291d6 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -24,7 +24,7 @@ {stanchion_ip, "127.0.0.1"}. {stanchion_port, 8085}. {stanchion_ssl, off}. -{cs_version, 010300}. +{cs_version, 030000}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. From ecdb669c33eef156d98c3b232818c9d0b579cb73 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 18 May 2021 04:04:51 +0300 Subject: [PATCH 124/831] specially import app_epath.sh, for riak-cs-debug --- rebar.config | 1 + rel/files/app_epath.sh | 172 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 rel/files/app_epath.sh diff --git a/rebar.config b/rebar.config index a3afe7ec4..d509dd202 100644 --- a/rebar.config +++ b/rebar.config @@ -47,6 +47,7 @@ , {template, "rel/files/riak-cs-supercluster", "bin/riak-cs-supercluster"} , {copy, "rel/files/cert.pem", "etc/cert.pem"} , {copy, "rel/files/key.pem", "etc/key.pem"} + , {copy, "rel/files/app_epath.sh", "lib"} , {mkdir, "priv/tools/internal"} , {copy, "rel/tools/repair_gc_bucket.erl", "priv/tools"} , {copy, "rel/tools/internal/README.md", "priv/tools/internal"} diff --git a/rel/files/app_epath.sh b/rel/files/app_epath.sh new file mode 100644 index 000000000..a825906cd --- /dev/null +++ b/rel/files/app_epath.sh @@ -0,0 +1,172 @@ +#!/bin/sh + +## --------------------------------------------------------------------- +## +## app_epath.sh: Parse Erlang app.config with POSIX tools for automation +## +## Copyright (c) 2013 Basho Technologies, Inc. All Rights Reserved. +## +## This file is provided to you under the Apache License, +## Version 2.0 (the "License"); you may not use this file +## except in compliance with the License. You may obtain +## a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, +## software distributed under the License is distributed on an +## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +## KIND, either express or implied. See the License for the +## specific language governing permissions and limitations +## under the License. +## +## --------------------------------------------------------------------- + +## Example usage: +# +# #!/bin/sh +# +# # Load the functions +# . path/to/app_epath.sh +# +# # Build the path info +# epaths=`make_app_epaths path/to/app.config` +# +# # View all of the settings. Quotes are important. +# echo "$epaths" +# +# # Grep around in the paths for various items. +# echo "$epaths" | grep 'riak_core ring_creation_size' +# echo "$epaths" | grep "lager handlers lager_file_backend" | grep info +# +# # Use the epath function to get directly at settings +# epath 'riak_core ring_creation_size' "$epaths" +# epath 'riak_core platform_bin_dir' "$epaths" +# epath 'riak_kv storage_backend' "$epaths" +# +# # Use epath to view all of the riak_core settings +# epath riak_core +# +## End example + +## Here is a command you can put in your path for general cli use. +# +# #!/bin/sh +# +# # $1 quoted eterm path for search: 'riak_core ring_creation_size' +# # $2 path/to/app.config +# +# . path/to/app_epath.sh +# +# epaths=`make_app_epaths "$2"` +# epath "$1" "$epaths" +# +## End epath command + +# make_app_epaths takes a path to an app.config file as its argument and +# and returns (prints) a flattened text structure of configuration settings. + +make_app_epaths () { + # Remove all lines containing comments + # Remove all blank lines + # Remove the first [ + # Remove the last ]. + # Remove all blank lines again (just in case) + appconfig=`cat $1 \ + | sed '/^[ \t]*%/d' \ + | sed '/^[ \t]*$/d' \ + | sed -e '/\[/{s///;:a' -e '$!N;$!ba' -e '}' \ + | sed '$ s/\]\.//g' \ + | sed '/^[ \t]*$/d'` + + STACK= + INQUOTE=0 + # The awk puts each char, spaces included, on their own line for parsing. + echo "$appconfig" | awk '{gsub(//,"\n");print}' | while read i; do + case "x${i}x" in + "x\"x") + # Flip the INQUOTE state and echo the quote + if [ 1 -eq $INQUOTE ]; then + INQUOTE=0 + else + INQUOTE=1 + fi + STACK="${STACK}${i}" + ;; + "xx") + if [ 1 -eq $INQUOTE ]; then + # If in quotes, keep this space + STACK="${STACK} " + fi + ;; + "x,x") + if [ 1 -eq $INQUOTE ]; then + # If in quotes, keep this comma + STACK="${STACK}," + else + # Commas outside quotes means a new item is next + STACK="${STACK} " + fi + ;; + "x{x") + if [ 1 -eq $INQUOTE ]; then + # If in quotes, keep this bracket + STACK="${STACK}{" + else + # Add brace to the stack; will pop off from here on next } + STACK="${STACK} __EBRACE__ " + fi + ;; + "x}x") + if [ 1 -eq $INQUOTE ]; then + # If in quotes, keep this bracket + STACK="${STACK}}" + else + # We're only interested in printing leaves, not + # intermediates like 'riak_core http', which contain lists. + # See if the current stack ends with ] (end of list). + echo $STACK | grep -E "__EBRACKET__$" >/dev/null 2>&1 + if [ 1 -eq $? ]; then + # If not, print the stack without all of the mess. + echo "$STACK" | \ + sed 's/ *__EBRACE__//g;s/ *__EBRACKET__//g;s/^ *//' + fi + # Pop off everything from the last brace on. + STACK=`echo "$STACK" | sed 's/\(.*\) __EBRACE__.*/\1/g'` + fi + ;; + "x[x") + if [ 1 -eq $INQUOTE ]; then + # If in quotes, keep this bracket + STACK="${STACK}[" + else + # Add a placeholder to aid in determining whether or not to + # print. That is, we don't want to print 'riak_core http'. + STACK="${STACK} __EBRACKET__ " + fi + ;; + "x]x") + if [ 1 -eq $INQUOTE ]; then + # If in quotes, keep this bracket + STACK="${STACK}]" + fi + # Don't actually do anything with ], as the starting brackets + # are instead removed with }. + ;; + *) + # Anything else is just pushed. + STACK="${STACK}${i}" + ;; + esac + done +} + +epath () { + # arg1 - a pattern to search for + # arg2 - output of make_app_epaths, passed in quoted + # output - search of arg2 for arg1, trimming arg1 from the beginning + # Note: there may be multiple lines of output. + pat=$1 + shift + echo "$*" | grep "$pat " | sed "s/^${pat} *//" +} From fdb3765bfe7aaf05a62404bd7d6c937c6a1bcaf6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 18 May 2021 04:05:36 +0300 Subject: [PATCH 125/831] update cuttlefish_conf_dir --- rel/files/riak-cs-debug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rel/files/riak-cs-debug b/rel/files/riak-cs-debug index a308eb077..e22981534 100755 --- a/rel/files/riak-cs-debug +++ b/rel/files/riak-cs-debug @@ -139,9 +139,9 @@ cs_etc_dir=$RUNNER_BASE_DIR/etc cs_log_dir=$RUNNER_BASE_DIR/log if [ -d {{platform_data_dir}}/generated.configs ]; then - cuttlefish_conf_dir={{platform_data_dir}}/generated.configs + cuttlefish_conf_dir={{platform_data_dir}}/generated.conf else - cuttlefish_conf_dir=$RUNNER_BASE_DIR/data/generated.configs + cuttlefish_conf_dir=$RUNNER_BASE_DIR/generated.conf fi get_cfgs=0 From 2ec8635f520c8dae81054624ce05d8b1a4aedac7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 18 May 2021 04:06:58 +0300 Subject: [PATCH 126/831] minor tweaks --- .gitignore | 1 + rebar.config | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index eed0fe7f4..8ac9c51d4 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ rel/vars/*_vars.config dev/ log/ misc/bundle/data +*-riak-cs-debug.tar.gz current_counterexample.eqc .client_test/ .local_dialyzer_plt diff --git a/rebar.config b/rebar.config index d509dd202..b2af9c529 100644 --- a/rebar.config +++ b/rebar.config @@ -45,8 +45,8 @@ , {template, "rel/files/riak-cs-admin", "bin/riak-cs-admin"} , {template, "rel/files/riak-cs-debug", "bin/riak-cs-debug"} , {template, "rel/files/riak-cs-supercluster", "bin/riak-cs-supercluster"} - , {copy, "rel/files/cert.pem", "etc/cert.pem"} - , {copy, "rel/files/key.pem", "etc/key.pem"} + , {copy, "rel/files/cert.pem", "etc"} + , {copy, "rel/files/key.pem", "etc"} , {copy, "rel/files/app_epath.sh", "lib"} , {mkdir, "priv/tools/internal"} , {copy, "rel/tools/repair_gc_bucket.erl", "priv/tools"} From fedb32cde73d7fbbe599be4f8514c56a8ee82320 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 26 May 2021 00:12:05 +0300 Subject: [PATCH 127/831] typo in misc/budle/riak/Dockerfile --- misc/bundle/riak/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/misc/bundle/riak/Dockerfile b/misc/bundle/riak/Dockerfile index 9a5de41c6..7cf15e2e2 100644 --- a/misc/bundle/riak/Dockerfile +++ b/misc/bundle/riak/Dockerfile @@ -1,14 +1,14 @@ FROM debian:buster -ARG RIAK_VERSION=3.0.6 \ +ARG RIAK_VSN=3.0.6 \ listener_ip=172.18.0.3 \ listener_pb_port=8087 \ listener_http_port=8098 -ENV PKG=riak_${RIAK_VERSION}-OTP22.3_amd64.deb +ENV PKG=riak_${RIAK_VSN}-OTP22.3_amd64.deb RUN apt-get update && apt-get install -y wget logrotate sudo -RUN wget -q https://files.tiot.jp/riak/kv/3.0/${RIAK_VERSION}/debian/10/${PKG} +RUN wget -q https://files.tiot.jp/riak/kv/3.0/${RIAK_VSN}/debian/10/${PKG} RUN dpkg -i ${PKG} && rm ${PKG} RUN sed -i \ From c8db74c280b8d632d7be8fc9e09ea061163e2ad1 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 26 May 2021 00:13:23 +0300 Subject: [PATCH 128/831] add misc/bundle/riak/Dockerfile.centos (bundle still uses debian-based one) --- misc/bundle/riak/Dockerfile.centos | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 misc/bundle/riak/Dockerfile.centos diff --git a/misc/bundle/riak/Dockerfile.centos b/misc/bundle/riak/Dockerfile.centos new file mode 100644 index 000000000..13936379b --- /dev/null +++ b/misc/bundle/riak/Dockerfile.centos @@ -0,0 +1,41 @@ +FROM centos:7 + +ARG RIAK_VSN=3.0.6 \ + listener_ip=172.18.0.3 \ + listener_pb_port=8087 \ + listener_http_port=8098 + +ENV PKG=riak-${RIAK_VSN}.OTP22.3-1.el7x86_64.rpm + +RUN yum update -y && yum install -y logrotate sudo +RUN yum install -y https://files.tiot.jp/riak/kv/3.0/${RIAK_VSN}/rhel/7/${PKG} + +RUN sed -i \ + -e "s|listener.protobuf.internal = 127.0.0.1:8087|listener.protobuf.internal = 0.0.0.0:${listener_pb_port}|" \ + -e "s|listener.http.internal = 127.0.0.1:8098|listener.http.internal = 0.0.0.0:${listener_http_port}|" \ + -e "s|storage_backend = bitcask|storage_backend = multi|" \ + /etc/riak/riak.conf +RUN echo "buckets.default.allow_mult = true" >>/etc/riak/riak.conf +RUN echo "buckets.default.merge_strategy = 2" >>/etc/riak/riak.conf + +RUN sed -i \ + -e "s|]\\.|, \ + {riak_kv, [ \ + {multi_backend, \ + [{be_default,riak_kv_eleveldb_backend, \ + [{max_open_files,20}]}, \ + {be_blocks,riak_kv_bitcask_backend, \ + []}]}, \ + {multi_backend_default,be_default}, \ + {multi_backend_prefix_list,[{<<\"0b:\">>,be_blocks}]}, \ + {storage_backend,riak_kv_multi_backend} \ + ]} \ + ].|" \ + /etc/riak/advanced.config + +EXPOSE ${listener_pb_port} ${listener_http_port} + +RUN echo "riak soft nofile 65536" >>/etc/security/limits.conf +RUN echo "riak hard nofile 65536" >>/etc/security/limits.conf + +CMD /usr/lib64/riak/bin/riak foreground From 31a3039bf165606154cf78e8c2cf5ca657b9f0ce Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 2 Jun 2021 20:30:06 +0300 Subject: [PATCH 129/831] bump riak_repl_pb_api --- rebar.config | 2 +- rebar.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rebar.config b/rebar.config index b2af9c529..464f35001 100644 --- a/rebar.config +++ b/rebar.config @@ -28,7 +28,7 @@ , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "riak_kv-3.0.2"}}} , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "riak_kv-3.0.3"}}} + , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "riak_kv-3.0.5"}}} , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "riak_kv-3.0.2"}}} , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} ] diff --git a/rebar.lock b/rebar.lock index 913cf67be..5d01a2ab1 100644 --- a/rebar.lock +++ b/rebar.lock @@ -41,11 +41,11 @@ 0}, {<<"riak_pb">>, {git,"git://github.com/basho/riak_pb.git", - {ref,"b8a946426e0254abba2015f9b5c1a9db4e2405bc"}}, + {ref,"6dbf0fb30f126721b5cea6d298f0023dc986d01f"}}, 1}, {<<"riak_repl_pb_api">>, {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", - {ref,"8e5de11e1404382f5a6986aad0d4057c5c89d4cf"}}, + {ref,"c85a3db7272e8cf8fa3147fa744cea5d2dd33029"}}, 0}, {<<"riakc">>, {git,"git://github.com/basho/riak-erlang-client", From 74469cd48e92ced2831b00ff0361cc3fa9ab8f6f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 4 Jun 2021 19:35:09 +0300 Subject: [PATCH 130/831] issue a warning when get_cluster_id fails --- apps/riak_cs/src/riak_cs_pbc.erl | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/riak_cs/src/riak_cs_pbc.erl b/apps/riak_cs/src/riak_cs_pbc.erl index 218c6c206..4ab0bb36b 100644 --- a/apps/riak_cs/src/riak_cs_pbc.erl +++ b/apps/riak_cs/src/riak_cs_pbc.erl @@ -193,6 +193,7 @@ get_cluster_id_sans_stats(Pbc) -> try riak_repl_pb_api:get_clusterid(Pbc, Timeout) catch C:R -> + lager:warning("failed to get cluster_id from riak: ~p:~p", [C, R]), %% Disable `proxy_get' so we do not repeatedly have to %% handle this same exception. This would happen if an OSS %% install has `proxy_get' enabled. From 494ff1a25674a349b00a940ce4f33b290de292cd Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 10 Jun 2021 16:23:24 +0300 Subject: [PATCH 131/831] warn when we can't extract bucket from (bogus) AWS host --- apps/riak_cs/src/riak_cs_s3_rewrite.erl | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/riak_cs_s3_rewrite.erl index 76a30885d..011002e19 100644 --- a/apps/riak_cs/src/riak_cs_s3_rewrite.erl +++ b/apps/riak_cs/src/riak_cs_s3_rewrite.erl @@ -173,6 +173,7 @@ extract_bucket_from_host(Host, RootHost) -> M1 end; _ -> + lager:warning("request domain not matching \"*.s3.*.amazonaws.com\": ~s", [Host]), undefined end. From 9a3ed7292ae85a5cabc4c443133b3db226677a0f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 11 Jun 2021 23:36:04 +0300 Subject: [PATCH 132/831] pre-create log dir when doing a release riak-cs start doesn't seem to take effect on first run without it --- rebar.config | 1 + 1 file changed, 1 insertion(+) diff --git a/rebar.config b/rebar.config index 464f35001..8b9ffeb5a 100644 --- a/rebar.config +++ b/rebar.config @@ -49,6 +49,7 @@ , {copy, "rel/files/key.pem", "etc"} , {copy, "rel/files/app_epath.sh", "lib"} , {mkdir, "priv/tools/internal"} + , {mkdir, "log"} , {copy, "rel/tools/repair_gc_bucket.erl", "priv/tools"} , {copy, "rel/tools/internal/README.md", "priv/tools/internal"} , {copy, "rel/tools/internal/block_audit.erl", "priv/tools/internal"} From 28e689781fcc4c816634bced695b4b622558e5b5 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 13 Jun 2021 19:05:26 +0300 Subject: [PATCH 133/831] fix up c86e2a8104 --- apps/riak_cs/src/riak_cs_s3_rewrite.erl | 32 +++++++++++++++---------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/riak_cs_s3_rewrite.erl index 011002e19..3f8a47cfd 100644 --- a/apps/riak_cs/src/riak_cs_s3_rewrite.erl +++ b/apps/riak_cs/src/riak_cs_s3_rewrite.erl @@ -162,19 +162,27 @@ bucket_from_host(HostHeader, RootHost) -> extract_bucket_from_host(Host, RootHost) -> %% Take the substring of the everything up to %% the '.' preceding the root host - case re:run(Host, "(.+)\.(s3\.(?:(?:[a-z0-9-])+\.)?amazonaws\.com)", - [{capture, all_but_first, list}]) of - {match, [M1, M2]} -> - if RootHost == M2 -> - M1; - el/=se -> - lager:warning("accepting request sent to a (legitimate) AWS host" - " \"~s\" not matching cs_root_host (\"~s\")", [Host, RootHost]), - M1 - end; + Bucket = + case re:run(Host, "(.+\.|)(s3\.(?:(?:[a-z0-9-])+\.)?amazonaws\.com)", + [{capture, all_but_first, list}]) of + {match, [M1, M2]} -> + if RootHost == M2 -> + M1; + el/=se -> + lager:warning("accepting request sent to a (legitimate) AWS host" + " \"~s\" not matching cs_root_host (\"~s\")", [Host, RootHost]), + M1 + end; + _ -> + undefined + end, + case Bucket of + [] -> + undefined; + undefined -> + undefined; _ -> - lager:warning("request domain not matching \"*.s3.*.amazonaws.com\": ~s", [Host]), - undefined + lists:droplast(Bucket) end. %% @doc Separate the bucket name from the rest of the raw path in the From 8840a1914043512ce9b64cf10e1f474d0611b646 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 14 Jun 2021 21:05:47 +0300 Subject: [PATCH 134/831] remove unused bits in rebar.config --- rebar.config | 5 ----- 1 file changed, 5 deletions(-) diff --git a/rebar.config b/rebar.config index 8b9ffeb5a..d47987eff 100644 --- a/rebar.config +++ b/rebar.config @@ -115,8 +115,3 @@ }. {dialyzer, [{plt_apps, all_deps}]}. - -%% {client_test, [ -%% {test_paths, ["client_tests/erlang"]}, -%% {test_output, ".client_test"} -%% ]}. From abe7fa8853f20ff258f0d986873f87522420b2a5 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 14 Jun 2021 21:06:26 +0300 Subject: [PATCH 135/831] don't export_all in tools/internal/offline_delete --- rel/tools/internal/offline_delete.erl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rel/tools/internal/offline_delete.erl b/rel/tools/internal/offline_delete.erl index 71027cf2e..9c3c32ab4 100755 --- a/rel/tools/internal/offline_delete.erl +++ b/rel/tools/internal/offline_delete.erl @@ -30,7 +30,8 @@ -module(offline_delete). --compile(export_all). +-export([main/1]). + -mode(compile). options() -> From f953851d3f2f6f153780e4486786ba428498c2b3 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 18 Jun 2021 00:33:24 +0300 Subject: [PATCH 136/831] follow current lager specs --- rel/tools/internal/block_audit.erl | 2 +- rel/tools/internal/ensure_orphan_blocks.erl | 2 +- rel/tools/repair_gc_bucket.erl | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rel/tools/internal/block_audit.erl b/rel/tools/internal/block_audit.erl index 3a391e533..93e2aab82 100755 --- a/rel/tools/internal/block_audit.erl +++ b/rel/tools/internal/block_audit.erl @@ -35,7 +35,7 @@ main(Args) -> _ = application:load(lager), - ok = application:set_env(lager, handlers, [{lager_console_backend, info}]), + ok = application:set_env(lager, handlers, [{lager_console_backend, [{level, info}]}]), ok = lager:start(), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of diff --git a/rel/tools/internal/ensure_orphan_blocks.erl b/rel/tools/internal/ensure_orphan_blocks.erl index c59b7a716..b5b149951 100755 --- a/rel/tools/internal/ensure_orphan_blocks.erl +++ b/rel/tools/internal/ensure_orphan_blocks.erl @@ -32,7 +32,7 @@ main(Args) -> _ = application:load(lager), - ok = application:set_env(lager, handlers, [{lager_console_backend, info}]), + ok = application:set_env(lager, handlers, [{lager_console_backend, [{level, info}]}]), ok = lager:start(), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of diff --git a/rel/tools/repair_gc_bucket.erl b/rel/tools/repair_gc_bucket.erl index 381604dc1..720bb37c7 100755 --- a/rel/tools/repair_gc_bucket.erl +++ b/rel/tools/repair_gc_bucket.erl @@ -54,7 +54,7 @@ main(Args) -> _ = application:load(lager), - ok = application:set_env(lager, handlers, [{lager_console_backend, info}]), + ok = application:set_env(lager, handlers, [{lager_console_backend, [{level, info}]}]), ok = lager:start(), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of From 86a214683f7ed87588031bdb000ced5cf610dbc7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 28 Jun 2021 20:24:38 +0300 Subject: [PATCH 137/831] export riak_cs_kv_multi_backend:head/3 --- apps/riak_cs/src/riak_cs_kv_multi_backend.erl | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/apps/riak_cs/src/riak_cs_kv_multi_backend.erl b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl index 9b8939e18..040957171 100644 --- a/apps/riak_cs/src/riak_cs_kv_multi_backend.erl +++ b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl @@ -86,6 +86,7 @@ fold_buckets/4, fold_keys/4, fold_objects/4, + head/3, is_empty/1, data_size/1, status/1, @@ -232,6 +233,23 @@ stop(#state{backends=Backends}) -> _ = [Module:stop(SubState) || {_, Module, SubState} <- Backends], ok. +%% @doc Do everything get/3 does, without actually fetching the object +-spec head(riak_object:bucket(), riak_object:key(), state()) -> + {ok, any(), state()} | + {ok, not_found, state()} | + {error, term(), state()}. +head(Bucket, Key, State) -> + {Name, Mod, SubState} = get_backend(Bucket, State), + case Mod:head(Bucket, Key, SubState) of + {ok, Value, NewSubState} -> + NewState = update_backend_state(Name, Mod, NewSubState, State), + {ok, Value, NewState}; + {error, Reason, NewSubState} -> + NewState = update_backend_state(Name, Mod, NewSubState, State), + {error, Reason, NewState} + end. + + %% @doc Retrieve an object from the backend -spec get(riak_object:bucket(), riak_object:key(), state()) -> {ok, any(), state()} | From 360f22c55578f9aa037abf189a489abc9d5dee9d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 6 Jul 2021 20:18:50 +0300 Subject: [PATCH 138/831] extract storage class --- apps/riak_cs/src/riak_cs_wm_utils.erl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index acf4253d1..d57275150 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -625,7 +625,6 @@ extract_amazon_headers(Headers) -> %% @doc Extract user metadata from request header %% Expires, Content-Disposition, Content-Encoding, Cache-Control and x-amz-meta-* %% TODO: pass in x-amz-server-side-encryption? -%% TODO: pass in x-amz-storage-class? %% TODO: pass in x-amz-grant-* headers? -spec extract_user_metadata(#wm_reqdata{}) -> proplists:proplist(). extract_user_metadata(RD) -> @@ -656,6 +655,9 @@ extract_user_metadata([{Name, Value} | Headers], Acc) when is_list(Name) -> "x-amz-meta" ++ _ -> extract_user_metadata( Headers, [{LowerName, unicode:characters_to_list(Value, utf8)} | Acc]); + "x-amz-storage-class" -> + extract_user_metadata( + Headers, [{LowerName, unicode:characters_to_list(Value, utf8)} | Acc]); _ -> extract_user_metadata(Headers, Acc) end; From 5e16f159dcd0ac8874e291f707e5a0a7aab7b6d0 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Jul 2021 15:24:55 +0300 Subject: [PATCH 139/831] dialyzer fixes part 1/n --- apps/riak_cs/include/riak_cs.hrl | 16 ++--- apps/riak_cs/include/riak_cs_gc.hrl | 10 ++-- apps/riak_cs/src/exprec.erl | 58 +++++++++++++++++++ .../src/riak_cs_access_log_handler.erl | 10 ++-- apps/riak_cs/src/riak_cs_block_server.erl | 2 +- apps/riak_cs/src/riak_cs_bucket.erl | 2 - apps/riak_cs/src/riak_cs_delete_fsm.erl | 2 +- apps/riak_cs/src/riak_cs_diags.erl | 8 +++ apps/riak_cs/src/riak_cs_get_fsm.erl | 24 ++++---- apps/riak_cs/src/riak_cs_put_fsm.erl | 10 ++-- apps/riak_cs/src/riak_cs_sup.erl | 11 ++-- 11 files changed, 109 insertions(+), 44 deletions(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index ae8aa2645..d3f5fc6cf 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -69,25 +69,25 @@ last_action :: created | deleted, creation_date :: string(), modification_time :: erlang:timestamp(), - acl :: acl()}). + acl :: undefined | acl()}). -type cs_bucket() :: #moss_bucket_v1{}. -type bucket_operation() :: create | delete | update_acl | update_policy | delete_policy. -type bucket_action() :: created | deleted. --record(context, {start_time :: erlang:timestamp(), +-record(context, {start_time :: undefined | erlang:timestamp(), auth_bypass :: atom(), user :: undefined | moss_user(), - user_object :: riakc_obj:riakc_obj(), - bucket :: binary(), + user_object :: undefined | riakc_obj:riakc_obj(), + bucket :: undefined | binary(), acl :: 'undefined' | acl(), - requested_perm :: acl_perm(), - riak_client :: riak_client(), + requested_perm :: undefined | acl_perm(), + riak_client :: undefined | riak_client(), rc_pool :: atom(), % pool name which riak_client belongs to auto_rc_close = true :: boolean(), submodule :: atom(), - exports_fun :: function(), + exports_fun :: undefined | function(), auth_module :: atom(), response_module :: atom(), policy_module :: atom(), @@ -186,7 +186,7 @@ %% was written. Needed if the user %% ever changes the block size after writing %% data - block_size :: integer(), + block_size :: undefined | integer(), %% identifying properties %% ----------------------------------------------------------------- diff --git a/apps/riak_cs/include/riak_cs_gc.hrl b/apps/riak_cs/include/riak_cs_gc.hrl index 8e0bfb0e0..9f723de30 100644 --- a/apps/riak_cs/include/riak_cs_gc.hrl +++ b/apps/riak_cs/include/riak_cs_gc.hrl @@ -55,9 +55,9 @@ %% Riak connection pid riak_client :: undefined | riak_client(), bag_id :: bag_id(), - current_files :: [lfs_manifest()], - current_fileset :: twop_set:twop_set(), - current_riak_object :: riakc_obj:riakc_obj(), + current_files = [] :: [lfs_manifest()], + current_fileset = twop_set:new() :: twop_set:twop_set(), + current_riak_object :: undefined | riakc_obj:riakc_obj(), %% Count of filesets collected successfully batch_count=0 :: non_neg_integer(), %% Count of filesets skipped in this batch @@ -65,7 +65,7 @@ batch=[] :: undefined | [binary()], % `undefined' only for testing manif_count=0 :: non_neg_integer(), block_count=0 :: non_neg_integer(), - delete_fsm_pid :: pid() + delete_fsm_pid :: undefined | pid() }). -record(gc_key_list_state, { @@ -105,6 +105,6 @@ batch_history = [] :: list(#gc_batch_state{}), current_batch :: undefined | #gc_batch_state{}, interval = ?DEFAULT_GC_INTERVAL:: non_neg_integer() | infinity, - initial_delay :: non_neg_integer(), + initial_delay :: undefined | non_neg_integer(), timer_ref :: undefined | reference() }). diff --git a/apps/riak_cs/src/exprec.erl b/apps/riak_cs/src/exprec.erl index 64ce7e4aa..5fe7f1d01 100644 --- a/apps/riak_cs/src/exprec.erl +++ b/apps/riak_cs/src/exprec.erl @@ -5,6 +5,64 @@ -compile(export_all). -compile(nowarn_export_all). +-dialyzer([ {nowarn_function, fromlist_access_v1/1} + , {nowarn_function, fromlist_context/1} + , {nowarn_function, fromlist_key_context/1} + , {nowarn_function, fromlist_lfs_manifest_v2/1} + , {nowarn_function, fromlist_lfs_manifest_v3/1} + , {nowarn_function, fromlist_moss_bucket/1} + , {nowarn_function, fromlist_moss_bucket_v1/1} + , {nowarn_function, fromlist_moss_user/1} + , {nowarn_function, fromlist_moss_user_v1/1} + , {nowarn_function, fromlist_multipart_descr_v1/1} + , {nowarn_function, fromlist_multipart_manifest_v1/1} + , {nowarn_function, fromlist_part_descr_v1/1} + , {nowarn_function, fromlist_part_manifest_v1/1} + , {nowarn_function, fromlist_rcs_user_v2/1} + , {nowarn_function, frommap_access_v1/1} + , {nowarn_function, frommap_context/1} + , {nowarn_function, frommap_key_context/1} + , {nowarn_function, frommap_lfs_manifest_v2/1} + , {nowarn_function, frommap_lfs_manifest_v3/1} + , {nowarn_function, frommap_moss_bucket/1} + , {nowarn_function, frommap_moss_bucket_v1/1} + , {nowarn_function, frommap_moss_user/1} + , {nowarn_function, frommap_moss_user_v1/1} + , {nowarn_function, frommap_multipart_descr_v1/1} + , {nowarn_function, frommap_multipart_manifest_v1/1} + , {nowarn_function, frommap_part_descr_v1/1} + , {nowarn_function, frommap_part_manifest_v1/1} + , {nowarn_function, frommap_rcs_user_v2/1} + , {nowarn_function, new_access_v1/1} + , {nowarn_function, new_context/1} + , {nowarn_function, new_key_context/1} + , {nowarn_function, new_lfs_manifest_v2/1} + , {nowarn_function, new_lfs_manifest_v3/1} + , {nowarn_function, new_moss_bucket/1} + , {nowarn_function, new_moss_bucket_v1/1} + , {nowarn_function, new_moss_user/1} + , {nowarn_function, new_moss_user_v1/1} + , {nowarn_function, new_multipart_descr_v1/1} + , {nowarn_function, new_multipart_manifest_v1/1} + , {nowarn_function, new_part_descr_v1/1} + , {nowarn_function, new_part_manifest_v1/1} + , {nowarn_function, new_rcs_user_v2/1} + , {nowarn_function, new_access_v1/0} + , {nowarn_function, new_context/0} + , {nowarn_function, new_key_context/0} + , {nowarn_function, new_lfs_manifest_v2/0} + , {nowarn_function, new_lfs_manifest_v3/0} + , {nowarn_function, new_moss_bucket/0} + , {nowarn_function, new_moss_bucket_v1/0} + , {nowarn_function, new_moss_user/0} + , {nowarn_function, new_moss_user_v1/0} + , {nowarn_function, new_multipart_descr_v1/0} + , {nowarn_function, new_multipart_manifest_v1/0} + , {nowarn_function, new_part_descr_v1/0} + , {nowarn_function, new_part_manifest_v1/0} + , {nowarn_function, new_rcs_user_v2/0} + ]). + -define(ALL_RECORDS, [ moss_user , moss_user_v1 diff --git a/apps/riak_cs/src/riak_cs_access_log_handler.erl b/apps/riak_cs/src/riak_cs_access_log_handler.erl index 258c484d3..d0eac26ae 100644 --- a/apps/riak_cs/src/riak_cs_access_log_handler.erl +++ b/apps/riak_cs/src/riak_cs_access_log_handler.erl @@ -85,8 +85,8 @@ size :: integer(), %% num. accesses since last archival current :: {calendar:datetime(), calendar:datetime()}, %% current agg. slice - archive :: reference(), %% reference for archive msg - table :: ets:tid() %% the table aggregating stats + archive :: undefined | reference(), %% reference for archive msg + table :: ets:tid() %% the table aggregating stats }). -type state() :: #state{}. @@ -168,10 +168,12 @@ init(_) -> %% webmachine/mochiweb will just ignore the failed %% startup; using init:stop/0 here so that the user isn't %% suprised later when there are no logs - init:stop(); + init:stop(), + {error, doesnt_matter_as_node_is_going_down}; {_, {error, Reason}} -> _ = lager:error("Error starting access logger: ~s", [Reason]), - init:stop() + init:stop(), + {error, doesnt_matter_as_node_is_going_down} end. %% @private diff --git a/apps/riak_cs/src/riak_cs_block_server.erl b/apps/riak_cs/src/riak_cs_block_server.erl index 07d71b4f3..87e680cc9 100644 --- a/apps/riak_cs/src/riak_cs_block_server.erl +++ b/apps/riak_cs/src/riak_cs_block_server.erl @@ -50,7 +50,7 @@ code_change/3, format_status/2]). --record(state, {riak_client :: riak_client(), +-record(state, {riak_client :: undefined | riak_client(), close_riak_connection=true :: boolean(), bag_id :: bag_id()}). diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index 9238f8230..bb5ab281e 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -699,8 +699,6 @@ serialized_bucket_op(Bucket, BagId, ACL, User, UserObj, BucketOp, StatsKey, RcPi ok -> BucketRecord = bucket_record(Bucket, BucketOp), case update_user_buckets(User, BucketRecord) of - {ok, ignore} when BucketOp == update_acl -> - OpResult; {ok, ignore} -> OpResult; {ok, UpdUser} -> diff --git a/apps/riak_cs/src/riak_cs_delete_fsm.erl b/apps/riak_cs/src/riak_cs_delete_fsm.erl index 7e825c82a..a9337f472 100644 --- a/apps/riak_cs/src/riak_cs_delete_fsm.erl +++ b/apps/riak_cs/src/riak_cs_delete_fsm.erl @@ -58,7 +58,7 @@ %% For active deletion, not used. %% Set only once at init and unchanged. Used only for logs. gc_key :: binary(), - delete_blocks_remaining :: ordsets:ordset({binary(), integer()}), + delete_blocks_remaining :: undefined | ordsets:ordset({binary(), integer()}), unacked_deletes=ordsets:new() :: ordsets:ordset(integer()), all_delete_workers=[] :: list(pid()), free_deleters = ordsets:new() :: ordsets:ordset(pid()), diff --git a/apps/riak_cs/src/riak_cs_diags.erl b/apps/riak_cs/src/riak_cs_diags.erl index c9e7cf6be..7a5b317ec 100644 --- a/apps/riak_cs/src/riak_cs_diags.erl +++ b/apps/riak_cs/src/riak_cs_diags.erl @@ -1,6 +1,14 @@ -module(riak_cs_diags). -behaviour(gen_server). +-dialyzer([ {nowarn_function, pr/1} + , {nowarn_function, pr/2} + , {nowarn_function, rec_to_proplist/1} + , {nowarn_function, print_field/2} + , {nowarn_function, spaces/1} + , {nowarn_function, print_multipart_manifest/2} + ]). + -include("riak_cs.hrl"). %% API diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl index 4b9c86015..852505a9c 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm.erl @@ -69,9 +69,9 @@ -type block_queue() :: queue:queue(). --record(state, {from :: {pid(), reference()}, +-record(state, {from :: undefined | {pid(), reference()}, riak_client :: riak_client(), - mani_fsm_pid :: pid(), + mani_fsm_pid :: undefined | pid(), bucket :: term(), caller :: reference(), key :: term(), @@ -79,17 +79,17 @@ buffer_factor :: pos_integer(), got_blocks=orddict:new() :: orddict:orddict(), manifest :: term(), - blocks_order :: [block_name()], - blocks_intransit=queue:new() :: block_queue(), - test=false :: boolean(), - total_blocks :: pos_integer(), + blocks_order = [] :: [block_name()], + blocks_intransit = queue:new() :: block_queue(), + test = false :: boolean(), + total_blocks :: undefined | pos_integer(), num_sent=0 :: non_neg_integer(), - initial_block :: block_name(), - final_block :: block_name(), - skip_bytes_initial :: non_neg_integer(), - keep_bytes_final :: non_neg_integer(), - free_readers :: [pid()], - all_reader_pids :: [pid()]}). + initial_block :: undefined | block_name(), + final_block :: undefined | block_name(), + skip_bytes_initial = 0 :: non_neg_integer(), + keep_bytes_final = 0 :: non_neg_integer(), + free_readers :: undefined | [pid()], + all_reader_pids :: undefined | [pid()]}). -type state() :: #state{}. %% =================================================================== diff --git a/apps/riak_cs/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl index 9fc21c3cf..35bfcc5d7 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm.erl @@ -58,23 +58,23 @@ block_size :: pos_integer(), caller :: reference(), uuid :: binary(), - md5 :: crypto_context() | digest(), + md5 :: undefined | crypto_context() | digest(), reported_md5 :: undefined | string(), - reply_pid :: {pid(), reference()}, + reply_pid :: undefined | {pid(), reference()}, riak_client :: riak_client(), mani_pid :: undefined | pid(), make_new_manifest_p :: boolean(), bag_id :: bag_id(), - timer_ref :: reference(), + timer_ref :: undefined | reference(), bucket :: binary(), key :: binary(), metadata :: term(), acl :: acl(), - manifest :: lfs_manifest(), + manifest :: undefined | lfs_manifest(), content_length :: non_neg_integer(), content_type :: binary(), num_bytes_received=0 :: non_neg_integer(), - max_buffer_size :: non_neg_integer(), + max_buffer_size :: undefined | non_neg_integer(), current_buffer_size=0 :: non_neg_integer(), buffer_queue=[] :: [binary()], %% not actually a queue, but we treat it like one remainder_data :: undefined | binary(), diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index 54c1af596..4d8f5083d 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -53,9 +53,7 @@ start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). %% @doc supervisor callback. --spec init([]) -> {ok, {{supervisor:strategy(), - non_neg_integer(), - non_neg_integer()}, +-spec init([]) -> {ok, {supervisor:sup_flags(), [supervisor:child_spec()]}}. init([]) -> catch dyntrace:p(), % NIF load trigger (R15B01+) @@ -63,9 +61,10 @@ init([]) -> Options = [get_option_val(Option) || Option <- ?OPTIONS], PoolSpecs = pool_specs(Options), application:set_env(webmachine, rewrite_module, proplists:get_value(rewrite_module, Options)), - {ok, { {one_for_one, 10, 10}, PoolSpecs ++ - process_specs() ++ - web_specs(Options)}}. + {ok, {#{strategy => one_for_one, + intensity => 10, + period => 10}, + PoolSpecs ++ process_specs() ++ web_specs(Options)}}. -spec process_specs() -> [supervisor:child_spec()]. process_specs() -> From b074cb12cc8686a7def03c13639b6e1296a3f6a4 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Jul 2021 15:25:57 +0300 Subject: [PATCH 140/831] fix riak_cs.schema path and version in cuttlefish eunit tests --- apps/riak_cs/test/riak_cs_config_test.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/test/riak_cs_config_test.erl b/apps/riak_cs/test/riak_cs_config_test.erl index 67ef9541f..e125aa053 100644 --- a/apps/riak_cs/test/riak_cs_config_test.erl +++ b/apps/riak_cs/test/riak_cs_config_test.erl @@ -17,7 +17,7 @@ default_config_test() -> cuttlefish_unit:assert_not_configured(Config, "riak_cs.admin_ip"), cuttlefish_unit:assert_not_configured(Config, "riak_cs.admin_port"), cuttlefish_unit:assert_config(Config, "riak_cs.cs_root_host", "s3.amazonaws.com"), - cuttlefish_unit:assert_config(Config, "riak_cs.cs_version", 10300), + cuttlefish_unit:assert_config(Config, "riak_cs.cs_version", 030000), cuttlefish_unit:assert_config(Config, "riak_cs.proxy_get", false), cuttlefish_unit:assert_not_configured(Config, "riak_cs.rewrite_module"), cuttlefish_unit:assert_not_configured(Config, "riak_cs.auth_module"), @@ -220,7 +220,7 @@ supercluster_weight_refresh_interval_test_() -> ]. schema_files() -> - ["apps/riak_cs/priv/riak_cs.schema"]. + ["priv/riak_cs.schema"]. context() -> {ok, Context} = file:consult("rel/vars.config"), From 944e09d58165610c4bc236f57912e252c3690bab Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Jul 2021 15:26:47 +0300 Subject: [PATCH 141/831] stray file checked in --- rel/vars/1_vars.config | 55 ------------------------------------------ 1 file changed, 55 deletions(-) delete mode 100644 rel/vars/1_vars.config diff --git a/rel/vars/1_vars.config b/rel/vars/1_vars.config deleted file mode 100644 index 6913cde6a..000000000 --- a/rel/vars/1_vars.config +++ /dev/null @@ -1,55 +0,0 @@ -%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- -%% ex: ts=4 sw=4 et - -{devrel, true}. - -%% Platform-specific installation paths -{platform_bin_dir, "./bin"}. -{platform_data_dir, "./data"}. -{platform_etc_dir, "./etc"}. -{platform_lib_dir, "./lib"}. -{platform_log_dir, "./log"}. - -%% -%% etc/app.config -%% -{cs_ip, "127.0.0.1"}. -{cs_port, 15018}. -{admin_ip, "127.0.0.1"}. -{admin_port, 15019}. -{riak_ip, "127.0.0.1"}. -{riak_pb_port, 10017}. -{auth_bypass, false}. -{admin_key, "admin-key"}. -{stanchion_ip, "127.0.0.1"}. -{stanchion_port, 8085}. -{stanchion_ssl, off}. -{cs_version, 010300}. -{rewrite_module, riak_cs_s3_rewrite}. -{auth_module, riak_cs_s3_auth}. - -%% -%% etc/vm.args -%% -{node, "rcs-dev1@127.0.0.1"}. -{crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. - -%% -%% bin/riak_cs -%% -{data_dir, "{{target_dir}}/data"}. -{runner_script_dir, "\`cd \\`dirname $0\\` && /bin/pwd\`"}. -{runner_base_dir, "{{runner_script_dir}}/.."}. -{runner_etc_dir, "$RUNNER_BASE_DIR/etc"}. -{runner_log_dir, "$RUNNER_BASE_DIR/log"}. -{runner_lib_dir, "$RUNNER_BASE_DIR/lib"}. -{runner_patch_dir, "$RUNNER_BASE_DIR/lib/basho-patches"}. -{pipe_dir, "/tmp/$RUNNER_BASE_DIR/"}. -{runner_user, ""}. -{runner_wait_process, "riak_cs_put_fsm_sup"}. - -%% -%% cuttlefish -%% -{cuttlefish, "on"}. -{cuttlefish_conf, "riak-cs.conf"}. From b25921b817eddaf162964acd312da485cb1b1789 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 8 Jul 2021 17:19:54 +0300 Subject: [PATCH 142/831] correct list_objects_fsm_v2:waiting_object_list specs & straighten up flow --- apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl index 79d81be0e..3cb099f80 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl @@ -99,7 +99,7 @@ -type continuation() :: binary() | 'undefined'. -type list_objects_event() :: {ReqID :: reference(), {done, continuation()}} | - {ReqID :: reference(), {objects, list()}} | + {ReqID :: reference(), {ok, list()}} | {ReqID :: reference(), {error, term()}}. %% `Start' and `End' are inclusive @@ -145,12 +145,9 @@ prepare(timeout, State=#state{riak_client=RcPid}) -> end. -spec waiting_object_list(list_objects_event(), state()) -> fsm_state_return(). -waiting_object_list({ReqId, {ok, _}=Objs}, State) -> - waiting_object_list({ReqId, [Objs, undefined]}, State); -waiting_object_list({ReqId, [{ok, ObjectList} | _]}, - State=#state{object_list_req_id=ReqId, - object_buffer=ObjectBuffer}) -> - NewStateData = State#state{object_buffer=ObjectBuffer ++ ObjectList}, +waiting_object_list({ReqId, {ok, ObjectList}}, State = #state{object_list_req_id = ReqId, + object_buffer = ObjectBuffer}) -> + NewStateData = State#state{object_buffer = ObjectBuffer ++ ObjectList}, {next_state, waiting_object_list, NewStateData}; waiting_object_list({ReqId, {done, _Continuation}}, State=#state{object_list_req_id=ReqId}) -> handle_done(State); From 1a591890e357923fd2da8c85a71d967508f79e06 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 8 Jul 2021 17:42:47 +0300 Subject: [PATCH 143/831] express S3_XMLNS attribute as string (not as atom) --- apps/riak_cs/include/riak_cs.hrl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index d3f5fc6cf..c5734e58f 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -398,7 +398,7 @@ -define(DEFAULT_MAX_CONTENT_LENGTH, 5368709120). %% 5 GB -define(DEFAULT_LFS_BLOCK_SIZE, 1048576).%% 1 MB -define(XML_PROLOG, ""). --define(S3_XMLNS, 'http://s3.amazonaws.com/doc/2006-03-01/'). +-define(S3_XMLNS, "http://s3.amazonaws.com/doc/2006-03-01/"). -define(DEFAULT_STANCHION_IP, "127.0.0.1"). -define(DEFAULT_STANCHION_PORT, 8085). -define(DEFAULT_STANCHION_SSL, true). From 7d9b64614474c102bc142974cba0716a5899166c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 8 Jul 2021 19:29:32 +0300 Subject: [PATCH 144/831] fix specs around crypto calls --- apps/riak_cs/include/riak_cs.hrl | 4 ---- apps/riak_cs/src/riak_cs_put_fsm.erl | 6 +++--- apps/riak_cs/src/riak_cs_utils.erl | 6 +++--- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index c5734e58f..24d920be2 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -504,10 +504,6 @@ -type policy() :: riak_cs_s3_policy:policy1(). -%% just to persuade dyalizer --type crypto_context() :: {'md4' | 'md5' | 'ripemd160' | 'sha' | - 'sha224' | 'sha256' | 'sha384' | 'sha512', - binary()}. -type digest() :: binary(). -define(USERMETA_BUCKET, "RCS-bucket"). diff --git a/apps/riak_cs/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl index 35bfcc5d7..e0d3557ff 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm.erl @@ -58,7 +58,7 @@ block_size :: pos_integer(), caller :: reference(), uuid :: binary(), - md5 :: undefined | crypto_context() | digest(), + md5 :: crypto:hash_state() | digest(), reported_md5 :: undefined | string(), reply_pid :: undefined | {pid(), reference()}, riak_client :: riak_client(), @@ -158,6 +158,7 @@ init({{Bucket, Key, ContentLength, ContentType, %% live. CallerRef = erlang:monitor(process, Caller), + Md5 = riak_cs_utils:md5_init(), UUID = uuid:get_v4(), BagId = case BagId0 of undefined -> @@ -167,6 +168,7 @@ init({{Bucket, Key, ContentLength, ContentType, end, {ok, prepare, #state{bucket=Bucket, key=Key, + md5=Md5, block_size=BlockSize, caller=CallerRef, uuid=UUID, @@ -424,7 +426,6 @@ prepare(State=#state{bucket=Bucket, BagId), NewManifest = Manifest?MANIFEST{write_start_time=os:timestamp()}, - Md5 = riak_cs_utils:md5_init(), WriterPids = case ContentLength of 0 -> %% Don't start any writers @@ -448,7 +449,6 @@ prepare(State=#state{bucket=Bucket, TRef = erlang:send_after(60000, self(), save_manifest), ok = maybe_add_new_manifest(ManiPid, NewManifest), State#state{manifest=NewManifest, - md5=Md5, timer_ref=TRef, mani_pid=ManiPid, max_buffer_size=MaxBufferSize, diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index e2f0c8bb7..7924ccb39 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -224,16 +224,16 @@ md5(IOData) -> -define(MAX_UPDATE_SIZE, (32*1024)). --spec md5_init() -> crypto_context(). +-spec md5_init() -> crypto:hash_state(). md5_init() -> crypto:hash_init(md5). --spec md5_update(crypto_context(), binary()) -> crypto_context(). +-spec md5_update(crypto:hash_state(), binary()) -> crypto:hash_state(). md5_update(Ctx, Bin) when size(Bin) =< ?MAX_UPDATE_SIZE -> crypto:hash_update(Ctx, Bin); md5_update(Ctx, <>) -> md5_update(crypto:hash_update(Ctx, Part), Rest). --spec md5_final(crypto_context()) -> digest(). +-spec md5_final(crypto:hash_state()) -> digest(). md5_final(Ctx) -> crypto:hash_final(Ctx). -spec active_manifest_from_response({ok, orddict:orddict()} | From 8124317d0f1fb0564ce099e9236032df20b53a2a Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 8 Jul 2021 19:41:44 +0300 Subject: [PATCH 145/831] misuse of undefined spotted by dialyzer --- apps/riak_cs/include/riak_cs.hrl | 2 +- apps/riak_cs/src/riak_cs_wm_object_acl.erl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index 24d920be2..ee9566604 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -267,7 +267,7 @@ %% The ACL for the version of the object represented %% by this manifest. - acl :: acl() | no_acl_yet, + acl = no_acl_yet :: acl() | no_acl_yet, %% There are a couple of cases where we want to add record %% member'ish data without adding new members to the record, diff --git a/apps/riak_cs/src/riak_cs_wm_object_acl.erl b/apps/riak_cs/src/riak_cs_wm_object_acl.erl index 1cd06aa12..376f81f33 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_acl.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_acl.erl @@ -156,7 +156,7 @@ produce_body(RD, Ctx=#context{local_context=LocalCtx, riak_cs_get_fsm:stop(GetFsmPid), Acl = Mfst?MANIFEST.acl, {AclXml, DtraceTag} = case Acl of - undefined -> {riak_cs_acl_utils:empty_acl_xml(), -1}; + no_acl_yet -> {riak_cs_acl_utils:empty_acl_xml(), -1}; _ -> {riak_cs_xml:to_xml(Acl), -2} end, riak_cs_dtrace:dt_object_return(?MODULE, <<"object_acl_get">>, From fcd6b0c491ae71b303a815f2e1a70d1f3c3d3b1a Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 8 Jul 2021 20:30:12 +0300 Subject: [PATCH 146/831] write out all riak_cs_config:get_*_timeout funs, to make dilyzer happy --- apps/riak_cs/src/riak_cs_config.erl | 87 ++++++++++++++++++----------- 1 file changed, 53 insertions(+), 34 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_config.erl b/apps/riak_cs/src/riak_cs_config.erl index 92c27888a..728000cbb 100644 --- a/apps/riak_cs/src/riak_cs_config.erl +++ b/apps/riak_cs/src/riak_cs_config.erl @@ -437,49 +437,68 @@ root_host() -> %% ALL Timeouts hitting Riak %% =================================================================== --define(TIMEOUT_CONFIG_FUNC(ConfigName), - ConfigName() -> - get_env(riak_cs, ConfigName, - get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT))). - %% @doc Return the configured ping timeout. Default is 5 seconds. -spec ping_timeout() -> pos_integer(). ping_timeout() -> get_env(riak_cs, ping_timeout, ?DEFAULT_PING_TIMEOUT). %% timeouts in milliseconds -?TIMEOUT_CONFIG_FUNC(get_user_timeout). -?TIMEOUT_CONFIG_FUNC(get_bucket_timeout). -?TIMEOUT_CONFIG_FUNC(get_manifest_timeout). -?TIMEOUT_CONFIG_FUNC(get_block_timeout). - local_get_block_timeout() -> get_env(riak_cs, local_get_block_timeout, timer:seconds(5)). -?TIMEOUT_CONFIG_FUNC(proxy_get_block_timeout). -?TIMEOUT_CONFIG_FUNC(get_access_timeout). -?TIMEOUT_CONFIG_FUNC(get_gckey_timeout). -?TIMEOUT_CONFIG_FUNC(put_user_timeout). -?TIMEOUT_CONFIG_FUNC(put_manifest_timeout). -?TIMEOUT_CONFIG_FUNC(put_block_timeout). -?TIMEOUT_CONFIG_FUNC(put_access_timeout). -?TIMEOUT_CONFIG_FUNC(put_gckey_timeout). -?TIMEOUT_CONFIG_FUNC(put_user_usage_timeout). -?TIMEOUT_CONFIG_FUNC(delete_manifest_timeout). -?TIMEOUT_CONFIG_FUNC(delete_block_timeout). -?TIMEOUT_CONFIG_FUNC(delete_gckey_timeout). -?TIMEOUT_CONFIG_FUNC(list_keys_list_objects_timeout). -?TIMEOUT_CONFIG_FUNC(list_keys_list_users_timeout). -?TIMEOUT_CONFIG_FUNC(list_keys_list_buckets_timeout). -?TIMEOUT_CONFIG_FUNC(storage_calc_timeout). -?TIMEOUT_CONFIG_FUNC(list_objects_timeout). -?TIMEOUT_CONFIG_FUNC(fold_objects_timeout). -?TIMEOUT_CONFIG_FUNC(get_index_range_gckeys_timeout). -?TIMEOUT_CONFIG_FUNC(get_index_range_gckeys_call_timeout). -?TIMEOUT_CONFIG_FUNC(get_index_list_multipart_uploads_timeout). -?TIMEOUT_CONFIG_FUNC(cluster_id_timeout). - --undef(TIMEOUT_CONFIG_FUNC). +get_user_timeout() -> + get_env(riak_cs, get_user_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +get_bucket_timeout() -> + get_env(riak_cs, get_bucket_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +get_manifest_timeout() -> + get_env(riak_cs, get_manifest_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +get_block_timeout() -> + get_env(riak_cs, get_block_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). + +proxy_get_block_timeout() -> + get_env(riak_cs, proxy_get_block_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +get_access_timeout() -> + get_env(riak_cs, get_access_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +get_gckey_timeout() -> + get_env(riak_cs, get_gckey_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +put_user_timeout() -> + get_env(riak_cs, put_user_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +put_manifest_timeout() -> + get_env(riak_cs, put_manifest_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +put_block_timeout() -> + get_env(riak_cs, put_block_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +put_access_timeout() -> + get_env(riak_cs, put_access_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +put_gckey_timeout() -> + get_env(riak_cs, put_gckey_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +put_user_usage_timeout() -> + get_env(riak_cs, put_user_usage_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +delete_manifest_timeout() -> + get_env(riak_cs, delete_manifest_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +delete_block_timeout() -> + get_env(riak_cs, delete_block_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +delete_gckey_timeout() -> + get_env(riak_cs, delete_gckey_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +list_keys_list_objects_timeout() -> + get_env(riak_cs, list_keys_list_objects_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +list_keys_list_users_timeout() -> + get_env(riak_cs, list_keys_list_users_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +list_keys_list_buckets_timeout() -> + get_env(riak_cs, list_keys_list_buckets_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +storage_calc_timeout() -> + get_env(riak_cs, storage_calc_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +list_objects_timeout() -> + get_env(riak_cs, list_objects_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +fold_objects_timeout() -> + get_env(riak_cs, fold_objects_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +get_index_range_gckeys_timeout() -> + get_env(riak_cs, get_index_range_gckeys_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +get_index_range_gckeys_call_timeout() -> + get_env(riak_cs, get_index_range_gckeys_call_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +get_index_list_multipart_uploads_timeout() -> + get_env(riak_cs, get_index_list_multipart_uploads_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +cluster_id_timeout() -> + get_env(riak_cs, cluster_id_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). %% =================================================================== %% S3 config options From 3107bf046f6a579630467a6f44c9c4245e802569 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 9 Jul 2021 14:00:15 +0300 Subject: [PATCH 147/831] supply undefined in various record specs, where needed --- apps/riak_cs/include/riak_cs.hrl | 34 +++++++++---------- apps/riak_cs/include/riak_cs_gc.hrl | 2 +- apps/riak_cs/src/riak_cs_list_objects_fsm.erl | 16 ++++----- apps/riak_cs/src/riak_cs_wm_usage.erl | 14 ++++---- 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index ee9566604..370e11aa3 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -66,9 +66,9 @@ -record(moss_bucket_v1, { name :: string() | binary(), - last_action :: created | deleted, - creation_date :: string(), - modification_time :: erlang:timestamp(), + last_action :: undefined | created | deleted, + creation_date :: undefined | string(), + modification_time :: undefined | erlang:timestamp(), acl :: undefined | acl()}). -type cs_bucket() :: #moss_bucket_v1{}. @@ -107,19 +107,19 @@ api :: atom() }). --record(key_context, {manifest :: 'notfound' | lfs_manifest(), - upload_id :: 'undefined' | binary(), - part_number :: 'undefined' | integer(), - part_uuid :: 'undefined' | binary(), - get_fsm_pid :: pid(), - putctype :: string(), - bucket :: binary(), +-record(key_context, {manifest :: undefined | 'notfound' | lfs_manifest(), + upload_id :: undefined | binary(), + part_number :: undefined | integer(), + part_uuid :: undefined | binary(), + get_fsm_pid :: undefined | pid(), + putctype :: undefined | string(), + bucket :: undefined | binary(), bucket_object :: undefined | notfound | riakc_obj:riakc_obj(), - key :: list(), - owner :: 'undefined' | string(), - size :: non_neg_integer(), - content_md5 :: 'undefined' | binary(), - update_metadata=false :: boolean()}). + key :: undefined | list(), + owner :: undefined | string(), + size :: undefined | non_neg_integer(), + content_md5 :: undefined | binary(), + update_metadata = false :: boolean()}). -type acl_perm() :: 'READ' | 'WRITE' | 'READ_ACP' | 'WRITE_ACP' | 'FULL_CONTROL'. -type acl_perms() :: [acl_perm()]. @@ -235,7 +235,7 @@ %% (rather than growing) set to that the %% set is empty after the write has completed, %% which should be most of the lifespan on disk - write_blocks_remaining :: ordsets:ordset(integer()), + write_blocks_remaining :: undefined | ordsets:ordset(integer()), %% pending_delete/deleted state %% ----------------------------------------------------------------- @@ -258,7 +258,7 @@ %% See write_blocks_remaining for %% an explanation of why we chose %% a shrinking set - delete_blocks_remaining :: ordsets:ordset(integer()), + delete_blocks_remaining :: undefined | ordsets:ordset(integer()), %% the time the manifest was put %% into the scheduled_delete diff --git a/apps/riak_cs/include/riak_cs_gc.hrl b/apps/riak_cs/include/riak_cs_gc.hrl index 9f723de30..08b77afb4 100644 --- a/apps/riak_cs/include/riak_cs_gc.hrl +++ b/apps/riak_cs/include/riak_cs_gc.hrl @@ -48,7 +48,7 @@ %% Used for paginated 2I querying of GC bucket key_list_state :: undefined | gc_key_list_state(), %% Options to use when start workers - bag_id :: binary() + bag_id :: undefined | binary() }). -record(gc_worker_state, { diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl index a47a07fd9..ad469ec88 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl @@ -57,14 +57,14 @@ -record(profiling, { %% floating point secs - list_keys_start_time :: float(), - list_keys_end_time :: float(), - list_keys_num_results :: non_neg_integer(), - - temp_mr_req :: {Request :: {StartIdx :: non_neg_integer(), - EndIdx :: non_neg_integer()}, - NumKeysRequested :: non_neg_integer(), - StartTime :: float()}, + list_keys_start_time :: undefined | float(), + list_keys_end_time :: undefined | float(), + list_keys_num_results :: undefined | non_neg_integer(), + + temp_mr_req :: undefined | {Request :: {StartIdx :: non_neg_integer(), + EndIdx :: non_neg_integer()}, + NumKeysRequested :: non_neg_integer(), + StartTime :: float()}, mr_requests=[] :: [{Request :: {StartIdx :: non_neg_integer(), EndIdx :: non_neg_integer()}, NumKeysRequested :: non_neg_integer(), diff --git a/apps/riak_cs/src/riak_cs_wm_usage.erl b/apps/riak_cs/src/riak_cs_wm_usage.erl index c645492fc..79b046bfd 100644 --- a/apps/riak_cs/src/riak_cs_wm_usage.erl +++ b/apps/riak_cs/src/riak_cs_wm_usage.erl @@ -150,14 +150,14 @@ -define(ATTR_END, 'EndTime'). -record(ctx, { - auth_bypass :: boolean(), - riak_client :: pid(), - user :: rcs_user(), + auth_bypass = false :: boolean(), + riak_client :: undefined | pid(), + user :: undefined | rcs_user(), admin_access=false :: boolean(), - start_time :: calendar:datetime(), - end_time :: calendar:datetime(), - body :: iodata(), - etag :: iolist() + start_time :: undefined | calendar:datetime(), + end_time :: undefined | calendar:datetime(), + body :: undefined | iodata(), + etag :: undefined | iolist() }). on_load() -> From 57c5747abdd058e4a2e171ec1780841e14bd48b0 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 9 Jul 2021 14:01:36 +0300 Subject: [PATCH 148/831] riak_cs_policy:reqdata_to_access 2nd arg has changed to string() --- apps/riak_cs/src/riak_cs_policy.erl | 2 +- apps/riak_cs/src/riak_cs_s3_policy.erl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_policy.erl b/apps/riak_cs/src/riak_cs_policy.erl index 5a4db7a7b..c695ed1ed 100644 --- a/apps/riak_cs/src/riak_cs_policy.erl +++ b/apps/riak_cs/src/riak_cs_policy.erl @@ -26,6 +26,6 @@ -callback bucket_policy(riakc_obj:riakc_obj()) -> {ok, policy()} | {error, term()}. -callback eval(access(), policy() | undefined | binary() ) -> boolean() | undefined. -callback check_policy(access(), policy()) -> ok | {error, atom()}. --callback reqdata_to_access(RD :: term(), Target::atom(), ID::binary()|undefined) -> access(). +-callback reqdata_to_access(RD :: term(), Target::atom(), ID::string()|undefined) -> access(). -callback policy_from_json(JSON::binary()) -> {ok, policy()} | {error, term()}. -callback policy_to_json_term(policy()) -> JSON::binary(). diff --git a/apps/riak_cs/src/riak_cs_s3_policy.erl b/apps/riak_cs/src/riak_cs_s3_policy.erl index a33b49b5e..a9215dd0c 100644 --- a/apps/riak_cs/src/riak_cs_s3_policy.erl +++ b/apps/riak_cs/src/riak_cs_s3_policy.erl @@ -185,7 +185,7 @@ check_all_resources(BucketBin, #arn_v1{path=Path} = _Resource) -> [B|_] = string:tokens(Path, "/"), B =:= binary_to_list(BucketBin). --spec reqdata_to_access(#wm_reqdata{}, Target::atom(), ID::binary()|undefined) -> access(). +-spec reqdata_to_access(#wm_reqdata{}, Target::atom(), ID::string()|undefined) -> access(). reqdata_to_access(RD, Target, ID) -> Key = case wrq:path_info(object, RD) of undefined -> undefined; From 74cc1c00ec2b19446f57d31d6f2caca6c011fae1 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 9 Jul 2021 14:02:18 +0300 Subject: [PATCH 149/831] nonexisting targets in Makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 989cadbf9..c3ab6f606 100644 --- a/Makefile +++ b/Makefile @@ -23,10 +23,10 @@ deps: $(if $(HEAD_REVISION),$(warning "Warning: you have checked out a tag ($(HEAD_REVISION)) and should use the compile target")) $(REBAR) upgrade -clean: testclean +clean: $(REBAR) clean -distclean: clean devclean relclean ballclean +distclean: clean devclean relclean @rm -rf _build ## From c9c44982b547944a48d5708e2ab832089db00766 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 9 Jul 2021 14:03:27 +0300 Subject: [PATCH 150/831] update rebar3 to latest (3.16.1) --- rebar.lock | 15 +++++++++++++-- rebar3 | Bin 836687 -> 942316 bytes 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/rebar.lock b/rebar.lock index 5d01a2ab1..0095b4ef2 100644 --- a/rebar.lock +++ b/rebar.lock @@ -1,4 +1,4 @@ -{"1.1.0", +{"1.2.0", [{<<"bear">>,{pkg,<<"bear">>,<<"0.8.7">>},2}, {<<"cluster_info">>, {git,"git://github.com/basho/cluster_info", @@ -72,5 +72,16 @@ {<<"mochiweb">>, <<"E4DBD0ED716F076366ECF62ADA5755A844E1D95C781E8C77DF1D4114BE868CDF">>}, {<<"parse_trans">>, <<"09765507A3C7590A784615CFD421D101AEC25098D50B89D7AA1D66646BC571C1">>}, {<<"setup">>, <<"1203F4CDA11306C2E34434244576DED0A7BBFB0908D9A572356C809BD0CDF085">>}, - {<<"webmachine">>, <<"422BEAD629F3D6C10FB0F24BE4CEE9648338F90099072AE091FADF86BA70C53F">>}]} + {<<"webmachine">>, <<"422BEAD629F3D6C10FB0F24BE4CEE9648338F90099072AE091FADF86BA70C53F">>}]}, +{pkg_hash_ext,[ + {<<"bear">>, <<"534217DCE6A719D59E54FB0EB7A367900DBFC5F85757E8C1F94269DF383F6D9B">>}, + {<<"exometer_core">>, <<"6AFBD8F6B1AAF7443D6A5A05BBBCD15285622353550F3077C87176E25BE99C1E">>}, + {<<"folsom">>, <<"F7B644FC002A75AF00B8BFBD3CC5C2BD955E09A118D2982D9A6C04E5646FF367">>}, + {<<"getopt">>, <<"A0029AEA4322FB82A61F6876A6D9C66DC9878B6CB61FAA13DF3187384FD4EA26">>}, + {<<"goldrush">>, <<"99CB4128CFFCB3227581E5D4D803D5413FA643F4EB96523F77D9E6937D994CEB">>}, + {<<"hut">>, <<"953FC447514BAF9CC79FA147D66469243C94DFA1593779614E070C692D0BF0F3">>}, + {<<"mochiweb">>, <<"D1AEEE7870470D2FA9EAE0B3D5AB6C33801AA2D82B10E9DADE885C5C921B36AA">>}, + {<<"parse_trans">>, <<"17EF63ABDE837AD30680EA7F857DD9E7CED9476CDD7B0394432AF4BFC241B960">>}, + {<<"setup">>, <<"7D6AAF5281D0B0C40980E128F9DC410DACD03799A8577201D4C8B43E7F97509A">>}, + {<<"webmachine">>, <<"4914961217736701CADA1345D7C79C6DB50A636CF7BC6C757DE923B7C7D70B21">>}]} ]. diff --git a/rebar3 b/rebar3 index b7aeb681fb2210a1ae73e9eb451070bfaa4d5fd0..9bb538c0b9df2b218bbac9bef1d97f8c5a12c04b 100755 GIT binary patch delta 920356 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®hXLI@e9VM@ zxxkO-K%y#^&-^&;j_~0#bwet3qIG#Q2A`=GV`gF%Dx#5c$l457Hs z>|p2a#}~P4ZPR^^sionR4V($rvo;Wl0_M5N=QE@eG4ssc*4Ps^tC@lcz$|K0!cG9> z*u4iy_}E}CjT9U!Snt_<(yNnQLtCkTqqIqDS?AHvOPe_$44-_GIHsndfHxFUk*~(~ zCHk8EiE3+vd7XS!8}>gyW%TSC=8K}1VBLpr;Hn)J) zlQ8x7S3fgPzp=|ndb2B2L7F0eQs3r45c=eQy4)0UjJ8rM3^jIYP6LGrD{g;?aDVYx zzQV1w*9?7$$!(@-A}-I8Z@ia zu|}T9saRy6I9%$2FW(bqhEr7GbUJ`AzNs<&f4(RN_@9qtaSPU-gK@rMs=sho=d zoBYIqHHmx}lWCBDk>0a8$C{^LM&hLXcm_1p!3CG z+H1RCdVajy)y<_J3j|whuHEL%Mz70t09=EMh9O74m90@m6j5;Z6PVH;jvqG zF4hR;?r)mlK|oa5f|uNu1KtZ&Wuce&<$NfIQbEWQp=l%M3IF0en(YkXpPNnWO8{ZCSf%`oz;@$Saf|X zA{b7m&t@jmve)Ar?YwVFaU?IK?<3e7;}eWbdfW5z4YNrXQ*KC0X?*K14aC^E!j)JF zW%%~{)PM&LC7s>02_QZDZ1l&{UubIV=2YdCIVNXE1Cwd2Nd*AGR4o3I`PMPOD8^xZ2|ct+Vb&)LsGbUq(<$O1^E z2T}BYavYl4^9Mn%{8T0!P!5G;U=R9Gr|DdEp+C!{&0xdx8=$ctL~`e@?J5yQYydefO`4Ki+45 z)Ns>y0e1faW;yw$Q}t{{#?EZGsUm*s-zEOE{-;F5r@{SBM6_Se_+4`${hvblKX42G zAW^rJH`f?c2XzPKK`?&O(qeN)uZG#gu(#Zk)HE7%c``H#)u5#!CE%V)m39=S1C4e7 zW_dB6@o> zlS;R&9|iYis2n1E$+YO!#3LPuhE-psLpQW8RdO+ZN;vbdcX3SE0}ZgQ&o5kmJS2cJ zKd~UFdkmoYT6R5gOU1R46zyyO?1$$M_poPMvj1U6z-(W(^AHNs8_9IbaUgED{AAWBRQP6i$F0= zMvAF+)gfN;HE1WgPiN)3ugcng;lC)BtWDOzG^JUb$HOR}!CiisSsje_W-dLz;}u_W zc{Sclo%4FLpss{%G9kN$_;Zp8faV9yCkX;!^ecmiA}!G5@Y9CRRi8i5nN*)C?5bf6 zhu{>&fW!!&F;c~D2%9ZAY}^UIt16ZQD+rINtRiX@HRC_IEU1W~sd^B9l?x#iQ9yR} zN*T8KFo7xp3LPRj7LE(if|jvOF!12L1>fYI1KDLjc4>o*%qd{s>5m*pz#vuz#}Az= zoYByj++9xZP44@bKHkI$W%1Etwl~bT;cjp15f4Gp!dZV-Ij(6y7Ht75q_a=Ev}b@m z73jv%9W3JUxn+S8ZRMkXhK&OS9TMw%gSS3Jr~C$t2LY|u;UBf28L~_9MSXe}t{KsxHumy?`*|?gzEqw!g+W$gY(5oUs=@28gb}3ROnBX>+E_h_zm}jOBY?7Cm~?VR zGsQ)_9_o|25i~y^%f*P4qj7R$DQPLlgP?#R-WFa8+7*L@_8N~JS-u@0;!zG z>M?+#PXZoaZsrV`e`}TRe9u3IE(-QhM&R~U%2P05{ku5`{_N%KxQLny+{ld3H&GXLB3=;g(Pt z%C|Tx>D9t~Wy3Fj(@hV4hj+dIsYCotX6M&4cx-I!te+>m!hHX2#Q%qG;~!uiW2dQ@ zPw#NJj$83Av|OQpkLm@==`qw3ylq;wwzP)6JKokJ7QYkJP>&2`N~jvpT!GRukn&{= z1#BpbNRV((Qx7l;n1O82S=L=*5Y4C zWr#6ndOLjz#i7{r`AI($arS$DAQQxQcD53IL>rc;cGk^6R@E?@q>%Dv7 zcUV3vk}$bVZ8G?=0@1iK$(+z^Y3r~htk-0*Co$aO&clDOQjbK+Tgo>7Fhnvc&Uuf290>HkBw z@n^K3+aY@`&CO&j91z8Dc5RGHE9;q7BFj@PxDuN`S>{Pq4>@A@5SZik@^*s|nzAVd z4T`=MLyQMB0-zaM4E_xnFu6Y7&99R2)Y+=t-GKAX)I(DRX5O{UKECX2- zD{$!$;G?u_S)^$>3)0wUMDR9%kJyw5^A46wNu{5h{1?3}w;^mT<&4U*4AWYdYMd%h zQ!L5l&WoO6w9fk9Sm2DcL^VzXP&B5rS}V(2v2#zJjX^$=9cLZQC6obAglpEGe#j_q z4h+P9qZ#hZrPih|MFn!;Q{H(G$&trL?NrAN(xjU1zlK#N6*heE>h}84?1as=FnH4- zhBovs(f(7XNPU9bY2AWmYk_;Se03aC-XB~0ztMgmM=oTekH_4IG|vv|Z+-=VI+LGo;A$ zYZYcnmx)-S`gO4Nl_Oa)&5j(MLo!UMh(3TNXEw|MTC1LkwJ*VzW5aamw3M79-vu6j zWb(j@4)rO#88rtk9EJ`HOh_<2;h-sFS+Qu!Y9YrbEwX(=B6M7ila|Bvu9n3IJ}PaK zkY8pV>hvfCA#I#+sMB6Rb4?~AM6xj*A-M=5-}y=5Ix_V|5)fJ5g7ec4s-aQXJNy@3>Cdtzm4mSG24Q>1ad~tUkn&6(hN8Wd7HmYwkxv*NIRnKT{evbgVm^R7?W zigaj0+CVM|S1OEug!E0Z;#kfaY@<5^WX0#jVjPpHEI;awGVq!W|W!8 z&svM0Tu8~#!XcOXeG8bFMcJo+E`Fp)WJ}O+ytHe7qjK2e&OnU)J#4LeXVaj?X<(>S zk_N=3NmM>#v|sTqw)iEXh0HXj8EZ87&fV2<^K-I2D-9=hMW0k9b-G2jr>< zlv+Evf&&ximDa9d=af@q(k|Q& zEs;wWmkp3a-=k=MHPy~VI#^-6*K9md%&AU>x(X+hBW-&JXvUrZGl`R=WAJ+P2xdUP zDOw`8nRe0huXpvbXWroM)I7yo8FzeP)6z(2(2?B+|l zVG<$kdy*u0kVvaGP`t(TiF*0Gjd&^#@067g%4E7Qy66*sKn_BRG~N#C&UjWZ7MFW< zfVX&ObRHhW4~+Guo6UzIB)HwFhwvU^YiMV05vIQ*d0 zmo_%crA*F$P|xY}sa$VTDKb*tj-cHk^~QNkGi9O#1pVA~Up*>ZMud?3T8NTM%&%C* zV-Pe!Npn_FFD8_4?8?KP)WfaR^8!q?hAY`hHUZ?_gW^s6`OiShr@-)1<$Yih+}AX;E(Qi00030{{R3W|KFgcWnpB0{S9b;4F82!`ZLgGloD3}qAw~0 za0~3;l&$X*S*<6IY3UPa6qb=nZJA@CPExr^ew1-&c4X6B*9A&)^-G$@3@drUL-Cl3 z!9^V0M)m<|Uty|5O$*xSUx;V;G)s?0CUBqEe==S*B?e(Fd~@o*Q84e8;bv07MqFSf z%~yPX-C};Xm}?Ump_L1ajDNc0pA}G2k{qVyn_ljHCV^^9y*KtWNqzUS?!aj zmD#m$5f^(y-Ha#TUCzErWw*K}1#Nm6^DaJHT0Y$?=phK4iPSK)Ceiq#ZcIa$1DV{< z$c$Ml!=7o-LU-8bUs^@#Zl^-5M0)W`9(fXfE4|fDedLdG6nH<8mxL6_wRYX904@;` zWGDiJb&eV%9U^TYQhF{LY{yg#;}V)vT=Ptx4j_Yt2FW4z7+uu)8NQZL|2SSq&>p`{ zvtc0Dn`B;$kuR6a4?0T3wy>|KMuC8E!Y(mjcFxdcwfO{~e5qPWr0Hw(WfQ)fxOD1& zLnBf<^eXFo6{|vZ5o4h>0lPQj4(*CFfq5MrxEl^#B#MZ(^~i=pM$;4mmOY>W_$m)n z=RS)0bvDLaW>MKXskA&LP|z#nmp83%fm%uWdcs%DS=?l(whrSfV{{BXZWzy30=hLB zKeV|TVQa;pj_xl*m2rW<^Xn-}vXlvbohsF!o^rrM0QFc>1D0^0%={(L9`0D!E4OMM z2&?quI5b+LS|xRH{tUE{E1ulE5bjnTSNoL#;cHSAO`LW&WNLj)2}v$$g=BdTsuh~X5hs10fVFRe5AVz=7D2^0$l(G}gA_%D;C6j~wDvfx za~(F{mIh?;DmuBB4&=zd6mVKL<6~%Lo3h;V(yg@%K3yMtK_H}yP42iIn2wHmWSpKcHX46K8MKoJ)(EsgV(uH1aENryr5@RjuA|AX+TG@c$!Am^%fq7G$2@jW7N?kBityD@gDZgU3v|-V<2tb z_}bU?Ld0gLo2#vv0PzL)eJ!vskV+r%_PQ*~g_C~>j!cEPuL~$k@2l(UkJh2YTMp9a zz}P~$k{SW{H0GyXyhWUUaXvdTcLePcaD<6|bxIVMf}9uuRJ*=wsRzE`#^t6A{Wu3g zluCoTsWuS`Ksd1E+IJLba9&n_bsqaJhrC*A=UnmH zmM9VQH$6}hZWozq3_tKM_V7ydJKzLPkOmxQOf8;2k?Ggxm@EbYoPRmNo)08YmW{n} zZKG&kdkGr>Q++ZrbbHeyy4C4N0~w0u&bZ&b(g>T}7V5tdz~XCg%hg-7ij@2UJ$@wW zqWnYEJ<-I-R2Qj#@M+xP> z2bBmWu=hz^ptsWMI^DSdk2#;Ev81a%uv!B{Xg7b#+6)WnjMogF)-J#W+o7+X5nCB?9R2VM9?5T+C^qPnS-m^c2J z!ZB2elMUr4Qz@)Kb-DW{f^aK<-)bo`!PGg8lQZ5`{jvqsFkQVAis)V$u8`24sy_oB zXLEv&C?X)Ohhlr?BC%2t_ccu*IF@W?bv)4lxC3^Kn%3B0V6sN0NMzzML7^}zcz&}M z8EwC9iSOlqTz7f!*cLpUm_{%@8;39+y{{6?!XShluaV82iIv;QN|&fxPZo7wjMJb^ zW|+9x%RBW=kQQsKTv94wKH6Pu4dlgL z$d<`Q7)QGVuG49UT(3z+rDC{>TA=SmBz3VbGfSJ~^0_wU-F^V-$c-9HkT6a7;g@}k za|cXXbTI>2)7KVyHw&Bx1PAKp=fMM-da`4GR=VdmxmoY&ndq%fvK=+VOS}n|8H7W3 zm5NhN?Uk8Mk1WgWGjbjEs#hmeoQKMKs|6}=I)oD5o2BA`Qg9$v z1;Zs}zC6hdopxS*SEC!N6XVk%GK@`s{nDRabF1@fX3ymrvJTI<(fAHpa8>$2?N=I= zbbo{^$FC@ZM&Yrwu=%B;;Tz4qiM+#n)4T+Mga-L~{5OQ;;fx#b}XFxVw1>l9BKRInIsGT4W1I|-R-+r+Au)L}r8Blg`%xN^41js)c=R9~Rd zI;LXL@lIq3okPIBL&S~7y^fd1)=bgwC7I5gv_Mqf9`=t(h z#~M0Yy$@W2TH8awG6WwoNabEX_wBp>~RL&k>=pOEWS=RKZKa=45a7SbEl$)O+CsE=-<~)K6g2AJe)xwlgx=S4 zXo+cvzPlZ^ES0Q(o~fRUp3aZ8%o?c-S3s=>+XRxwBMw@=)Vqst#|$3 zaFc(AfkKUWER9{8$gO$R^UQ6*tusS8%@;U8*_BC3XShLS3?=t49dkk$M@HfO`1b^b zU>JuVRg3j{H4cGXU0kWKrW@)#JJ7vQeQxzXg7?T0z26*vt{3LMlrU!&B4dH;ZrL%k zd|-_e8}E&elq~Gxt0Zz`75pr%J&hQpUP~MM_Qjoj9&Xk}$NgvLZqouQiM>I`Ce5@7fr?)Wd;pk$GS_}#TK zBvQN;PzW)9ife6f_H%8auJ6yREmJKXF~jCG7<(!#7+hO~B-WK#XJ%6zQ`7vofYmXA z`7)<^|I%EdRSBO7z$rbQ&?IE)RBOEM)u5Ni&wQB{I8zG>&vw_EsmJU_EcKQ!f9<{e z$Z%uYUQr|lOIe{Sir86AR%p(7*d<><-Y!8*2^WBWHfq2LP{X|z(KdY&jk5`pwo3^J zk&mL@`T}Lp4zUcgwv0y8JfJptW-h7KHXEUPy9G{+CB6t4!^+PWV=VVppa z;O_1lcXxM4aND@MySozz?gR-zf?FT~0tD9(9D=(A{Wp=BoH=u5&b|M+pFH2QpQd|t zRd+Ri-L>9Yt7^$ThW~o=wC9Yri#N0ye+%hk1No@{Y(PxAx5_S`d#kE&QCj~uo2R^cM1n_>piq$FfwP*5zjqg zHG4^epc(jHP*Cz?*OrNT_w|*V#32=QWa4Fi0Y1%*;4r@AJGy4|cU>E*#8HH%ibcz_ zefyBLOA!zVBMS(GV*N3eTAB-FD!&*|{U?^L`Gs55e$RP@03&Q`W$0-5Gg}or0;f2G znoCcPqam@lh$OLyg|)@I919y_HK5f)LKI62YoMbAu`7^R%EHqI==_ZmW_*{;$V>@; zApg!&1P^yG1KmLNyNS4!p_7N5EwMb%(F*8k@muI`1frky{>tQ?6~GF3SX|>~dq^nC z@<6iwAph_Dr~Xd;S~(L;f>tIBF;dg>e0+ut8&u`{%KKs>(yGW|Ae=MY%eu)z+d6uCj468=_yN#y7Dm(d}F&asI$ctWG;h%GL*ePvb|ox#kn zK8OzN(6MdCrCEW$m_(9!^in&~IYe~azbY?WyQ+3uZvZpHO{_2PT+RIBLR=bMv$hZf zf(cel>A*ssH8`&2mXcDDcY{}rQpglqLh6Rfu_n*mJsPQ zi91>5IIV$7XGx;1goZ_GDAL@231rlPW^*T}qZSBX0!}Ga@CfjAx=J3WPONfHGuf|`F`5q|eZYa~KCt_f!4m6k| znaW*$b&-qzf@uxuT-I8&nwER8aeC$>~q8_>0sqKlL+c zPM%Zw2Jsbf7xK6_ZYrC9_%lzEfG5Y#UH27yj743yZos0@;M}1Tc zpnnl-6!rWb*ZAVPz}DUMv(JXXieqZ2XohG4asC$VNs{&KqGMWrE&MtMwIY&3yy|E$ z)o`C~jn8?);nVGWmp|gET8f#HDL?XR)mF*Bh2i89GK`Z+ZH(uKJ~t;i5X^Q=-Lq|TN_)^{pt-ol-ubLyz$+v4P@Jc(IJ1B z2;&0;LUVzCWJKbhnWR(NF>@~%C62tf10AoThEjj+IMATMh4ZKHC_KVrkg#N7sA^{m z1i|kQDGL%LW&M8kx5+5iZxP78WohJku%2N5rlYa^LjLz}{I{7C+jpoANeWIZDAj$l z-l=0I=-eKVbg24!GK?ie8#5p7k{@;#jX8Qhu{q^`Y*^p$_SlZD4~(jkdQ$;54|Lh3 zmDleIJ0k|t1(Zq(M3AKbFys9;HDRT`;8b;po4w}5gQ2}!_*&r;bgkFC7MEt$E*l$T z0;|cTZo$UEk0y1XxH4`^SU8N^pvS>FQ3un84SwqutOO>07OlHU*6Mr5zPzX8RR)N` z8HbC1H8<1k;7h|+ZJ{xG_d(CGt2cGx6GLttkp<-L_KMOG0^ec9i7LY({@I>2H@A~N zW}iwm+0c@}{AWJN+!pr8mFMPB?du(m`(sx{d#HOi&#}uWUFWG~pAh4Z`(e5&T;L%byVQeR>gvaj9*>b9PvNNL z)HgPM!HRy!Kxw7w9TCm))^?Yl1dO{s&wNEGh_RZ7?t~+^f@#gp@U1c&w?LF?Q;XT$ zylRu{Gmb3Lb>by{7K0E{<%V9?md_YWh3>_$UI7vuP@$ha*n3mxd8-Ss*w>wi>U5re z9n5V%0eX3k_~q2r(Q@+IN4?N)qHEZ#QASNurO}!=M13-^2+@L?$YeAjXd&v2ICb;X z1w1_KDW>c~bNsy|cm#~)xqeN&Wi3Q8M0iK7q%ZC4M6$J4AGm8F_MdMeY z^f2xj7g+6CTt+IwBPWDRXT_1_ueq838Ss_k|1R-5h5;kdWnX_ zzl(hO9tiKQdHkLX8GM#lb^-Z+Ix)nBR>vvE#)~51!@hVGj4asT`0Hm%b3Ea^G@=rE zX>@8IRqbMAzNB7tI3S5cdEZj!j!1o&>j{u+$#+Vk?At+@q6~l2Nj}`troH3hv-K!8 zl$GAY4bGw{;-=O)VSEy~hPn0F;t5`0g4J=>63KeaJ3yNMHp;UHDnus!oEd?LOBvvzi?;+dgZ zAAa+Pt`Eyi#By;wNfAYVxq}_!=PrdVsWuu904fdwP+<^&(tHO{2!!^(%A}>H`AcX; zHDPH@VFdT~Ste)v?Uz*oH=rPjr)($FZh8`*h&2i4(OW5Q|FZ>aR?Z29_iZnCMuz*;RO` zgD$-=-(xo#O-WKDd_2TKm9I2D8y9rZr#Z|6;M3+lFUDxwzs2D=TuBg(yZSKogi2cO z;B(hei2aKX+of86qBl07c1~NI;$?>%y@TN{ge}%E_b;pjuyze!I(WY)$iI-@!l>t) z$}>Dexq!AKxJ79n0l>bcsfJUaoL|i^O|T?-n;;&pv;Mr%p$G$~-`fRc(B4^*;RQj0 z*sTV2?p;f$W#5&~``BkYb2&`jS=uN;V zjSV>z3M3i?eQFshY~u4%@;?sG1%82L!%5w0BzZ~WTg=rSOCv*K>OoZ7T@PorFf{=y zaY8${LCR?`5by>$7kR5M#jis>0orqzAEVQ50WKLlXqpXgP^jpz@rBvs^90_KVD}Wt zLaj%abk22uU{HLEjp(tPi)As^W{Io>oeg8ViGA&G9rQHNb`VzC2dy2nt=gSRal-Zv zVKwp%P-VddEU&8et+1kMUf)?S$47^krb&J5lOH&N8P>Oi7kN!c=*ASAyOD?la|2B} zM!C$a?87qu!azv79;6aXuGi0hLKp{Qc2(utE0{x^&#sBmRg4e$K+e$q})g?Jha0vYU{7IzQ-OovXJfgs6O&ZC8-`4&g{M zRH0vg{Q`etrpO1z({6I{$zp&43GnrsWh{>rahQ+#gYyy*#^z!%Nv9_Ex%^qw(B0hj zjYeL?w`-ra9_2M=^TYKjUejMDxe70+EG=t}WkI&OW#47f=v{Ov8xSqbJ+5JJX%Ll4 z`f~2^K3LcPnL+Z6`|~)yB;`G!c-Tb~WAXui1qbN7>15n+mLpPU(yF538B_~7g93+Ac(zgBeR%r*yC9HE`Vl_tSoa zj$zbTECw?3b!fG_H-;(jn)ZE|?mCb7(pOcMPuf`6TZ@bTe+(e>wLCDR4|Yq!iD*lz;P7 z%(^Y_?EqwZv;Z1d@S==V=PD`u<`!oOw%lttL^2IODEV2eVC-BZKGp%xeG1Pe_1trZ83KXNXReM#Cq>Wa@$N*}!6u+hYkMO2h zqe2X}q_47YyP$E#>^hHgF1>0YM6Q*}2pE!($;#h%At&CCm4Pwhr;pNSF+}kZELfLLqK#u(Nuh>Q z%P#QS9;UA0iViza6jSh8o=NLXvRFdMuirGCEhx?})mHGL*c$}Ph}xzTchWe(cLKj7 zW+21>s7Leyd|)2Y!GQWVEI2rn1HcX-_mc)dgbJBEJKOUxF+JFSj~f~ryD|cum`p9K zfrchF7Pd^nj>hH|u69mL#y@AFOhAOAp@ru|U1mmOM`r-hZ+8O^Mf-6#J7XvNpSSx( z_#F$YTV3R&N>V@9*bZ3d7>p(qZ2Rl^hd;d{5Zvke+D#z1C5SKuZALIqpc4-h=1(6c z(|Y@vkgG~;iVHnDFEaEGPzQ@5}{)MfBKHT3D6PLf2{v$On)#)AwYow0b&5c zLrtNd{pe4$q%>xTf1EG3qGnQJ=xa1#dvesKBXR6=@`epEY4Y`-;+LQqk=}cZ9H&_z zw?RqHwtuRpnR_u?RhB+E&Id?300030{{R3W|KE$rE4_h<5j*{Wnc~elZxmI^c}X<` z$AEXxhfYOYW+HaaIOX!vTHZhiM_N?Pcy48|*>qh|%u{>Te=>khXwvU1IMq}7zCEb~ zZ^2@);T{?%6pn>Z9D%HToJhRM>b+S0OxjMw8Gh4MKE$@kWSy0j5_UW&uyaAJm~GKE z{Ro1xuIj<`6?riDxqd3`FKF>PYiF$a>NfLBaPmyADYdCwz~Fj}+-M%@XFscW<6D`d z1|Ws(B6KjhfBVV>pNjn%0=G&K)*xshPn0)vt zhi`C(d&LDvsY9A#rI-p<60s&mC7_*bZ#}jTD6}_dhpvB-4JFoYNLH~`L>`UepRARi z-y}WOH9uOi$BaUsjZ?h8tiIg2J&YKU*cqlHG&h(csJ_JB+Zfzl zr#s{s1n#&WwxLf@RUh)6a&e<8V~Y?%GKaR*rc8TySKQ6-IaLOWF70aY{=4U>FFg{nuxrw%W zsXr(8Q67?{U}lUhNh5VY4gn04Pak)vuh+V`a-6xOb#r~$bZYDxvQ8M-|D*~D+W5V{ zf29TBc5FZX0Fi1jC&lS>nPScwb3vGkZ9D2_bQ22QkU`kDqSsAfKw0ftFA*CLO3VCx zf6r9|TJG}(6uO2f%|Y*MtkD6AyHEvkMhyga`D}31V!9G=pslwNL2&TmcBfT+5p7CP zw<-#P6T#yeiTF_wo{vJdDV6u{lPhi0e}ZFu?6M>M5v6UMR=g4kyHC1Kb{L`UX7PqO zU7`BwwAQdn20ptIjo`R$(nHryWwOnr&Krg$K(C2CV(pr1dIX%Ps^LJ~Y36E1Sbved z6Jz>0eRwKD_#7%Rl7_~{iUhT8An2yMzRe-$eI zg0dGN4jFZB_H45Y2Bq!uus?(%P{>_JQmOC722p_5npmlJNXE*7)@1Kj9x+qdH5N7R zHS5e;Bz~;?8aC7^-_KBD&}47fV0Pc>rW=~-2g zh^99OO0<_=4`f!fN7jF9v9vz@fAUpz^4Ti!6ny1J1&u;RTamp#)21k4^z6R?S^ENQ zXEU*Q@H|axz|Y-zE%cbS?-jmMcR!~!l&d30jr6fWLBGhX|FF@TO%*GL(^uB!**VRD zWE0|OTlzlV=KRXZ*ss;r;}L#VWDahmYVl0VEW7$^ly_y2wHmxl!AYcgf4*Jks47w0 z^k%Jh9CBxk!=ts*iM-=9Na=W~7lw_zJ#=r}t?S6_4sXY6^jwJ2Q%Wn&=a%0wdtHx8 z)Q+{9)fuTZ!(A9xC*@~+-BMwUGC(cAIWy2Wc%l>4gDWy0q-}yUP~SSG*yYV<8-r$Z z?X?3KnU{a{Zt_i$oVG*%ehB6TBERTXbOZHJUi6~sV%8wD9y*Bq0S~Lebg?C z1nkXYoIzZwTpYZ^)>~h#kVdYdHWl5bf#B|;2%Z8YMn`_e4ha1@e`23Xsq$UgZ36_R zJ9qG&Birk+)kF?EaP5rsxhWL-!mv$@r134k^RO>D`xQPc(hGjl4+qRl(G{p| z2SU_0G-f$9Xo{xfe?6)=TZA+i2OBokehg-}C)Ri_5(VorSX+hDj~`ORNdf|)L_vs4 z_Z@K|;et;8h_y=pXjJjjeGvgcjN!X|#5ePapDC6QNI<8*g@gRXDuVU9Nx!(pw`^(O zQ?`9mthm?#Y#iTn*8WcZ548AqMj7cx!EE-;ObvkC*fwvdf8lnc*7V!Jv@uV3vs5m) z^Ct=^q)zEEa~KR?pl@)TNE>3GgSGPUSL9h=PkB(tRvr$T%!LckG$O-|vwdbgGa6kU z!r9u#R+M{MwL&Uv>$LKPRnZS61DqW6Mu`6^e=hKNa-^IQ8Z8dv;48;SACBn^ z{CTr~f}()W-^I&-NkG6DARsI^AUHQ5Ak@#=#PC7JG_i2}mUPR5(S+gm411yq{6D@U z1q!w+y#Tws}M@A$3=l___^&S@5wjward!)nk=fkM(K6(9OBM?TN&*@e{!s4^=gq%LH$)tFc3YW$!&m^xqZ06 zX4p@lP`99^i3_oBXqCfFz2nPNv$S)~b==NgL**!QBMN>!d> zUWXpa)1v$(;{oG`{fbR<@6$p@0=w5lZ0@R8OcanPzX-8W)<24veq?OSMdd=sx@}wf ze>o>z(OEtq!e91tMjDL{Q+t4LQ}q3|j{!{f&@}%zV*y5M=?3MxUH5z=B*}IT<`KPG z{R5V8J{X;VumtZnEIIkB)Nucrvwx-#LLmItoc%{2VP$9M`UOb7k^kxD{tiXPYh;E! zB@bL)kX`XGO(}^-u=BjP`gHdR%)E37e-ed&Q|VETyo`A=d#&ndvT+Hq#;XNo_gz~4 z6DcVr0r*7;^(ZQv?kDny2`Zv9VN1FS9Q7n0^tpwg^tF8l3*OU}2@%e61W!qwBoeYo z5R-QmD#yy;9w-S~=;HW^clUzFDfg3YI#$)SYQXuS4&c9jMH3I-uRe%8UWdCUf61;T zvzO@vMKbcT4FRnl>;t8Bj}=0)R!Z`mQpVAJ5uGV>VLw;yA^}k&9OFsJrkP543el2; zz)WHH2d#I^{+m)6Ims4xIG<;nyaPU@F2wHDvOoia*)}$AHJ{Y$yLK>DKS6x=6Gd=A zZv^wNP~>(Fy(b5-K+;Ai!hKV2e@rI5bQJv0C^G&7MFs!?eSiS}T;E*pP|yDihWxkS zLo`=7S1^?SzXczEg&lrrp8$P}g_%Aip8ob9(NQhJ(Nhe>z$>5o3goARe|?fV%{L^v#j)XfWW-Jo!MdqGvu+kd?MBWH81-e{wfc*N8Re zT;MmcSp6KL!p_Qyo`T#l54caEwZ6gf<#@4N`syU!g6tF2>=&JYBNI_Za=-9FeK3Q zp)=lA>%E>ca9ZcCVCDZ7160;u4NzIQ**X4CG(ctjTa;>ZNjfwlwIi=u@^r26X`3aV zY;3q0Iuu#jaSzwfdy%0=Ade7vK0a)Js!~6b1hpy=>L4sbcSuXGe-1e%)xE^cwRfz; zCn(mM#BW%xFof8CNKEw_wn6`dn~MA|FQ$@>GkEuGC2BU)yZyjvBuD% z^C&v*xdK+T*(*of3sMaH@B}MA)Aepk|7!A+#Zd9^TO2=^Fe0MYc<@f-+D*VEdbK`- zaZ@b8>jqg&8ly`)dfIZR_6XKu#N{Y6 zr#RnTU-_IW?GF5PwF+3H{2CsKe>0wM=f0i=EyXLHDT28% zkN%T1nx)XN1*m7pN6#iqLS)llQ9u#)OO&N81lHi$=VYG0a$x@K1zkix-t(;lV{@>e`*2&{BzQl8MOyb_&0X!M*B!52L^}1nG`R;@? z3Q66CYUtVzvpBkdKLiG@`exVc!F zIapa)IDdHy9QAe*#zME{SmTBCYp&#Zy6{4Z6IJT z7@OdxfjI2fVSuHh(4tkHWlf2dABR1GiSlrX|)LvF+IVX%= zideKyP6j`0?%Z0HGiKy41lmGPsDLLi@Q2>`-Yg!75ENS-G!ehQXv-~0xh>gP4GX;v0Si&KkYY zkxk!-vC(G(-#bO!J5FTx)_&UdwT-bOM?Wqh%qg-!%LM!u*aXl8r<6>vsE> zHM>j-NM9+cWBIJQ{~dEoFk&)ccBuHbLPiD$E9`R9f)y)l@r`+Qu2-0tg;JdKe_Qcy zkNGa)b7lh8TeRmW=nG5K9mrYE`yL;+T3#kq)WE*g&-pai7x}W?(r#J$$sqHze@jc> zOg@r{=63$s+cIX1F=ETz8&YuU;m}5Z!m>e>BEDnHTFI=NF@KVtfe}f2;k*w)IFIOU zj&*I_v4i#Ot5e{jX=Sm8;8ii+q9fWxY)=>mN&BAxOw)U=3bMA50< zh9K96d*SjXHxL+<)MtL7vC!0dk>n`~z=NDN>Jut{d1JCBGo7FcUP>Hpo2f6>G++?G zwre-;Gbg3LQy1ULP=^1w0)H~!oY)^~>gIJEQ;Q5UqD(0M&I$(&<=Na!f6uXt;jnL& ztFery5HKn1lF&aobUkz`4(Udf-e42c5I0{y)N6>_K+W>(ID!(~JV+{^b+aETp$3Hw zMPPeG6o&{hDIVconP2l%*mij!w|%GIc*tgO?ULiAdDdQ=ZkoLq;u|FP`DFy%mR#lJ z0bk4=6sCei@jf|++1CDae-%v$CZ*vvc8gPfjE^uy^vD9|0nN!R-7OtJ_pwlqdud+W zAcVsO_ual@c{$vLK$^=gt+~DZ4Jy4&@sTWi|~txg?iM({bkO=1r{KX|miN{H?QVm_&_HUZObwWOS(8HqT2ATu z^{UezcCjjtdk}2qo@9LMc>~e#z<40ME&XH^QsTJD(TlJ^RVFk)Jy}o&Nv8rwp zXNfaRY@k4%Oy+;+Ntth|W^i+zQ3L^rC2;lsCl zQHLX9W~Aq~l&`+~X4V30lINA!p3J-KHBTzyqJ)e{TEMb7Yoj0$DyrEpU|txZ}m`m>C!$|Nu#%B zR?{j~9p>diqPd#vs_uuXmxdy+Chw>1UdVAF8dn&-;)u$3f=4_fX>)!lzwHPq{i#=< zz{t4w_H)86>;9Qdoh`t8p>K+^+C|T+4wm?No-0eEf4sHgzlE^<{%%V~iGgPlnJ3K` za@`A!1(n?Y4#KMHlbkhI^QdssCstd7^&fmBK7ct+&E6_>_VdKNX*hdxje#dvUfk)Z z`{cF5eyieYWd)=SqXXlsp4G~NHUyNCx_g-#uP0B4N;HLQI;&3UpG`?V2|poGrU85~ z2z@0{e@?K+qg|c6Ahs&}D8Fl$VCq)!&6MN_`r{89AL_l_e1(bhf_mRXbEj4drUnSx z8N{z_e!V7jnDwdUm*}Vqeie_89EWQ8>R_MHvkF2c5{u6Du0kz>oL*7zO-+eHbZJ7` zHO+f39fqa>(>D#J+NjDQ^>DsM?)G&7Za-|3`#W~02_CzZi;}|k?z}+= z4y5$_Nbf`aDBU6!iOmlYSIp7J{ruq#p*q_Ne7IhG$|YibNm3rI)Ec9OL`Ej}Z6 ze+X$-SUppkEl6Lsy^8_&pd!OqNX+trlh^tpD+SQP-hj8+h+7(K*;w?pB?;^@=a#Q~ z{?ycHP$pil`-%$cwFicC`e1t{@dBj*{*H!nal!UlfndqK;rx-7yfq7%=zc}%{=N(< z9G|Yk+jftuw_)Z4k8gD>24O}reALoufBU&{abC&Nik=wjYCTpNedk2>1sf7neK>>yH-~^#$7w^`M1p@O;ZNmSADEBiNKc^AE&{(gc_6e;%i?#AV(=vin~ZL>lVOp9Md%S(6;;@l$VTrK zIBvW$mS+kXLub!mREXYYc}^XgmjEZsQ@6Z&e0A6lpD+BmY!$LM9D^5se*!moI>+Q0 zs?B$JQ3WXfwM9$wl>>!Gl%_BRN$6vTof;FQC=#<@@aIp9|7iIDdfUEF?{C?0d@`{W zv#aS^W24dU>2v2KwYv`j7+yhdJ4?UGuAi^@#nT15 zKS8pVRz1Mb21>~2zG}YaaU>WzrwAuZ8zjl30Y?PxXwIH!rnX281w2SJ9S;_LAf7Au zVb!MzkCGtyEyA%$ozR)&EwC3;r#BF1BAneOQx_;AaAJqDMiK420pimvI_# zHt7(F@tBkPkE|o6mn&L{-@aZ7QjWBc2TRqmW9k(1EkIgJe;9hYKY!gzC@%S#s_7AU zPB96=nJ@#B+%0wGQe-7*odz&AR4pz^lxBfj!o2`M);x6RgQnT3I~HUmCD&7)jZ~ENh863E(s^;tpa-?HU|_a z$7#4Ch8Hqvn^CWyz+M3ZYVx^z?6dkD z**|jC169-HSN!;<8Wfhk)Q1`D;k~(<}ZBndz~YV_2s_v9w(H(+z^~3v?5y z;+d!LNQ!9ei|hmwdoav>0RonjpLuav_T%|cf5sS3W4nzR$xN%w+U?$SqH!C%%x9xW za#2|*$*M#Oi%@Z}#N@*v2)fLm0k)qCX3QR*XoZnD_{$G0alH_1xmp6q4~LEepWtAR zra`=>a}+VJ$Zb>5n#1m}dLA%xo6)X^AvJ`8(bP$!Q@0s@A;3}9V024pv|#W41Yb&f zf3CHVtJ!Q%T|iHBaRO3EE}(Es(YORo1P=WMtn977lOkiM&@76V)V3!?=lBjaIOS94 zu1+UXo1~OmZl4y~)$_nr`ZRq7qJ-qDJNkkdSKLPV8ZN~bR|HZ99+WF5w`C(4oAzS{>@JOE+PGUNCRttRwdQ%)W=L)>vf4#kQPK3e>ttcc_6?#)~C+9kRoy^k7p5rQL zyB=?wTTGeXNZ&q67jj!--q#FH_uAT-pwTJi%YH*I#UYp+SdH(S$5Hqvol4mhO-qj! zI85(3i$+`2Oz8Wm>SYssf%oGK%S{Tceucs$@xpG!+(g^it2ra4cF?;oU41*Oe=u`* z>U(bz)tKl|s3 zI(_q^X8hfI`lm-XBpT;`h7^HIdRjGwp{8KNp{84M7CoT~&%4^-6W0B$Ve;$MlsGmjM zWg-(drlls43wdb7*c)Nb%?Z?pxRej0$(ci51@-%ExxL!M^~%EfTARhCgj}rUk>LM| zv#NNU`MRDGE{jj=K=~crVyf;A3n9duz4WdvLSF`F%*7Fhfh;9`VD^an2_mv_p)z3k zD;*Uo?96r>w$bzIXPiFmfBPrI$|71p2T9Eq7)M4~IqBSic@55tQ4{YTdodmM!O!t~ zz-J`k7g0MpC5UE}jLL@uHx^K`q7xIg z{v8qnA^-uQ|F%w=^gCOVDl?S>Qlg9zFM0fLTv9Kzq9^g z^%k)YCR-uKkh<9Ne|G)cXd9aV00960001EW-%lY|HLHdvbEhaX0rQP~;1U9~RGIbJ z;N?J;blo9D(XBn?UL;9T6*>77_V~_mN=yxW!3qw~j(jK2i@2`(j6C$3e>m10!~@cKQ?KAQaV!{q zz7I`qY;hm9hXt7hR>N2Qr78N->a#M^<*WHFWx!sTe9qyP9i^IXe31UMK+>NE2t5RT zXj}Vq{5umQ3+Sar6;LOid%*t*NKXF2hk}_G!2O*eS%l4iw#F8Q#G-~EVam|fkk|zH zd)NhI3p-+Je+6j?Vr7PJ;o3Pl7^G=_#%XwrM)a^A2LwrAN-jp$7RFA0yq1|A!1}!= zy#~+>=tBIk672M2DHtTJeT&!ruoUbHbTo8y1X>eQ8`FT)x!*67c_?sj0X?5MNWgP8 zbpEF{em*$R>1XH)NHiF6Q3hdA(eKJ3fEmEa!um7Le?0RylI6$huFY(9j*6&gp+HZ8Pl~XoC2$6F zJR<46e>Hx!m?`+ZU)k!DLnhPpa;0*8zhD6y^IaMVPu4|zUhSPkN}1>eq9@ICuHDxv zIUc*7*XoKWd5k0rSRsJ5&sZTT(C!M14F=|816k4BvNLpX(Pp|o@%N>9?%VH`Y88^j}#I&Fzj7d&yZO-jU|7HG1Tp|6)rw2H^MImBSt2 z3UK}rhU?5791rKraw1aEwjuXz@`X~}8Akz?w+S%B+*#4@ziVA;^ z+rzdR4Re*ynm$&Pj8AaSViC@$I-Pefp59{TY z6ZLb#@lU#@rbHs%cARpdrpT#5UvR962YI0br{)plM;Ck%%6WS*+IcjJwd`CiRLVS? z`gSZcbX7(e;H}s(;hqGKSbpGv0ppZh^VL)ojM_1441f8qT~)m%p~t7Ge>wyQ#+~t# zA?{VknM^|77tG1neD1~MMtdS^!KfP{J>ww0AX?mXtKo%bmb^E1nA1eJGEa6C0x@|i zs1Q_-DksUStss@U82B(hi?LDRx?KNR`c?RlGB+Ufb8n%5OXM_qt|RzezTyA6%P#2U z%JCG4RWyme?oIOTdkinKe`vCezyHkoQFDa8N?I^vx?x9V2t^hTDS3;M@wMe|9>!Ft$TW@Rk=e z8hm$PoWo?+M+z_BI7^^fC+xFL?q(!>5o?cUcAS)kIEPq2CED?xO;s3l~UQ zVEdCu0RQ6;@OL~|?d#ZB2${T5vH-`GAcG*mzjg=6JQ+7w> zOVttKWijx#b@<)PBAAjPtfa0r@OH@S6iSLAq3s>d8K0ODf3~AQheF5qJR9+Le^TwQ z)3Dr2=Q7}(Q&m5jMaF4dGB1+P08+q}y1W_%@cK2NqL@@(RF-LMb=_B%Jq-iA3AjiT zzroSurL$X;JWUtBBRINDD+njx#Mg;ia;3;ny3AF(7mIf#8)JFjT@KT6bKP-L>62&# zp-nT+UXYX_e`;c&TXV&7&kOZRUdZxm@9F{Bt<}IfaugThKK#uc^79-3^Ji-n;Mb^t zcG6}1r;yDFcoDF_^Wfhy+3!qh$)!yhvk;|qtmvs0goC~Mh`qS^&&EK$NjLtv#fauG zghy(Y#7c?n)x!KulqNy&Oq)WTY1CAK0Ga-zd&@7ye_(zQA{kRC>#84_29M{Ud+t`0 zdU!&82IqXA!0{%s)2i0o?a)EbTI+6%9E@9^Hg%eY7U33`)iJL8?dR4nCsZVkpS=BJ_0B3aa(6JE*%EfiHThD6x2L zi@S686RIM4 z{l`WGq(OXX@4n&~QB?p*r^or;ugBJ?4oZJ)1>AWdvBqETjiDzH!M=Ln!441)wt#r> z#{@GZlvw83f6jKqYCvQ2hv0B#7QlzOT;X5Gpofm{ zV)L*1|IeF2qT&3g_%ju+0?^sb&e7`U;tv-yfQ9A34egt^IScnUCjCzSZ-2hO+{0q56U}zI;m3Z)tJ;ONsYKVDL0=W3w=g43`f;k zVe1%#4{%&u%HJAWc6PyOqs{ihP=mso7Uix~r+&AB+j82uR>dXFI_Mgb!!15mn0<^I zt$gXd#^85Wp}&Kf^O|9_c`!l5O^%{Jf1bIdOwxDAkvgDqKWFfCgk zBF?_-APG>Kg()h%PvIPSdACw~md+p^9Jww6H|-3;bP+L=zST-KAsN$*D1q-bj9!S} zRLIYoWMf%)-q~?F?vI zu67EW3IRxh+K{BVsO_dtQDg=nd+KOu8B(#9xYb&v#$BnhG8kZr`**p=%0J~~Jf?zR zr+F=u^5yGhrg}Jz#8d;@neRvLj9IQD*Lq;c=lsd5d>uOg8Q-i46r|9~du{h;S zj8YpF*rM(gBb?oBHAD0pf08S>8^(?Nj7;u5il0uA3(e)!9j#Ib6tG27+y^=N5>{RS z>1h5S?Pa{8@$5ulXQxyKfOT8m2~Ac_@%_Cv_|ItovEWX^!j-gM^>vDLNa~+iTZS(6 zP&u!0sZK-t;jyj0XR7@G$H$p9{iRXj=r(V~0RkZMEKGDld9isMe~v}#W4Ny-f2O{O z)fp^9{b69z*JpNBCRb0_qX<`x+v@{{>>#2&9%hSV0D;gFAUJ3I(G6^((Is9N!|(qw zi@Wf@^ND_jGeSW7lTY+(FJK0+a{ST@zLEclCjM?+uLpIpO#e>!^XIdi$kp?TWj^;&sPsr_bsRO&xG-sq}(B3S!C&({` zAgE$z5R&IB#vSH|JRUfu@f$0Ax=$(J|FYC8WA=(`K}-{4{W7|5R%!(ilZt?_FDQhf zq4}k{@E|0qEJH#})JDWB)84Inx-Gtnxv|>rW%JC4OHVM3e}z-^6zl6|lg~y`i;vw{ zc8mroGhVd3GzyZdgYg9P(RA#=$fq^o_b}5<>bI(*Vr8al(wMp#k}$(EQb=cEAMc;g zIYietbHhrz-5f9`#zV(2Fu8dhh<32IWXybZDxp6f(cGt2pwy3xH-}?tyqt&GV$2Xw zE*T~5fiK~bf3mLqdhb&ns=3-c72@vJEV?b_cRtfjW<%I9%3=Lf=V-qWM-BH3a?EvO zIl7Inc3et!rSH-&vD8%}Qv@hbNZ17nsU^YCn0C@IS))#J&^#{(mUfMvLdDv#DJm&3 z_9z|GfH%W;Y-5jWdl#ILPf9}?u2+r|EIS;j(`nhxe{{=H5+Lwo{V`;Jh6tGTyJTO( zp2$VNK-|aAdY-Yk)wUW~XmH=w!FbV6nQ+XuN$mv_`4*AJ(Kd>l1~yEn#=9#p;NAw< ziB0o@JEw{)fvqrFZNJ-htZ3=D+kRPkIe%W`5&6dK&$P3wPP1YJ(pkzg@$zDz3JTSX zc!lxbfAi~~ncP!@h&dL#kuA`|i(ELKKPrB|Sn+Z7=~RQj zLi5QEo6t;tz?r)s(`3=jZ2p8E6cSeDo$%p$e~sgnSRkv&Cd1PUjc6mmW|8Vl1RY;S zAf=9~B3O;PZysVgLrfz&@FpTTMVNv+|yskKg}rUi^gS-pmTSq+e@WuGS_A9%RGln1rQm) z?BkK$1sIUwN*aX}4dSr*+tpU!uI3zie@RtNg3p@0DRWHPW-zU!KkBxyYFf5|J3V@-Pt+DGfpcH40PQ}FreyAXbXf4IAB znx!|5aOODp*rE@Tu@VSMw*Vau^6qAt*s1Ia(4=bJ(A_tll{{N)J?>Iab_kfFsnM8 z(&tPsf`bVejt#N^3WLEREA+#Jf7y2&<*aV(Vl(WixcnTOo=7v3l6jUEQL{HKJXIcA zlc!S-EgA7-Rv8W9&S40I`c2skSLLd7^DV9dNpg=KMHA-#f7HDNSXSHC21<8IcZcLh zcXx<%N_Tg6cQ;6vh;(I@0!lYrF!pxuq_{T`j`TdcW!f98DOG3K0O zyn_UH(yWxYDHWK`(r~zq)JTa`ieI=AXJ)M{uwxmCk7vK(=J1e2VX@sX*?R7h-!{^- zHF0vJEnAC%Wcjx6Jvjo<(@)%@UwCxd`DDiz$pz#xQP~8+@@!OI;RNr~Ub!Dcz-$y7 zg<=g0TrLT->W;2Eiw=06f1SknvfeH*AKG~x!=bmQibmJs_S-oEtzii>a(K!mA$s2whN(!ShkTGMmkv~Y!(?O zAzQ-F@y;@6Hgv(=op_du!?hHXG|FT03Y@~@_5(dQ;D+jYaW4-9e7q%wsJxR1<&hCpBPrsDihpMhC-ZF*|m;1zlsI2n4f= z_AJ=ZvR*YweaUhhDElN`yseupzln9#BRDV_8!dO4E?1+q9P=_p_MMH|1%5=aG5}N0Ie*%mNDpya6G!WLK3Gjok zieA^!HfqC%b(IIQxH8f<;Rcc7`4860}-W6<1_%N`1Ni1&Aw^hizge@)TKJY@*=dsv(}AwdS&Zu`X!J{&sX*`pmL=hqInxy}i`ruKeuH$whA z&&ZdhT)0UQ9~Z!An6b?ruO%zvw!t}R^%nd3a-6M zmEo6`I=)XKTx+PDFAE=WD>bo&^eiFzUjo&SeN@#qegY`VQwdz(6yhox|^h` zN{rXwu|4yq@Dzp66zU72r94!>2Mej!DsFvwQ(b;hXZ;iT-`h z5())Uz|Pdo+Di8))gA?XYX=8=16>QlpAQ@ybnT2x4J{1*vX?^hSfHEk$9XC!3ge%* z{gJ}?x7|;}KlfG$X}=c<2XH+6W&i+w9Nx11TzlyM@T>n0_fv43Jye%6>!)p4$=XpN ze+rcZe8ZzzgeaCzIR_9uxzEj=*!AaFbzY@wy#Vs5qF3`i3%(>13feKnkxz?Rv)!1b zg_p5D8<3c*JH}Qnqpov6{WN+_zJc9@mqcgArJ4{brhHG99dD!HKOf+L+HIT(X2Q7= z#jlPhDKjb*%eA9C4P-Mcf8g#}#<|nNe{d;s)}=Fwq6R|k^Ojj`rExjN&=O>nCbqC} zXE_j4!ox@=kJGZa_JEnL2_Ce8X+`W)rFkUTT>6Obn20E2l1=b32!e!AV4a11v%yDQ zfj5JbiYvkN{lrz|Z?n`CO|ov5Zf87zzQlvgA;Y|`-ZT9jg3$u|a*d9d(9S9>Bs2;UD!B#kF(BG5j-f z72A2jn@&mD$V$qlN8GPH;C|@=_r3ok?xX)V!NUjud;`zZKX3bw;r@T_jenaqzTXLY za~6FAQfaM`B|ewox}IAPs;i9IEmk)(#KS@tDs-M>n!X%{eTzc)vPQz0@u~7{<6guP z@s-^og>Le}nR>vU6;@*?f6Zcm#+1Xgxpr@80g`;EsM1M;Bks2Mrec}Yg_4~L2-XFL zt=cDiN=S#^4DmLLnv?vBV*@tVxQ;zhE$=l;1!=wVcLcEd&72w6H?BY_x(=h{e*F5! zRd!}r@To(S2##;ruERq+)eiN%wX3xa0T)H}&z#ipowS%cJ|rope}+|m@y>tOy2!}j z5j(o7jeKGLTH?i6YQk9VhQ0>0Q?0Vznv?@x(j@sL6qwrk6a<9r<(uw3f|$d93*{bg zj08n<0Ph}8lRUjwIU^;I8Wg`mIkMUn*>h0qgjB9H0>40xNhk0Gtu@McOFd2KuIyKn z6^`tO%w`#zSz$rse{$P2V|}z%iG-4Izfe0)Yzwf!H2jgkVkZP1C)j^D!y}>1` zgBDrNsS!AxHwRiV)wOJRRG{f&Rcp|}2bA|dpuF^dM7jUJg&FLx<>4MMgDhq(tZQK4 zN~dpa`5h<>e*pS#K%o?~Cj9#4e~#?`6L0xDG`HL8K^0 z5()ux1srY%N@P)dJPW{)$*x(jN$F<tm7*N^}ot(3qv#WUWV@NNL1@(hbhY0%`cENdY_X`lm zhTDS5nXbq=NC7UZ2)qxlpJaeSaU1M3M zwZT65_?M)C(AFZI%*OPC+4Jw)k!2TW?PZpjJV{mQi+;iho!=^a3xUSgnZC)Gx6l4z z*5H`N3-t!%W7fNSNE3_&;uv;Xx5zQYL(>gyrXe>TcbJVKZ*7jPb;qV&CrqXhnlJRy zf2HS@J0s6u^`uKGLiBojPC+5A8PAJJESo%Fv?NA zv*ZbDbK+~Xyz?-2OL?hi^S-&kC+=3{&Y`NM)1Tm~1l;VcEEn8d1a_f9o_Gb*e;Fa` zTPR+0XV`VL(A{^{FTp!)aL%09n6%}dZunYtidt(%u0HEiR0_prVt}bsY0L{t>E7dF z?oAXh^>XauChXO1k`v1&jET>Qkvf*~2ozCF8v`d7sHlC0$JEvXIzZ;pX|up}0!^z( zA^wJbt>+Ezz;K+j0tXw(-URUFe=4-_vu6e!Yw+s9#4V*bd3WTsXval20a&|xIUzN| zrUCxPp<@mZ#cyG!yOt>eWyyyy8V22hm1(en@h#d=N|D~wlAf~1=1fb?A2yFKi`5>s z_@1emk76n8MxqT%4i{SsZ{Y}xt_2khy*JBhk&c95QqK+Ciebstdx0+Ve`O>03KYAB z#hM(L6mpnjUPAW3%bQjpR6u?Il~Iycej}V zncfe^q@)2Om3H0~55w-`N}EI+x^f%`=2wq&Z4V!n8hwr4nYdXh9mb0hJ6Wl><+tSn zmJjL`**@=`if0}y_ge@c?N+j4DIZ6tqiRRMIL@u&(y$Bmym(^;rW2aIAOxSJ@H>*K0I7QgjYvo?lrNa zo0XN@tx66S;J-=(aw&vEm&}q5;p_ka0RR6003iS07)B^S_snV(*T#&7*JC| zH~wliG%VBQtjsmCxNrihzBJ{?Lr zGlG%3M2SK2d(m#!41YUW{lXLth*ojSSq^`j4=i86$6mK=EDV5r^tkn#@6wQGDNErj zZDNThDIySGVi8TLLNeJbVCaHTrNiNeCf1_ka*R?CwtPJSZ~GrI)5MDj67~>yDpWU?8&$6 z6eCj*nYrR~yICWCHmvb!Tq{XL8*24%^RaASZq?MQQwK~fgvfze^mUX%K{*{~n88=KI#C!XDSbb(OgG-_H}|{>sY_ zw)h(Zb3C{*4}bI2K-b{!Vc=GTqNaA1x;A#!MuzqeOmZRLQM6Mb2}U|i+Bgr_&obcgxA4HBx>4( z;86UAZlhDI|WKp|wpB z=4tXYZzrr_9=REVHZ=o#&pN+bqi0@KYkkD4ck+9WK!V#@zS`24(KB zy?-C(fI~R2lY;pr#E&m}^*FqmYrL2&tmis*8X z^y3KUp>5$_!~vSW+lbEq-@UJn$2Y=-0zf?c1@aFCs((y`~&GaBJ+v z5U>sC0ltObV(fi00lw(~-<0pQ5`3c{mVXF;2H2DQq)}+}xB2^Mj_CDm>;W%+im{i) zmjRLm(gm^yG6b^zTZII{hbvYO|9Y%|;PmwhGZ5R?>$*U8K>81NT719b;YEPhzg9G0 z`<22!hG+I=%~Eggr&1}>+8mIQrGgO2DnunIYLy7CErzAL9>&8R4TB_BM$EkeMt|p- z4dJ>DWGbIV9y2SC^oi1&?&-X3gQp&2YwY-b)b|vI<=5zFJ#@AKTebIB`C_dGjLm0c z0l5@{r-T(6P~q*=R2t^?v>c|KytaYVuW6X)lD^_6252A`egQ}50|6B;2}%!KT7OvjnCs+Y z?|J$XtVbkrrx7bzbow9&_h+Q<6m7Q7{SdXJc@G`p8vbSD4o*DW!!j zep1yk5E0j#k@d!owT0P-*}OPBuA>2Cf6qzbloU9kn)rj1hf-h0RUT@yVW5@O^Cw;~ z+!=|Fi+ueD!=U{@j$+@811uQO!!KYWRRyTrzpn_Se}qrLqF{WJIe%0zHU1+X{=ut} zXZlHR|Ia)A@a2EL_}w%xF|afIShh3%-25;1_PgcxTQa8@R|pqk^wSRix_}|d%v*3L zx)4jZY-`sx61GEOg^udq1Oreky-9BPT0D+LR zqoyclx9WKe9iz^!%5WoCoQcU6JGqWyRhIL8Eb8YnLW!GFet$IaF%Sk_EUkv*&!x`w z25D~X+MOt$)Ag?5Emjpx(ThRnt#K-(?8=3D?c>OjeZ1;<%XhhK#=AU1*MePPQP1{awsGjBj=3f z3Ba#XcW9UhIJwBigZM|dXo6e@b?H%?4i=QGR{{>ep`W!<&f1Mk=*b%5e~L@?XPB$5 z9THRJ(|*jwMgaJM!93vX=tm`uE-xW488JSrf2yl0uEc=+bp*g5;h+Q^4Rmb`?Hw4< z0jS?rEr0OOO!e)o?G5z_r5z0Dev+>EG7&wIR?+x=WKC}rb>#w_s8<=$a#XBXeoIz+h6dEi7t?X-_Z-z!{=Ax1UXtFz`_+iDNq;TxWNc*?|huz~jZ zcdiXWF<d? zyu1ji+b-*gkl%s=E87$y#o^;H`{I|r#O?;;-Urd0#)ml8<_tcfJ`@Sw;(0UHuM*H| zUbZ-US%;%%1IxoYD0sv;Et0$zCbf`{lp`OBamF|C_oiGNMEC$XWQ&7(X6sO^L4ecaPh`k%6pRR5ZW_d~oG zg;-M8M%U_ZsRKVwkH2qG|5+9EYcihUAI4Ki;G4k01HPF7>;PsKR_1S+4L>#i7kmC4 zXm6cg7vRQ#a}7(UGli?8isbLappUJnj1wW{W8AL1nI+c0fzo0O1Z^C>sWj>N+;+3lup4>Eo=`t17>G*`B{W=>tePhOdi{E}ooaJ*v0~ z8=}cUV@hP0@4z`a&`S-{=WAbzr}BU0)QCb*KO!R-7)`uGhkcX?T?Jk%EaRL**jjuf z1LG-MdI}CN@?6yRmXcTD8h>n-cE%7-66b1^tAZho#cCiNVge}kC;`e)x{?_J$SrjJ zOFyXE=+yLwBF5_N6#k&zcN9;;-@1>~BXjHNK$7rM^IIkOKwH*TTRU5`K*?T%1o!fW z{wiig9gSz3k+( zGSBz&yj_;;twQ z+bCGBl#S_IYMA=DZGZD+drx4AK$W8PBH6orm-Q&PNN9;AeRp-!BoLxkt@3KSo-D%y z@V${^$w)hSr9GG7`F~V zR=Yj3XN#YEfL2g2RkX=n2Bu+Lo!igL>zx`4U;{8Tkv>|ll_Vl-TXN^Uc;>HhRE-tp z6Al~v4OHX+(qF9jLH~xNzFz?cL3E0{Y(02R%QqY(MF1*7x@CUhfC9&F$4q1oJ^XoK z_HmU>tABb@(~yz$@pGRV6v!n3c3@WuM{J}s&Lsq6n|}#AfkCtyo$ShN z9Uu-u$b_@aESwcudUA0AHo%& za5O)jCt#;*<@)dgUqx)itStJ#C!RJ0Oo_{k~#SZfx0u1?Y5O!{ya84v>V|!>=wga9A zP@H8ENVN2&!o(aQo_Y%fu<6T%yA{~nxT!wMPj-u11lVZK9|Omb+{gfmz1Ar7clHgq zvl|AP^zYDP?kgH@XI^!5BnZLQO{o=TD!(TsuyHM4;827&beuyINB}O^+B=Ipynin> zxFbxPdGYD4kO0acFWgC~6rYPyhc1}x!|QT_J_Aw0dK+)P3-l4^Z=)1 z4fU!Etq{=H&n`g61)Vx@ zKtO?Bh3AO?gnj{kuz%tTzr8Y!|9?`~@V=k}|5)KRLSe;!Ch1qsY>D>)E_(4xZaJXr z4rD0sqSS3`;E;!*KWxM-l`OsU5sk#mI)6|f;PYiF zli(?CmqmrFnr4g!*DH9yXuGHP$YF+m>!7F=Vd15&ToVz!ds_jTe$HfK@L^`-ap*Bm zU_-+~TW#ah%Xv0%Ac+Lf0O6f>A%;=MaI&$JLW9$|vl8%6Ji7(3ta|frA+%Y;>$Dge zsIIlnY*&QIGkdn-V{7Of6Muc=%%lK?6?!@Ghv~B;J^GG(YGRd-W|jNFtUhkO6Mkn0 zLI`kl8<4-7R<55QCI9>fq+n2>9<@UhB*bKX)MkW5LHcotQ2zOI#UJUotN=CuGXvYh z0+IQf+|HlP|Lozv!%#g_qt^hLWK``!4JFQNm6#7>#1jTh6Y(D=-+u(@@|)?Xm?#E3 zYcW#<0l!~KPopZ+gp8K#ru6=NO?~Bh*kAeuNr5yb+-UGsNJ+VR9?))Eljwnly*mwt zpRbl4O%8}*b!#s*kXO$QD3c2O{`%F3rpPq=JC?et&i5~UC0}n=0l&bD)=urIEL{j8 z`V<4@=W`6m6WWgPD}Pg>l-SppDMn&PxQmw7NEiJma9RQ7(EUDysm^1@VP!F3ObEe| zBZrKi@}tWz0u3EUMnt$3IxaoAAJY1UVFCt!||AZ!iFjq#WE zyo|vqIfHWaGs|z7s{fh5^WW{~p8#5oNM9h6s6O-vnywNIhJSr;o;|nuEAz@bjvGqH za&zIhwC!yea$+YvNHfDIbG(G*D%Kjsr4f%PD?y54jtXJ-8G0foXM;ara0ipofm_@P zF-vOl9DgD{$Ure!-%fT)Y4nOP9waxtn|P*PCr2WJ|gfB)GKm? zrla|`_wrpJ0v3+QP*zIf_X-uvkGiUW$5^VbrPhCL{;&7{yK}rXGQ@+(g%Bo3<9DS5 zo}4n48GjS>sK@#a!@xvlY##$;A*IMQpoJ`mGR+32Ku>i{qu+iZ-Xz#LHzQ`Kr$IYf zy#q26x(_z&tHtgtlC~taAqrzSN_Gf^enO6$IW+eqH<5dO*SH-j+hAi_uwLYI^2yoh zOsymuh^l9bs+3O4yBYX26efi+-AlKr8JFrbrhjvwpb@-h3GC&s_FUv_!d@Wx%MqO; z^DqZ#ZHd22_Vr_t#@aJHGw%h@IS@mct|p>LK!TYg_AF*vr%0-yNoLCYlvp#`5?p!bxvz&qc&v~Mv{v0tF_y)SFu{K-KUOeBB;TX zn17ykRDp@ODFT(XDV){rtX**DF^m`A5y>0$78-wXgoH>y^;PPl*aVKo=rpsPX_LB6 zQ1$deW~vlC*R#N!9)&jH^|m;}kJc+K&|iQqA|MtNz_(5f3NPmXyK(&RNB9OX56#O9(!VIR`Ow7sfjB_+v z4+F~`hVmWuxIaEoKTUhvy{<{UF;26~v&a$StyE zl^0~8FVySkBM2;ANsHu7x&v6&jUx3C$evAMRc*Vn6%l7BeoyW&1DO28H~4Vpb$`Z3 zYjNbzA{|N`bk2N&lDS_sfbmd%kQE06m@yS35Eui19zgpT(+CX#PK^Kxg8cv~NCf%07_g?=A(i@?pVTIwX!{2?*>=uZ_#!*Oz*MyRC7*xfxw_h;Ev8K1Qh#0=m!m7| zXoW(HaF%CInofT+ffuEV$l{(}#$gJpr^8Rk8eM+PdO!;$iPzAc{^H_e0Zz7k;p~Og zDifHt$!m(>{khJVm;0?7W-R6UDs2ZX|dJ;2`q7%2z8L+FL&z1t$$6@4QFw$Z zC#=Cq(Y)-A3uM+EMr=rz6q3JV=JagXeY)sWJOH>rwe{)4XBBrK7I+ct_W{#3Tp(0< z$4gb?RYN4oZjnW|*nTy3hF)2u-^YZ^B{ih((xvrh8w^wZdmoM}?tkL&(P6M}=8i8Y z>IU2JYAg(5yiYcJG-lY!1QC|R=z{@518a73_O?Qp?-Nw1q1!;qwfXs%SX?r;DNMr9%w1_FDGb-fv;)B|Iz*V zQy^Z*RquiM9#gu$?th#8k?nJ zEv=}sMkx1RCS3POj_R@dqXG|~*cW2GMp}58Yv`cv%q!=qe6~nZH@UB^TFLfoN&>;^ z)GT;Us@dV4LLkV$;c&deL4 z>)qiB*gq|cElg>0+=LVz&rmrWeo)Wl%93p=j1Xbzk~K_R)c5vJ^K5n zh!Vx(U#ef%TYvNx0XXob3t*ThP7`)*j>yH~l!)bdmHhF>_O^|NDLD!3P|D?VpY+`EZYVBZZ|6_Fl3J3Mofibqy{TBBMU}fZBU}0baJO(>4 z{@naGpZYsw4wxJcPES`eJCgh1@71(@e6dEpk1VFUmg|A;!cVlRlc_$Szt&Tk6nBql zX@5$xMy+?gw9ZN&3)v_>im>NeN3+8$WdlW)#~qA=b>s_)$R2|=fqWNKb2O%fkDv6; z$6|zwA-?V?`+afZ6VHOQx8?%@%3(~!JH%)T=wIGq?5Sw)=E9^vFK=kSv|be72!usb zFKo(sBfbG$b$-IQti{}h>!K;BF@iuG{eLWG#*-1V8kWYaJ&F$%Ig}8=8MT%t0V?>M z41cOh2WZclijvHViWgHKgN%I^Qal>I( zr0L=nrz*tCcVxBzd>j8660!I11UO=9NY&bakL0IB&eS;;kpTwZfTRh~@cHEpIe+Z= ztpDDy`TaDx{>~T35YRe7;=n-{g22F!mw+ID1=v7P{5ab)!Sb~{-ONwN9f(H-lk!ipQUwl9kXU-o@x zw3&@Ch~97+o{2!wYn2ZQuOY`F&ZbZyU}HfYX)Nq&braLz!yDmuPFED)EpN|GLqjF& zZ*|gD)C-e$kav_T0W!I!SgEkUPF~>OkJ8lNzrPLUN1j3^X%_DwD$b{*y?;f!sF0yP z0ca52AjdMd34C_XNOrtWPV7ihr2qf`|Nj60AphV0*ep8Jyg5hrs4o=xXjUISh~L*l z1Y+f{^?+<-6{UeQ)AduS{-QJF8~E2+EI0tHZ+RY1#Ow?oi^mc^)3wq!F|>ay-T6HU z1QG>OLD#~_+Rosod=H`L&wri^KY!d=|53c<`}r3r3i0>vM1+KXBkjlZ!0vzKqdcnk zvj35f@_*z#{|BWbP%(FU$3Z`|z-!0NSoFyfz0^})d02=M0U+<>H5gKEJYcW`p7BWN zWVltw&8utYFsf5f9VymubQ1JZXxkIX6H3{dyAWI}J_~w!Xf=%j4S!gs)b(zj&`UF# z&s7r;yMH^|ai;Ga2X@1S)(ry0c&lj3?D%Ns3-B<5=BgIF`{DC z`kpB1GWFJ&Y(5HiOMir`ENQG`{lJaei%ZA%cr={oDsyoh(~lg9RmPB_iYR* z{_&Py<`?~N41Y?1`X*ENW5WG^@eaSUQkyMaaRAG{*(hq*7Jt!^Rf?qL<;$xl6WmPp z)nN23wh>!db;LTn+L|NK_kM6VX>zjI$%xhioU5hcpKe4 zQ{8T|n(2ixR)1N%ZjvzCgk1$+i<#%1xOZfC$!l9`1ycb9=GuzJUI>_;3XxL*O{-85 zcOEYC2#2n%@iEUT zKw|EvwQ1mK$q9D1IaKx(<->pbgp&NP>&>IU3E*QWA9MW@lS#9&uVmX zvyxqH3V)%w5qXPQk(wxnu!q+Wavv;<>({lh%IMRc4J$U#&G0$Zn9=7s29YbA>5B*N zpbVsz{G;rOH>M%Y;F11XG31?xErB@`sTn@_Ik-uO*^^;9E#2WV$_cNo8lzZpZEiYJ z?O|2KPn3J*$VtbG?$#YeAx8?%)jC>bWt8(QG=J92A`|3m%X=EnDa_G5T7|(d{i;J< zF_3I|+;Y)nPJ!R$TNs+;NI1O^8k}umHMS^7sGWS<*lNb2Otd`P{por*Uq`w^DLdO; zrRwp_iwNKchW7w@@b7S!@udy(GhBrQIpAdh5#8eX2OWIh|21y^5jTZ`|Kq!VVt@V_ z9e?~^c*ox=K=X%(+ik?+oXd6MD1xO-6t{P7hiP&JUpI%0z;Dp=K_q?2eJYz;w!oF6 zQsE$H`)*$__L;z4@xZKEkh5^Jno+W>R?Q@hjqvC^TcV&TH=xJ1TK)^svz*x`4iDVS zJkpFKfAo~s=pI7pXd3lp%&~WqdgPd*X@7j5Ixi1nR6f0NgAZS@1DF|2t%~N^ESk*S zgNcVaFW2r~8(RwOws5pE&gp?1R=(n~Vtctxzdn&m9^TiWBowkn!doy-%3&r}0yLRZ zT}*Zd&sT)kG$Gdsn?L`C{j-uRDY&6%Jo9tf$kM(^BCPSKA#hz=NPDrZFsvu7V1Lg> zWL_4CziB2v|4tWC0N?PR=mJ)CE4)t{jV+(Q7*I^qCdR6+{Eyz{KhTB5H@bK+61Hi*JMWmofV-OYo*-rk~;L&T!Pbl;PQ7N=yWA3i*BF8+?8G zs`j&z2a&wthae%(2VAIT+ZZ1IQ$>)Q}QLxtPu$fv~?#l#l;nL#FnU(75N|GJjk}_ax5A zlP@4rss6*(o2kQ7EagJ=>lobf_)lB7lg7!KUSzJCQw{m}Wbv$3}OItV|`tw2$bzTNR->*mLy7y|=0|7KsmLv1+=-Rv6+B~u97Eff>d>gTg>iNr1rb=X5gL3dj}YKba9 zFTOZc|8Oos1@ehOcjhUR^hm!444W5X6JyF6UUGSK|KcEf((wZJjep#}N#A>`d=JvG zGQoi)S$(?IJIA|}B5et}#0?H6gDCub?U-?6?y9*vfkvew=qNjI{O~2=KtI9v5*>It zU&b(K5#e$An?vu`+ITV`) zVK8x?q)O0-NZrcnjoI%+y9s?qZ3e(M4S)gx{k7hL9~&wN7z92TkPwi-&n0etQ2^&p zpqC4SbqRQh`!C3Ffb8uBxNVON<^!0&;g}Zi;N@piWRnGv{C|XF`>$j5=cbW@n2^9% z$Rhpm9%#Ui{rN?AQgqfsFp8SD2R<6 zWt*_xp@8C)!G9v)EK+@eG3v?}zF9OuPLe^6sA_s6=2i7RGCaQh>2o1d2Pb2xQOJmG zkn`HL8lhS#TGXt|MRNG|LNN!3*^n{Lr+|QwaSk6noLBuS5-ny*a>i(qZ7h(RQ;sQY zt^m}9rx_N#rf0wPYdoxxeR}kq zgkav{4T1355{ZkPMnC!^h#vq9+VBA4?C&6k`x5m63ca9I(EH0L3QV>4e+RMnzX~i2 z0NOWTA^hczzd-l_w?9Le8NkA#{$K3rcK|NQ_uWc-cY1~z)%AR6a@{3S^`*cXd@4UF z21hKD(SL5+nt!?8i_ozfQVreeRb*rVTs*5U4b2zJMZQgi;(b|ot!+`o0=x|g`%kea zqsBq;KtEf;8{?|XK$H#*oZcan8$P@4pL5N_zaTD5sPQ$~wFr~G+_0}cFIS-#B+n>zXabTyl6t4$AqLAD zh+tFME1F#@t9r_j6?VYBSTlej`G(VoYQ2D)PtvJ^d%+!GcZ^BKp>9HU%fh|a04Ho-w|$KBw3)&HfW-mi@;LL&_&xub)QOQO zgks?lBaA*dz&w3yF5D$;ytGQTn#e6mDZEUYu73uT zmVJ-|hQ|Z+PJkbH>jQ`jzNfi9$C;#8Y^Im`XW^Yf;(x?&p};9Po7&rdjaC*A`>{#} zMZx^@vVy6F(}R2bHT&qh@CYjdfRP2j&cw+4RpjsI=6|oF-zpLx276DqFr2dwUUa7l zwe+92u@-Xf0+A>;!@YWseUULrS6k1?|X}}?dvP8eY~2?Y!;22xZy7nad&|*;Jn*& zu`Y4GVA7%zs&2N|hvF zHEtH)^si(4B+glmXdI0J`2lR`vl&D1WJld)f~~u;K|@`vq@cSY9l#9kH0B_2`{8 z&|>qEXrLK=bgJV!sOm6bGrS@tj*uk1FQ-K5vEuSli^$(JM{sW=w1`12+RGi<7|=sq z)`;N&EQCKkWebcmF>3K=zjNoHn~?oNaIK|NS6p~SA#j+EX?JuQ;C~=FXxyV%CT_42 zF=kbPw+0yvg`fJ;c2|0~;9Tqpfy025zx6MUzwHvr$_f8}rrBl}(F zra&F12G_7iMk{Vt%70am>R-;5etCl^#MgXRJ^&AZ3j$gv&;eKt_~F3-x__)F^+0WQ zhBnsrk1_|YboP(a+x}sCf91Ddou=FO`L0ro(;}`W0@l+6yk%*$we@t1gUn1Z;T$BU zH3L2h$YWZomdYvk4P(3P z%JvuGn^&pC{eJl2X{8BT;7sHO%V-EfoM9i{b>vlpEGgRc@kdxH#e^ zyIHCgQ$@QkcL#?erApYl4Dhtdu{cmo9eSDKP&IS4l7BU%sq@(B#ux=3z)e4!M0S8R zyMqP2$x~7Zy^|a+)4%{9IEo};P+%XYHRJPZjD#{f*Aj5B>PGg0eDhQ%mXCc%1qr?t zK;K`mEs#B51|FQ2oo{F%4GkCC)G*Q55g!J)irh*wM+25Iem$?J%o_k@G~UDNS;UKU z6S6w#vwsED`ubP~BG1k2QqOJ!`uV4H1YnZGtY(kJMGNF)vZ|vRebjLXD&q+M(~*ym zvuS4ddz&!LRMMZIbvQ>M!d!82FNPX41L6cxs9FqF z{P=lQNZ-kZlTp=M-+az}-$4LEDv6R5O@gvbsS1=Q)(=q>KtkQznndlb^ftUxg#ba% z5OIk|Im~{(%*(RL7uQQLf{!y`4)I-7N1mCYw5y-Q~Pq zOn+SB5W&mcYHsS`V_=ka_0i5+7@gLo+EfFDhU}zj>veMH*oajJjtf)E=)6+6uQ|ULzE&fXmk_^%H9{ znk6Ueqbv+AxU#wja!U5fhhCEIWH=Z5-G3|L7TB6nkAaXLRg+Je&x0v#b;9&p0@z}x zHZxI~w9qk>dNpc?nM30aGsvTJASe5(Tx1vE;9xyqBLrp|cb6hU&hwsCF}|I}n15G4 zVw5p?t99R+%=^@F$E!$BwVaH(K%k$e1zvUt6ciCkogmTPMX$Zw4%HN)U<(w%C4Y*X zQt%5TtR5kfF^A|?G3Z+`b~mHXg#NV=lFCuBKsQk@{FXzqyVp&uJR?7IFBzU_zLEP( z>QnYwIobNM)N@{!FU6U=Ahr%Sf_&aE7uvFOU2&svNLtz_+Sy$v4S%KXNE{!bNk-8! zWpynVJJ(ruv`0T~PYf&L)3*6Y=YPLR;TmM_N%@9yUJV?_9WF*%A2@fu9Q=jCe|f{N zC>-R!L*W!n8wnnVWgW{H+gr0!r-~K+C(ZA)z}=r`IU1F7e^BiS`D!DHl z0m+FLRyf_%Jq|jqWEC(JD}O6m;~b+Ro`O;<)in6MeVRi`oY^l;)1v1;S5wr0)Li$WX4gJF|KQc z8bB=meoBCyOf!F1GpjGb@x90`AXz9nrUa%x$X-X%lys2EK`ctnUfHO82Ej= zNv6JzImgIa4ZEzfh%_#28~V@$d5Vm9gZYOH3lo*t8`xR zx~(M-KCYx?9_U;0f!P?pucU>`D}1K&D4Ie696@v!{N{gWay|x90P#0g#Su0&Hg(Xo zAbey{U5Cf*ryt8(x}TP{!U~FiWIw4gedTZffP)F}H6ZG1Ie$Zj$0h?afZ zckAYr^4(-vD1Vijw|a(WF@Agf6Ex<4A&tGcZqI)HPE6GB)elTg5>y*}L=y3DWDv@E z#fJ?KZYGEj4aceG7^5S$&YdfsxYs6jgyt1D?c3A2!9g(k=X!;q0^T8KuTil#y23Er z%C`C#uGGuv`+pCthvz&Y-|R{!8VF~}ywxEu-RTRcmw(*T{-&Eq=~z^CPgORyc+#`J zfN1_(;(a|u|4(&q9amMit&dB$lyrB)rbB6v4(aZe25F>28U^V_TBS=;y1TnmQo4SG zzT&Irc<#ODp8Na$!TvDUnrpAM*PPEY#+Y+NLAo=w)#=2XSlElJMiecdSHJpLUccNl zOzJqa2Y+hWxLf1~tQ@soE!<)aP|1<_>I-Aa0{vWYT-5<$$+mdi2%hn_m^d$^F{e6^ z#ftC+7Q@#%&t2b5m@Hi`U(8BQl|A4nu@w2Zx3mGg+Xozo(GkI+A>4?LtAwG63#_sO zyIb%+ds5jq(0ncYz_l^b@RY>8=j)z2<-TY5oM(=FTOX<+H(0 zOEfeL88b^B+-+SXBBfT84MP!3hN;ll`G1ktd?RmpyDDwp`ka&>IYB&T|z9Ta7Ws8WcN=6 zMsy)FDDy9K*lUN*V#|fr`&?_F9_d}5LW1k3jwua;kJQQg$sFbxTe(=r9awb%+JD35 zKV8r&;A$`iIj$7~8jL2zgaqE!)qkUE_({?DZHM2W8550DqIHV%M1cA^o zrD0AjI)fb#f?|EZzS9_@ehBkv;<;c+;+QzSSb6v=KXpivL-)jjtfSTN5p+GbRUXl5>kx|i!NKWK)Tx^DHU{Mlrh{|(0m<&VtK0_ zQn>t{u<>XWC9o>Iz#u;T#MeqoQuQ#c#40f~D7xYfTz;cA2(tQqwWD={3L~WWC-Jq3 z=k988x?P(>IV5C;$*lViJbzu~MzW9BXpz(GSMfw|&|Gwl=8xBCj{1gX$j7q^VSG;u zQeK#}DTlX+{vFNQ|5N<@h#>y!ihIt#{|bcv1CQ`0+|ECqL$sdGN*_p5%#ltFg|QE7 zOMSP6)csZ!2nxRw=uM_1piK6NztQ-CV#0hd;glaZ&jSyr?rtov+JBj@$5v10hYec5 zitNZxL!A?GBVD)3gwr6$hd(;OvV-fpiK^pOp&jSeY>|)Hx;Z(-DEk)?BMpX$Iz!> zCGHZeRT1)3%W-9` zRmj;V{}XP1+u=93?TBa15k^LWKAjSXmy*fE7-S-g|&N;E|-V#$JKa!QxDf6SYpaLf5zcad8@<|fx>gj`CBi6OxNn>5uhwSu+M71{e6(LhM=Tm74( znKXl;pER!xMMj!U-{AJsHEzqUahvpgi)dwb32pT0Wq;_B);ZP=fc@{d)&HM@=9}6I za;LW5UU4h(^!4yX1pa00{)ZmpPxyWR5T$#O-(9W1Z@*0I#0u%%he^^1|D3Pg2l(vd zN?NeT?&H}gkqp{TN(#um0|F+KpkckxoI=C$0#+Pl)#$w`58-92=!Wza)n*%Jdp; zFc+xPW`2u$sT?0@XEw5%Dh5Y&1!Fy)sMQ-1#@y^6?}wk#vt$O{D&j&P&1g!v=GV)h zl3I!EiTH&bEg^=(I%WAZeQXGg{>29$SHch6Kz~nt56K-{3&s}}(HdW3Kg=(FouN=v zT^RKxCv&H)DT_N2wf8FJ?FOVKy1mqY3%`OJsUN?-?(n3ic@~(NNszE_)(Zaw2nYDnTrivyfq zB7cHPQOw4eSwiay&5pT9qlO;dGj32%B9_ZZsqw2hi^yLcX2LeZ&eR)< z6sd0%LQ!szesQRA<)+#%BV{(zd<9f0qM8H*7MIIOQr}tX_IcOBxA|1hXv2dhVuP>j zGzfP}XSYV$u*|f2e;4mLEDHpx8>>sUs(+c&F49viuMslP8nN!Eng&BkBg7f^6<9`t zT4cCK=KF4Vx(K+Z!B`|_rlIf3w1Eox(@0YgtPe;twS)V7WVqN!)qMihVwUA@c=sH zm)3UQ{tv7d=G)Yqce{Bi@WmqmhO$G6u5l+i*mgWG`RkRm#Daq8#M@pOcdG3gwi8eK ztHMFW$q7nkAFvlh>*EvMvBIUKcE^xAQ$A-~0mRx>CQ2zyF-JZb1n!GH?Zk8;Ggo{9mWdpG}$B`F2;BAvtY;Q~MT1PstdIhoO)9P|J)8|{g}5VA75 zx%UB~;DmMdS5sp)7s!&`hU?l6X1QM;Hv-ML+*iub!~z79-g(e3#Px~JVqY(w@DD=; zi@o5PoL2W7tb~gN+y6%rtRkt$TMa(bD)d$1vPha!02VSL7mv0G1R6fOW}e4^5wd6R zxX;e+@7l!oa)nrw7?_ZxvLsRa4j=i|R;<&W-4yrV{nb-vv+;!AzL+)v;CuHU2x$bs zK!}2`yD!qr@|^Fp@YSc!V87gN_ncioX?@pubE{$0c}W&sy|sJ;OTWuVboYYbTC zq)};-S*iPdB3Ce-UdT}e*2i2h_N{G9--OqSQ$jFmnlq`p0WZzajrIdg7iFN3g8p&g zL9Ga)_)U+^b9}s%1Rtk!)=G{0l9H6L0w6TbPux{$ld;aVJr@}&DrHrc8hp$S$aT_# z7fso@I>Jqp7LzQ-g!wLs9ms`&1=Fefl+HrXUhQA4XUBFm75lu1Ar|o z8StH_WelLSiwTC(ZCm6=HOWVe3U*p9m9+>R*7Fhel>Or2KX4yE2O)=%tD~BDxl|cS z8{{A`fe89{*ZLs$_RoJd1*pT$KYkOHztbZEgl&84a%jKs%DKTwsD=bGk-rjkuoym& zO(7`RMk4cg3)}AxblLjQRoiOV0h=0>97;F}U|u}m1*%0`WBVxGC{orItutaF`SQ}$ ze{h|~6DaR|NF)#U9#kT42=3h_3e|0Y|Aq(|xGZse6>CQ7$B)v-8;m3z2quw^v$x)B z$B{|}a6J2FxP4*2paHKwUAGYGk#@Q7ebO^lj2$Md?yOwlzFis^c6Ag^0f;L($fRZM z$}k`ih8d-+PnwbK#B0%*zxNEG7GL;SC1fEa7UJ+O4ynbEcCDvG_hvoQq4?3tQDIjP zZ`X%_I;B#{+ThZ~2n>~k%M0If(SJzeHpSc);E|d1QGxe##(&dr;e>exTv7e}s0@s$ ztUtvqA3hDYy7>VF{CYqyfbF^bt+P3Vl@0T>R)7B1pGHA6D@#*4^2|$@w}xGXAF6Nn zqR2&{vYRElgHD58e5PNkLI`gletug1MSUH#lg$s1shFy#E1KV5&oM!4$oZkRWvby+ zR(j#vF`4y0F|V@Zjb&EQj!R(XP)mj=>ju_cbQtuLp7F0n7!KF~jTc(FxF4h!DZxMQFR@H1(e1+%gWRDTt==+21tHS+Ir;sG=rF<{w6)0 z@3koFB9C)Kb4Mbg8)Q|!Lbaq{PH~E)%0V^OZa`M#A7|QtK&Go$8-JvO6g|=Zi$8S1 zvJW02+J=4e)3Si~?z%6t7indtgSI>hT~;GPT6LL);x0v(cPF93CzN+ks+?^`3DSL3 za^`<$eo}bd44AIe^p2!ei(cDb`bOWb*~WNc2AyR8ZZqOlipN`ya3=p4g}x&*#zQ^v z9!o+xsQcc30Dba2pCrr*LoOXH*ACV2_l}HZH#$I2RBGl(R33S3W@7666n7+tm zP8-cbseZC&ZPb@TJti(A0% z$$ov}%mNNb4a_-bxcN1B1UxJQM9i?Vs9Z!o5wSPDN9IL@Oa?L8PSB70T2fL?pC~&Y9zDEtiS1ixf*Jl2BHSB zl5l%G<7$V019*988&P~#CaiU(=S4T9uiLK|!wrb$;fb|ReB9wqObznvUMS}^qj#%% zkvtJ9LLG|F((4S9@g#<@h4?rXnC2bBWkxPne_;=hZjm72VW_kI79H{D-yaEx0d&K( z0mYlQV9Pk-%5WBR_T;H(b?+mN<{2e<=ZDCfoi}<*QF=U>CvjZ{Z^lj)F0a?8!uwft z?vkkDT3DBcu*i%})nL}+(Oiz!(Qlf`)|BVO)eopa;h7;=16j|J@k!$PLUtnS^m9Q~ zvK7NRIdM7NIAi381uO9Fu<*k5I0UhTfZ7P8@YjQkzt)Wof`-JNzzEDyYH|S%;}*xv zKV)ge6r$)eLu?p~Tkl7v*|jPvEcK`yT*l6FOa>;&iaM`@n$II3|HfZNwVR;h)%pxl z?BdR5G+EMvM8f_fyc{CLNy$GIwirufVSX`LM(i+h4(U5$%250(n@ASR+|;FB|KH;Z zxfeKUgk4FkCUD?2Ud`@2k9GD(%8HnFjFH@_Roe&k=!Jg;3Ih9;5!g)?=RNe@WB-x< z_^Ore?^O&C5GrUuL4F!K# zNo0UK7mnfPZQ*8YSIHF*-{4;E;49wZ)Zp4WSTlP4RqxEePwm{`reB(8EAoE*si zY^xeA*_C@RNfyrgY(;9_hUQ+ni^ABAIr0txQr;Z-$d*xYTzHNCg~;)SFR#r`>G>m6pSu|RlV-nfJr!55Tm9C@1CqmPF=9WS2qg?3h$Ro#Sw?g8BTd1Sk&Z+-b)UEbIzsOk!WhPVH^Qg!dl1I zLekJILxo{e)Ws|ta4DYs=3@t5$|-*xmY==4W7|B{kEmR}7eLNJn(g^LfaL~jss{dg zYxV=%)68tytl$(gt$=Afj9sXFf?s3u4$WN?940PE%`;NLxzY-4O5$8d>F|R1L~)^QWR@?zU>OeLwrT zr*~sA2`f)*NS?iqX0q#y;epnmujy4HH$;)siOH>|0|3YDI8im1`wlO?wb-6pbK=g6 zT;KzQqNuPc0oyIN4_=;`hZ_9{sok1~#gBrign}_{9?&^-NUFhFV0&pasj*b_MS%&K zxsqe=;zNHM!!E=7#V8|W8Ng|i5!lGlVM0+$Dn=H)8~wpnf($ZK(1V4%Vfr>Wfl9?b z?L?-m0BD{KosL^S%IZk39XRWjjzb)1qqzv*hNFCjrIN{Mgewj+xL{%RZegB*KfxHQ zi>Z3~Qc1SRt!r-6QnYScP|u*9#Bx7Mu2s*L=YBl|L#e-~&5h;dxCe{sI$6Cl)E+Ro znc18+f!kw-yTf`bSy-Xs2Lj%zy6kS(bQ>MS1S}3luWlj#hQ zEONFMgU@X}4wANM@{V1EhHg*e!#Pw}_tHRq4)!bad3l* zN+9R^K*x(7fcKcO%Ew>)0*1O~0GPT4kncQK{3TJ32jBZlh=vI!!z%`V9&TGU^Y{^# z88|5 z{r#idtNarM{8On4QF^D^-NoR0$ua5+cB13A~ZxNvn&3j-TAd1 zLW>=Zc=~jHAe!}25Gbq%89e@(M2C4st|}PN=m^QS{6I0l1rsH0!g!YHP_AT6b%AjKkB(lxX~uxQJ-+XZ!jQS7PgA8R zze*DQxioF*3cP!G7;czZe$~ACuGt7L(mPw~=pvKhhBD0haVb=8MOnrU?HpkQ6CzlW#2{+2n0OeYscuuu9d3C1KuQC?F79 z2J(rWX26mpb8g)vDD)5>Z`lEs?;R-qwRfTn(6^hh!=pZM5JQ$9tlJ$<6pN+!Ns{|J zwA*`mcYEjn0hl#Z_L|()n=3<+-mB0itXewnJA+G41nuT9=_yy!z=XFQw>_FoBK4D+uJhOFj+5dgGU(Ad09gM3DP{H zzgn-NJjZ>{mlffo_rshQu z+}a@ap#a}JV-!zy+YDAk4`Vs6K)dr^yF8uEZ&WJNC;#i3Enftd`=rYjQ7B9p{!Ck9 z%;zJCI?RheoJ!A6fPr`K8fQa!0J0Cf*?*{>+ivUvF88GXTfE2E6jU&1}!RL?@TsvHb-3VmjjBu3syPs|?V8Hxt zo3LerLpg;MZO3yGWuLi_D4AOAG)Y`8BtHnz42awKRIEFt;agrx#$AyJtz=d~CN#>x z{4mCLf^IbaNH6bQj&N9~SPcA&II48HOP*07cK8_6@Q_eEtH9&BT;7~3>l3_)EmQ$A zyt2s;avG;|br(0N$j7y}J-1lKZygdv!#%)5WM%R*R2#Z!KAL^l2@Af-x?kX&!bJA` z4}cZR0`=!ZG#BbJ@4VAq#U&8l;L+o@IaS$zbT=Qbcp(sA;n)iB!tmb&3l$#uvEU9o zcK|`Nr=%UU8S0O>B$oEXLm&T-m&BV;_W=l)KMwzT|~$LCCmM$6}+guP&lI}uS)ip#i#fcajJ3@rv?$CkO#Y5WM-q&>cCNXoMc#DJ29(>1Aj{&>;X6R0h!dBRF(!h^{B>z zI%5FbzH$JKy=us|v}+{OyV}wH0v3|#;oxj*44?I%?+h(hQK24ZIPSniy6pS(e}%u9 z5Ceb+EP&$sKTm{VOC*b8ddlx}794(fi+^)_Y7Zj-s$Kmmn;S15g1Fh3=Dp20HNR8$ z&GhuOv7mPNs(!xNmyO;VE8cG{A1mgom>HMb8Tj5K9_Ot!j2#>bW%q6XK$ddat}PVq z#paJ7|7tA-6n(&5u3z8>?q`t3=v6Kr3>xbvi;yyKT>bb=Za3<&-9kM-=-u0$T`()? zUgF9Bd^{5DoD&fIo>Dz_k(TyKl6;xJQ~kM99zR}PTg}7@K4+|+7afh!GmR*PqhHIx zabe>+O?@DzE9!36tjCA}%oDojK}%E08eAhCs$;qnCgeCQjGwG=1v_qJF&0tScNN)H zsS_oaER&w{fe^DR>UQ^`UQjd6--}=bD!#fb7lSID8yWZeWYa-+idi1H^2$!f<_?V2ctoJC zs%y*E+!p%2(O^b{ZSSd#m9Y!{$oS_eSpmEoEH)=O*{MVTG~#) zgpGr)Ve9#kbpcS9-i&pJ$%H{dYRQ1dB~saPcaq} zHssY!{fO!Jc(l#j+bwV4^IBVkFrMP<$edJ&MxGoJK*u7 z!xX}>k5O}n?)A6v(q9xm0p_%i*QrwTymWA88srABtr9CAj+ny3DpN@ii50j}&EQb( z05WI;4=GzDn-g$oXA)ZNKplJe zIP>#es_Hu3NC6KoN3>MqP^u;%I296C4hcIITD+-wc*bm&8vc--cFe54A;37j%n8Xq zl;sOxsSH~9%hggz2S+pq$-J#cTDKkpDxGQOmlqR6;H?9_l_Q-K8z9Hu1}2>)i&gA~ zS7OAQfkUg?oo>gLZT;gl)I0IKT>0TO6F5mXAF^!cSb)a!J zi)r5her^bRV0YtwwWGVVh5wiVF)^_)Z#mAiQas8({to9oQI^oe(jA}j+Hn*$A>{%h zkt{U9Hmx1Sj@XUg8@#Y#(Xs|4{QX1jmI5?DFdKnX8`^6b76f~*qXZI=O$(6sbq?H2Bh#)pbP4Q4Jv3A>swy+77tL3ZWgwbfOil%fam_6 z>04l?Ow@}dS}p}edY*j6nb%p*rw;%!<;6s-aWGG4+lIp>g8X_6D$0TT!C}#E(#bS_ zZfz<=9!+#7aiBQd6X|#%NivD~!_{tv#HbVY8iwod_S_{>gn{-#foge&mZ`IHv=E01`L_ zOXv&%z{>Vo5;gi9m`6G3w`*5aCqDQDr~Qgy82q$N%KXE6d+}+#D#+!>YaL#L)P*Qi zOOA!{4}_MU9}<-w2n>tu%46!u94SE%BuH`Hr?3+T0X8hJI&%KTmY!RSY5wy?P60d^ z2jiivZi14wfBLFk4*7U!BHsg$a6{}1Nv+h@bgnrq`RHJKnSct6w*Wh=BfrKQ0@AM` z;#HktXX8|l*pyI9XJ}0#6Y&SVV2rDEJa&~r%-@%QH><6sbBvHLo~lpzvwkCbR)T`* zRFy(}Hjsd$Nz71P!2reVHZ^;*?b5p+6G*!Il}oj^A~=1(oKF_?obLcoQ1GAkU@N~d zmbR3ha9+;pHAjwp9!f{PE`yS#t5JWrgJ0+?_1+-4KqvlHJt{g!FlI2MzI*MZkNHec zrOA}Kf}ir&Qv9GO$~W?|MCI$qd~^LhEA^_@4rE${2<@zpi2L4v4s|D z+NP{)FT(c2dHYRSRT}6|G8KEGrbpf!NAHC9FC$Mk)|GM0Pzk=EFk(4dTKP8#5!{?Z zSYfj|xxz*JN-(aezePAfX;c=R?C{D#FaUo;MSI`S7^K;_F=`BuyuP|#gDTgE29r#@ zokzYc)Z?EZdw_}biNU*B_ZQdw>`V+I^M-XLq4-$A5?_VaQ}Sv{i?=BG`|jR+xF!)O zkI5OZeformqmy2Y{pWO86=|X`c;aln1M=3@V(^dtGHid&i{A<-gs_06r;C+AfiH6n zkC8>a|GWt!Y5gt$Lqfm5eMy3BGFB2#J|6;ERC#-H%Op>%rZRS4>4*#rOgH$wM{T; zAUmjzj&hhimM#ccl&eY7=Jm{%r0Ps`<%`J_WWNYc0CK{$#xyKEl#v|gB&{0zEstcL za~*6ej^7a58_(W>3ATp&T!F1O<~!%?)6>neuLX!1ES;Y7Tz zxUDxjuz_yaOb0yR1WWDSjh68GeMOrq$^D+a-~$Y2eX#lo7ZP(J``maR3G06(?5$aV zGS+&e6*e41k}>kOo+NBq`+GT--7KkZ)>AnTl5=x%@PBvUe^lgkws+ z581q`TSD16-#FuPPgR@=J+#GB-rJ^yy%22^zmbrC6k@}z>mBSg?z^S+yJnna`7srFtCUS~)?Vl#IY;3W&xlf;u+2uXFR0c&Qr@-Z zuE%z)F$Sh9(;Hrb14#Q8WNPRHH1QuMNdFh;2mNSxMoGCRXFq~>i3$m3DP6}F4V*rP zznbaMOPk#&{cUBF75=H_QmcQ}{=;0VD*zfLwlT~t_VAd0=Z&-sHNM9keT@*o$Ds8) zT=(-GIkAF$`@{=!-v);*BQR0zS4DQEMBiAj!!<{G9w@UL!-sJ+-?)C zoMD#Npb$h4oB?4Zh2@T+*MU?i@-Af@3SX=A*ar3_A}aei0fwF_mIX0fB%p9kwNv)E z5ZR`+1aIZ&U^u4i_e#QaRc}%JxOq(ByS*xj@tkFAH&gV>$CVk5Wh001!H|9Q7KLe? z$rm$kZfs7_+gA|E`FD@-lJ48*_J#7V*%OjrRY5aRJo1sv)GKU|4m($2_R~cLwRXBr^c~A z4Xx!>jbGU~Zg@TbLO%1LU5CK@*Vladr77`yImvuiNH7{k>HH^y*EIz+wMdz}yJ_q`($=Qi+dWtNJ z@mkO$xW}cuP2S#h5YW##oMu^t?O)#dw8{7bA7a91`dt@W=sU=1AwCKI$C>|O>|faB zWc@pS)E|@C)$+Uy8x!dWWjwOL{e+eDS}*=NWV-1vU)98EsxX4j_qAC=XXA+|=tcwk zFY4DTAhViGynWzs1sAB zV$t98F#_N4S%8idDjAolc3JU|E^00xz`ZhiF}5bBb&ujwGm=q)qtJ(>ugT8v;N$Rew3087=Lt> z&%^NuOaMmSKh%koV2Po8Chf4 zGI}%ehvnrJ1t?}Vc{WExFzF1!CFspA*0OMXp)?29QU-IWqZ^f5{<8w3hW%+Ra+pFN zp1j&R`~R>%f~qT#M;^4r)Y#7Cg3X7JWHw26-Xxwey{Q~E9|Gie=V;sPE?~Ax!?{mc z)d3@zO;Q8i^^J+V*qdktLf};7bzHX$vE{Lm_>R#m_0_H|8@fdgb4#ECgs|^fsvI

}`M`IT_d)*ch0t z{~HoBwy^rI@JZJn17^bqH3h=9cQABuH1e=FG;y$Vw6ZmGHgt4$Ffns+NlzLBX5lCJ zZ}$I7aQ{^x|EEzin42=ej0|cZb3krtzUmp|@luesTViAQhBp49T6F3kM9#Hyx zARGq3(9xB_*v!bzPEFZiOAKk}ndd$yS(amGlH3Z~O@=UGu2=zz91-fBp*<{RPHzDZ zMWkZZ;#S}HzB=|=R^>iPh4@~JAT~ioY|@4HN5~689UTx*Hj6G2LD+XQjI2B)bC{Ev z^WKxAZDVh5&j`fy)S*-9t0Ijv2_ysol%Wd1$00Y^Y#cD3z%sv2@)ByGq*7tm7~!|&8b`J%9-S(iybwnP( z+d+u{_T~6jjNmdRg6LwAz%24$p=J9Ob;ysjyYKpQ=|PJZ>vnF4$6_{x5zX7LU`m#r zG39+*i|`$oX#ODv?EiXjrC3CtJgI9zq zot36r8RDS`G)_5#RWw%CD7;#&Mxp{>$135PhGht$a*S*e{(+QO7M`WV1QlIX6vD7H zEU2GZ{6kYcMA@1KtJDn}lMQto|IdU&rcHqFV2=FooD;%fMT|7O^cizj#jgSxbPl$9 z1AJl_bQS8FTx>iN+@jKg0k9_4fLtCxCQE1N zZl0>|+y$Hy92b&fiJFT@sgzj7Vkt9bPKnV;Kxl6f?QUukNC1;;j{{+UQWZ0dl7ghv z;2Y{Em80E5Bb=Kr$}M^9Tozlf->u)c!a;;A`tp=wfd{cO$Vfq#0Zkbk*;S8dNa>l* zW{%MRTbLFK2Q7#63z;p0mH{0=fy7CE~6Dl9V@O3fDK1WwG&pXfB50_{-qA4VI7 zd>)b;G*gF0&Y1`3hHO60^Xl1v>P4xGGu?;*1~X&bx+LClUmk)FHOAsM>Q2#de&(EP zk+MBy=G;MVu6ScV;Po2r(b-)f?VRW^dFIGG@A~gx=Jc1vFI_?njUor2OKixu?|6Ig zHpjei-I_yjE&7DM^Zj6TcjdUZbo=(8$i~AyKb}_ide%NaxD4H`btP}R+Ep9+s~{H7 z9xSeJZOofF{XSBs#aYUnXoWGb;&-frV5!)ZW`iQGJwgNC)&Mtk@H)MI>=hY;xq168_6mJ~b^ zOG3}jxyoZP)c2pfD-&@tE@LC2Gx^S6Mn(vl5`Iu|s1irQJEa0*g9-+di&7wC01+?u zFS(OR>;+SU9ue^~1e1TIV&x8UlsERxY^&TkSllXsUjy=+x~8w`pNM0EQo)u^9^_e) z*^dZ5IY_&wzQ2<$i(md)=_BTu%Urd!KGdBZ!2f%*M(I?Ph^Rn7a=1W1i2vD66LUs0 zV=H?`6Z8KJCBVq8Iun*}X?=Ip0?tGMj#Z*&zAgEaU1Y>8$+=hDZk)+E$B1EUqCtZg zU4}g=kJ`50*^I$V7m+R;gbO@|S$zamq?iI+G=LIga76OItI~$ zAcceNMgzoLNn7hc_Yq}axnjO>>7%JJQHZC)%^`KPawIf-xsyYz-1qxc@(m)wSn>D} zr$bvqM}RSs<~rGke<*8-U!D|0%C_43YCq2Km`4+Frp8RL?t>K2te@pU1$k*Z*7An2k4S*M;@}n3qD8olsShk^X(4rkRzaluM^b3E zMf+ZQF6aoGlxIlExPMkM>fq_r>A*obrVmV`SKeu! zUwHGzf|_aGVzL@VTpAgTxiJ0R&JstB4EL$8Z0 zgX0n-PmoayY1QaML7UT^T>+ND4_wmwHv_;}9*S)e(P`m`wGoeYEK&x^(LWwO2R7#F zAV-h{C5s9WO8ZBVWJ%VMiWPbz5y&0Jf=r?d4do1#60W2RRjov&xPpO1g|xVpfCVgU zkdz|bD53^3AhLg)rzY%)T_!#VKHyhirR+RC1qLR*uaOWY<(d#MINxjp{Bjr0w*f#3 zAI=FG9MA0kM=N9EYgOY&MXrpND&|ot5)vo{Ek0qGh#i!o{Oz7 z&J((w*c=I3xu19>l!|ELhh|D7ksBKQPZSJt6V|r!87RFt4iu?%Uv*g6zYUaTbH8GC zn}XkV7P5={o&}*o^UgXjc^x1G#9Kflxn+U=h9gCzK2PJ$BBV`3?i`>pkk$$PDIfBV zq$Whb6_Q~HeJ??gX%caI%7N z;!ZtP4L?=QK2?oARZTus4L()PJynf8RsCN-^i(zTR5kKcHSyFnN`@|IhOQr-Fd=)= zjwUHPi3E#KVh>b*NSg-~W!M8b73bRoZfFKIC4f2NTU~sm)M^`n5k1}3=$AowLi>?`2kQ> zN`c3Gfg~h#65tw-U@{SX5a?R7s8pmu#btfwxkBK`YlT6@k6;xMeF*4lGpKYTV3SIL z+kAmIBz2PDlRY@qpuz|)v1DRp;drOsQV~j@ba^&}#3DI|Y^&TNPk?2%ruGtK<|W1% zmv0i|GIhNZ9q}Qh^tKtd$cO?6r)(P}WYKQnyi0gwQM-EM8hSA}w~$Xg$p|d#uvC|6 zBI7bdzLO83Atl(VEE`~CQ4hfL);1=y>mmQCeOE+*&rK+c&k`Du=o>Es=>EN~JfEi^K$~Di@=~AaKZNE;{2nsjp&sXjot?Sht0`KSsm@ zB*9IgINGLgEOgFNzam;_30g+F_l(~Yj~m8MYV*E)M*V|@A%HuffAn8(q>lqXW(rzj z@iUm!;=`Bd0gEjBLM1j4N=f4&@rv>@%GizE&OOMPTHG^!<-lg#&Ros0ooBiFp5+tIz7})DM>RFgEp8*Z1q2bguN)*VE+DPN3cbt(3 z%!ycL7`!prSh)j1r==l78J?bR(nocq8G1ELD7dKM^{lbxluYv6z8KNt%<@Jq2XfqU z5?rGw)dN^x8E;amo;?J5W@s;6a)n~7~yVEkB(ts$KGu%orM&pJM#I^uIpE=i-R`f5k|YA^50 zQ@27vK$$vT_ia|S+y4JSw zWh$R}4SLFvq}_hcA`|%l6;#iB(kcn{$hi;fO30UN0;}x)R}rjj0jXkdsI%U)c_}G> zOW$d5XTO2DuJ>-`%F~sJotWM>ta0-+&NoY+#Tkrwy36NW=XenrFKY;IGAAw5U~ns5 z2!O|yT50=O_nlJSxPRwZGgjeVXYb~#E7UbRGV0JKJa0^nqFvD2m}S|!_-%Rzata+41~5?s zHh!$)5%B%yFKo{yo#(R69bOZxX(89$Gq-=a?%Gi;e zxy$!2EOr9%nvP4byEoU%*)JD1&9KhT;vsQZS5=hKqnO9j5HOFQ@^lAD85`b#gUWlT z>DTxomhY~;7Um>@MQ*j(&~Xti3xEp}tVJA`rf;ENwSTbf+z{j&XVfXKFTKJSw0a2o zjowQJ)>uSE+@Z9B{h5O<`)zS>Ydg$s`R*i^gJynSJuTlUgACE!C)R+{g_Lwfh>$%R{ zK$ndAU@COl#q?gK!&+%>%lpZgRj1qP`V?ur;g>yMJG9d5_FbjJ-+F9sG2*IrUdLZ3 z5`XK$^lD$}^9cPzlu$^!*2z86`MA69+3XLGGEC%OYDw+iKKo4iNCnIs(2{M3G3^>xAbr|lho@t6G0H+H+P`Z-K- z%sa=*draL;G6#X`2Y{c)vp84LWtVEu6%SoCu*00qMqcR^uxzv3scK|Lf4|jB=fu!t z??a%se>CTCN>$U?eZxxXe-t%^8N2AJ(_FSHKz@5ONL8qV_nxe>+htuc_C$tQ0xF}V zFU=O?{}W(*VwT-~)n|P@G||4-P4(f;)z0#JQe!!}-`Jdx1ONmYtw=~;Bd0Mtm&yij zy%7~%iYx?HyDsrl)UIXTzG^tnlZ|&VBTH_Rf&{1)lpgZdOnp_<-p;nYTFkY*6Q!?moTt8>J=A^a*+I9x)pTo zC*ygSv^MJVoy*(2>L2|K#gsWaL_p?~b+k_x>G;KbjOeD$(+vjZUShm~nBMU93h5W% zbvYihqwmSWO{jur$->U@l(wa>Uk`p>gLl>TqBB46fYA%^*4*s8VUL}l%Dv7HdiwoW z_hEhl-tRX9J=xM_(2M6_Z5u_dPve?oo-8~T6SnGjMl2E;c;wWc$q{9vJ~`3B&uYn8 zgUPOrdc`^_97=bj%~IP}xsI|W#!I-ypl$AE1@Gmx6`7SJW|h&7QIkY08R_r)ppaW2GY|~!zChc%}$NnOUA`<3#sfjq(s$K$Ka>G&QlCkk6c60~taGcIg6OHcFMyDO40tZmo5}%4BS}ia-Cl|5FWH!7pp*u*T@+(x`tO zb$IWld`b`F!?DAQC(U6$rQS#OXL~zDxWwoRP*qeipGu66t|E9|$tR1@zm@W)J2b8b zZVRG~#>|}BvTYYlc-%$d|E=rrm42WhvhA*L7uW0|;{A}h1e!Bllg_rvGB&c->CEf0 zzsRY-Gk3sIH#;#))uni9b~G0)ao@2FfQ=x*J-pG00NH?as9wbHRH^7){aPPKgGGM; zw22purz%})nTIs*?^Jny@nh#)&vQRf)LV+`%KsKWB=;L#{VjrbM9x7ELu7EI+sspUzK44rzaU4b=CfG{HzFMU-5T~>B&z|eBHjV=G{oM z?Qm)`9gXck`jS5O{N$HNU4dCuqlps)Oz3l;@iILce{p#&Y{&{IM6R0D{R#2qsOsMf34 zx+$G{n*%#Q0iB@1e*?NJnK}`7!|GcJ%|_LB1T^avQpn2_(t6FxB_A1jsD)FCo1$B9 z&f~UemmN3&D}Rmei;4b`NB7=X$L1AS+nqt5OHFQ$e-zliNTgaf`Q#iGwhT%F{My}v z*ve1H9cqUzQOwV|&3#Y5=*YtX9p8V~yYy3v(`zY{9|cw}PioWcaRs&N7}9I8k{(=t z{&uk49%SK(yL_BA6>rx+OeOM#*}e>!^W*tsACB~Iml{Jd7)HQz3~VRbYv>j`+P%M= z4g1|DZB;CTLK5VBG!#F`i4vGNy@go@W?)3c|3bX<(}+?i17rmh0R;s&&}1j{R3BVv2C$det2^uYTW$ zYH>m@(#1uO|68YfJ`10wh;Q5OPr7>Z=TGa0!29lZ0)@f#%>8ab{w0?BHv5ydm4{PS z?QV-G?-JGjq3WE%E9<&$o1|h^Y@2Uv+qO}$Dt2~k+qP}nsn~Y1WBcU4JKycRTF+cJ z;~BH}))JA2l$`WND*>H^l`%Bcn~zP}!>cTpo6@;4NP-&X4F$@_dt=1&WWk)U&iMab z`cBE;jC)@k>p5NOKE?;M-kFACeSI~^jOcUeGu=3KC~3}|_FfsrIS`o$J;txSi>cb< zywUM_^*$SAZkF)rEwp$(d@1pnZWilm`u@~>8Vc@!9J;fUCIDOlM_R5&9NTpF;bl}8 zR7YIKSjP!{A3}WBq?>;qx)Z7UNfR?Ed$}*$n)7iR^{_ zyo^@Lm7|+)ya2~&WUlg!BAJkFfeg;1yK@`!N>%y;LkzE1iPEH%$t!?GG8b~0!BFli zndHvOu4?1kea818L(-`GNL|{E`$FXFJ?V!)RN&1G8Pt>?mnN)@Ki^;QIU-0h5Ddd# z47>h+;=tGgg%!ag`Uw=lo&tP!$v7c0`Yiv!YYWo8z$n;2YzQ)pL2U?uu7XMnag~9D z3XzwAE$vF&5dHHYvY&R8(>h5O{%9 zoi$KufJl4=YjOH!n*47OBuxtv=;b;acF=_B0g6m;YoJ~|97dg+*zmUTbp(W0e?Yh4 z_1p0bxc=8SgT~D`7gxK%)yKjH09(LR+n0>lagyn%kTTjXO$jGlbmVqcU1zw024}xK zC>^)DHjLalv78=P`Rt{)qM-Tl_M0pr`E1=CFx=HqaoBrMzHXuSxV&^565$FU$gGNz zAo(?suAwgaO&>0r7YA_jt0LFZaX!z5@R9ie0T%K&Uom$5A3VTGZs5Z7*o#lDxwYBy zu7x%Eq1-Z0LoO+Y74D2lMM5JJr(Ez_}r*&)MZ9*xcE6eO|WtR&@$@!kRu zWLacHAub~OY1NpAbw{UEDEsD!N*k)QY>QD$nPeqBp=W%D;z?m$JPM=tWnMhi+%E_($@h^WKXaOOPr5@-)DDVcy%ya zOrpx-99eIuOA6#1UP-iS%Obd+ymFavdg1lqtz+Iz}QbP4(C*+ej}BmD(r#;LS$ zQNxkb9eUQJcf7?z0%>wG>2oeHa?WuP66CaKt=uqs;DYR91?6A#FJM;huh%KI&yQ5? zP%&-zAI&@894J?p7oDj0TbBFNXbbclkFT*p4-$83w8K2@Nts0-RdP1|=}nmO-d z_l_P{w6nB_?YZPlSarRRp$UNB2>7!hT{6KK6L{7+VoGLKq8cQ%#2e_(=MB z@40eO4;N&85qhu`Rhn_Xjj;`*7=Ag`k@^knzbA2?cU5jRQo~uO9;|qO+cN2z;E?9* z{5m=Ri&%w$@I_25-`4|(H6zPQ%av|%C3QNCy!)7u?MfD3Q7jhHWuq*wsVB;HW+-R$ z5#x{U;Z5%04eI%@?phqp>A6QK{S)cagy4gSf=gr0v898e)2PrFX4CI)0i$RO-$Rpk zGpj@Sy8@4nejfsIRWj9rYSu}6N^cl@=3bL|~)G6d?W?y&L8E#VMj(WYC)tT>U z&>Oa(*p-#|oA3nK!{CJbyS!uTZ*?H34X4NFa z-vuThux<=_I4>{w`$4S(g+Ujam7Ty zRQzE}WzNMil%;kGYG97TaY%f6SI{lz&98WSzt9@%dQt(1Q|yNyAa^ws~xur-$hHDi%c4qZu<`ueyI$!O6mHV%xbYh z-qEQq$V8ioem6%Q%7U_hk1aD>MC7$cMOdn@s9^?k*|U8B3>1zdFk3gbi@}fjNRbLJ zV4*u5!46=2E{>67R*egS`yd*hB}q$#Vb~fxKLra-<5)PI^Kc!#TJ#|uWY8Fp4~Aju zYh2wsJHNLX?8un|bw4(?r_Bp}Lv*A^(}gsX<{b(`kl?|&rgQPe{qT|@7YasDQ56bv zF^C4F+x^@5>}GnBGd=DN38y=?@*3JU5OYl7kpy6s0wA)^>)Cqifau`)TWU{=d4caD z)0ni4aVqySfW;^)QtVok-rS#&)fC{#@0ftZ!nEyjZWF{n@TzM?{l*v#241?RS~VTe5^5f!4&6oZQ9>SpZegsHhiq2`SXcn%UoTq1gFuH^?eaItaR>gE#`4 zaZO8QyyxYHy2+Yy*;u}ga5*z^yam~9k9lF$8zbh;HShEAJApW!RZg4^fVF_xMNu>F zDr;2j2M0X~efZnTLU|@G-w6lu-#@=g8ax1ls%s}q8`ZzY+Ic=bL zZry$YFoqfL%5g^YLAwy#wL!6LwuS`Og=AYbSFw%fNSXEt2GB0i=JX#kdB)m*xQ=hk zGu^SE|1Gd29!?#>Qoywd_oIPoXm3`4Z4#UayW`zd$Xz?*fPS7kH6J`s@lBM!LXQH@ z5nF&beb!$)LfuB}`lHIvNwyLOQ?*ITb7JL~)Rh!)w7oaRo@o40>1 zeF7AJID!%oj!2A@`*4@87ev$1{YN}lCc9y7D2mr*%Ipxe;4Xm;9IXRCx~$s7R*>z2 z%~H7MWZ0(8tqQ{szYR1X{jRIazAOOLjWbKd8Hs04zK@3ra*?s<3bGkIsh47f#(oj|+$oDL!SFjd333Wg$KjluLC zV_5%9RxMfeElI0UtNuqD2Inp&ll~sR~y=t z(PEFbM6!>N%%RbjiP(wr=I3-x-`5Jpv)!pnX#cC{6KT4GM0*g?2MTb5zhs_s+9=-d z4SF4tsQH=U)Re@A|x5~)y`e(l1z^Z-|RgZ>=QQ#FzbjG6@zfGgU>%yP{AQsd8airw=93xo3Nj1GU`&K}u=^ujy@+H)xYKt9yvWWp_X+C?H@dRo8K5ncj4EA{0+u*_I?6#(_9 z*zBL?eYtAkkVdbOEJ>&YH_FdEJf|9c1{|Y8mx?W<9TSl+GXT&JIk8f)himNeFOZMH zZcBHa8@L|T&+<{+&x1fx*bHz%$;_seCU-MAh)+xqkniv6bT?I%%a&SH5*Q)R>mZC@ zWJy6WV4y`KkP-P(QvO8X(D~G`D4_k4*JANzpv4h{VbEdDzZHd)&{R7hAUenN`nFH- zdOEKO%z+LpBLJRd&uy-g>ujf*_B#n-<~|F-o8LxZ+~Oiw1kmCRHXAoPcH83cF7P?nH`}~$N z=9+4#9n0RAYYKk|Tur3Ezfzs8oi?Q3008;eUT6=CAK;D!i74*ySsS>{9@xax^_M#Y zst2o?W-*>C-8J199 zI+$TnpSt8jN$PH|M-k{o*qwdEU62V=fgtg~Um9`fD3o<>VzYbjJzJWdjeTRk7MVT- zMv}iGhJZ68vOcQ#>Q$D^`T{_u5GE}ij`F3qO>W9fsWQY1&=XWm*?8f5hM%WXFErmD? zfxi-XAzG^$m63|j*){6T_XqR8ZFc-^9g-7vv834=!4r|S1n<#nJ^U?O9MVbZxe#R@p+j~0sxIS(fd5>OuRk zXgT)xDgojF&iGFB!*m=~`D{V}Hp#0tZKk_A`3qgw{LZOfmG{JgZuxM*+Q>I$JG}O? z_~XApnQFp`Y-8>dT6Nzv=5_m0FWTY5m9ER4IqRmQGkD(x(9fXb_|j&H(mMNf519j?iX7ozj!24INS#5zyH>|iIPC?J~C0_VHi(=fs27WK5;IkBJ?5A{pKtcanr4mAnPT5=>TL!WT1(~?9-Ma%d zdUFMX#;46udGVXuclbCU;nk?X3~+mY&v2DMSE^0*oRhBWM(VKSoc!<~{gS1cyw*~{ zfnD%YuKDJ}I(N+NG9$m!_{B`=lmIQB+|G0o5~aBS6(_JmceDB`XNbw8YhzrF?g_#m zDHUK|$5zbFEki;~*{yQ}-Wz{I)OeZZ{*1mq)vygCq76{iLL{s=v?SU!1Q-Uc%p1OK z-J;iSS(V<$ZZ6rTA=`J(H+jVzgIS3hpc*R33%)4`I(4HhfGGzJY@rM^yD_{R7l+&IOOPle|4n*bhT3n8OXc?WGe& zX8~P*k99V%;0G$K^vW;10$Ax5$=D&}o*DVlE)NUwu;R)cI|ljel#_j^>XPp>dOlP& z&R$SmPKsjsi>^Du$Do4H4PIy2M3ZAAZZ?aA^upC%uheNte~0~+Tudu#hDN~<-U06bp&BPM=8sxQC|x14s7Nk&*q)soNRfxI0rY2n#r+5kv4W9> z;fe^M`XAVw*_>IMINW{(ruCVPh2T*krf|PZro<+K1tXL`pG%PhX?WAecxL z!N_?+MlbK6K1~l#`Tl|=)K!5*aXYVJ0|ipBD(l*K+`|_ZLis3*x{Y%faxF3J9&#LW z-O=>qx?e}XzCX3zcU=d|uhd?y3nWSc;Sv)&&*`Jw*#DD+1%!}x21QN?kR|?nR%}#c zkOq-}!H>baJu7oQnM~)R*9*MWYsB#Me7MPwuoZH@kHO>}Dn)i5ZrofeNWb*9i&BB* z=`ul^nv!S%Y=;e{@f%mzyh5$?1C@L8atYkDBZX#6Kq?Ag3NPPs1T67iT;8 zj+(aqRB!D7D1VO&$uV}(4y4%!+^uvvFY0c^qAYQ+ISMQXK1U6i;g}<6Q+mHn$TL%H z)lZUIogipy-*+j>?4HeTm@Hi~?&lFvc|j}m@D02y$UvLt=oz1=e06zy(7k!Y*1Gy{ zYsR`+AAcaEp@%M8P${eVS=UaUOUP$9hAd%c_b3(tRI~~Sb|9{ecCadWMA~~?fLx$(p78|;jecT|COhKhn8~FnNX(@-%f!R7Ap9Z}Li~8G`j$~8_A4~axhMYUwCV9&O8879UfxMdan^gMk^gXB)xc;I2so zOlW9Z5tPE!z6|**ko?Y!x#Cfk+Ty1fa?Ur5Z@(0=su~A}3m}-kNtNfb@dV`?Qnw^^ zJ>>!3i?%kZt%n!p>q&Uv&#T>?iz+^K^Q|Z%D`X{tUlKPX$Y!Gr!7~};6RM6r?a~4^ zGcT94%tQ3w5=z)a&qh75VgJ+~R*q3!S0whE4ob!^kp$|4t?}b;hEEx zLRs23hZ!z;%yr=qGdzynIk8O-iAuSs+v*w8bfZT)fhCGo!WC(y|CxgY3rZ01)j)%F^2`Ey9wEBssML1VkRO?z30ps)cL;PyD&5;jNDlJ4A>rggYJ-YIFvPYnlK zZWTfoEXS`U<7^ukYp&lm(ns&Nh;G9a8Q7me*+gx>UI171d6dC8vm)-#I^C}ye z6dk8KvJD$1t8YK9{)lc*j_`w77^TxHE1ibeofuAxyx>}bHs>^0_#cqf2 z3fKoq8L>w=5gZPTgWQewz6GGGU9`}p!FavC)R~a^kbk3x zRYD)_OAoH81s^zhlmA$AT6xCODnaEHjr6H@S^5{TR<^JskyU-F41@yy9L>&!|5>F7 zCcJ510>@lFcyNSQQpMXoQuZU?YkFW_#LsyV9&2+4^yI8nX_iO}bQSNK<`-GZ+HMX^ zk3)QK>4&5;wLj88*1TR0wNr2SZSUjeh4=VhjYovWK2Rj6>S?*OGMH61XIT^>p2@u? zRy{$5Sof_zxaUL+g98DHDWYL7B2qP~08I@|vEEfM>MtL=X@Z)Qrz6Shj*oV~6uuZE zBG{>PKRh+2uz+A61;n=;AW_B`D_+VFRV$xdA}ha2X1yqu{9njiaU5$EAKt-+^6SvC z*syW21U4QaH=F%M@HS2@j))zXKOG0TTinYGnzdJ0kolYJG#Y@dISEQSzX|%0w*NeH zgJPRf<@PBz&2bY6BDaz7zxoo#h#!vp)+;6IJ4LBoI~B$9UC*t=f`(XxlVebYtnbKp z(x<`-=KgdFtGx&jS8=Lr79ZGpY0_=t_c!@GItU@)hyt!{OOP_~Y>x=J;#h^C)W$KBGm#P!ksL7JQD-J0E!9c8uK|u3F#o zJmwi1Xtah_gIeFE+nwI-H|>8OHsoA6O~ay>fShY5qWABd&+fM7vmLO`5^;`z3iyFI zisM(vASjS?Hl=-;i zQ1n@w0r497E_hGLvxIx^(mv0+*Z^xfgLo4G)R`?2hn#%h0D;aIyVtA5yDjF0PTr3P6)d&)IvP1n-HH3$+ z6g)&v6zyKG_G65bMycH|EqM>yDilpQ-FuNZm>PgB<}!!ZV+0pYghoY7XtS99cwm?c z@7x!ObMLZl{P?wS7WBRV^VwwT*#=66%{ttiHzOA`4RePDgHD^ASyp_ftMrwTPlioW zV7fKw`XJ3FiP97T&hcA+5{87KdIH`oVG6!8rsoFp&7FF!vbIIj%#!y^5rH(A`S&J8 z;|1VF>?(@P9%=ATupM;a@WJvzFj}sB+fTGMCPD1$8UHp|moGeOj7D^=Qicy0#U5zw zYhD~c01mhJB(l>rEpRZW&e`W`!$Os7@wm*DX@ynl6HGdEjbVkOt?A-7FLqBSI>9|h zE?=M_ZUHW`HYLF#f2BnT-5nt&V#>)v3J0(vRq1um`uQn#p4bv=fzoBEA5wxCj;@?M zx;jLp*)ZjA(fsT7AI%{Rue{EwnCiK=SOdx;+sCt1{@7e|-ozqVPIeyG40X)Q8Sd~e zChFSfYDS_e2WY`u(1pn_h-z;>;)(LH&@3%;zB#+w!GF0Od`}_I?G1)?|7=1xm6ut=?<>`m| z`!TFH7dfb-9I}$XkoX;f_^DGeXnJ;@d@om>7mIEhcfV_JL)hZ-yj->!y#RYqrqmy@ zo^Aq@Y_Y`A9od+bS*mE}e;dQ(&%N!Rgh>Yr25dA2?z@PvG~8ofO~r(tx1Sq+0bm-V zpM%9U_gEhU;@&qS4HV^9-5+)5eQxuBh&^kMW|v}jTMd|j8VVzZ6UHQnNm@v-Uxz z-Kt{KO*IVfPmQZF)}*=aR(7YAVIniX^H3^6a9CcaFROFwJ+>4Q|es8$TTZ z;BMCbo4#P?*7_yT=)>+S2VKwfY4c>{pAjLEA$xw?zR%HVScB@$qF{cQM~W}qM^vyn$z8yqbmNqb5$6XKCE|= z7NR(t*Z6O8p^!ULrBC47QHXa%maQ1^G9yA6ZwK>j#k{Q$<|OKXwDV$;09MJT9m&KO zK4@l}$l>tS3LqeJO6ZgJzVz>Ter}>Nz2)@|NsBgwxH_*r`(S4HKWlr1i2Dx=tA(N< z3@;ptI^Q*wLe9<@bcSoMi@FIY7&vHL&QU&{?)4`x;E@>)bS}|K8AY5ozB*`4$;nGv0(7ZRP4&xlS+lENaWG z{^g31N?=`VY8y<`{;Tyte}9p3+9}3Y7&Pl?U!{z0S?c^Es9?5zm!k1C^fZq?!ozDvqP*wEM%Ary1R=0MxOAfxl&%4M>- z)Zl=BZB1KZ)Yg2z#ibs|#~8)ELx0SeQ55e2by3H!>P#@9qdkMMpY>u-q`Vo^Fb;G8 zJ!-Q#))P^%dJ$>Pd_@iE(ylAhw}LFJofC&0BeR>@0&Bu90b*DNL3^C*(OPktPgxe1H207>9>1Lk(#;+2u)K80LjMf zoJLh>3XPNdoXzmP;=PyY>lV`)=*aX4*CL@MWZK@z2bW%3N`!MVq7!hGadLp73PjW; zdka&6^DEW1c(82bj$_3t8i(Tp9*S@Iv^`7wg1sI~D?e9Agiq+On#2oQ;F+qTTyTw$HAvjAJ`!~9 zMCTWgQQZmgjXUHnpX``-N;5!n!xBiLHBAzS3|lo_^=mj+&#!*#(yO31`X3vz(7dVp zNy4CZg6n0}rpfw@0rCJ0&s1?m5Zu)8`~-v_3;N`GbQ2-Z9Id+H6V2gD`MZrK-6Se2 z;Ra{Gl)0Vuv@gK(fD2DNo{s-q>p>Oz^VrDhwB}y7$sNCdaX60b^Z;P9R;aV=JEHSh zqvcZqkub|86xud9QGESb0ap5HCwN`E)0|HWTG)zmttp;W+_H6xhW;zBZOhNzMF-1K(D zO&seVQl{jF5{56Be-7y8D9Cf%67tm-717cTd)0r;4S@XD1yuUQB+y?A8!~LsL@K3{ zmFaN}s|OP5a!``kMAF`H0%uTyh?47d$2y?TFL!}`mgJ@{UdDjgXl8ZGv@ck}+dTRU ziYv#_FsPG+5G(=pZ1#`pb7=rR_pIQWX%px5>_IWh9hqT8zCeSEH?1t;!(ka~<5Pn+ zu(-m4zBW8pEeO?jL#DdI`cD~F2h;HEV3w21u~R}}MlBAii%rMm`hB*v@?H2(Q62^X zynM+(yVo5~z#Sk*D$9~*y&@wgBC$E=_@{TySmkRfU=;%3KH~psVk}(f*|ev4IJX@U z`KMX`6%w6QIi2bJtVU1q(GO1xeDRNLWj$=Ci}mPi%+kk9$Ch9VrFbdtLhRA+QCApB zXM(s2Ze^p(I3cdUPv@w&WCa9|+MUT)=9>_$e*sN4mtKHix_kKToDFCXOC=R|=y3_! zrS#`EJVO67^afDbazXK=tYBZo7Bz!XVQ~uQn}O`7a=jYdUp5637e!Wwx(3I7hmmwE z#2C#E9AA=Z|U&$`$G7X%vUU@W*7Y%TTdVU#JX|;LAqHD;RvPqBgtE zI*Oh4V@!CGf2U}_p$`$?u4e_l7C`)io4y4;L14o^3I8{1l@Z9Q3lI8JP6q=4AxW(h z1S3w(`2vLm^x6#){T_Mdg)kOxVRk-SRX_jLl!;CZZ;p%2ITT+OpX~OZl-iO5wxiAS ziQA439gVno^8`lVKaT{MB&F_O^(Ggm7{7`Vqg%zlBDPHoa|P4o!dU7-QSa0IKEcuk z<6le%jV8kJX}58k zVi93`Nd_|BbTR$mNL9P$^Xq?a%(lia z4k97faZL(~IpjT_DKRgNZY=3^t+3L{T1vbm#?6@U{Ksx0wJ15^&`{%)g)U=lb3cF8 zPm#7&CEk4*>z_Z|K_XJm2K{C}&YXAouL%JR{GAD&Y8`PEZgr;EBE2E;O(GPAbN^`6 zsn@B;X*QXG(35jc3ZSHua~AnXaK;w$tc3PSA*R%s$ui=uoT##<%1uehV%3v2fhFam zJ9DHf?V4D1q#Vqoz|Te;xI$HlhE^!fp&Sw=9bCm*fp%CWlf4_6kwrF}Af_dAPCgvB zmcU@mAhyL?VfC7%L~5N;0VAfyvCR24rrRE;C+0qBjc^Fh2q-Bp-p65pt6VY_nHl$J zH&mU|Myj-=A2U4!Q=1B@!c9+NfU5A;_?N*Xmjd@ykswsuC-(ejF{^^Q^oKK?P$Wp+ zO;LIpa+MROAe`QCtDK$_MxusSH#W?DBzaH3?>6Epd zR72!2Gk_Ng72=*k_Tg9V&NwFH4iqPdH^Tik$PFm6iD%n7&J^P#UOq*VY*3wNn@dx4 z$tVj-LbO6?+Rb0#>77GQNBIGIY zzie+lM5Y5$(-q@fgFo*damsE%aS{_Ztf5>MSQH}xFLwPawx(Eq@D7VOf1SwgdBDm3 zc3C7kkzkq#5s>=%p+l~tHkgWk@$SV9wq6IVE+&(~HdG8xnNEia7Vc+E3CftkC-4?gstdZx}!12w30P!r(A> z6L%t4z8BvQ6Cs47MI)z0YffV0NpcBnC)Gbrg0>MAc44b(|y!X8pi6*k?)lN$n8vvaNto7Y3U`>83&$x<}EK%ADDF=Pzm2QqmS0kbwauvJF7O z^nx5!AJBX`S&gM{J6xw?DF^GPhjzIZ=rK~%Ge-X}MqqzQHNA?S+2GhIG{a!n2|TfVO7nj5yKHg@XkNcBd`fFR5VOfTL~C+D>75&a z!Kia67_~p}8(DW*Gd?IX%e2K?6Tgu&WNWco?n%hf`-~7`?E!#1jh4fu z$H!+D8ctkG*dxLtA^q1(Pg#b3dT?v_LpRfzn^t82UOGz7US55Bx8C z2*K7VHFa~X(fw3nj@JA`z`|W9!7i356;olQhyBH9UtQ1mX?br5xaTwgG~5+G?c*Te zV)yZZq`m%n`)d4ex#wZN$Q|%SSZZ!Z_sAEZbM>j_CG@fF-@1K;QoeGc%eM1+y5C#d ziLoB5I6Ez~Qtr#f(lk%n9g-j4%$-PTHKL~#k-iAGEazXSpW}H{3qZuX{2X4xd!IBX z^f`UG4Ge`Xys_E7GY{+aLW!A;&`!(Sd~UwBy|%kaa_ zQb{8s9*N0Kk9EjrS(*lLuQJsfA0bw&QjKYk!l-4Q{yTJ*zR+$bTOcP-z4S{>QKdF_ zK1^~By(ikqw@yc|d7(T~hE3O{rmem4xkA0erxeX}ZZ0xCgrWHqP+WI-Ug>dlKjD$* zOCwOpd$>1;G;Ds7*8^yFt+&6nD*H@>I8{-v-VdR^Q-!oQcwbcypZKz`1~Tw5HZ@rv z=JvkNmS5~mKi-Bs`|bm7&n0@}8M;QE$pBw>eK|lR6^&YI1AbAxi>^Aif8HniUWv12 zFS%b*nKE4tou8edO4Q-O{0%jN8}xbX_9LAE1ZjFXqp4+FORJUsm#kZLWfcWFylf?E zLxO-GXekL5Buspc_+_STG%(Sr_r3be28!~9&FHD~Nn;LhhRcY^~kBq5fvnRTcOEb3ZPpswtuFh!SRcqI9 z$9GomaHE0)az+q zF*?B?qV%TG;k0`!%m+o~IPO9uYgJZvR5#&JVRQ885nzSUV~MHg(=}-OQgr*r*^$=P zm^#st4C9s8q!MS(P-H6>9o0tZ`k!bmjEtRN*R-Ua?1~iWc#y|=&CMAOCEGOtw0fY_ zmQF9HlV~3ET_stV!3T43Q+h~(ZGT|}!m^;>%sCD;$^SHwpU@_&n6)d-A`c*@x#B9Vx_JoJ z2{tvHtYWnPj$o6UmuXJ1n6uIY4tCBhZ{~-XT?vjiO!*9knDwTkxw_QHF5M>3c@*sF z`FSd8Gz|h-2&Xp2e4HRb>+k6_qv;h+1SmK==e`O9_H{9R6DL7 zMdT_|+)Y|o4%(qsgM&BfI15R%R4~n&mF!5ElP0cgRFUlv>WRT?&NZt5lE_+MQpAzf zg*!IalL1LIM7sEGiG)s`j{eZarUo2Er|%I zCe`zKyu#R(8bT$SSToUpvMt(Skz7yic1;LDg~dVpxkV*rj&?rC2I)az z`;`~H1wcVQd>_wflv=T~29*)XA*%}fcq3Dl}4zm)^XFz)Yuo{fvIHBOr zFnIQ7!8KXMf6=F`DM=C1m!t{Iakgkt)3nHRlOeIZ>1i}Jl&u%gv)3I$%l5GHrE40J z&!*BsTlggdCtam3JsHsD8Y2P?8i6zzzZ9)S)IJs~jZ93~z~ZI!Er*W}ce3n%c;|NF zVb4gy%731ety?@?ICjiRd(cwry=;1|*1;Vd4vQ$yuRuW+tlauVPWfg(3MGzNMNr1YDKE&{=C-{IHr~a=qmnWac&9mEc@$_F3)QlgY)s5cOML%} z-j~FTJqlL4_@ALK^g;-va8gNdHmHoLD~l#RJ?3cbPk{_@S|En+bZ$Ld5#vqqCF(f* zgJKC4*IAir(xR|8A)yCa*hHa^Lw>cyr29ubYrTCS;yn35s*X;y*N(>s8j{K)f@4G- z$Z~*f_ujjIg_|cEw~4D9nu&xr@2^6M%yZVZ43k)q8PZ5`ETgpxl!UzoG8sL=x|~S% z$%Vj+lw|{i*~CO$#HcV(yGuBYgT02Omhhp;6NN8bpqfEyVcD)y>fEKv=6>2Xwx}vI z4-BS;LqzoII3?>(SdA%eFrRSDr;si77hrH>@z-U(~lTDtBE&D!h@}JR3U)LfGjRUJ7-VU z{QATIX$IhyeQpTC>9za@lL2iiLq7FPr3V9is)KC(JMA}4)kAt?zS&tFBXn9r$lHPZ z%Iv9jzima|0XEflX=N{go&F>bTUxMS>FV+v4o>KX6Id3wLr)nD7u@%wG zFM#rK#1rI~BmV-*=()12+J}bdP`=J5{lO$D4o{l3V{7=&Nh@pB-*IlyF8SE?aQzQ0=A|#sDQ3oJ*^>8 zk-kukrunPn!PTeXBZ~|bw{xP1XtgIr-VjL^39Q{<0}GudMLSnql@R0yZ?(>U-EqZ)zFKvq&a zwU$jK7lQ7cRDqRgzFn#-QNjP$X&Aj$I8sHxmQE6j(zP(JaZp=P+i##Un5*jSpSPV4 z@1`#SUAb{~jnAOdE~d7MlUm&&VPvhBGGHSL>^PpxYp-HKGeouwy1uf)GMWcu;uOz~ zUG;e_a!UMiRlHs6sTVq;`rn%_>xmuP zrB;VdH9MJ-urOcLl91}UQf>my{CRMr{!DE!*Uud^*xA?&jf^n#Na>BXR@M`+8CJKx zJhA6L-|=_HKGRgCR+w|`*qz-jgRI{(l#9is6m9FTEKojQ^_*{03`G+icxP_+zoRb; zjJIY&e|>;*|I?-DS}0#I#jWF>U$7oR^={;*FDcyejvQczv-(1i?3V$+_{MT?E#Qi5 zxqCf_m6r{)v{gYB{HM4d?q)J(Xsg)ys}z5Sd-_^!Reg?7MCxI33#(J!==tdZ(FP3% zb`>R?;xGmdepBDp@7h%>w~BO{OmrCKxm;Ab;VC-9YU(yF!+pcM0xfBrqW6vBRS*qP zd5v0~lV+GhPc6&JtdkgE>;ija7W%K%Q(jkb)$de6+S0Rq*7S31y&H?+`TaoEzSQH* zZ<2ihONiS|`NXej()8J{384sz@|6MBJ=Ri_&x|>F7pXYrpDME@O}h;oSc4+Bb$Di; z4P0RPX+@}~Y`p_Dz}=*Rjh%@7t#Q>rG%XsY8f@j zfP%q(EoN48y&s#mOOPMH^6%$4K7T_zjc*-fw-q0DWR(Q9t-^+6cb&$8b)O%M4lfy~ zlxiEAiJzv?nR+*x6s_B*E^AIpGsRg^VNZ&9>AQF03ngfGlSsfJR*Hl60TcB!nsHlR zH>$@jXpzS|M*|KRF@kj+4G!P$ij|dc?0jLYA`E%d1~FOgHyn)g70?SZdtUUD3VNiN zZOI<&8p|sV`KR1Mu*WJg4=Y3I&dyIC82b7FQq@VgOn-H(6^sDu!y(~SPeBerE4%@CwshH%C9 zXLX}`BTWI;M07i+)qlcaw_RhOt>m)bKo5B24(iaxqM*)ny0j01E_5}%kR-Id5!9}{ z($}r182EnUO_1jI8`(H#s5-1ph_cWzBPr}h>e;Zb!5qF>u<)7V z!DxUh*L=;1Zc3n@#|>e;>t%n|P`4G5_?yOyJC4(#x>~T;r0TGU*S4t_v2wr|9JA{C z$33rt0q;wFNB!R`v8-`ZU)9*X@|!|f9vb8rnC^X}Zi}oNy7khx(W;L!FkASZoszl( z23kQKgyKhKYmidGIb4-mlHawS)0@Kv?3934S_-xf%a=(i`p!CCiCPy=<((aq5wlY% zoKBdph~m`nE{r0CHgMG9Z}4s(i?_cAZQfFm1|ucmF3Fks5rJ4h*C-p~dXj#nk9cd!KB#vui zjEoEC4Y5z^t8;~ewb`8|q+7QK^ST%Z4Wnz2X|Nv;K>eSmZ4p}j$=TD;SM1gs;BE}ME^^!oB3~=^4>fnvWz>NPclw>4oG+|!dQT1T5Q{< z;bwLs4y!@Git6jP-go4IW2eLw$PILbMWVTctJ?5_$V`F^eO!L*7Ebo1yFd@ka`&RUO%ZH z($SiKHSmEV-=AIZjbg(Kk*MzkTDu`6QAn_=i#;_u>33o-aQtnB(tC8_CyRU$_7^t$-pT4NSN=Aa8d%C2toH;Nuwhw8t|~KL zwoE2--n3@Up8g;c3-G1*e_UNtbRc1ujBVStCN?L=#I|jBY;$5vl8G^~lZkEHp4i&# z`Cs1=#7e)B$=aiDeSf#0Em`yi6Dx&&n0@LPp_g{K^8$RTem(rOrqppXK{o{)P3OdhJW*v{^Lyp?iDCLx?am2s^cL7xX-S| zFDtX^CxPF$boOi}i;7d-&HSJKsoMswr^kuRyYJx=Lhu!{S64^b>67Eh=%s|2ssqi3K6R=*I4+!^>XEVm_oio(b4*Tp8oMbZHia= z=uZ7T<8$RaVGa1t;Ll*|9R}5^8+E&YZ;u(z%g-o+23|m&sVrX#&=q}7eEP8joQ?2? zzJvA=@d=6ZcIl3NmNro(Z!&rXM|pZ!Ip|4ps_G)@x${yidw<4NDl_}T76`fD2+agM zp(Bdp8N3X+`uDi_qJFSXIt2h=jRsW*fLdT=^tFK_4j@^Kd{ar?TYK7ioofl$OzLD&=jYOVkJQNg_uc-I_Cb0X9hAmx`U;Q7GWZ(Z42BMJ^&M`esdIQ{%=Oz~6w;f6EB z98(KDkAmr?+{_HUNHY4#hp>o?6#B(T;eCPyM?<81|=gKP#juCGQvq zz(_Y8A(+4bo41zdUL`QV1pn&AwlU4ib1 z1tE$EFTbZ$KZhTlZNU1#y3arEzS9I#MW#%Wt_G9*@{3iyl>!$LW#<;ft5Qb6Qpu4< znZ-*Q>YuftKp`ues;N;Hh(?jTrw_3JEEQ-bb{d&`^A4YsCN4L!a`)cLLQdxMTjEQO^GK=L2yjbz;w3n;C(Hoe=o}xyqxI$q|8X%V6<& zZHmfGUwC-e!$A{Xl0(RoQ*-`JqGIb>B)GVyU7SY@-|VhD7oESDvumu=UT372ToAry zMe%3LCR1a{)5;&3^LZbKe?dlo#-g~iI;_w)k0LKC&Wv-Lks7r-(~WY@I769$Q6`4Kwa^%A5ATPkVkxw4MuVaUCq75 z{QGUS;;>-VsTsgYw#98DCkU3O_G#_qwu|{kr{!EQ)33o{t*^j1J@2 zt-!gaKG-^6+QJ*CnT$?4;=Ym6Q*%I=+Y!7w)?5s%IRM;)LToh$d-7yMOU|;X(9MHH zEWa!5-U_$l79I~CMx*oqeJO{Krw}H~fAJm7w&KQ-TjsysXRQ1#g5?Zu?t0qO>BEFN zDymdNEcCQ3E*8TsDy=PZR8xtc++SNn-TmtNtS>r$&doS;xtw*Jnm+nTlu4_khmVE- zTdR!B%HUgiR+i9PX)NC?Ff-2hv3-;9v+9?i$IbWC_xp2X9zXCxVEyW5*#tCKzB#Q% zkd7G@7t;>>7rlJEcC`UKvLgp%n@=1<4HqK!VL9`o?Xuh0TIQy&3o4g?&mXR(LGp-D z&Bheqx84bZkU+5F)P|JngEs7IsXgg=0lR;UVZjHgDCNBnxviIVS9IxNHzVY@!B)2K zs*b#-?4u!7Wxik@V3gmP1>=2s>xZY^ots~@`aR)CXH;#-scle-HDPajSMt|`TXU*^ zeZ8wvw0H?W32*g>sMkzaM{z`&)bF3dM}WF^Se=rH!l7D9UbNvtjm11=x`k_8q?JX+2r(CDqBH}9@z}Nn`kk=7|nuN z6puPtvMG&LL0Yoli1+)J`G}fIvHqao2>fTdmzHlrr+U>+mBCUuU{^uo{Dz-qcW7gSNCaI<#dF-9F4U+ z7K+a=RF3p=be%+p)IQ}iOQf9!$DgA1Y0lxYOr`^)Yp_97WHd2lX_AU$4mJ*5mWGLEqrcYKic#x&6bdJmJ=^INZ0T z&;P=Eq5^;QJHoiGs5S=)xSxflu)J6Ru>ZrWe9$@jS?aH~r-@oP_IUAu* z+?bf!fk8^;Zmbb1wWW5*7i9vAKQNT7qnWMMd{z6kzr0Ng7u1VW{XHzu%!epGmk+a< zA2+w&|6Tfb`*izQP-)G7<<^kg+~Vs2lkOIkYa%Ewe6T^9)(-=VJ`^)&j}K51Q{JpN zsKv)2U9}wBv0h}G%P$RvBzVzy6i(=_5if{4!ZaKBkrAXo8x3S)-E18=M2 zW<4{zR+3NPkr6z_{0I8-IkZ;ltqfbhV?kEP8z(&((Bg|FS;2lqV8l^)z}-i)PEk3q zFezX_lNT~my$I|SDYmIV{LM84@->JNLi$ZXYUNLQ9X(C>o!!Ja4r2#?oj4moXrld6 zMllRXiHKAgCP0pTit0O+qhrB)d^U_=MY(?(5d1lsw|Imo3N}#G@-r{r{3bGg6006N?dzrLaaHvvW`=`h8zva-zMi*YUE$qm?kWH2jiLPfm~kTUI>^b;$z zF+v^(=5;S&K2XWPlPp(s;c%=wBX)80Ccnlr2T?}nnHwopNj>g}1$vZck4IHR>sxLx zq0Fl%(t?tD{E-s4*@P!jqtasB(RRQrYpxh!irYbnvoEFQQR$++u>t?StbHW&ajet; zhjP+i75&yzb?NJ=tHHnEKrW8Lm?Z*JaY?NKMMUIL!6@3zlu>P}A;AchW=>fIwO81- z7xsWM>}C%dto{_+hA4Y)@ikLW1EnqR99u31!GwdaN?z*JCkr9-_5bOj)>hZ}oV7H%(8uA;>K4zUO zXt`7zf_w-~$F)RJ>qeaLhwudC9zJbQg-MCi^!AfvTrGz)1J~4FjQ#2Q7=~nvaWHn) zR!OAs@qHZXKr{B0L4sOc^CVVeTef7gY_PPc+QBlzIYBNgU;F(ncC0Q72JZn&uTcJE z+AA;%>=;N@q0HR#8)+NXZDz$}qg@Zbay{wl-nN-)TZxq^hNT&XrRkM5 z?$db7V1h_}A1_@`y;5->+y$AIR8SL$#Ec_^BiOMqfe7+iDRqmafK8xfg>D*Mbaef8 zY5kq(E$me$P(9-TRf~(~cLbVMHp3-bb(w@vbWE>&MjyDHZE`ZEa+Xy!qrqEQgK*a8 zy$!>q!k~1_z%(k_${jTpL}Jx~dwgS>a&s(Wse$9!B84L;#iGudJu~_9`)dCedYuJn zeZt`QhYC7F3TkD3)-pM!D57TG-kwswF1Kj8h(7@eh`Eo+C~8ea%=i_9r*DmCFV`kh z|IvUe+-}}wec`+CYf@@fQ#|bt=(khE(!hm^p=Y}^Y@ybx2CJfmisFXgujtI8{qka0%OY3nq86#-BxFL_MwJq<7TXkg zt!m}j;*Auh*d+VLBzq+l!L%fP30T2=dW3T)IoJxMlH2KI_d0b)Ov?hSPwZ+RBe?y&wH`bYbjApVLpHqs$QkoV^pa6* z2h#mGMp7>S-yomGQ2`18Gt)KY9|KcD?{wjX7v1-Ct&)Do5j zKui(Ly>+O!n&^>OyT-*dIXL;X5vX7l2(dyeAh>3vyjOzo2G`4Q+7T7;y=u0XqA|i^auM1Sif;l70JxQ+0P`yElb&&q@ zM`*6yz3$_^nl#h{S~9rsOL9{IB?DH#4nvEnU6UBrDNAaf%S{Is&L13_Xmkh`Uf85u zrk>=mV?)J+I|SSiEA!n3+1)qXq+CcoFhcoh<=ro-zv;Y)Ip+|*1^d+vybfYby^Q%Z z`@w`Oyf;!Fn!PEX2#IZRWGIdKZ*bw+Vs~?_4zD>gM}`1^^eUYXr{b>xD<=SW&~^Kk zsJ>zL7%0rD^Zf{WwsQ;w>4txzCzMP5D`a8&@u2Ge{Gfb21^OYARQ-pYbKD`k9qS1j z6le@CQ+u)*JoG5O8N+Uj>V|r%kZxO?TxRVCCz9#eLU?mSGSB@hL?TWH%4~ z&5c4}YLc7f)7Mi0{L^^5#sgr1$M^`Vd$v(|J_zrK>IQu}llBhG$%uc3^h5>!z}oiU z{Ye$t?PU9r^i_mWVPFg9O(Dtt4?EbQ0Sxn>o-MdHCg{1!D`vc`JjH|btsu3x=zuMW z*$H=Z(nAA;%h#T6h$kI_akS8GH`|Z(uNo#_iJx$9j1-;ylMI7zfZdfA#G75u);~jD z%#XOb=asKpvSbFfK;JGXHmodGS-Sa1LHzg>XJrY;+33J&c-Z9%vA2tn^;JB3ZF|!T za?u#pFBs?nnhMzTm5hU*R?k=8%+9~Z@hi^i!FD{@M|7_BRt7lOElMkUze)R_SVxRF zxP04z8=0+a{AxogiQ@z_%xB_Mjd0C(sew1Mc%WIt0b9k1O z3reZgs5$Xs5G8_2OgxL?>Pq4N7hH&2F#AYjOVBk9p)9j~=fcri)|D)2Wm za;UqBf7#>Td#2`vz+4GNRr^P!#PH{Zo&iDL_4a|pEacFy@G4B?b8l;>hbRrarVp2# z%f&ARV$RS&{3EengW=j~s*gwKN4!qcW|IGPHgm&y!Tal>{>tn6z`-EBvWwT8vySwR z8{Z$`)Bj=UjF_1B1>(B5eCe>=-9N{|-}GAXxq%SzgPdO~ca3oKvHx=GZPfFwCng;l z>Er4=t|YpsLF;ilU1!r_Rp9>P{c{rQMaX;SDa)*td1{MD;C-Qv#d}-h$iT1VYWtwx=~`AC?dAyR*~;1Ae)3ngO1`4pmF9wrQ76GcD-74AoV zH+oAqKbM2zM3Y~<-vOPW8xSK^{$r0Mi(i$re3n`s2CwMAk8-E;Zk)$O6r&X!s9*5{ zkSvz&;~!doH0cH=FylN%_xZwiQEmZHaw$ZJLzHS5gU;Tg*;%=r3 zt%p+|%y#lA4EN0!>!q?`VrwM3t&Wo_9f#FczstmlgAF_2j<6UlP9BlQ=dVB>;N(8E zZq4w@HX0Nxu0uj08gk#ikY^BdzqilMlP>rSJ1R=RRv>+>;EMf%+J;X# z?eB_=C(1XiaOc+meCk0I@F~ zTMEl4&ZHW8UW&Jnue~qqX33NpQob1;e}PmTi>nPWFd!ft=??T@B7oMb`&6^}<->X3VV})qMm)~zV%{=$$TiPoC`d0G zXQ52i?X$gIP3LCkzYE;tLu46oFp&Z#73HP^R_TIbyA(9FGVMlj8q!!gQjy9eED2aE z?V$1o49J8+aqCxe2YG^`kJNJN&a8~D9Ouo;&I}JOWLsj(5*mNK!Ws*mctBuYTDeOk zs*tyw{lRloWp3pzqPpbn?x%IJf`tY2|6ToWP(jBI1D;pPlKPI%lzVniXqkhjnVer1~!jhaMShS3b9J z%>Z!@7YfhF>Vu08KxG5``j6RO0ED#pY#Y&daH4%&>p6I>lAD{%xAW~~GQUWCw&T{o z!CKUFH4Jd@y$)FK8f`P}T<*9;-ZZR{5J`B+u&eK7>^yUS7Hn5iG62Sac=MRd;(qPM zerDo;3i!6bP6=tj^i8{`PX2e?bc3$>$pj}-YOrCEn;)5=#k6BTwT96j2Ina$en}Y7 z<6|G8J6J&^#mblrq+7<6eB0o-6IlOgje&@((&$LuigtY{DS+;y8mMfg>r6cqlN;7| z5;}~bh8EOLsWdPJn*jKT1T}2KbUEe-%jSrcLPt7V8iihV4L8qZZ%op4jGv!ptj#M5oei09m3Gogbl#nVgAfrnAE+-S}-3Gj8 zl@h??3|tAK5{ty`rk6rtQqsP)wGYNr&C|(YLqT2CGPwfgr%nXI@y@T)&lo~48IE3U+{bIp7nM1eZ zj@&p|$(J3?=mfH6846NdXd&sMvvF#)u?gQu3WXfwgeYdYvgcSVAdf1U2_on?@Zn_O z(r`;5vCIh2a-#huPImh&!I{Zu18M34u?JwvG&IqyI1yx1dgPoS50OE2`=3F!%PBLf zj(2}q#u-Ev_58^fpLFB@tAXZl1U3I7di)DDGL67RB?q1Z#CNp!Yl92|e~|B|dVS9T z+aHaL2%yzSKDSsmoPp{=tORjIMS)I6a1=Wo`6e_gRtenXG;=A5a=M3dq}RaXlJ zs!m}H7Yu;^iO4de3Ga*Yr%aD9LhVrReZKj|_$HI7ml1K_=TEQs0OlA0D?z}S^kev7 zFHjND+;rKdvtA=H*)ZOmlAsiu6)~#6&T2Myj`L2}MOnQB9B< zM*=XA5m=%cof#c4OjLV31WEJ#balVM&!;q-AMhB#7p8E2M$HB&NPp0f!n3(DH3-EG z7m?zGm|X{uV60`h;y0w|bXBV;O`nHxc4ZZ9bxubHBJH2w%VMLxf&8mwyvdWb%N**zmd32%@w$=(kY5(%&fV$#S>m+oTZO8 zrq!=hPiSht^7CV7I%0rl<;)+*~naOP0+->uTj)r`2^16 zzgCjpo6_@mm+`tkE`qnlt(HFTr$(lBn3TGo*G5-g4P^h(y-r3ptDUj#{n{H-5O9mE z_InJ zSj;F;-~Mr3p^-VcM9joD?|;^;lLwSNX+G_@c6IX$dYvEFZ}GOB^kvov5lv4bf1HQH z7VMbc-4J_2yX#kU8amV=``vgDZ7e&xRb=4aS&sxX_&mFBrusyt3za#!?)ZA!t_5B9 zQo9=S{2NoT$jP5X$~7|+XW+HmKpo~Z`T>_Q?ac5f^Lc6OeIUW=ty^d;Yuk=rWJ8FpMC9Zs_c(mc zI*-TwM%3l`Os2Mo*zcFM)zZg%4u+^hj^NGjWac+hDQu6!uHGLN;X*!pTk#W1DbUHO z8oBWu-aCsnqjfGj)$@wLMmMJqhu=ZsF2`5XLiZn# z`!xgs9%xK8kRy;F7_#s{wueS)J9mDw+u63gRy@E;grnL8dq>B^0GsESX=7-28FKb% z&)N_miA9#r5>$=t&E%*?>(x#=MQ6S4g_hgPQ_aigSB*8sN6+&ulSKdQKOSc-g1)Y5 z8)3f9n!0T7UU{B4AD`KoK>~RSewTX5J%v|r1;Bec5I`)`zT5%s6U;4>u~h7amVBeX z#j5OUW#;U-Xk+a-@*1z2qmcGGPq;DuSOS}?BTxH^DwbMRaw$87xnrJ9JvyjJz8Xn7N!Xo+EjF`e{XKEO)(8=MD zER%XfK<<#3I6FzC@~iM8z=Q;3nMNNS)K);Fb|YTiG(^d8Ks`{pAEXCP1gqMy5jGJ$ zuz%Pn2vZ6@Muir{ED8Rgl!OMGa+hvK91z_hD|+-#3P>zvfM+9Nb`TdAF_!!btNx~M zP6eSwr79y6gWp#9RR1>{)iku$^mqSwxP@k&TtY@M*^Uf%yiw|3U3!)3a9NxvHkbDA zUevn1N-8+|G)XsVJKtg|%)+pv`#UhIO$dfgPmSI9J7S#>)t4|TZ2I_cmW>VP)E zeW!`h)7lOZY3H9DVZNAD_nNI5Clsaz!_gsz@^fh=Jo}V#co1Pjjac4v+ARZ76zR*y zMs655RCF;k_@R)y$)pB8*(Oh~q5&>kpkZ4z z5xOwBSX4M4Jy`wVO|;n!1L#c9g8-OAwrx;vwyZWdetc{nR>3Q|46fKan=Qk=iK^^d zr-U!@LbB#9Q=R~u2F{tzpQGAuGoJYOBlW~O;0Lg__jm79r&7nBZYk(?j0YhLN(!so z2MhDuyw&2Z!mlA3#ubJ9k|qQ>w?v~}<>Vb0I&X1E-kjfh-gDPz%T<~br(pkvKw$XlKaT1V{>Qd~F$$$heqood4(cf%JOwV-d zupJdk&RlBUC{6a7V^euD1ZHm36aI{ks9v|`+z9ybE!Fu^@cU73RX8LUnt*i*6FYNwexn)+v@Z<=wbF^<1a&%7t|E};lK z{0??C#vHo&7Qr=qhH9GR->yftesg8gn+#docdEVjt}+vkz~@B?0H;30ar}n5vx|!p z7Erz3L!wKXEnd%y22M522zi}69~rL$1!LIe7MxRES6^8==@!I- ztgd3+qoEt@owX%z69&NR%|O_UkcMKlfBn-&{Q50)6%R{@1N2*t?DoI8@1N+BA&9lO zREF@jq0rmGwS50OPUHe;;5FCmab)UrW&` zUwRSR{~TcN++e5xa5*XMYqg$xX-n;NJ9NQgSKn|g;Y3XW;5+fn29`21_=1!eW2YNsEV-XXp12N9iT44Ebpw3#e& zMT@4S83?6=7Y9vKv>TC=5TDz(;h zzc6t0CV84A^=CAHEJn+~mUkDI9*#m5n#gQ$GG@^NO9H&5ho&JN;rTTL<-Sb87m$0j zle?Dw)KU_eDApj*k?rFgQl4Q_V3b;@nL=0vEX~47{3FM_8G5D=bXL+FfJosiy&0;a zGyH7raAZ^R@N~a42sL6n$>3i^0x3pK>C8{ak~D7EWUD%Zd?qcc%x+rcC2r|I=@DRV zeY2Lp2U3ZB&H4p(hi6NkN%l5p4NOM`=Ox(AdyjVEbGK|tx=W(x`yyrLC&~|f|A8ZD zB4X@b%{zogSw9K((LXGx)H$aPndGtM6Vt59`ck!^6Y zL2bLrWSo*n^6`*FRM?YKzoLmn=vrQoB1U^)R(%Y<*Z~2|re&yEPgnQ45zH+)e zaE{;*4PkrR#32E| z^7geGhuKesu!S}h{U&Qv&j9I>=9HKajoCsq*0LS1p@Q-CdX3QQXy!yXsO>AQFzHv* zJq!UsbdU#jE+LZO{7?lKXvHDPlrG$H<-Ebj3%HfXcTywM%H9B=bdFS8JuiW3XzP`e$3UrShG<7cdAA)GN>onK zP))I~u7Z!={>()O+nOTI;K0sN4j(rbC$gom1A@arr?OJqvc;(A(j+DOO?AxtCZewv zx(!2Ofqiaw7RzH&j7{Mk*DdjuQqb^6 zwUuqnpe?o0Rhwi)my(mF;=qHn%fn&}Ik#E%PZTRw(C#|ec*8uvLaeFAVc5NSaMiQ1 zAD`2--A2sa?@v@5oz2jD&MaWfyP%vXO(877RkBf+>mJT`u?o@>W-GQzSl!^EwW(k^ z%oKO?Z*V_vy?sa&zlJ5C;|}y z3izQ@F5_?uYK-$>whJW{ww7ByR=|b(p-(pJvup5$vty7O&)KiZpO!12RJ@+hn$x|~{-DqfPR1zw5QiR)Y~2&R zBX8;&jJ`c>1oMffuPDsn4s>+dAq80b+c}C~}|p?CBVv$1dHHL4?y$zKZxX zvaRR!waW*o>C0duzmN4~_VlbveS`u(;3i*V$_)q^TsZGv%>{7SNebG8-C8;Be`>cRo z=q<*0ro|JV`$0?-yYUIP41Wpyo+%iyf|TjHu|;cZ_#D4U)$!ADkdb$jK2)_C+jf~k zBnk7{TMccl>3B-s3qHReqS9Z<`FLvl%x;xx1xn^%1o_psP45-^( zw#L@ms`z=L>>n8~h3q>YXJ6}uhHsd=e=!sKoY`MCH*&cX==s|0x?OnWd7ZqipZi1` zydOSa>SwHZ7{A4@XyDiwKCp5&9E5+q9Wzgb$G^Y6jGSFozg-ZIr$1m#<~w=fQyzg= z0VUa6XlhXwCbrpxhR`cgTH{2<=;!F?+&(|$|Dd14K2W?$JYZy**V_g%{=w5Rw^-qE z&lMOG?DLP+GwuHPWMFw={_lUhOE5=u0yqfBa(bmO7$;z0`8Ap3cCN@~?#q?5OIbJU zF4C7ac(gB3WOmGVMq9y(`{<%wi_~wd<;Xt#X>OnVr)PXE@&im=#2VGe?#fz@1y0o9 z#gJ5DUd2}iK@+pA5!r7RnixZz*!8fjF8r>F_v-qUed}^9V`XbR(PV%D@Ii!XAiS7eM({?0n(RQ-e^S`Hr7KWFETv9Vq=Fm_419a4Zmt ze0S0;#>f_1uQUVh{bn+X5Qu6LU)6yo{B)F9}1BudBY>EP9 zB2m!D^~D~@mmFfTZ&a>i{qIR2Gz<;olyM~>*)YQteA#v7L+2oniZc?4`PzvHPs^m*y{g=@c1Z!5AXYLu2O|_dUP_+~#e-QpkwNA4erD8h!#+P8_F;?ZF_z+q5%k9p-kzuIThH7)h zXP4=oPOfyq!=}H-#qdRFxy<*-f?CYM6_Q^ov+lT#O9AUR4^LN9e{I|yD52PeeDdAu z?30xh1NlpTH09g=uo;ftM~ELzy+jNMeheJ}Im`aFd`=CIFYP1nS>5_7Y27Gcjq!rC z{MKDn4)$78F@aU*H{0T#b_d??gkqkbe9mp2_vVL)m!n-K(HhjuJ_dqK&emQ2c3;P` zVrMI7UM}9}sAl+%(z~OS!_vx@|L0-jYZPG5-+t}47oN9$C*lJdql4sU)58Mm=u^8H zQ-6r=T(drH@YFp87tjs*-(M`1OF=&OS65B}4+4V!zg;;_x}P{04B%k9ZjKB1UA|xY z@E{-gK7UR{*2u4N@HD4aBbM%6=>17xT#KU$ElAze^HtdGuTvB>Nct00n3jeG1^3Fr z61|9~US?}tk?<0TETLAA`Sd4Dnh;?b3lWiGFb@tBHV}p1J)1G-sY&Z)W$Lw~`|kTEp$w*WzvS8nG zGH{XZIf+i^0tMnFcZGHpgVeecc0R#>%%vr0JkkDv#&gCWfjY)3A@=e4l57sJlMSFz zzCz%ApY!9E{DLJ=d;Jcxz z-&I0M%80&^U-wwhb3NvCIp~oOl(EtnQtO=1z4XC;1z^u!h$sY_Fe{(=mMaRlc$he&nmGB#O~$tR-`q8y{Rr)iBI;WVXH!=@x2$Jf=PB@QSW zRaXag4Z>bJI)%l~bweXN!G>X4rXaJ~?h=JYi;OnjvVC^UlStaIPQY+POkK~nq9vN) z$<2j`1Ib{7J(Kq^#T?q~1=mS!{1h9@Bg%mRCO= z1dnQ+ru-gq)wM{I=sgMd^Mln(kD8_rYa@mE0c~WyEh2hf%OeY_7KQMt=qt0R;MIPT zr9fs!GOSC}Nv-JV7J)2%35uY1z*wf71M*{T>?9#|hVn%Haf;-|qtXmJam2Wuv5$!}XT;>#CC`@1P(&-Fneys3LB zcsxU)G!WrQ_|R{}NB;Ig(hU9Gr}k&>cOW1T1YBg&P(LUT0$h3$Lc+HrqFvcY{NEvA zlPsd!FZ(Y11F<(yRR5z6-DAo8B{wz-2g7lPVO-c^cC@^S?}aI-)1H#ssWBu$TOdSf zEJTxFvml`PAcJ*|aZ;`!K`|Jp%zrZuE`@J>2soc{J-J^9Fd}M13iAf*f{6~aECJR7 zO45Xl!;X&O#a*YhOvg`8$)mA<_Z|VV~*+U|LSI10Q^RzE%- zoGhSJi21e7=kE1e(;L)VuBXtTAiz~?$FzM0G03sDzzp)y)=-WC2id5!Jgsk*>wg-% zyj*8ukUur9@lU98kMCW6jJfM>BQwLyicrAFsdfEe^ZQ)v8t~EgvQ_k*Y_^TAArY-&7&sb zCcCj5p{n-r3}M)v(5M|m1fq9I9zHMLyT9@N2KwzUi$K&?cFsf`-VYX!%{`NJ;y?`> zNc{sB8s~ff_!R!sXSPY(c=Q=4hLkNGVYy9pcA6QcKlIg_Q=>O%l9Q-X)n)rNQDAF5 zn62^SDu_dszR^W-&5wd_xY*=60EtWior^}Q**_*S{-Qaz)xcO>7T&IKt z)Rj41jb{YI>}gc2m?qB*RZkYcW z@O8Ib9hN0;aerROM*B$(`IqSqPWFaEfA^cH|9m>C>Du(&-&!K-eprKd=nRj)oJpU? z@g)eF!k&SavOe>QHAt466UEBiAJ}nNXAHvd_=+dTr1A^8aiUHy(Ah=^#NsxW52=>U2jXF#L3> zFa%_vQO(8{Lk**g-Gi7tg>f#U7+HHIkSsIhpM4;dOpI-FLzqgwuxtYHzsY~=8#(SC z=IrciSW2`BRCG{q*5l&Cg=q2^nB?Ndz97=*EH@EQZ^6Qay(k~~P%Nyj zJ9|E(T9kwDOd_t?R3+G(Dp7RpKU5Y;D$6tKQq+~qkZ0x-KVPqT7%PPj6q&tCFdx?8t$c# ze9J4Jw5zXBBw4j-FBhxhRSWk6kcz7L7L^Ts!$4UAm zYhNf#=#UA*r9mrb7aO!>W|Mt56;_rtKtI<>78~T&Px-=apHfdvjAqv7rmm*Th!OSOSN^Pg5S+5%z^;%;1nJ_Vu*LPKr9!)Wl0 zQ3zj{?-`HUAns%`QKgC;ggAe7=ZLrNode`e!5>N3aaSAUvVUQ+S)ONAOF@3~x|qZ|)`c#+FN-a4=UutKB&)4VCC?2|ZMW z=WgG_=T*I{md){GqIwFOu-(zD2dfq~DKQMADnH$n?aw8nmUL!RiOfq=U|`&WHCzNf zrK0VZqX_B-h&PH?I;2i8AREkBT$$GV)w+z+|Ke4P#`Ut&jHPVU)gM6QR@UU-w zEJev7Ma;Cwb>bo;qof%{MWTxcW~t&Z)pJJD)b2lcEICb&NB-zN0%Em4=1rSOlK+_9 zb?c-djhOU2Q;d+T-Z-Wayet7fP%ywP)yS%PX5`OLLgzMloR5RA-Bax|R!+|3&hb89 zwoBCBSIs;ml)Ufu)|mW<6a^X||9!;{we0Ob7!V6Qovym*J`BVOQDO0OI{iKz?>cO@ z!2An(IkvHsxiaC915}A==<#t9ypjpueH$3Kf863>@q9{+dhUKTA!n}AUcNedI69jD z#M-zyUDUbM*K;gz^ZL9;Kdct;P$2j;-C5Dmqkd#6>-aG1S*shgemZ#jt(eW*@ETk2 zz9e<{@Ywn2@3uW3fB(DydoS{mXSTKsvo=|6f~F)lb^Zha&BUtz}6ZywUzg&ZP=zaF)Vc);QZUjk++#C%!nQUnt zxg<4Nrx%?XnrOEpa46VFs|`v$<51c%h$=OGPvl(A7u60EFQp5F`-(HaND=*Y8AuqR;9^I4C(v3PqGuum4U5t=rksjc! zEp4@r_8V9d-+X5kj2wUUuhlj5KxT-DV^wDy9tk)g>+P^@)eZu)_10%a7n#l}vT#(P*Vof}@0M(PFTgu<$!l z;gqaWA~PXi>@@XQc>~^tned-Sj!Os-e^}Tm95-o8EOz(cA`n4*-xWb1E)gV~Z}B?w z)5P81Z6}r9K<5R`FYqqk?{Ydlat>wbdljiZIY*%bPN>64NF8J3oewzyv+6aONE(EM zH$;$bf6!=0cJyzpTV+;kt- z-wRecVZ!M6Wo6u*Rf$Z@I|P$=(ZeDwy12 z^2GLnGz$Bf#28|mZLt!jTcIgd_3C^63bgAY6eP?<6SFg679?*%ZTi_2YF+{}838Kk z@4oSs>U#G>cZc8(f#B}$?(XjH4u^f}-iLi^s`_E7x@umgdadsMzJI~+&uK4g7c4(o zEL0!JZ_r*}S#U64lrEyh-?iR&&Z!VV`u_e)u-aQpSNn#6TUY;xj;s`$DSFsOJ@qe; zHVm)9BM8;rx^|#3_^O`#`jM!8^#1>=BK6K;)Q?N*ardMH#H250BvbH9tV}m@T6a~< zQmhRAwmt#jDt%7@A(`Efdn>y{t*~jMe?Fv5PuGC*|_F3x;-c- z7hK^8WF9rNbpz4TztgYI7$2`x8OZq5;Vx;@VKYZRGOdHmo=S~EBJ#9NoXXg792-m53`r)@7ND|z>mqgh(hlwxy`!9lvB_I zK3l$wIfRM;->I>FHFi9iz}`kO9|nSsmHU~=>6tLhnp*4Xi^)y52=%Ag)osFsaoxYG zNr%zz9v3O?7Z-|-**wI&pA#!9D=07H`xN(UhAfNQU4PWBn=v1C*BtG$``bCjye}Ch z`;X>Xa?GiQfOAvD0UPoZ_MpNV2cI9eN(J!C;IbbBHJ866Glx$PRig2~6lxpp9-5fGCK52^c(Z9Xesj8mBv6*5*xLr!jZ1rWm;v#{7o$|wkB!IILr&t*_c zmY8bDlk=3IMg8mWhY@icR$BX>Jn*wQ@j#q3pTLc>J70`3O+u(Ps|@E?BG(g2qU1=m z5-lyd1k}f4{9u&ELRq|`;S34O!?e}1<7N9Q;>GT3ei#Yf>dCS^`|+SDtr1<*5zL9onMxJFTW7R`P2&V{jByh&K`xeA?pv^d%`llir))|*|CeV{1&?ZdFX z-0;3)_uh0(w|v-Lb0nL$>0%(erDle|TwTWdhKtWUZcZqoU7FDAeR)`NQn}${ogmHK z0`R=$lg%=>^5DB#!i-t}7|>WIv&A*9biJ;X6*!7d1zqk&ed! zpWFG6B)W-CdgqUWv4-m3o%iQ7G^3rCBY2@Bgk&2YhS%$+pI1-An^~`M*8zT*OrfMF z8-vzs-n;RuSEhC_gV&UA5FdCxID9dkk#yU(JEc#gZ&W%1d;^QuR6gLJsGSju*Vb>p zS-hY>>t|=gcP-sebO$E4Zl9QWZvjrY@E5lKUbYnyOBCy&KtP({KtPE8(-7e$Uj`#U z1NADFR(PuD9ksQmnXMb?Yhz`bmYxQ-J58tFOA`Y!=LLpb(SMk+l2?=kx_AdCmQGWR zT^8&$h$>a4{53GaX6lMj{o*kwdj3WI<40qYFHk^1`GLbvCEu5?JkM87M1zXDzqY>Y z6!G*M`*`em!u9fbqS@8u;NnBpr-bmwCh+pKw?sZr)~p}c)QbEiA+%skomcfrikowi z)RvPj!}XYEtS?hOWS<`^x`&K0PrTF8Cd-sehbNe4Ms!pZot-_HCLuYj&#O;ek0+#x zv*6BVn@N&`#PZeAnD|$?C{AMh(GZ!S6ZLLBs#XC--K_A(LR7g^(CWo(C@GO45@<_X z;JH2al6TfL5x=+SC%FZCVjT6*gTyIWKA{4U)}^Su9~G@gRMi)`9XNoTmssdC>lrGB zX@))fDe~u3y$Y7TM?Sr!k9K5u#8-)2*1=vgSnVJYrFgC&vJ~8LO{%VM^_tFuV#hs9 zQlKEEt=x@rA1*A!o$n9&u=S){H_%EN!!6#tD}?C|WK6>mvg5rZW!}s*VW94!Ha1|v zWgp50PfD6RwR!TxUg<{tY~A`BuKh0&Ij%2r)KzlLg9P-R^=y~+8g;+o4{lrkdfg&X zQnM>+po(R7=|YDHhu=4p;s(xTgUSG}zim~JC*M(Uh=`r|`&MbJ_#?7qZvh?(mLQLR z?QyqvzLx^xNci#khZGX`IS!8gLoMG6P{NpdFyewiQMUs51DS7Fz!pDRK}cAuQmx=^ zYiQ7L@&RM3g!gF4H^jbihMAtwBnb2U_s|tEXT_QA+yZQS!Bb@Oop(lMx5sS|^V%R9 zD@*V^1Z?XFKYG}jdPq`5d*HT#2u>-Eex8@)J45Gzw`ZJx)p?Q^pkb4@L;Y zS>}FN2Y;)e9Q!oEl?C=={~Yr)4E9{h(7M`&7VF$)(ih=aSdrldi4Yo@kRL~Ont@i8 zRpmNq{;m8m;O#sz9#l^0$rxL-Q!F{2!9(Bvp=1;ea_Il|cdEr{ZvdvgvEbwk;A4s< z7R@lB(j|)t$IHsi@ytjQOT#sY5oVF=%fRqK{Pd5E_7@7Tj1#~6(`?eeorZm#upm^m>foC2KfcuV`ba7YL>Ou=%{#4@e@cDYq#+V`ZAy4drM%BWf$ZktWz zGl0LMdePATFv~d8pUe7DgUM=n%FHte>p7afynpsaakj6`>K{l%B!c3OD?RHhgH;-v z!&q^p5R}a3=JtG9Kc;S{^Wgq*57THm16>p_)5kVFLCq41=#B*6n31TroD=0@`danc749K!c^ zHE@bG7PRL0H2)f*PsZ!A94B&CwZs=|>`=e5HEA7JP*(`Ktf)&FY70(Fu(=FUBpDRP z3&y)kBuykVcrizdZ;ur=!uRW?5M-WznkyPh(+Jg8=cSg9;J;z*G4rI;?a!6$J$=$P z57nK7iw*;0C6Y&3F{Z=SBcHhx2s9U?)Mi&h6&Y!MMP63-V@QhwPO6G#^7FeIvk>y125mCzk) zD-Vs=ud={Flxams1zGT+O`BdO`~3s_>7;Gv-M~kLF7DbFVJLIix9)PauKQth*UvOMQU@^FM_6STZJ?~_%!a*~>yux>S?4Mm`x!o>-171%>Rk1>8-#%5R9FKY<+OxIK z)S+p2U2UiMT~lZEKJHF#xO|LTLe6SS(Okd(T$)YGrj+&jM;%hc|DC6^%L^w(MZt2XKd;3z2d&m!qExGe^yZ1u52YC>s)ml_Y=1f+72U-kAE8ZTzH zChHnzr1xnE`*UsiR5dEf4+f@xje3>dCs@S6J>W}7RWa|RC@aYvHB>4y<;wR;UhOs; z0T*QaqtT?g4!@4ivzU8#R@>kZgRkF5&k2v-0Mp*oCw=?9|$A_{5uuXAC4 z8V6#H$l4tmA!?M0F!;p*NP97&FG(pqg>YcMo3Ip;h*%)iz(NxUr{&-qZ%ECDz~sJ{q|q zB0EKgOr{(V$}<_aV^FMxZb@fnwDBA4K9q9hwrgTlvMU&-_A5teBmF?D z^28dQp@UFYQ|)m1<`JEtiBP8mEcn|V4v8G%1pJbv73jjqF)J;nPmi`{^?z#LQm2Dd z$36eSy=OtEDF827Cg&3Bh2I-7Md-#FhR~V&*0=1nG`u43!)~?%acX@0CBXDeAPeha z>@FLpFTG9WNBSk26;)Lo0;Y|UmBWFBTt;`LP5$#tE2q_ARU14ecZ&xUC>xKcs-BrZ zqaKHn*$apUO}h*_=*(&;QdkBUiWU#JZ1k2jX$%oIe#LCYOjQWRodA$1{A$Q__kLGI zSb?CRsLHJ#h~DJd-uPnWqqC0<6Hx-^-O5t!rL!rB6&qkPCll7->X#FU0ihK$Hfxc6C00#l->jhUd|-Wfr&H zPIA$U<>r_}XZ4>++3^?zf_3lbA#cfKuB6MU=x~X%sq8ny%Z$CL>ugp6k)JJ$2N%FRe21U~2&C@V1-I?IFQf*69tFt$OpOZ+^KI|OL-pNUjo9-c| zl#|k>!Kt(LlzrYnCErG8Ju76x>dxjHMW zVuWEQ%H&C5CJPnX{c;MgV&QG6^tf&2;5;}vt2yRGiKca6Q=loMa8DAu9@XIpK;jTL zRQ}WXyKw5sb=Ki-#8sQGiQKh-+@Z?a^jma~%w;yuLqw3kIFnog49N^M#)sS90{-p` zhpuzy+Wo0)Tel}4p83n`{_dD%N8-z{YUj(&{Ox1H+xGb<=j^iM!R){y!Lesc0~)*| z(k1U^h^;4Za&K~%^|+A^d^o7F*l4x2+}|+8NaF)-ExUyG!^?!1M>elFS3qZF>0ZPsi}1o##I9`P-ZCMx!n8m4VIYY%A8;neXrSMbSJ@dw2Pm zCaZ&kS)b|@UMB$yI~8>g{e7CYv>l&IgRhs*qcNr*AW@Nf%uk{Mqeml`DO^Ls@qT*}*4tfIyF>|u zH$UOUStTM#=NS8hu<+9Lu?}Lw$Wo_`$UqSk6*X&>m(46KEFOc@FO~LO50W)XGUbRe|nDJT8ej?o&JhRHn%TmXVJ3v zA5~mEG$<6F?fubWkj`W=Wl9Lbqj^vsnSE}!9xF(&9ZeqXuW?}9ov1q;O-L;cYZxhZ zxYjy!)31rAE0RSoq>@=Z-cj0D0$$Pdt!?BSUcwxF^3-UJ3TI?^H8Vyy6vQUbCr0+) z%qjmVh1(t$!O7^HJSNF_G8HMyhy++CKo;#dCEl+6ZM#&mZ&}l!C?tm`U)*P8I^J<> zaiGfPO`hz0e=-^0a~pq2V-dXstsRZ*slo_#^V4jd1A70yv= zXq@&MAFgB`UtjldS%0G)eST6N&}|h$gA0yFtJCi*tTDRb;=;^N!D-(y$x01Cxh9#=2qGPT(s--e%|J>|b4GcGO{c+H@*r}fFU%N9R zI2?>PCA<0KlyH8%)UUO%%N};tlQGSG(Wyxg84-$fNNsNQ|qvQH*610w_#NftE&BLjvMidlEgIg7<>tIgf*(u6$k zmg;!f%R|D9H8x9SU71|C-u#@RM)4np&P5ekWW1wZvKI#0w2h@(esce!xwdL2^Hxvq zCk=L@dvNu>x;#oX*^;1pIJ#4*9d=48QmXyvG9E-~{Jw%3Y>+tIyi&wV;}q`h ze1>J0vOsL5xx)xGy`%ZxyZ|Ta(Y#4(e>r|Vb z13<0E=ULWfX*#e)+&y_O;RrdXiYKG-oi9-UqL{2rR5)<-2ZDaoXhVX2v;)oz(Vmgz zIr3Oj0pzwlyYV;dxX$LR5GXHvS9!qSD0}(e%dRNvI(X`}%>f}iT?DC3qK_1nnKh5wBiL*cgLQQ^ zL;dwS7|BY?7+15hLaU~!!l)r8OH(S~(u1CP-7I>z+8MSmK|gUQmc@j`OFvV?v@T7@Rn!kiQ3&FZtZ2G#uhC zt?&ewK*=d1qu+~55KizGu6s!VucBrr z8G-(-5H-uln3m9vv=_mQ`_Sc8Jw+ou!Vv!-xuy-D&PkS~FL>6?|b!l=Eobs#sQt1ur_alceX68t=w1 z8sZGC;BizdlnIO<4Viry#{ro~IxsH8s}u7}SvDrPIND*>rVz7QR!6jO+ct397071; z$QL>^?qk2J3keBksDJ~akI2Ad0qlSX%PVYrPYT1y{2+Td`T<%XF^4^K)S98IciDyMEe|!i z{(&6$r+Uw4;#CO!IY-B<+v0u&im*?|*B-a@))~q~yH4YT2d*>lFy%-`5V*(97jMno zaCj#8=KPk~VQOk$|j@vk8W0e~Pis)wz*`?B`mig0l$vc7%%SDC*!6RIMgz3ozmt7TnWQoYMz4JdV)gi;gJuPpB;gtoa>Hzgn#62% zp0UWPlF_-vzCBD}`(E5X?1!QQ$OD&-&$d+WH`5iu0DU7I8+yd=v-FIJj)hm$lFupo zrY1;^T4^6-IN7*L>K0RhaVA)Vac|Q{5ZfUAiJJ346m3<=y8r05D0qmFV$r)e1pP;a8%Q&C)bKO3P3H>%F}OXyd17}W80cEW#TuDX zQal&prIs`3uuM8foHOV+e9w8EjZ&9rEz{dQqlV#OGznN1N%I0(*@Oh>0K2}Oy^yQ= zz7eSHSWDyTz#0au?&MaX76y>bQIF@K%eP$W&F4$!U`YeVdxE6-)G#N_uy31l9^4+5 zB{!Kodpr2Rwp)lbU8h~!Pu4-MHS-uEK+e6a`mdx5RY* zn8h#(N)U7py$qa|3Qh}n@B(nM7ifI8RUkFICW@fI5#s{C^zufAYoeVb91*FTD90ql zH6D4^G%tHJ!l>VcSp^j^*(eYLKb6dWBnk1t=+`j^O_%?)&tE<-ac>+MOEC}j=L9@L zvAw5Q=SRtR;d=?bHVJ!90ecS?2y%KEa<_~nmaH!IHBTy%A4D@GM8ptvXfv<^_c%o! zQU7!R@{+}uEoXv~eS23{)vx>3t4)>gYi#TnxPh-^+a1%;wl`)pF|C&MJ-{rY{GX72 zD==#HC{@g+lHWChmuBASML|d9x&{PeyM2w1D8ciQ zQCEj~ha5Il0;4Nj3``)MqJ<7&TKK1$c`2@db2Svs1q6KT7gi@;e>nyUyaAdMvp`ITIFb)E|b{W-vmVt#kVxT>4&e$VLzF-WnF3j z2A{~~DCo$XrCN=TEEj>=4C2+CA>w|tq7>qAIC&}O=tQ^e)5MXBTA`{lZEM+Z6o|0g z?*UItc3gYNiDMv%^dAfq+mFC7BWlubBth{**$O5Xx(xZorPr>wL39_=D0k|7!E@m@x2B%GnaF zBAgFIYYzY!65R&l)y#aR$jFYFynRf={vZq3oIHFQe18YYsGYL|*^oCp+Gz&RF0&O4 zDcd;nF1PBbUXG~+ z+QBdGGEs;fR=NqcL!%KX0Bn~#>h(KFnLg+2YPTSYK9WUj(QoXU6QyNs&c1f{R z$&pZ{@$xPYUJ%UC`*n~vUo|@9Q%HmMtOSox_G+{bTgW7M&?Yfz zKA0}*YAuqah#@ej?;@#E?vNHeBGSkw3GFLzRhZyc1lYIo7p;eBNRgke%t;aT;-kI$DwalNufkIx4e7d7B;iE+b z)k_M!qx1A&VDoKkpm-WLlu%-2a8lyCw89~n-S8gmB=lBD!47J1lQ0$SUtvOJErg#WB2Hc1AwtK?WhMONOIVH2C2GEGK%+D%Ca%zfbnuC_2@o` z){i7Y$gROXhaj~Io7YxF zJu(mSmMG`rk1yP<1V8&p^OQg)TMs_EaX-sL<~3aop#*?`NaA;G>Z>Us^>mif_3F;) zKh<(VWEbaOOA9H-QH?7_t-J~BDXJxvb?9O(77iJJV=|6qi>ycJr7>v=8oP-9Ya7#A&rmUKDX zJRE%vwFFf1uOO8N3E(qRMcT9TH*`zIpU^GdWyPP-X}1WKT#!4el-_!tkZG0?dO~VA zae|P>nkauRLf51TkA`dZaIP7UYLqSf8EhKZt|p5jG!tFIXXqaaNn_ZFUNYEQq-l{G zJ``L$tnt93sTi$~J`VsA5;yDEN2aH<`N%Q$;uxT-rGtw$G z{hXqxCg~(zQvW;7#7^m1?DQ{YPLl3>pxMX;>qoSjMX-{tP$%6Ya*El?32an}5b6Rd zHU+|jNC~*=ENk$ec>^`^4gn7AOJXDGl0Ec+`s{G<@ikM#hkq&7F!Yg7HHVW@r zzhYo9Aor8Rnl$Tbh8<=vH56ag^XRoL;byJjX6p;--+#aXc|==3u8J-g%KiX78Xx&D zpCJFM(pQC7`>u+SrSHF1DwT5v4m{z-)O0oF=enXzk5@{Xtz0FOJS7Cqm14p+TmvE1iq2TMD8xy zt3ip6AuCgAPT`)bSN3ShXSPPyP^LjO+(#|djJ@Gft>WU*f`}V~4^NAYs5Y@d+jZvJ z*?!yFAUe92IPDGJmV`O;bR@+gh0#ynvgOhYNhB zR#|*|!WYfv3n21|lAeDn{~=5ozfHZeK~eVx`sRaiZf0a;YXmyH1XMy~4_v?MM}6}l zBu&G&U3}3WQ4x*RKMFGy!q3;*bCJ$nfHjRRRaF=DaMZV6EuRC z{+6($_!T+6lKM%l%b!mP!;4z4n=th`^CU78If-%Cp(`?TBytp#=>)gjH86Ga@5JWc zjCAc2Di_M%Kln#1Nq}d=R_rbFoIxD#BwRSMCJ!&R( zTFjrR`Lbj2{jnYYNl4-LNyv>Fh!uhU(-n)1y!?X+P`h_c$%lTZl0ce4HZ~T+t*Yzw zfwBhaMFCuuh8QYP^6$!9LtUzK?fArZPT3=(Z*y~h2CAw%0b?P-LBe$x6{geIylbjf!-B6fZ|Ece|BV)&x! z&^Qe3$oT;~mGqq2mAkz8?v%1`-6qaQ_%6Rgdu<$-fHSi6VcIm|R++hFjwOF;G|=KN z&SsPP2$BnvQp3Or0}<0=PgaO^0^$i1?emybETX?Bo9V_>-HCNA<@=TNX*rBL5Qg|Rv1QXZsE7uXJNo(9*8;%X4WNq7RJ*Q~{b$$YT< zz-j7O<#bLaP)3U;TzqOer1AoZprU@RH$`vxeTP?QD;fk>3I~_$ED%UpX>2amZJ2vz z*E>48OpDt7#WZbiS31qrV}shSl4CM`4=wxv(91>LyN)w{)Iy37bd-sePK#O?)`??i z7WT*4ZfjvwFXVaR(aICzAgxs|c##dK(ea&J#&DQL8cCb9(xO zn#G`qc%s&cnPm(uJL8!y+O>#?h&G`fMZyYH1Xc!QP1;7iu~EMinoAJEx*T*^TWDed zV-LCl?;DIaY->k8dS>Gx!WRB7KWh8gD5d!mv)=gMK1BK)g2tqe{OOgu&}kGM|$ zv8Uwk=+$;w8fc)7-MvC*P$oO9Xm>}?Ah>3vOdk)0dJ0g+=*_~8y)pazpQtR!skGq?)%&$#l5Xh$pfO& zOP2tp&SM<3BPDf z6tnz3icqDqz3;43ARXK zUfE=6r9tA+yFg1p+rLb^Uv2mcy^0$tV0O%-kk74~ra#q?n9HgLMchLpT0YPtqS1#H zK`ZW_F&_jw@?e}BO(YEo>vRQhX6J7=iTF>46hdmoMf()X6y&A*NFOu|Tvbj$m_sLAHCD5gRZ7;#>2`&Kz-Ap0R-lsC+@l_RR%smPd$n>lD^_z87eB zpgBdpAV&fM+`eXTs34(eUz{x#9ICe&=+iN{&x?Py@CkW6G=phuB4t5#0*R%#0xd%| z)c3I?aZ?h|BM|{cUp2TFPDR(z_Mm5f2AAY)zMOaMX&Irw1$C^ktZO98kL;RrnlNUk1{uNxc`s8~)HSeKXp zl&>&c8OV!*9=Ki}(RY4SNEeV{Gz6%r7=LOIN;HJ)Tyi2Y8VE|ESfNBBc$K&}n!Y&6 z8&vU%ggvPrKkES_VI;=3ETc*CUdAE01$s2Bu|$0=UnRI2(7Pf%c3);VQ4p~rJrZ9~ zv^@|kF#%d%0kl09h+`1FTp~h#C`d?+#qBlZU~N+T!pN=PViY9e-X#edMA`b zao?vz1(t}p68FC0ent`XAq;qO+iEW6q%d?ek-|I*6?7mdS1>$FAHt6^{BPsV&T=l; zOo<5FKuA`wS|sx5k`g0S^bOX8m}F8wJbJFtsl6&V_Fx!qosrBxpDdYQ!KYCenV%h? z4W!Hl;O^|GS2G;BW88>ng#;;sL8td6_=xY=7MQ1vo)~8iIA;XGt-nEcz0I%#<6&~8 zwthgU-QfVVBSYp)US=F~=>LvL^QKLh3wAk3@h7L9%vd-fj}Psg_S{KwV2C{WLUcf6 zzIO={de{g0cFD&fy~8FB=QyD%j8QJ?!Mx8k_Rb}X9WlH?NZ*rJ<$3YBJ&s0C%a@T%7U|^K$k#qBI$7kKJ(epa7qoz zc0zLM5vNYU?&78dmDXrM8j-r>L7Vc!TLn)GZ;q6;Lq|4$cBwk~wqxa7V*46`?})=p zJt6{AOyH-Kr#q8?iKcnoa>R|o^4B%r_UC=8N zek=bIF5lI{Vj+9~W7)XgDTdW=h1t75<1iR;)jG_J*kyv~^$CAt_t&aY63@EF$%%_` zsl&>>`ksBJ_RV7LG2I~dgG9gU*hIF5T(xhNrvSdo$!}cIP}_u9s&>h~~K@#V0#$=9lpQ-?5ge4QxgZQ+sLA3?o zR$nzYJ|Bbsc~Noc!PTsU>l5Q{v{fM_OPlTKbN!lMG2nCanys^v!AtYkv}j{fS=iR& z{qFCw)>@7@uFra}=fD`d2bJ+|;@Oe&>nbgrdBWz2Mv^M)qVqaSY5I@1{<_9;*|M2Q zj1H58h^x3WPlwaZ8<`2s&yrO=s;6y0?Bm*=uX5GM^Y}^Y`j0VWNa-Vz`qPxJ^T0CC zrtPMQrl7%D_=z?A9=@sWZ3X`2uy%{#2$2%H^F{cSwc{!8bZh&ABX&eoak7><#Y?(t zQn@;>+xFA_<^wx}TVls}9%iQcAah#Cpx4N_oA(T?&HVG5j(QAcHTkHm_x(E1wwvqR z$a;_+`udTe-#A#2JzDp1Qo4(fpsg(UNTbE`d9rLEnJX)QEqwG^yaf5>R>_=7SJHy< z&I>2!w^h1UJK9y|#_=c*H$DmrKW;wDH}Lq_RiYNy)a#)(+oN=5i32@&FfJ9!4qOR}s>7ER_BJaP$JeO08z%tIr#3m4q}b$LLT^!#jm zxm#Uzy-6|Mz_nh^WVU5wG21UIr76EjVlpVK?I|bRxs!38oGNPNuS%Tw=i zR@zHkd7odymvtH3-FT9Mmt6vd6@6f|gnM5~O~T8;OTjBIue_uJ(ijn7fp=uU=TQz~ znV&Gv5+o|2Ew%H6FKt&Qy-35c7;Djr+_G0`=`QFyrz(S-e1u+c%Op_MH~v#v(c`VF zdPw=J*r6HT(xN@QqAUYDLrz2aSmtWMo!iE?hgnU@e^LAFE)A!pXQ!nGPSyV_kyu?- zK3z^;C1dMBMat1*o%tUi0mGU*pgF_Ob_ejQ9#9tlb8Nx}&!ot>Xot1!hCL`xnPQ%A4QlZK3 z+$Z(g_^FC%>dm;kM;8y@UL`jtTt8acy!LOc^MFX|j1Kl%)nrd5!t=Rj&(jpl0q^Pu zrLj08$L{{}`ddt|cIVsGb{B63x7FFg5L%xlo-x+3#r*}p^J6X*?uU^%Q#zSTmDtXY zsE2h|tz#`3Oi$oKhO_OHt|%Gca6Jej-v|maN_JnXik}|?e17Ma7X+dB)m|ZIM1|~v zaTCaP^*2Gt_WX6@tmsL&mg0t-9B{lQena!Yq3f2su64uKiPjy!z0zm{>kQ)SYrWF( zf+6f5yrycy&+ak3a)0CK2(R3=y+-ts3{T7}kWr|cQv?{rU=?&J)g}JS{1s3rWLCnV z-4}CL=wSX5J4wfe7oeKwDUmJz^)Qcd;wK>bJv=;v$RTn;p&hq6Om?hz9O$IUNs}4J zWK>#~@O{6bMup75-$}KF$eV6GzGAoykKC|13h$TXjO>i_G3K%6vEy;PRWkIb`iua_ z?}z!yVllgP!fv_XxdSlEB~0-{#}=vjmp;l(ZmTDz5c-D~iTRXk5|Uw1z99eZwLs z1K)xhcFnN|8>6TKY1Rp1Jk-yms$2AhwI{p(!R5Cxh5c*1AjT?4pQ9lZVQSeYrrlM8 zI!yCKx#UPQ{?b(Ik?RWLl^?2@#wJfd{asIMGkn6Bk>c8=F7!4-_XL_xZFZhYDk5!N zNn6;FUPB2=HW~hbK~tioa#;qCC{RWCiuHxoC4$1q$Inp;prRDZf>OyRgu?_6+X+ih z>XjwQ4`EeO;Ci_n(3f(r4u+TY4dqnb(0eNJbjO3yk#&JGHl#v|IQT-5c3G9D$QjFM zlO-4+d!%Ki(uIUGrU058vO>+MyprL}S7518Vwm5z;8G>Yl_>qT$3K$Ur zJse1hl@}F7OVH8NJTl~)jV`OQfDg_}i3SWpCH z!l8YqqynKvSmY~=wY8Zf0|yG!AOwG*q)}{2J+l%sf5nCn^#L$K#VSxR=OulpWRw%2 z+kRXm_os5|&)+IDAO*>r1)fvjAojOgNN+6aTQdLnRS9bkj8MOCadC5_BIqf0ARnny zIV*uFl4MBx=5O>MQc*A1|j?wrhRIf~nOBHCt&>3!(j;`x#oVM!S zQV%_F{Wq)&v`|hZn;D-lc@3eE){9MQaN#;DEbK$tB^bczpxZYJK=wh^Pfl}0=&bOx zeoVW_LOn(E$6~YFMJ$|mVQ$QkUDj9`#*~8BFZa!4c3AJi#)A5};z1yv%*@DaD+{{L zGN-rB+C#ogd$?+nw&62=Zx_boI3~w^x+jnK+7M;uHPYS8E=q}CN&AcDD}xq=O-}TY zhR!Cnm>uw5Ds+nUFTAN+Zi<-QcS^q$;+&Py?C=|*eEskonTajY;>>0qVOYJKjN9Fg zY%R9-pRgoiu~A?F%u-}LKJTg@BidaGid?E}=$)&c=BM$&^CyDLq#HlBLKfN0H)S<7 zeLCIoG9sdLEdg)4)7w$mhy}-YV2lnh`|!AJ29jGhG|tF5pE22VFZ{V=Gi;4%?Oz)* z-|D_^(=e49ux;|jbA4Eh&#WS@+}(ozTKQaimC`(G>>$@&^}f%P9PLzZ^>NxxbiJCo zS9BySX9t{*?%+!?X}lJOA8mh}cX~Zv=bJ|JydLcRf}h3D|M|67HRpaXsHU$t(!ug^ zuZPLBiT~{Wxk301K-B`7{pN#dOaECGeY2jV2lmj#Vn?$E!qzjmMTF=*rHK}Ou(5x` zDKLeUl?>_x6UfY%&0l=!d_#Q&q=e;&e#lQ!_m)@gkZfiFAGhzD&j%UHKvIQG8CaJ) zlbmX8$$*&-7zn@~-0dMpLNbgZq=GJgIu4)zty)q=QA12+MF|UK_qqxz?3n(q*gt8N zSYgV4T&pE8*c0F6k^1H6=A#iL5(}&f`bGYJ2}+^D^C1)>tq@7)Xd!3}lCflegwR(0 zmJveiH(vL(PD>jS{#KUP`n@DEJb!HDS&i|oj|Zj%70eg7Gn{00v%~L635)wZMJCNy zYv!Nc8Crso1R752B?$5fNA{aBig|jgG~dBoBL`3L=P!1O*<^@1e!@HnFMa6#De7qp zIFfvOVa6ymU3N@6(4+%!>Or`)O{=3lkZIe7_%V>*2!)MO`Up?s1^w)14~D@pSmK?7 znh3hSMem?M)^3nr4#(0lc%S(#(J;buXxLp-e~vfUWfuwW*4A5(oZJ-~Y@4px&Ujpb ztX&mYKfH1x$IcCCT9Z*0St>(xQ)-7rxvV4DX%~i?)+oH8j~@~oH64VyBk?d#Mdr|4 zi`gyeu#`h!Dbaau(NgwZIvdR^?SRv^cU$DK)k-fQhY|5j&J8j=KXA0|nChs2p?u1T zfy5DhHhd7)u3-1p+g0X+HnHJ-_0P1fhh;Z-NLv}c3>=m5TAoVOU zja^3o3r+M}@M~B~KT%fba7z}#XVZPOKK;WR0#`$YLnIiNu1RM)i72dSMl)Puoz>)Dd^U;)o%ouTDe4NL7=271DMjlO%d!P(hzr^Vt(n-6W{0+01# zOKwmvu4M}TUrZk!MUoGvCe?D*VV^0W^W_l;ydAQW9IPp~yqOe5QdE81Xx|~^T~zRN zIv@OlxcXSX=j!#anz4QxeA#|)teBq2>*HHQzg{h)qTw^hFBHtq7D3K#2FXW+crXq;K5|_9u22aYu;_tLh{5>AROhk%E zDvXHI=#FeUAGVQ(^>DH#4$e z-y4&IW#-NrbLM@Lt`LSTFNbTBd_5gyYtvP=cHd1~&7sQ6>!!@V0S|(%E z{HvdXP}`Lrw_+~&!}$=zo~#sI`}44Gy>hZsbg&WfGG;Q1%_o0v>=b@uT=p5D%HUGX z&;?oSU{Zma;9za@dMkx1D3?-A-sET_ciBRGEb|P?%{s4lEc$Hs*{!=-^-E&YZGZS^ zUf!hBnDM$Us5ZZiO8A*QhTqz7H;ez#7LkuWu_fX7Lb&Pm(Np{m{@UWAdzQM~c5qa^ z6RyaYOr9L_r}ca@Q~I;&Fu6nh9<#yAkFbCMfWNi_;qEY5`t{6lVp@{58 zJM;IhBD4uw-6C28f9z@0#~}zL?D}~Hf%p8`fS>-1`QPOvN=OWG^q1DR3+F%OBmrPz zZe>hsV61Ol&tYzdyXfBP2EWAZ`U#cl<^7+o8^qniK!Muc7=5)hB!*r!id|rk;vo1PcCbJ;xEpD%R zSBBBLv(YU_W#ma!VT`-&^2_Y&0t-Bx;hTLA3~uCX*!L_-D+cW>;snp|*hyTl!GCSPxU0GHYBKbu|+6-0P%C+`)x4 z*#vGVR6P_grZA!~xmq|h|5s+sfcUgT%5b7F85O<+BODZ}(SVdP8K;ftO#*;Dprvg< zIcvgqhLUW}u3rRqP?_^{xQyo%C7#W*htc{nG?V6_K#5b+hu85Z%R`Ni}(0N<*S4=ztIN3KSlUi|$(1 z7<$c&88hEW?YPuK)A49ZY6@WfifXb#oq}HcCPi#=bJ(|iXhvv9qQL5BJOHomsX!%l zAjKEKmKo0AzKTa#nBRbKV?Ka0ECQeJqmua)7RaZ&!tlK+4||p{YJa(+pp5$$6^TB# zJUtVK{a?%z>weR}W&RunD@@lUv(tjzbp_Q{BRAkowQ~9z?qu*GaM1u*J}SK5n9|f~ zLHUk=AG;d;c_dwb-Jq8^G~~D$DR;wH8D>kS5gOx>mS)00vPT?GH_#=hLrF@{I2++Z z(TN=u^YSBk?7Py?-rSoJL0*{f`4a_2G-lVRMD(wEw+-lGhVtE-S+|^Y_oVFoI}&)3 zKTb|jY2Ov7ElB04Z6yIam@sLGluY)U6w=^o<<+kEap7jj?o=alMxx(Ju!fZ#LGpP$*ryYRs2t zO}Wq0-1QX)+>Ysl;>8g+Ls<6h+p>S_04n4AB83&+Kd2TM4ZQ$0oZviTQz=^RojW2% z&^$4f()Apzyl}aM+`j|WKtv(4UE~?gxEvdWkdr9CizOTeqosc;aw5Gc4i7#h=fXSm zi0&4Z!F^g!f>W3;V%(bOaM%LFa^O%F%>E_%&{1?hES`i$$nM5HdVRc4ZgdZ0c=Rr-UBeVDBKC2Py?>-Md^r=j_-p{PL+ zF{~+9!cifdh*|iu>SYMNyE+J|zdn|OjgM^d`!%;Q`yM+6jKd(aofU5>)F?$soCVlj z1zLQ4RT~I^4Nm$31~VL&7Nw;Ce~f=HP8^>5o9d(szuW_B4HnlT*$?VB1jTJASVxo@ zRJ^Dl+_%KKxqO>Ffy!c#iMSSJC9p#%ldfPLtu@E!qmQqzFK{npz}4BeTzUVS6RT|#2M6Yo41%I)!U#vtJKBqlz_^xu zAVUOdN5M|HLZm2aLkC0(+OITpIE!5`iY&HBM4S=k9$-v^k|GAFN{^451=)U;&G^7r zSCJPet%C?h=Dw-cS@hq%OHRG;pQ-FC2o1jnBsVLGRuI>Suh>FzJtvW-?UYy5#bc(lA#(6=;k3SqBU4-yI69hAnYXb{@; zNn0n|UBF-h-KQ07;+cZ{7^}44ifRB|JVOX*;f@bU1F10I!3IUTO9!paZ9&Co2ncA5 z2`HSYn7?hqg*+poRu82WHi0}FgIiSUK)`754*(*nz(Fu6bgWmeZwBpG+PjUU7wt!r zZJJkzHNw@{8O{f)^=!;;Qhdj7(`iZuO$wHPYHYL`?K4DS(8f36JW2Ja%1>%~;SbXF zn&MdFE#O(1M5Mp>5i;{LxcQ%18-g^CRj=FpY0d|YNGEjE*Ss{2mw;<45v*ZA5`lJP z#sD@OLek|lfK&7I$O1+#V8YyaN(_$}nd`x;GHoMv;3}6vC@)G?AtKf>GiDEUE)` zpin>0^mNrA-6dMf90K)5zNv$ud41d=R6{H_Rp3Q+w0sTy|*Uix9+f#N?Ms6tv9B4AIwsR}H6 z7J5`Sh((G(oLOLI=)bElY|ew-h$ez)Y8rw5#cS-I0|G6X!S0V2cNNF>@_UqGFq4__ zZhMRehJYPZeC_d1lL(_tBkA>ST(5sWhMRw=S5H5=N`w>5V?Ect%L&w11hYdSG}s`Y z{g#k+tkOEXqLqvN_7U6$dEeC_fj7z%F~6A@#S65yL?VW4?U;};daq_S9bB?I z(y{4RIQQ0%h$sKuz_>j3BsAJVnAp_#47y!^=&3$X7H;BqDftd!3S?08WN4sI4Td#Z z03kKI$sbH2Zp;=jY9cWIevp`|1f`LaDR7b>koXXUe%p%U2en@M`y}ZEi1F=Z;8yOn ztGUURJMPXX19K)nPqJQ7HrZKYkd0yrMQqVva}}|MX!sFi2_cK;>_rdG>^2fEzT&dq z0bEZ_86R!dA59sk4nrggizUEhAw%nFJc_Bu3?VdY;2a6nnoS_ZN>=eRjFSy4n20^2 z{5z*Q7nEwmfi_|AABf_Ey?4`K=YGEosF*!Lqvmngh-{EtgWvG$l*5lOEeZn(${^YV z_JC;377cygl!)h2G^`-GS{5z{L?-l`c?@wsLt*$#U8ZayStBU!I8ESbAB^*cBRPt3 zEMa)k#>rsV0D(V#entopu|cHpUhI4U!Lqb`3eNf*)pm~kPY zi%YzcW%KHt!3%-X8*W6XP(StkHss@F_%jd5pu$MJZj}bPwm$(!x+pGnXDp`Bc|EgW zjsZfSHxyBjxTrVkAsUc*?^@ASA|*RmK_#`+tQ;dy#+2t?1)(np|CohVFDIo}BVzA- z$WK2jkOOxn?h^avs4U7C5aBnwIij0!2_1dWljg_KuW}1N;;{#TZeU+SC0*MJzp0fS z8hU_PFqrt6x+D#&TLM<-HgS~xO@!RVMu_p_08ii>*Dc_LH3hPwjH$ptT0Wxyt_CrMMGN|X^osk4pGg_*W&A|zNviQ9`(5)( zJ*lRQGp5oq#*EqjV8@;z^r$!OYPWjtnX)E8JGnQSKo`j>Sjx3f$}C}Al{HkY-_mVo z>AKqqrz3f9sTZhuRo6Is&`*W!%Nm-x!N9mu$*2`FzUYd*KI!txJj&3714 zzJ^%+gAwad&#dczaO-Wd3rN?N8Gr{aq{&z zPlR9|amzaV^^xs6-E(|1c(DIFI6t`4S;O5*AK4w)PY+~TM_ zLUr!Q4KQE(D%g=1p_@kqXTPocrvo29uQ%WauQ%%l-_5C$liS(1fa%o`$e#umgXepv*abOk7|Ne#y&6v%QvF^sb;E+?Lx0$XNnZ>ne=900RTG4tNn`Beo zWp8^4x7EYoaJ|^mi*E-L-f;x2_wgh1-Bs@R576;iypJyXWq0v&j1G9=^K}?3=WQqR zyxHZ-NJ{Wxydt$dacQ0Lpb68{8oR%ospiJG@#1tekqL0KU4OyZVNVM%am<>p3Gt8s z=o9YoimHoqO`H=PGS9n(^-B*6Rb@{Ofh_eOIxsCwJD=|`r<+9gpI2!O7(DV!3M19O z0qy;-_4&_Qe5n9V?yBOs`mBUUsb;$+0MeX2k8v*b2$YI)4W|=iHJi5tfwtxLqNDb= z;i0A{4T+qOo*nV1E#P{?U1WN@4$)*H0UmzLZMx$c6(QA!_}UZ9IS_B{lm13#K_Kg z-w4=_xgJ5sP<4)n0TwXn`tB$@Ys8c-qNY}J?`XyKbrbFpG@CU zf2_>D_r7!VdiYlTN4kBmGl5rEpYC^BOT}IG@4-)0SV)MUmsbl6o@W9_2d{>U)8d~y zcEw*0gV|YJFa7YqvCEJ|$U90~G$QZi37+W^%{kdVWB4Dx0Vkwhqu=!>Md*lvW6&>& zD2g!ATjPif0QQL4sHkJOHq~@I_Na)uRnL?^XzDB+9pBwkzOwkVb_v=oE}b#F zV)>MB7P_5owB28rmDtdY+9|=cp1D=^D(Xow?hcnloKpzhR~AHbRAdRC!RE{|4|$ZJ5pTaLNrS zhM?I<74l($K?5M93d}*od1B17B}a_)#y8dO39Lu!R~c9BM^lsQCm!Zj_`-dsQMiq)Fd==2sHML;=1k(xe8zL?OP2rD6H^I)yLmVf`9qLTp z5~PLteo&#ZUnaJSkh(s!#hV4{fyAaEHkV}OLgs?1$xMG`kr#QmIX-mMo4ZKqNzpA z$Li%JJ`eHi2VLD;!=HF?Y&fcWgN=|@s@V5^uaWM2bzS3~e=p1=dif(eTLvOEqCv2( z4ZDw4t{;pidILW3I|wM`LWta8HRv0PPJH6)#Kc3af2Fs%h$6 z`dY%@vH3G?i;a~}%}odLbd#J&bnq4>Lk$>!O4+}XeUgPPfyfek4i{ESu z82*1CW-;7oWo!WvHVgkccn*Ii|9F5{r;XTK<&q{A=bKfa6U}oSVhbnCtU13ak=ZTV z$a0h9&BxbNCYNA0YEcl072g@lkhkeelN72~7?#~X@VpAhu%(KM61)AA`K80+_FD*g z3LrEz``BK8VBXtZf_ZCXZwkcUBj;|J_k!O3{`nGlnicimHzql!xDLBbd%M`L4UwKn z=d`GF9(9&~UQZFfmI2!x{_bjU zZx2^6w<>f5oNrp%y{;Pf;E5}=JLc|o;4e(D1*{NUY>FNPfG@Lw0Hg~K2Cwa1ERcy|@GK#NXsjCV4Nsx<4+w+OIZFb(T_I)j+m^R;SWbwvy`LgdohAAbxT$_CGU~ zD(}@5Lb-`Tjg6yc?H6a*G8*ULi2g{WCH=gSU!*?4vcfR<&f}uYoG9T|l`kr=g!|r( z*DNYKQb+fa(Vp3-f7Dk>cpy+jlwr`c82@ditn;&(o(35s2YrFdx)8oDiBOj32QTd) zYZhrgaAG{Unj~E`qiJ6|e*QX6#h|R!0NzslDG}T=EUi9-%W&UgJW(auPZx0<4wo(> zEp0H#?Lo;LXA|Oqpdw%-WttpG*->Fg|<@^=Av( z4@FEt*9?&sbg)|VJaa&lpoDcwULHigB2NP)kkMBlBLAa?aSk?6(D?P7|L1b--(E^o zir%N{X~#7ZSokXb8pt;O6(Fi4BpoAY4gh>Rb zfpf1o(uk4__TmJ~#bGwty9xx%Z!;8{X<^AO9`Uvx(AruB)ugZ1 z$_19c3^OXS^8}7;bd3YMNDMbE9?1WK0ny<3j#>KiPs5a=ZnKI;vxKLzEX{RDmUfVP zG+>Ai22}InD__73g@a6_y87xq$1_}m8$&ef$(#{xH7}gXhM~tWx2?GL0Zc*E4sm#> zKy^vNC`tZ!VrH>-kw3WgzA(ockYW4Zx9iKzgULI`p&JG%dduLmsndixwgfYlZc zOA%dh`{jW8ht35@fRsiEzJDWl%Bb1tN`aCe4+lF`R& zlDRO-J}{#mpGGqlk9Ag0kY&oq0y(`}7NZyTr#M=Lv!Rx-_Z-!+&AgN&tN5gf@Tg30 zpKRSv-FcmtE;mvJ;9u2VqP>cy9*MKcqzSCLu3KKq&+u$7F1vH4zkHsKuDb8X6UORn z>?XAN@L_m4)EYmn3Wu8}*gOAtp9H492LgR35+C#Snid~Z0arLDbQfZl`U(||7s!Pxjhv-R^uQ__?jQLZY7;6rf=H0K9PHLP2P z7H@9VmKK141{H3?8vCioUlkA=rhod*5NHBx0@!?P&2HkqeQ$3=rrD$91LAu7Z~s~* zN{1GKAfLz?&yK)+WM3|Z!f;+a2PR$;_M0lO-z#i)cG;+`HQLY-0RK^|L(nUxsewMU z#WP}kTRj_6yoDBOQW^h>VPQumPEf-Mwq*cZ z-tENfg5f+E63rWvN~tq!YQ4@ZZbUUTV*1t>=elYnvs;wi&Nr=yDj5gUJD)1DyTz8-ygG<7cA9Lxfv>}p%j?%8V?%DlTdc1$ zK1otr$c2EeMq7>f&}N^`+#9>h^zM&?NVyCPuGTW6?RC<#sf!dO!uQ^~J?!?ZwUw^@ zb@<86M*Q=l?)Ud=?3f8@A2;i#*6?yD+f=Wzrk9bk=-|t!PupSSHAjP2!j1Fk?Z5+e-4*Hrj>6B{U z;FGb+Yi3)bU0k>6G8cX`y7~jZFJ&~3elvY&>&DpJ+PPum%E6`8@H1E7U2uN&Q(c;C z*0Ogxf&r^H779rj<5h(AH)4P$%}4%kO(A(RrWD%GMkL+|o-5wFj;o0d)_&y6GcZ35 z*}?>L3BWuu$OsURwJx>;QQyAeW9P9Z4>b@;$uk0*~P3aLKz)E?No zYdqT9ys$c&362yTs%8wVBZTKJ4#y01IWD!U6H7_}0WT0ztI!r_htmI#tBJm35hNEB zu0!ar(avUgM>x2D1%Mb~%hd$1cm8z+AZ{e5-}B4?Pw2*OlbR%c|Jo4;g5h#V?O~ZMQpdFpm00{@Y(bt zQMYYzbsZpi>udO}U{2RsBNX;;NnNfH&{H$JG!(3>hZO*dP>bEe` z5qWjDNU{vaYu~RLF-eo|?i3KTbukpO96Z3XE@EudZCZl6ok-kT=aNdnxr|PoM!0{{-Z$uH`=+I>f{Q`x1Pmj_+sq5`uad} zs#2!YbZ+9;_ici{Cfig|ly$W%?O>Tsq_fTq_H;t8pWaH z2IeQQzGpHn4k=p`RdR0IH=DlBDQ7 zkO8PIt)Do)n-wiP+S-;&$(A_X7LvexuO0C3)fpr@I2hI15eedDlPr5eWaD8 zSGk_K^7V@E_G=orrAjoK%3<2|-0=D^n~g;H{5S$_OupA9@kt{O3T&2%<`BBE=JCSz z5?C9(Gw#y_C_840i2Fa%!-_w;if_vxC8nbw1;WeE7z)x&CN>_*JcKk1G@KXa?Kurz&KTD z64YpRVG1hRxPK)IBGSLm^CnYjRO%J z@;X(jUV7iK?cFUdb;JBwl$}BjiGX$|MU!TD)9nvxdWGbhA6bOYSSbi^h&UtI-h9Ia zY2kLe0h`a91QR|4u=bP*v{cO7*pO++ubSTy?@go0r;ABT7Xk;=^7Iz)ooV7hW=qLT zN#72>MnE%_4Z_<=<8r8u{cPOw#zjWHdcfGhZ?LZZ`biaa+uW~JFceIC?sNN<&x*5T zP%oddX5639Fd z9D$D6iQWY+x#wUrSHlNXbe zp$=iJt235H`}Qzrm)0+6ndC}tNSiT5R@W~5zkf?04b5uyo~PuO{LL*qCbU`9)i!J( zy@%x`*rbq&f_O5_aB*GVRE8-4AhGZvn|T+u|zl-a8TSvaA^E~k^x z-M&JROtaKeh*;IvupW_WWv?>$->0OT2VGPjRGtdIn|BBO@ix>q@0L0duj|foQj6i~ zz-Zt)C)jj|_{{>ad#m&1J4@r&UGSzB{5Y{@%cA{b(sO!br?J=m!2|Z5`Pr<*;%8d08_4@Z(VoL523KSta+!ZX0GL&<5DmdhnE0tmpMOcJs}#JJsZIJSq6U zy?eslRW+wu;nzQ@a%`Q~7QVT5|EAB^7ihUG{*I%EQ8gfwOmj3sw@Y5v$Gsdwuz!P# z)A{(cY4_UK_|%2K<=ad*NXXzPtUb&+p-o{sL$0_y0i^=qR5&&lAkT3s6lhMq8uT+C zwE?r#9ODFr99$-cx9+o;9D4gdGMaF-dfVjizcb2zfPj#HFXNjyTDuuIn&_o4)`J0n zxhYY+j>bm>I6~4vcwA`uM}B6bRHQr1%NhRaF>J|6BY)zJh5aBzgke!iU{Tx&WF-9+ zn-0w33)kj~8Z4TnnhVc6>EYM-)RXy^>&#XzFRwb|ZBn=GK78<|->;s!&8FI)=VW7x z@AT`ckNUDsO>~Il_CAPWkE%=otZcf#5w$W*n-=+*@&njmEkcGAS9UBZ6~PYj{@{pw zL~J*Xn0Um+ z7W4zjPtReV+$W?X8AD$Z11EAYGcftgMzV3$pu{eF>GjU)$_deJrlHee`}!m3q6XWTwQZ==_o*;vaI5uX+_l%hS^schVojMJG+ zsL&(tuZ!5ND4;xAPPvm@mYo%Ef*WQZ$Ipd8rtyw_p<^Z(Fg|WB8ZD(L;YQ?64laiR55jLVRfrN_auVXksXx{BgAd(giJY zEYk=#FG zo$wbMJsZ2;R9BjQwZ`DXdt^$^K%MKBC>3HX*o0Jw1{NWwvpI=;X0bR}XI56z&CUv~$S*FLi)&X%mmgp2`9TqK;BvojIS( zhY}z|$7+}LSx%VSAj4XTwdzOSCH>!>XNVkh+S7iWuLApEVLsc#Qr1(6Tp4#>srSD! zA;TYDb9g!`uMYz`Vz{p@^Z*EN&u z3DA4mOJJTPI53far&cguAoTJZ?Gx^=e*Yq1z;&3AdU1u6z_w0^g5R7`Y#J$;yTwRF z`*4qm&v$C*NUSeNUM@D5SZZit(eq2*n{iyHU%Dqs(A-1;?jbTXYwYV32IKCF{D2jV zlJ6%@pH0|Pl;}of&0-T-B$YY!7uLBGhBOB^EXzHBU2m}GnUYC|R;($i&1N9`hav92 z7X;A@8ZE26!{H{hr2^DP^PqWJub@foQ?eC21 z4U}LHLluV$P&{Sh;nx$BzcL%pp?#lD|dV#6a=)nL$@z6(cXEpzX}E828bR& z-)-QaG~LVtq$~&F)|pWy$u-5ao08-+L%~CJ zM)lj~1NYRvYr&dQC@2lbx3%QLE1|i^U3JDNVi$u%WN&x|i~CAVlN``Ki2`lXocS3Z zGN&$cf+x%aX_F#LkTeD_$-Sg^Yiz?jf6(oqFzVXPaF-l>gm9dg++YGYhIsl;pDk!$tT9>x2-Ck6$`O%g;T~yo8X40~vJck;r2^{=sFKIzZ1JxoZ}1w<`Dc)h z+N65dNZBvnIBNve=Px8wNwptg_v2Ot9s-gN$Ti}{E+l8cqJOp;up)KL9Vm4*;4S4X z#Xbt5D0D%RdnQ6(=u%(Mq-!*aa%IMcwI+BRQgG;BRd9c=PnUZXgtHV=5LC1Z zJivtJcTxH~!!INk=%fbXla=j6lpT$bi!Wl$TCoA4G__=(R$waV4+(jc-c{JLYCwKy zAxdJ*Xf8A$J(DD~QhiL7!@jkvdReawo`2K~w^}=Fbsq|DK#_}(cGiQ$H^dkh`t}O)bdW9Ty)#Z&j11GUA@*t=P<~QB*5)jrN-<;pz!Q|^vd`8vzBAdTmZ2Mv z+`xBJV6$A8l{Ct58PU$3g#dQ1A*-{n=`1Q)yM}*v zk6)o4T9bd#rx(2^zF9)LY6%Y^*3_KI=QNKQ^0eH0lb)p zHxSKUtz09G*7dm%hs*=!ZV5M4))a3VrVV3ryf7(+#sDEHTs9BYggtH7#2$STx?@ek z)mxP+6^vK-5H?kZNP!iKgfcUh*c=SQx| z=_)7$zlSZ^APF-m@D0d;VRxv9J|L5Lu!6x0{2{ZFR%VRd|MaI<4(t> zeM}81`o(%un!Xw$g-riGq6;n;ngQ3o-++OMy+JDse&y_2rEip43}c+I(vZi`W30DP z>B4+LJ5m1_TE%nZn-j@$h3x#24Mx9^%As$RAQjVb>&QDJLIol45{2B^EG%gzCF1x- z^xl2p5y2*NG=lW<%+#o>u|m+C6s+R%CkglzK{=lh8NN02KIYo8tgzI@EjJ_ePtGlF zzv?@W(w#LwU+tehNAxv0=sIQ4SzC}70aOPaWp?_bMawM&fG$K%@v_l8&|~x3oVxR7 z`X!ox$F@pivVmq`{VAR*X#-i|NXV=>1MQKC3SVY1TWJ+lr-fmHAcz7Q{@H_d+9G-E zPtcpX1#PC|7fw-R+1hdT4vnG5oEsj8$@Fd4SarKZO1@nlcuJGDzYDh($j?5Re z%eKO9?SU562uU%$&PHJyQ5N<}Hp~Xp8wCa<$01&u>8s1Y=%CGY#%iyk;dq{o$Flf_ zC8R7+%C3XTj23#YwPnPh%{j*EgaBQTJ1^8nt&PdC?`g{IxB)VP(I=cI>A6i3B#vqG z!7}ADfD~+4G3*xfWv|bTR*DfSCY~V`ipiw|PMWhF` zAMM_7M4bYt6LVj){NvZ2tI!*V|7m@IE?D{N_CKB?)@#AA4RANY#7l1K4VUJ@ONx8h zB^|faHt7*n%=C7$^PH12+XH+f`=>$~C`44xC+#BwO>dGY1NX6hZSk9c%3IOyCWZ4Y& zgr?y)PwO;}``plB{VdUOJ-)Rx6@uHg(cBFygdw zV~!eWvQ2%V2m5~WxcI#%{6W{katED<{u0L>VkgeP z^ztG-fPONh2laN zPCrb9n(g{3fT}YSrq+wyl;&72RBDUWBzxVoC4s~6v#D8UhI;H?6D=!~S+Ui?L8jy= zFGbWxZ^=9SvY8(!)@+@qIQ2M8c;;QEip|!k$!QklS$7?pL^dzC4+ObPFlmAJk)$7k zt<}ziWj--wi`YXsoP^WAX&Y8L){q?h2v0%u(47Is_x;<|;>#TRfmdi6{0)F;ktl8kWa@JhJ2hnc7KxAnW@wJ$@foi~QrT>P_HW0K~0-paD=+k&mVB16^7lo?Q4=;$6GjHqs^y+V22aP|1e$}!U4g2^04 zJAW%$Gw%Whbrxxa?uUZPs8MPpQmzd8<~*1;oeVv5Dt9doc7^6FQxSLqGiHeW?3KWC z1uz;Y3j1n@V{3?ol(FAxX}07W^kYj;MoC^H-%u%$1Y+%KPnUA{m=DDt5bX1#4ea1O zH^LJIWNV1WWMECdVscDM2tn=vimridXD-4(wV8;Z{){E`^Wrpag$J^Xu$k;B@9j83 zQATZa^%mcvv7SH{m@-V@7-3ws$n_PhC!aCm?xPtsA+>wpOg4O*6j<(dG|XGD*t=L1 zT{&c@kf*FKW>3zXGp3)Ob1jDoEqt3-Y|1>PreL~^^oSR0udnT{s0?gNt*&68r_`Iz zj(^*@!U3>Hi*2V@AsOv8lo7+=h1>%xxaOEe_zTAZej=&nMGg-buOIYD^9Mh!T=31z zH@4SDtv@-v#)ctuqIu@hZyjzw+pWHtnQUv$kVPT)#pWJ=y9)G@scmJgr;{(x3pyI4 z#me8SIlU8norkrh8{^(|yQw!wuP>+?mF(_ zyya5=q`&8t7L0!`a+T_c+{3^BL+*ACGmYlLmv|5A9yjCUs(s}x2dGyCZ^;7m+W={y zH~tXecmpBhkE2WS=k0WfX(hTmWj?#U$nu6BxuzTm+`vI* z5nlHLUFw0c2D8JLl9V492HlI^<))F+v|sdCFK5?szW0KsCF5O7Pdh$=dM)8sz`M3%wS@ zb05Rat>xjJTsMtd<>%1p%g>S#%Cv0kHNGxbaF^sffha`8$C#dgwDa3OOIS6U~pEY1y0mSj*mb}LF()e)0=3!N+S*L zG3J2&IqT2?u**0lth*?y5i;DG5S_%!Xa1R$f05{|kwMzvg|&|0d{Bh@3yk7(LWOGZ zt#i3^k%i28PR!Bo4fO3GntW7`4TT_cI6&J9c-qvpBC~_>(K(7J_h^okQ&aQPzUaur_%Jdm1cnU=Q4PV;54`!oH!dGCMZKNPoqpRTlIw)7v@9x-sP6(Th0{nwawOSTeYL9aquK;oqnNR$5KE-0!$bx8Q%+ z&&Q|QD`_^dOf|(rYe~vppvdkHvX>?+-&<)<*Ej6mO$-H>h}EPV1&@v`$^E<(t+BDD zBa82GuV}c&ho?uzL+xb?SZ8JZn-TIkz>-{4VAN&f^ z6fL4_FxvzY-RsfcceVviOqzkfkL1>nPlW4WS^8Ted1(sI6xbJXg$aUvHBunI=JdPP z)a3QqjF(Ip2Pu&s9~=;4w=yhNP+Qa&<95*Qm&Td=Cf|DY$c2IW9`5zv9cr`m@|*WH z=CT$+v%z{qFLnpaI}GQRLeHI@#uc@@8d64fSSx(yLFRTO4&AxLfN>7+BYd?D(H-tN zK#L?4?tFaY2x6podr!eu6e-Vu33fa3BL+&(pRaT~eYQ2m&q;-3k<-XX8?+Lpe=Jbf z_b}d2ChxMnUpou#h+#aXtEC6n?uXrv`@4r2To=Yu>^;8+emhg_U31%`28rAk(H{SN zEliIviz$+yfYH#;P1qZVbv`?D0wSwF9U{wPufRlwu?59TI5i%o2gwV0YdBC1l7-;G z_B`#kh2+8U?6@rvhc5!ey>^gSg91XhlkG3eXuutjyxL*xGN2G6vl|>k_(v|gV_ZRJ z#>>k=E%`?_#tLyy_6*{NX)61@`9;=C|MIx$^AeREBFhvjiM;|+v=sZd`+q6HJ^7(d z=S)>ON(rB7gFW0M)2s`GOc{n@Z$+)e$3VUR!MNlLY~SwGbCeS65QAGfC{}E-BlqX= zLzdjR3hxENaRZb4`0Of%VXr;{v}ot5gP*%4ci#H81wx+h6rbCTuSI*H3$AsHuCqbD ze!*?|L+OFMXJ7!kiV<`XuRiiIK8x^FFDjvt#e3o$Gv&lMZT!e9!Bf^~Ke6 zk`=2OD%Yt$TUgz`OqaH+dMDEh*v-~rn2sZoR*?W*loCKpegH6q%#ll{?d7xA4XMlQ zdL!Tp-8*#K3w#Un*|*0{INf=VsHZdbjqr){(rSIY1?Vun%Rkr|{)YNQa>=u9)zWP* z$1b?}MY*xA)Dml7sH?#}?|zJ4SKa;*6#N&`sPt|| zu_WF?Q8;)-_}Xuk+*KetOz@z!RT@#nui9SnMFed2f_k{k7$Zg=q$A@m6P^E;lut}v|6}{S6p2i?!nesB=N+>-mM2Q&X{8SxcJkO zcc8S@5-gU@VhefTxKUS4CVv|9-h8V*Cxy$0v2uubCKSgiZp`MPOKh?Tx>HxCnc?9C z@h4EHynF#ZDm$%>W^(M`}!69scfZC+Ec&vN)eY;8t(-0_0hFLv$AIMuX|TLKsBC+%2~3{nPdm5 zN3BV7(n4c3PpyHiMbcHE!4Iy+6KMX}C@tWp#o)4Cm37h3%xyP9J-u3+wfNAFRPriL_DlR#mvs z5XvtFly#fuI7anM?2?h2QM#w_$@cvX6bH%)>2<037SyQ}X+7x(U@U~2MPT~cOCNvOV z`Qe(;IVoF{aL(qHU1_AGPD*Fk`Yk4$EZwtwL_E%8A4fVfZOAUoM?0ev$|d|3z$G~v z8QyQ+XXX+{isu-Sy+weHFCL|u6H-mUnv?7p5XTD(r6+?Q5q2cbr3fzgV{AzJgW?YY zhYky38sjHWG6`_~|Gh_OARsUxFjg&!N@towPVgWg^5`if_20MwN5lW|Ca8N^6Aa>R zb!x1&#{eqqm>kdmH!EI`2ae0STU@bD!hg?KN#z{((ZF(dh`g-ccJDG9-BO?vZ#l`5 z6cvuy=MsjV zE+%}tfmd%IribZVSKRLAetU@cw~!qoud0 zMK{hgTn3q_W3GdiI5J04Sa|hgin;2tF<5lL*7+t!^TD+tw=Fun!E-D0*%l3zqq`DP zc~yYlnu14EWI(2_e#w<2XAC0R> zj3Wjmdbu;{B2&FrGe)Ab;%S4WxwD(a#wV*xj)sQD!64B{0{x-z?EH`;J#eJ3rKK8D zYpv`4R_<3CS21gLK)F+3^U`(Rr9L3v$Ed<}YF5wj$mI$2y>jONZRE85HcY2ZO!_bi z0@H&Qr^aK>Z(JQZvVX<(S;cJaEqw5Xt0d;iNNTISTVBH`x`?XceUN+enwS1o3ww(r z3+*wX?T`qMLr{O>OdGa(dpTLAG&!bs`c&O`LH+c;K54rne;3u6?Kx__*0}CM<|>dl zd>)r2Kwc)m7MQJB@|f5>e1e0xpPMOuw%Q(Tm4dp*=|?x+DdJRqm+$gHb3s zaZx0?LT1-h*5sT_MPu{+Ej!Bn2b1tch0sEQ5Y-v9anLFPPgEDl+k1+S=t|00S9`Ya zCDWoe7My$ca7dN=h;LJ%=etfm2ShLrp$bvr77F!4o9JpEXy3bUK^nQ_N5$Um0`ZQx zVw*KWVqAAY^PX{-s$3XF^yuy@wJuX&Z=-vOdp&fv+a!LG@+ZNJcxe4I4y)TlHQ-P4 zxpo{T5Cky264oZU_PLuOxaE?bi{D^%6X*CP3c_;bVb5JAe%yxnVQc{Mq1+)ttC%|` z8Wac>Kr=9B2*Y+tSb|izr3f-}fz%VppiY1MU|E_=)osYxy>0F!*C!)4gb03#Mg9~; z@Tc$|K!_{Z4dbW6pr*@bz7z^AVe6uX#VPQhv<%zpWJcz@ZO9(m=ukxU2CaFg-di9^ z*GCCO_@$5!_QRV3m4qs%NHWD@B>qtLn=X7nmn{fSPALM5XDlaZoUp1dB4m70S2g5ks`CEUU(*u#=R%5i@1 zjUO(l0)&+6(V#!%ZpEj122h4%s;E31U4u-vvPve%LP?8Eh7IA2Uf6c~7>^(bcRAYK z0UaWLE1l2*v10V+^%h!xx`BGkRrBrcB6CbBst4_X zY#k`D5hBlt(2BHF)&G~z08HEfiGsiC8vz5ha*lPMySZ+oki5U%%RDiWqz_gs5Xo4WJ%_rNG?{9Z^z&=zw5@HIo zPA>aDT%A*NAknt9W2H8z7ReDloC<1b zRAD>Sg0tU5KBTVsBb|H=R2_+=kn&r6nfd%cbOE{CkT@*e*nif5`XZ)X5~f{#;BJpZz3O!jlXml?kaeYBerR`&nEJ|s{eBsh z6XGOMMJsQI^_Bl~`h`&lx<+iLie}W&^Fo@OzdL%u{b>wh2>ygS_=5^|!BLrmZqh9F zGA0%qtot+{f*^Xgl_%IiZMStkoMsjc9?3y+69)QLSpVl33R?@I$hitepqeqr-(kN@ zhEW<}M;=n|`TqH+Fwjr}Q%-JUY|_dwm@wlf7_rufZ454NMS$tgbo@`B0BLYYC$R52 z;kr9Vk@Y-M2;l&I7j`W_nDSqa0<$x&-61g)A_d~3!Ey$*s%>uM5C}CE7==kPM8dE` z^sV35zd*Ba=6O*=eMy}oG2mOZ#Pc7`CC`G2d4F8u$L#9n&u<}=waQ(Bxw7&Y3)&tO zwF?PBJ*i&)tN}W3P348cwST$Uk8Gnt{e;>58fWnoN?a1;FVtaoBi1@V+9KM+I4V8u zrsmh__Jd>-j2yJe(Z(ubgRhGGI?`guJ}@L%vl%PhQuGM5z5laGG|f% zm}V=u#5eJtx0KB#e3LX});K!v~HBn!^mXw!H(piOnjn@5c1%j5}(~xDk3L zPHJxS>f)Pcvbl`TsH6LPFZJZa^fMIz9e3DJ%GOePzpNLiSE$YHJ@k9(xs}ZN&3_`y z+Lo>jejr}#wjK&N-LiO%-q}K&3aOfUuihkn%MxS> zMaO{*=Jr%Z_5Ckrcb>pw*GUfKjL-xO;n*hc`za%3XdF5tC*7&6$LAmUKA+>fhZ^t8 z_mQV#JeB1vBEQd|ydL+oY@io-x>6zbJgI6vCi?e&#Ewx_bQ0xbc$#AWAz{bWQJ=f(V{{j|^z|?sX#i~V z)|04xnI8HXEr8c6!;9|yM+-oXQ>a?#bZKI9B=1yv>rdCb@=1Df3Z0cqyXs4&Yn*G1 zYtLOi8$CZMKaHO{52b!QVOnmoLA*g~wG>u~MRDd`>7C+<=!yQx<-DP&9!vXEIo1+Qd8J+2oJqTPJz%bUUY;I5gp48*N0D5?aiM5qbDA3Yp*o;D%peoTe7FM zMIyihOtY7$Q=pls-KR#+m`9YB`ENE=Qf@FEnw5oD9mda5A#7 zG=`b0@JYQix!vvey7B09dA{Aj8*{m~K?%Uzqy_HwRtx!iE1?WxK?wgP_9o3-z_Oo> zskhx6J(-{98XpPuW5|_DIhCNv%}q#d}$rxDGQ7K`i6pg3=vEwlYglfI++c(8gr zWb({d2Kv?|W9imgK!?TPSlg(?qX?i(anwIPKfm?lpUO??`|0h4%fXbKu>@Ig0~VgB z^u!N$4%5h^%=^L3HVK=x;6#PIs z@7J=ZA5}1^onWG?pd@33!wjnR*sNu?NTR3>qCB|EprH`l;pA?A19^Of)%k#yiK55I zvKPkDy*2Bhir)(I66TW(eyFZ+EUPONpT8^kmk0qDjPYTVosLczkd9*oV|%xlekm)uCM%|8rR}ZYnx4M0 zNWP;4TIPeOWe0@qT;HpAvyb7jt5p;v4pW9?hos7gReDNeok-9A^hph^)=rMdB;fEq zuTGel?6ceQY3#|+dzeLQW7D>(jC_$t0vSz8x}RjTb;iTN75XsHYMKCU`;F1r>1j^rrDkB&=xdOz1C6(a0col zR@U$t`<*SCuu?nZHYWq75MV5(U{AyT@*Fd4MTNwNStjuz#1JT=H^N&} zR!Lf8*{OXyn1i-pJ}3ihM7A22E$~Y2Ne%YP+yuU@yqv7Zho6F61o_h&f~LhYQptwf z)#Y*I+piOEi0RenAL)kR(M%BM25$a(Zz5(3;N6H1UkTXXI3u;^s55q{H1@LotwGFC z7O~<|vvS+WmG)4ZVx!xJ$#N(b&w^G_D?iOpom^8SWN^&>UbQhufRcvb zdSKvDEtQ#NvqcLeHiITEuZ#Os7T^0aSanfcfbA>Pgm&zI|8j2z$CpjDvIdpZHIF0-aDUzHkYZqAxSLI8Q6PI41cHC zhOx00J|imjM;EGx>%vv?(;(V=_rho%tkIxW)fugRhRX$BdpiOWrB*$QgQsSOm3+MF zB+vfQdA5%YzW3@tSAqw*CJnWZ852A}`jYGvxvE;y++nolqAK*OgMj2+iS{56g6Rhb zkk!HbB*VwA>rKG;BRu=vSKn3DScH}s6(3Z->c+e&SU-xZNvQzD9_&(d9{rZkx^Q7S zZtf4NUW66!tpk%rOrW<8cfk9bkaoN%0-WBzLA8{@h2i)hd@Fv^^G-TMMo<$F>M*Zw z4jk7grk3=kmZtHsg|||K#aV|xD|Nb%V?WH>WaioO^i}(=nE1S9oqKRRkI2R0u%dRT z{%9j^8Sj0o)k98gL7J!Md(?N0nq;YmydfWua8P~*=t0dTXrCHh!;`EjwpB=mp4hWo zZ%~?wlsLgG)zS10)ldIuIk^#+^s`&;RS7L3h!qIq9*J$a%H@u}SYaQH2w7c+s1t)@ zsK#Y!1)0&;+V+dK1R#Tcz^rlzwXjY;`14G^5Kth2DFpl;6K+?n28&BzCEhR+hY3{d zb-y|WVj8Y`M|j^|!z$NS*Yzm~gPKkQOde6TLP87ZyBzKo_;09kP_GG*yWo0N=cyTa z!Rx6aeOI&`HTzgRf&7j?kbxJfmV>g7k)Dh~YYXV*XlhjAN0K9yjEqrq;BZOK5mSCY zR3SChj?Nn+2L2e+2Dbp=grPTH*yCk%znGK&Nj2~EZ$v78*$up#!fTMq17}2$Ujxh0 z0|n64FfhEimQ>Gv_A-krrH;U39Duaj?nPux1glQtlIQGEZpQYaW%M))BZmE(g&R5* zs`EBbHO|{8kx9+tJ1|Yb#`N~1F=QnBB}cKX@q=eHy_uEb6%`FNEyMGh2{R!bW}WCK zK#~Y^myrLDUaWYiGMtpb6N~ve7Hp|0+B#9WEj7rw@H>rQ*}Rx9eNo`nVAzCFL3j-- zq*S9Uij$fPvFa*)4u(@@elR$y#eL#wiVJCOzyKuLIa305al_dX$Im}osYGoNiLW(| z5W8Iq_DQ>tlBomrZe-IhCkVX3Je$QofO2rTDa83_Gu5-@t(P79LodOlgy=sde2JV7 z!juoaX0IZtV;1@9A|?wQ9MDw=I$jZSG6yp7BM1Lb*OW;)lmFn!nl?c!XcSu1)B6U# zx*#{wSTfiM*pHoIg=pBEycSf|ojvDsS7CR~n##@yC|lFDExkw>IY$i{H7r-v1E!dw zA!a>=u*Ef=Shj(ePkNLoeb&ZqmF@ke(0*LM6}erXb-{0`&55UwxM}Noe$P` zh(>c+B;ksdgR0qO9hTd+=|t#!z)04BVDuRAFRz0v^VGME%AbE|3Nz@Nk4yLHy3?sdJXO+Yy`|vzMs4uo`0BW~(6k3V|AHR(sP|a|HxiALd z>n5=~kbast5`4W)mI2wdq9s@6R`lpO%(ZOum(^)N^Q@3HYHZQ=vQhxcQ0~x2bu7bR zONt;4kH^ItH2ZuCC!(;8!0>0ADNlk<_EHo@&}YY3(WHhKLxUyxok@Q;BgMgX$)~RO zkB47O9ISc4b{(D@=x2BI041UCn=P^3X$9QE)#OP-jV~(;M^2lX#u}Q#>)fmRh&-^~ z_K>7Vglb3?b#nQ68ZqPl@i3+G&!(Wq(A7=vE&n2fm;YFk(OZ}1V)eQ?>kFUXZ*Lc$jUW(fvG%&V72(@>vjccykurAL#=J9`SuII~>{#&WW=9 zkAJ_NYzTP%8zXAzdD?zj*tt^gxot>|oGo6vo12)4=6n59g}mvw!b_Q1_UQKs-9$h0 zQODfjNAbS)#%SpM#Od+*oQel{yeg8!=ZrNXC4~3iFj{Si76u_C7_o?enI@i5_>7{r zW#SXB#0MRqtjUrBrbHPOVPkIOGREWz=HUuQ(y4li2+rBr#FS$>2Mo@soAMXm9}^ss zMn?A!!VX|>(7iI>g84*qzxNO`CKx8j9=P2=J@b2Ib&79)2S_fHkjEqsOm2`pGCDT( zPYljex2i4}T1K|MOt-I_@1J>9AwNI=e+~r7*HJp$#i?J^HxLkX5)crY|EB!FMIoR9 zmD*m8=$hV_xw&(E5muJ+$S^4Rp*Rc^K@yWN` zVqyxqy0$w1{prqY*X8TBhnsAd$x1F@9;=4noQLW=^jghStPNQy_B+;NOMQ5GiJC`wK*3|a=*GYax{5O$vJB5g`2JMcz zupVFP(6)%OqFK^X(IaM)CFqfe3!RUH6aF838t&4Og*uVG0-Fm@h9pVyqksf1+=<~P zOPZ`%ip~Xa;TV^g!}*9t)|_!`^=rNMu})e&#w|^#_|&;r)~HRZ{8ON6m@OQ025G#d zSr~|*PmtN88hQtt{>+IfTPjnNruKwepVf3#Eq|SH@{xE#H3NbIvQ)?+Vk((dz!Bt> zqhg07s@jD#2NpYGJ|#6kDPy*Tl`V4+Nmim3`(j$IW^Tj|jRkQIsl3Kl)5)GfZ!ImK zmm=Y@VN+4>qrt_;+v)G#%H7KH1T4CWFHO~QY@$~jmTDzr8HYGTHhq+8O$k$5vbT*F zRM1wrfX2kd>eYH%CVM##$0D+dH%>y3vIbnq{dkwl=N@&+v77+#IcpH#_4X?BR+zU3 zSI1>T53Z`?J%V!VlSl=4y3LJOIaM>uqk%}o_mr0Q8?E6PC|A@7QD7%-4IP9e`AAIg@XS+w znsDzHc_z8f(0*EpPC~kb4C%2yu1FRvHb@Wo3~^fC^^@I=Fx_Di;XGJsF<%q1j=4p; z#5lWJ_sA~hoi5ij-yp$D!{5#`*;6$WJ{t4guOE1wAjt*jt`HD^=P0nBslJ1%$Nmz* z!Y()DsOH9SS}N8WF+L#ZZ{}G#)+DQ6|GxNQ-4T5X?kK96rNwCbZSaLh{To)uU~MKJL*VM31O_N54!e!;HevJt*C~N$XzHE2}&xC7?g)VDdHd8 z!7v2N!4N4LrXk|nIz8w(y2oE6PqWA~5NagG@sP=|3(PLGqE&lv1q4tn5ujdZq4OlN zyW!YZ9;4ZtFvNwSIlAJ4iW(poYGFx~{y~e%B=ge1NugdDgzr|pYAGvCV=NUJjUpJz z4&#++i7;k=;!yYz4e~SzuX>+Fym;w1fh(*GiAr;c%8+k1X5UGxOQ4?cobLNb+m^%5 zI7W?I5*^T1V6vFdb&z8AaM!3q$ZQF5Dn~bLyhrcEAL~SpSncO?o&9sNHhQFH8I?JhovUbza5zSztG2qqS-p zj{&05KRZ>m$I(|*o?`se-u3}%rm{&x#fdva-<_#$-Ae~eVyoSPBhvh*k6R%A=4S+YLv}wSd+SWIGf9ImBB4OZqs zd&O`8CChFyWuF@<1umvNq=a>8W*RE?EUT^-V{hSJ?xMfYbIyX{<9xRcRSlT>zlN$% z7;}m2_Fyc@@*%k>`9^uhp#VN8_k|CFcvD>OGP?AFxV>E!JTCfzBzsp`vD9hZ?llQy z!tyl+u9I`bijHU@d552r%t4KNFf>T)>r}%Dohk-(PweOQO`vz4QP^k(SZGpXtj7IB zd;KGh$~HU-&L0g7I-qtqX}!O*uNtG^!B5x{6zs!Ki^C;x3QGdf{{qE&?qKC3$BhUw z*rsUm)KkP+MoN^vJfUFaW()*z;bSX9$@$|WgUOYl1!)Q*i(nQ->46Ig#-K1e#%P3& zaKFQ~|BVeuB5NG{QUJ4gZ)u1lx;MoOl^-M?Bf-fpn9o% z^~KUD#e-Y}m|#T4ifWT^i?iG-VArcCEL(UmQR8k7sOF=(se$y=9g4{-(x$iclr6Ly zM7}>K?E@#QSQNyG55Ig6>%srIi)=Y%wG)oWY~G%+ zKqui}a1pgHjZKY2vT-_$DUAV8iJnG-y5BS6&@VCZMOsu*CeQwbMRH_C`j_rSe?N8~ z^+K?lm`EC-KLClR{F&dxZxs(p>;d8xnQ@K4x?kDkiUP5r=vHIean4ftfuj8<$LTC7*I%rj*!p9QD~sOL6> zLG4dbkZ!;XY^V8W2Pn1%l|f@XReV~dQm1XaFfp0Xv{592L2uHf)(`wY2b+9>wTdZd z(khBYb1pa%h&mR*Woc@gY+6nW^EmdnjbF|=n%sP|u&h4V*{f9;VOE)y(gPBi37T$# z%BN7h;)D8p{V9f?$?vXTsEq5gW5WQ^DG>;mldl8)nvI z3r;6jyY&(<#Se80TfpE76yW?-hy&+LtOAkTb-#UHu@h|H;qzO;BMnp|cPn7nde zc^!We2+cG0XV~|_{$R2g>WRKIe+t4L3 zRdK!;pUFLEe?IQQq8?$FK6bqU!<{i+l>rC7xz~@GZJ&c3|Cb>6V{a_`Cr7;Jl~?J7 zgOt=qU8K*0X`hD&Z$r5xj`TDlN4hu8yc`f6r<6y$hVeHbI(xVZ8Q0y=~^SbWZ zNBgXQyH)fjld7?uAq{YG${uoxI1Jy)b0=DVH-Ajo5`4&I>X*L<^|4>Q?aKv!Xx%We zyTp4iFq%>HQCNQs?b2L*4eFv?ef`<>aDH!J<6g~BuUN#-^Zml_etu3$PZ9bQI6NvtDp=CBJ+l{BMS zL*}+CT^W(pd=oI2PRL+bSX83MGnYI&Y+T}6N1cOfH-C3mmtL)0#KP44JAY(i?*)L~ zQ(5zDPo5no<^A|1MOM{T57Cp3vyp7&1vn+`GoRmm2&BT45sJpp`#tWBIuWmt=ydAheW{9-S%Te9}x2Se8~MFS^e$2VdrB`6S$s( zrGB?O1`H7^yI;Jv;&KtXd1}zD9R;^Pm215}LujK~4Y@8i-opefXYT^W?(Yq|KkgD- zW~Q~T4ZHsiW>l-o`n$a0MV)>Y?f1Gs3;OM21t9C_gb9B5U-yLxetwj+XzD+^j^y!S z=DuDd19+P`;KPZ)=c(Yv&GZCvm+Rf{ILcJSOP^b0Ot#M3xclesxiihNyl%ng7RAq7 z@R84t#k_su&#y?b&rk74MOsK@e4$Ge9(Qug$U?rJFpnsDczCmGsz^xYsmTuSq~{`D zhi%F0Ieu_q3VO1wi1)4>uy$35FCMJ5XL0= zH`5fI%Va|@sVrSXKaEXgLm%db=b}~Z%s0wx=jrd7dM*=WihQ?U;p2sa35n4Y#d6Zx z>&5y!#j5R3dtnaSPk(ZFFTDPQ!pCy|iO;6Ugq4YAspN3ukBMpaO2n?v{k^rc{FIyX zED?2jY^1ip-mrhDEGk)06BDD8%WfY(?38KB(-6QBkd@JDRoQX8Hn}RpOnndkzq8rg zWcGN$zEYbT5&uhLay7EG`EPJj8eogILeP8ZoA#8G6f|)B_Td(hg8~opPk3&56_)PKfvO&?Xl0U3W2P$ zelh_JF#v_WK&Rvy6NkObP-Y)oR9=$k#Fnre8J<$D%v4IDg6oihKH?@DWp%Wt=go60 zs_HZ$j&FH#l}(q)R(KK&C15gaY&?p;+Ie}!TtbO`cCo64M5i86lbT{j_umVYl)kpQxD!VXIF83 zAJ&K`XSSV13RE|8IjSX8pDguTIq@aAr)G{2Tdf?$ww5cDEfrk{dA9SN}byFbqDN5NB`$ffNgx zHJ~2arF-?R-`qEwe?ru?L2KOWPoK+0J}_CR0?Rt<&u{?RA`sEQcq0RIYjBo8QcO&h z+Dl{hpdR*WH(7XN9PPv#*F{M8%Cu6aS7|92OR%X^mne>rD54^a8`7}jLL&^Dv_d`_ z^1?Jy_lt#>XitOy-vaoX%;bfzCgm(cc6IQ*4&yP#vraa3jEzcUDW4uEzMZSC89?aZ zGj6I7t29=|&>j~}m2u{9wvY*Z@a!YsRrKV1IOT~IfJArcwrC*L$ zB0S3l9g8VoZpyI8iIKs#*Ze(5YWDTDaC2c<`5q;2HcEzFsOhO>i$aL$*KZI{K#UpA zunZqWY(m^+%pdiyt|B_f6mepR0;qQIuKH_|z*$6Ol7QSX9#K~Z4q}_|SAJDpWVnQb zCS-~B$Ndq~SAIz+!uE(;r)OTwc(zKS_+!xeFZ{g9OdBiFvXO3O>+`(@f5@bwrVvo{{rYB=hN=jOpBn1 zr-WW$chk>P+k)Ok?-eP=o&Y{6W*F%Hpju)`;*iI`Nb%xcFUBuEV=8{qxjnpbnkobV ziSm!$DMJ&vVo$^HPWvGK(Mv#oZ#DRZPAeB4v(9-yWPHwOc?R z#%?z%EO$w~XHj34*|3Df+AkSrUUles_EvN6tBm6iS^!aZ;Vgz@ z?;$fI=Nh5y{V5ydkvh2j?)T#GipSaYwEX0$*dqYdykq*ty>}VhVL)U57cIJ>!OTon zQr0FER~r6DWGi=(9OUL#;*DDzQrf_nDPKXxZn0Ig^>1`1^CD%5`6X#YJ&7jE)%C1J z0cP}!a>A0wMnF+ZCoZnvE?n=Ng-)RF4$2)TNvButwA~!)0sBa-cagMwEf=pp!IkeD z;z6~xBRgX6l53o`b@4B0Dvo#-NtY820O@3pXH&mOhv6{vlmC!wOg)`t{^%D+pY5w} zGk*Rjs7@~j(s2_rYSe(^$t+6t-M%WNBGKtGLDdimGl0(Rcs720ju#eF0Vz&zy`PcQ z>9a%BoDAGu)1Ki$lC4jD`d&^e)|{uIDn7p5COVvy=$bk3?E`jBJX*(m_0O4xo`08~ z;f@IWca~QGm9h-*vh{L-k7XCMnrtfTrw&TK`=%KArBDB}iWGHV>uTtj$m?_C^2xu> zdFkpNa9IuzZJD0(@3H!L-zLJhH*|d$$!W0Yt?qt5LSC87;d{Edu&7a7Lb`mK_K-b2 zvRC{5O7@boIs>@>Tbc2@dNS$p+2ebT?eBrZR$ztC6T09%!fX#_@An3U#|t(v5?ZA> zLuWJ6V+!u-Z>&}1qQXbb{g#W01kVU#5$w{>0l6!`8+m1BB<88MO2S8Oi`ER|_Zb)T zbMNE-6b{F7f~k666%^eU_JR0+hCzV4i~WB~2Q^(wbj>edu0@htdj+Apcos!EimEP# z2giCoy{?qkc~TBPYi@?LM#(j*Z!JblTH275ZAxUb_)xM;L8M4; zWTc{j(Cr@Lwe%o7OtS?C-f71}FXv~*<>yh>=j8KDBg3U7M1CPjhKw(e;>a2W3UZ1q z@M|!0^E95C=0d|8aiXYRn1^0iRZdmCF`LX&Y$OM&kB7W9&V>Xm>?ZXhqqVqla8XTa zWs%`*++i+%ZJzn|GXXT<+9{Z1QmLHx1(gv&m+$AHn$sS7xQB7n zjrmCp29X^y+%)9ibapHIM zkY($4nZLK(ue-)u{W^mtwzK+R1^xUEyHY~u%k$$UcB>QVEr)sw1)?!avISe(Q?{Lb zUJ#8^;qH#DB|#yzLwjD-kmzh^k(n+LyidHYbk(A67}aKtfsDWqb5R(h&U8fMCH!mh zx531mVrOl&>g4-H8#o2|_B}2`Y@q$jzV~a+&1OXa__=KwCswFGo*YUyb9QF7 zN(+*~dPn_t6a5O9q2xG4emF6XEm`2{>{Z1ujjx}&-op0n~<=C?)@Z@v8xjTbL)&V|^c9ZKGn);5+hB7IE&+EgC0y}7L zk2nl-a}9z|Gw<_^jwSaj83R}SZZ2PwnSm+1OWV&Rdh#iMZaSr_9TbXb6|r=(FQyX- zdGNvK6*cJ7{~@XtC++g+gMvVTz<%vVs{iaooV54<3}*dQ`t19e5V~$Ll&6(D2;A3V zz%w~w7UJE7e#xMz(#;n;gQ1l_J#rJ+hGXEXyJuUxF1goqOc%_-25Aai$fBuHG}>J$ z%MX^&`M}SixPxmbR1Mi$Q5w&0Ti5p+$!8)N6G%;tTJ4PPf61^f$s`3a6^8~!P4Ld9 zh1F!4Qh-?I^l>A(NQcs<6!C45 z*KAG7S%!SpSjs^0M{`*{dKAiMx?#=<|Js)mNiA7LMw?2`+h?)6XuV$|3lEt6>@7bW zy&Ym}3)3Y=Rv0q%Vj8cM1k;HTxP~6|w_Xl*tyE{Nan-n?-hujSy-MROasnO|CL$_0{wZ!hve%{V zZif3~#-sc89c!cE{DD6x@FydNgygUU@WvYoDa-}FTqUR7yiiMXe}hoLmN11xPPbuF z&A6rzGlVypV;+H9!J0R8ntJRbowhZh7x&$-Y?2_+FvA4)Xqon*ah1_)`5nQlN@CMP z*Im6__aVErWGd*~ZTUxY9>hZzgGq$dQJnTeWT>jmlJ;8tBd=yaMdz8p`LXF5(D&iZ zev1VzQDkVX_J*_QiUcFBLHV^=3d08u9xSQkm5xJW?WmXt65OGLxC# zh^Y=8+tDFBiF$y^ZLHV|%?wNxl_Oqy7vdic#-JRJxeQx1^(kTVTVs6madGmx!9=N0L^4b<0 zVls-R^kBm?Ca$$Ih|;yMBUh=yx9g-7DA-t8u{A9r5vXQH-z?A+CU}MKK!nn$r3#6O zDV&wa#zG%;wP|8@zJ6wM0GlQHZzzl&q*w>VC>Gf1;YBjB3ha-)Z-{`pe@-o{$`0Y6wN4ND&1LF}iEohTNx z1HC`^^DDsgb6v;)Lv;h@Oj|P_mvRClUgJ!)v5;_d3wpma!)65o6|klj+LHK97}|ly z=0+K#qAU`;q6c-9yVFaOtqkE9d#)XOj(D)-NEc$Va*UC4vn|{?VdkfG5@HbCt>#_8 zT<|R_->Oh?Ob(soukxU-==9a_r1Y$KfbYGE!(0hcA}7QRZvIioDp#fLPr@>9gOi1b zf{=5RpmRU?aVQ;{D*!^3SUODG5U&YaUx{PDI2}=X;+{Ioxi&*kB{NxreYHCxnJw3C z`$9R&>CybpYOL5ZasUVzPkykj90p`RR|fi_O=@<2d7cI1osGOQ;ZN^g5iB~>uoPhi zEP5&^O{@pK095M-QUhK)!ouiv$KQn$gxqUVKSh(FZ^uEDdI5OTevii+tnpZhq&Rsd zgj9&6KCxPiAJny42Zn8vz*4=JPw=h_27>tQv|0KzOhaT(+_Udp_thqJ-+C_(sV%^E zyn@N}{iY_uF}sL%o<_ogvXFZPD~`#z7+n06>PB{Mv}W~-U%`GB`PG9cV$u;zaR$y= z&b<8PpFBP#1^B5Vp(Q`=!Y@0R?7fSpamaR}fGqU*qw7O`g$*XT} z9v1K|)&Fa8^%HgNKM8wCKz zO($uWo_9rM?we0HX%5>r*P}T@a@X@ixs=ENy?akpvwq80$XCmhzQ>BV6iC+2A@vd5my74h`0%{AhagfAM0 z)3=?-mfajrgt&dw?I6mloTs=ad%a-{y#bfi;m5bwwGW*C{b%ZhX=#E3X9oTDA3yYb z+WT}oE(pjKJqQSOS}zs0%N8MHRZ zC$R5Iqv<9Zq7que>QJecj&f?kve?pIqDLcGow5~~eg-D$Fwa&WRX2kV5AgSCOK!q<($T3^O1~x#eQA<|}bxHFY#$|9hS# zbv$J&WQyi1N!b;*r(x7N0+MyqgxZs7fnzsycxzWAm(0Ejla)y>iLJBrNc|QEOSS_C zAQH?|A9`D^V=b{AvcsW0U@3{E*uK(YC$cY1-c)OgU!hqdebbuG^$_iDuo%Vol2$a$ ze~DDp#N8qE6Y6!k?Jx-*x*Z?8ftoMtKiel z#2gU)_+8{<)??_8SPXNGf|eG*OT5>DBc9_M=hOVRl-7P2`F6P{8O8p^VB&e?|wp7FptIVS;KHis0$TBO~>j_dU#_Xp0JPWad zGN?|YAE2ph>iG+@Xm03YO$K)GL_N$;st>iCaopLgn@D->O>391TV}vhdS+5>wYCoW z)8{PL=ihGLbV<3Hhn1qLhzLVkEPl(i&7~@<^9awEQ=)IMGB0C{kc2Ks z^ZE4PD24J-uHvkuB)IE(NDbn_L0;iKNQi(gkd&h_XVVVShRS92B!=ID@97Uq^;GT< z>kn=0{!ogESJ+UB+%^SjZ(VfTI&;)IvOhnjS1xIj?3%X3(_ z^^3`Q_cG}Xf`aqXB({i0v#-TBQELpZS9l3S78=EyZw}pWASZzzFDsuFzU)Ihm3!wL zTkdr1_9uhP!R}F>jiT&p!&Zll;OlN7|5PXcsLBZpG54pNaT#6lmUIr~;8Dbyc`kyC z9lZ1xlby{mg;tblQBrSXQb={dLs+kq)XpOzrMi#zfiW{3j3Yag~bhFmcU6zOC`+ z97eJ@5i^Nk2rTM!f#2JKii!I3c1j}%On-iukJZ%R*k1dueUo}9F6CxYg~*Y-q^?Zx+yqvg z8JvDy`e)Bd5$2-!&ly`*`4Ocy_&W9esBeTR-I|vJPXf`e>5!b_!CBGgP*E^gRr4AR zDRBC*F8u8PZu4U=lV=`zf3S~XYq##jD-8&FzLzUvvt1Ah+i4&kNvj5&j&fxYJqFKZ z*fiBPkGvKNXmXcW!J`)&+}&2ZJ^`l$anJDl@?^6~PVK;6F;e_;;38VR!+o87s~tUa zQxkroiRM{q-Sl?Z`U`UdFUZ zT!;175sFEG0Nw1!zH2tLX^$ikNFC8^^JATVux1ZTje!(`{iWGEOx=<#bpIJ>h`{U! z6x8eW>a}o=rR`7m#O>!NW{t!FWscbnXIeafYttO*`MdF~nA7Rdg^#O{+v-;!7kI~- zF)Oq`&JS~W4rc7&83$bB3J>CIig&r>qPxl8yz8#aE+~7*{YMMGxM2JFouj_Qh&VS^ zT5tK1P9j#|wF}xK?zm&T%9tY(RIX*0+guCccCy&`V`->k(>#ea)|pWJxM8IPu_7Ko z6CyW(wdCqa441|vv-@=?I*$9SbF={=OqUW1%y+D8eVBOtLhp096ZAQ>3lrEUUg2!d zRSmCV8>CiPLV3P3b;b_X= zr4oi+Xs;vVRL8%B7fNvggC;QUu%Q0H-dtDWHIoGlVAufOj~Ms!i?L3GC|8I?@uNSt zR>Z@{Rgf>hB#)wO)&5%@2dTRvz40TP*ja$i;5-r){vHW@)YCT>d*`I5Zxudw#J&yr z?gxcXM1jN#kps?$VSF!C8gf6d9`~@*3I^mC+(l2md0O)ty*_)rj;@>;g$U3AG7&}J z`~2hxWm%+9S_7R4WRYwA;QR(>@`}Ps^cq%`sY_@5y0c>0hwu({y(c}`^8c_&*zL9x zVg=|vGR6Hr0Bk^$zaIeK51_nM9q{NAuw@UtH#Ef#2=9&Xs(t_|w}u_k*0X~OJ?Ojg zQ2P)L90VB3(x+JPN%*D9Au*3W1vDSw2abPRgddbqx|l@byWra(1fPcB5>cvn={*i7 ztYe3Xwz-=fRtR2W!Q-h&cOXT&;r(H^r905AcLzq2G%N@ipD^5_Z#B^#>Vc8&0Bjo( zr>Oj&y3i7!OJl0d_4Rv>$#tGQ}Q+pW1bC&I7(FrCv5gEqlw z9?f6GzAO*(lNYZhU2eptUy0Gpjwyf0_pUH9)EZz z7|-OG-2Ek(S@!cJEUGCSKH|{|U>pIWlsJ@d1)!rIt%CR%vL!vmM$vZ0t)X6=Mx!D% zT%<-up_%DDT?*Bw_hU~L>gtY}AW6E6B;Z%@mVBy#V>gu|!T@fJ8(- z0fCDmB2ns3q12xu;`$@X`Xw-;Y=Y}naX(e)#I!lQZG28t9dwv^OzDWo8g^MsDj;iT!JKQb6Q$++G?mwkSA?c#J^Cs@j=&EWaE83zMb~I4 zc1;__lV&e#89Xj~NgKm6&R*0`;K{P9+B0}gvgfrNo(XnY%i}4q=d>c8Q|yvf!c%4! zwF<2U$u<>>r|k_dkr;-Z(N_sh2AP2QGp zGr~d9Stn^!GTy2&)Sy3Oon%Z3hTkWsL}aMw3NJNcdbTOwTo9`sNHw-HTVC)hAou65`Ll(Sxc|1+SNio?PTD4w|Hl8P{Aw-MxTAivA+|1J{9Ar($xg=C z+9$Q%Y+8)4}P!zWgto8p!^l`#GK!PvpJ~ByGWAq zE9+0D=_JZtRkbxd##L$APn$Aimjv+BS_&p<0G$rtr4wl_+Lu>mj+jzQW(lCH!iXy+#CVo`2d4ko{Q`?xbAp zXA<{xJpa5&%8$>VH&%(OApD|9%18c-xf19#UU?!ybWi=#dZ)IRkQROZ>-vy+gLIk1 z@YR1l#MPqTomA)>sA>FG_9lGDf8X-x-=iOR5&ghq?Zd#lvS^w1Ligv`zg0ZC=3N4e zBz>4S_MfA_K$G*fNB;p+U&iY@Z2=uK9^s4agTz1LGGJ|E?~ zo6bKL_!nC70XbmcAd(+WKW+t4p`XOqhrAP=^5`KbdJ6_#Z^!PSC~$NBP2L7o(SA>2 z-G3Ji^QXLrt$hajlz&_aTY$M2{rzVi{SPR5+fnGZ+ia&pd{DrRrx)7()7R$F{}NvX z9B$D60RRC1|Fu?YR8z+mP6#2{2o!$-t5_Ap2W%CBil7xRR74a|RFD<~Bo81E5}F5( zs|YAQ5FbFbh)}A6BH#-|v_+~EtKL>neAQMFN@-}VD7A%pZLyuB!(C_H-@UWex8|FD zzWvQUb0#z4EwbTRix&%ndBwsmfxXaDY-}wyokB+63GBtpfM+Z=O(ElMW=wyylP8Id zc_Sxpv$Q7~V^{O}#lr6eocv;8PX?bO9B(|5XJv2A6;>1re=xE#Ewtwf51ZNBGd9*X zabmFzakLRz6GMZ*GWgX5lf*X6Q0OXjBKPd1Bhp?n)bF3U5Im7B-Xk7j>;mk${IqBQ1P zbCT(t+i6}AI#L5~D=9fL zt#oH-g!-22m^sH9jW&Pn{3*UV3$p>nNEE;wB)ff9e9G$b$Ev?}Xr#72YvoC)hDO#Xj&~g8#U4f~6 zI;&f&A|?$sWoNXQ@4r;l(l)2SE2u&x+g>PYPOEkGp6g%ev9kMtpBf|-B6d*xgi-0EZ!eWK;4px~3x@L%T`E1xM7D?@u%oL@N}9MSjEJN4UwPrtbvRnt?;z2A{K%XhKq1jho=8N;)(d>)#^Zgv z6Vhlu2lFY>i&{e;n%7@e88uowUOGGUGjJ#@s$6Z>7k2#))twQQP$fTBYQc0XkF>0klhuc z@U(qVAMCEtnD_sn*~>Lc9@W+Ni)4em*fF`I#xO8#mS91KZN&JzBQ6`#e@x1GICfUg zmpAiWBscDjQ+Yh^pFd8U*P*D6ecxg8m2LN(^W1+{mSqO)l;81__Lo(rck{zdw^vw9 zoBiUu%~jXFd0^DAUb))z0=KBfamJ51eGPRRmN&U}nw%}H?Q8quLFdVDpZEl=n|Jxi z<8kFtQB`5p_57zhrBzM8?dXhpEA*57_r-a2d#0#-`zD;a^GFi9_eUS6=@+6`K6n_N z_PKu{tNX)SH^!>RB$YI^KFV1xbpQSkzvS8aO#>s`JI;I|)AYEsB`i(kIfQl9zdKb@ z7-IF#X#e!X&Z66cqndbGVZB2)1|N46RGw&2%dd%?T`C?lott%}D{a5uZ`-{!yk&7G zgQa7yH`sx~?)NI+{chRQ&bZz%T#dZ+vB!UZiaO_)G-j^Z*g59f+ThcP$xo{~P7SQ- z%WUfiZ{Y;0rOdr^l=J$mXa8o|=L7ppV4nlK=owM^Kj*+!8fQE<(|A6?TFRL-Xbsh* z5JXU}C3uf=CBeJ21_ePF&5a{iO}UgHlLj^HqgRm{M5$^`qDUi`#As#@chM5PLMao;{1bi(l~k#h$%j1`{sW$`zJZCBEWcEq$O-?4-kJu< zV#jI7YP-la$^>6Y9P>Llxryv-Zg^Vh@!bIypSzmzTh+P70n0{C+;wpyf9t8jdxsBJ zt(pf--p8vS9;i9HuigKomt}uxZsgF~{HfnPU6w5086WAAkm2+3w)k+7K{=Em1)ab$B$fdY0wkP0H4=o-Dv)*zACOfH0REaCG*Q4AM?KJ6Si>j z!Uy-p=H)iqp0F}?U$QR3G|~ONp>Nlz+edUuBUNp!y(Xl)^zc3N>&Hj>9Q956y51 zn&1k23D=+%+Tc3efOdbl3Af-j+=09BHGBgPpaTr>5PIP!cm$8(3G~A+@EZ)kAp8!` z;RXBwf5H&FL}TQm2?|h%BhU=Z(E{HUv;9y4$QW?~j*qZW0j z#}rJ(G+cv`7=ndv~&P`WQ+I_W}b8`hznPMb65FrVfFhjZrp{Qmbzwwwgc_#Erq z``@?wzsr^#H?H+~#)Cb*-P^jWJL4Wt^CpkSv#)tLS1p#Rb4uxQB{!HZWCt@Nxy;_C z;$E*Bct`VtlmM;LA&kjOkzF6oO%U3G-!th`@cjtJ%oU6mzXOj)4%fn6K zaLew|bhVl*wCv5@wL4$PwvHFFISg{yfNT6{5u#j{rRPBg(@-@GVv^QgDUIf0`Km8xl+}MY|;7HX?By09V`GcIktdJ`dL5!FkC17`)8nl@Tqwip9}fy3mp@RCB|* za(g}WGd8XILjHUqQ_hX$3f1(k(HxNq{0~-2xqr-H^{!H`rCL;9@9xoJx~iwE#j)mH z`9ivUR~r@2AkgmAU!M}mocg3@k*Lp=l;&OOER zgGr;qtWd1B0ao*yKs2o>qvt zn19W+XGYTHbf${pC;Q2drhKv4E&MjcIhYyC0#V2{kLC)))sfchIGLKR=H|`D*Xv;J z1;Ks_TwRB7NoouW8?vV|Gm;xEDc;IlLS@D)#5)5GG_ns?QLJ-Zh$5l+T(pM4vGjpD zjcYmsBv4z_E(3{U+5En?{pGaFsX$(}$bS~q3!KuXIs@5Xsg_ZEZEjiA9hy_mLT%oh zr|&LaE$+<~@^|OV`e5+R@nY32`nKGG5;d({VIQQIFCvp`y|cYZ5=J{&y_Q2v^f{wGMYPp>aTb+6{ymy>Aks@+^AX)7mXFOOq&3mb(M;%$wQJUPuI>C{d<6JN=bYW+g^Y@OW;8us$t~)fmG3p{ z8fX`H&Muc(ioO6@)6%KBJfuM#h+9kLVo9}pAJ##wznarTGmHrozQ?m7f<46WxPPyD zJX$ZleVXAIP3)A$(dziWse9kxlJAmX_Mk%Qp0y{)iROr5PLv<(!mmbaq1^n1?-5Hv>9k z47FIEe5gHQYD0TM(quF$Ii;rdvZYOI7$*VJ)M3s@=q=w-!(^RD8A)W$gnw>`|B)=Q z`891y>IvmE>!jaQ#<7sBqw4EBYP3??x z3@TIF*|;zh-HHB0Tm<^N`!kiW2xMA2F{^Y}GKa&$z%2H^hy7McCUj{BofEnxZgftx z7?#v+88l%k1WVgIVi*8h5r1RIc$IZnI-}optlcoR&*b4ub4l15H)MrI8#NyA4-LtF zT_%Du8j^NQnn}q9WYly{LBqB#(av5LL1w*=RG3{NXl}%RN+xa6hF~U-7%AtB9uYS? zXAXG{84N^a$d=4RY-EyoQ=g_Z-X4aC&kf7dtH)q$LWZI;Y03dY4}WRgjD3{w8xd*i z&RONwS>={VNkhbGb^&jA&^fi0X?(8pSyQ{uurxleOU#9Rb4{zq^wPe#Cmnc zdixAUU=EnZ=leaDB7X}gGU<}_Sws>5iAUoLnk_L;;|pDVlBw_opsBqjQtA@R*+%@Q zD8@a^vcqDr>FWrKMYgX4b7a20rYm?4Y4YD{amVnui zRm4eNIB> z!WLsf<13+@{JhlRi{R%1fG+b-Ovs8ZGeOxOl8Km%CZ#)5ZGY& zw3uZ|%xYLbhIcyLg5e91v&*U5F|#=$A{t-g@Z|)@FcKH*%x*IZ!`4PyH#gM83R=Ap zwR)MZ*6muXf!?TXyF%8*#2OROsKadtTZDcP^G^*?mkxwv|Lo8tCVToL5E?=$j7k<- zE!IyqIe+|OpVyegV!9aJ$V@icI7IgE&>Vdsf1vXB-pLaR@GJkly1O>EFW-8LRG}AmGHfj7yhp!?8 zC^yALqT)X`fklyt$^N8Fpf_iwU6tmfWKVZjLP5D))k_G{!>AXvKzdLzNk%P<_2^VB zn^iwavJjdumJQsQG-a}14kTnYN}6S`BCEE1nwHL{V;bMAsAJ-)pw#7V}VJB zU#?Qc%*~=(<8n4`4RE`G(|C7-{mag?zlZFfsqADu0TGpeL`+;+X-<8r@g$FaiR+pCoU(a?!@HowhLRiO;-;FColvrqltiMKL@|k4eko-%h{Z3>SdZ<& zPGe&yRXu)VOXOHs^ds*nPfyTb?vbIF#ZXEE8b=*N(*Ok&rwl}NC(O7}<2S{`4GfhG z2^#=PKM% zQ@95TFB2nBI;`>G3rHV{i+r#<$Z$5zqv_?)OqVr( zzWsa7xAhuj>t2Un3tLxX3x6E#5@XObrZiE_j77v=`W76%6*Qgjr`RP*pxN)zpvsCG zFTtJt9mn9xxbJdNgH_hCsKF+2{x0f>9U;(q{j=FeHX2e|!i zwI7ha^^kF6i}9Jp?{auQ%)bII-o0Af!}?CC-!tm>tor>-{clL3iY6{Gpnf zBM!d_k~c!~!(HMLNPc`;^1~W`1d<u2GwAf8Y7ygb0%U_Mqy+ziB% z4T#6x*7kLW-vULO5RWI?a699-PUq}4H)m7zoZ&{vyvPCT!EbAq=~6x88uM&SJk4qmc+TN> zfbnWDI&tw*jq!QK_#zlLix)Khd|13_wqCCB7u@i@=*oF1CZ4Oy`KH4MAx9#TFH2uH z9qf*4{FuXs2!D#cbvz*~sWp{`s_ z*K5#~XikZ5Yy2M^zMFKRHGlg&J;Sb^VWsE%i#hO?IDcKk*A?n@g}!cR93hR!$Uizf zPik-;{wKd|xTCWe$%{eR9#`2O*D0HJAs1JYYn zcK9gNZGo@f!5JSZd|l)J;_xv7B89KFr6Tp`0Tb+t!CSyB+2O^5UV{g*9W&@G>7LGc zDD6Yy4S!<_yWdLjM(YA5TP;%^Q15K9a9`);LtbM_$0q0ArdZN7T1M?aC=feh;22bf zZ{LfH@1iI}>fxHn|XrpE-FHiO9{5;3k4D}9X4^>x3G*EndA zeHYTNY0~%!hmXU%YvJAZs5sSokL){Ps(Z^mD1Td_-Z7ZU+&(xV0yOt-r}9Q=N&4t_sT_lzIoQZ1XPHT>9pZ{SNNOj1 zF8HVD!HJ0Y1!VqQN&6Y3`8_FR&IF2io_|VeA72WVO*KB%Z-3@DQq*FI@N0_j>}*2I zt%7q*QAP1{;x%2~`xWo0FXOGV{Q}W|p{JCgzicq{@Ru3-%LYRy6(Khi<+29KFE#g6 zgSihhxcX%R>b!4n5I>|q|Et3vL{hIuQh$ZyW7|8e@qcspLj*+9PuCu+sOZscj(=cT z{f1s)k#}3&$Q=GKVDG4%>=9b{xLKOGbK26zBC&D!kWtw8s2=HDiw{S^YW&v@e+&w? zVb%R6E`H0@k(SQb-7Ki91NP%sD1T^Z(qG5?{n`^kQ1yZ!b%Q6+-ab;VHip@2hHUjf zj7146(a(Mx6TfD)JBUfg+uu2S3V(XHL+?9r@q4DWqhL29HHW1MOLxG8R3U3i zs7rhZH6OaCZ-+m7&>P`FJL-?9{n1v}wJ1aP?=VV6PslJ|H9I1D&{WStCcTIAj~)IT z#PuUV|K24&#?9|zJ3`k>Tz@PRaq;KGA@NCy&o`I%uN0rKeuq1Uys0UiW9y@}re9L$ z#pTehZ<7haBD;T$i@&g*kjKP!f`mU$x6v3C*Yj>ORa+Eh?*8cwm8+o?jmKq$)F z@!FmcarleaBRY*^YUQnOR@MDC+cJ#Nn z_%E~D?9Z$ef2Wmr{E)XKqk*Vlm3sRV37IinmcRQ`YF~&3{|^8F|No?Rc_38n+y9I+ zID^TUkzIyCgNDfu_rRa&GMU<2lNjs^O zrAwTGz`*W`Q+VAV!gGJS6ku6w|6UznGC$rd)1U`1qqT(h47Xe%F>kQ$L z2N+N+{E9^d55-oEc)QbqKVBvmC!dviE2A(vq z@LM`z06d)pPk)+Nc)*nK4kBO>_flj~tO3|62W4r21tzY-VBvRUEc{*qR{+<+!1V`~ z6qO}KmSGS+V&OpvT#3jTSootg;Va|-G1+!Z!WUJTgr^Wj_7Fx22qSk1BX~W+Fn%_G zK4A!N01!g>goQs@6TYyC6dwmR#B_$JR2CDOayz6zVSgailR=NGa6~#5G?C20QCSd> zK`bg+0$0mY7>+m$nFUc1kuq5tSb}B@11BshlSQVo*klCFQ>8Z2&E`iUuQL*rt1U?Iz6~e;8KdcGA$qr<;p9$e78!3pzq_X_b z7(Y!2zu5Q?Yr-!-B4w3>ADQh;W-|XN=a&g#0>bOru?Z8ZEYQ$#(9m%#Jgz`tv6vtW z<;m1)|L3-y`_ndMAZ4=fdXO}53W}Hjp`6(ujDH^*=J%8dNNh4I8b$)22idP6Vrf_h zh)lI3)1^Ut13C_`PnW{dq^#)>)qx6;P3RDWUxyq3egl~$#RNlT2+6SMvRK-rL(pFr zcs8h&PQcP|zyqp8LzSc@aGe{3rO8O(3rIi~mL_XWmj}Mtel$AF#yiZWJ*@^Ab}f@bQxG0!J1A4 zr^^H>&R`HkksNdo^3qOJr{N!D~_sse+dgiJaM(x05i%ad8-BygiF5!N=Llc5nX=3u~gQiu|` z2~>g9gbZsF3@XCX$Rq}E3o5+gMe)JXW=i0zz&{6rrKu=jzzj6YV&GXv>8cRL9Dljl zW&?(Im%uF>q>0&(5=6oPYcLk>Q%p?)Ujydhz_I!~x)!8BBu-{?9b}_p2hnG#vPS5d za$0l^EKP%j)}%?KV4QK2w~-M@>;?>OBj7-bLDvS4Hz)5jnl|yDD+^I-^#V#*+AQE2 znH?Pod<(>l0A}FYy#-7tSemW`Zhr&9C_wc91s1wk8aVrQAdCh=eFY4KC8vc*WEn6} zX_uFVsY(!V-#&S9LsLZ=NHD-67PQ2WMS>(4;9Va}n>{535ot(ECpRdt0hVSYfscTl zIIv@EO*cV$;4pbT909MWF>w_Usnyv9HYSsu$_&Om@A{k$RwIt(9IBIvp+48i$~PKrEZ9&F(hz0@R$GwX0A2e9J#T< zX8Hzc7K^OJR$%y`BTv>xZzbd#C>_TjJY?aREbyHL21^;e7$#>3?9t~Uk#K14<`#4& z5}x@V;nSzWTS(v}5Izw!!++A6ZuM_7l0Y*oi7cYC%PHKyeXz2iTOhvXNnjB$6M{Zi zThnd+qYom`2W!Mq8TW4wY%J)uh@tI&Bq5qg!cMXZI1>S9^A*t7<2Klt4F=L48OViT zAQxb13s~k;Su6zKgUCB4N5Ub?Y2fLOEHM>Jvj>LAxUnQYz~O38lz)RY-3j!R4B61x zWLp3qM>2zILwBSuptG?w$2oL1RZbO&O2$ciK+O&yLF7XIr)0Ja5MpUg7IZL1kYAF} z9|L||;}XD%eGMoLKpH>>Knef`zyn}Wxx#<(KRPp}ab=VvIy0x~s{lZ#jvOjSxZX5< z{b@RLr|FnaD1T02ZM>$^lrIso5w)Ie!kI5amc-1t>@Kj{*=; zj-0*hw7hWB`X}`Vi^KvXH!U=_XiAQqkM;;FwfWLw4_*>7tFyqCOG^II>`?cs4CNL- z@kcXjA0G!@#eGIg5~}saRTjGH=y}FGm~+_kq(Xt&&zDD}<70!PH`#paStq!qwvLbC-TqWn652Ws1bazy_sfE&u|09?@=&Y&Ezt$#t^A%s_=?+2n&0$`8YN&pt3JO^L_ z%J%}yNBM35TQr9>02`EV0kB4OHUe0od@TSS)rkj~gUXTn!36W~oiZEc$oUwec_O_x zKsj=!QBfV_4%9_C(i`NAWzqVyF;nmMe3Z+g`D$XO?hNFv)$qd3ZRbK8Ud)G zwtrM~MS3;EAt?!&Rqw5nw_CIn7Xz&p2_~;S0TE;MgWmssBU3Xc>e&`@**u>ZL_vll zPKu5fPU>(mh(!_H(A69v5GhWIB2p6Kg-M|tKL3xBD4N5KPezqU)9rY1h%OhS zJY5(m7K9@yaWOL{#bLb2&~Q*#^nV!(Bf{f_TrNg!Qpk-+00K_Ze>fmdZpDX*;(z%O zNfDt@Vh&=UBuWzU!jnKkd>)rGrAeHg`}9nwME}&NG%1YZi9|d>6lhLF_@5|ZLDHIp zf6_u)iv_Xd#R6V|IgwQNGUKnd8j0ochnSYkhFfotM zHRDD^a>V>3Gd?fOEGi-i9F&I-In( z%6(UNa(aw&N-&8}ep*~!fAM75Ntq!3bI-3l2mf7%JaXFba)fx7;Sdtm6Mtr|wP*B|!FOgs|5*S_%1$dTmnOP_4|A6%lBc^r?w7WW}P=XT#A z`2m|}H}z)-(=VL87ig?{xLA0xEIToH?*%8ln!+OEeQyW$-)iB9M?Ds=<&u`RKhA#_ z=brzpV@Y(f=B~qI4Z-}}V1L>XCJA5996vO37SQP=JjRn?Py%gU-vcxzjh zkX`mj`Io3P=+S^fz`$YG`)5_n58EsozpCT1=(Df3SJZ_fpEms&yuqZA%5A^z71rH+ zli%6ln5d%O>rF`R7c1|Ip!?rBz%}%J`a;>gYTxIHr}tl4)sFrC_R|2$zF-SxEV@EBjW+UUVshoxQ@IzD>d`^}-kJB5IyxTu(&3=fl zn^5V~IJfR>u&-aEl|W(aTIIr5TyCR{uEuGvHTIj08}7fbYVq?Vel~iY^P5{r;jCXy{^59q4oV!9Ua#GFN?N!ABbsmw=9L{msrQf z9P?Zyks+?ye}mz{%?%n`KkuQ^sAXH@Cq~*cPHt%Agde9-+4h$9;WuaXUfK@Mec?B} zMJcYUx86TsO|wyC=VPgNZ&k%9_-&QzYy;09Jc>_J*?+0JKzoP!lDh+e&N0!|u1EU4 zMEyBRX==qL#L|1VR^Cy+HmMHTGy3co%nKH{_V@g%5W0H|)cYJzj(k&}JJa&)ZnIk{ zUWJ=hN=Nl}EzR8hzA`5|ZS7crm{p!Pa7AbHXGII0>du>FHYWTNhvaZw9@Y40_Msl_i`8NxkdXQ&-V<2+Ew2KaPqtx77xQXjiY3P)@|1Ef+Gv_9 z{fNnYXR2DCpHAH_^*nc0dw$is3Zsu7Zu9RREtfSAd8Yhz{$N`4{dVD~;I8k+g@4+O zw?0QN`zx|(`z+pQs8Ov$#gBF7DpFcyqf`L$|{CoxI~uR{FF`ly)C2I9r$*;OJS~E?s*$ zIwo!0W2`8zm~!I5wUOE0q*4I{xIk*D&Vg zY1O@*i7Tnvnb2z6r_+6=Xs>a5XA8ya%86_rXc@-jJB9qU&^5_<51yMuJAdSL)@~%) zn&zL+7<@hvkat9bv-bFyQTnJ~!a}zZzkoLH<>4D!gGina@{gY0-aX%>Yn)H8QZYCk z01XDPU&a{Vvof|0F7gd-xp=gFXI^H8rdpvSM=|qWxXFy(0Npd^G|Wwoy1knS2!8r( z(IvU>c1DU%6xP&wp8V?2cz?bnh{r5yu_{=pC<@E!YyKJ?RIgVt)VsBrd+sqWD))fu za;e#G*XXdfj^f|faouG^hh0Maj$Pe%qFhEEeT23S2l513i$DBzvBnl?SJ&U!>;p>6sM9_ z`&brQY5zrtF86w$f(Z-_yAeX#bAiw9TSGEmM!ugrTW@rJMq5|ub$Hom+l>%TUaFA4 z=zd03TG+<1OCIwUr`}y5lm9`F)f<5sF-_mO;`mOmt&p03<;8k_Ys}lu(Zttn^BP~Q zzkJQQqzrFa#?tky<$rZqUGN#XTAOWVGb&DQJj}dI-=k%Y^D52jd0XsVr=VXai@T58T_+@*kkyxxB_!F}_N+J5?lF-StESzFC1})Jb*eR2 zRo^xU+G9M?y?D1;yy~j=ri`JBslmzEQ2l7fYb!9R0*AWIzJJiZt+MPhW{r`G521Bc z$9ORp;6vFWC$|ta6CTGfF?-XMgC?b<$LF(Wt<>DJJes&xR~7ki=2%3Jd_TUQ@=2bG zuW?Wb-#W)?=v?k7@(E3)CFS20iJ9!i|M ztR-xp`oZSNkbk|dS|1M86vpc~+nLUN8-st?MXD+{=*e;~)jpWecTnv^o$`~!vd!m< z@+UuAv=3fcnPgkzf4}7Az>mP%hu2SDTDZ^JX|RyV+rXPy7*t{{&u;x9Gf}y`a#rM-Ui+9vbLQzV6+&oUc^68mlhW`AfBYgYD}50Fge=`Qzw`1H9y zv$}q6@tPAM3wjst=j5*4xetH-<%Br=SeLTC@`&`4Y|HqJd$<_+5dDsfn1Q*uUuFN+ za$R@g9y9}=kIVaDxFqEncmAC~6~!RKSe~RQ;y{b3j?Jj~qx9y`YbQAByYEMA|9npC z%-NpCPJiL7ZMViQ-f|cw3CIUVuW+S@M`oU7EO(IGH}I z!@Aep_}MvE#;&_v9g{ukcH2H+%joX9FIMvN&VO_Ep2zp}s3=uhytfBU_eCT9(oxQBm`CYlZnLSH)h#<~b+O@&q<|lZ++|5r2Sg{>t##m@(Nww9; z<-DQG7d3bM9g~sVq;v!F-uu95>w{)#Pk)1oG=oqme4}T>gvPAVlV#`H2RpanZYRc? z4}Uwm?@xP>>Tz~^&zymQr9PgqMpvp@O8-`=c+Nbd(z_`z@9IF;0I!Man3%rth|JF| zUjDJ1%!Yuj8`M>yg>|(lcZIrx-c1Q==Djfm_Qr0Ov3oxCIOGUr16s9%WGZs(oQ9W{ z|IXLWOZ%L-W4TT;YvZS(d5LvoGm@N0mVeaeW!!c+FxRet;hX+jD@?!l@bQ#nbKXY_ zchT(qeYX>2aX)T!7g!|g@jf2!?AcayA>CD^y5ErB6mTK^X5zu+S@p-Xk~uaXNdcB# z9uJOkbJgt+8C6@;mfT)(YFD7FQp5^=gILS=!GPwCd}GC)`AYHHA^a7=FLz?(-+!~` zRD7!$YFlf5J$&Pej5WIH?-{1m*XtTqZr&Iq)At3J+tso0aYOe#uKKL%-3Q*NM?&{o zx99fAROJvBRq|7V9(Np2BQo@8;ZTUiUMtt-^}pEKK64zIhsJ83B2{ zMrmZn&hPIwp12%EG^JWOvC3R;l3}kujn={yBz>q=K z{dGFej0FzC&Kn!w-`_j_QYGB z)%VBj61>qhND0y+J-oR~>$V^hiioXvUn%G3u6=?3{{R30|Nj60AphSv?WhuGma1&S zQ^Yu8w#G!+8SJC97JU>$&ZD%>d^F0X1aG#*Ol`{~j%FHX4Aw<7w|^N_y^X7S8&~x< zuIg=6)!VqLw^7Nqg_1%2`~<7=C&46Uo$awAwnO0E9&2Sg2j1-W>RYOzE*<`a43YBG z2AjzJMy$$bVpTqqNqmC`Sl*pi4uh*EBKeFVxSruUe1_}r8Lq=;XmC9PnTC4(8M!U^ znen#Z*?7>irl%jDC28ha;n5dijA_61EG#!$rSs-rq9URKqJKGcBq{w;tSEkoD~dYQ zW6XxXG*=WArU^-u&4`+X9REwPqWCwN#J`CoKx_9KLF>zgGUH`ZX1r`DGhVi6=w(qu zY(~^t!;V|6Ew)txj}ck)EIlY-UGFcFd*_evbEufQDl zN^Fx?c#eC;lz-!1k#gKC4jRC694cORQQY1IpkNoq?OhDFcX8a_MOCp2{PGu3!mz!| z1lx+qSEEs{#>AK?zamiiEBtd`0++AF179=28yS3s{C|dUgZ>5&uQzyjy%CiYSRHQ? zYrbhrd~d~r-ZEM8En=m&1WO8IOo{I;n)pcC+l|tmu)A=25MbObrn=oY)#331&hIwd zrS7&|N$$qGmE9To+5)sxg{huXh%;La%_If9YgHHUk9TpnybCNs{NugYr0*HGda=8| z$Kf3`g&+qe?=jBbmpMX|z4!Ga4*~Vyg!6s&sMz~$i5{0URs%Nyg_mqr11*25 zG`5x3{xNW1>{xrPI~Avfg~ndId)aHKi1zY|XfKECy&SUlh80m#cf zmlq9tbv=NphP^`7u$Na2dui1G?*N)WWxwG66b<{6Qb9n?yWfkv=TEWss4;!RH!no* zYv=(~jP{aD`UyZaYM{dfN z`D22gm}J33*iTBr^;>xn_-B%9|D3^>M^^){3Yq9`RV*hP6^}KRSOb&+ZkLr<17HEw zm-bi#K7Sd0m#NzakP}m{4V!HMGur@qbQ(4?yA7aQp`elOhN7`(Llh1+oTTdRgW=eN zeIX^7IK-bC>{h%M$u$NdO%BW?j^wU^uGLU78E8hHfuaWt6g^;|=m7%-4;aXI6JRm@ z8!Kw>!_hX%YvD(;{?H?kW{yCbIU_>`bKT_J_>5gwQOMWx9WD-a8 zQE=E%3N;GVue0^Yi@q4(I{6c@yBR$#@b{Wp%byxJ&nM#b%i2+LRs%o@< zO@~#)Z%2biFoL)pjWK65Hv4FX0i!eYhsHsx@C$6Q2M}VA4S#W8r5F-&b^M751Es*UvkLZaHnh-w=nBn8!$ zVr8NaIOicA&g;gTf`W1WB5`e{U*0}{gp5g%_tSXIP7kKuv0S}lA*r#xq)vu3GC{|h z1w9`LdVV(rJzrSl{BRK>#W;U9sGY~bY2y^BG+++0b3q*M96l!@_%yuuMMBU?CIp>i zL(oZf1f66>(8`mA*S#O;L=K6QE9iyp942#zn~dXmGK=TQLiU?1?)WCd9UmconPdau zLk>Y>uXBANbYf-WS;S8kd~`B6zT&ZP5puqZy7xArU?_N4E!b&JLA0lkORgzsttsLq zmul_V=61Ea?T!AcYSHoSlnj5rh}Z7)Aj3kDr328ZJnE*3$5??sOvA>T#&j`F@P}z; z+f4)e49wZZY}w7Y4x2;kqR&EzVBQrEOn{* zJoqw(rkBB)moX+m=jD(r!&3*Bqrwe>|JW=BQ^y3R4hGW{2QP;}CY>%m`{CFD(J>*d1kk?Lzjb0r_MjAGE*K@Y6 zho{V(t!0?4WsI$5hW+p|{jqmE&cM_^GwuGf=~{-qcWx0$!^2me3_nl(w z2{~MziQaZ9L&_}(QV!szPy(1+OaOC>?da?lc1wU^;1&UU*a-MJYC_xwF}E18=|CoO zY`XO;=@NhY+pPjp-O7;aRspGQ6_M&z38`+Ck?K|vscy9*)k+isE0L$JtcX-ADjsz6P5L&A4QgryDbIxf^YEYvzC)H=Z* z^jkzn7drFhRyvY>4(VD9>m6C(cx<|P{# z;sy+F#0+m_3~w~x|3<>gM)U|H=I0*9&poCLuo=0;W=jUx%yE6QoB`yK6*9o)N*UmX zC*i8L*c~-7&L!q#_1ncNCM$h{Wre#{ULs32*=_FWT|MdJs{ZT0p>;z zXjgwFcMqzqcN!dE3umhj2GgiVJ;X*n6pr+IxMMwpgn!8Ygr5G>OiAG9;i!*0#3RTd z!Y!ec?;kO_!XvhP|40Q>KLWkP++B{?hm_GT|JcNydZKrSEjh|oDs3&X)>a`SZ)GmB zRdA85#6?IS|0R@f>_?HYAGK`I9~Bmj-dTT0#CVM3$YW|iV>a&;yC8wb%$)rgP5*Hw z(N7mkX~mvThI!nN4a{ug%xnw(4X1B2v+}QK^1o&heL_~mu=rO4BR}Dc{3K2lkit*Q zylhAFw`UUlLtfA)B>}PR26i6j?CAFmHs=Zss_Gs$GqVHD-l1SHWX7YySlMA<0!EfV*EZCtcJ>~rx3ZP z5V@yR6l%28=%GqHM(`=Xm3YJOG_Ura&LqUoBI~}NMztg+^9)=08Pm^`eul*P86y8P z{|-fq;~ii#sz0kF&$FE8XD#wP7af0<6FSfHvCrF%)n6dj-7lc2FQ`5hDGvD^u8l8+|_%X&y3@%@io*{S%hZ5-dMHCqFC8uGY=#^M?$W{wqHHSK{c*7nJzcz4$+X96A zIw|&O1{2?ssJ+Fhy(Ln6OSzZNV*>?$>j543ZHe03oZ8zWwYOEY7Mh#CPI`5jY>7t1 zzw`P3F3$gVCEYM7BHm#U5k2!DZK>WdMZ`N5?`Ynk`zAQIf4-1++dIl#X)$u%u}98s zk@IR2Iq|Cn1 z??2G||Ioj^ETsby?0xmY5RserIXCaidz1Ig+ByzOJz|lv{<{wFgp8q~SROv-Ld>qxkJeGftVwwJk zPYUPXo5K0`6~p=W#&G_9#c=+Ay*-@&U}B#B4&o0&ME`;5_zyx{{lOB^e=z&QACWEo z*o|LG{!v)`j|TVH%N=&F9MpRmi$Oy8lj_J9@DJ|(ged;0a+v?gz~3jFzfa^a|HQ=K zp9TK@j41xu=g$`Ke>U*vL7BN z*y-5MB@iLW5&p^?0l2H=2!Ay>!e4EU@K=)~{MGIVe>3nzk5~RiHw=HHFA4S<+sJQ# z{+1Cg<^oOsH`4TfcRz`L|93=`F!===`h^*vzeLM_+5P3e3~6#}CzHt928x2!^+eI? zy2EI7-6>k#n`O3oGF5>$a$}tY4`v3plu7st4Nb3#{IbAn^Q;uz{v>1f(Y?u0BTY1_ znp%QJXBe3@azr;Kogo-JSp^NAtm?MG^-$5@lGR)-@PUS8weX973%?P@1mvp5a4eY& z-josl8X{RM&95_;e97L(H^u5y^32{Q&+KjU%-$x?>}~hVK32}CU-sb!=mT}#NASx& z%r60~>0Y+=){V7JKBMeXz^%lE`$*o{2f1(`=E8>u#DgRC4^j$VK{gb7!Il z%5L9}YaPB&FWFCja{GQZx9@Lq`vJ`D2T1b|vbg;~B01ME>Z zKU<}{%|DjZz39^hkvs#vceo1S@efo2tge5cRjr<2cy*4~HMv-rRdm|@rz*JT9FDj; zJY3ulML_Cs^D2kqRVcxJrLvB!V#fd4x|mdtk}Sx7E1<`J$re0H_^kl!v{~>ds|Ame ze@39&Z4U;E8}t4Cbb6RzqJ3-wB93C-DD<$GeFns4sH&AmTQ;U@83}Z=;c6&iVWNu4}$Ejwm zoNCtPspjYi2x@LkSp~iFE_oWvD(Gy1zBZ3^8F)L*%-d<0H_AqL63$st!l~wPc$O*Q zoP`rkHSM$|oU9QHypZ;mP9oMlTmGAUDk!a2*7a7Gw2#t8OOF|_^&w!WIs%QqjB zWQ0u;ky4fZy^N8D@INy*6bvEJZY{bIZ1|&Yan@G&4RZ2Z)n=Ny;*`8;A zTT{>fSAluzNgjYuCvo$HpGidp}4;gHk?CWyY!2+1N47| zW-6e41?i1wKS@OUDG2R}QKXxTDJIyTLT@f8vP@y3OtB#M6ca{Hv1gDeG=s1L*)^BQ zY6E;_y3N^n;0}0(@VrfOMq8rxVlB#<^@ISmUc3~1CuDM_N?HC=9)Gh(VoDH639WUs$m0hh{4>M0!DGDQ5>UD96>_RX9_=ugdf&J zBOKb8Neu8U=4POj$y}2^7V3=7M7G9VwE?jR80&v#xp}wf__n8nY6ZPF0=?q`3cl+k z*%Tv(ZH&>pO@adGF=+-y8#H<*1AlIb9}P{SWn8PGOOo=g!Co93~oq z)u^-4*FBJw@aHJWqCUj&NC&EbKs~s3YaIlbFpdS5Sc^XLZyEj z%yyhZ8IP;xxl+|UPp+EvTS(FKsq-WzaXi=;5&eYMZ$k#Y0e*H1 zHqy6<`Xj@)h(@}(d}NX3)FL+v7P*;OpDvd$;Jcbiq;9-YY8f0++so z-Vvl1YHK51)2^+JqPFOQqpZD19~(KUvzPNH?}^Wo4QP8065}4flocfawD|jBllOvN ze!xK9u#X;#lMWV4Z`e;tZ`g;OwoAJo+Mg$5vtbW>LY5v!JYbRtTjv3$vj-|aPWB)& z&w~{oDSVKBT!sOMc~Ct1*(eyUqY9@GYXB#0-rXA!zHlOxmAby56 zuJX2j(VM4jvIU`&Y(pOb*E7twW2&=fq~jQ*(ZfR9j1x!)^c@kAw&2|$! zZ@0b6WV;=nw^w}HWjhNZHRq7Y%HY%tWZ4Rj;Z$a9VC)wDH^u^oC4?TgXNt!e|BnkU zLx_yWDF-w~TStSNVYKp}U?kBF#d_K3(1gFW#O;}aoIz=2Oh zS$LW|4?nQ;1d4t&@F1A_(q%QCl~GTCM>O!N@Pivk{lN{5u53;8!3{mEzrUuZU2(-H zjVnHdlgm@gub#3e7uDTwbRk!|00030{{b8o~Px;GRfTt)xTp0?gynh{vZ7EVn-`_}5-ko1ZdzCZOD0cFEa z;k2LHt@cxVjf?dD4Ac8Fc4E(1E^41cxj`;2q_psyDJ?u_OAF805lnUWiV;l63ePdo zpX)|ec&;L{R_3dlS>btmR(PKA|9pjitnhqA-k-Pg{`>)Eg%|8zKoi0XJR!UQ<$EEj zLv;v|9u}7`RL%)6z{nuacE5-Noj>DI&ClW7PA5Yn7=8wExKDkp++fH^5vopiL(yANrHM_Y7(5XuccQQNK z#eBTC+9mydOn=yC1Rn&WU>9O(SEb|8UD5F|k-Wbq^739l_}2jwRN^-UiQi-rzbTpcP3ea6O+nZ<4Z^-@74~f;&f7%Tw;`do z#Tz_I;ACrW{edoydNDJ;rUh{Q4FXrX{gI&cHzsKPO+{$^jTKsdV};g#cTC*TLgyX9 zf8JsK^N!>{?}*Pjy#t?hA~cg^pyyT7x;iM?I@LVg`}8UF8Ut8uxwb4Ec8>y)ZU< zTtT7XUBR^PGSj{*nf6_O(X{VE(}G439Nwks27T{EeLTeW;GLUTiAwh^drX10r_$$h z^a!{=W80fO%y;*6V|%to+T!3C{>Z+qVxK6|6Rg{+k4)PtEbvFx%@YHYk1N>$``yRF zp~}Zhl#h*vDj%B;RX#TCDx^KrZ{ft>+J1BNTNIVQHUH-5w}|6^RxIG}V#f;!|Bjsg z{|+tmyNvYZQr(eSo$wnG&?oPrg(&$5eCM zB$1xck@mAQ>^Mk&_oIBipG?E)TWSD)2%g%AbMSxB-`f3`AUGPH%4Fw|30xKMdhEZP zq$Hx(=xGIG=-iCRkEqZkdUM|viQaJ@&iWK{)6b0p!`saYO z*}rwa1?6ReebW|dCYVp5bMzFYiBMf^faL}+^-{HPc&&1LJ)FHk#~&62NNpuF)gusI z=mu*pNYy$uWITq)NCkByR_b`H)Imyh=2)o%eqC38X_4Aq_1^!iD>1jOligaLhudOP z2nvXNyAJzy9rf*=%oTf9@a>-bN2tiTMT%zU?rAE9bx+SUaZhv%mg+^!(2Ls|{=hob z%WUgjNNc^Y)_Mt*c&b0D#EHWTyJ$T@EW>q&^;L(d{(l_FqOeyEU>pvJ1;(vaphiWQbP&R%gG5Y%r!{(ru*5;3YJfi+ zMA7LW^t4~!#|_h0c7L zH1-?aSuCn-9sXur+6L%xXd7UpR%3j@M(R+1WT`_dTk25JQilrS9vX-nGkhp5&<=$R zL!%ywUk%~22^XXKK9uW>!tG&9mcx*7`8v z861I8{|FYbN2qddqB0?WNrcyRi867A>%HqJyt?*PbOiE^Bam;XiPcS|4ks_IMz|(_ zx#0+%8+x`1=k%#>(Br7oH&n*Dq$OK+)mlyNuWcy?jwBnABaz%k ziW?E#T2lLvGSkM9Ha?E5?55vj8u_MnG3kaqb(Ft4fWM>Q#G{1O(6b6D^gXoHF_pvr z7%}{h$$*F9!?-zytb~=!Ru+_ejQMqc7P=4nG4Aui%_^zkIMgEyVuun&ebjdKOkeu5 zXKD7nkW@VxL(!pLUsU+;fFd6kSdRZfG-;yo$Ei#5$>RYj;aBKf`WnCXnlyN)~`*=|q$6J(fd?tE-fQFVp zC)%&&{9Dv&qNNkr3W`j%e^m!i8H#iwV)jJys}TSxNi`=SIww_lenbxli4hqFv9W_H z$uJ15t%mp1-@MP}onn`Tm?Xuw5v6Y{U-iit<@mNyj=^l~;7W1~Myspgz2Z-{Tc}Bb zpzp4wPFC(6e)-xY$;n1ZhOn_)(WXpCGo-lH?#?8cU&XgQbRw5jWKG zUct%)YqDBFjjTET7(|kkOG8z;blqHpp+ljBLqiE6P7P&02Te6F-896yVSU4Zz1W6( zINEU6l?!cdK6|w*m(+U$A%AnXy`$Wfw(OJ75ah#pJ%j1)jF?Z!>CQyPKNBp#&TGyD z5(Dd=iT;poCsQK~CgPWpdZ=uo5fv^aQ|zl>-W171wvUI&WTKJ{kTBR1eO0V`)N9Tu z&Jq?dxKTHk=H4@sslJwY&q!ahFuLLU2{eV&RJVgPvEB7ZUW$y2q<@sROuCDh{wo6*|=|1cCRHO{7{ae|u0aW##L z)kLjyL1d*k0xv*Dy8u$UKsfQcKtHudxwrsiBiu}xyP$#%FMr_bhg?KjzrZ=3nXdbD zPY|(aJU-rIA=4j7+ICsD>Ho1^w3uBD6M)Qbdi7YTe_#Px8I zRS#2;9;VpzFhy8zilB!nbP{EJidhd+{Z&C8nhIx54VHubl2p@(&!bO=rKX8KKh2WM zry0(=E@tdr45wYpt#Pr{8q*2i(-DW$MZTxoP6(%e{eR?vFw^A{XL`o?W3$u@w3m_+ zrc=eY1~W|Csu_4&RmFBJGZ=o&VELC2^pHu|{D`E)9oh`r4oxJ(c4#w<+ayT5o7ANp z8Yc4$F^2r@2Ye6-w(gFOMM?Kt^6# zcYm&2T06M3b{G&j#touima(l z%YRn7p~x~P&l-xWta#f%hrnOSk*=_WF||vjO{-CS>>d2buGMsb;ZH!m(iV^Pjf#oq zC}ih^ADE_cZHeUZ@B>47Se4;Ra;bLYR_!9nR*@CjqZOj0(C%CdS8NXh5$ufGSt#YH zJb6hT{eigSA@RIL9Q0-QR6!IcMHVQ~1%CKLHZ&uyBvQq?Vf9 zEo00M7l>>z+d&J?7NnUSy+jiSeAycC!p5v@3ixuRjTwKuOHF~F)dZBxn<?U;Oq zZS2bCjh#$H!kz=?g>CF0iB{TULanj^waRwX>NMDp0!t^$X`Qhxa4XVnm`^*&Ab*xm zJB7sD8JrS`7ix2)%PZAbt7LI6`7jLn3^lmpX&@GlQ2_;NoU|mbT46;m6mXD9>T$SW*iKO&lBBs9&lIO%)ZE% zq7#`5&odkWb}?qUL}t1SvD0N5gnye^_(Y#Rj4F)-6t zObJK`Up@ATfH4vOAl=Y0DRG-JpJ{TwsLA>I{Skte=F4U8e2b#4VT!s25Q+Wy8v42q z-Ga0csFZwKF@-*@m=Zs&m|~w+#LGk=kVVx(IjRC*pUrktmlyl?*e(_KgU(;c^mY-)O?@8!KVeETNk^f!?y_dM zP=6^i`hZ60qsvHDu?+d_GO?;yW~nNc1>B&MsO4zM1iOC{P=qimo|z?NGc z$Rz$uE&g<7L`r|nvRNT*bYK?4;LWTMyE!&ug<U=O~;6hoIX`5OiA%L9Mi-y6EI* z#a9>bC#bhM3Ep&}6xgd|=CF=eN$0A!BX7Q)c=PSZ-)`66wJXr3+NMITvpruDy>_*b zb5=*fMr2lNyP-|WYMq7x!g8Uun*RI}OrdI9t<^>etf8-=Sbt+Cu*T^@U3M+=@3rJt zl90e1p5X)+TZde%C;2%PcCd9O2U}m08#Tg`s}Ek)tvF z<{KcjF(gH(Y=7cZHc?E6qHZFhZlY5qQFXKVmp+^HFMaT@W;a3BHwCOixZTvs0emwP zdb65&j^e@O44V;`n=L=nizrDtxfhYSx6-fl?u}>>0q$c%@1v;A#7Txm5aHMLxngnf_*i#`dbCk9f` z=9mfdYMlFrlq=-id2YKae`hT95G#@&@~M%gUQ^u;Rppio#gZh|Lqw{F5c?0wQUT_^ z3Kv}3hr^c|$g)1nR(Y7OqG{;Oq$uXYh<`N{{p{R2vewO)O@#v^f4Bwx?cLO4o-Pi} zB#y|dJl5gN&8M3R?H$>iTTH85+2oc=nZ$s(PBEYE%qwkY^p;39_4k_8w!cs;rp{4Uzt+t z{{tIh;7GS|h6BF=7ie#7WiN7dZf<3AFL!TpYcFzTVqtPKmk!+v8<%2;10oFwYq(M^ zwH`aD0{{T=c8P zv8FI^rKBd6rh{W3g+VeeKfbsiu{TY2A8DtOklh;HwOSCc1FdV zr6H$-S_}ku&WC#Q%e7qUH%P7g`rzQ|`xCf4BbXEywxwMETg@E3deecUwt+9dlzjI| zU7^(XZimL5X&$jso2nnah<|HP+VVm-AdS;FCS;)#NA9W_i?g$IPaKMLWbS(uq*Z@= zfq%@*u!Mpr?gQ1#yljC16}Gh=50^Ze(LKp3b>k$~cL(06h+lXtcjNrao4YS3jewo&M{m1>`oU9ivEOm-WSvrd_{a%Qtzd3VlqJu9|2ZFS)0$`F24 zKX2nMm*AR}t#8(}ik_T$$%R2;MnLfYLrd=ci+`YBs#H^>_0{QGYvc3HjrXUqMP;3Q zVIf_+&*E22>6f21erIxCO9MA;cb0iC!5MsMdDRLZi>fPaUu5rQ@2|;yZqCy&J#Eo@ z%UwTXuPro~z+1Jy@6aWAK2mlCcxR*YR1MCwBYq(OqJ~{h;C;$MkF#rG^005U>jtm}uq*!@a6X(`X zG69Cj*ntT<+DH%;2m}cNiaLNSq97s&E*L^GKrkdB3!>Gph>E+V6_=@6aIJMgtaU-f zf?Hdcsx5V`t+th3wbxp!)?Sx>=ba2~+UNdvd3ZBt&iu}P-t$h9HZC_>Ac)?coSKxC zWXq2i2(a}6fuPXcY%x`T>vfF9iW!+1Vy#KXxXdWmYs)>1CZn3E(OYeLW0|Yoq&DbF zTuV)sN{!8hu~TkYjXI`OZ)9|0qo$HUO3elkwYrxvHg&beU}sz_ zO**@QaVa;Mrd!1}i=7ddXe^9a$C$0~Vbw~kddMPQr8;w)ozg5SONzXLWkQ+K8}pFKXi7|D zQdZ_h3c_QtTv8@Tm5QiEG69_~z*wc5j3kxh7R*;xhj|Gop^}zT^gD7|jIneTDHGCc zj>u~hDa`5JOww2*jZyT6a{4&N7P~2BG&Y}Z1Ig%4rFSv9%mahgcF% zV0mF|1INlkED>-hjBVyPqk1?}jBVvOsveFv#&&R=kRFZ?#$Mz&(jJa4#@^yMV$Qw{ zSbiA$5V7DM{Fe9wD*$705_sfA6mf?naK25KH%b*E6*ppD&6Kd1#XUt{k|3GT+_V6L z=N2xKc-AJXdfyF71^CN}LP5Y5tGS-Yy!d3@F ziXa^Yj55bnj|{-CHY zz^Eod>VT05CUw99IG8t!2Lj9&U_MQRuLIV9fMC83SP%#EWAQ!!lLE}Yi3o7OiV-Zp z0qe`b0$KcZfRO+TY9jhLU`hn*qqHRfCOBJ33vro4 zAea;A$KrAjkb&OdI6{u~mO+zA%LGtI77uX~c&MR$>ROpl*P1|LRE&w!9&G= zB(VZ6Zlsx%k*N}Y0E;mf8Bq-SaNR;!4^F54zlLwR;<8MSvqDLPV;%w}i$}RBAG(l4ut11MvbYiyC_r^o6A_6iC6N#uv=)Vbx-gXz zQK=XO?$?5|(b=eCAU_yMfX3)1LixA-qHx|XF=)TwgIQc9^0I(nOcODaV*H)UC)I^!hLrk$^#~!ahj^g&CL-AI{># z!2?u=5edXdP(Jc+aV81zk$jv$(kwm#p~2szcp`;LqGDjvC&!@V#gHj~;Y4x@mK@WH z2zd(R8Vn^nBvWX~V01f*#YcjM7_gTbPo#qeIcP|eBMov{OgNDigVAz?OmmeHsX{!R z7tCOB8U$4!I69sf!wY6Q1Y1EcGX_JcmqT|ZLB>X-Ehxq?FA{_^LDy&@K1M}kK!+oB zV_7^I)Ww3jEESQBSlOt5xw)-eCgbXr0+sW0Y#C3`ItsMTXYo`w5)HjHD94m|VjPx) zQSxvihe~e%zd38;nur`sR>#pffXswEk7x08WDhcz3sv@n>Pl%U1RX1KFqHwOsBmHe zCh;U`0UQQOQHa!w1_cwEhDq00%qd`o6`sV~HqhW_^p*UGu zCHIt~KFEX_l|bY{Ve>F0SqxnxaO@y4MIk#>2*%mTWAQPlA@Uvba4a_uC$e}Jcs&%d zRFFVSq=v#$deATfRLK+>0=i(5kzzCwLnv-;WQ(EP;Y1-O8B8{Ffk+~yVsxH+VUAOs z#m7Mgy@hyT6ETT@8_C>E^_0?`@GQqoNu%CY$tds;sa+(K0UOljBJZWhd(@q12FM)| zh%ql2L@>$Wc@F3KWELL}o+rX4o8lpWd6x@DeG-Uikceqqhf~8SVwx{48A%k?5mSZu zR64zxd*#53Q15fpG>}8pQ?vL4&_+WZisK1}f)qdnF;xGdZAPMYE(Mp6?`14L z34Bk6Oq6?nkR*4MO$OmAxPUMIWjS24Pr+q4yba)bRsiT!7?2e-ydMd&Njy-9Pj_(P zxdFw?J&@r+Lc9_r;Ym7V#+X2uAiE~V{9y5^vt5+6@)#B`n&U#_ePC2@q!RB-&87JB z0N$7=%yFOu($$4h+9>J8RgCf)d7uJpxho$%mj^c z&{!iM3QN|TRE87P6r9U)IG1M#@oLhnOqL5`lI5g4)m;`7!+mU#`^sYEfDz&|_+mR- ztbvh#WEbKyRm3c0an|1g%Xb9!25et&BOCg8b^~?lQj`@DcE3Su@ZJG1(QL>?HG881B>3E!SR$+_7BWl$Cgra zTdK}+Q_S7WgLw${a=^>^@x%fyLrp|I8pl0XL&>6_>*d=h_0wNbQENvo| z@y9wG56faG^ok1v25;V;$lfwqG67we!#f+u8yg@}QN6Ox2@e)v$4=%pbM67f;K*I^KQZDgC-+$1kmO5TFw6OpB z!PlK+v6;&YhVq2LFl2EZuEgO>6TT9q27@nB6Ks||^u=m)r5Ucm?Lf+5p+{m^LRhY_ z++c}d5wLpm&-=i_c?_ao=lT73Ecy$7cG8FF5GQ;Sc2L9zMbhLf`** z{}3je$DkGAWJ}585k16-j^nY2j(6fG@HEmnjK>UzHG-#6TuDy&5l(tioaj+bdeWR? zNps?7IMJh>bY?p7ah{$CtH8;JLKI_a4Og#3paWo~^3M%Cjs7ZN#qv6`V5xY28rh5C z=~SnjCGoU~k1dMl$Mdv^*Vj`Yq(i~;qj_4$V`aQ-1W)(WP3Dv*lIOq9(}*7gOUl#! zuzY#i2UcI6reM9s(+@O&4Z$E`HG5%oU$JpuK2KF@!L&!50m zwf-esa`{-6@;XF3e>{(0%wL6nJbxUIf0MuV;IsMr*#drV@%(gN-pKpM@yF_IsJ?&` zmej1zYPgw+MUxBOKXrY{$mW`jb;=R7bu|T}9tuweJ{Mfm*$%D??f2Ql_G|0rR9&cF z;+0YQ`PgIY-97tIm!4ew;?B~z4c-s1z^KI=E<~ua&dexZOFXf)r!8p8t>9IM*YK$Jk+w<#ks5 zqc+JrzZ@3L^NV36^86{VhVp#0Ut@Xw$ggOg9-3scS>QTw9@?pY!g7&LfK^+K+>MbG zY^>R|H?CL_VR^T%tEFk>>57V!(Z*7E_7;c75Z$G)9(0%CSk3zVMROXYsjGixAF#Kz zIv4l$Q_S6^@j1Sl7rJpiUB4HL=ig3=tLxu&VB5~pZEwtf+Hw7rApL~rQR2d$mlxX? zeYL1)HGYa#h9tinMPFr3Q!8{2Hu!v5@VxNW7z#DRwOLG5}Ikf z)Rxm27<3`kxZqX9)xtZw1GeO>{mi=}+vRTmSofw%d6F{V6!}tdSeJG*H$js1!hOpo z?T8LM# z+O|)OS~Du(qu`m_^0r@I;xqo&V^LklqI7Szj>kHcqdzGoTPJnLnSKeb{3SU0$ywRj zrNQ$xnex4U_1!mL&_{kx`sjH18)Lut{Bn2Q$ghuf{(k+|?6}yiLyy1z`jBCN1g>p= zFI?BY_R`&(4_dvw%;)A;+CL_r>1v`*A8TCjnY}6N{kosq&T9*s6%mVkO8;Fx_sr(f z^NOx+pSm0KhO}KAai&+`3QPUrdtbC1zO~zJ@vu!#Qs21u#d{BzSSD@he15RD_nHq@ zg`V7XPVIWR&xz}~+wv7}{QmaDIrl?5uVk>-3c*s6~>NHQ? ze17rBYZu>giH$5cu;;eq=&pJ195^pu@B)8oC!Ttz;U&jbhji_aIQ6pQ!pwvF+=KBv zNx$dWakoDX{3R-9MoQPsjQ#E84_D{-oIReLa&7tP&+qolniF^Oy$u7)Zg%V}ec8O) z`=U?%H=>UNhLWAt-+NM{)y3w2O+gLOzZEZ;b#?05+eyXIkB|G!T4mYuwp8QSe)Q1e zUa^M51$UNwnvyvD`K8BsOeDMUUX09TVfKiO)V!b zDQ_Myx_&JAbjj-eWo_dH{!8yz&R@0^-o+2ENjbbX^xKHWnHl*J-QK@{gub8W+bj8c z$<*(rMOJ

Q**WT(mL2;MU;G<|5&xlA^%t-tOgdXD*(xVDXGp>}dG@dzpEg-4BKL zo4TuF-jTt=mIINOTIQE;jxAxr`)@Z=-we-d*;ymw#?2(Rm+DRQ+6wM)qB5R zdobYmiFb$8?4)iD`rhlCicdF9JyLMPbrwCvUpc){XcLG|{bxus=1wo}x`MJl#NFxmw%uRsH4TqRGuudyOxD$qGEP-+kb!D)*}0 zZ?n@C4=?L`-7imyl(ozw_Z}d=J1k!G>D>8k*`0Z**wam!HviK@$N1g1uX(clYC+Ym zg;k_|OwfJmyTWk?so;hu-F5q?Z9drL7nrlWe4Rs-X2G(Bi(R(uF59-PF59;8mu=g& zZC96V+qPccJG+y&Ru0a}m6J1xjL6vW?VXborgbfD@=CaBekk+d?IOC`%GW$<2Rxrs zzsBTAm=%P2fau(}UX3RqrqV_!30;f(>rv$}J6NEr3r;UV-B=FuQSmB^@fEw)b1Z;T z_jd0xuJ*d5dI_Qht$GKm&GPLY{^(h{CDi{QIMW%wp0+k*QC7FQGllimdUP{v=DBub z=}))gg=K2XIaDx2;K`=@J5y6%+d<9FN{F1px?8azfIp{J)z`J?!A$gcV#$KO2MG_3 z$IWSc-NQsp2wr||%jIFKp52WdKLF@e+bg_HikQaH%0dP(AD?@7HTI|UTv%Gn; z%-HERK&%yxYdp&9BYi^A!g;ZL9{cChD>HTFl^(z~!K&Tqx+FYhg?+r4&Kw*#*c@G1 z@UjEH^>k^ha#t?z%FDfT&U!1^Xy!hTuo7_t%bEIic~M-Q;!^o%%iT|TeXHtpCLs??H~uUA^QjhcsV#d)JT=q?gY zY$Hv1B9;S1$|+#&ochpe{Tr+*le~$!WKGP~Oq&HYX)|Fx{f^Z6`Z#m_Wq=wOLTr1amDglDNw>qjoO1$jJysitbjmn~= zuyFfpGUGP*3TLc^+CW=B)-tPO?abGvDlY_VMIF?v`m*y^4`Te}{`)uSMHx6DJ*=@7 zT0`}}bAJc=FMVUredVoRyk^&w6rWykIEPOC2jw09d?xYR`>Fk-V;*bPcys_T?wxBx zoN5`pUqa;DSsHpp8-K~9ekA?%p(z9A)ZDE)mVrT(4*e5lcS=mP%B*V z647l*xi=sH_HS;5-^^<;ny)+YLK9B|N5HwZ>q;@eOesv7RYuaa@;z+w_LHBeDV90| zo|DY<1;Xz!7s6k}M(8NF`0D|Pp-<$%z)zA!Mf4Nw^LUKATRkEg5E(JvCxSaBO3m7F z=+8K9LVS5ozkXs)#eH=Y)N{6s^!n0%d2dg4p~LfoFl+mvcmC09JEVli@H;6!3$qoQ zpiiErCovxB_+-e@LJ;>%NlyFMGOZ51H;4{vZc60=w6P%@MM-l(`%VFHOgTU55}E$& zi0_Jch-mo+wbOx}V)LM=&bF<8zWu!+am4JqyCo?sUxp$uo2q5l)axJ3{(H0&e$Yy+ zjp(k0X(e?Sv2RUte2CX6*undu0PR#X@|wJ`Zkf z3d_^^Yq$ot_pM*QHC+q16mxE$gt}#cw?f1x%_s994mTLCdIx2`rr*82xna#a;q|!_ z;k{T}CJC{$p0Mui!xKVUCzi;uC$6Y^O~y9FmGKm-N)np^gFc`<0c9U zOgc?4p4wUVMp#pfIF_3lmdiO8@Ec z9PH*V!^jRKw>~6ALN4D)MIVcJ2gv6h(6V5;O_++JjaS3FuZp%^mF%P{FvxJIxmg>s z9Vi=^Q<6)aZ%QvI16Yxj4k<}Qa~eV(QK6xZ#^@&J=>E>pRrc$^ajq8|t)iuJb~1=p z@AkB6QC@{`+nM;XYrnZ#>2=O|T`5EXwlPKpZ%PDjT7Gro>{O$sls4y<_WPZ43#vDmp#i5UYiar0UN3=~wiIO_HTOTTRIh$b$^{K(=lBx$_*b^E zM`#VacQ2E?h2`M<&)NM6sny_@EgEoAnO#*w6SjG40lBIsRGrH&6THw@_yKGHF^D0` z8$z#1Gn1K)+o8xVS9$oJoMwD)-c0Y?Cu{fHVLw?%Z~lb6rL^*<+LtWLU6RW53^gq3 zfrlD1@Qvk#s}sY%z)cUi{=|P#0NZXeXW`&I>&+4srC1HZ772Pi#oyk$DB5`vgs-0+%ncE|D%{o!0cGFEN9zFqVFR1I>6us>`1) z+(7spM7=+Bd1H>!-kd#k?%<>M5f=B!BD1xYv$bsC@2U%fmCug%OF@qJ&8xNDQ668| z&p#PwKdjUiwFdL%XN`K4*KW!?P_&jL5xHOX7F)G}8+Q1wS0|Oq`6@6Nnf5ZTjPKt= zMvq@34b8bUTGhu5!T!6XCXrB@w$_Woj=IhKJY&J*SA9v!z zMc5q1)fVu>%PgUWmKnmPPxcfgvvrjfD?V`y*HEuSZ$;d|Y56swpNM+?N5AINuI)4= z0m2Jkw3-WD!HIXYR zyjf`-HyQ`BgYiBH%s;x9;e$wZy9A1Wckwa7{e6XpV^F*ci13Hwz&4Ku zV3$|HPwgL)mN)UBO-B{Bd!9YW2iK! zV#o~zV#vMT;i+5%hbV&IL$5@OAn7j#NwXu`ZxW-oiZnN?KjI~TS=4s_SN@SNep69B zx{3$Y%rKJQe&i6@72fBp)a2tT{9PgRI^+w+PsXQFB%|OWMau0hc;b zf_sI<4Q0mu!g9i$7CBIO@D^p`Cw@)zEDr0VK1-Kz#aCEalp@ z>{DLw!Sp=5KtD(PDl03pGg$^M(rYFO+ehuBZ+wv3mjrYp>r)H}J)*w)reg*{IpKVGP9Ag}~|NhC#OJ1xJm;%-yGJU<-giTT);lzoQ0AY>9Q=VU>z zX3xgPa&}3T1#b{wh3S*YNJ(Pxk;cv@F^ydKn|huNDy#(B&U(}&7jgW-`Tc^es~$8P z8wToe329U+)G!z*%@`!DDE7$1D0A9mn+q!=`|^H;XF}DeVS@#wcQAhWkY3F^R5>r5 zvW&3Kqxc-ITP}ZR!fHi1zq;I7(zL$DkkfzOoJz8=eC!>dVuj6Uk+E$!*aIb>6BIy3 zUV>fDfyUb#50CX)z*^2VUJW`?6fQStZf4vRo&)!*IE_) z`L+ZL@&=Zj6>W2v2GJDrze}BPG7eE9?F93A8p;cYnEN{&@@F#S)$AV@a)j(hMjDfu z44H{+n)O=iWWe@hWUF;L`GuAWRvGt=1A%`VfJ(f2#Z%{pQcrd_6B+1?p9Zw7WQP8G z&HGJ;LZdC$#Gaoz=0l?eLU>3i!+C5L(QG)FLs}Ikh4|b%N$;falZ*fCQiEzWCby7{ zJL@63)$+{nmbWqD4WCbd*=)qRh%a-2T?vX!%NDtDD!_w{W)sI^pWQCpHN%p;tDfo# zprLHo^0r-3pW(gJ#_7v%Q8|rvtUu`#MU-un%kOj=Z6voDZ3J(qALBw@+e`R|*Kg~% zm!##LS^nBM(8HZvYb;ZI&QsWb`1l>St;WK&@fbNJc&i~rBdhr#H#$>xP3&StZ;h@0 z_#;zjX^edNt%`O2rUHZ)8n$yv^ngDVfC}$4_d4mKyzr=KKuZD9#97$81}1QfEnp2Z z$}{1dYbLkvv4KX zL_{F#vcs{j+I4AKn&Hy$cIQ2QP@BCX)|YwOWvi98R9kTZ`mJTpN>A-u@Javg|C{<= z+ZK5w&^$+E?flg_1tw)I|ui3U&QBEzMpxye0}0;mS6fHVzd4pGtv` zImY}&LpRuojAFphsG>{wqo_nrEZGf-)HT*|qlMaPNl#q6Q~X9=Cfs!d2z@NiMa&?O zgsG3*Hj5T9fcLNZ$hXmXvtoCNAvpZ|)UQNTdjoJbu5Iw@`726rBu@OQ<4ZcAu@Zr) zBZH|E#YI1&cO+Jj78@mUVQ#q|#IHC_SI)UKSBVi=>zM2U<>~;59@m5!`y3m0Kv2(} zrB#+9J?%dI+C!~`*o4CjFbdD^B|9FYWqi{zoYo9;pj6UbhdfXUMhf+WV{($ck0leK zI(fzTDm>($ zXkO0N8<~&xDirF=AG#!Yx)T`_#))>j{Kp_E4=nf>d}TYMpEbzFg<&5GG(LAE^Cy4h z&EjKC6wI(-o`0pxSo;Xdr66gh5|vI=H8GtTrz$FqH5!z<2`sNN%gi^{2KBjIfQ%``h%`%y+s@s0LB1#@vG=-+WZtUvDj0)#mTHkH|kQN(L-0 zSFK+!QAPPZKaqeiNo=iqn<%s&jEiE&M<5vsTN5B4U|OJ5|0d9#|6l%@& zu><&CB{UFF790=|ajHxdC=Ni++0NdM&d|ibrumPJI*J;4&NyitkiTSrLJteF0GJ_2 z5VFWso?)P0fH#GCFliJbq-0uP{rVsy%42pu~Jtz^q9E6 zE;JxBDi?P}N!HOyL=cpk8A|y}7E?@jGFWm7E+TBUCJ}QIXhF+N%Gn9kLy4#rvX+@D z+NqE0tMNacMSZcgNu2;2RA}!vp`NJ{>tyXxh026ODT@~L(mk;J-sf{Lxq8Gyo?yPe>((`ZNxv35h;|6iB!2=Ml0$s z=y)1Vz#RuoE3t~X#4pDYWBl6y;^4ZGy!<*S)M<8El3bMnM+ruFp%@v%5N|FFp*$0aN>J+a7B0R>Xj_%A_&LA8i(} z`r?Gimax4BPK+nhhB%}KRsC!2v}qxNOPKIpS41vC2Bh1pe+yH@D zWPA-|1Yo8Z2A>q*f;w6S$dU~M>mi_O;2@Vo*a9FEjA(;soVld3he}3ke?X$^ddD_ zFqeGl5wYR)?~5GSZQ;I-x?LF*Lk6E1|7j4_Nf1^0VHvd{sWI?`k#E1_Sq-tJ_Js-+ zrDPhP>qkJCcZ@b7sBt@UgLd8lmEpYv@3!8fx)`s*Z=BOLf7iCi^oPDGPW@&4tY9Gh zHxLJ^Fra8Rh;iw13i2c)%bw7GHh3rDX||;8rT){vBF}#2J!xk)#P=W~x&UMcpgC_6 zq(}1jREO@_Zc!QeI8fa@Ogtp%9tDGR?E47dSs*}J2{m{hw4X(TBtHz0?^Mp+MuMw( zP5dYd5My_(@g+`ecc*I!?!0`s!s(bhRA0g7*Ztw)VbY;-egV5jF$-tH%@XbDHfpg= z%qd)CqBg2FbS&Qv%E8$hZ5t-i$V)_O&>dOoz#v`li`eZ4Vi_Px2PHox(OVQK`93c`O%zU9f;; z%-=#i-f5A93OQ$`I^qu&MujE^>9{Bo;@4-QGyphGAf5O_p$ta(`rD#KiClroIN%4L z4}_K|mq_!wH4K%iorxPfmq_c;ZERi=ow=GTGwuLOVR9!sZ@1R$3dFvvgg&*HY7Ag& z7Yh=3wy^mXeSy5#x+6mU*1z2%Q$cC?Sq9Rb0 zWH5i}f{MJyt}XkPqvN@6@#Ms3fgLbf%D10oFSYr+NoPHZ4t|mKYM^_#lmdw1sG7uT zmW&3hv378_4i$Wg&S@2X-rQ)r=a*-gcc)WIRa9GjLD-4?^4|BE8n~L@{ZduN(@6;z?Y`VOMu6N*4z0KvgaN>L`SLoC z78~k1<3*OBuWg<|@@x>b;(fDyd9iSYtj){Q`V^bWz)8V)Ouz6sx4+F^kB#a?cKp`i zMi?oh#xsu*4AsO^pCQw4MAI)<@WU3pWlQ*~@( zqWK*@&7SXXg}T{|h!3jYp@YBeHBG76ZI;3=<|lACwVqYBKk2Mql=*MYpJD;0jR{~s zmaASJgiI>0-X!Gp-=7Iw;gL>18AkLmZ;vT>osJ-oUM_+(g8#@)5?!)RddCG60 z(mR%o+c!CnK`gzUX_|G*7iEp6z30l(2D&5Mo*(mB#Z4I$_8FJ!Gpf3hCT;HIU|6_u z+8EaDSIVgu_x>JbI-b}*=~x>Lua!T&$Q+E=YHBW;B7h^bYn!gS+wn{sd`Y?;?|1uM zw^$=5m!q5330v?{RkvLmL5vFdV{M)_@59#D@e(TAO?4|RD%V9@4x8bY`>R@zoKw*m zv1)1I`-)=-xvGvf?pN2tm5aR#*4wcsU??v2ZitTN&*5~%ZT?S}9gPq=zICtn{_{=@ z5ax$USAbExT>Z~|M1)|0;cV3qTK#2tj^y|jBjBcO=&+LxC0fll(MGn{_sIB?7oOfc zdZT7N2|0YNfdnp+)t}8xqkWl;K+f5>eCpqwgW?&&Hy*>zFJq=8oleFOU7|Al)qy za8+y$94iOtw@2x5Om=$jr_SKd8@=kQ~s0o5UiW@fpkOb zW3YNw-go?k5=g>Ff7SX_;wna=vdhn}0{!)N2ecapL7urcgUE=^oWj5`;usQyG!mvS z!nluhfrW!P4ogOoSf7G4753SS3-SZ}Kcgl}hO!t*9N<7eVX0w#puYh+)~KqeJzQmL+H8i-Ot%*6u5;FQux!DHXkEsgxl|A@Yna}Y(piI@Bg4Sx%y zP%L7i^&{^@1&sxU6zS;6aL=px-(mMTq+B4^(JKhyvkYqH$Sk%_WF1Wv|LR1ZQPNxXxsw@*i zg-{e#DAW{O1WzTldIzb2PK8oBXB^B>g(*|2B~qoMfa#L4%}E`fd|{%T;i1==eKgia z;dy{QQCFHyvGUZ$_zSL@tQtxq`c%Z}LcQ2fpaf;ql{aw=R}BNO)J>`*&52X(uF8X= zqWt^ZRCRpdxn|E(O8iO-`E@al07>=?A{Jf=r(VD|tbM zlnSa9F45YIdw^r|DMhP8f^n_?EQq-XM4&lZCFaw{y_Q!a8 zi}JeuHmL>#fi{|5?Q187l+AwquloWg(bbDID~0a9BP4VRWqiFxu( zeVNO$*HTp&tEkPdBM?Q_Ape5KsgO!M( zR5!eP#fqfGe>rS=)f6Zm_5zBe!S~{z!SB^-8a6@z{M~o32_9Y`v+^HxuQgsEHUR8A}VA)p16MRm}ah~)_M46HF z5Rn%6prm+IlxNYFCQ%$m4QDMUBeFn@Tb7{>P)H0&M`0VHZIGXH10-Frk9PZ**2rPIQ9L%$XESN@y24S0uQ|86yikdS1i&LO?j>;|I((o~xW$)zt9N~awXtyaSrCZ{ z(B}Dinw0L0aO2At@9A(Se|$Xi3NG15+^BKR8vAsrsytWNJ#le zs~(}9VXNZhd0H{PUfnvoSy|VcU|yNV{rOl(S4-8)I^B6%{HC4p`It_AVlVOK-h8s! zsaM%}4u7Y&E5(}7$S0I~^z;gJK*&psWBxsMaWQ_o^j+#o|245b^kn6WkE^qk;wUobHaXXpYk5k^ zUtm>Aut!x99W|7=gep^}mzp8BBIO>qK(M5GFOD5Mx!H5B^3Xw~&m0M4B~xXJn*q*B z&|=d)*LZd`7Bi!`wnB()ExGbkA4k zqn(*Rk6fckl{?H-S_|&7p>mv=>YH?pkCo~O%Zn`1y$8mQl^7THv2k>a){IAz*wTZ80H8Kp{jau)4%U2mGa}O$a7>*`gUwgAH=jr zIg$N`21LeU)TwH{kR=Bdg&Y~T#;sYBai1~Y;kOuET9v_+XWfnrMLlSda9W!!yzEK7@}YUNd^-o3?ZzOA9yPpgoC@77_@0BGY;qD^pr`Xm7DO5t?*T& zUgKpbb;ii0t>rfQ;)oPY$uEJY-E@r*!YagYlk$e}n?pHv$dY*}E2#QOMGa@xIj3L9 zqqFI>;e-ek7f@5tv!a;<3jml-g<;5E!{PtFwHp!advK^GBAqDSls+g<9wM+OKA?pt zXQ2yZ+y@0!&xI3&Uj08w<7P;X$v$XgXu$b?w0oGmu=NRUX=xx$`XEHcdiH6RkUFX{ zIU{N}MKx{p0@r*Aby!lH296DEx=i{y+7!!Fep}@K&R6g@5iDy{1;oTD1atKtG9V*O zsD%q_a!^PU3PC|ML&_+Tfj{MkC9bZ-Po-{?8HP`N5UvX;)T=1#`@fm6(E}^N-yH=g zRE}+ng6B_5%KgCxwpS7^GKU(vLgdh z)tBx|N$|%;lm_cS1gPi&@1}_HYiMF5;CVDN=UZTD>9<`9sv5s>nU%jWH7tKRX6i|x z3d2)F4^WLOc0sq8sry?}STaFDK~HElN~=}gZ382w;E2|XDru#ZdpobEo&XTxqMnvpe97MUZu;_g9;BOtZ&8> z!q5O20~F(gS6p@>aY*!Zs*{GVd3OtQi?{+i!XvON7rU^5;sUGBJ!K%QO$P3>rmUC> z5MC1{;AtP{AX)|k)h|CAWi8&H|jcqQS+Mo^O#TxvgHNtrl zTuYjcKVea)#EfE~d)E?P*L^2#0g5WN32!l}16ZExftDzAp;y_){5UeiyjSJ9^Qwd5 zk@G|^nz5?e#{j6G>`K3JkMx*Bdmm!hR$3>25(H|V&035KEm2s!w#Tl+*(#*`y%!u=6>aGfKc z15DaTYLbqk==ZL>yylx}qGzcM6FlZd;8MPS5peIUyPYZwEi9~Xe+{QpCnu-o@Ltk? zz3sdZtlzyMymWazbZ1T?PJBL<)>?13RXvB@G@p3)Ae3U`zpk~HU*F}=eBL|*=2c%# zpJq~Nz8}A8x8H_$p7p*iWz^2!bG1f$0T~0z#RT1T_UDsYH~`1##v93_0co5SJqd&| zy&j(L{^(J=C|wDF@uv63Uf|VT;yq4mYKh$AXzp$H+7tb8_T6l2tMP$IqnOiqLAyww zP*ZnG4TN<4@Acmw`e-(_*Yz}@In*yjkPX?=4CbNf4qRCAoUJ|Q2tRM%m6=#S03)XOG+5(@mfJ@CtZsPow2n z->lJ3@Ug%1qefp~1&#tc;R)JTbsTkR>99TP?c;3TrWd@MH+&r0t{0ETa{A+Lx4B%k z#vg0xeOi0%-&nhh&Yvb|aS(JSR=mC6zu7ZiV!ym@I_9&Z6K58E2bg1J06m%?{W&C~ z+uwB^FF2~zo%G)a&XzaHXFJUufF$%80^j#sJ8e(Pvx`yomsUXK%ia#(&vC|%_UFX4 zOD`&`}G>%N|E*6Y6Wb^KAyMQO=T=g(J0<;qrRNTMFoB>F2ggr}aVEuiDfE8=O7 zN;~@E)=@h)(;h}Qdcz)4#ckhqGjOmC!EON59q0SE+%6JN$ipk+C)hW>FS7h@>8@q$GoHi2qHjc&Gfnz5i9M9FVEHGoXZk9o?1Ai}kDZ z>yHPvUy3Q!?4zM1LbiI|%D-g-Z%3=Iy02_)ZqA#xC`1A$PXn-j6U9Z62s3;d;9AFE z$}$WTKoL&@&*c$y43`awFsn!~_;#;s-+oR=BqKhX*QaDVstED2}Tt_SHgvGbAJ?@yDkG29zCwsT{_x#$i8A7&zu(luJm> zQfi10Ns1MShOdfJrX``S)t2Bns6rKp2*n-734t3G#L0{*%Be_^q8Nh}-yzLq2+Sd( zJ&4EU6~yr(y&#MUsU(mrtALcFOV$UYvL4GHhf%~qFKEarlF8@;R#lQDh86PHX^f4B z(In-dyL~mHh|!jlmP};#dU%ME5}5ZLjUv(pkaYeHy_11I^bjRZPO$2`g02XZQ$(SW zpfynw5Ab$Gc@6np+MyPr4+3LF*SA?=jaf#;0>>?=cbO2?*7K$K>tKhr;$F^i5R4AA zjc9G!z;2e_@r48e1~oCZ8*bZ{kBmGxYMyp!A!e+2`D$RM%^f1WaQqrQV0Q_KntVtX zlmVfuGX%t&Q4rG)`5=n(it%||6|^|}{?t3V&?p28A|`W?2< z_n@pW%@0VKr)!OPx=fJl+)&m%61V}2;{p+st{vf?rIB?2bZl@6wQzj<)bk&FU%X6S z6$x`@Quamxs@aeglsKwIQ(9XuC_j~WP@rwy{k^N=AU64iMlKY6(|WPJKWh^j63OOC z6Qk3@6)K>ss{XObcj|DrjHq;fa-Iw;1IT&SfTY_ARm-Cf1kk1xj`TIQjgG=WJUO%? z9204dLR4G;^^L#ug2*n(g1!AiTleEi`=$)Rt-~9!l~{|XEe*Ytu9gW7L)5kP>omt?73#JWS_!8~HG1?$+wKVwyhBfQI!&601M6 zPA|7@H@NtgQr?nE?A2`Lb~C%?Ha4$dXhZwu7w<*{&U!|3mIa&In*0guosJG(m z9Nqf`qtQB~=W)2H9O^1UUieh z(*5c)C0n)ODFmEZ%l=mF;^V_y;_XI9Li~c#*bztvJ}jtgKj8P}eBO5d5vNY(mG$8w zQiGm|hzQzpzcmT#Scu1S15r{HeH!fH!!_Rl5Qf@gnmD3xMP7&n8u9MG}b=5@68blFBd89U?TdZ)7XdJ;@o&^F5DRpH#|N9y2npvFDFkXtm#M6%Hu(Mv)iA&m(G+kTWVI< z>JR?zHB!^d{>14zSslc+IS-aMAlQbv{XXbSQMZ$y{B*fZT(`5^_zg0z^C`D)hqD~n z$KPvdWGe7-;nb8#S1@r(l~HVUI{b+2Nx3Cbn@3QnwovViqa)A$o%?IA2mq>pEe#5W z`VTb@3G|=td6@_5&IlwBP}RTgId-bU92i>a&mt%!pjZuHjq-xl`|yIhvvL>wkSz)F z)=%aN(ofohm`VD1PR3!33W-%0{jDE^r zFS7JiPas;BxjZkp7+sN(Ho_*GQSlWoH*1?%a^-UclV&krG(A7jedBfW;BoV@{gPGN zdb73xkW}0Z{`T+L@>x#xr1;A!r>GLUaw#QK7K$>S6*8g!lIrcMX)H|% z)bVPgjTN>>9#igZsMZy7jIdCTX;h0zt==dp$$`H}7b^a}Jd=31{b3zlk}9Pgx?(D! zk|Mpfp2yBEqoRduEzZ!0wMCthSYc{YaqORTmx#YLR?bKsvl3THnlz@$#xIF_ltJs~ z1C-6A%F30$z+f>mS=i||;|j-HOJ(2naUgeihWSGkZ&g@e{}z6}re+1wEIqeCuutgz zNJvqX5kSugsEJ=3I2Dj#t{s3^|zH~3L*()Y-1D!;d0;F^ULN1|tsjMg@8=F;7|bwA-!Jk3-v^ds3d$GJieX^3^h`W4fjULks&Sgf z4m53PPbH!9i_EyuS8RXTXOx$M1c0wZ0}H99q(bP3jZ4QquzWiy-1!N? zVJ%RRC43Le^;5Gjs%VP92nlnD(0;YSu}y3;QmQ+`acW{RigjyR)GY}^5Wq%~LMk#i z`#r=b5nvHP(vo+u-ANlSq08kfEcV6G1ke@=s+=CoJ$Cv8S0M>4I0eBH#zPLtU!xvGJkc3GDN9(OPWHNp09^RL zDT*}0v1uW6TL<{FybLate(3^nz4X%1*p-`7MtRL^EC%%+qOdH9=Z8H@?Etea*M0T^KYt-Kqmz-|bD z31K{oxVyD+xJIkVw*Fv}j`>-@46bj;Iie$kOoga>0AntL1U-^iH_{5M1AnQn3^qsd z>7Jut5n2cLi@Apr=p!P#=UK)&8Ynu%OL1AdvicDNMLgO!oFT=kJA&whm~TpWj|)LBnbah8be61)<^SO6m|vpN|&+5>Inku$o5mE=2T zuDc7tj=$~&Chs9XvpS%mkzRoH`e9r^ZDFE3d)V%3>UU~fmTw%DIJvw$mRqoq*~B>+ z+sGW&s9w?)0NkfnnOx(AgGZ~Zct)$Y=W0=~E)y3p*CX8s`3yF;5qi?w@*%Fef~r@1 zdmsLy?Q(j6G4n$=dplfMdxej!QiJbd9OlFCb4Gt7qfBCZ-r;dsADLepmb~BN2JqTH zehSBr_WEibX66T&EYR7+#CQPQ%`e(X#Lrh~K8Di)fy%j8wJyz@ogb~)BcIhhp!Ay` z+f%Q@Gko12lLY*e@?Yxz94#K7yCdGH;~N+0jFJ|ewmC75yeMn+=rUD@*4RBR2~?VKLb0x#ZIair?E7+GKX56eSLgVOpvb+ung1fiz!*MS0Z7u zOX0r(QmeUbUi0gUsXo_>mA&OTS(`1w1fV<4jQH{HGc4MoyXYLE9v$3akfbw6`=rVEF3ygjx}yh1^LO)-xE?+6 zOQ(7nWOq>uaplF5pJ8BC@sd4!i!@8F``r~mh|ODaN~#>}mAqn%ScE~;4)~ee_WI)U zj7z83F30N)=M!b}wUUSkobr?j?pC~=m5DE7>h504y)A^8YfiV15BK+Mc3U^!y`^D* z(1W;IOYhp<{2~8I%R54FE-%_UuQc!7rJL{#0l(8;b*Ahc{ffAm?dO-2>GkwL=v)Mf z#`pT?IN)S_w7D&>t^fK-Si@tAX~b2%faDjgP{0EXPkHLueYPe zo*uo9-S+}HTB`DTDQYu}?}R{itug|DPbXY67R;Dd3xEpi-$dQx(s#E-bDbauNlJq8q7PhIrb6}7F1A7ZSD-)0ZDhZ2K zw9Ii;G5O3)?GkMh9ZHo@DHlkSD_q=`jZp$wqK*hl+FX2x9EK0(BI<%0$vx<&`?EYCgnEK!1Cd}KYzSW zK6-z${=xlbR{{TMFxOV}aL-pa%q2MxKwbX3cFSCC76vhqmBguN$2tjRII=FbUc~fL zJf-GmZ8Z4NI0eK`mYZoK3jzM49^1uK9eaD=k_*{beqQB zERsSa#`S%I*bT#w_~8m#k||>Ag3yByg~qZRy0zhJtOq3#;K;C1Xr;Gfs7t&{$7Yx< zQ^QId>RnscjeeHfPU2^5j@&pV+KR53N3$`R6MP}2d6qfDAdxKE6vuZG-+G<86>i=8 zg;>aRnE*5z`-C8~$Wk1&CdC!rI+s)#Kk#W__h7i)-y8xBb%xBOn|01?lCcLsGMMW{ z%@%{4OA&>T_+Ts`+K_39oj8uQD73G*zL75Qi2A}YaMNo!p;;Nf&AQgc{R>HOd&>J~ zRu~ZEg@2|vH9W0VSZIETg6i81|8)+b>Q}{DU;*+yJ}bQ^*KZ4Yc&42Nc%}9|sGNg! zFpRuypE~wCjVpH7P$_ns1EEjsTcH5xQxyBrQChMlcQVeiMtYr>tEB~PeNk}2t={ic=OGNC4<|cPKZZENhd!!;)nU# zOn=%-TMB60?|OM=tAv>YCaE*}Lccu@zyNbkalrb7@#u3cHE1Jqsi$ewHAydQdM2OO ztLaN_2CvNrJ=ys3ob^^dMZFAjjZcxf9BbNd@6Q)Tl`nimrZqZU7~3!3f!-I{^Rq|0 z;gbZ?-LaE=jjwVaJ_H;MuLd8{1AoPHx7Imt|Dt3+9PLQW&x;*x$jxYR-doXXDnUbSb2>JCx<3!RZxHC|@8l6`dB2bFzW=!o97?LWbl;zZ+iCXJdM=~v z*PeETGj(+O0iPorZR#)xFo>kN$6ykPg@1`eNT3kcOQ41s4ME=l*T46+UeNzkjY*dcI^J`G-aOQ_#V1=3?7DIVap}_XR zLoksgAg66dD(?JP9OiGXJ8x!gKCZoU-D0Clfx?V)|HASypYnYGz<_p91-&+}lcmfx z|7xi>+*^|AiPVK{df8TTCu1+Oj*F$7>8~`Ih2?4$;3c&#A&0^)Eyg()g@pAx*jS?; zn4sYJCm!Y*qG8ntlW5K045tO?jQ7uwq^&%)RFp3{lNuE2+mcciyLbVGKvI|61^a

)I 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

wkiWC5nphN_8rKL6-e{ZXp^ z^%X>7utcrleLPk5&kslk*Dw zxr)_tRkvY!7wgT8f;8IFCGXWob?JeRFm@zX0rqzk+s zOX07pizmsF;fBi&&?<*s2?3{;)BoB(8B|Quia!^2Ns4!-E;c}g;xKM2#sLt2vs82CsJmw5(I`xQXtD(sJY7DDY{~mjjBW|oThf8=jWQit@E0}?iorJHlT3p*@4D)jK*y1*p%f63 z)`MD$Q*D7027F0ns9rZKnb#fh**pdcCs1CJG_X(OS`t`Kz~y;LGcWTDJT2a@(s4j3 zf^!^eX!yoLfbZ9PR|gK3(KjMbwxK(;w7L`f=Mzo?0nOls3Y&&%VRVeX)EeiOOU|x{ zS(|yQCrNMMPAh&aepcOvOK=NS6tOkIO5=TNy5>`c8kBZ&KXvDX@r zUK}L>`x2)qooW==8{Ka~q5JNeEsKVtOh+v9zGtTBbBX!<80GgbOKfCr5=;~G50k4N zc#WIDQXAvR8I7?y^{c1?t&*~(`gBZY(L5q1UXW6o1F*6DZ!a_~_%z8p^z!1vB0F)} z=dDwq>3h|V^h*tsYMoHJQ{@B6(I0sYdg#g&BRYbk;PrAE{@>k=*Od4Z`czZIJ;7NV z*8EeWrW2>Wk?H-1r3vYhl5e9(x%3+JQ+)J5;2Q@Tl!~TdqFPk*+O{0opze{QGxXIuq0M8(I@Gt}`^A%A|cdxF=*$=~i^iaoV#0 zpK7@$H~$HEI5QRXzzWc*3^SoJr1?M)mL|g*W|%I_&yrnsUrY;aLnBN)D&j=ECSJ4+ zfFP7AcXpL2Cl;+)5!G5?^&kK>quU8oodA6aj9?;Qe#iGYb^yt53Ndwa_gcC-$iA1s zzL$p=!OrkbHDUv<{UddA(LX^r%^MFe4%!K&@u8|Dj@XEnY0_Q4aGfsa%q=#2Lc*B9 zExjaP&y0ut-plief|v%UtJhxdro7Sq;uxpx^jo&_34(72qX zKnYK^VbUc+?}BY+f(q{J^k6z-=(@7q2GNW;+h#EEErI|P8JzDj`p&bMCTj4XGPXhT zVh!(5^3DHMS0!fjM|bivKeG?|(^*I8tifo1J{uOn{)WJ9zV~q^rg zL+n{f$Xi8XyL#w6IdF8oaEW)&h>fvCR+#G#%(fV*+y!vvPhw*MsScFu%QpOaR8OW! zBLCQs;R9Hn6N}fqL!$D$m1z-skWc`W}uSdG{uaeF1+bnGf42 zcBOnXUT;AZb|Y!xnS(8eTkt`BVs<4c;~8FPpml*figceka2Zm`o%*C6Q5cGL17d6^ z(sphA7W)MP%;p^Ze1?B_2;+|yia@]T{PvCiK8Nn)XZc^sMhr{n`*88{=E#a$Gn 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%0An?`;m`{Jg~H@D>8>VvOA=Oq7REjv@o{p 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 delta 814607 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

-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

bu?sCFYJdYXR z3r7FQ;aEScQlLL8Nj`6WRbLe7g#ZHI)fY}NLvwROOA~!Uetlg7LyN~>bS(`C6%6eR zb#3*H3B@fRRTz7RCqA_M7AvFuqm#nVf9?*TD6IdPPkEx%rzroEFaI0QKUK}qGcvI= zf8%-jZ(aDlFaOs*_g|@T1&Tncw0Y-|*E%yaZ+I@LpDW1>HTdhszm$#Q4qFpEaR`Z! zU+ZKY3k{Zb!LLJJ5OkIZjop|Qn?%Urpb}!PhdejNQyyZI{~At8A5iAk=dtZnf3}b9 zmWFXvmBuEAkf-hv<6XvDnm0~=Q$r4w#-)BJ-~D1KL35V@A7sv2e9scLH-$Cg;)q2@ zlAPK%eZ=_$4naRh9Y$R0{bXbzMjvE#ry{5)mU#q^espY zqJ%2Rc0Os^!|F41|nE&#YMDD7+8Z!d-p00>_&T0?{HuU59N0pLF0kNSK+>ht5M&-bIhf6@L34qf<{ z-7I-4!vk3bBxG<|@gs~HNqzcckr9a6K@$VXEHuZ7sotAs!4>RsLue#(^bB^UFnJZh z_sZZdU$1>0f@^Ify*J-9`vBJqkuDRVOPObSw|=g-gUKb6shC#Dk-D3k8iQUd?fV55 zT&%$SZ18d*O}zRmNba3Af9QTFQEn+ppm-;vU271heHex?xfFVg-~DTkA!+^B*C(LJ z3C<7^6|eUrd0R7NLC&h6=uV`9mYxs1aR(kOW^rxHvU9zN>ZnP1hguoMm;rZ4{MpFO zzeN}Wf}5+q!HFrVe`lDNo@X_9)mxmbH?bxyC0V+h>rw*ft-(SDf4k%;#dQ6X_NV@+ z{i!^%2hR^{>)-|V?gY^y>U+Inu#<%@;C~>JlfSE{qUQv#e+MK3|7$}_eG^?mLET4X zO4m}C(7^DI;JUtv6(OaJxCo&<&9~7FtSmI*R6hgpFen61@i@ar4NT5K&)h`c?$6iK zGXogEpGmD^_}b8cfAA?Q#O_C0$fLIQZFa*`T8N{et*))Dp*bO?KGmZ+_s3-tPX}xq z9-mM6QNgpJhjIDp*iw3t2f70m#DyWG!#3Dw+_#kL* zB$NUN#=~xvE9qLOUl%HrHme`wZ}f!{p;2JfGV%hIBF^L>20mLGzGBxX%T^W{CD727 zXI>WaG#^T5jzb{1r_!qm{S9u<6;n-oz+|#krdX!uCWc{smP0-M$-00?+5SnWn1QA* zYTQiw+C!C`f9x>z^%=0~-u|eM~OhZN#r}Pv}Y?PVKdG6js z*8}VQ{0;Ycn_-%Gy(NpOGqzUV+yH2-`u8(X4g%I)JBI`Cy-e?siIZUKQQ~VQ_r8uq zZ&Lgq!Bv3Im+v%(1cnYk^+7h&*Vfh7=lkUw`p?8ee=|G7gbG=6h1(Ln)klwziV)CT=Lxm0JAUjmN*3{f#E3k&L6MvTolgT=P=gXP+?70I{}o776&sCaj|b|^v?pBgf6!q&R?3SOnh zP<~x5IJiw<@&)($Rbx7BRsX47EC@`il+iBXe|^J1O|sWUEy{Jjr1b28q6h@%N12j1 zbstaj=aQ!2!r{k6IrPy%=7yfXS%R(!{HD|9-z#QM zR<-6Y#33Q~GtmGV1y@m6P*(a!7Q)Y*1VLF^YAGcl+MlK?3<|!Yp}xbDPD3bYWntl9 zfBCEFD#-u6haWqDnc?vV0AOVQma_TF@_+jFf5i|ZXzU6V3RR8WYQ9~X3Z)!^hTf7r z#|h2zEQwQj2I23uzOF*!UMwYYOO~E%?h)1S7Y#LdI%c$9@vtyua(0~4BMIBbajSZF zUxg(1uNRq4)XecmBX&$p350xTJ7q(DeorKGwr-C_I1FSM9jNQ^vTF9_NDlGYXVB%uvmG=8n8f@@rm)st1lc_1fN63sC1z8oHJaXbQXJ$QWc`$2f7g9BLAl^z zFZ3!|^nqC&q!4T%R3pfSDyAi;+7+%P+Xy44^dF5I_Gwl}G) z1dyFF+ag>lj_@xF0e`5*?W7k#7Y$$}cC3W9LRcr0lMM)LZA+p>e2w3V1Re+;-K93- z?u=OO{i<%c=Y_+7dq!!^Xc`Hte*R~HESg6HT&}~do(HE-1uTqCf8lLOfy#ErLrKBQ zAV96pMWXO6mMZ59t2NQnWZ`?fqszqXU_4gbS5aRa$x`GlGnF2Mq8&-b7(R9uLA2f8 zw4IcA#Oi@)P>nNZ$E64w=xA16GdysDl}YoNUiGXVlH8dMtRsZ6!5u)~-XkPs0O%LY z6%4P!d|HW@abJQqf5za1K>mTjzXaJIAT?#vAdgrKQ$Lnx zyz72Nu8SkkV{pzB5sEXG`MF}{{q76!S#!;ek;8FQqjWUNe*o7lU!Y?Ad?*tYfpKGb z%vPn8HX;5-@m9h{lUE1zPD7u}2}=ADFg@UFP}%*DD7R^{)7|i0ZPop%T&xbOZ%3eW zU&@Ls-B`G&9s3h2lp+k?xN~lr_KWIvx?YaQf)Ugc`Y*F6q4)4Da)#P{Uit_nwX`?) zFrg^$uJ2e6e~;LYE3x|uOOK-1ka&8W>*IQ4rQ)FYr)I#t8$4t5&Hfl_3;|@>69(HJ zG1&Bo!5czQ*|v=zzV@L8otXj4EL-wHHd;_=y%DjrFfH41XQ9>4 zxMfgxBx2Vs&$}9w!Dqz1KO4V61jj(^{x&YL)JqX=J$V~EfGsT2xL?fICuG27T z4sJsZeOD@_Jt)%yBNln?Hk^GOPvS?%EsBI}qlM+tV}6bPBo#k9>$O1aF?#++x>gz# zbw?|iEg2tpUJX#X$Y8D%Jq)1DlfynFIV;?J;&q#rx z0AZ%8;Cr)qwUw$Ij3qKv$8_fTi9KbO?MVJYmilS5=u8{6M9d)euk7yt}Rf8R4+ zp1}Bh`R}^TKN$%M2hhSnO9LHw=fYga!4>P;kA^#>calo}3X*$W={kFA5P9bmReLKE ztB8(PY@--c(7AYowX>yih7r@_5&m{vd1RrN!0v8GLL){7k7y<4#X0SKrC2~Nl_HI73usDBFfROL?9 z7BD-5q^bGp8+WB)= zxtvp)XTEy5W->ni96_j2N@KMdH_KveYCIe%pBYgPcvf50h~*I3TW19IuU!uM_|v)62kLaJ!%m*Ks$Vk>ay6nOZ( zegR~4jfKkmgP_EcG%*oj8zE&zJ=+g2wz-Pu#;Q7(jZ;G|U4c{HsE&AznIi+Rz$`~O;)8ce{#|#qKBj<6HmiD zJ~(+{6JFEE4k_+*dq^7_4IV*5=j3)M*v8zHGIM2@PklV1dO#^dt{oL^3`JLe`59uH zHibt%f0VcjI-gC@(0Y z$BpIi7OtvsG0BzQe@m~}_l_c|0){*}_#Kd->LN7ti6?cFmC8hiji04}5^qr7P%yS_ z35tr0JxfN{;Y{%y+t_E@*#pMs5>pX}>XBjvN)Lu_w_CO{+O`!1@F1?kfcB*b0GW5k zd+K(DE_wN4!>DzsF*sE<>zJsp-&I4nQBN7L%(jT_`xAKPe-cMMuNOG=t(#Dcc9x;R zzVopXn&t$yPZ0P5v_fmP(|urD+|+izQ~3V!^LeF9XzlCYS!ZeOuk&DuXUWfmi}DN= zkSJz^i}n8+uYV7ZZ(+MCRcS;$8IHB$oqF6d29n+?adr7rN6HA7LRArr$uouXI-#v+ zLT#A-V=&%Bf8EG;K+52{LHwUS74(?rzcMP_xC-|371aw2=dfAk8v_L&!56ZhfSv|{PvtaA%e zt@1rk@H{_06RXgAy(|BWYeH1xhhk%yID+rX1asBTXTJaa(Wu5IFK(>)(BK7P-Dr~~`-Ch7c)jJ9A@`Uom}o3gc7vMPOb>VZTO zXaayh2jT#S#1)A7sR!HH$Yl(^bga%^r4%ms*eaP99J;5HgH< zZLk8d`ifQjobIi^KR(T|P8vXF&_7^>dKf?bo~4MWN>sY%%E zZ4*bSi~8j0luc7gG>KVCU9f!+EWUO_e>%-|k>ZQbO^!TqQqP`+<7biJPMDSuHzotq zS{M$rk{T(KO7aO+;7l)n2xwnK8Pv%VA&eC3Me(R;+d<^TSY6e<4Wo%{{M?o9H!#F1yG;7+R z&JH|_&jU3S6VxiB3W^*;V|Kk=e>mWV>Uy!M2mBHA^P5aNYDAO3uG0qf2JAz9`(^u* zpkn!%$-v&94YOHF4b{YCeI)}gA+m4KkXph*WgSk%2tP+zbZ z1Ij#oE7sb{n$yVg#XTq>5gRRQkv2=Cr3~{bT5iZ%?ULfP=s-^DL7Kc%d z$6bt-Z$;~~xOr63qb$}Q;dHJZr!s^0aZBeWe!e=#;sQ+j>Oe{Xxacggu&=K3O4{as z2P!8g2nzCo3im&IUjG~0{mI#BXsd6cYyNkjV)>Rf_%~2JE&ok-`72PJEhT+kqzXz*2`BF0RYy7J&=$G+8Qz8dw~{*Uqhgp= ze;IEEKEitPn`YAUfB2~X6sUgsQC}9Hg24~9!#zOXO*EowQ?y-iz2r>_fclTC%RrsWHtCGstK%C6goU_xKe}Fq5l#t^O5HI#$cSZII zR=zSr3jt}?yOlYvVJxh)8i&r3TRrF8q80iuZ^Tx>s3LY`fx{R97tX80nl|2V;mPC) zmtpG|hLd4?r@+iF43a>HTbW`fPE;W-DlA%kXv&1tC!I2=RyPHbt}bI(6JLt6L{*M{ z)CQCe$$?=|e*;!SLX-^shBMLq@Cj5WkDxky1l9CEi(~jC{ryJ&;j?^(0?BV{;%a57 z`%4EeMSUxKdpiSNbHiT)4)(gXMka>l27l*Ep(Yf!)TjL!PX$F`_~W#{m2m#a`)T-x zZ-tPCQ1oXEgdIQ+0Q?Nzvi>@U?0@m2{}t{hVL7^Ua_|!-6rK zn<`U4f7SyE2W}pv9GlJbSHkBXbcRvXKwfwcGKnrVEJhnzfDBW|paCn8O z3M`F)YO?K8t9P=amuWe6Ig39N21U~;a9i(7NYJB`GK7VDGKxg7>`+>9oh^# zK`i!S;RW*zdx+pY;P)(ldLWtqcpafEQvk9liX_5wde`DcMc!1PtH(-NOY{63G0>pT zI)ALBj>_6)higusEaT3&4zOo^;}BYBf1&fb62G@$d*;0rNZ4yQX>wJYIl|ix3Au<0 z%El+$FF)db;Su-U{}lI8|C8Wh006#&hw6{h{@ZZ>U-!g+SvJ1k0eX8Lbqi8qrI8^v zo942TRR^l8g4rorJKfLCOdBG2@y_J!Vkq_<3SnxsxDx}F%3Z@=_yX~@?Pm(zf5d}x zb^kp}tcDQk&;A;d_BUqQ-66S%3LzrOr}YlF8(wQlrIMG*wyGdlml!r`yZDrl_T6b> zt>)FIIprq?tS+(bdm>t1%NB}KdSycdF#1g#X*ahnKuNmx!{okv`X`mPrdV*v{S)vG zgRD1UAsuQ*dS2R9+J=D3{5okze|3CEEvELZ1eN5_s;^!-LoJ^f=-p$6zi1;}niYz_ z8cmKL&05vhfO4!+(OZ_Z$4i(XpLhnQHj)Gnzp;4RxknIv^j|``J1hf1{w%<&%fmQZ z@BO<^MUWa4ze72a+BKOhs8xJ2X9|ID0Q-a^c)Zp!Wt@ecCe(+__Y>s~e{4rgrfF*# zp@HP`8`Ps8X)NCmO2h*1)rY=zqhEPV8~z5AoK`SRg8m%72DYhgh1H9=5hxqpP2t9@ ziL-0mMP6no`t&s!cQ7eIqFa=lp@?k8 zM?LUn(aQ^TxksRZh;Mt`2A~XtVL17GE-?)P894EDECk&l=`615W2e>E_0q1Cst_yH7p z0Nr<>P>Na+emnTzNA~}Ur~E54x7p}DJGxe5y1?nf%)amzf4NQUhmzM#CF(T7>DW#X<$|-|2i07SAc-&H#4;WJKH>VPe4&j)Yk^UWuzy z&2|kE{%L$c1ac9YXIIm`*Zrpag36Nm~0a7;C)^>bd!imlXOe_)S{iK}@<3!St!>dlu$ z_1Yr0pSo~BxuAB%>0g)ofHD&GLc?&qdC1FSW9Kz!7(40K4=`wkh zsP-CE_sEkIg5H7V9bu%bVNmr&UTX8qHr>d)`oXY$xLq}yz#O>SC5S`)U2es6>G|{` z%77xGXQ;?%f8uo=?F*!$=yD40tE~+6ZPtvUwI%ba0E{&5SyEY-80IN$uw8Gzq7)FC z8pP9?=pHaTzI|J=%z}))^de*AWYv#R$Q)2PEkbt?XsjJ?*BG+**|ug3PN+RmZ$Wl4 zh8`e|G3JS**=SrNMwO0CR<#-XUAf($SNpxR+1FPbe;T_TF&RHmf2ETuxv1FuB>TSW zt%MRpx0lD{GlUh~dryq|Vy*KD^h!Y}Sn2b8v+87j!+zJ`l@+1ZR~I|DXHPBrr2)Q> z;s9T8`k!rm`-aB1Cp}0${X;Hi@vm8n%JhN&{_p7Ekk&P@H8CKhv@G-_yVzjngM%Rrd)lbU%(#{Y+p0M}gvJV_;=sWME^Z#{pn{M;J1{ zAfe#jF8sSdDJTm5kKrbQ#<~`IhPHMluYZ)_&^+~nWBZv&@idd2@zK0~fB87Rpf6v~Gy zB|_tEaMg%)n8`tA3&9Gl^B!Aauu@5lnF>aPsj@eSwbwa0AI6l`sU#Wc;ryg4nH=>2 ze|ChgGU+qidztJ8=u(}`5@7}XMxz$vFITPD?|qu^`JElcJMMv$%Y&4*D59D1q!>#Q zZxd;g{M)GevfDYSx)X`(8Q@KK8 zk^-_>Yg`L}J;P7AD%cb2Bms1m*ggn$2AklMaT$32sv5 zOT(;NC^Br?&5AvujkcyWIpE4CKSWISrloaQjEuC&udQBovays-Y|9Lrt2?Vo;3f=;NBfyVk6zaVxJ_G^!P@0Jzbzi*x9{;M zSfuG}&Lb$#{R&XVbUR|2#M+sn_`@Zo=1q_v*j|;xcRMGF} z=3Zx3QQL;^Cmehs8ApZiv%TNO#bYJO6 zBMyR@Rtw;>4DqeH$Y&PdGv)o;bKdz>=J=HTA487sFO2qQiNXCn50(YM1Yr0v*x)Hw z>W>6i+#me}t*y*W^j-e+@V{%6?;Y%Ay%5UpBpM7M+uXLjule~&9p>OwIi zQfNh`rVwn6ytBZ4_Eu5JYFQ`iJygTquA2Kt=A+M;+efe0%Nm8hKrQwQA$-7qcZv~q zWz^PApf(Qc5RFQD%iX>=a5m{1>(4ye%EG2%ORphHQ;3nHFTV>7T;jFokUsE^;K&QP zqG8Rz>-7}L^V52E&7>`&fBfYZZUJoj6zei$b2&}%;fEV|%?)bNX&(+Xpc*?feZq5k z;b-jdr`Dc)*6O??W&#EF+>~@677n&=pd!TdKYk=pjg8Y{?ufX8zMxLi!#yu?U&y1! zudV3u3?RSGF|C=?2aF!Zu~r(6awKe=4ptIrEUr)GjGRgM$_&7{9GOHl7J*m7*>T-%8+NbDQ<893D;9 z70AKB%a@e0qRKu>RMwvoHG59Le>10|bnYJ{YU%$5AW;D* zz60rR2qLsH`sq$K{AV(ift~qRnfh({fA0_aE2&xrG+@p8!dqQ}!`wOEBijp`;GB7~ zWqtro$d-q^GFqWgpOf;XRc@69D> zEVX-ruxW0cf4~4zt5u{bCmzBCW+JnyXS3F{1{eOZic|3A(V?NMK@kw+Ez$5R$?tFi z;pbAIn_zV1AQX<$y&U%j5JvFfhLZu@xLv}CFN>$fx2D&3x`82`rsOw3y+XxurHvgL zwwu#sux!p4BvUPPuwZTm(;Pmxkq<@1IkUUiX_3MAf4|ywLWUeL;1{)xE0XKng>p1t z8e^|>M1q2I6z(c0up%pliCXZQS6ywy*U ziml*_ItXU#*z>%r%S3%t9Y?#6sR}s2Lh@X0WYb;i3QC$}kp1X{^(AZk2d>ZVldb&n zVnE8xe_51GH$Bc0Hu`<05|85jw)e{`%#cm+i*Gawx|6o6HD0>5a%Tx~=&Mb@kS*fK zwyXoE4~f04y-GOoX1IC9 zophARE3w#G7Ee2?oPuGglcsN8uisbd^9qyse@k>zE0-)Qaf9dXaJmyw9ygoMjo2JL z_lwn#vyqw>&o6Ra$RSlEDTwp|^QBgYY>b$WNI#|OQ%uG9FQn=fX)!`&&818GwN5Zj z*Q_*1ItCWNXZ43vod@{Lc>ngCcRtlQJ{AAxu;cp+ul>)<)oA20V&)Io>|bdYw`;bY zf8E7ec|C+86n}_X29Pd= zQsS}Cl|%yAb9`T^`u3n>n_;A7Fp^zso6w%oUJi=LQCHNu?dF4bEX z*lrMhHzQ$lO+77`MbE6byv_J{v9KBqLpNF{UyZX&AMz=X>ae{Aqu+}<@%^~ipnSqf zAEW-c<{4UvBN;TD8*R`EY#u~2Iidw?+TMb5xVv}v*I6gAk*9RBvqzbFe+2Lao&8aK z2vlCDjxMI%wmfhaHjTC6@n<&_+uv8&{SizRR~MF%6aK#8fB1MnVWGuc4K1w=ziq(p zbB-D48R;3Ha`At-j=n8e8JN}o8=w4F0;g}>wI2b$I6rU;-O#k+1CB6*&70YKM2*3+ z&0H7YsF2S7V`ZBQr&g!0%Jp`leGyJyJbmuJP6X?W(KZ5OhW z(dK-zf==Bm$(=%8mQ3x!R`R>rSz64yI`eNo3r6+~qBTO&H&?phO0#WmrhWKOw*cq3 z$}xRWZQPo5w(4WqA!4N&@kRQhl5z+(BRzD5YD0EtQs*8gQ}-Kwe-lrK4_t)Zx{dOp znS{}C@1iA7WZVOUl~P8*$@$A`r12PAyFh!%+&ir2IZvTzlqkfC>6W{Sd3pz8r4-p& zN%qEpuf9MDNlP2FFT<$^5jU6MWZ#q5pq=F3`eSYHy$h}uGV%922^qDAC>Vs9`mjh5 zAV=PhQQzkpq(Y4ie~fS5ic*4DTtj-s7V~aOa_*>UY*Do4sM+US&1@J;aXSKSKw_Z4 zN@yL2e|R}CzkkFuqgg5ff>AvyU_F{SQ|}eJ%-7YdYf$WJYMZK;)QfH~^VkTxi$nwv zP7t8weTT`n?G3Upft2@S4LhrIxt*dW$Y18ao@0gWyID_ze@yKMVNz0qkxDtOiG^Z+ z{4VDAy8PPW9m4%Qf3p);X zGd;R)>xtXz^q`S~P*(~rvVQa)eNQw8<3|zTIl$)x;8PCqtqRcRJ-{c|2f@VB$coS8 zZ(AwHCkEgXe@QR;t>5wE-sAaY?>$nqptuMjKY*T*k(Gf3K%*f2NZ+(7CiYggCb~4D zx_0)4Ca#1^^Z;gNLJ<}QLPfTp@&*c)gWu8MsqoaCP}R@c(dict9RT0Ij3 zLtR38rpM3!)?%CRPoMao@zLSo8p6LnCUdKf8D6WXf7obIwl@d=UBe3JJXmyz45?s_ z_5t`@bdQV%F>TB!I6ap0AuO}vqRI0Zk5Zcx-YR(KfVXdQD2PM_B;3U~&V=2oU?b(7 zi{GFue!TOj$BvdNiUsZ27Xbc*FjH}z6}zlsQR-?2RrrzWz*zh>z?;;S9-Upo^9YxA z!5pgOf0(|*SEixqs3lVsLn&NvBduL~%gdm3f#Y4R1AG8+ z@&M~-7m>NoUaJN92JV^wVY+B}v7eeXHS<&%3sdzF=Ox4Y!&T>yn+Rd*xzu`3K3v^R zo~&4E$>X8xq*|(nlVi660@}To(IRFs!|rFj#rzd~ zw6J+~z87T2{myspgN6cgX%a_CBXb-{K7rT*vq(}UqVZZT{Rilmv{*ifeR2-BJL>44 ze~_jR4&{PrbRT#H?7-s%CnLFJfH|;o2}ER^Ml{!bh>3#k<30Rm;!38B1;r}ockM_w zW4x4dYQ1^Vvbm&eKd5$PP7Jb9e42zv&k~#6&iLeO%@UWwxs*V(s#XU(7sLAXPEEZk zx!1&8kQ|s)X4A!QI zTiz1^a!DWj)plFFRR@)Cd-a@rc?VZh39H1b{v$~ic+#S_PJgGn_j0Edn;+@MXw)KH zp=AJ5A;eVw zbYY7_W*%pc8kcQX0bdw|NTQ}q2#zJXZyXtm+^=~%^`bJCi*R^ZyNs|k)6vUueGfZO zmyu`Ft(rFzAu_AM)T$wf+=|~kI8W}*R3GLn4jl(8s&fDB+rH>CVAv%re{KXGHj+NN zDA-YudmQB{nUM&tGTEGy`?BZb;At+;-VHqEdGbrnNy4>S0Wky%}0Rhtz~YlbnV^Dss`iGLsSM)e~iJp6v-ca5e+2kH;9SF@-6Cdu zARf<2`*z%FJ5hLS13G|D-gj-?CmrDP7T}ZgLt*!c0?_@Uv6K8VS;Od0`}dp8p>J&m zc=by)xE#I=kQ|UMkR6aAkky~&dI~(gWBK^o)7(zSZ|^Vxv3`4B7swV!|M5)oA7?y1 z2oT%1Ih?G&GYc?0e=@JC7rMK5OC(8a-hmV?a-c7KOkWVfhCXM5G}^v_^sG=VL<43FN!yBnmtS&Qy&5J~CokZzFfkS^&KBm|_p!2s#*E@`C1 z2a0>U_x2q3Iq#nP&V7C^zi-SKb56(j{W}CGs<>tiX`?NPb-NVNDWl(D1+|1l|jPPT$rco>Mn#lTB zTY|sT$Jd-|6HAZkZZw;D7$0F04s#bVY)x8{mn5l)N|dVO9FiE@&JVEay%0P+=FRJ* zCX2YCe_|04%);i~+2(m=UyxfbEu(`ac~aTb7ZKZ?o>^kg-o)y|YFQK>+g69Yx9hBQ zN)8%PMY<{DsnU~vnTyeA9B6I*2+a$QH$CCb9c_5a7<6xmqr^An01p9j`v;UnO$jFF z&l-X3_e39fbnI_dW2N7$#UettQjH?Z4_zXEf4|~4S^md^_pE^h$O-)JU}pYt_&@x# zUpb23Q8-7tLAjD*owoVc1iYcn_zdZc+FcrAe=QCs(pwpp4xvl_mQiL&&rf_w@g;(< zgss(_(a_E*eJ-*e9|B!j(nJkL5Qf3sVSTnOVPD(we%1oCp zF&O)0#8TI#f|!y+U_gCbow}s`QkPnzf9LM4y6x!usRmbwR*TB!SViE|)?5B@cFsNK zfqvNkR$^|{fsFSHMltfThw_((&%@`J=N>fuG`LG}rcJ*1rVnBNQ=+n%RAV9ttWZf6 zdQcEGG|L;yb;tS!5QefmxRKMtL*%el2UBVPUQrL%#d2#a8*rLuEL>up&sOVIf31qI z(Gqu+dKgy8t?J_quV$6ZOds?6*A23fboQIw3`}<@6~BuP+d9w|k4TtvSEI&bBA9;< z!XXs3C;DVUi8{&a*c5^gb0RG9^~k&|Ri5kv2M6a9?34~7ccc{tm{K@=`Y*gMRgjQl zyx4a-Ri#>%7#TeE!aIc&(8qR682#;^`!m4h=IH@;ZAIlKX9t5`i+E|fbLz@FeHE<1l%poj=r08)G8A}Wrw-lhId9>wrkaS`6D0KA|J-Np)e>%1YjcVl*5M1>DLe@~UHNp;`St&e(Y zmyLJy$gV+xPVK2)x0AVDU-psvCmdH>D1d%&8Q((7zQFUp@_SJKD(S=-ibX^!>kEAK zW%a$J;{)*eS2WAF$UO_fBJcR#R!fp)}x*~S2%`TljGenJxZ zhmdp_$KF+W^1r?2fBS++oe&4n*E;>)txhERAg^WrXrCmxX>?Q@>g=QNF2E|QxaiGc zdDx`@yn_Y*Hlv^yQJJ#7+YTcP#{}7NL}m*?#ZsQrOxCh8MnwZYO&-n}T0;&7#tM+F zPw-3aBBZlwJHGnSdF$#Pg@IPUftMFiRm(*!3FSd_?v0%*iHaqB~()zag)_+QJ{~qUjA58T<8xtM^6xAWt^7-Gw^v>3Frz+V-9i0=l54j+lune_*`9Gi7f>n*3=_r#(hn{N zd0qjZf3sQlg+q;i#2m%L7|T|$LV>u4E+6!Qs}GKiZx%9FttSfxb-$-V3xDS^P>afI zpa)IHPbX*{?*sd!rpm^}h7Csk3M{yrKlEqW6`JP{A64cDjdBkk8a~fzfjv{Lo&T4r z)cjT@Dw`9_gt7235lI@g zG&QMDDHNqdUdl4kS-aboVn7m0 z?!6?fHm(Y6$Uv?uU2}gBCeKaKjM(I%EDv8VT&|LZ<6CN+vfr|r*4h>LQm9hdW|rdp zf1c~|GlWQ3sX0Rr4f8}Wk{8X2>RV6Q-u5ZJ@%Fu$vK;w@x<|2azHyOvX`d9JgqZ(< z8Aric9m5KFXIIxJ!b!xxGcfs!Yz713s*8V|Ty-LJI5m1|1a71dm6YJe`E@c;uGwtT z@dogtJJhk>q7HD2I-GB)0|VduGwdXOf8=d4zcDg&L`fTKQ_I^QvAoR>S?}oBe>nad z69e8?vSS0X-TqjBcS(TE--fJg%*@8$j71q@iR03Q|u-h*!HXSQFjJ2M%dUm=7ywAY8K4pAFObe6g za@i>U&XJ?rp;C_PZ7jXZO267SM52btzr@#^KytT0fQ7 zI@jmJ2ViTXY}+ioOhDCr!ker0&|mYY3OCFr96tCPs3-yCKhgNX|AeHTp8*F+e2lkj zIe1FPHykWk2qr?dX?o@()dRl`3$b0S@JE4J$Cb9t8i@^Wte<=o54YZ+e`QRp!e!Zc zo%y1Y<74uRq#DK=Q>xJdsn7Uv#?BeSOtYj`&mSFWU~*O1P0%T9KEY3Jo1#6*_VXC) z7s??6b>vhDN3Lfy%^`;1m`;Nq!6sRZN^)bh36KOMW_hsADw-K%d*Y)LAkslIY=wrg zsvlW`5}gqs-*}K{BbFI4jdm?{L1|hUPc~c>DK9ZO5Va0Nu?G;yr z4`*_uUlfW)2_y8lpKOGl_o`yw8sto>0@X)!px1SNu+Qj9@?R!X`F@)e|4t|UFj>1Vvczuby{)NRhjy84$m?64WIU!<5APp#La<;9yp~B zmQsnwx$uxKlAkEnY)b$b#1t#uP8w^H=W-t4&=8k?`oY!*JY9LcA5Iy4uaEAAN*Ju!aTfr;bzX35Kl zCc=Ia3;ij)l=LC>17b(ZZoau!#gedmjDGR&@rb{_0Y_7QaLT zvjEOJ&4ANmOUEvI$EB6#bdU1;4sh*7XH9?LrEdwNZvU93fTmiv&W?i1I&sGS7xjsGhn zR{UlmlmSQqB<{_F0sy`rtb@QGtb?|e<~Gj8_GZTBMvT^0-(39W#tuw(eRmnYIs6%J zH{?H-f8S%wn1eA1LYJ!#OW3JdBjG&_LUw-U8G0ckZAu&K>nCr$G%;Dl#d8dX2`jI# z&(KWn5fa36@wzD%Hn9L-K%l?=tnDS49+X=Is+_{Gn-9xXx&QzG|Nj60AphTF%dU`! zFOipoApV*=%$wqHr&5frj!hF@Kj^}BDnCt}b!6))d4K*eVH}#C*N?9sqhvv1HzSaF zpTzB@;VHDti3zpFkiRC1*wP*JAW6wg$mHS{$G5t8?~xY$p1P>FNTspFfYpEvT?T_& z#lJo%GPa=S1e!wm9hNGZw4ZAq#uT<6C4)9Gkz3i#s4W&&g8w8N*B3=?Cw#1Kbd^Dg zcTUEN(tq;@uL@V;65+2(JC-Q|D(6<4z0|Ez4-O_b-W+Wuae9Teyu0GU))%m!;f|R! z2E`>PmCsX!^OR{yvvZ&oQ@{;;_w2Jop<@EUi=lEk>6*wb-?E>Mfjc zaDRbGdzWvn3%42}{73)rbi!f9ymtgPuacj{1FO&N;AZQupEB#M@05pu-Weru0e%pe zw?ypoH+175B=K4mRRhGomKUXAZzE{l!M}MIIKA(`izO~!!4PQHGN!VB!(GZJw$2k6B z+WXRCcYS2o0G!OgI~KwDwcz=;;s2p8`ISW1MXuw}BJ%{JGy7yEDcX7%AV$dh(R9ja z5iiX94d9Lc3UT|&3HM06E}p06lUBf^0IIW0BB`dH6u9UkON1rXlsiXfv*`;FUWZO zft<+Jt$c<{8PV8j3R5T^v|MNREb{P6snHGb^9ik;n*t&jqug+3l~O_;YCXnaip}D3 zq8=l0;#ym8-g(KHM5S6TmsPywUVp3r=Oj(0MqJFmbMwH{l)|DT*21Ei0`O~_AU7783S@(KloGqLwxHxea;=SkK1>uD~gIUqr#;=uz%H(Eu2gHGWT zLnj4Br?F=*A$Rz;^5NMHrr$y7vWM5`0PAS4bk6J+L@6`6))8Y~Gdd;sC|Jk<3SJpx z#~r3l4s;nh38+g{+-XW7x58e)?GNrgVu;D-hAaY!6j{;~jXEZ{q<`uU^~ikR{4pO4 z8-V#unL&DNY;S&N1GqO2eDD8@j`jTn@gM4%0J#C2-!1@B8`9jF0y&8PIK{0U9$$xMEfBM*eP@AprvAd_@v{5P&gVv-@Ni5$D=sK=69|pM0r5+XW zlz*uCrE<@6932%}qj{*aNNJu@6kcP#=n#m|MSy-)nKo#l$Gm4{%Nt{Tkf5^ZD31@J zr4I?zp9@tqN%+iW7<69b`c?vb%YSW|eDYmT0!4t(2k2&NXMbq|)B&mh6)f1>k25u9 zGBq~=kN}7P(6=v-1P+D=ff2Pff)`X0`OLC&(8pp_5{KRcmk~hmn-kW`#?*%KR>m^F zOLq9`eRX#DdhBkd-$_LkR?O#*1=g$8j8aj-uD(9IYZcXhC;Gz;JtZsG~$evq%Z+eu`n1AB#lp!i;PPR z4--w@B4d9{y^=tYKE>{RFU`UOT73_@q50#sHAHUdVur%WAlf-blsi`4e9NlqZ^4*- z4@N<}E+djEbP{l+##J=DZi2rs?dJd37Ulf=Ta**P{(o(YGW|BWinaOe|Gk60)!!-Q z%L-urL;mRxJ;?u$f8Vbde6K!-P6a6IjKKtE>K8SQ2r{y9y=O5K(aHYq>uR{15#48N zMuD$$?5_5j>!;s81bN-Z;E>;IZkIsB#ak%~owkW|`B1uxWPwIMikVd3uREB?I>J*I zi&#N)$ba^c>h=o$$~(7@YLiGERbp{%^c&By={!I<+=W08cDKM60d zwFVo6>Vn8DbkD6ii82du6WUpuzlC=ahZ%Y^OqcLs@Ty+W(kMdp;Wav{Tfm-<@)>I; z4CpZm1r)aQ^dW(}iDj~$N#4}{Fr(k$!9MJ^Xn#MZ#WJ`x%ScJ43P|r6j75CC?(8DV zVSwI+CKc-IYpkQj#}+;mk@p(ae>sh)ak(^?l*m*<8|&DHW_E@iN`n5gL+`6NA$@-S z3Vfa3)MGW?#qgcA?8Q?g#M!=jwtCw~hL_}*R{jwZ={$zV&o7*r6Jjb{no6FxRICC? zdVhQq9%~>~bc|LMsFxfXzO9obP>+`0kH(@V(kMf@@|EXAuzGjM*LiBVQnf0tV94_X(_1!%?;l zz8+~_&B^+cV!_GL-8(^m9=6tlFP$nO{xbWJu~2qLb;)tHyYKz<4>{K#B_-2pMBbG( zt-Mt<%5Hyb_Y{n`@4fo#Qbg>l`yvXhTpH~<^phh1Ai~z zH~#sD3;qdq*#WHIu*>k<9e;ygGXGjQ`0su7f57T7D>graV~VVm>;!Y58tf1IvnxIo zQ-zm~^ibyEw${Z2Ym+Y+q+ojbMzXF~-VmRb1jh3@`y~9$5M{R-5I{|FtgW3}SCjub zcF&4Fb7xK@G>2D4GKN5YmvUiTkAJb53LXIK7=VKiX!9O{P3|TJq7{ccg2>> zZDeohh2~ZluJzNF9V$r^P(^TbyK0D3t>7TlNc-4jxjplT27}5&3Pr)t9qk<8gw?^$ zA7EGtFWBfdSo-CpYi>w46N1{$$T)8DczZu3f_P1ty7*e7M1oJHZhztxr6M&bP|##@ zioE%Zc5;_QN-Ooueal;g%`4F|GA@qlZEWLqiC|l1$GOj-_KC*qfMZYrzZJaFo95U7 zTqyf>1T9YUUWoA~s{zfkPiASe6qu4B*;_^D$!UwnV?b(sR4dcONUoH(9b)8M|5j0m zQmf*4y|lg6FPHpqj(>E9;Gb<Ytvs@B}9lj7wl+LwmSRP}Yi&Oq8@;=P$`)8aG50 z7J9H);r1;=6}IW1!@%7;cLd<*6|u7DMCvJ`1#F90D4vMnQS(p@7I)GJKUmJ-p@2zQje;OW6U00_R_@N$>{C|7#?qe6XPc@i}oHM;l z)L94uE|iW_6ll}HX*|MN8lf0cUh~36u%j9+D)7(~sO{8Md%u-z*!C?D+!6j!TgwK! zf?~C@lg2Hpn*HE+sf}N_)*tJSz!i3B$?ADPx=^~ePC_fv8+@`goZ@P-!S8UJb*3pF z=%zP<&o1_;_@4yL-{5Nh9k2NhI9SeDnx98P`k|t0@J$$2E9Ck@F4!YP=pGP- z1_Urg2GTrXuCAM??f&+b(T86$-7}UeJfD{q2EjT64}WbuUvbYbw!UhpvTZXB$zdDK zeO~dov|}H5`J(>#3Z^G!=!z!cUq#FFNe}?YhNX8P&d2bYfiQ$~)TPEha4>TafXS^U zICs9NDxq1p4%gXy>Jyg4hWH?qS2@Uq`c3wU+kEvp=c@x_+X!zk<&M@bliB=JgSWSI zMaEyxDt`^nrn_PhVX}}ZDXwS$wbS2}HKWsrB2sC-*f2{&`=lnoXb+~E8x-;kIk*73NNZZbk=R7IUQ$V9&?F!;Ac7|#E&2=h0%)qn4+|B5foF6$Vm z5wNIoF|%CmybX>h9F?Af3fVS#229T9j3!JTWPdcII}mRYtqjd>qehUjB}vFMYAc9C z12d)!>d6m1xSR;cvMqmvmm~lsI@Z5qkMeXCNPUH`zfKJ;>JUq6UI-pym2TLlIGs$j z0V8Y6|GFQoz1!4Zo8=fBb=Ts9((+IPyI#CcqrRb)CbrjtU_9YV#10Z_+mJ8glvY-H z5PuYMDqc_bTjM3?YYFCTBO!G|@>7pGK5h>Q3OzC4BzO$f4KATTjC<{Y0*_=+=B(1H z>(at61**iCOabmpu0im6CUo0vt)_}cph1>e$Q!D};#vELGf0A`>%u`R`D6cHv7#=w zH_x)=zzOhYEoXq5@%#b+Z-$@oC5CSF!GFg-9`3HqnPv1T8~f7>@j9^Pg&Wpp5zY23 z5=BT!Xm!$uMk8Dc6s)7|@8x_CkRiIrt5_3z3W@;>X8H~j7taDi_mOlGsHJJCqEMbO zdIoiYWlSTu7$b=y#(w@>g~fh}ibxQF1RZKY^Z1kf$sA^y3!91ROLV2lXYGRB6MyJf z8uq=l=Ad2f75<=RPa}o0<8j(4w5|_s{K0}f5fKL&VYH+L5&3t0_1DQ~-Yg<9Kv(iV zo{c;e3WSzSMSy=RCGd2&_Ve3F(@?yZdyRy-ATTi4w0>GZZSgP$jehlmv)JyQPO+=U&$0bm7k++vFLTl2=>hyU*;{}q60 zS?ay|D5RfN&%CC7P^=ogIYc^Q)G!jaIa(5=FKD5sYNj0Uu*pIh4D!oD>VI?EGHvK6 z=}v0z{VTdlx5M7j0~96l=x~$%7a=dpHF80=S{lSZYC3q(WBd8)7|>^f8CNxT(}8$( zU4yfzBJM3;4rq&wbG~P*scip{<||#iS_!H}5T%>aRZ%($Q4>xx`~q2Ocmc2I)8lyI{Wc)uCt5c%^VK{0Gadsnwr_!0->_hcdEVpF7R1dw&~;oY>3u(@!wV z9nayqNi;v>(Tqcumm){E#DKEjhaJhzUJ(rF-@svZ-OY53DF=ELlf>w2=H7T&lk2Yslc&UuS@ft>a$9x&kw+0 zXVh)%8k&6`QK66nAOc5rYK0NHx{oO61hht#XhH z!8D!Ea7Hm8Zc#B$5CP$Oc=qv?hMbhBvYM{2|6K^oYk(i*tAAS%C4c9mea*%aTIF>~ zAUdm1!%gXbhLX-7`;CzSNWS?N@kGp=tWC{a^of;?t&9zAo)C-JFw%dEkG^j=29H2u zEH5MVYa=Nukogu`ca{0>LSk5c9RA0j|EsW=B?{z^kuxDIPNwfmiJo%HJxL#7!ZQbLgY)ZaZfc~ zd!g(TQd^QR;8BueC@dN!e#Vl$!aos zP46cVpQE!V4e4LFk4?B%J!km@5;Q>YFrKsg#jdM@ZGV^+ioXKMCsaPxAe}YI_es8f zY_hn!#%Gq@kl7z4(8sGtsNzxJrpS33T13&s0Rl<9lM@pbA9*-e=th%}>K|-COL=q9 zUbwgpD(`8Er|0@0#fY?zYwBV&WEMn{O9-mB+H+R2TXB3z8PY~lhkI%MsjU)1%v~9z ztVQXpdVgc-oHrLZTy#UCXw+R`df)^N6_4So(nGZh8in0%VK>nta}}@l)C-lRLim$` z70&n|tQo(z)fr)wL216>3~V70sjv{CO-dO5#D##MyW6XL(AeR0J{Zh=6i|jLX6F|P zh*j>-ub@#}QEir@dK-`_@EmE^@RNm77D$3O6MvvA;HoSnoQ==82crzIaXsLu-{TGY z6O#1Ox3+xIH>)*$(CGRwa=>(Lwf$KwnaOf`v=eJ`5j$Pj^Z5Go-FIOX=Mw;~Qo@S0sc8Eqe>cr`cn-)p?C^Km_-SCOd#%9E3`^a zBU*LRiLQTOgI)WSl`pC@9Neo`zobvwe3zHI3`NxOJdfvw6&TCfnqe>_TohRo$A42x zMhKqiBeQv=mT{TG8|VoVvqzO*v43QMktV2XP1QQz&VP{QP%wFJy~qNgYgSAZyf@Vz zownD!V!>8!xbPBZs$qRgdRsmWSwD_&nE`hh5YHB?jZ_0&j_VU85v?G@_;4<8c^FO+ z4*U5v-Ya>qHPBo`4iZ_>u2h8-RDUFgG^i+L#zJZxQLf;}3>?jYqVY=zGW2Pkv4O1m zZ;|U#r9~8PSh=6pZPCm+7xe+oG3t?rt8vx``#kg2TI>IzFeW>2D!;ZGUAH?R~P^ zr8&V-CX6(fhiBs%qTG#Tz2t7jc+TC5n8zE+<60jI5x@pMUT;LzS(+Ssi-NS8P+-u_p#TV=69pcgS=L3>dLZO;?#xTf zjA?UShZG)9&^jJ&YUJ=_$~P25h_Q9Z8z;;f`t8rPx;#uX=r?r0`apv$RU~;(Ra|S; zT?pV3)Gq5<)}~ZC7=OSggVBExkJ|uYAh=7!Y3qUpWmgEm(Waovzjqns1AKG-l`OUz z7!O4EcO}HKL64br247kSGT5pD1ny1~L2%v*v#eRnS%4tM-(&Qc8EwD1*BQPp(YN$n zdn+bG$J@VmVS0?Wqd#QK{PYPw5wRZc!;xhv%OxcBpNCG1wSSN1f>4|gp}(xn4OBDl z0F+K*hB2)4zxUNRcOcU!^n^VAOv-~a1l2XeF6#jCZ0!~4YWFc?{uJ3tot!jrp*0wJ zCaIpOM>v5!Y&TGA%PrGKg0D0i9vXvB;tRMr9s<1Rh9O0vcV&N_bHEOA}i1NH)ak+6)HJ&zWoB&^@OOK6eWt&wSy(C zwdUW(2bW97Bi6t2<=EA^h7)@^v4O4fA!}PNwcu1Q zsIilygQ1!6SDD80R;Ce>_`&(B%y4&D$=LAT`zvB>?PzTOT_gfW$NS6ezbB*JqMD2A zR*T`f3oZMKYT(!5oz3A6)&C#7(ywU2OZZ&2#c&#o3XH&VUX)cX8#Zm}vbk;j$ONeq z8>3u2J%5wDB0+8 zlQ>-5p?6O`MF;!f#p>CS!3(1P@^l*El$n>VM1Fd_bKXDx%?pGSW+WKN$C?&b(@Sb< zpi;W_LcEwzpwF~Ri|gWEzt7ky+_Yd&WS!yO*MD+Sn4UQXUVOAmX6{nP6h*j5RoN?D zz=6ri4GNR`s00~>D?2u?=9W5afiL{Bd#rHK3^{RiNk7?Hzc0pfoF8O4Mm~5c9d5le zX_%mg`{~=JX>iuDXPTg=7SOd=HP+JJKTD$lcDg-iI8~a!UJP|-z_x;`qDyDFCk(&E zj(^wv^t}e`D$Askp(?MFC5w$N$MM-GMO`&C$hcLL zPTc{I$}%lvW$2z|fv@l{7L5*j3|GBawtwd>&G_P@zM3lb`i$q*doJ8$=Cy4S{peL7 z$uri9PfTpmfhf}(VH_ka>V}I)fgwPpQDuxkTelNNC>JUxCZf8qi<|C-N%mF$-3{Z~ zRzr!ymwB#12FK%%f{XL)cW_AS>xnJ_nc}KVU$?xD0SNx&pvZ$H)6E_=2bBFI% z0B{7DuZo7Lwf;AAG=QC%3&;j!0o)Z1Vg7OWZ_fHF)byDh_K%NOu{u%u5$?Wj+16U3 z+(VVnU&`^saup<5)yvT6GhFJbNPmp|g7d_jY>Cd`)7&yUQw(&y>RftALWluC#;XRn6dMDSrf^I?GGW7JkiNlG#o%X->03n z+2OcB2kU*y!%u2Ctm%BD+*@twv50`sIXXdQ>hqw80u^c0}4I{ z+=<@GzFI%wIbwJ{;>PKM^85Mq$#GbiB*V3K##gnXlx>u4T!<4b!Y_mL zwO>Ab4i-cmLnUjJY=0vu%A;oZjCuY_j_w4YNpg)E!`dRW?~$J5^d%{wEm4hWyHR|i zadqm>2LOJ03)sV3z<#g)Cd6modtyoCEAsSkm|A(^`CrPbhW)TsB9h+={KKI`t4b*u z%NVt=6mYUW6MZ%k+V-f0;g9ruxxlCl`FxPOh4wb3{Gfta5c+ObWcwP}%?@B;W&K`K?rzA%b{E+F-}JJ-qB3tERe_}P zvCmx$Nm*E;ND=K$(pC1HGyBqrB*;F;B_qKUn_ua}S5VO`i`(S*LT9-(y4^xM_dB^ zP6+<+thYwr0nyncV)nsn!<{D~%gA&^cEDZP= zy?RQ}`$j?vfJXrMuW0@X<)D8?aH_z)%GjG;xed+6Q`VrikW`un#ov++SUM6-1dRQ#LYMI%_<4CRr5;7`5$->Q6pJE8>i zqr4#qxpKrM3KVO8Wui6lz*Xf1};U1tBB$x3N8C77{Zrwyeq!I zOz?uMwi}udmFa*ndGMO$fZPK1VpML>B^;S?QL`$(3nj;ZD)AWcM37n^`kJK`l;xS6 z4eBV+L<1~-kQMxVc3+$vSw-hI)LiRzf`%217Ivj>ey6A)a~d_J>a<3iOs#I5-8rVE zM?VXeE6s6B~P@ANqTUJbL&@^wFKPDr^44-0>Dc-!tye zN$<~ziHQ6n{*&ca|N001=>L-U{09zcaDNF8CZ~Qs%)l$B)flYNmj)@P{EF~U141C) zNlS3#yab>SANhtOVUrLRomMZeT*7Ei!S!U=!?DP)N@49zq)({jU*Ck_TMJk*F~O>9 z=4-;Uq%3#xg8z}ao(!?};)C04Sra=Kd>2Vz-9 zSw<1YTP=<8+Zs~+^^%|VllgAC`Jv&>*ODi{IhOx7-r-lAW3|aE7VxBJ@);d`llZ_Q zRpR{o#U&ZdsguqA2Ew{VRbci>JGi-jSUzi|y!?%!QO#t6$Z3 zL&0^u5<3;rwhk5Z;Nzi;aDVJr8ynbYeWQ9e@6_S^DV}Yc+G}X_sx_w@pG+F|pn8d+yDiBB)M}ADR{C)G20Q#>$CghT* zgNtcD6f#x_0t;n-z4;ZtS$Mu?WoC(Gi3ADVTX+oZtr)G19UW|}9Df|X6=%C&zTZ~w zhsFDC?Y9L8EPFQ0xjBC^9fcrc(+c}ja{nUH8mnB*caWC7&+Ti z_572e{4?vF-L2&p8$#%>#opn(N=Z;a+9jw9`4TLT@7J-i$n4Xa1uxOp3EWRHW%hZ5 zP2z@Nu63&ylz~-KZhy-!c;gt;_a7N96+z#4+7Vf@kXsN!eu6Y>vp{>xsH6Y3jC#bY zS%Tpv3Q?s^=HRfj2fD%Xixxh~Q#bLDSPKi5W_>4Wk!enew zJlA&CZ0ZYyWT?x0_12Z?6QQjpu4d*b1F*x27kt(nX@AR1%Og3I;XQRKA|Xp;{Q1M= zTow{9K}NHyiYRUn1quloMikoN^QKEU_f_P{A&tf3SRXM&miCO2;0`}~1F3HZ?I5uh zhKtq=@o+#cEnl*vk@C|$xp)Tf4gY~$z^ko=_sC*$RDxsdus zF7DVae}5Kl7IzTm59H#ONZ1(J7=9}s|83F!ux7uc68y;-sb>$iCb(){%Lwdoq(*{Q zMf`RI`ioCrRPU>Jk|-Kqj3F*ro$yD*Im9r6b;&{7*|bG*>chMs^o46uT^ip%b8qz{I~e_?5Ryh$EJS${Xl$+h6$1d)NvP z2;cy6u`)CNR__c5n#00`K(`|wtt+Bak9ip#T?3R4c&~q>e1vo5{dIeJe=Hw-Ur1GfV*?!K%;~Bhbg*~&L z57v2}A((xE| z+2>Mj=!e63fR-Y~6e9Ck-eAaKBY({T^xt$m3@`{NLI@BM5TU=VHI|D) zbO?D#`p?L5f$i=FxUUcN=Y0*`yTvgB;8x1dqROHOBKrZy4qw;mcejp`gow~r$o?%| z(-03v@M)fo5~9nbdl?ZTyaE>ZK8|PKO1Xtv9EM&@Wx#BRTnkqi_wl-4sDCynN7YO6 zJWQlmHVtV}9XZuYrvW0#0h1G6LCV-Y#RTAPx__rCC_&);r;0u#7Ew`!@CmFB>Kf1I3w;|3BzrOmnp>U~3Gvs(@6q6mJ{txn0N;OtXo{~o0af~@ z@AL+#+=N0BA`xCYw|@bv6Xwy7_&J8wQJ)TI%9GC_?}A>m+W>{F6#32G9^CgOz23DkIuNc(!qAIB!zooM)H2%N}p$?vhurfyCtNzFch|w4Y-c zetV{u>nN!NanqgrvyBEAb*lc5lj*mt7^N+C!du) zTjk!kMMi2&_27oa|1kgyGuL2ULVUi_mT~X={7F`jKtrVbUj(r7zXD*u-XrNHHEusS~sL4{Dvvn zFwAwxR#~|B65xcx>vIqDG((0c0ATeIdVZModiaarnSacQi8z#U!4Wf@Atk^vb!awR zqG73i%-};#)`=;kD~%zZ4aE3)k8JMq3Xa#2Yt%9X8T1`>W=(rwAAxtW`oyiQK5`4< z#(MzcOb=yHKHY4TCQ*C;&XPy^FS7c7E)|~re>oMN?Kc|2`Mc4H{g$Ax|1aeI|L=e7 zFXa$&7=IWVceV^YgyIbu9=Tc1CSEc8M!Llt8n6phm|UYkOsdnv(mr6QHt8m9ae;7E z)Oo#1ZAGn2)lHNawCe7@$c%{rrv9KFV&3HZ`C_L544*Rkj?^1<qeCKXrVc9@FkWi{nGSUW1deF#=RXw_w0~BMWQhcI#lj|OSC>u|-es(d804HL>VB4>b$_PK z48xMAT!SNErgbDN9muKduRF9!e^i1x{$kJ2;*PeF-_kbXTiOP5Pup1K##D*N_I9OC zmFU~3*cMypU!+_|GU{yzXyl?JUi+;=>l^6BhvMM=v#hS&NA!Z%13=Ptv7El zJzL!Y7DWsJk>1+u&`ML%OiG>O8h@Szx5LHz9STDNEB^Y@KQd^at(!riYq{k2?St!1p zhh@)mne+&j7ailbrZK1-%*v6{~4ihLw{|Psfww&KG-rHMYI-cQQ3?e9sn2Eo2Gb0p!$}O+c`^i zSKfKk$Q~iD=&&w)d^|Xyk$FuBwasO!N-urq!Pt6NN;V!qSIC>Bwu=OsN`ZJbszW=AkIifu}$5Ulub1x>@We& zf1(NK0Lr?zFK)MJ3HE}`-ZClGWbrM&o9-kYgc+d(*m}C&GJ6u}!T?+BLW^nd6Bl)! zsPyq@%=ji@R)3Usu8RsPey{N`r|!z~#F3o&)Yascr%PMDr8PF!6G+pGtgjI9TsBr< zlK0gv(*kPQ%R3fIhEGtSZ0*?oEfCU=$qOZ6h95++>uXA1Sx%+&v&8-kgc`Qq^mDbW zk4}RWiYQxT>WUBT5NGv!v$k0Y-Cd9&*fy!6tfE_Euz$$K`K9Fs=&;7%6$!41Omo1* zfR6@_FTo4l(v>WxrVY8zeI`aymhzWcMpf*R*|=Ncw#!O|E2C`|uSp)V8M1^*ji<`J z>D`cn1^G1HyPsl^;!=}9suPy=@}$l+`3)y-O22)E>wB4!a@;HjG=}RAp$6ZWX)Fz3 z?Zs<5AAdB-6nh5^b)|MgMV7t7{$VaK+snlYVH29-RE0f&GAV}c)JuZ))%b(+Q@T&v zZ(PO4>ta3^AkyJsfb#ns2xlcg>pXe?P9{$*@+I14)x5@9mggoiDS^h8`dzY3JHQXJ z`4))z_id{lJs4$DZe)`AXXTnjB!6IRN-pLO4u4<8V??9ks zom>X4TE@vC!i3F7)Hh&;((YP@3r>e}N$=)=wpnjhuW|$-TF7;A4G~UwnDdb8Lf@mI zc7H7gy=F(B|AW=g`qib*9>MF3EH=&T*tZ8#u{VKmko@aY@XL=HXA?NCW44&tNQa2H z<){MFUtz{GPwOK}Jk%2|iOV=refii+Gdze3GbRs(9+ufhuPUyMwtof( zKHV!)>Ig;J`(jL-2{$%3rI50uF@kp;sYwEQ)j zYRoqEnPpQqS_Fp+sEF86x7IY|VGt*AU^N_q+S5zhA~E{gy(xn4nn&q_(0}%S63C8` zInucySkI-wJtUIWhWj@0I#BJWIP_mmcn0ycIxRnd7r+exr5oS?{2chlFo>n_88&Rc!|WA&3d*t+jT-9P>)6h z*yxpJj=(f>QmObe$pp6Wc2mzz6WATz$!8G@R@s6WVEb0;muRaZ6D$uczRY~1(#CVtJW}}lAJyUiCQg8iUcTqr+xQDll%QXWVTQtUnx!HGt$$t#=wH1NnvF+Wu ziCtz@hi2HubrNx(e-lmwNdo^zvXwETmQQ+MM~nE?>Vm}TSs7ZiI~oI)MX<2W#k##J zQNZf3rmbdJF5Lv43E&+)yQK2kA0{OgKhBbOeht;%SCM-NM~Q)|jl$Yo`}&9CQdfCH(=( z0ml3e2J|LJSvBNNVyIjL1HAt9eEyKe6Wwec z1$>A%!7CrUH-XxU&txEST+Ki0+pR;%?x(;5lbmFt1h0o_6^wGXAsIXb96LvQuS;_VMC-u%Gg*}ugJw+P@q{iH2h`DYpz`M22h z58dI9!;dvoe}75h0A|)7N&Ip6pSsOIwm#oD^b8|~N46@GqeB+Dl$|7-tw1==%s3V$b<7ad3pcFq~}GkjZ^?CR8Z zpXc^3Xok*!Q99JeI_scy+ZOAR3>6zQU)NZ#kvqkNujnI!WUwIQPR26J zFSSQB`@8D$n9pa>94svX^IJ)8$^{P9R(uo|=owTGpPQg@FFb6|--IrP&szppXi)AW z)?zYGNPjRunID*UVRH-MlIT$g`AoW<=2YZ+uZ){#Yew@9g!HtA{KJbmFy+lo=srsT zdo=Y%Ix4d^I)-wOM%@rgNbE@(c~sVu553jSa`UjTFzztng40dAi{ZhSInvck!!sCj zBMqa*X&-L2@7ogis9tV+7U-*0kg?vvSxp_;+xZGyr( zN0L(t9Y2B5Cqy*ie0E&~It<3)YJ5cKR~Ig!5*Y(@6RGLD6r9<$W@_aTam2G|bgoq@ ze?;nCUaXQ}{khCzPLDs)i6<|n9ygqP&L|tovU5#oy=hQN$~(%*O*a{Tx&BlPAHG>e z$$v6&Wi=Z++evP$+aUHp6f13i>&0m2|B%8p$lPA%8p(S$a-O|$HrC$Z+CDz~iNb$5 z;a3z6@}Hq_istn=_mlEBOBh?5Gn1c`D*et|Mzq1*WHVkGSMcnpc;47KbAZm$=;Hu2 zUG3_Q43El(_Q^3?tx9-eGMGKD=QZ@9S%3HQ-y#l*^jJ9rNz!Y?KX0T7Mn?C4%lL}p zHDi7gw<3QR=_?ftv)F^4&K3@!^#hEe#)Uq2V809|(Pjl=7Ca_bD3t>YkwlIlTsDfN%R$fpSGf>%k#9v_ZtMgHpaLIT=^HTPH$-gMO4mp> zsg&Iau~!zGOPbjkSSNvEE;>dJqkj^wG&Gt#Z(f^UJue6uNa1v8o+)Gj!!bJjQjRJ1 z?J^C3SZsV!kb_JscULQ;H}2)Q$Sok@X;gFxbYGyou7nxgQl9fP#GHA$B%c!(Aqp|@ zc!z1af$j@dX&B4qEZ#S-R=h}Rl*{bMWS)JVKtHN9>;z8V9n3UOgddyHJ%42oZ`=@C z;?+I9}se3XTC+?KTb=pU;z@apgLkij!&#RF125 zUh}!GCJa1k!!i%_E%Cr?Oy9L(;fhM{sT_*t5CCT&{guFrKQlT1Z?$}&QE-IKOw1hg zEC?SNRL|kj5&oN_js6D*n}4vP((k!VYTs(S005lKfUn7uoL{pjABT)A0LI6zvH$BE z{F83GT(O%V2kEC;JFIVX5$$`>_n!6zU{K>=w#%bWpc4}{Y-NYpQJi|6pGf>wsSJDt zpV*Mm;mvy@1fvP+S*ED)%}b|BWVgEbHz7Gi%^&UQU11@Z{IWemQGWp=NSUkD98E6J zjJI-a-bTv}@&9Rq?k2k3T_m_R@}^`Q zgJ}KFDzOw)<+{<@UeB*eM!&r8M$-)l`D;G*!;hPTO`C!Nq*;W2NNLQ@)#2C2FWCi^ z8BeISKKopFf)9?bEmShofnXHTH`M_f&odEwaR^1ShERATW`B41#v^aueDiMWc132f z0f?*4M!e#5b06g79Y_FOK%&1G)=(UmwpceNz8aPeK8X4;>`7Hw(ZchR}wjUm9=F$MJ=3%4lRSw8&$00960001EW-$X8! ztYFfhR&rMsU*AI}2 zeSnnfH%K7?1++%*}oq#-S*)q`D6 zu!yN)Yx}3Fx~0s}!Uv!_xZb2On}snd$i9~=H0Sf>dh{WP5icy7Ye3p2*?Pp-N!E_l z*%g>Ekk{VnO1FPA2qLXtV35Iv#k|2ua!XQyt2mr!6;)k#5qDz=p&<2Nsyf(Jlev>w zR&N(9D~0UAgg=^4JhT{3Lk32PSn$@rj4u)nmavu4RZgEL!E#Y~0?TgzqglDu?um92 z$E+sE;n2Mr6}C)XN>CTZ-SG7Ji%Qab%jmFfyFD%D#D;&NC2hB(xDy<{!2zPqomWSXeVV4$b zatB=+BU^R=A%97Cdboo9n?D@zxZ7t^XHo`||Ikgu;QR7@3rtgxVla4IJf^=3Ln}}k z3l_#2TK<3F1+=WftY3F24;;PU#s4l?c$ZY`XdAVSupyZT=*}`@K6+vLTz@LeMr(T$ zOsvS%ec(js%)+b3)g4bhxOoDak3wsSPG06cilNyC{rdau6sV;9mH3oV>}judo>7Gw zB(zQhj1kb5R5G;YY{!rrh!f25SCa7Vz72Wj7dn4;9|iK${2e%(7Vrbm=csT3Nq`1g zLOiX!gYg+qYe7j1nXEyRMQH);D!m0lAT~IA0yE9vpf*o(U*F$~F+;B|8xSWzhX3WK`6t}>4sY6TefiL` zNk_+&zr5+gKQKZjUT;g?H5tcZk`0YpsbhbZFHqIpP#ra%m|GaVq3~V>0pz@a?^$;{q z+a1;pX*($1b}kM%4JSsNh?+i9k>r9>OCVHru!d%oeR=3aK|x{}BfTIWLAiVv&5(a3 zED6;~`YkP7MOx3q5o`$bTvPjT7BCdeEZg_$?#lDphO6vB02Q!Jq*^L(9mZPm{+(H5_(59OaxjF*!-6eVF!CIYl0)BcZvfEy)3*69 zqh6}`y39bYIz)j#B$8u8f*ctb(sY0QqyzkN!Y|N_iw%*mFrAvg6Ko6tsY*0YBzi?{ zQrv;bE5#_;7_;+~HnPTfbbejY#dd0wC=Pf|IVhRb z@FLWBcqx^Aq>!b`EQO>$-IGq~OGwKs^Wjs1?u zG0LZ6W;3nSAQ}k59|#%e&zo(?wW4*?TO~1|7;1;`pPCLlq3E2@yxb#dGDS}1N$p6# z@zzW+7&#CvCZjOPWIqG)^-zDBF1p&KN6B&8A&_`PbIk*qD<06C@Ey&N+$$>4LeHwQ zUYZX)kLmkMIE&u@7C(P9>-+tRA2S614G8}i9^s#GyT-kWWVck9`#wjtSS~vX#wmIr zJMR#A^tA>s6yY%Ns{$E7gW~1WZZja&w6zH0#UKa)ARnmFQ5?UH~w+h=Q2#(m&5 zjuhxoZt3{(9)}HLIgoQx6|S(H5Jp}SS_G{aS0(L-l+zAguFgr%15B+nNth%%WZvwk zTdv!5I3af20AB>m778P(F%`YUoP3wvF1kixexA&HB@U?@_CcqX%fBP5SVGE!Z%kIl z!cjX@l07DUfq2Vu6cv9v(tPM{qz2Uxqfdh>ovGvW@cKQB(1(%+L8dv_4@Xx%lPwWy z{B<}x;*{AobBth%m(}Q}QqVF_3O`ElYS($?M0ZtC{Eu)8x+KS{@=mJ7_&8?`2d68c zn)jXZPq_W%gkRuxD3!ff3`x^N?#E^7o}M8#1(I`LiVHMDHmPz zrP3Yv5vx*R3=V$=@wrtIKI$em#W5~9h)epNZdGv$JtE9Wurg;JS}yMw1^X3fsJk;E zolP7TYcUp~_l8YQWU7ESIHWnN3%kpr?sc`Kkl=s=x;B^&kq)`0qO<)(VC1s?;NCaAH7bk?Bz*%mpke1SYJxcGeZ6Co$1nl9{> z_goQLJd++zT@|H&Xy`%)G^`(nYgBY;=(dZZCZj*~1wtYdo8$1(B2QuVk@***Qw6={ z48m!GwW@#FJ50j~WDT9qYM898q9a*spI>-=sN~@5#OVrWo}FR9yrV>@De#->vJ!ry z$NC!m?s;mMqviBTwj>nGRz|R6NC|!U0tL8RTF}gi*;VWxn^HplvsuMmI z7aTYA6!OQTkKbp#-iOq|bdvoa;a6loyW%`{$d{2$KCGaCDDBL$AK@qb{&K=E@S6?a zy1e%Bc-_w4)iAE(($08>X+!9xetFRT>E!H^N=?S_C@N(WT!OA9vXt7!dtN_r5w!$X zGwgpt(LI%3mlEU|6CeL&FDRb4twwTM!ZzL-%8*N)d*ZbOe}Y}3qo9@LP80DOt^H~! z>V5K$&g~xjG-nOutd=?^6@E{hgodRMee8y4WocyP@Xvpx z5SbX69y{$aF*7qiBJ;=L|NaL5WbscXYdjdvep%>tIjZqIbl_beGNjT$>go2gi{LZ& z-MnQfQMOzhU|cVJ)zFBpo_9p+bEN!YG+#34v*NaCabLabzyS_YOd2it1Wn}VbYIla zYab{3>=IF&{krhExR$xk6P44@&k%p(mo~)GwGDzzOpR5?Rb8q4Hn)n4KE*Qz&KEO^ zR#~Oy{-kzFfxQ#egShZ6K2voz`jEi%GP3ZKNEJmDo5>vu!$Fqh8w0A@UtWJ6UgcK| zw~+EoQG|rC!1!X)|F*1Z#Je_O!4Vi8ZP$D{chy;RG;s0@;LVN`b0>{ zJnAUgeaRW!32_MOv`ZhoQi!zp#RAjj%LR%+?w03`#Kc4YOkM8SQ z1$FR{$avSp&KRC}l4|&Km)ZgMP6?u4)jAv=J{qRd&E>9&t>?LB(vK=7L*xD*)j9-C zIVMKAkEdjNzmWch=?f!QsJzjy%=H4^64&GdquPK)*+2(JwNK?We$39ft_~PjGP??O zO)Jn2`o*S$&Y4olk+gp#^pobuq#Ykj--nLRq-N9-z%Frks&d>!tjTJ_W|VMG+`mj1 z%3U{syx)9-UMB|ZvHKbN9%s|stize8@NEG}QDBLq$__m21(M=sBbx|QO7F7(tu@k0{B^O{iK?P;%B~24Rl1z8(BoU^H8DrG}xhNqt(lSW47HMhddW8q&ttc2!x6g0~2%z2J*BkNoNX~iIxw2B_ z(7Pt;66c(IP{`2j)jII(BIGh7AR@J*08eegzwf9+&R!KEc{2=YrPmNr;E{Hj{%>9YT%P7(v0 zvc?w2JUzeNu2{fO3l&NfK8JGCS#>uci9|;0R4fY_b^(7m8Y)^T29!s1b8^6Fr9sl; zK=geL3}0FLxC0RUew%#Rnvi}|#$^-y>6I!VLnD(0~@L$%a{aUt(otcyIYedbD z!~f!w_yQCDRbqmBl$apDm5yfWzuUFV2MZ{JMKW9-l|JeR#SG%lD*3{bpK;ukHTPl0 zibgT|3u!K&|8e?`&cP;y@F&WAez&C+>f`h<e2Z z_coP_53!&72*SwNH3bWk_uf{X2SBgW&g*1ftp#DxMWT{S6F?q|TL4nC!4Fpf>EheS z#=C!)`ku9>)ok$7aN5qTVFZRZvz4}lR?+}|P;DCan@KAaRub*y6dm59sY}PVdwea< zaJWJyFTiH5rsk}}PK7gpOF)1@b9{OLK5u_uuMVAtccY60f#({^r3=%DZ{drAw*fw} z-y|ZRP=HU6_b=yUS>&4k_mR1T|_^R}>$l+PEX(ZewO`m2A9 z`siHqidz)}Ef-aD2d@YPVN8$Dzc{q3Xt}z4`ivK_P8Z+)$u|1wa0Edz5OfgLt}?M2 z5Xs&;@>41eQOLz`L31OB!cC%L!Ptc4b%OLXU8M=!ij0OTbHko`3ext&?0Fs@2=|-^_wh#+(9h#yXyWUZF{&wr?%t^m&Dep zCnniwaEqC0y~1wLeEO6+&4N!9)y9xKIUIVf?(58=qx>EA5^yTMvcVgGPumY{FwtE( z5%WO`$+kvsh&StQvC#a(I>0C5I~xQ5e0;rsIVZ~`*XX~ps{a-dFiC%&RS)vT+#vU6 zJqeF=%4CK>)r`i+yoAi>g~s|EED7e|@Pc;VWuG<~tj zs0NxnJgPq*Ct_dMAu>Q(H|YyfM&e=?(O54%Iwm#9OtOO;T$~mrXoWsNxEYc@!aZkm z>6t`Mh^jHnPq=TgYo@&_3#0>-irS?Zni^>_9f% z+)041<*d~>0x}qLf{v`7`tio+n38Qg?$({L^A~h1?rVQydbp8idcwojnG!{DmC|$D zMJ%p%9EF0zJaI@K`~CUh4S_?0%-plQ>|tMA`2uOT?WdttOAS-7_RkT(AVW(*F|Z8J z)yaq>SZJ#+O!1H{--qI(&UHuSuaN{yy27=Yuk0QiV6+I~m=u$J6!9av=^SvM)aScC z?V)>r`@w(cyB{HSvw1b*}}6sn6R zNs08t91($Zl1tj^7)1tR3T`l5WvHPbV=~}QqKH$Lr0x%hs}Q$P{)pU% z-BRZV6z)QA9o&6Gp$2L}$yy(cvZN2BLHHm+e9xZ)#``l5V4deMrp?2IfeN&Xmo$k|Ua||4|L89c|Uw##h5A@pZgVLBD zN$cL1G?4gr^-Z>1W{~^{wW~sX!JqgO3k#ZYS8Q#M)Kq=sTs2=fJcIWGP3(#+v^sTU zvZC;NYk#(Yxl{XU@1^hyFkM1h)u4a0v-Zqr65deK)j6X1u5YMhe)#$Sf;gmah=T@$ zl*lYr^M9|+^K-buuTob=gFd6%p{YvZ&8BQ;lLHQ3nJiDyO|Vp4a^#Jcpf{B;xU&wG zjw94c(cE|+y$FxdVRO8kuff6EJFiB%)w31upseA->!^9UlhLuj2x(iH7BPRtBFYrq zYeagPDd7%gAH`{n5pGx4CfVuE#DU%AdXTo1?0*2FtI(M}#P8u_gXMU~6dGunN z=q1FH8RS|bLK`7lpE;gnw)T7tICG0+f*7~YpO1u^Wn|KaVI$%eW<^r94}|0l%FngB ztB@B4xeMvjP}RX-HXKYFtTlhL)`LOD?98R5UKrP5mO|$%k+U#Q;Bo zzmX-&m}TmFt!`7gEcFN!?MKV!15kwiPSlqB;cb?X`=Kd-qR3NO>2D!yk44CSs|5vv zg8%yl_0-zZ@}<>po6n=o@~I%>SNt$P2FU?fm;fwaW9EJw{=aa?e}aEiP0gLxd&{aL zba&M}SWCxH2FVV?FH(o0$7fXTpY9K-S9W)sH4KT9ldWmF$j#)zlgJk)am{UelRfa$ z7Tqm+!%a*i_^xa#u_%h5VDsZUB*S5^l@qyVc8IeiZ8=;@6JpJ3LOl0~Od%3cUk6R- zv9(%KsHCeNzImf^%QSzMI~)0yWICeoY=*2fVZ(;wyq>EzjXQz-X--zF_;Wic5dP`_=3TT-g z3ImdbL<7B5ABVc)b>ATzm)Kk_4@r9-OkJ1Ews|R?=Iy#%&rW|il2Y1#gVkeD?jQSB zroDKQ=|X^p(RvCcgK9<_bL$hapAq#J2>t?MrUFHUEgQ00E;ZnF7&W>m`@OMREAQT$ z-+gIMvFzvrw|q|6jeFcM=dT80a4m*@B%23wDUo=}pN>-|`odroQgmN|-#N8Hy8LQV zb}TuO8c~o_p?iOEHU<9Z6>xbq{h+B3sgOlw4Hw_Y?wnXR+R*OjCkU}};-QO-2|5G2 z?8V&AjS}LR25K_+xb)R}#LM*IZS$Cl8G1t;p9-L$nDAyRks%J9aGlOx&x@kS0=EwdpKCqCb+l=z~8Zf{j8eMy`pTZZRKCqjR*3Fy>5okJNS6OxY?1r4_# z8g>x+sCdsD7KNY+jLtBYe>h-6jM{eFZUF=O05OOxfGJ&$o1i){oGCZ@xDsMMTCYR-BoEP zhltDi|^**sb)1evvnxj z=s1eZeTM`ri&TCWQJWl?@_toI+7}UgL$oDj;BXMfx}hw7A+uJ7Hq)o*Dk0SDdNH^8 ztf)C1W9uz{dMigXdw~d@8DVsk@E1oa+x4ysIYOC#7;7zEFQr6VWg^n)AO?P73a!arwTYsI z-W;(smEWJ^2lonN+CtHMai=4&M%-UpYbZO_>>t~(f<&1egDcmUwtvMWtp^6*Kba(FO8K; zNLUWHsph&g>MQ+b$H&)*zMSb6aBJx*Qe>xGKoV1LcVyaarjnX7Rz>Mg;3-> zsdG$slm^}$YWcN7^uBX?fnZ6>An9sR@Z|O2x_?Gla2Q?*dW42C#w_}InD@luRkdT+ z4F^gw?2?cfjnx^?zBk4Er+i_!40Yw_Fq3c!Vm;*W z^tN~XtL{Tye_YMNcO9}K^usR2@mMS1k6nu6oBR7eben&4f@6OUO2)wf(N%y_g&rgL z^p{Iv1>iwulu!u=oH6*6G2ur)>&OWt$Hu?&#Kq*&Ox4Ap=5p|326*TxAq{;jS=pM% z_Wbn18nXc!hVFKk?+CiL261=c?K6xkt=rtW`*d;j)Gg*M($|;#%^EbguB>mTOzujI z<-#l}b!m>Kb-RE1UbRNB#hiIv%_E_7r#d-ymN$Ty`?wZ~_^p9&HK}yQu}6v78W0~~ z7(Iy(m0XVMRfpcJT-VWlfm8zfIbdIS_X^DZboWj(G5nK##fw_ckq??6G*XVJ<~ju`T$vfm%lhg)JnM06POvuoW;i8bU0P9ftyf z`T-T=Ihv zrtUm6f(Nv}4C^g~F+05%W@3fX2a82VoJpq;{lb4uw0^aZr}5puQwi`X`|BR{H~fw5 zuiq*r#Y_hF;c)x{v>WT$ySNuW@%OJL{O9dD1wiBTa8o?SDHf zeB*y4=d0xklFy?{5S)K|B3mRk7abAzY?bdg?iLY<;}iFez-q0P z3O3=ewOYhSdXcE9-B7T<5wHKoV#GbJYCKE%C45)Nu-}FfWKTN zRK{uS-%ePcIGMt+8j_SYDrbSdlNQ2SxO(|qCFgUYxXV=qd=pZpdxQB$mhpOWeGY%@ zAlR#&Tl)9WUQc4E@uoaA1N@RIIUxCWwLh~y*%;8bQuQj3i@$8{PuYsh2JV?M?r_mN z^B2 z>!Zk6lyTvq-(k0!^9pY`lw2K(V|;&f8qOQN);W(WNGc*UZ}M5fDJ^1Cs}k`WU^%m= z>F3o)mRARJC+k&5%P~<()G%b7No5`9VM7VEz{R#PokSWdA<= zzyE;$WGU#-tBY4`R=v4CHG$#6UPkgZjIVvyI^sHZLG_xRR7rr8;}SbyK}~8XmqI9E zJi{-vYXbsQ11L`(-v-QKt@8s{$#fa_6HM^PTffph<5^4`)6h?<*on=bK05Nc&o0H8 zb4y}$PDZsEad5?t^D48+EW3ZGGE(EuJU0?oBTV!x(ecdKosvHAb13Swm^q}92%v^Q z{j9Y0e$MDgm;pQT^!P!S8=;_Z&c~rlj8$8sQ9NVDOGjX=eh*N!`gn1?d}Q*SURcMK zb>pEut$gys&0(E3lLBB0`0PQYo+{UPJX?GTs!-4cbCJ$mENyGHk*Vy!Kef@L zr2JRf^##WMrW^PIBRve@9zIZis0Y9RpDzHP4?n60eb_$T3Pu)Y--LdvUkUv`$ou*( zgnAFUgpHn^!^6Mq?O%Ud{!(jr_*fC@+1NZN2YUJzMuhecXASl23<({K>?|KHurhp9 zI}FXfwMTfk=s`K5B{cZyjk5W!L)g=Po&VEw{Z$2_2N3_DU!ea&zo6H*{9zvoleGN! zo~j7~>wuH9=s3aOeCTKy;8XtH!I=;6$?^W>oGc&zTpyqR>nMNo{YFmzM*F(Z52$r_ z=gF}JSRZmd?J%QeP2Ckp7fq}=UAv35dDqk`rEL=Z^>%R9%`o9dzlh3Z%G@8560}v1 zexkTJU{EZ!cLU{hu-ZaT-_N7(?ogqSqtS0}m&D~!))d4eZTBS<)tVIcbVWB^_K=ph zaaP4+#=iwgN`-$Nfd-fDYl+N#c`adC*)UnglmyBZ zI;=#-$>`&TLM-3>%p$8L{Tj?doZKO5!hU}kkiE6{oH*zz;S>Dr-f(O#dba}R9?@vk z$(Fy*W^+*><>^y(E#$OP{Mo`yX!8QE%pj_<(-7$o2R(mlTdw15B%u-xY@Z)}pllDM z{vghRVt=>L{@LdPaQk(6f7pLj-XHca<^5rio_;M2|6_Uo-wFi5VhRch{`B7d=6d`d zB*FM&^8t<@n-Bb7eYk%t3?`6vZne7S7=$Y=A{^QNtltkJt&{o=lOS>f6=zNnY|OV@^htRWauu}YG&QFxe(Q!0hli*$mUu#OP=K6n%~z>%*+HVcJg&jeOsTRTjp4*2{1tlq-zsGp^fr)(2HN z4#h^;QipnQWOXflPnbb>LySeps#F7VE2j^WnNora-`7u6#82|EueMK^>4PHz3C;JNLQQ zQ*OP&-lMYJJr_V~!};~CsN$wzjyqe2S_dEqx>FHyn6l(D!0TI;d50aX4oZR@w>QX* zeX{E3A-dpRx((nGXBQ`LJGz@30_*8KUJQRvoIP7)=v^`I>S6(<^?1Fg{uaIfI;j&p ztOS;h+jXGI;YH+}Zxxfp=R2-M`2oZ($!zLto32}n%RkXIlhwNmyPAA|q-p(rT-nOZ(a6sJYoCDcN<9mJ`QgL*dk>NyhX1)6{gYZ>qomL| zz;`;kP^F0doNBwOON4TB`rXH#9?5^KVh1elUL8N2~bKy+yX;z72gL8~g2tUAPOl6k$b;CRp7KBfcu=7xKx z{Ta^voWNU!%e!^1OLHgI@wte7ZA^28jDj5Q5W@Rl9TV6%oD+ zdZH_%h9tG0!;eVgmkew_8)xYcL}6TdY$E_A6k8_y3QiA7o^&R55+;96uR5su<9#yg zeSp&7N8zWXI6UYt#3Z0`1%e4;-@*Wa-=Fq_NaPk54JW-$Wl&r3SZ!~4vY-QIr^(3D zb)ZAH!fO~!y!Gy&k$&-c`D_+@hZ5_8J(FxW7(R3Lz_XJX&3 zOoro`^6GUi+n3`EO?`jck38q19EdbO<FkV^S5}fq z(_C?@r3jF+s}Gf+i{ID0bYae7u(ZKoiMccJj5CSX|jApZpUt`wb*mbKU5 zW&v>@E~j|hefZrtgFJmVs`}Cn)+%4`a4yw0y?-$Tz}ZpBo-%*&ImZeRoc?$eiQEJ!>W>T-$RWHZ6gI`?pbA780)-}Wr)TN}%gZDe3(hiI ziL%OEit9(G=NW%}?lWo?RKy95D{V3Km5v9hNMlD-!e_eyuDS*rTFfCBvy8=aQ)ig0 zc4I*_33*L&)!6iJtTNx@GzgPWa5P;#2%MQ&KZKZ1lP{TvXqo4rusiHYoYtAZg& zKS|~5k#x>@VOumt3rvv*-c(#ICPRIc@k&8Ho=3qxQbh_w;0+YzMwq#n;{3sgvhqpq z)owPeRQ`WEavjeKb*VXm{8L<7&vFp-36*gMRYlRA*hkWRAY5?M2hx@MJJJ>T_qgzT zSQsb@+Aq2AA1U`gben%7+=EY@$#%wkW$|xT z(1BJE31}GMr{k2~3o&Q1;NgonF3JvKvL6JXxne=yO!lQ7pBB+07R7Gys__<~oANNc zB*OHfbjn-R!)VCgy~0nLx3@Zn&L*-roGT89HLkdDec?OTObp42FeY@udToB_NkcZw zg|vTRSz%x8h*vgV?QDXb%ZV!wW1`}B%b^7~x_I0|^O|7EjY;7aucZzmtC~nVZz|r@ z>o_TWK?IU-djblMHEz*cMloT!4oaBN5FG;)L`o6PbZN5KPWqLlFZ_IJ+gR z>sOTC?{=eTZ}_mh57UI&-CMltI;l1j}=62nLZbwGSldu^WHr zR+I+M0n2j0sRkj~8S@x%zBcS#r0L0`Q|f~_2X;w6z%)xWLNx-@(yzcE1XPVp6 zox!`xG6HxOrbH8;cXY|0P7&dFOvV)#WKS znWok*$g$t_k_T-zWkAC3`I|Y#Tjmxv%#;8Gw8cZZQpZsL-)4% z=a2|4O*vTydJyM(K-RFAW4Fgf zgQW2hsEDpvJ*>j(Sby#OoVr{-n%UtQ9MR%a;W^pQpgYH?L;PocOXHnN>kT{5?9yR` z&p`oLS+xCaNCeB}0}?%F6voDZrKU0Wvs;R|2w|FLM$qK__$*yo@@{|AMX3;3Y>Sg2 zajml(bg#7BTRVi zZ&{?u`k1>KmbUOsZVx%q_Y{bAYDOar_48kEF|9`6Sm$m<&U~g43mvt;qkRlvQhSte zANYvp8{vY2u&Df*a)p2XJudvi_Wt|vpBry60a(Ar`hDlyABX>ud;F8aIya1I0JuHJ zAi-Ag)L7=R;MlNjaE|%Vnl&SJRrs_XbXS__31sk`8iO$>RU5c-SQ^I;c!Rm8ZSGdL zZhqyF_eKaMLOR*hN58YO{FuJP0U=CQ)U>k1XR-9MgC{{xJJEmRRq5o8Lg>6*Rm)Bf zbzV#WMKqyap`x+QzIm48X4fCnF`!H{GM>PfN^Us3JnDyKJ1DdDVbZM#Yeade|6oF! zLvd46Hk|HGj)d*Tcxxy!mlF%9As&P?1_u6)gZ>>Jc=ClbpEbf0yb4h7&Q(K%lt$(znt(36_RzG%6yYSODU2{E-oVp8+9YfnOZ+C zo5Cc0d<;we3tFFZ)Ct zc)Wg7{!$1pn;VCdSVCz&VHAD-0PNf9BoUy#Q6za{;+4F;dNeU8!#!O#%aqODDkamRb+hRD6=SgjC zXcJXnW-)5tt;^GBzucJ|Uyx<__!ivQJ8Ni*`O*3m5AX$xc>tKpcejGb3pu5~MBP{Z z-K#HR^|is#_e2TKuN9!cU{C;$rcI-7=f0};Pvw6U3C-*Y&8!T*ceOGye6-fu85tYd z8Ce+^{m`Z6_ZAL6fA=5Z@86IAvm@ebv3e!|6Eh3bBbdJrSs#c0fBY}~6L-|d*FP1y z?zN=07F&*!;#37c>~cX8G-dmEaF+}mmBm4MbBXxOm|hwmy9!&T_uZTL;L3q}#xQ2k z`38SKH$Fmt?T^(elm%BSO#-&;Jwu}K3Dl->0HAp>N50%rKTjr!$DkESC$M_zVhO96cqdlSLn5lFeQULiUwdIH@-EO%BRe#r zYMsjaj?6Z=ti3g=RN=K`v3$e^3M1BzjC6m-d})pOWGknV?VzixSM;I>p7*Rz%X9L# zNOxPW)-Js_jJ~k2!&7dReT-}{QR=~$StPP8z#B=ir#&J#;7$N{32U3Ndo{@`%9smjg7X8Z>IUfL()1ZXZRe z9TjbULiP$_#VrL?W1kFhp{3uo7MEsFkKcQF&3WuqeFTto`p>aUXgK?+9Hg>!k*^_L zn26)WmV|%Vzjr+hkSLJzJ}%Idh@;m5PvTJ!Tp6h~7z2LVoa(m_rOSP$UR!_bRz3$4 z&GGWc2hVuoQq_j7rsIaP!j>#R1LY3iOTCuok(sz2n2GIynehKk&$9jj!ipk{r~u?| z5QY&nH2k*l3JNij14zH25byV+BF+v*c2*A?vXYYA?_IEn0fgVci1pWbPX)gs^LsH+ z*2nO477pgGef@qM{`Vi~pD2H!;S!s9>l6r#j&nsu<0C<<1;R+(HA(&GQVJ4tLN1k* z$E%DsiPl#iL9y4P#x^bG)Ta`t;?%t>#a-v=<8K=WJJ>ns@cCi{%WPEoj%E3Gn9>~v z`=gb1dvy?;(~<>v;7j$2wNazegR;!!7N(PBD!^;r3JG2zku~WB&WUp~C%6*<0$9@UK0QWZ5 zZf=~zZXUHzq+5&HqoH=H`>=EbMYv&rX7MQy*|lDinYkJXQbPfAl*-HJpGK&rpEW?! z7}dWQvPP?Jbo+9&tEGQ9$)f(fc#_Woz-RUcjFz<}y0X-gUtV{UD;N5s)v$_CM-ISqnU0`onM>#)2~maD4#5`q{mqePxKoiU_23)>IJhGchp7byK2MmenG!GECsKg z?1DfDO+T4#K#s2*8#m*Nq3$-`+7~4g2==HoxIIvZ(}UKa^Ifn30Rn3JGlQuAuw3FI zjK~1QZ_5QGq-Wt^W@&9_#E9}W@#JB#pr5+v8`*tbh97@c=J$z&f1Lh_EdHPBt~;u! zJPU(>v?wMJIsp{HP!oz2=|~e8I!FsunluHG-h@am(m@afX%SSA5{fiInpA^IFVdB! zNQVu@9d^cDclPYeo_+uQUUJ?&@4WYY_q)G)-@R~NxDfxv!*D`if4QGH+YcxHOxr)> zg-ra)v#5V0G2I!~n<*vkZ=vI3Gx2`UpG_DR^<`^%-V(qIZr(u#>r_Zsut9GvMpuoLo0uu$L+rLPv~Xq%hC$uJ+<{&g$R?~ z(rkk57ej=4C*JB&Cz-E4HXn@!cpDX+^!O4qH~$u|5D_SDya)blQ?(&{@#d}0+Zrlg zTB148Vv{ZBG$j~Wl9&w%lcCj3BA=!mkRsO;UCjBat*PNlZV|3E+v$-;?8qFI=s`AG z;X{93kcG({V};2yJy?MJ)%GWwL|PY-o+2gqDoY3OJtTtfO;YjxowRlkz$o&gqq?;; zLB>#}D%<%$yy`WJ9jAw(BDB15g*lj}Uj)uKysfEu>^Y6tg|;&p^|_B0Xm=oVV}3xv}n>9g9KG z5&neChu41>SiCq!k+Q#vYq%s#{NT-}5d4AcHs;0p+aux4eWba$nJ(Dv=Z&42>}*WU zxS_`?8}`*VTv%9`>6n4PCz-L%`w)Lk?8kroXTvHl>|2H&wlKybnIA5=59!05SwZZQ zAC3jM{{QQ3{j`;vic%g3Su~f)LaipXj;~AH!!&;)XmK#< z>fPIE+HXEK_`I{VKm}1C;|&sd)f~l|D=YyM+tuZYb*>?bG&{Aq)ghTyJWUU(ZqS&N zbIo$LM7vsg#*II9>$|3DB-(ess1u5}!IPy{^j4vRfLA+or^rJ2^v5K^TLZo$Xd-Qs zAQ*JRQz6R+IUyhcT%A*NAi=hVW81ckiLHrk+jcTR2b0Ofwr$(ColNXZY~#$mYu$%) z`=Ppb)l=JASZt|t>UFC8LpOXcI; zdR$7;T@V(t#XGh-eoSdelw>qkPb)n#xyIO}-lsDPt0CW6J(|zdakNuOiB;x_N_3Z-{QceU)rs>luRp)g(tp|f6gk{#ldw(aRAR^= zB}yT$gjbPyGt&a9_=JEIMxT|uNs|TIE#5!Ho`zqhjWT z{7e4dZ=2&gzv~n&A=g#Sq|l*1^2x)iR0uJD_wr_OOb{6S##qtrI{9A12i9wQ`j!aV zrvk;8%=Xw3Tk@KzHi^L{W{Q=M=^%{l{#9<=10DNnd%S&1hzj>le?4x>kp27#aA^=K zNNWy%!&`TVY($ad6*)eANIr8WNj;sHcv-5(iB~T_8Yy;9jHlDhE1pZJmUHh-*rHJg zJy*|FJD}18?I<%y#;kBzkxTj&h>rfb>tgf%gN7k=-oKlD>y@0k> z=|wmUXWDnKpe_f{@h=WM1zDa4xdk>h2%=XCS4q~x{_)f?CS?!4Vi#(7lYVYDT)>28 z*G9V;99ce?xH}l9WC|SiJd@^LEYT|&KNufYG;cZPq&c$=m7B7{o1ZCSOjC|OYQzCg z{&l9$mtDP9Z6{+cv{zu2cF%Gp&xJk+p)V^WP&BqD8fpZ9SmSjbWp)>M!Rq1IL@mqn z=cW-WL&TEhA-Ts`$p@7bSv?hef=BFvTBw_`^_)p;<}tA-ng%kbD$h=8zh5*uLt}0Q z^iquo=fT#o4sws@#jDvV<-1&J=#I-LFNG_BE8H_sC4v`!+{ zYd$coHK&FqfAhd9PGc;%q!sCvrDv&{@|w z<}LtKrL9#*)y@gb^(`QARWLYgOTEzc(_S z{EU($d*3In*Y>Dkk73bkC>qdjI|DYVVJYc(b|q4jwti#nR-S_A9Y1uAbSRKTp@uh8 z_Ww5eR8)5W$uAV{*x-_3X6ppKq?0|=v!4X2aQMKl>JY4U2BNmOhd8ksaEi-GRVG6p zqj)&ckd9M}zqM0O*|Qhm8hYmss5NKn7ruSpNBw5gVxzFpsA{&+m47%lTyjXmhfRyMiY&1Zl^L4Sbp!ZXdljVzin%g~7X(gOU#nuOK z(Ylg=TNx!mjDItHI^}-9yfR{%>z3;X^UKuZLJq|u*v5R{4FN!Q&48(n`{l6FRK)_# zapr{l_ng|Y$EBo&iB?Q-mF8n^2|~HQYKgfO$S^osXXBPvJE>#IN2o*jch8BXs;4Vg zP+x2;ZoxUt3KfP5CXFeC<~8mf>Vv>JVuC5;w}VZkNzs~J@|#d7l?w6%EH=Fc9AmYa zg1GwHY8@fGA8R_**Jca- z7GN{4cTDv8NqO9XojzhIBgxe)>O?N6sg(7DCbTl*sx(ihXT&TSaA#7ls}uvD?FBca z^G7cTv3A_gA6UVAI-gFy)Csy>uvR;rW~~>^F^#c>kXDSF0E5Su7!+Inj9w+0LNqsQ*BkKYS+@!v zaX_^wM2Ed4Y_LrElrhNi$r%p3RKBea2j~~EN>*$z6$-eEHM+Y{n_&VJKV}&79A}3} zAM33>2W{K(bxY#dzvbch@I~UAzZa}opyj<_V!5bWR%zXmptjS&0Ma-j+^-(1cc9;k zaWLwN#oR(ma^e3-3m#Rr^A!2)-igv`Ol)NNxDHo*kcEpPD`W`O+Ui{QRaD49ctZQ8{wx zh`J6OJ9~Ban(RGu5(?6}^&5_O$%sppc%>7yH|Q+N=jkQ&7`9?rjjQEbRO+-y_^E=i z#xwU|&AS>?^NJhh#OulLk1)#;e(0H?eM$v86F_ZJD%i>6|#^kN$X+wsR*ih3z1 zo#2ElX4`=O1>WBa^y+a0>vje`y4Mu-(5A)C$ZD1lq&g#nsx;!4?FPi;07Y z-3CP5#M1iTs$oiBDd;y)uoSd1P_}Qx|7QO0LHPFp{XaonA1ulZEE+5(EIx>mEI0(l zzd0C?Wl~oa(=!K#rIfZRPy)aaoD?DC=^gGM%|(5g-;IQIYRS%dXfh#W>WvaMs(rAVyUK{PibpHPF83 zODigr(WI?87%52?iR-g@`85#{8168W3jRaC^~tSt7Kceah4nE(lGQdgtMV++PCRn`j`D5o{oY!IURi4mf2}p-cFW}o&Oq|O-4IEI*)!xlj)Pd*gzD? z%gJesqufBCktvpD0t^^8`;_DS#&*2S#wz(N`l*!RNlp^)(l@xce>(@gU=?X{3!NzI z^!i-#SrDhuD4Y|#!5q+(X*8fNa?|2d8Lq%eh9gXs;ZY^{mjg3XCsSyO?gr6VDR~48 zz!qh!R4Y|neA`p`!kFd8WsZk$A;v__t7!xbV%cyBPaUU>fPTS#3ML3;>m4k{`xaz1 z7#d74c^UF~`80@Px~Q=^64^AfKdwmHV&jEuqHj0Hl?63rpE-d4DY}VgIOTS^< z7oqNPizAvB^N@<+K`(w2&3<2tQKFh6nMWrPjlx6Rqp)&1p|B5nJ04xS z3v3dUCHbopSw8d~sy;X9Tp%FaxQihUk41{$1(`3MYf~8?cJez^*uLBT9i?iQmv#Q)#tAdq^6Kh)9xpedX=F%D>sQ)^Lq1iw9)m zteqIZIOD@+j+i~EcP?Qz2m?9FPA;<}Bb2+`cy>l+jh2z%}XY8xaBk6!B>I0O;MNmV-nnT!s>o7xMCEtf?yI|LEk z+G`UejEv5`3w8zz<|oI3h`ky)QVAutfNA=Zj9-Ku1O4BNe>!|u1T`BUduSsUCML4N z#7yaD$&frNBMlyMc!!D70m96v+)(5wEvWvx&i*jSb{on40xS?R%LcQ! zQ}-P&kQe(yW_&%(yAUSKO7I5`%z~4H^v_4H->Q&!(!da^0JBu9^s{Flp{$ zt&bWz?wt~}#K@nfS=WW1KKa{lFRgvKi6X2lg4i9BfXM3e&z>mx-uvgy>x#}GZ?r{K z1T#u{kM9OTh{w)WXE|i)kt9Hx^~?Z)%ldZ>Q8tEf-&wuM&gA=}sQ9$MVL>fib~Rr% zUO!Gmn|Vke%y@>~;#CL4sa-!$e zOwh!2n6O5PArkV6wx)-fk?pxUocguPu77XVo5w2VlHk^&v}ON1rJZOaW97Cj7Ll3u zSh&bMuf2RE|aX=wO8I}>7L?(olpV%uKtheSH`14{^0rR%)Tusn$a2hRQ)kK+0 zcToN}Hcy=?dcD_QX*(ytB5Fn^rM8bWB`Y-&&IvjOIPOKKD7K_@c24>GHExdkM_(Hu zdLwM(+wZ%YZAiWI-WzXRh!?8D>)xC|V}BZmwg!!Je%(#d^R9j?pKcjh_lh(4ZT}P% z+0W90L|&fWI+-6n(zors?y=IR%lpaJX{bZ*nCovx8rcV#(d(K3o=F{5QR(CO$$apG zja2Sk#$cSfSOGc0-3cUYN`yZ^Qh=EmT+O-B@^^0cwKqBMhclC49 zZjqz}_@xZi#snvD2{v^dqpaBhS42)OUgF3zR>qm;3D~mv@yw#&&Nh*hRfuQSAE{VA z70*OuhSvM9;U;Ye&MOJ*&p@T?s{NLFTfbGrR;+H{M)fUxo#5y=K`-`UQk-|klX0KkxpocnJdSiFPryrqkKpWXjC!%Euju-iO`inpoFzB$?iv$27Wzvb9dIt} zrPqP{-P*^i9I~m$$tBA(f+`lrm02G-^GrouC%=$&rEf1pZxcaP%Ic2H(bu-Rz^}{_ zL1X3glK3A?M-mfIO=KP%Zqw7cM})O5*cAVOiiV}LjbW>p31Sbcs@v2bOXuf0eOCt^ zWe%dty>);@1fL#M1k&_#7pL6{aaVKA59Ag5-6v`d=rs=6@`ZSp(2zzsZ`y;e{xQ}gu6yoK>`<4~&fkzCzhMDgzFp4q*dq(U`o@~k_T`mUjUS(u z2M3w+6TTW@j)_YlY(+Yys;#(_HgCrRBFzhLME^^k$ZBf1f(b zvn1Wxs@=IvRO*@O+aLifN15uHlgd&GwaK!!aZCP;*KSJ6!{hw= z6wAo^_KBc-@iam9wruEZitG-p2U5GIhi)J~E|;_7^!b7)hqt7$*1;kKC&%V&?bE@^ z>uO*1&Y*L_1<7-&&W8Gr7G|pUcz+TDSMLzi&8dS2>{iofbp;gmviyxMR)>8>--}MX z7<3#$dWU_Uz>Ix|WX%Umwe~rBghACm=Hy5W=x#t~ z@b`uKplw5YxgQNGv}Ru0D-T4Qw%=oz&Vi>$U&_LV2#GV|gOd`a(Hf=EtvDF)lcW27 zN3r@m`zfDFZm#pU4!5mzbO9+g>QMj9?=9g?9YY+w-+XUN%A#P4Km|g4woDw$;GqpOkxS!T7d^#HDrJo?j`3Y?^|$v0qWO9<+5| z)LAb#3t3{CJSbqI{_DF})($P9**B)YO0GU=9oV6RbY_}&{|2Heaw_2q0AP7I@-hGjBZ*!!D#3O|jUct!#FD11xZ z&flac)LTo{dKu*hl}Bp6JNetbq6yG$OR)yvBXM zLIsqsIGxfWm=g`!E&kk2HioR4+2=+xMYIa7*BqBxtj2q-<+UbKr%es|EF*<7-9jSf zF!9bK30X%dYQ&&cjKsE=Oh5x(k-h>d&o716%IT*v1AXyrRrGPc-o9{l%dFw^qyf91 zgP(ReM0plkikX!j-oGH|Ksl8j0BFX+DHZW4HeE8C585@1$gUP8-pYhjAIZbR`V|iKEyWbQ(dGgEnOH&Gw=0Rij=8P{U zVEfdWe|6R&-QqC;{btw8?tw3pi2N9`%~EsRFwUsBTruNL40omEkd@{Sh!0$(v);(h^9Hyq%s{reCdU z4Ba6Bf1To2s4**0=^*&=qbJup!Xit%c0DJMd@f^Yg0m$*T~Tvfpv%y%?2iXukGbsG z9ZOA%S49h^&eut%>R_VRh33?)j?X%B(^4H^(P5WL?D>LiE-BkWY&JZqibyeN7|Aoy5 z@>54gx}=34fZLqwI1fD&yp|tby?4(6Y(0%>YTuPfQx-C&I{)%JS3PK}an~T+mevln z#LEly$PR#KqR#E{|I9s~1*a!${$+0@xeA*N+F{Wf=7g3Bcei6+3xd_3RtuBdi+RoY zEZK^-g{0Z1;su=vf81xg>+U4jNwfvx_>-#-(uq_L0(*eciMA7W3oNDY@Y==;Tkq~G z=Qj5X^uN#A?z_}77Zm@_+JY(XeW0`eIf*(dDukSa9QAJz9T16d7&@%}`ZWkCPWTKv zw8}cqp&&S{T2GOoEt9KoNT0r-E~Bg0qiG0(&o3s;oiQGsHp9#Jg>?W|z}dy0g3ayl z_wDX}D3=^#lsH+zvt>nLn)8ArvF0F-#uke>h1`pZ|p=L8dg?!za9)U&+Y(I2N>3WZ)3G zOUUbvGe0(Q5#C0%`|!=Rlc@O5`k!y!y6G~nliy}-sbmz>yzg7f3T)*O^-V11UW(Jo z<$2W8xTn5Zho`5x{g$4?P?g;WChhQS@T_aY=7d#y#wQtn@yjlwtP~CF zTIG*q3^&r=yU5wm$>}@^u1{Q;#bcGzKe+sHos7=lXNI=8oen!NKp zs=DQ#1oW)uTAb`WEViFafhUeSj@m!YF5%6rW5h;PMI!ga&O?ypU z9`z7~T!K{Q20-sLrvxrQ2+?XkO1qw!7=ni7BCsN-|1JgYfjTpVGUJY@_<#sCR$PhM z)B(HQ*5BeoLhW1g0CHZ})*ROIgEwh?5Hds2Z?&4R4c*T2v<<_V@62ctbB?Lah0&vm z;BE`;4)1hHa5-Q-!kW=UhuPbJWQK3_PR09@ac1JsTT<4F)rc54L#8Cf1=)2O*LWIljZvX2uisLMJMfu(ldkb<`N$zc~2AAqs5>R9h&sQfL&m~b*2}UgySfCqZ zsG&k?ly|x;?M7b@sV!&8vJn5p%FrxzCsBfSxTNicSP!G6QbqypK<^06_xep4cf^6K zcT@CqtYNE-3e#2LU=F31)S-U%l3%<7?DDdc#)KN0P=}t(E z)Or)=>`Zx#+EgAe%IDyk(OHJ&5lWoeS%WbHOxe}cCh=ifOW4*8QZI^fQv#fK59|AA zmk34+!ZNpk{WV-4@XIPR4;0w_D%ZB?Z~{7yJ&0b|bm{uS9dVy}3u&9T<;A(~4Qp!G zjp*IP%~0x7G=ohlP=)z@zVRDBHGg8z1hGGP_Kv!2R}>?U>O_8!a zilvVYtsL#Dw!u*?>T>i&*|q@&>PzTYG$GJ1{g93zmcnM?w{5M8h-hv zE9RZv*wuCZ{$GleJ0kz2z)%FWC=pSlL%BQ5z^7Q8iLxHP5jwR`F^MO3>96{kRqwap zs5?b{LTcqbB4bFnfsg3_v+6X1PyJh(nk%E>%6bj$U3q zWjG@W95v;zv9VTEVSf&0&J?k&Pg>My%rW$8m&;Ytm`bu|tvTZ=F|aHhJF%OUOgk^6 zoocsuSL*gp9*h&pHC28`G>ZBGXet+IxW{LJQxPnLTQfa1@(S~zUX-n!6W|R#WueJ{ zQ6;%|*DgOeXe z6D>4^mE!R29}5A;L8?PdviEdM1T+?40o``fFFAUTDRJP2KT`5L(#l?5Kq%dn%C4W* z@Btse_4VYy*p|-9Qr^gl9WU55jJbf87IB#o7pUY~R}Va&Cn@#a8iNz4;W6h zFSrwg?(M@3dJSRDs-~5RQ{S?#Up}|1DPD37A^>|`h@e^@s{qBX4R3{v>K0y5(esK? zEgP>2t~>lUGra^fySROvkxrlY~Goi#S-pS(Na@4aJNvDfXPUoMIn8v+kF=G$9v zV-39)%?8B=F+fQbije1or^}THh)~O#%bzxZG=URxdsr=ck`!hw58Mko;K5U zlwZ6J9qO5)T!`f=)7wSP||FkA+_(2SfaG@tYKo_%hMbop~`^>*F==smkYEgwH8AK%z< zXbV0;y75VLaJ+lFZI)|~`}Z@x9-ejY6{0fZ3W-PDBQsX%H9vhC%b&az-tP=K+(Phb zP`RL2Yx!9j;^DEDp=(SM{kbxx3+kwTsrvH`4)V{YgDQ)9?*-f=x>G2?>kNQ;@@A^K zG4t&*^>#2o<^y*j*F-=h$X1mL63X%uO)AyS*5uP7g22{Cz=k-o(|QN;b$2Y{I#UL& z?}i$Ce8v2bdyz!!CQLg3l7r9Hg}e&b+zOHB6IPb_Zme&|7xu zA~N&*ZP%Pl9HB}_TY7mW0qEzA;St*2J#W>0z6)Ru%b*^w5)SKe*49XqGP<=$d(Y7bfo%KM%D}m}5 zPmt}GPz!z3DhnXA8~(ZalwJ2;yUHj!;7L@bdwPyphWL8Xhxpp>P>GyCP)Uh?XP}q+ z<@ZNBlv9)n<p!cA*XTtua7!i07Sq(sFYz~NLnTX-H@vAfuSx39 z={_Qk8vFDf!^Z(R&?=X*3T@0FJutMB%^$-52uInB+DO13>RqNOiyFePBO%M*1l1OF ziZK&5i&&(1bF#nR`qQSRq`@otfGnt^xP@xMwX4A>$K%hq+ulxb}SscN`YktL!b9@E(81F=H>+ zgJvC7{}7PyJqG!#&R-yVjfqqPz&`(Oed}a=hBPeyoZpZ7ya7dplm{azl>cL^!{1OG z^a&3F^7U1f=BbvT-#n~pmG`t|8vrq1D)WX?2vI}>1_mZgGfzrllm~%8sUn7n0jVY! z7Y#!fG!ILnC5#H+MMFmi2e*Ztn#Skrd0E+Eu?bYVFK2A8y?IXy9-ngoAR^dhpd5j4 z!b@>@V6{dp1of6=Mvh*{A!X#Kv%z-CP*M~)NSo-lYht86)|yydg@LSZ?7M5VcK_-1Yic_`3c3V0$LwT?U3m+{FwXVdH&ww(6( zKKRAjuz;yxB4}<_QP__t+GAVs0lD3t)(~j0KNowQAdpg_2jYftNK$n6ELr*r7Y?aZF2lFB=({F(ANrVh5r@kYmk_Mjutta8QhDL4q-H zc7RtT)`&l2f#9aPrk{^~_{zY7;~9yU5L+xVD>TEX@{nZA{gUD+a7#31OI2kF zZ{y3oQ7q^F(XW#r?OH(puK>)4^modT)BJ^s57+fGTr1M6dGA$XsQc{u9lJZ4kk}a_ zSMs>{Z49Lmf{-HYwNj($GVi#TK@J@sH-lgDxgG`JdRX;IN?%osFpvYE%vq4+pR;v% zjl=3zT1CF^KC)#}yk4*h#CViDX1y+}bACD8Td3H8u6V-FkhUR%+YURLpz}u<&QK0% zYPOOvUrXh@VBBkvyjH4~8xCB+TG1b`s_Y``se$E z!`l0qsO<_c=Gi6NiNga@04#bon)IWq-<}}l9pe?(JLM1qcP%hI=3|1!W*NsP1vms! zn!Hc5jMgei7T6oZdS&Ey%^h~&O{ zX=lO0&qn9A=8&6^R40T&K;At)lVqu05FFnf?ic;6YtT?lv17ZAPIzpFeu z-4>Ra$8wgCVBC6@K&?hc2L+@FuSt`#Ubj@r43L8so#S- zgIfxWgn-y=3nLV5^n$Mj+oKjGX=woTQ&?8>~Y+ipD!qWi?Jh{z67x2BjDUk zWXG(2oAh3XTnaYqXar}<5Mp(WZIal9r{_yDzBl1-<8-6$C-G`kmwu>=G{lc3f&d}>MtLjtCq=BjQRXS=?UEWh21MIw7M4j z6Krt;9k9`?iVI}mUW{iWoQY3po_I$vs^+g`xrx%DEQ zKv^v}J!yxf)9bXsc^u5^H){2V+42jT4%t@>;=wHZy&= z7h82R`Jw|XLIQVnZC#Nu|6FH3PdV~In#H1wN>?A#w}fw2`-FPnXB`rQDDq{SfAgkG zqoDJHix+pl;m!F)P6+Cj)f%8UY_90S#{4+S9JfTQvZdH(GqcPJKY$W`Xhh!_vhdE% zdKmtF=%`&vIuA0e8pCxZ8y8;) zV=yLlo>Y^^3sawD@Uo%DEVs5Tw)4b)f=~_xm=p41c{-N@Y=Y@LDADZ^ z12lEo0*^D;L`y8JBY~0@>6JWScS$qUK}L*XW6Jh+YNyY9iklxWUu~rfD=Wy`U)Rg_ zJ|YUX&g*JjCB-30!S8b~-vSAB@6j@Y=q#r(lAVz*Ey8TYli#Y{8 zoDt!at07~dK_@I$q3ZA$rz<}bp%ad7RL_ahN1f3IivcJ5SY%3rv$fs8?@qy-2|ctP zyL&g?^IU00uuk?^E$Cjp#bL;2@*;{S_sIrCh59Er#3LgQf3u4?axokG48Rz}WvW*2 z47z20>dTc@E$;6Fx+tyYs#?@kKk5`qZ_UVC4JOqxlAedg#kY+$Zkpt;Q4rSzKV$hd zqE<$282lL~z4{Cz3GPebzSR6Po>x&Zq|!5%z1Xg(QCB5;%y0V-Ynx&_`kX6c#7FHL z`ybA@G9>oEBy8hy!^rF-S$#7b-Z)J&Gaf;6VhApFGlhMC?4zzMNAm^wdA#i3ynYt~ zr8ynlAXoO7x4~~8)McJIg>;Mc@B?Ncap8pf+9q#%XD-P%F=f*`uH$dBTY^M!-dn`4 z$1DneDNULPayzi3Z945H6LpKOi03!u48FB_UUQW4iHk~4y<(QjeTY0uD24oWeUvpQ zF(xNGOrT;0Hjf-i1ToLTygK{Sz;?epv@WL1g2GY8!V@ml*wSqzR1ur9!fWG8KLw)x z*$8*bwp)q>Upb8*BdgJ3ejtTCzeiaRdF%4(Bjnd~J_Prn$msMaLxPWf}6dvx!|o zhsy15M6wMX3qm3X-x zxxc8i4ZwenzGdV`eIFJY$v%8nQSO-WF;!&%Gn;t*)>2>m)D$e|LyJ*qs2e4;&S9D1 ztvE}v5RFM-eCELkY?D*tYutBA!nEA$>S=S+W#aSCoauRo5>S7zOk-5OCEnHPaRi40 zX=2_^rg>5PY?|inZBZ0$QF_SA3Y&fuSp5*ZR?hv^`i5Ks`_5QWG7lO0{K_r)kM(AT zBHEeRNuI2HMGMiz^x1mf_r9_bbeMCVx~O0;BwOUC)+9fuTzL!GXLtpi3Mmh=zoX3O zxwcOmMq|W60*|3Cr_z=Rj-PApG#))bKj|#S0=V??oC46I4Hjf@AyumMfG_ zu{Dk0!-ph;wWm{r`9WWryp}Pc&qyI(zts*+=4vft1XA#c&Nuo_5m!Tu&w(WwwU2&v+zF}`sQ9}F14rdRt*x&RBLZpvpHv}em zzMW)eay13|d= zS&rK2X_cdUkzjdhN6O$DSsD+E6>gTCiY;w3KbE9|4g%jg_s()$se{YNC&~tp@R70P zt$Fkhh@P4jI-ZEmvsC<}ajczTYq)1^lKwC)U<$}YC?RIkhx7F0Y`FkL0#L9$L$$2F zF5DahxCV$>j*zYuNRli%g%K&zP)vFFcgONCBn|^bXt^2*spu+MWoA|iC<`V}zdE(S zRBe;PkW$Z`IAym6>)uU3ac%QlJxjTE3^r<&YCUK0rDpJ7u4RAxO4BDKC4du|RE^eB zo{lpWPdnB8xQE?O77+m?EYnfGvPPHTeWzw;JG?HjW6{P)aza(=YYw>MRg_i8?!-&RMeRF|XtAgK({Y^)UTZrjC<<$e5DsI*C(J{C^nZ8-QszmD0 zE>&rzgAsZ^H|qmd1Hj33I-g$|7%lL8quav=48Rm4nx0W@g;V&;z7wdCKh*uxl3sNJ z7Yyff&h{D#bIio!iOde;>{cT`ZW96w>@dkHUJ|j%U26nXAqebSf@0E;^v%6(hh1XI zHh-uoUJnb{yv)oAF zJtxFxRaCJ!zs}-vs4kqiztyIy=FFb3yy(uKM6H@+a(&AOk^{-nC)nm{wd&~m;r*S6 z69Pw%`wwo=YpoNGSDutyBa-r^KS_FQ={unmrS%*pkW<6wki=b7MW8>vpZb3&Uxdc8s_A2_ZGYzDumdQW7!do9OeyZZE}?#ZtEA70D8 z+KL%lzr#uRek98)5>9LX6k6Lk`7#aWle3(sGlOAZ+Vy8+NFocfbXGR^`dl^ar}@?B zc(y0+H;U#MjfKyF@prsnh3R#vLq5=tji2l_ zH2HV3IeUMKcKQ`n>>OX)9Y*;G_4q@!W0}6RNC)H%pIL4RztA^m_D@|et!q9!m)qo< zS8$gAEfuNG8iQ+EW_u*5FiM8i}5+1B3-&T)` zQ(cDLklnuz1U;+IO?8jwGbP=_`6aa2+isa&%MLj~OgY!E%u!c-jg*zGc4e_St4s?Vg zXG4-^T0AO|iQFkIDiloj$|I|09;1ei^>wx@>(M|p^Rp_^U7ezcV}v2@HyU*cO9K^< zVZes7Lm_7_ldhVMS1pDN)I?1D%usD)Gt4n$!$4X?zIdT^*?mtkI)lmiHf=?AIV?Z6 z(R(KL?g!b$X0AbEW%SvmzWGaBO?I#RGTUM+ zQ8T^5{W@s!0E4q*DbeG*eQ*6ZC*+7{e{1vBSEdN<{)Tv>ER-}r* zs$muXad+CTU~hhzEKKnJwp)D*EBzR1&Y1w}Uaya>wc&fBpnRuE8T-y&MP39{XDpIA zlxV<$(#cC^c558Ehfva;%ycNc`It_~!8vZaA#<7Ind`7%9O?U=*;eFi7!!MVKa=@A zqVg`16;&1hS^7h{{8NNi7!hTp;qa6f`2X2@!?WbYH zZPID)b>~^bm3Yy*C&XyB1>OK}=sxAkv7i0jEW@601<|w_2(}+FF^?rimM?l~-TRnS znZY*JI&NP$ECln-np9ccJl$IRn)dRZM%q|vs%3=pfRCTKgBAtSR_uYnDt0A`b4ps! zHnqXwTB<5wk;B$^Fv&zStz=;ZO+50|zWc3w}z-6lwCH&A(p*MXqW=x2{{QR3M( z)cA%UD|f4WksobL-bMp*e`bMgcT7ah4?h7lt-2tj3qO5}y>mRuN?J}9a2i}_+P3pg zOwmnae8~30?Ew5(p>ZJERO4AqrGD>4p_w{Z;-mevg07J32+SIs`=F^FiT-P`6OKJd zi@|`+XX43u=2Tmup9};ic6&dY=Ia%FxL18-HxtXx;V|oLSQyS7Gfh%g?Sd;Pi~XP`?$f2scx?3ja(1<5F@&W|DkT71jxb1=4iT$KqwM|?>y+8?0{fey^#K>B=)jUN^hMVX%^D(QYReO| z(1ciuax(>gb^#>nPMc|8{-X?OSs9+B^7bePyx#5Z8kwWu$-AvswTVICq#AOCqj0U0 zgtGn^I$?E)P=lFQT?D+q!H;868(IgKH<1f-U}0316DW#1X@vic=hyrSMAwIZhor!u zTI{db7+ib2!CyDO`&KN9=O7|daUovccUzBA9W zI7XC>Ri9sdop*LZQkS2=NemG;8S%1h_MLqxs7?FDKKr9>p`iJP`9fJzN=s(J87D!!9fiQWp5fSRy{<;b1D*yF|9 z52UwNFBjki+)_K|Z z<)}6tk$Yz$WZI%|`0-ME(h>z}{e#s98YnT+`aUR9}$9u5DSqH4JcDn?AGGF!r?3;EFC5HzH3Q^4`kA~PKn_% zxPWn`Wq#j0`aA2|SCUCC&~o7=|81z5!Xv=!&x3{kR?5nG_y1$fFn50^b^hyfb4rOk z0p$f8?a+^Ldw@PqQl?`*K99&?=1g$6v_1Oi<$hs5bej!?6BRM4RHIKHX{MW=%`D~I zM#NfcE9I8b%0CVlQh$;#t>=IJ3~&D@;>oL~p04v zRU!9f);gJJ+o#9p@`=Ca*xTUE;YoA;33U)?56e5)=@xOl2Mru+qPYkC)-|=?V9Y#O_=POG}*Rodw1=9vj6{Joxca)x?Vo_ zqfnq%y$@$Gn64sEDMw$edaqW^Hu2L{oz5$kRZo(A6@lHd!k|-4W2hlY?^lJon4&iO zlU_;532sq!2Aw*$M$Sxy?O=ruuVqtto8kO`-aJbh@5@!EO>s*IOw%IUKSE;zpk~2# zw8gG!T}83+*U$N=WieYLyW&RD5e7)Tbj5iVcwTYDh9{;%``xw*tv5!>V7b8PUaX4Z zifTe_-ui@I$O?RW%5fIN$rK-i5skYP*WCoIxRX=;RT|lnpX}5jE*CmPXuo$6@VtB* zlR%T|vb74`8;`Q_)b(Q7H9M;`f&3TS(RtI(5Om_oYJBbSnA7YfO~wj{Ub!iwTq{3A zh*yDhksB;!SbT4_6A~C?9-6mkHx)FiKor@5BpOo2#E86JnvvPIxSHHTNtb>#nr-XQ zF&|7>QMOSB zyy4j5LvHQ6|o&+kYJmtkX1QR$~( z9HAjC6kTaMP{kQy1b1ohy%+9C~~nN02U;}58Z-`hYG0O z#65~kC70Ffw7~A%AL-?GeT`guY3ZcGzc@(DTv|aVuOh+&3z88ch*A8(J;Ff$p$wcs z3Wu|Ii;EzX+92^VU&})6O_Rasn3F6=kh33Pqx?H-T2i7(L-@W{JC0x694vdg;eacz z?e{pFD(BBUW0c5cTS4JYVNgyGjD5mzdmm_d#yqJ0&9~t1*m$NSwx<-PA;YCLW zv?Zt{b2MZoOy#s=wq?alCB-G^OWXb{iJOumBuzsaHf_(B?PQr1TmGMipCRE2_PA1L$=@%!= zy$Ke68q>_H;yXwH4-V7f)%C0Km5Rueam?*n?Lw%@EfADAq35=pgG29Q*cEcZGqkwOn$ z2P4JR{RlP_41j**ufsh&a&_8Z9V{Q^gC62+AL`{DV(Ega8lN8LkLZCu#F4Wx9{_6qhoWUSJ~tP7H1aF%Ci8bZYzGu%`m~p1t?^>YDXG=e|!WAgiXxmGhq{^-N+hgO|?4=SaR)H@k|-{>)Suk?~C)5g4HM~BwqPnO&h>F;%08{`T! zm@A_FkOQQ;WEC0)%NFi~_$2o}q2+cxfx6T1<~G@~Gx29f zVF90qSX*J)JG+;G1-OYB$lGMs__y7gOCsNFzZ>D@aMFU#D=pY?`u-VnY4-;f zS||P1*H&g{{+1kq9iknggRoX+*Vh*5Ru1kF!kw-`!fh9WT=iDi3;gVf`PSVvvo+WY z*bCVUjz`6d)wQ$FqKHV8;M6$l7JTEY=1S=u-W5+V?ykQs7CMOL;|q%NyHgP3#CMEv#d7SWKMWXWc)Fp!wGIR=St@9iLwAnG`ONagvj;Tie2hVpLS!3M}J;}xm=v+#*^p~_4C z<4vw9J@pHld&===vc-k5=0{IM0DBq-a%QVbth7k}9?6rvVu_~96lF5I`ur5)ScPxQ z+z-{ORe|8p!VHS`BuFc*3iFW?y&tgJy(ci^W5raY^BEroT~<)`d$j!Ox)0d5sed&Y z?3XZpa+%XH<7)uIq1wv~slKsEy26mo1ayb4!!9+1B7jkonq2#jnLq^-JOZJF;ad!`QmC-)Kv3f_aApQfTGR z`5jkPPo12}{*JlLAc356{+XJm8Ce!68FsPg*-JGz$kzoJaCP;DQ7kORL8FRB$&yb; z<0nN^eqV&b$5aX1l7Rn`8)ne@elrV~>hg!%9z*_v0j&;$CbNI8>Ug|VVddX_)@&k9 zhQVh`U<&%cA3ni?I|K8pcO}WWdUTrPQ1AO+?J8E} zi*vj>OTTrsp>GmE*O27V)>yWLk{n|(lj1-v4*;c z(^^P^O9WhfIh5QxXRuVFMse#Z9D(8N5O?LVx98 zEh@0WFo~#?R8*`lDTz?zRobq~ z*D+=R?6Jlb$_E3NG>d*hA!--Ma`VWqBF?JI+}}tHw2q?FW2 z%Ys`hryr!}oSm0@Sjf@kWe4&7W;P;V87VVGeRxv0P%hq#Pv3(UpCe!I%BHZOEwY11 zAnvqgFII_&cCuhSd@{y!Zse@?AQLtVs!QetW}#v>3K`cN^I%z5VP)f}HkO6(l> zE|zXE73-)Xn=BMCOdS_Q;4|j;erN2nB7clgDPLy%Er(JqwD>7!al?t!nVcFdxtG-r zz$h{PzENTOwtKdUWN(#eHMGS$?CXQx=o1lKs7PP(rQ*lmLdsKC+#S>Mo9Mp9>F$ew zjVjiF#HJH#!5ZR2`HHQMlmH`GNHaoryJD-lHedNt&8@C;({ca|&cgYd#(lokaiG)E zNs^yHaWrZrelmC)jvoHAYp{@A+!-p+_JX-n${8}CeV1R+&8!zH!myx)+IDX;&4;Gq z_DxIT)J^0V4Q_##g{M3^iK(&zu^R=(Gd>5k&&6L%qyGr^db3EHysy7}wsb!9gzN=# zx(z1+vyeE#rBjisYB|LS(o{MHUMO8H!LrGdPR)`>NFi+a-n3R8GcG0oi|-UbwiXh> z&;^yxBD8BGh{(zPm12py9}#}zcGvjt-_fRbnWb-8_cKs7xjZsNm0}5J{mDG_VMABb zgk2S#C9z$IcDvleOKMe~jox(w(nZ?y{R(`C8>?~^4K>}g&RA0=7aLtC2Q3=4qM{rO zUQYqiuZxLAGx8W>F%uM7mjMFs!g;!H+)l5SZNr=4>^BAF_?`CmEkN5;1};q0DR!V5 zv{#J9=8COt!4&a_tue>#YE1PzSCKAO7Hkj<&iDgcrdgft4`#5URzvs$T|2I==s@Ak zXyT?Nf}S)Gptl)v^1W#*6e|ll=(I;B`X+*EG5%VHy>QDV^)%AHpWX~e95@Izr!{9F z+KuKQS)^;CNvcP1`AZ?4)}Ie{M~S5maz{g9z&)78v3k_D!Eijz^diRmq84o(f^;!D z_%w65MRZ*#&DaEU6dTopH{_*3amPZ(k%H1*+=ynho*#d88t$FklZjS{bTg3j7nmPR zgFo|;(`ll}H*m5|{)P>}7-1~kNYF4e-K6sjI*Ob#N}pS!Qx5+u{8Q)`$}uyj4aa~5 z87EMgSd$_J(Nw53BmJWuA(XK;6-ksM-!BzrfW*TvYN6KJXt0?;c9d=xdeP>0(NF&v_ zUG3DXSpqR;k$sgPyNhVyn(W7qP|*WT5n%fEb(mR@3#N6cR*p{JY~dYI7o#hhwDuVh zRkCVQEpIu&^wAF)GdChVsB0T1I-(D_^{Q|kj0mxGR&h4-2lsxi=(J2saJh+Lg%=}J zi$yhP?VaMc^{R9O{fqc{-ASYde#dyCy16!qMuz4zMrpPW=oyRS+a0C< zshc+ay`&Q!JE7I3Y0$?VwHDAtG8 z)P2z6j*da5~iLMmRuozf9Z9T4a`NB{1tO1IJ`Q|%Hbn3fi^?~pgbVD0h-xJ1veB09f7&%sOnA&t7fHUC;iZkAhi zEx679z8z<2B@J#nAEdS7ZsdP7OU2l4r5U2w>4@EAbUgHgJ!AT|v3=LsehyZu%O>CC z89WIJq%@h-F(!1N3mxI^hrOUd$u1lX7WRhy=Kp)97kIB{hkxbp0LxH3+OF|!>P~)X zql9`2GBg?svx66n&ur80(RgESuz_>nsF5NO~hZ%Tzg%E|>`j z2N2urgO`niRwzP}3P7iM%PCdTNIep)-!UJ_6Z@xGPp-PZcEbWS20^vlk-VpWj(VP-v+m_QqA5U~&y z!0RBJ95~v>4Aitkf_85m+U6|F_TV_dTJN$1e0uGP?W7fubYZ5# zv;w2M3YtvY!hSZ8cqwq9+jxNy6&;}MhjT8IIKhjYI_Htd97^hS7FHm&3uT*49XWB* z85utgK9izyYl&RcFXc?-6OXJ34_>MR$36F=hTQH$;WU28NVm`s4?hAR311_6h$PPQ zxrt@V_&&JRjWbQAzNy6k`SI9K;#lqY)HAgMNyfQh-pI{2yAc=8tWwjd&*XN26-s9C zjZz;G71RDu=JEOTtEHrH`(AyL-onCE#62v}MJ_*yQ=wV%M&n`6Xj-hdN(Rt?Ov30P z6)oNXv58xBFkiP32XbN3k+2@3zIP0^I7K_Y)7_#aX-Z?CAhOuYU98iv70A7w;bW6M zkac#1wd0{D+J2xqxvJE7g7%f9x4>WS>`gAslGpN%_FGqYX1@4RFxYHL?F=dgr*B`_ z!_G>+??5a+er0(Hfa^v~Pt5 z5cNeZ5=|toM!IDU>|_B3rL+2O$cx@2&#R1PO(O>TayGN?qsbJ*Iic<6o;!E~md2+U zwCY~x<+1o-oTW(}?0iV8qTBD4q|)Z43uZ}D3|2-a$sN}qV65etU=g_Gg1wo+VQ)!XP)9kxvwh`}#RTD)*i4m5#^tF-WEdNAJ%zKVg1 zP|qT`8Q5VAcv(#kCBbTsGEF)`zy0JyBt`d^%}f4XZ*_|d9>UpdL06rItAyl8 zZCKNq0xPSt?Z7jB+nXD^Ak~i3E_kSug=a0k!NyYeD_t_Nn_@t?LV#;}H)Sn1VRAeV zRd{Lo+t{z+(iQ6S?1m48xArp)>hp$k->JIG-!uR}lW_E=%pv4b6c`!f<`+nrP=iKa+b)-M*&sVg&0W%Jp%0y@d%uB+RWc5au0M^nY713DBE8;5c9g;-S}&_XuKD>0cj|-4dnH3`4;O;@QK-LQr+YjaTvOyH`Uz4;ZUZuWM9)`KDQS zhj=E1(3XarKS){MVK4IYg~Nwds2ShbryNC!J_f=#aklk3qYcY5{iQW_BN2sI>qJ!( zQS-R6+xwZf5wBc3Aejueh5KF)O2J;OQvf_-VA`2)di3FY*)vWMuH$YV+?nNrJ9D6+ z2SP>79~10zEotrj-JbT|u=h34?ELn6#1@GVyd$Ea`p2sEP?+ssuB{()T`IOd1_O+% z%FWh+?}d0qf&N&B-4yr$?|}0u;gElvCkp~V8273P|0yQ%+PEu9823TvI%4fqNbL9> z*z!X?%tNo~{sWiq1Acz6*w&Fs(p_izqa)Jp39Xqp@ZE#z^S76LYfIM0zb5beACB|4 z>D7ZMtQ3!zjvO_EC~MvzMR4E>erutML+RT)b0!diw+YbzqEv9S@|Eqn_itz=vub(y zE2_yipETs@L4lX5tFf$a1erB1hre-b0fDBf`!PqiZrB(^rT~7a@X=(qjlF50GFthT zDZWZypy}-T$h9)M9@{KW`jcOfZ*9N#>vg^lZD&*-2*o?XY7LfoSt0uzh!g2wc$y#^ z3mi?zHV+BB5I-soK88qNsB3SdBkf1;_wt@*bUV%at%WncWUt}HbM_kbdd-Id)0@6V zuG<)CrLY^$5jX1jI%9)N`!^qf{H4I9$(h@+4@*-EkEgL)+wCeV-Zz4%aVc%8`5r!O zr55{(>>J}oe(Lni{n?Wn)HTPs{ra(-WdB7I2KVjgb_V zEL{Kl`*t9Z^ZI<|2`wz>wm8E}{Bb?}H;-we<*gl)`0}Z=`lY!VVe$!h-~N26VFuXd z{BAmXh94Ie>^_^R)$-0>SNrro?!x09vCeWnUG9@Qflt*+;OvWl*iZ7k0xUDwa|T8C3iPgGnIy#f(EH@!Ph7 zj4h7@x1pi4>7K7t1oSNr*j)oQpK~v>eJ?Ku2_4t`2S=Mh)y4EvEP9#w7h4q4xx(isPBv5AJiTPsT2AA&#&Ly75`m6Qt}T=64WaN8w{U)GVF8=gA1O+rtHkiSdP z1yp>0+Rlp16K3&$SmQYW0lf3i-$$NDDNF6Z7Oc=*N`coGLPorL{(o-IcNp=RwylOl z-Enm8p8piyd6~+pnHd{}TO=vYwGINa5oHvTPxUr&IU{Z>C@?`GXNcW_YNtclgm z`BfH*Ckv2BUel;Gh0vX7=8&I}T)|qxq|VW+vlqk|%kqfP?BDT;q4ox;$kS}yt%n#W zaa;a!%{XYCH|S1H==W|yL2F$W5MyXo#v%=yorR%qS;heCJBAIRnW&)-aqawx^7kH2 zjAT(BR=y?odhT?*YuH-ORSzMrfMLh&Bn|o=rUIznsoQl~3`7E*E%Vl4TUBCuyirZ| zHoTGV4qX=Jh?_q#$7>A2+o8&)a`P^?Hocda>14e&hZ~93D!*@FCoEE}bBmEHE=J^I z{5>mY#Yi8w&^D!N8murpg+L$6MRVVvMpZ)jl1{^jKQ0lSTDAPbH~MN{Z*CJg(^Fe> zy9R8sDLWwfNSCr&QC0w}NmjW%o-x);h0w8hp1sgG8VXeI&n{TMirKz}LXV>E#5rAc8zE#}Q6^ebv%ynyhfsG+14jm_V*^T3- zOM^2)+iZTkmzsa{QYX;zSdTgY9m=i z?$&KsajhtZLlBbaCh8p&+P8uPlq(9j!bwc4+0@j;i+pApA8mM8`$7^37}YDBw`wj@ zl2*5ih5i=qqRqw%Nhi3(AKEU1q$`+6@MM4$Q;qT!#UQ8I8|x}%>uPGQ2^|gRMlL#m zd7=Q0rr(mbltEXokm-~ru}$<|uT>^n{w!k%g(FM84&q`@hPJddLu~h%tOxXafOb!j z4h}|Yq(0ZvEB_Qo0@qX~exewvHA^%oPH4X|O_N%gVnQ}|s~@UK%M>o!TGEy?lo`Mk zInsyk_R_)VlgFLU1}o1*i>4GKO!GsMlmKcFsti;X1-wMYxJT;U$i0h^9%-fY_WuRROr@@Ucr1M6ggV=GQua5~E)t zO+Uz8CPq4&)=iF#MBCDnZqBVR0R;%#DmMAZrv}qJLu`NwA5|}NE0U}>uniqJWYTe{ zkE>f^=+h?$^&CrFJ&Xzog%HIEHZ76Vd<#BHHc*?oOxZgNEe^|VDuv&q;m2=XqL3++x0^_ti(o>MF6zF3_fXU z4v&&(9F1{ujlFS6c;k8rJK~J556Z+XJJR~ZlVM0ZpSS(PeGJ!rc(SvASDHObg+*{p zZreRAfQFD4BH=Ex|5%E!l957^Xm=m1!FgMP@S$Ku4XLDN@c_%|3;OGF&tOq)iR+P+ zL6o6{rH+szTKog&*ewc@bsDhNpp(JNkt+^1pQ55er-)W6_#-Mcg^&u)_9uSiyr{)h zV}qCOlX2t?Ya`2U*Q@DAsY~RM7WmL@NF=kdcSS_RMP&I)I$u--5lHGbZoBNz$~^-; zKG%)JU3#D^3xV09IFIq#5lLYuocYYa@65;}+#lxB5Mvr*63nArJwZT%D@xQcQi=Wo ztS_kOk|K#u5X*|rTTB$ma2d|epxnYj9jG>En7H*H^>|78pzPK<7oZI8EQ)N3ed=^^| zame;gN#U06QV_eK4F_@syyGlN4CCwWeFp8Ar!-f_Q!V&ye|p=Q+WGCWvWzZ>s1R=FJ?L;x^{!$}>0I);Xd)k>z0 zbv9S=!a9f3-Me})KtvXcZd8Ch^>(S!9VuCRhFwi?zrDpO;w8KXq(smtV~o&_Z+CFL<}KiaLSJ1VzvnWuBn%vV-9 zXURD0C-uO|00jt>1H6qBlL2qjL{7X4^@i4L7sLu{n~KKFmpx96)3Cx!Si<`i&Izzu z(X2%~kW!m}D~;ZbM!|M%nP(h`%TkET$Kr{EpoHuV=B^;wyb`80vrak1if2`}PU9*Q zOy2NgTr8x^@T8Zmi6CRFPV0SWO=x@>0dk=EH@X7N!~o^UksZ1wC^VkkhfZyr=<3gC za-?NTgn!`1xh?`4wAYj2r07QqrrhJG1e%CNX4LXy!366;Ps1wWmfPkQxHzh2I}Z2qw10ac-WVSuCBvl|0!Ow{*?IJi zjP-t&>vl6cX%SPL^rnU=reIrg-34MMO=A4z=;Wdz0-ij$WW9=GmzDrFcZfIWVEq$Z zLx6Zy`6frRtGa^lr}lKwHd{1fLjUPL{3QY)6Cec1Mi2rr9lRySuWF4iB7;H*gP2s+ z051ZU>QM*PT)twa88ArOvPM+XU@KBW<2u4q^XE|W0kNX#TT`9q;L|7e&H z`V*q|6~(hd%}v2+nyw-2+ty}amdGJ^7EmKB_~@@MWfZn&>wUXl_OSx}gG3^-bgZY;gsC4Awkeb~voMJ|xpy5XEEcXLZXTBl*|1Ru>%&4Q;mGuO+@>eOB+wjYQkyvlDlR z#BpUCeCrTCoaUCBVCrPszl0V3{mpz;bs_Efx~(wF_Aq=Po8QR)Svk)?yYVXe_PaEJ zGV^llqY6#8o2l-f#c!8s=O*Gow;h z?fUD|&O0o(<3A<`yoa~Rzd7ZCrIwe&x&EfR>tW2ftQ{^pNV}MiNywg?^{4N9w0VAa z(-o8Uj|9v@?Pp8B#;xvqQ-38xA)`4StdB^-NU(@l4 zJTl!61rzbU)n>u)AmL5TCqr?j1LCZDi>Sk=#O?zk%8z^dnJj=l+JW{=p2zbV@!MYL zqQiEW;QVa8OBT<;{^7%KVSwj0!-Nn%lL=d`J$uuD=W%64-ZI<2S@4tN`nrjb+5&Rj zg;10BURbjn8(tQ8tNY@slraZMFK=xL{ZFUp2Mf4k9er)c^}g9Cy_pWn0}w_)#PYY3z80!d zm_(Pp>Rhzj*#7ZV(w2fjudi^G4vvwjZsx=;(#xNSzN4$1OlbJzwn=B+DBOHDz$mtR zK8<_pK~g}hyL)Bxs7Bl)1qVq=qPZ5#_Jvr&hVZ0Mrkbw<93g| zw8#>kXxU|Sz#3WbROe>9x;`#0CB$Jn@_VJx2rMx3{CB5syrv7k!lxWFPw;tt4%*ey zoJlw3exu`6>F%SBt>$PF(~;=hx6~|8^~HKITORQ4v_%X!1yT==MXY{ulYkVVot@O+ zn`am(47PbQ`$ejuM90uzuE%l}F&;fy(YHabM>|NLPWd!|+DmxmE0&@E7OPanZiDY8t%yt`Moxv6P8@44 z_(FR1vs)fE@)`L*tNO@b7>DmLU)~akX|YG3lxaUmk9aQ4R9DCYVHMgBrP5 z2%4m#u$8R7rda3{S*n%|IOCUITTDEmqRHmf!cmdn*GFmvb!S!v_vQP>WoL#bH+~ax zlNyFH<%@6g!%82pj!#es;0cW(71F=VPqu6>Sti#f2QA~uYgz%FhN{b-T08B;RIRWGm=Jz!GK9m@Taq|%5o8p&Zv7$0@*gSA2)xUy+zG9oyV zi#G?OJ@~{Q>7VK9vsO#=j|sD zkvJ%N+_?>G%A+(Di0HfHVWjN-i#xl2l>1}rfV_2_%1C=kkS3*4jP~znq>YFp&zxQ4 z$h$9B#WCHl*=jU|8Qpl8cv94ND4Re@+;GW5QxQ$=ThxXy?8Fq2l%@V?)08=SvPcg6 zKuS5|k_NEba1f@G4tOU{v~jKK1G6KXZXDTOO47*eQ;C!svW*GGvQi?!L2dQ~QVWR~ zU=JKE^fa*#4ir-Y50=?cL1T7Y)~bB$8b?nY@@U6fWM#0s_aSz7^2jxA3D2@=g&aO1U1H=L~I%#;G6^Td#@d zOwGtVp-`7nLe)_HPvb9o@6?9xY({(znADc?^;+RzzoeY3`%w2(Rzr3R@jcs?aN7oP?3c zFuD1`Ti~SQ87%?N(eOAHVz#-!3dx%{$-T09aev_Yxtiv%>4>Y&8(+bcUAhFhQ>#uH zGk0yHmhHnsrz#3kixTMm1VYn(i-_+os4EMuSFicK9W(FWXMMgnoe(==mo;w~X?<=X zC-IMVd+ZR7`^@=WJ|#H{yJu7j-@mWcU_9g<2*+){?d}WtKEl?;8sE?anAW z#y=3lKzF?R2wq z%OJMf&*~By-_Xa_c(Jia8=9)`L-%|Rn@CVw-wQa9=AVqo?M}Mn;Z}0|=39I-(55)w z?lJdv;A->PYn#t?KC0g9T^7H7y6h=CIWXL?`~1Z)<%9Vfcqsyus|eSy|f;POmN0 zt(GmpYXzUuy5*n$<#44oZqRQB1MyXqd=(~i|93dNNs0syG^Q%rtw~@ES)M5_Bs-|p zs=*ELta< zor)SV6vjmTUeYV6I!_~y zJbY!|@=sQ=5H9UB1p99?#2}|vxl$_{6FN=#l~m4+mRF#NZg7weHRjGXWstrmjf}gg z=$AvE5{kQRCm-qtNlR?m>dE~1He=9gWLuFTu#OA&%R-S*B6n^^fb?4d3iYpKnr3V9 z6u0mo3E1hoDr+BcQ7Q^rvA{XKwfVK7JbR_va$E9_bPG*PJz2~=yNhtKO>l~ZxyA|f zX^i1@qubR&Q>}KbRT5G{xbs&p8argr;dSu*TJhv36atLW0+w2+;ShdKL&II#H0Vhv zU;{%C0v$8$0a8TR5X8$A)kCN-M)ZIibvK>ZOz*_8a(7)p*{n0m&*9R~zMA+bgM6WH zhd)Dk70Fa~P`#gT`Brc&zV?|9r*y?*kk-~L`vG=PKjYfYFvB@9me!FJ%Ti#_R6ze$ zYY?)es3TDaT;DU~{w}BWT`9n(GptV(*qU}c3y~~hHvqkI?fQnlM5fc?&*%JwcqQ(B zyQOO$jXclDAC07S`pahJ#c}IoQ8q}Bwh{XwOlI}7w@j@L{JTnq zGo4OGxrRXTiEq^9J|^-Zf}_l|tL7{n&E5%1g;u_fg;IHUM!B2d;#21V+j)m3z_@kq z*M7;m$)GrQ#IMO5Ke`qAXgXq}l@Zop4e$uwYq(sMeTl}k zAVoCz2=$J~2QD_BwE>w>O#O(3FUrk4Ux4qS`{$M8|7({JzTEe`)%EV;zLbkrX>XKZ z+(5Um(hhg*;%&}3g~Nw|kJ2ZDyFTY9*#=7A<`V5?(4D~tqRUoT98VQBh#x4F~cGGBh zVDZr7#-;zp=IvYVq5pY1G%=qWabMMB3_vA?6r&^U!GhqMW0KBjI*}=hug8^_^QBXA zm7-5=5$n=qms=ibXwGJ|Vd3AW)qvBAw*JnDI8WzoU!gL6lWmAm8TOOP^|->~*SKEq zj2=hd6k>Tr)RKz$NR-y@}*cdqTBl>v!m~x#ad#a_Nz+Jsfbpp&}A@h1pVSEeD z$CglBi%IcBlU-j9a+Ym1YDGYUaZ_tTNqk1PE;}bLq{Eh?;3dhUGbv0{eOWA$yFs9n zGdh&+4@Z$fnaKTO>b>7@2{(n~Q=pWS{=Cid;lw-Eq~kTe22B0a0Av-4>Q4}((~eYN zDnCvMB7w#>*d}ds$3K}Wo6&498H>7F5fy=9e5ee;0eQO-E#7PI)NzId3;|k(vZAPb z9woR*RBG7l3a^-L`!y<B-#@#2cEr+x2=31uVxY&QETaKr}^J95!6@323f^%N7^KVa(`mTfS~ zlA}Zp)=cd8Yk0s;v+DJwtRnZW7H?H=q{2gP*g|e#^y4C zO;Qw#zyIh%+>W_slwQeo2mz28CT{EI^U#?u8Y!p1-fDif-km$RdwA5l2zHMjL_92- z1M+p#;wIE{{BRPxoG3q<%)v9nie#6<%{>P5Hf!TWCLZFy-02^5+Yw?`DSX+ewFz6i zLfe4~Ng$9KaQ!X3bMz4t8m3Dr_uX$Szy$Y_sYLBvfqDX*8T=P`1=$)uyXK$LCP{XUs7qH0zun09*v{DW zP6`CWX_#s36D0a_9wFS`CC=EKh1 z?f>;oYE3U1pSJ^@>hmQ^_w(P;U{$8)tsj5?T0c~3=LK;f(@*utqd!+{Y9_|}BWv85 z#rjPB=un3X!o^ZI+4;C2dWA>Efy88V&~1tvJ`67L$AEGXyJxF6aJyIF zZaFAswO5A^>nJr{;##Sei6w4l-A&<&h4Asm{mgR!OGX?JIVpwx`BT%3iS=;rf%?V| zyeVS>d7Aav4sun(IS6s)9+i(u52^M;nL?^Oc8^j@ET#s*45HAV@ypb8THOK`Z;!oc84Fa(CWio{c zD)+WdJ;hFoy#}(|rB4y-yN9$66R*Ck(5Q>7Y^I+5 z)yZG^=v#94$6lbz_Zk zOp(vJaNkUTKd;l_eZbSrV}So|@lsF8;stPto!2GotJ?74f3dZ>@v@F?WSRG&Y#~g+ z0qU4;KFLm>NBi>H6GaoXV+Fku=|LXzPyn$KPc;RaA{IW4>V_d07gvBVQh-KRM8{fD zuzO@{MU*3=Tu?eqdl&m@DVy;L_WyGBSIS-~U7of92LY*q1OZ|Ezixt<2@D00x5Jmj z$z9f^rsNzpUu=-G9)OaDDPO9ORG$V{Tf|Q?E=NYEDO4-3ZyLJhdu4eoQ?Qn_{u-sD z>^SSdqFLqq4Gq`8EN}tQAPotzq7f_1KG}Fl_#y5n!?Nq34}Y(Pb3FSwDZKf4E?oaP zHdfv041#9w&(}>(e6|4x($WKv{H}z!Pm+$UP;IiJy+RnOY0VX!;}Gb!4A`_+uEO~_ zf2g{OSY`!L&8Pu3$H9;Y>uqb_jK@YeTi)tFSC3$6VigEgoO@L=*8OW(Vz46STz%L} zY8>IuucXf;be!M+!_`*>QSwRL#@WboW{{y;iJIVvH55*hQ>7LdKY@@fLClR(+N`IGCb!0t6UVBL{$J z9qD}bC_tzu;QrfJQlSSQ{j`KWhJ43nJU;)gyj4Ccnw?y@l0a&Ab+dF#;i-5`Qc3yv zac!)2p;<$DQNo>Z>Vu=&{&zak?>ENZNO~+N%PHti#YN8V+#Be+mM82S0>VvPP5uH9O>E-c z+FAzdGoVKDJ#0HS&6F*VwtybuuJIo+o=LAbKZ^$_oO0l&yf=?!2@xksk$q7v)}N-2 zh71-rwQ1S$6`_j;7m%HvLvCNycApAQ>HPY4m+6-^IS$w%v2SeRvRmK^L(ZWL{pPgN zVq2{|DDU`oJg|1AYq$5s|9#9$RY_1X8;7g#ss8xd(G;#|V>Z4~mUygGUM*>JY}F># z0fTdLyFOJmB~pC}TB2=v?Ta;XY3z}`AHMM$9${DBcGGf}zP81HpBwtV}`igXFNTZ z5p=PuFllEJe9IOxU|3Un} zg8uMQ;V@ueZ(sgdX8-3=;wD`&LBIikC4njt;BslX>ELyB=HSg~wjecGvMTZ?ic=n5 z$-^$y7|+aPp*}Zv%=yg0bNG28ebQ=>n_fYA4g^!m4$f0D+FCY3;{53JnSEL z5%Yt*pDzTpRk6552DYipxV)01RBQGeJooHq-rcEZZuC#7-b&*0PbHVJ(gs|f~YZyw$p_+_p3}^tj`WnvNpEX6VTC6NHI|;Mf-a%-!BwKd!V&tgR7mw}K zRHGE!8Ie zQx9u(0#>6%r+};QD@2;sXOBUE*oRY$Z=|SEQC9D_k)fusr|+L#nmC#wH+V!^!r4e& zs-cz05*9Q2i zMx^PV_&ZOrE@m#8?8JesZaqHRr7Ow0HK!^FuWD!>=eQzy z3g|p^TDocpGJh>W4=N&}Qt8Qta-$K7%aheE4285hg9>sauW^)JUkf;y1~zaWB+O*v z)zab9lRrZGpnWC0l=3Evy(D=<)qWX6@Jpq*Fcq3f(^S`w)G`BU-5UkC26P+#iqZ%D z#FuM)$rv6TPW)Jxfu*nL2~o=H=}9o{e{kuU=x}d63cTO)<9j4|`^1SZ;~MStKWR{r zg$H1(U5Mhr(|jTP2D@k8idjQ;@tQ}jdsg-Q3*oUWy~Oczv9_*c%}gPJoi2vZWL8wR z`^m6LdQ0HpF0TOL6PyyeoyLG%CS_gw6^uBDgdp0y*<(CPIRiXuU+DqUv@gu8!bZy5 z!UGsaAw-4goV?$xhIYRM@G=nz9d5zHsFhBcjg49c>C2t@lJD3%e z;X~sC83G1@DoC6O(d&cx6M40hipcy0>|L+CY7>47+y$&Lke3eX1nK!4jO}gn>YjqE z3o?3jua3p?mA{Ss+QqwkT&@brAqC+O6=ldJ&>Kjr@5&S3X4imRgV%r$@}3Mbcl8RvYt!m${dBzzx_33jNH zl2WWwfgDVPxGt3#>kV)OY`>)Ctq}Pd@ zS4lDs+!}w9>I2|5v{JK%>@YEY3_&5X#^2#y6fja7{8llJ8JhF+gB8)@YNU||i@Cxj zh64|I`6r*-se{!#KuiIK18Xh8)rk9AhU}e#Hb=Ar6&1>|Lu!je453U^U!!zT6WnNv z7v^S)4dtE^5vZm~r!Z!Z3nR>js&8V+b>VlViihCZW&xl){}`gmJKAL115n`tNqbQ_ z|K!=uQ@vZ>r;~1I@+8dPmCw2`Sc8Y1Ywre{}!dLcMCL_|Un&Zc`!n;LdB4Wxthu z?e!7oZNyDo$aRhB9d=}IN>QhSzkYivXn%3@oUiNPY(6co(`P)kow-uuYa97&G+=Gk zdUBFjvV@VBN5GN7Map01st<@erY|8+8PK$MHUN1I9e!#eK)`M|IsZ>H{2l25QrTa> zLKB^-!}?3mZ>ggRpNT4&U0ZSaIg2!iMn2sP|2m1`wb zYE}yz8}o5kB`CNGlxz$9G84AC*D97ME7XI)k)BUVwKgHEXJs1XXT;}gU%NC^8p(FL zk%3}EM7~emLb~_U%USraUrQ-Pbrjrd{A(aMp3)1h=Z|||eD?uA+k>h;q>~b{I|8IE z%r1}Qln*!aYTEXTg$kuthUX{#-QMTxhnxfDAL5%I3(vDzP8=weBW1GZk79$%EYz|c zyM~AN8OL1Hj;43!vyD0%mhIQO9IHuR*@32x>3PS81cbi5hZE|__m_clf`;!HIz^FH z(qA{?s%HA6Qnm+iia;L*_A_4f6ccN$tX^Vn=UWqvg%&OkAJzN&Db)N#Yt^>z9c@u^ zXL&a#{b+MlX;(i4ho(WQLieu+%f>4I(h7H@|GA+N`+&9a>$1tR)fw^wmvi#^Fy)25 zvU9-rComfR0rTG(Q>)9|)9@c_?ueMQ9S1?2*kl<~2KV)UpNzLN1OQy^}>^eD-AG93#VIlMprc?r*)dy5^zB>x2@qDq$ zkZ)Cy&dB|y@RzgOYkeQV zO}|d(r8qo^YfX)+k|8RrXZCku%N+S8VU?IL2c(x8MU6VercP306@M%H8^NkKX@uaO zV@#ej=cJ~Vq&hp0PRLPa`&XTz#1NmkmbfbW^xZham;Y1v*EQ@r(ucye#jSf6p3*kM zxserrexXrVZI;i+)!fM~_tvkU7~=%IyXL!QF?U~(nM7fc&<@CD#ODs-M(&c)0^Fiy zg#ph=H}u^BB_{R!qBdmm*3%a4{wQc2G2&dZ9_lFvG{-3xmzVcjn;-2pPw?-|$0CqT zN2C1~$f}{Ugc}sBxvFFRE=ax2*di|*a6<@A?c&k&LNVIDq$D+D9?`egtfRNNxEQ!3 zc!f}6(GJt)v$+070;x{(p#nQ~XnRzn`~Z0XTp|>O9>tn03*=r+U_^9 zWzF3vr_O|6PW_+)jCl@PCK{kJ#E%ZSg(xZGW8w11%a7|99P!H2?B=-zfKlEiC#z`{ z%4qc@yqW~MG@+&*cEM~gf(`abz)8b*>x$sa-L|=Bnq~4?l}J!{>n)Rudhu}I-Hc&r z6xx*iC-ykBfc*-g`>-F^UCiwPD)VoY-4}>h%c@y68v(Ixjn`&|wl7ivt9{B7W18|Kcx+tJItQ|F)#- z^rXICZz`)xexok~zM-Krr@d4Q2wrFr|KlY5PK0 zVT%r<8s%QHnf9P~upHTJ*20%scHdXx+cuD z3M-=|a>Jt93Kc0!(z%&@#Y99ZVLHTJa50k=)E>28G=2>Rbb}YevV!6Mq|oK_fw3&! z;($n{_r}n@1(u}Ge$yV>fHC|G-`_M?K48(^XZeR9nv5R7phh=fY}HdWzzDlxj=*%m zAYAFwYU(W9DDC@n}!4bMDI{g^t?=km(Np;lmdCoUrKZrYEZhk=JCfh ztf}3DzFwu)iJRU&x5LLI2l^#zW~X424v*7Qo?`I&AAsBCB<0t2Z^depP1FpiD>1k8 zR;drY-B!8O^D^OHbwN|j#K?-+Vw0!hQGeltV9p6Z8mwgDa%hT^P8DQZqckP!ui3md3XM3YJb|(FJ%lWiG+xR}bgA0LgUj3P@!}e?lsO zqFKx;%3FIqZrb7FW_})eoRLVURJSU%j?!{Fk+0u-GAOjC8qkyY1kaK7u=u8Ml9g`l zb(yn(MTh}EY#LLApK*#3^q3(&%aA_yp@? zYeZFIeilnXohviBo9p81cEU(V3Rz_114Z`LU7IO9bL> za1{T@x7a$-sRHb0mk*vzuLM`K4`26S9Et<^_IPS;CN>Wb?lO4R&NB8BCgUdgfo7m- zw{J4)pSfO|3yHUjrJT?w&Lepp^|6H61ECX`b+`O0xzp!$n#nS6J;NKOHw^VPlP3%) zd~)YH=0L=GRkg5snrr zqtQ#o#2qmssahft2}|mFmPOMQ(9TmlKg<1rbKfMjVCqpGq zlW9RZ`uOJdRU`XO>vl8Jl`&EFwUU@U&;%hJCGx$P5L6RMDwQI?Hbr)CzfZVaK2Nj& z!Q@rMAN>XtaL??8CWXWq%yLA6Av{5-C)Nt~$LWnHEcf-LDI>A^s4|Nqg*gXfR3`Ef zf+`v}xb7mO9Q1~_Y6io3xIxxu+VTzMHJL$Me(LOxOHFsMlJyrqukAR}>dQUq+7AFI(2C$2@%*s{3>0-z_iSs!<{gJ!CuzBWyWlnjsOkS?*y!{F> zQ-tzDWsmHXLX^q^Sn-NN!n*R@ZGs;JkNVsr9j$R|kJ!+CyI*vgAPHWnR+SGCY#w1< zvec1LI%QOt%nTw<6Xn%cSz?^;0&ePfd;{Ym-`lZ1YlF!$aas^vYkM?mlb9-jc-O>7 z776V2g>)RzrlS~R+@=`MjK?7>^#jP!?J5ntAK_(sWDNE=s=YB5Z!Le>rb9FxqDH_! zo;hnJwW%};)ZxKH*Nn+1?KS$o{B5$bY7XGQYf_}Y^18@$Lh}r5%gQd#^r*{x^%~Sm z%-1(?Ua_?D^`z&s4ti7afhYz8u;jM|zO2gcV5oJH7#aTp)ivH`dgH$STIq{LcZ|%D z29;t5L$`6$MTXa7sS9g}n)&qk>aC1$z@5FhfWukVsIJhrn>3*|iEcJ5XFF|veM5X} z#IYe_nAz}fDSEV)&m|2wEp!S4dHh;4w>QYZbv z4@0^JJ=i0zewE?7;Wm5H7RFC1!h%-|tVSNJpq$?KzWS;`XIC|ti)1UXb)2Giw$|BE zN!y__@~L+TZZNJ^1xx=v0P+idtplQZGl6~m&&Xiy!e5!8o7iq8g25ukbV51Ts6@yk z{rN(MF`}G=TqrER1y31Cmlw^Y5S3flm$&`cIo`tl>Okg5aR1#tBIE9ryVi#z-qls6 zM>c0d9wK*SWE~~UaGj4M3`FxsUfC@U^vLdJr?IsRA>K04Q}fG80JuE6)lx#H{M&!P z9cAam*I#Lem<1;b3EeS*cvL$~$nW4TE%vYUsBc2*yw`fKzP)hkz6+76Dp-d1DYBs}6&h)mU(c|k{P^50WJ2*@{Alkk zg5gu3TmC3~*8;os0oZ))kOz^HS#@>mS-~JR*MYly!a9$adlgSG zn0T-BJbd+c;(UYp-R8f|D`1683~6C^C8X=;->2I~w6?pqmCo6fvALYKxn0t?eBdma z=8~Z_?smwNrrnl0YRD{=GS-nWzxdJc=c!V|<~3NG^R4gn2I#pCZ{p_wmLE%`+IoxR z#4$8FAXT}8t+lON9pW^(RR!0g0;s1Y_&6?)@@QvSb#Yw_bxqWr_tCo47fK@sr~Y)M ztah9YS-koiEaZ1hfQmwX< z{^&q1T3P&`-^+go5RJ$zA_istJPXrMsuBq#SVkeFV$T1D8Dn~P( z;P#aM5&L@yt^bth8Cvu$*b?r;ViYH`<-A!nBIiG@0bxCJ=$t5ex{@nhZ4YDQOhfDQ z6PFEl$0m!c&A8`7gp8J?m-*F<&F}B#ppECg1I?_%?)5fB1G&FH_?6qQ{pV|*#h>bG zbUyB{E^uCv|I^NNvBi*sYgY}l^IqKAkkcI4J_D`O7bBPg!3gYP^jpx#6 z67-l7)0x%zIIvlm*~xJ|xK_hA+_grc1B7WzROtMqRz~^&vQ?*HlioY;S3tjg5#yNb zLn!}pa!E$UVWvjk#C93?5Sd0%yve37ms>X>#aAkP#onW?mi4f_A5CB+(6n!mZxzRA>1r6}@Vsq`Y2)CsUADXj}$fUUa$MHb zmBsF`qL{1%i?XaAQ7L%WX>rfF2Wu=jo;`(ll4jFY9!(|El_>u?OoKC8^T#x=F`Hu) z>~uWLGQhfEBRVG&zpa$~RL1Ft9rf3=M11=wF6=3tUsi6412hXG=CZR=qNDZZhYNt# zW5nAkvO*q3K`K8p_f6LOG1}%8BQNG-&mWPHAAXX*-d)fP3B;50kncq>$f?;Cf1$t4 zXj5|P%L_~4Y4h?grNm0QB_i*@ zCS|ylbyz9o88#z|>u~eu3)DNlZEz9fhlAr=i)hZPK{-#W!LWpG)#!1 zHJz1%we6Hc5EQK`4^}cgbijDjO$?$oos@&O9q8i97iZXW;6+eGAS#dNjVe@gKlfxb7VkCZYpNOyZWcW~mnN0@pxWc*+<%Sbp z*gn$>xI59V4HTVr>{bZ0w*HfMu^fYNfjv(3knTg9O+&55pjj}-DK|c(NA`OX+FJf5 z;s#5Ui)-(+Sdo1%-Y)MF!r7~b_5wNS9MjivPd(AYXT2c&zO5Td?FyRAgh&UYmWmBv z>M7OxJ^z?@Mf!sZNZ*?+>V21xo`y(A9m9G02$%3Cy!#^ymGAtXWv_-WGqRl^VV@^Jn2|QTc+}?J;{pl1*B)UD0LW^QK%#gttm4KfAv zkQ+OBSaj=VuDP2DIBVRVnmoLh0y|@A?||oR)hYu~OzkGmBEa2rRe|odcQ@KLk=1;4 zvQI>B6YmFditp0Y=8fiS`n)~tYI}3j-~aWVUYsx2g_YXs%oO7Nr1?h3txKc0!S|y7 zr|D#5rE%EUwRY@V`ZX3B$maMWP$;hih;n9rK37ge%JMLBxUKhb;5S`{j>=0*Qre*%1abm8+#pF7DyC|+FjMb<#e zIoKne;3G~UTQe7khwF=rBG<#t_ejb@gIa$nr>d+mgdcuHFLqh#{Fv7(1u5=jc5&dmz!~>CimwIO1YrvXF=#KWRb}x z9_QQZArQL=dfw`}c;XPvTIaip!%&SZCP7+ny9sUrwGvD8Z%%eb{~gpx+_)xM_KTwI zs(ZQZqGwpq8L!_V==%LG&3}KFmj}7X|N1Z#oT=G%*f3nxwDw$-=JJE^&^SKOWC~m+ z*ao@Y&-&AuW8tC#>}PZVw4if%e3(V=d#C66HrxQS@vrgY=R?RH=rdaVb!Y(pFaE zDn@yw6&33^#vO_YN#n+SeVqyeqx^;6*e*RTj=ziATOul-cuaOQbzSltW;(R35^_3w z1`pl#YLerD(5uoz+<7;=qky5hDvB(bL*@j}SJxWegc6$NF+*?eBw7$Zixy|v51y1^ z#{$L#9gr4pQYEGtZ4-%0QW1hIQ!7tvCOzY8k zJou|o-|kn$0h&06hDlHLBi7rKC8jO9F2F`$qxMV(1CAm#}Nl`~OnBcy3YGNftYn=@9KW~Say=J3vk)t2BHDI$c0lRCMf<`flL4x0CM zxU$1zaWSOXV@B#*EHACt@dTceS=Py7#>%d#73*vKQN^kGW1yh}FW6p*oZEn@Q~IOj zT#MhmiOF3xVnb)egJcI-cQA+3mY3`Gb|Qe9Bju&0oxFzTNP5yzDJbAPvgy%s_AK~xEBuloMb`t0XNJxxq;Pxx}Ke3?GPT*1xdZ8G3K1>U?bkW97 zauCT(hUb~>5x1QhIDs^d^h)4Zg7Kdw(LPK9Kmlfx*Xu)V3@(32ZxAXDi7g;ZqHHhj zTb&kGi-Ee}Opj|)N}Q({%iWp|c@)2M^?O&Z9DcCS)+8NQl@+JVgize2=0Ily1S>>S zILq%~jji)1ge`s8UY0$R3VdVaMW@`Oxy3)@X88oeCO7x$`M`vfe{|W_8YaYTe^*5x zjumd~{%06L8T*wB?=>Q>;BD+g&p1F?tFV)bstbUtl0%n9Oo@fG?Y_Q2Fu`}`ob|;; zq?on!H%m?qiZM%O2|WBgGDHVr@krjCx#O6ATFV|$@TZDk?RyH@ixQ=VgQYE8D`gPf z9vFDi_d*jp26u}thihcw3_wSYh2rn{`;}1e3#^FYDZh$USotCrx+YmI{qfz-%GMco z89N}NK#Ee1HS90I8E@5`=%h}+U5(MRU<49A^Guo51qGZfl|9^OH#qEZYmidc$;cMU zOBSn1Qh2$irt@M35BQV7!srjrLll$eiO*~n zP4u*~$LjJ4>HJku$EU)D-DwTQgv&EMoJ)Xah)3V!IdGS#fomg1)*xc{*xR^Gca=c* z1LikH(A%HuVg&Zyp2%Ts?`>TQW>}tulE7og2@!aXXitb^f!^!KPP9j@@!0i+!Nw3P z_*IBTPqCYSPAt|x$pYollU&i-g+-!s$z4lGB4^d&a_bIU;S^l$i=N#4p`-7a(%^xg zNi{I$BasK~c>x+KV6;6fBW|LhhfvoM4?SNDe}8c_aZrBt=tOWA^ywTE(4m@Ag}dA5 zcZD9Pf-WvS}xHe1-NMA)na8E2>+_wa6i)f@oRz(nYTMQ{j66=2yoCtj(2tMMPU!%QtuO%>gf=tVmPXj zq!04+J1*3dNM~WsYML6Xu#-sRz-(E0kG0DTjqx~+wXfq58#wQRQ@4p-Y^fJKMS4se z*`t2rmV;Qt_mPMMNjxbAfR=}W!6znT4q`?>{Y&*{o_#-KE|Ero7?ChDStc1wtlZ=a zLfY%zMcRaQlVIKDriDyQ3OIBjYM5)2E$6>vG%4UTdT$2uy_cV{MwE0>!~wArS(+wi z+MIdT4Uhg5v<0Z~*AhXESpFVI+y zdsl;W6L&Hc@>lS6^A(`0A)?ONXL5zfRz7z&`l#Hs%m~yxZ$?uy25W%D&fB}1l3KgD z+HfHuq%a}6-E}+*g1byRX{6D_0>GO8eu72+>4o-eQ09;q+g_YJiY zo9?f#>{+LNPrRm7&r`~o!;oD+&aN_u=&5_Yw!fXXo8YSkB#m1|N z-TfM|RQ^xUx;xd?{0!?dr|?>DgSbaX$0zVy?xfm`R>ful2z+iScY?uPqlD9`(GDg0 z-Ts~He=a>z?McpC)S#?%Pl{nqibpF+)d;-z1YcZVH@+?8`FnNzeSu5Ck7gkDvUYh27WFeJe72=$h|>X_Xo_D zmtRI7a<3nt7jZ=apF{VfcZnfFhLP#`=3d!$O5%LO!B zPytA;<=>dcSdlPE9{Xho|HZtg@*R`j!D(*P7l%W#FLA7Hh(R_U|^B}4g3oA*Ng1tl!6vEEw08$D0oX83U}F|Sx?TMB zejPt$ms4$9!Q@W;Bpw%vYHN*>_lztjGo6ZwbQC}@&vu5<-b)9{0c(;(B?yClK@H@ zz=+mRfQ0zXrih%UDCnmlxZp&v&*b9Na@X+r)*Cka(z(64p*^LN;SvxXh8vhmUl2%g zge1x1H5BzOw47K-YRXeE#=16^e!(u5aglNx0?rxXlR;*d)IRlWD?W77gJ|0u>+6Q6_c$MlPlQ* zkL7+nu|R{P_<~%b^eWyc7H&YrpD6z;!K{klh$*sgAxoYAEx&*o1Hj$qk_a|Tl^+X` z5Eq0PqYyHMV>0|Vc^NBVOiFes;pbN!AcBUbGUa54If=Gi?$_-XmR(H;zMtdM?FWCO z`BOkd``anPql#Q`MlvGx;Xj%oUDE4uq2h9*)yc+X()5E3yMyY8J~D(@y<%X@Y37zi z?am#)Yr~Q){6N^d0|>dDeQF@J(|++sRaPn>6tJ;3?1JzRak^9=DKu4IT4>N8 zmEGNxU*6cd`W>yr9-Us14-x302=+(-|5yliaqp*H)qjD*k$)Y``JFnIMff9n!cXi9 z=ref!L$?BlV2&6pe1_X=qd&bl^E7TwnU)~_@M}}ICaUk54p^BpUtTunLZECtNGh+$ z7sR&e#Mw+Ud((saYdOhy8%#zD`-$y*qoH<(O}A9xT*ns!vK)M1^+ph%Tf|1@`Kd4q zHgm-KVKsldO4#U||KhGugBX32aCZhTKDjCh?*g4~8=gIRYjIY3kdcU*ATC;GYEd=? zA9VGqR$q}21LP$@QyO%kd%_G|2D5NKdvPWKNg|iMe(sU)lI7sBaUz!u3WiAAkF}<+ zmp4ZHY1($WSmRUR)@PK=w}!`3Bf0Vwh33QE9|1A_Nlg?An9s=jFa z8D%T@`BCl8`xN!}oq*KB`?A6GhRSh$V{A6nZ$Z$GXQdb-< zQ$v$d$WXVHn= zeNR(Epz;bnJo0I(IJ!85-yNIieDYI~AoefGZYsv}?uunx;C?+F_W{oDJ2})y>Kp2# z8#JrNff?x}xhH6nkrVUY{WhVvr#DwIg~^odldUDV;M0jLCHupojB`u{QqLocf6@dCktS+Z7l*zPL0B z1X?_mxiSOLBeznT!vHv5M}*0Bk}Veij&eA;YxahB6f@hL2?~{Zp8S2M#yxEg+c&jZ zA3+4g1Lqtk^PN+`)^CgTx=?EXn_-SzRHNRGou_a4%x}SXF`S*+ppgr@ZM?*VJDm)W z4PG~MNj^6YHpM1V|8=^x1z-CMGoPJ9vrA$M0hvL)zTb>KM>9F}6SLNixw|X-X|i5O zoeulM0RspVDI%9~1Mj^5d2d_%Q}f);Yh!`^NAmgc!{mCR9wK9Z{g5q{_#V|qdLU>t zx2~c^x;p_y^Wvd-LL^oC(K2Vy^Y0g+P~7<$8lf9K|Q&?tl@;Rm$DLjz%cn}RP~hyC5h)mPq6yT z+b)XiO4J959V-Z-Z3|>cw6wACgXhGPoRN1gYvs?jB>uGh)xR+lxL`F*9^X_zMD-G5 znKJv^o!mLI_q;Dvl%`7gmw91}9oAuNkHi5r-R(8(nx0%QLgHM0R=j2mOK9oZik~5M zSVst!YSQ)eQd2YX^`!zqw%XN3#|@EwsMBcFVUdQo(~O)k4yIfaXd`AgSZP}^KV781 z+=xGMn|f)pTyIt%r8UxK;Fli&l?@H_@W!uJ@?9J-xZT<;!E<|34 zZhlOjB&_Q$(r+kqFTTb--Jhn`#J!(sA}((d&o#?qxxnk@^E7?Ob)F7zu|ocd8UKQV z@yQbI{h+v6FxORkgaf+Ql6)`AD%C)k*Xk;_hymKAjN(^+wvs4St)j;KsePvG}K@4wVe3y}ijP+uIcxUz6Y?82eq zQ25Z#gw+vIo{Z=BaTVts+CTOjlamhznMo<|Wr&Zh@Lbz6s`>D~B_ z$N2;txIwfEsNHQSV8}Nl>Zs<6Jo%c+*pYcu7w9q)E{!|84<7092kZV{CVsfD3B`|boGq9Im z(a5ARemwyH9p@9-7B%D>;zAB=Qrwxc;gj(Wu25}k$hwH7Q-3L0A}(`z3Sx#_&~FJU zi@#7oAMtu{V1hmJV30JpFx}$5&_1CM-+d_IEx}+EbYXQ1NfCZBLnDLHVj{vahWJ^6 zm0(6(7k8uu=L*r zN7;9^VVGkuyiAAJ7`@_DC`3nZAY#tGp_8XRD{7j-Cs9vX-;l6$mOz9N@;B1fB(kJ@O%K7UFU*MJQ$k0n`8uNG6 zz7kE&IGPGJz|U~lIqq{&X483dB4fun;Pp1u-EL_MCfSXN%n=OajZT5{Ak%I4M)-w;`j%)luSc$Sj z%(jlncV+1TJab~R2o^oz5<=FCD<6m8vKMjO45bK&38K;oC6ZXhjh~mM6vg9FmFcf% z#lJl0rsXKdhz^q5$35=$CzSW)#Ktt&8$6Y@7eB&F*NYP0?v)M@>;TV_n+29G!1W@C z|7~sgCUZPzsIqFz^>LzyO^Tg5L8b6R?`6j8G98cgUBB+}t@>aR$I|QKK-XYk0hZcn z#iZO7#1scy+%)O{xc5tnCRxkXH{JTHf3JU3l05C>*br?UM6udDS>`$SMmq7$OtyPF zJ;l$3JPs0SwN}4O{wZ6$`~6R+WSz#jW$AV}=;8;*7=N6HiB{F6;s|SuOG=553vjo0 z<5q-oiR(hUy}S8QtFL%KQR3D1*rtrvc6~25Ilhe^ETi)|3hQ|vpcV|0SeH-2XmkG8 zKayo2aBEFGjF|oDa0V@`qCR^LYBW--93R5z)X@$+$xmo;?JT}w$ed~e*SKQ_T|7#* zjyrM|94o4X8PuKimS;UH?-bbljD{6vvYSNf+%`;9U(3taYkzJypD15i#FY)vt*dY# z&L8o2(cEodPJ^7I7Oz{JYG~inc_0V8Z!c=uMuUH(w_m7_)okzHW#I5#j_{-7bDQ}Abx2b5THzRUSLg2}MOuDoOTSfh*>ShKBXRr>0m zq2Cg9FN*Y6e#C~ERpBW~zcT%k0F&EQTAS&rFX9iJ7E6dKby}YRqWsjmI_6di-TyS? z^dLBFL#(io8If5BrK#!2KsT!E7D{(415+EmEL3l1udbt+dxdy&*>PnxIpu>IJt1n9 zl2P6Pqdc=LQd!3^Jqqk)3%eE8<=?JdPhsO1l#mLLOq0sUs?MATV8v*AO?utkWSpQe z61ho@eAK4r=h%IK(oB4(T=<1^;{bEjgrd#`8f_^Xt4-{lBZadhhPF*SfC@5@*7)oOigsoVup2ZriHzB^jqH8zp7MnwHvvw#FHE zE8C)acpSpW#3Ov}pvrsj=m|~e-ybBTCfhvRH-TK58u}`LwX>HdrOmgS^mo(Z3ah6K zAG++<_wlH>f<^qs(k?cT6-#Pm!r75MlO5e?UDz@ss31vQMJvmB& zZ6mF#;O^5=wVK1BP_i68D>j9u%2cf;rx95vA;V45gR+e?HNds2p@FuBMc48EewzE0 zOij1C9tsn{vFf1cRg48;=mgNA!t481*wA9DGM~_QcX4t<`Ky#PjPO%;RvLAbE;Eh((uXRW9O3EM2uq*RQ z-5pYMkfGFAnAk2;r=&MVgk9vX6p=)4B0W$@Yf;FmIi7f51Y(iN`a7K%U8ZQBwM^Sl za%vs`IS=d+R+*?=c;Q(7FV6Y*HFZYO!93HM*O~HJq4i&zdR6&^j!~SnQSq}FXYqEr ztt9%1&P+<9wuVe1nfciHKWAoV>CQsj6g-D}j?IsGnG~_{4@VC7?roCKqfL%ko0Kz& zm=pXSRh{y_BDxHAaXU#ZqgqEVhgbImZ$59VpdK~<^8UsDtMeA+C(nr!h!;py7%%x2 zfQkOUKxCt-`u4;h_Mji+e_QZKWC&m>_Rb&>02MuRJTa`DwXTUP?L<>Mjy4%bCfh`u zzj2pE7ST4J4JqvY%g?+UDw5y~UL8(ta<*}>MXn9Hz zvm6z9jk)}V$WKCfIOmb2h|{{y=SylAy(2FfJ1=g>My8i%%<_`->4)2PkkV`5lO zl;$IqoruDY{)zOpFbg!W(1kv7ZqR2-1n@h$c;$WT8d}Hz`dB`cKYy(}BXKR#%aFii zlExJ*uYeP8iL!$rII-@?0V79Z?+8PR8& z4z7q}#q3c5Cw<7X*iB$!Ysc7AF@{pSFzXY{#OI=^TOTUbBPDo&@!o{`PHMNR0$`88 zY8Tz2gF?z*sk15kC*0$Y?FxITb;k>hYeQ=0|LGvt;^|I@Y4i@?Qcp=31?}N-#TRDh zA1cP;9f5Za7n5`K!laUogf}Ct2CS)v(113hH}LLhLSv3p#_b&gW%OFZ?(GLz;o3?w zrrJ!|Kls^dh8pj$*6QpcRx`HlS^aZB08{_;5)EKkrL6SvLGc*fT!K>r(I>*2a2 zSCAe65NVMe%FfE(ZW^IQ0t_5k$`2!ktHfO)J;0$85UjE@svK3;6Yjmr!}9~PM*rk3 z1?4q<$0s|PO^lXdv#&;!fyaIkoTRl&Z@W!9Tv3s4IZ;4T6jx9-z6GG<^L&w!j zy+&EHDxySxb4DgNuPAgUU9B?zfb!NJL&-i~mTV9g;(epp-i1g6$g(XbQxIuNBKhVs zae;$JNb`#@Ed@n99#vu-0yfMjc0DO^W=@TjHyI;cD!B1^UHXcCEFQi+)UzXBii|zy zNX$v@@e0!U@?hG)-EOZ>An?@Ck2rz*S<{fjQEarw!bePT{cV&xUINO zX9J13JkvHQaD3JP{NK%7mbR%7mFX@DI9qM-z)MfRwT(Qg(bRb^sNM?#eXB_-t# zV~59Ki_f?PLjI+nk4(sGh7I;kEq{OYcJhNc%Ceiud^3A{Z-xMZkq_2PUuNfG;D-l# zO%(^ThR9RWzDma{41^!;YDAyracW$ZvzR5q#$D}P#JG&yhGV62-?b9dseg5m-H zy@c?x2V4!wlUaW8_VXHUF%6en*xxNm;-2P_pSZoF=_X4=3siI zWPyT585~Vitx;2d)bVPxP+<>w?9gwV9C2VEC^3#p{$a7G;NfSE$TXVFiIav@NK_Dx zk|;@Wq%xy0?Ny)5`pmYNG}lRKpld57jIIz{q$Y43*!@t9Mr(*@<4{3pzp#{y!LO`c z5g#FeoB-qarbB_iro>*!%t1g(-a&;y-i}E4*5ZAxgcLYg@K1JQlH8qQB6rIDK;F+lOBaOp|)x2+B4Mc7f#+Dt)Uo1 ze2(RMWvriwrBHmh2hSE+hmZbFM%o{R$(+oii2zKbyub#j?%fm9Z2xK;x0V`0TgMkp zbZn$fsnH)2_NUeCDlC-Fj~V;Ign>!mG@L!6N$fvB^sjMvqgGOuZ!9s9u`D*nOh&ys z&wO>pM9P-T*CchMSEqAVolo;@P5Dv&f(3B1IgPF8i@)JX_G!FpcwhDj=`dXUowNj;(mb^p zP37n7@i}|=dp|LCjr>=pNO zP89E>;I8#ZVJ&&5nYAaFq#XS*l!S_;_(SSMS(#~skcHTHexJPp1HmfXJrgVc64J3E z+b`3=vMwoxP%`AJ!Ky_ zmbIb!P;t;*+3~V!B6)~GG(ZjzP z#60O?biKHUJee?4`<`WG?I?TqagMpl>~o{8k%wvG5V!&`2NR=AG zqYrWI@3jZ~ih&n!(@TpNLP*;G`;`jscPfgu_3bBP^W%|I-IBwXin% zZw`*r${uaZgJq+kV=DndJRRJB&`3X6UwyDT&b>z*ivp-x(^U=e24_$36$@xA;|ZX!%PO$IvS$GI_&{gZ+quR;4%3 zW;M80dcc0zdvnj%yO)3`AY{#fXq^g*PTEdyraSw7mRl&U8a6=jHe*bkJA=jNSag|w z17*NW-IVu8(P&M${gf)kLvDgvbK9BMEJJCnJXNV)J)JZ;ty109b(55=LVcVG+<1_7 zWcZ*h;>?7$&hvx=AJT-1xyn)eujaJBrE6mk0F*3<0cy!9p&1T#O2}g@u1&5_3dOZ+ntLb|Qt@ z$#ku9Vx7s0IcEX`FkCKWmWmpmljzeMKduSZE1Mj-T&R*wo92t*L7$<2pUkB+HbjSg z=oH1K8j-@{s~U2cmb6n{oeGV%@3BCru=+!B0MGb?IM0+!o$;2?x(ORhM`~sYYvMH6 zSbQLLvVT;s5hotG7C@Mq7R=qC&!Vxq=zxOtR~^c@Jz19mVB-=iJv3Kuapa>>%(o}Q zLwedSJZ_W*g?D>=aAZ7;3NvLaIx03)fR-uBCIp;z$h%T$G=Rk;+~(6;8PP{|?~^O>??98?b?P$u_2nqphP;G+ zwDY8_2>AG#;jiS$A)4m3Rp4U61M_S5$s2n$$S@#$iv4Eg-Q*aG2Q=Lwk7HNfc%_vw zRM4R(SHPjvibQth`)J~HEN{58bzmM^&^sW2M+&(d0H^`|$KEUbJ1?TdqK?=SK0uhQ zhq#hZ7&jztITFmJfP2we^aG`0D9j*_TnHWhAfW+4(S`#h)M9YKnT0sHy#~xDJ|_|r zhZvcJ65Fy@&_-O5tuprxCqG0W-&)j;19urWg`aGjaUBUi4vh=N6I6#8Bn)AI+*DGC zB)2~ez(Jf75!RypL!2MnSOoHNGl#yk*w-o0vxnO*!Q_<#;3E^Z!Y|}_-GbFnr{5vXY3;H-0D;4YbD__Q zZi?FZ;i?z4@X5JIiw^ojOff})ghZU;C-Zv%5U{e9+2BkA^t};S_<4TKpxn`#aQ4eC zvq7|(z|+o{ju`?Mh?g-5-bf?26=~Uui#K|1!_o67$&He+g>D;cPZquO;i7k1q%py5 zJL8_ag2Kl@#YG~6Yvazrkw%N6;gwQD=kgy4)l~RRC%mhuh?zka&mFT11`fL}VTqCe zLgw&Ud8vK;Na78UTa@77l~+L4QaQ+4%3lbn5gT=z3Ih&5LtUz3zsj!RhoV2&LIx>)Q-YPcPJ5Bek4$M zSG@*AOQnG^BUQdtgT5u$DN4MESSbM%6F96>idpOd9(@m=>%noA1I~gX5OHdWh@gqn zrr->{cQz~`g-tzVh%jA00~K5(7ENRQi4kVK=C-8^G%d{P1nYH z&&K6at180_K@O|$A1E?tK?R`qGz1&x!Y#t3#~!j$VN9#nh5e79*0tJo$l(;Fw8JPD zg6vp^x^Y54H8s*DOsD~gBPE)f{t^G_CKM!3-y}KG1~$^2>FnUMR`0mH)SwoXF7)w= zuuwF1grI{uiZN{RgYFSow4)qQpVg+ajNLpaX>V*c2zA_7~2Go$@ag#n` zmdM=^1>n7IK18!&7pST6UT?Kx}UmWna=CB z6r4-@r5oUXEx>&w@Vd8_gaoAT2o(8&(0P`Lpv1R?I5%M1vM>{33w#Go34!|gi6#-p zDB?^W5!FKPTIT?I0g0d0iLgtFsM9x65r}^Kza;0%Ajp)Wk+Vfe$kYZwV>5%{jT^!L z@yOi?#qq+KSF#_^S=J69SvRgH4piRGmiD5Tydpv20khVr$`hAxK??2T(IPpcf~9Cv zm+%9Th%j=v0}~^vK(5>hH%U}2_urXA4bHQ%pMgFxwOav<@d%ZE=Op*ar8iAy1+?H`@S|f0V z^=xKwtXdCfgeKJ%P;h}x>=OZ*n+&@{#LZbwC;xsMYk2(pRcp-CFz;i~In&JB!)45CZRzu6|$u(srSKl2Kei zQB!(TAN;5VbtJQ*4_SrZDmWI=Y@9zML%+yvZ5TtJHV7Fk;)R*Z8*^0oxU7z?A{={~ z&aB!168WZ}n&Q=0C&;uCo*4%O*aMyq5RCXYXrbb%oqrPB#qF%fvUI%JoTdLI)`z7@jo zQtFv_h>DRHqE0(hUEd?z5S5ZkPyhk#G(bTy6GEDRlEbfFaIi=04oVS5unjuNLy}Xa z8DdT5tJ)h{_0C5y1(*m3S`e%h(tMW{0u0a#$_S}n9a-(z4pAF6!R*a6k^oj5Ou)b-?q+%r4?tuFP z$kpDPLMClunLthZL&pK%{tfBq^_QOz=4YwQ3=^hrf6)orNh~nj121ECkc>jW!wO)( z{Oqpnlq9OhuD^_JfeDsq+9k><^Ybt8d)p?z-xZ#j!?R=Nke$88aL3;RT7?X*X~&l2 z3**iT&a5SpNe9&x1U39*r_8xzN8UjP)08K}{uF z7Tw^PMmHci$BUD1;7R+C4ULO$>WN=DGIZ|6bb>ZH1;`h$zjSze`?+{~d$rjzn6Ywl zy@abfHUDJiD@f7sT}J20wd?gp==(G#WOGVh1^7G-1>6}t4#6IkAn<2haRGR}1o`!A zgl2NK|D1BQ@NBssY&>Pr=(cgXr7?I);B}(%IbJvkk3W0gR1waN32Y#H2yxwK-}0mg zG??Um4Rdtf>~!D5?x<0C>wO;%CE5SOyt*vt+cr#i!l}5}q;R~PuHZ?z{@3PoJe|nH zaqXSjDSiT!kZA_8%gRs&ZVyO!Km(3($~@!jcVL$Y4VHLdC*@7=1FjC8I^(a-xw}5% ztmp%YY4Eb^zBNZUamdVSvCo`Ssm_@*j+wcnN=d7k$TmqsX30+S8@>u?prY(wBY3!a z4^`tA;CUPXe8k=fc-lHUZ&ZT}68TQ;Nkr`k*lM~qt7D;dTB%j*t^tl_BgmfrOqj~@ ziz6vh2^r*6Tq^Ne6dPU^6zlMmn&r&Bp43}t7RAY7D4R~wYa!6_kY7Tbz#iR}+ZU&D z45WE)!>C!)SZj^dnvn0Ss&OWl8atKQkIRnGv^jF7$OXyKxRKkY)fqG8K!#$u$!%Tl z__bUAN~P^j;<`J> z?C!D)G5a0p_NvCvNUo=q-nH_+H2;#a+wtvamAkd^dELRMQxdI^Gt=`BdY}`S*NnQ? z^KJhb`)&2?mTfgbdNoX_i%VhGeZPLQ9^SrX_uMt_>++a!H3!J)M(cbjxWU()?JRkC z4|#5(?{=E>wp%;i5crsQxn`rc{j!}Y!F*u_EWZ|?tnzx(x<6m106g}DJ*Liqd|wo< zzes)G+77a=cHYO7Z*Bm`U&S@>)>&=Odx6o3CquH1_vy79T7GM&R&IPBA3?o29CC$` z&WTflL|w*^TmZrRLnLhCkuhk;h^RO`E}7~0k};M;;xMj82iSRPVrlTyMCJvEHHo=-znlb?##ibsTg4`Ta}%m-H{{AI}@vn;rg{ zZ|)ORVqvXaNf z>^X_21ltP}AK{!un)jd1Md%|!0tF$7k#Ul-)bV%0Yybb1I9b~_bngE2QU3iLLX!O# zl35!Af(X#EM*D-s-_Vf4)y34I)lNruQ5y-qkhG?WEEL@^l%P1Vo|G>{vay!duw`*l zpO&^&PgJKZ?3YVL4iTH$*mo-!AXN~~6t6$fU`|Lxjp+BAfK>?RQOe^s(l?e`BIU1;4MqCUOO7n{C{*-lk5oL|SXNmIvDmu#s!1 zFNcUbBjzzD8K5qJKtCH5(^#t%JlA1^Qw3!CRdZFNvc|=WH1Etk=fzo>P(eR5o2dLI zvICrzUsKR=MTZn6J0~qob~Xhx##MR6JoBrB`ENf1lr z2k$Z6M3MrL=>HOlP~tp_jDm?;1OuZD2J?NOcSWcRpu;yLAsUZ*BzpEavqq0KvIsMY za392clhrpZHO!>u*FTv?9s-(Bn=tj7Mh1+TU|@=L_D&u+5Nr0bh$b0gWV|M!J;{tw zW*5y{U2a~bC&e<$@U?_5>J7Er(jwCzc<3GKM(nwF#!1C{W4OOUclciu8nL_NT@pg0+yz%zktFk(*MiiJcP&BZFHnE!zc@ZI^5x`4Qp-S-m@RQ*yVMW)aVpPI5-r6Uaj#vnb5 zj8FJfVwJl17)!uEq^kwGbiQKptOaaD6K9=Bu_h8>@4ifD?h`@hq*(pxbLYL8VkOpv zAF9%wl18y{@vfBL&{bWQ` zTfB&W#(!qqnu%!lVfSnu8)yt6LB6fs$vC^Up-D4x`5fxf?w<(U9eN=iNCq$;dk82c zy6R+14uralqj^*7PsB(OVkJUe;4}^fe|WwwUJwq4(&xPUCSdg9QIDETQLimAqq8P@ zNiU(PHOQ`2%gWns*&a*n|CmW+$nu!$@e{H^{N-@jZBJ_)RpY7gG|>vd3d;RBOhCEB zG=wadtI*<=Wmwni%RE~~MF7>tmN0D`^)XgzTsAP)sPGHuIT*0X{(}JqtA=BBVk4@e zxJSkvdXvY}>D3X`;}c|C=q_{=2{I0v&A(Oa-~w4iE38~aV*BJ-(7Our(~o)qEkD!Y zv%e^EbE$6E57z3{Uz*kg?-O^AHiN_wP96qG4q5+p5dz+~VlZ~nivhi_p9fjvYcA_c z(+rUUd}DN<>;m)n?#IK?&ff%QkH81>Lyq6-GwU2f7Xa(8r<-Ogi4_bqihmE`%)Ef( zO9}aEgVTSzY1c-HYV8sL0EfrZb1ct6o!Yy+?OC_|?YynC(`O{CTThz@TV~j29DkPN z2!DL_tE-zsN8(3HH{jLEblAt$h{o;UejfjAbdKY_y{D_;CS{VRMfcV6un0ZlnodBE zs~0V49GbB*ZS*5#Q9S?oJF55TmMS&CM=`*H6Do8M;T2;OltLd^vleQ?9_KpLZUEaI zj38)a*TMbt+jDG}@PBjNb_&Kk96y{AM(F==N@)K>xnKGZ<$izDDdBnOWbh4~*&!W6 zECPRXes1nQVfjgOe(@7ooN9n8hvAOwd5te;Avpkw4kSc1NzQre_n`C$>G%u?wMf1S z)FQmg1(fm#gmaO#vmk3Oh$tENukIU1|NEC!DZQSXmk0hG!Y|*M8;_&)CqAfnaG&sP zHbB?&E+P_2Ig)V7s|y{U;p*94eYl(tO~@bG7&eO`Z{3wkXH`N~8V??uvjNRI!*#>D zs3zfL71>oLSw0ySbdsE->$7?r?Bg)=v!!I+@rv~8g{n@=7{!8Aj&av@`eK%lGR=*X zNm{&JTqg-<9vvkcx)fKZSGX86?*XxjT)_HQg5}?*#;Ta4qE3EmHH~4(>0ytp$0^cB ze{RDQQbw41n=)~N-t*3CQ-dn%6L`5ADzt{bo!RV@d-)kx#JK6TovBO6C~kq$bCVB@ zH}I0tg80-B>+wjYQbFjyj)R7J(N*-D!nm2j&wa3{d{V{V?Xg(Mrioz&kTFIO5&?!@ z=284nB76LJf)R0!N{0G;=pn~JR0BfEg{#=*#bMy+w$!UsQjIa5z(v&&^@(Hyt3PFu z39q6o%)X#HvUDad)m+0)Fh%C4;VveVK|MQ0MT$DEKlnIAC^=A8vQZ%kTZl?3 z@=&IyNc7N-4S_(GA_1HIAge;4 z&cbn8W`dFn!&WYLx1=E{c7Q+|n?r_!a^dir7Qa^^Z=xll0J9Z8Nunkq7lP?0uI%ZZ zGfyPsLS)jzJ#9OXzU=LD2g@!uy;ey~)QwFX49~Xp&QErQ*MqOnDg~@w# z1BGknz0}M-y5`5@-;^D<^PMihW!TGig7+~%-s|??a0=k5#jVEc@jRHP`C4N>I%StE z*yTZd1)(R{l@P%COlY+hSlSbeH{IyW`>-t{LF`g?hKre%uh6~IWU_MejGq>&_jlyy zChFfeDW45C6PPD@fGzL6iU+DBua29uvK&GH0eF>HtR8!vB;Tylb@E3xSMyuhEM!j4 z*W+VN3oXr87(B_M-r}oU`*y~V^-VhcxkVsFCn1dFZobFllQTcb{@t7A(O$RiMzg-$ z<@m!W7gOZx+$4Noq50Qm3=^X|j+!1^wj=q84%QJ^!kp7Np!Ij9Iz3&aw|#Tq!YQS| zfohs!ll@|JC|8%KcFVZ<9G=LZ$PP@G5uHl)dSGg&gji5v_Q=vQj7LXkgh%W3ZQc2a z23)peOVh4~N8Cz79GuLOf9&>5MsQV87_vN`VytSkr*qnQ`eHODG@8wgrA1~cGz4-T zDUypF*7^3Y0ExZx)pAYlO{icHw86E8JyihW9-Q)oTK&8AX!kc?ArFWic6-g4k@@Y% z+xVQF-HGjLh*0%t6c%HqnOl*5`g${Dw!6&~-d+8AdEWO|;~yTz9nQ6P@3SqB`^CpE z6|<%Og%Ym=j=HWEj2Hs!Si8&fRXm@Ih6?`9+1C{w0FR?)+n3%;RAS%-46}Yr{*V$ADr` z&gQ;&G^XsNJ2SPmMjI_jp@;V=-g6|2bmUNnq2rB5t91 zC-8kw8xeHT7s%&h^2L`&*sn2Bo;in>Xsa-EaLmvVT|-(m?(d;yeMlwA#TW#$WHm*` zSo9&qA$h_toUw$xZ{-5ycbxzIydZJ@Yl;6c9NGUg{fYkzaQjA}@wE=KCm?ViYl)2R5WcM$|0($G)9pe1CrdOnpsn zP*M4S>;d8iqypJ5#Sp+i=pj{1`F|~oFWTtnf0vnxW^!%2b}9|s+3;yH*<@9evZaXf zoukGmo-0-h^G=!nYAjxF$TU+tQOr0x^^H!F?bx@@A=5o0v;unOV`@I1Fr>BvSVEoh)KjtLK}Kd^xq1LLUC)6SlH6y5u13(t7-1;j zi~|Iul^!DMNYJ#XR~h6%6ZKo^w9GQoP?fg80BysWs+-F~36eTM_p0;A=K|p&fnmw8 za+-!=h2u7o=1Ij8z%f|m{6Rd?feSN$6~P6yUf23Ikr2ng`Qq%<3vqYSvtHjbH`^82 zF@;-c)XH!I{lKSN3=aYJm?v(>_N9ax7r|17Wu^6@|0yH1$7_;sx$|yDsbjxwhgmd zGjMHGnx0IpK8N0#%j&+U+X!szkMUM%e#UKI#zTyd*J^30Kj{DJl#eAP{Yg)hF#+sU zp4H1!m+L(orfVc?a1bg{QCY;8)CCCN$hFOF5SguOPOXd;8}IeVsESl!tlX7}ANL+! zan*Oe;W{@=ogW-&B=Su{N<>_eH3f6*d>DFb9d>haJd8~6G_t&8Sn=>z13Flm-w)0V zlP|RNW=^t)DG;?V875BS^>8@!2~~X{of`0m$OShZ>w^Fk=pR6^h|a&M^6Iob&!aNOvJ3GEpaSg6;hJxN^0{pro(dW{WE}jU832P;dxV@ z*6wWVLsg-iVxNm2BCt6I*e~?#hht-vl{YVCLU#x~1C<3NEjq4Pf+oe(?+1pSZ%j%M zlki)7RLVXdLDHC*UTVYVd6G%h)5Y&d130X<@eJ!DxxP0+DN~_OgPCctpNm;0P|3bK zMuEyu^bBQ88|fX|>lh%+mV~*tUkuC2s?>Kfh6k@r{1A0(1EWh4nU(~iHs>`b#K= zLI&Fc%@O_(hlCV|l4S7?MUD?TNirn?Nwj{vh}?ZNJg8tqidAVxzZ?Oh zVWMTYUpD}!Do+RID$e4Jkg&O_u6A07-(tq8lz?9eju{;bzt&_0hJALw&*XUAi$kHy z>5OK?qvs=VbysEA&#^T(8Ggf!+LpVt#7^Q?9jm#Bn+2e(9N1CC%a&PjXdD>lj?F{Q zrVx1AJoTCJL7k}sL%i8bg@L5F0&G`C?kZCr@>I#8+;6*7JN%oDuk*fzYloTDv!|i@ zM1|7`=Q2TVBC%x@d}GkDj}?E-4S&srb*+zU=`68-84MHE5`sB0HNcn%Co)yivxpkZG8fPPrtwlS>5*-Dx)s=-Gx=Qi{%ric} zuW>gT@5J6d1X{j58{Y2kqQR$ZUe83av-rB~$EN^fA=B5qTc7KTL)UygJ!?(>CfvL> z5@#N}>k2*w22O_WmVO9j{|+uHCg8KiXwDL|&JH`q#Y{V+ac?|5&K7!1&AO^Sqc_J> zWLB06M)Xdvx__q3XVTQF`R?9Ml`opN)P1~82s|Lg1p+c= zN+F#10hoP||7hET)S=yRm$FtKqAtzEVxxE+jZg5fgk*zoxKQ*%!LrG4Awl{EkKqO# z3+pOHlcPvcK}fMsr2Pb^rVh-NaFoWI@oe&(wKSz=I&|7?#DFI>1=smh!r zI6#+9fqVO0y{)mMPQ4stA0MAe1<$6iwZwt-M~QS)T<=t+T+R7zUKVGAL-#i;elnGv zpLq|zYJZ)VNvZm{;!WvyP15+%aeZPMt=jzx_qNm%Tta9cH=P4#l<0`**CA94SwWY0!Rmskz@f5?oG^x&bK@@iYwCupT zG`#{)d0J-r}~xQf`Y^$bF)X~zPi(VXn>I23uDCzFsf@l%;6L8rX*HHPVsnMG%rOZ*#> zW>Wmn7eUlZu4WdUtRxHu1$Q@CH1>pDJ6- zr}ZKSty-~kWQyNKoR6vzI@Tzx)IoJ&9+ z*&KJHlx)|}Fc!WINv;tq19~kE69brUv7Bn&jdJ`1`g&|wM8Z~%2YExq~8V>(vG2W_>;!`ZO(k%tD5tRMW ze*0%&*p9SWJP5)pvm(@z1*Pvp*=NoY#g70XL1mz;n8POO#fT$sJ5CZ%;Ft0Z*} zegz`hRb7@zO-6~Kbzl7xK>TGV7#t$9BkkX(tux(b-RrzyR<#SJO^ z>}@iJ7c7BUhap|8+?&!UJ7EMRk8wIW#Q=Zauua~P1LlK^E4<`>Bb?~fWT z&CLtJ&;z;`P*x64rO9IIU4~gFpHsxCpwf{rFUh?^f%$TIXi9g{41~3chHXa!(IjHu zYrljOR={*l0|Nnw>j0$e>3*HwlgCo?uT%5Y2x&@NN}F#3F9)meD$k-PV5Y6O2;-!s z?3yyHgrw*3*gE2_Sv{adX%e4~lY?o%x;5z9@cF7TUqTb7dPAKeB}Kv4UE|f)tC4Bv ztNMit*5p>GfFsx#n<1}vIZ2+^PC;qaysak~l%Bt&`rGSEDgr8?+xE30yq7?PgcRWJ zb>(Ig)8SUzyY-(@Jd^v1+zh)-x{uP0LCSJn<7VN1CC|5OC~f4{8HXX(5=7dNIvXiH z2&yT0dY1m3Z4imF3SHw`_p=jIicFJ=wnFB8SKYUS&`K2fk$$s7^OZzr$x+&+tPoIv zEjFVaYWY{dO9Sj-a8!rMHdY~om9Oq2Kyx~&WX*GOOM2TX{P;9%OeMwXbTC9~y~~m@ylP49QQ=b1&7LQD@WbENEUd%KhgaG{LV{ zFW4aZ{TUM!A*NjPLkWy9MA#B?@+oCN?q=GqbB;tu5muOM+Gw)-bt3 zwK+A&5rCv{p%F_z`aOSllKH4v8Stwl!OVwxmbD{?>kG-dSE83J96Q+t8t5*(@J&p+ z(s;dJr`%H6qB_KF|`%UpCJJK z2sP(y7)RWvj9pEJmn#3FJ949SEXEki(!+(upJ@)lBr`wwdI(f=PzH7{|c3V5Lz`_2l!is+?mgBpk8 z;63ZYg$lm1HWpnS3GZV#hxQ$%8J;h~<102Jevjs3HCe2X0~a=p5fhQVI%9>p6MPHz zVSreu28QGETS>_*Ou0X3C(2I=X^Ks1C_E@qQ!9IM*nqmk0LHKJ?rQ!lMU&v@{gev>(q0)T8J zXB(UYKSR`-k}XJ&5x8zFOizGq&Du1;`v85;mEy{?b5ixl>=B%VrU+3213B6I*j=V= zI#zL9?W|=apSY8O!+yEA>4t=~r|>6?xNLLNI%UwVL;CZqvfGL&@de1qA_$Urst}mT zk+pR=T{}3v?nkE}RIDbMW(Br&Ig_f~Fps8ar>Vq4Ur0G+jW|zh5$jhV=Bt*OvVa2P z`+)4g$(#P(^)mz}VYgs)XrHn$0zJ`KHJh2)X=V+kL7y$_&6aF*C^}KUr7Z~K-n4@z zGg;%ntDsIp+zm1FG96tCupx*O9@t$gZ(Yk*_I$z=xt%o%_1SRxCD56h5Lcl@N8Kfk zT4QBv;TY5%@l28><2fMbMs-DvXMk4n1)7l8mMSy$K99N!eg%?dypr+2X#vLHhx+pD z=|AZzYKhydby7rrl;K~Vd>N*XqXlxpoz`qCFrEbRbAig2uJCrr79FxSYU9ffeZ_;) zTvDTJa6t2C?MNNa^jj2=3;bNE&zjbVd0v}+jS3;sBl_+9gSLaLt$FOJjDRHDSw>^$ z0lph}n@dk&JL{B{E|!B)eBF;l$#pYGg+P>@aaDQkWFMPLZecsilocu=2EVs1sE?^@ zQ@wcN|$Pgv~co))h^Ee1xgO;N+xHjb}2K0oHX)s4UXwY^&3!cG8lQBofl6Gv) zUsk?!X|pYH9Dc;Rk3Syxqky@;NcOX}U|mqm$&x7~e6-In`3@Dipc#Ts8bS;qe|+rE zZCJ3~83(TeIuNAX@Dr}v7YtiaJv%O{d1Q6SjVmIi@R40dA6;7RzpysDn#OW}3EyPi zWQvS)g>|2Fo~1%>;a{u1?SWaU{Gr zDUNy}qkOk@MWj9=_(N6Rjk6dKye>a_--9T84SYmSI@=YXOMPTGz3G<9N68}`z-R7O z_wlFV()7h_`M?ZV@vQ7J#qSg7vL)(~RkJW_(+-ZHsqXD@Bhbe+FnTOV+<`FfMMSnd zl1~x!foPC7wGOCqbQ%D|!RPlOv`u73cxf2B%I8`GJ_@M|C&!6A|l&j=CuU6J{~Um$1M`!jScrRXiJ10LOcH(C3S)8hIlSRP`a zVjudYs4zInF9`)<9iprL+eZ`IqSJ=Ij%}4_Bv(R|hMt^rB_;r6$B`5tK%APKuOOFG z`m6-X3b%63?z+$DL!-cUf`bPlB#^ zzQ6nl|bDW)RFa7 zqafd(T_ES&@P+vPW%zEOydGPK;CIDK3iwtXbiUhgF4D?b3@-;oT zgUAR70>Ibb4UFrJIidMEd>KUY7>x9Rk#J3x<_usMEBq)P(v7Oag!Y+(Ka)vCzn&Bk z2H@v+Yrtj?{(vPZi8P`^Qr1^tgM2G=bOBnkAdhxp?7m*b&;W|T?nqH@4|-%h)rT)b zH_GnK;ck&rw~eDGuYj1qE<$cSsoI+i+k&?*gXeP7EgAth^LFa7eA+SkXV5B%204!5 z8cm_23Y|+Ys0f?>yqX`-K9a2^(PL;pa-j<6bJM`31k%!wuk|M>32-7Nhv;9ieLi>Ccp(&Ui4JK zOu&9Lh8VM2idI`d*<@D;8*B;Y2w`;P*Xs*d7e;-E{Rc}D0vaC0<4M4EvLGcVfkDq~ z*iM*(NmK5M)XZ272$o8EHOOrw{d0)4iO|dClViIqthrM-w1*w(>Wo}xDHZU_3aq)J zokb4=uc8}O`9DPWNOE4zae$-n_iQjREr4_;9|=Q8=#-Ge#=i}Z{acCzC2Cec%n{TP z-28j;hN<;NdesrMx$1A+8~HkZ+=k!32is?I@xu&FS#s*1Xp=AK=AYhAF%B=-))rF- zy8>h&H#Ykl=Y|%4FE5Ojlz?rhP1n?0nbcc!;cw~LETPZbD4~BVUZs z&4%?-H^ynVuiT%_?p*2b9^^-I`{KU0mao)9m5#V;-$Z5pjCJct#!#K@GJP4i&Ktu_ zKQ}Pfe>xmqnC#sZ8m)c&kJVH!K$ju}PVp(#^RgB%URWHtGrO{YovCfmPcKIu#l$zC zONd^RUl)Y!Yad8=-2m+}xF2JIS63Y{4-!XlYZ8Ts*#X=9q6*T1{+EQcs=h1HYYquCmfrR6(D4$J%hadl3?fd$(djx(`s+qNgRZQIU{ zW@2lSOsq*J$;7s8+qRvXbKlOX+SSipUDdr8{`LLd*w;iKD?omE>t$c#i06(se`5>( zXM`s8)mbRf$KOnUh$ul9P1@sc-(lm1R#y zF;bnXtwlC-h^20vy>8qavfi4PHR5-!jZdR4Mqyz0LHL3$@a|!2jc@#O3ju?Dm-z-b z)Nu`?LbsnH1(frjVciYw{7yOU54^*8ji9Zge553MXZ}z%L8!5buP-T}FJ~ba{>V4@ zHY21zMWPwMfjKV~)~IiQ2dNJk5{Y?i)pKs}k0V!MRs^ygE?gzrja?Rc>E5~3*WuBb zNMR3jexA=SxDsNO!$_B$?Z=ousNLR~-pn?Z8_%~9V!+6X4ZLs{LPQ8!3NpUGcC$|X zTHY~YI!OvT*ahhurLk%5M7Zy?hTY6G>5+ez0o<8hznhV9E78pslG-B1;N~t#hkhwzZn+F89o*;!vX&7fhDj}XWHVI66Io=naoW22 zMbAag2eFk6gb1me&1_+UgWRpyI1(8prNSy;Ru^HKA&m!E$nZ{ouj9z8i0Px8Ev~R% z@%29JFPQz9ce9*udRuetd>rIC6r88JWKWNjZ^fwXe+ukLoR!C^Sx1%PY-R|i!7(NC zq&D@l5cQ{}S#KI9U3FEFPc7aPwH5V$5&EX}871r>>i-kY%_XQUw54_-Um@+hA+!aE z>SaW{)yL6DOWdxZg>mO1$|7Aohq>1lY)OwpO{-SersblTJLEn&_yZ#Em903Ge9lER zhxKHoSZ&ATX3nj@0H0>!&g0#cy|Ob}(@ve&F*MkCwHzDTqPZ&OEK0CfmDY<&-W(UV zV&-ct>K_p&I3$_HSRip`tkE+*tfBA)x2J&1xViC)$}m*Ys!VPneam?r%v7tjW5Sx9 zp%8TT5cU5tdA7@T7`U(|&O-J6TTSopJ?&x*7P^KDgTGIaEe#Pjv093G^^i-%r&U$T zX9|;Rn$zeOr}j*MYLhwX=9oMbfcs_NRzfO>)-*LN5kSZV>4*13+5s}oARYjq%y@PY zMmDE_c)DalUI$Np&uAph(w!#MTO6OicZ4=PDkKHKBBj6E;=~KV^v{t3kT;t7@8xY5 z8*ZH_6}G}{7}wapm7lD`J&6TToH3qv6PP|I8IG_=ec>K0om%l8p6IUn9m916fBREB z!Tx5*TIF_d?ZRrqeGHJ1-TwSw}IZ!Jh>(7CV-Rura<#^-WcAZbE3rXLu*-#aQX+^cj8$dN0*yYsO!$( zcge4PCOzlhIj|4g`m;e~T_e2oO=*^}Yp$8-gtE`V zesW&nkzDe25_w_neP7%J@xz@qfuW^M_7(px*OX$9D7$@zu#zjik4!u(r3e`sAl?4{b1 zBqS{jvAd{sRQ&5{|2LwTo{jdj?1V5JVr2!){=2!kZXs_~_&n5!Oe%l#s^kJ0Yq1sQ#AVi&`y`T0fPduuegt_7lv!KO^VKrI{|$H;jf5~xED-os^jsG zfXw0p`UTl<+cn81Pp8f;!tVR%FOjAGIoujw6O&WL4&XDu5qFBYc;d2jNOJ`#)NPM* zRj>v30p|c0)QQls71qoE`5v;C3L?~X&KM5-ST(sa+|dAM30W(nIA6V`e%gsfa@7UN z$R|AP)l*hg?~?eS>&AMX>&zk*dd_Xunc0Abd`JQB&=SI1D65R@7q?$(?f;D4D<;n= ztdkTo1wOx}7b;pk8+*fW?>6c~iTjQ}4TLYETyy!5Dtztbcl{H-;HQpa8^wW@ zaSS3*xG$*Kx4DG?9pd-(k4@9P;~1)rZ~V#)P7@p7FB3uYQcw{F$qazny0=rFn%+x$ zD|_Qt z;)=(dm+MVFKGS{kr1@>K5=L(yAI&siNkMPrO8LC_wh>>?<+N})N54|9Q`zCB@-odv zE4-89#&>3ZllkuVZwGGMCZne%ryoP&B&x&kDpE4TqAHRaC`2&v+{dJ=LyyCZtWp7@ z8>E9n)~qrgq8+(OrRf&4_%=n&bKl{tDBWjx>VhW<7+>Uha~N}z84Eq9zn$j-c-C0! za=unf=OwF0h%em!*&PZ<(_F`Vcltijghf=xzISPN{=DLoQ%J`=J`n*jpE8|=n!kFY z<;=gBoTi2`H5K@F?MM5Hzh+w|nI`3sd#YKQRSRJ$A1JE4EFL&>Z) zCXejTVVoP=8#b4CeA0gji^C2#;EBX>3Fl^P$0X;4A)!*g*pt3O^tq(@Jw#Dy#Og#l z6B0BjR%w=K-0$$f+b24u;#McN;vvO_>iOe>a^8s+1laHV`MM$ zd060YGH)#RN&g;Ps(rAi<>uRPM_qs!zL&!v@*O4*4W-;zU#@N+7A*G9_lMj%FS{c2n%hZssf<-d)n`Tl*qKVF0 zq$1+PxL0OEnbR=2KfowcZ$g(r%jBg=lol8q~w6{!$|pZ{u}|&N)bqdX;-j!9D(krUi68XOUvT7nnldlcjXXgxRk|BqKd+h{ z9gzwWM*@o1JG_s)ckaTQFBoNVN=En}-!6Q?7G+IfVXVZ3FXWZeNJgMEL!YhSx<>I1 zL0Y_(-TM(&V0PDG)pdN|*Ex0H@+Az#clmwp> zMIr{S4<4CL%1&6n8QUE#H(0crTUm~j8r};ckZT+qys`#_8^1gA{8u^J3f83X zlnD@`@D~EdvE-B_2wEgaMB;~06|Z-c6Hvb;Txd z2UFNy?R0@TFZj_;XdqjjR`f+Mpp;C{Q4Rog*7OOKghB3@WS-7$2#7uKYcXEVbPxrb zt9s51<--bBo7r8fM)r0moa$`1T3 zf|>7{Wkpqr7}N*e2ajqSZzcTKHZ~QSR*4gZpZ(to@gL5oCdOH9kA8Qsu?V@n;tq5` z3ngCCOe))+abMUeK9-ndmx{TDEZEb!8lqzsx2Ltd(Ae1ux~J8u10>4xW=G-KXQax^ zOsmX9tHnaA@1{>Q(n4Q313zArXAQ;)GhQ}822m|6NWYP|@uPOn14z{a-&ngcY&y4C z!<8*XnQ6fF<6w_d{74z$vRt2GD4jL?G6Z{~o?O4le5VL9!zc4!%sI64n-Da}MI zNzx~WIjJpys-*|7`fn$3c47==!VG0%3>h27+X7i?eXY1&OiUO3dN!DM!9yNJg6G#K zpavy}WM1a4l{jsdyvtoaHmOTsr4UjAR&pV4v&5h5YR%RrlX=AbH3I14V(CC)rY;o2 z607Ir)EzD|o(lxJ#1DS=OhOCz{u&G72gU8iDyN6f6CeaIpMsj z5Be7tEH}Wlm&e>;<-E_sE;b8f?%IMy!uZK=*`g-pX*C?@+3EZm#oz3$#D?lP&4VD2 z-YVn_MY46$I~GSfihvAjq;vQg@*GamW%jK_6DiNb8de0C1=Q^pbRF3&hM1cGMZntl zn1T$X7qP}yj|B{cQ#iB$#t)x#P3#gDzn$urlV#PGfzhlmi5WN?70?tm`pc7vP>w&NzlzHzrbl-LrHEc`k!USj7>I?1B>Exp5C0%ElYyE z#JUDYSTC`hC#RhCaO7L&?3jAcTlc&{qTRwiv1ZJ!MA%cpC_$<*Ow71@&kAGY{) z&_t*&+KaETfhz#R4|>ZRw3I+kmfziQ%?X3Q&kJ=_Tgm0` zq_al7U$nu;BL?O1qli_-6uFiCl$TY26)bz-%VJf4&EF}%F+|3rk_N}U;4mII1hLtr zC+^x~=ztI>(1lJE9q8J{+D(eNi(n7DTI(|mdJC%Fq6a|6YE(OxebIc(p!>`s7OXaN z^KN%lmu`k1THBBaPiSz!`yxWfkEp|U*(-LxXZj&m8SXWyA8nW zesupKula+^Rgv7FeFQ<@p=cPNe);YlOWOg?l%el3XaS4?p(1m+B%SguOI403V-Us) z4|}sfjt{UQ3TlXbzOdv~@r78?Ik06WC~eO=J~F+`B|7dX`BL zypl+NU1npsU%t0A;C(+-3$|A5lhEo|xm&%z;u`$1_rw`lq+Gw|q`uHM~GzS!j8rl>Q_;HR7_q%nM$`#vF@#(a4 zAFE}6kB)vRRo`*5FaKh=a=tAPRH%&_7+&Bva_LZO6jUFHmu`tu!TxZm)1Z;0Gw0Ls zU_Ex>=glbHzgf0gz>!_NnYR*5i{RaV13#`|vq^)6lnU=y4_*D_>DrI<=ty&Y#}YWJSLn61&KzcpFb<@f~ISk>3mst-P!~GWrr@;G4X$9^UDX0VE6ff=%y zf*H+1nq!({oMXJ1+Zl}G)tRUn+Zo*%gyW1mvQiR%;&=TQ@fWR^zjw;N;0l~tgr{z17e_K*+u- zdFC#5p2jZbhG`6=U<81#o$fqN=i;FBgtf~Io*~yUnY^QGR#+ytht1(Kd3(cd@#Neb z!<~pN--P_m7FL6pE@d4$_9^lzuQmULu#SW#Ir&mNC-w}KiPS77JF%LC$t;99-po>; zhVWZ$SluPQ;UHzk!{o0b*GbQg+pNpS*ACYU&&&JlUdb0o5kUa^+cVO0)ZkA@k+*c> zZ~Eej;&47Mi~@#9QHO9Xb-b}R&KtZ~ip4hfeze)?X^G2fHA>N#wbSWll-WXtd}-q) zyAsWF62|Hz>El%?{rAIi$~n+nMq`*H?-S^_L~-35RU7oWUzo*~PfQq+VR*CKYAL9E(mE8g^B*8KiHu%u?<6!@LeHPPQ} z)~w6w>@gG%<~FCJBI(JtcYcDI|FR+`2X1fWf0ziSn|hf;x$m3r|A9-lGGIcN{u!e> z+UKlC$I;;YBd zRpekv;9!?gV6{i#)do%avy0~Y#`#gz!!aC?hOW~&1g@Uj{K$CA_rk>QlbG-TPv^!@{F$CoBi)EmGY%|6jMDk&r7iR|=Bw{f z=LXVkz;XWAX|c65N;UfxXrjcL+15DbYEo_$hg2k`E<#&Bt@{;S)&RzCz_`IE_d59wg5b&yhI4J41AJr?>K&9BOf|#9^!T4Nhg1gAjY9oh-5*?wi^BXA-cb+I(pHeXz6s%tVAt&$D2+H; z)k_Q2{PwnL#Eh*$jjju;-a2Q0eU~Qc&-LKaYsjS1gVdKOeUa3sI6S_naQoA-Ht06s zK-?MQaD8oYkEFp3K3@Y=$A z+$Ol4L=r|#9_#hr?vELTJk1Nul-7L2fc3dR-K3n(=3(LirxOx)qp$dxwNd@Z$or#< zV!Q2IYtusg0mP%Ty&-3swf2OMPO`2{vI%}Jc7060cBE4 zUgfakg9A!miJ0V>4HF9i`xQuT1IWn~GXc9YwEUd%zfHV5K?&%P?X7nweawkobr5jD z?T`)=ez2BrY_WZ$M)=zUD6`x(176r}FpfwBa&p!bQ4o!R#hhL)Iz43)XF64CAkabn zO0aAXN@(XA0ntA-$5Vb`R@-!|0DEF<8m0||5XJOEC>F3V&{#)@AojiV((h3${OZ4Pw!bd?V!YE4k^ZFqqzAk^G)V)%d36h>5eh!DEp z$f@Pq;$e+)O-=-$7L1lTwK(_leS<=BguosUr~St)HbK^VU*4e*1GB(Xp?@BWG=pN3 zwHh|`L=r>f1fFkA;`ts20dYt#M*-TkRrO);{4lnS-~)Hx1VX>(RdhJQPxan#BSbw_ zMQwl$7+Wv*P6X0Nl5TQft}#@>Zx9`kcm?H3V&Gm+k&z056`xtd&co0qlin8WrqGR& zVuZ{T>g|7(Yt@1xN0tcLoW4;vhbP=cM2_zH2pbkyxkaIMIPovI6!Y zxQO$41d)r^F8BP(`#G;gGO;=QW|k?~m_BW^hD>CCq}sx( zu@zIJmP$X7r6FFV0O9*&(isyAaTMsbC~PkP=EMWaJy3*)R%CgaHaSkrnzSQJq}yR< zw!TWK&k`OK^&D9of8K5gxwuG{G&UvKNqDE+z@^Ob4<^kJ>}1S zy~c@TZFu)$;IpO7PYaPUDtZ;WPW3Qbs?UVWp1cXnXeC$U;eUVM!L`uXqHAB%o{DNE>xpJ4YwqRHO^ zJa6|#mj5|)yj@$Ch7}vE)HY$SrGZxN$gUBxyz<^A-67^#{Bg{k9CcsTLs5gYP#Z#e(;Xp4yVA$`p=eksyFqg1T*7u`e_}9H z?EWYU@Md{3VccAZ3T{uFvR$_=5@c!16kDv7-N3vfZXaQx)%e~Mr3n7g57kfqovtYQ*!$X3 z^=0j%$p3nf_kHx?XU39HX9LBxndZ$)DwgXd;JK9|WQgdw@U-E-cqvdI;G_7mpR=(q zu(Hd&|8ZVIM)Xned=8Bd7a=-JMA#O^|NfM;Ni$Zy`ssFbJrNc4&y(=^baDQa=#6q_ z!6o-IZ+gO#vCU5u_~-l9-1+{}eky;?aQQ@J|JbNEZP57Js-J3(siN)baesejE0CZQ zcs&`BynZF(Ufz5jko5d?ei`K&2teIv4>(H7Y@OI7Vp&ViTvjC6~M)_jXDBO?EiU zHN-Vcal>%K>>bK4lT9+2c$q{LPn2+|Jq))uxF>M~cO!d4sZHXT&^Y|M=eb941Nw~i z9KS|Rl%zP^`I}=x$FkkEUDcz3&-XW@WmxU(u{+`$z=;a>!S&z4_K%RifHevT$Q5x~ z#{w8D0B47H=-;`UFe8~^N#tE;rW^2ELMLE|ohG4%Tu6~g_21GBTR>ki^^N%S!Kma+ zDuJ(Z;)?rPq5BNwaldmBw?Yj%oe{aPGO>XX_AqX)ybU@|Jfhf+-T4%wm91A7l-+5= z=jR2PyGmVm7wr~X=c|9`=k9A~Y^ulE%4{DqFyqMQ%S(7nec@<|y}HQ^&qhgoZ6z}N zTV>8luox44o;O2=&O<$dBERVi(!6vRa-zbCF-d{0=to~Xup=SCARg6xBt?s-I;n<3 zd%{}1%fpc&ZSMM~5}T;Ez1p?MnevY-E5zN?=&NO3dq=b`fpX zXcqPUUlr{pwFL5%{E3>wc|E}_T68$LD;AyTn8Fk*&QxXYT<)7`y^e1N12YYN?3r{u zosj$FZ+NmL_AOfVWn1#-iE#siF3rIvKv=Jd^6*~Nf*s@Eu}R5ES{uel=b=(qB-~n= z=Tg|YepBsu2K0F~PHQ3_RkeIbCoKBG8p}vikO{GI7LM##3|LI{(%3^*@1Z_0BXWiQ z8fS`(5z1ue$1(9-*M@05-h_r?)vrxw%cikvH#i$mrcoCuTd+3@$MxLZntaj&SwR+` zRy3zbFIX?~3J@98Bc(;<3_4QjX$4_E z-MdYC{UrUvpJc~a#uvy%gC(;M%s?lW9q zkv}w~Gm!{UcQQkNR&p9U8>TJ!T69FekvzZPzrC(tM7m@gob=@NbtJYcGP3g^F8*k>XbU5Dt3C(NG`nTKQs>2!N5rB&$bZ=QkQgU4||biJT2LLb##p zj&*2IXkFYKPb|W92DH}@gN%n+sd|S{q?6aX+%;vl!l)&KpM(pEkyCBOAudFhDnTm0 z^DBYIT!}#7FiVrcZ8u?(*38gAll(LYk5)YB!7UY`Y(i|cvHlbD?~u1^+hc>uA(+BF zQj~h^wJnR3j1vqwRcxW6Esf$n(50q-1ohu{8|4UQk~L&o3LvLMvM#botf*cbH&uHF z{QezZR>Rs1#j6IQW_c^rH(VqA*2=85%AHC>m1-dv%~pbD?4Ja5Tg=rlXqXU+2$N2-zMFtG&f=4H9Z2SdzQIW{U758zqo|#UYeskcD6pH_NQ=CtX=Z z$OYfS?7>7~!+=wc8uYGxFxj_Z8W2t^GaL{)kZ-0mn9OCu*)mCo&;Bs83&LD-SPVysu7qOR+Y_?MmUzULc;?58XK3bLrg+cCULeG%#aFktx zYf!}HD+*B5HVX^25TiP*WK*?Q_8QDKedvovTeEeZOy>Rw>EHkat3s661u+o>$_Ti4 zN%k5-WTALZTr&Mwc#*u6hbBn7e{o9za>`P;*8Nz^vDo!7TF= zfFyrmvhnt-=RX61k9Z`=(9U)&d_P|4dCUTlqk6e}-1JDVydZx6NaDPDsHTnhx-5VLPE9KmUgGaSTiH3|Hg4wj(qw@-$hZABfcPBjuCI?w;1P z7{S)7$@U>!#(4x_TlEUxvS@@8XHnyA0~}R&hmDHJEcY4-v#LZt(xOH^r30l`bQqA8 zf3cd>A}|rU*&UWYJ$3zJ>@_N098CQ6ePs)lRnMj{Ax`WX)_Zu1k5^m_rb=^+cJKX4|zun2qkBm{7`!(7kkR8b|*$<$$8j1Iv^LG=lWB2#&N zez|^8(#?}2MLj-$sp7<*qn%?fqyyxV@dbL&3!p8-;-Ch_LPGYc>##oLtGo9;D#P9fKqlonr>$e-(mt3Hle*n79lL+NoK+f||kyYqAI7)C$VbvVtT*uTPL7T1o z?=K=QLQ(-ql)Jo|7<=8PvIEng+&%+ODiPpwX`xKfR~3o$p{SSJ^m=hAyLTri&}iqB zXzz1<=3{5fkwtP8hHiBrmc4H9C%oOOH1j; zc64Q+tyk6mmO2)`JS8XS$3dTy$9uP>qC{(G!dnT>UdeW zE^3{9A(kDbt0pM#^XQLWLY%Y@9az|(E)bfH#PEa{vH}VEWB>?4YG+uaW?9TbsX3Cu!IeS0*M%Lhhp34iv4=9D5+U{&z@KHoalrS^X^+JaKML9!|6KHbazC2iTn#e@ z+cVI^(eqmvt9O?b`(n{^31As}9}!;TqFE-u7|K1mQ{tPaDF+D9Gp& zTd`hemI6bLEWoiH$FX%0_sO!^jw8!;W5$zM@w-7wTsLmF|0MT77))fh22MCprdt!_f0v&be@l^So=yBOv zrxujDMlJWI^b6d9)KWm(P`pm6@sa*^pm&a73#bjmDeIX=XVdRW z(tNO*0(Yu7K=ck1>-Wi&Ycljt#&QZuzvvxDw(pLq*W~@1!S!>YaVl>J14rwul}c~! zTBGt_!8`xDb(9C7RVB(B`Ql^EcmENt^K3Ptp;x{$*E+oxwZ!TtzV2yu@;gsGb|1xH zO+K?q0yo!Ti!F|8y1@13&S&371G7*7Ff2F$T&x=&9%phVuY4}JwiEfgobC_-AB&6s z?ip8}mN{?2T*;ZeOZE#=cZK*|Tpa(s7U>cICvV56ow}~4tA;+6?X9;H&^hgQ5|qb$ zZticd06?cEQ^ET(9W(Yr!0_X20ub_fQcTNfuWGpdn`gh6ruVVuawKr`Z*>D@(^V0; zu(~!Z3!u0esi@uU)PJ5&`|OALXFn+ldbs0+H7c(|cHos^Y89KwqjB)`%d&@=O#phV z-nbIl72(&d!$iHe!!OGp&4S|`*4cOm+Q!*P2kA!H;0GIAkFCvvFOVJUk~$JkgC<$gY)tnWyJ^e{j9)Q3)xw1Z$)bDrjbx2?yG zzj&3O_i=&&kF~pltuHn4;1A$glO&xPAH|;#rnc)-H6(?m14KVzrOHGD<;k%@KYO%> z26tpgb@-DsVfRD4ZRj&|fuz4icZwBHn#=^USwW zzRyqExPrmk2UnG*Xa zp`6kvL&L0>x(ljjCe4J_PkxR$BRJs0Tk`1F+s*UXYoo%C2acCmh>r`va0PfI;sAW7 zxiFcUKCW+QURO2$b*f-H-*v9L)^E>T$KgG^ZS!1~bUx2-?AL?KPdeB<{iWIzD)g(i zI2{-Ic#Bfhzpu}6Z`0dUerxf zdB2~ay0G_lw0aF*fPMtHa(E_V`zQ4*pj5Sg<=8c+T^&N5+eWQk)cBrpJm~ml`8T(3 zY#13@ZW=jOeiHq^(4SzWoe{zqJ#gE8(}4^XK?E7)36yotv%}HCwIfSC z94=REml6U)w18MGAXt_}RD}QD)k7>R01DeI9OXNXWiXA!FTgxjB2`Obxlgrv9I^Gx zbquEDw`(^;9RGDU)#lq(KO0lq%>bV#ztbeeqMmaXiR9UIK|k&(eeFyb^EkOF{9?vV zROOhgfltbsZxZb<2-$x22z!zILYr1OR{Q>x(@0yY{DTIQS!#xMrl_kdF?e?kp9+dBvdTG*C`h-zfgNmJB%EC?jb*y(cVN!Pmd z)XiitSS^PXX|KxQCgmIB`rt$lqP~Q3Ce_Hsq`S#AuCdI@9cLu4^~>+ZJ1iGTyV9pb zr<`cWuu<+8O3%hEA865ATP^5Gd`N(DmT~T7sp zDC^WTu}DR6pfz~;XU(nISdwPCEqnAt>?KS~!6T6*cquKS zW1S?`C8ud|&R;}ZF5s-2$Z{MBqUZ@LS}ol^^-eD$E=|am%0<}nTz@}VDw#8WdgGYk zNii_-)c~Wbq_<^#r7mjN2N06(qrVGCwGW=E(4hW~BxUKAPzLst1791O^O^wbfnjKgwmt&?&JlxYkW5 zZ=Q87cuVq9nd9~h_KBEd3iaaKG>c>i)l>f(?@X$5jabl?A$q5c@7fKR)YjNd_yyPx z9nyF07_F2M4pW7a=YZ`vf-8^oHVgMlhIZ|}-I#y{*HVkRWvVeeZIQrkRP_|tq&rOo zkN_v(jmFwemEktY;Q>3U#D(Pa>fQ7l6N#g*g4@dWJS60#sGV`tprme%vhE3NeH3@n zblz%If7vk#l_3vPbrD8G36rXj2`GcR3R0f0{~(`ZLL64=Qr@wg5HB;t^{OTpF|zVs zP!USx^;SWshiEkGUtkm#J%eK zq~)(e7@psr8mWtEr?BonDL7}8P|iBeYtn>GGh8Os5zAb>1?E}f<`7i=G80pa{v(C7 zjYrB%BoZR6-+EU8nG8CEtQLVU#kmAa2f<0q@Sc<7=Kv$OwN4A}x$?_F-%1cF$pH?O z1HEiYtLyPV=o3yvc1rUv=Ml?(E}t4bG&oqxceg=J>{=-Mbct{{@bnfyzx1aSd5GN4 z&2s;PXFP8{)PbHC^#kwobd$~c@iak5Bfd$(DZeD*zP0epK|l8*@zA?&LWGVcWI_A} zPo3919b8I!bkS7M7N zj<*uD84_U-)&R$uc;!DM7K-O2CQJUdM!32n3+#QL!Fl;Wl;Q~oAq~DFrT~bG9*-I0 zBT4-sU)%T64YcV})@qXCV)2%Z74JDv#_c8{oe|S(`i%7SB%lAaji>L+%*2 zjB!^~M>}JU?pk=mdSL0+MmaA|MT;E1gWo!u`h|`UHq`A$|?`2A{!;~yGOPOa?% zk4CD(g=7SWIldd0c4dSECzg+1<}3WcKz+_AuCxs67Km2J<07`zC-V=oHhHG zFskbzq)Fm|*WYe-G(DW}Vr*{tn6@-{tct4WyPjZ}ep)s%A*MnFR6oCS#qkSp)Z8=W zxcS-dM!m=@?p|G8A_=W=wU4}?u1+?tEf{1W7~cL1Z+E{@qjftkkO20pFCTz5wfDWw z!OA&-Oa9lRY(+`T0CB`M@0~quhFYrE3UKGn{cJk~hZi%;t6;b1tkJ`P5yr}lmDOef z*j3{J>lm!%bn1<;oeiwV)~2-ncg72I=bT7i?X{Ag=4hwU!<2`bpyRs{r9n3xO^#V> z#E5g#^FVvuxd3{J3P80If(m~Gw>gN!wN{8=Kj3EVplHfAMCbyqtcguPfZIea@LXlW zF!#fu>C`-_*g2l=_*icfXPAY}6nsRbLxP&MT?Wrd09HQTT7W%8K{qeG9AiZ18i+3%WT!*LjT$FcjZoSq zg-n}7))UN`q9?d0JZ481Z-+Z>@P|20gj!QT^C8(!{S??|A6L)duqb&o4P1{u8SBcI$3`yBFHUAcSMLm=|9FI#CyI_5fve@9h(_U}W6(;T6mqeE?`@#AZ+0 z_2f0*ll~hw;hg4v&> z_h^LDCN;LbXqg)sE*5oV$E*dJvnL{UEz6M$)wNRtt)#cqn8 z?;!qiO5bKn;^{2gS^C675T-)nLG(q(sG5uze?dtJYvu}3H|JtK{}NX)YNs@rIfMb= zWe5X%ke_?1@L?^?8C#G*i}|3nE>XIEW419vH>ezlW{Zr;gT7D>xjMJ9^2)iFas+B*j^F&_OAox~il6R#%7kw8y5f9Fn+ z8j9$%eur_TWTmT_y8UBn)Hay3G~Wg|Iznc{WR$JxgNVbQ`R%#{pw`$YdBDY%#hNCj z1gWOKMa6;y1k~%o^r9H=c`V|iwj{_@*v{!%of#M)5%@c&{z^4Dvd^{hcGq{e&t{w9 zETWg(^Z52X6?8@-M#~xnjmN>WFoFYznnOaLQSBWoZ5l()mZ;H=ZIZ^`2>c&#%-I>L zh>N?Olwom$GrGrsc1xKcUYi;xizAWZ-7?)5ZF5^jdhMorjwO#e__KIA6#u?(y%;bm zIno**GMiz2drYMn9JQZD3zf!O`fw~BQ~W()gDV4CWniOjW$Zu@Gb6L}@NufxC})1? z6NxJ1W3elHo3g#^Is5M*1->0hoS%}Y$Iwg_OcR&-y4wI8eb4&(%g)z z%xZYMEm0@Pl0)^p3;xzFYIQ;R^fhK%yS^3kL!;D98`U@4}RS zR7yfG*YS4SR|*Y-u$!iqvsv>VtUlmx%&C)Z)hrLFnMcOem@ANR$G4kZ09k5=ekd*A zQ@v_J@nwtXIK#1p>x{MsRnMD5!9Pbqg49nV4*y!aAbAQC{*D~JF-l%mfN;b0-$4q$ zc9FK~gAHe%;Vv)bGG-~%Md3lp->QG>F)EQW_ zG?JhBbDk{gQOV73u}?cx{V-rRSYMXCl?y9Oal?_MQ6ti4J|hV$vVm=)ani-ucbZl^77O}rTzxe1ysiy& zHC>+;%SOU>$-^W0FwoX(pna{os}87)H4(f|L@d}KNp{)5E=zuN!7&XKS!kws zjCPVD#s2|!K#0F1hCri=v{>gWel{X+QussNCuq+Jz&qCaIqE}ddZMOg&E6XAqnV+J ze_AGMni-NeRpPe2@8%Q4VAyHoj|j?9qL6+8A(>GAOxq`UH$g^>j9?5=zw+qnR6-ds zhG1XP$WTK?{vkn;nhilUlGH#+gCawvuM@)jM-4;`0Wp?@zua9zJv9mel)vU5i^!vd zzx9Mp{4)ZPmY9f3!S;#YQos^s{#2ZBe`ZP%%#@xolZ4hK{VB#|giO*#MMyyz6pCb> z@^}3+Ym>Z4{L2yfEy9a+-I5Gvh;ola5MvNQF-3w1>R*Ehg%^|EQa$x=Z6q8o)+dN! zAgD3&?+WBQ$P}p1ekxEC!FH-L1eN8G1ndT1gvPxG7>ylL1L~0)XwWmMi5KVke_|c1 z>Acv~F3m$cD~>1!hs^7i<_EdP3p#+T$>g9_`IM^5K4@L<|)={D;Ktb(S1$CN2 zno&rjD4YTZFYv{Nh)gawL;M5e?vl#&q)^ib%=lv%f(&u0Zv10QfepzN%tcr4Kc-pnHE4r zzPMmoTXb4MVyiDM1ZdWXCB0HBXq>9uQkzP2C6Ge|wzo}4tu$-00#g7q-?iR=_Y=983h`!DfRcz#^gli5dPmGv;++44cbf zD4aLUh-nC8=Cb!OoA>Vv&OHD&3#>kj?Fi@WY6p`-|H3eiVKjzZ`S9#mIA{E#VT>5^ zK;b$H{X#ghE3%=SXB;+!F^wUP29^xxOTcKjXL0x*X7lEd4+`_af1y9w=Xq5ammVoH zgt170Lwj5&xN!(~XX4ViUvFM*`KYhy8h8Kq=&oIvb;zlSC8(rVK{vx3*CBV-@6}vJuu7c zN(i^km)n0_cX+?h*tu%;*gLCU{N>Hb3qPDZw-24Xl4#y=e^W1Rd+_PtMfdEDS999i zU;g3zba-%V`R=duZ@09f%O6kHr+>cKetn`-q~}Kd9GZ-8pW1vy{bGxdU-rh?_C3=1 z+ow(+d$86&ZtYR$e}89i&A=M>o7-1c-(T_f%Qs%xcj2{Fm$o+Cdl0|(SIj={><2O1 z4*X}}KH&bnO4u{ChzU@}i?E8@a06bByKow>#82U;@hWWK3|@`b;PrR_Z^T)=2@m0| z_yxQj591sz;BoBW-Tz~K{{c`-0|XQR000O8)**AZulxcu0S(q6b5cfiWYlXK006|7 z@cjZZ0{MTJB>n&|p;bN&UUUJLjmU1Oks`$iQ zwp?-ZZb{8zq-L_|3dy@?*l0Fin8>Db!zbKSF_bRk3MDr)e-9dpd_tLyyOrV5LLnCd zX)K#_xz38)b|RI}`LvsxS8+=d**w+_7ET7Ug9P*(DJ!_n$J_QK(Q6JS929*WqYxd%}=|dl|!$VL*|$JI)y>Z*8mTZG}ElkT~(Y(As(v}W^Vw^V5vOXbS$!e*7j* zu@pR*X`66M2L+e~+Kfs$zcY*qKtc;OZ&$}Vt*)!w{)k?8i>5{}$nVXsgG@q^JQss)uH(t#F z67vlLaQG}#a!5_7Ff}}>vEn{va zeWEqzf9A(4C)%W(+!ue6+|sgI1VWW#Q@M*SY6hCj`Z=dcVD&PWUE@~H`T zp-(InISCmc*Qk+sP!DG_a9DOM>y}!}g=#77&aZJ1C=2}eW_$H~fk(xO`eOP-AydU3 zZcw zNrxa!>u8i{Z>BEvC!9^Y#Rio3%pfnGo;5?Vb2g_vU6`0a#`_W>f9ShnaH7VTS0^m2 zza0?q+l-=4zQ;XVbkh|#21Px=Jpnwu8rYa~m`EWH~7jkPjI~$08=4;vV zf3TmfEu!ktnuI8ws3PTHPY)UBA7DHHQlgl;seEXHZwTTlm9D_6C^9_Mg3;(=_iUvE z;`FM+KBQm?)fZ*CGT)D=Y<{e84_~EWyrgGlDs0%;ga18t&pq|%uA@~3d2MP#`KgO6f9z?jZyPoV^2VMPLA@)}?!no?U@+sisKN&=_H=L-wY^2o)heh>&i&Gtve** z4TS>u4SOS@faws`i5Sim;uS-t&0k5x`2q1RW29f!Z;-Cy?Qk%tMo6b^C`E5Ff7toC ztz6zts$I_ieCO-;mB}{S?ob^o>=+S8(}{OIWMXx7>WAUtZQTqcl7R^6h3vG91X}i;;?T*lP(@C1d`!b|o zR&I&culVa7kHTr%B3t=#JNW`;e=z;)|5d)4VjWiTcAIWHmKwKo;uu1^MLgP}nr!2= za@qmyxfMjxgVbT%yXc)uQQ>>E|ZwnKo z-UR|R?GRXL2M0?#8HLmHpvlE=fA-g!J61`J56uQu(OQ3rR&~){&g`^*k87BcNPW0aG7F*cmXkBcv zwv;VW=%P04Q7>QDF`#Ivs8xn6T@OFeFQb~)+j$(nu_30kHHx!tZ z|M_OCL4hu5W1bl@uX8^oe;v>Q7^^l*0|aT&+0uYQmw0p~5S!SSrEQo*RD~|ro5pBEV<1nWkf? z+=bXG;l&7#O5dyZVSFFPeawQJBEn6^c7sKPi&kl?*-C}3gt;DFe+}DvU>Lkl5@Eu< zFI?X(_k9%r63{%l2HUnl2%2@ljSyTb1+6I7(UuCG_d{nCZ=EJAhyco7qR{(18U^}p z$gYkXBamNXX=`TNu};`waZ(3JYeDJ>*|+*wH{7{k1IXOaFv5^X0=h2N| z+F${^zbKihaDZl?BE zn6t^FTQEI_H0oW)VurRk%3_wbSz?c&0N`h{N4G*~3(#$ue`1@Fwum1i#^xHohXZA zBNV#RcW<2OqP8Urj^s;;WM>`8S2az89*slO4o9K8f7*te4z(lf^hO*j<`}zpUWyDm zXgNkN4}@MQ8HADx&MpMVE>XR9g>;JO3HPxC{GA|9JZ!5x(lrO%1dk>j_Nt@t%-xM~ zJPf@!i{fFkSB4oXzS9f8CZT&=AK|w1G$sj^7}sD&lIl{I@Pj;aF-tgf4|k|XAL20t zyMzEgfAQ#E$#|GEguk!Z0pW&6z;Haej|L`D2NN)1PgtS5J-Q#Bz_Cx0Q*5`0SQ`<$ zrxvk$8Y1>UEn;a06b|u_g+=@b88^8}{D{>(dJw)@P&;x_gAYLvC&gj8@JhJedKHQutFaef2G9HlHfijk0lu-2wXwAj-?0KK7~Hw z=g(2ZQm$F-s1#G^KHp8pn&OS}Ej{Kt8c=W=qqcBekBh*qdzi-$fbR!TUaAgw^a ze=Wif$|zk-BJo}DZ4iP_LvV>GRlM{bhZEMZ!$jNM%?>LBud(3qRHQqQBHi%*u-nod z=+?UfBS{(-gp5xZZqc`zXb<(kNOu6XjfhiJ{!d+K3DBi6)pt({fXX~1!$IBv$dI&6 zcxnL83Ox_og7}u#-jy44GXHZ9% z@gR*!8c&InlBU*Zhd|2-8VH!qX@^0Z;53isFJfPohxy5iSCcL`V$-k0=w`NAvY?KzKpXaz8i08vUD zO1J{hQIA$Zd<@x=o?@eDJLA?+FHWOTks2;iBcssF^qww->eKtNrwVm-$4rnUT}Be{ zD|pMnJ0p2x9z6@aN1+!r(@t1HD`8kXNV(t&2%g(-URUS|kDiCzG2qKaf7vrcL8t-N zGhDS1tjXUC`DcavNsnHD{Nq?6Coe!EBAiCJx4Hf5P6nbJk$aHQ0&L za(JSt+{*JQ2YX{1##e!ZdL zKaKGl{Je5>enUxwe+_ZbOVaygTkHU@lA_&V}itxiDRBx5dezorToLGOI;0pTqc*+PO1@f3xNtzunT#gTp^nKwUh7 zaF6H~fb=G;US4)Yvyh}4d4s}N{QL4$u|IlQ&S1*RvN;l&>iCio8(s znVaj-e_c%VfA@<|{eHa<| zlgfYV|5JXo7Hiy5zugd97cu@FKel8i<7@4cT5mQj$3v)JGJba!j_s21gSj^A#YPOj z*AVZQF#i1+n0|P-cz-~y@CS3%g+H9DF8tA4@%~aHf2Kcfz{CUSPiA2H)4O3BkSqLX z7N#AN@#9&T9+Zqfn+wy+jhOy?2BupxF#W~dFgbFC+p{q3l#IWe%TIqb7p7}|qVZe6 zPtb$k>wg(Y(l{u8jXW{ux8Q6Js`4(9r2NYI(`h=1vR74Y4UchETK2Q14A~_C{H&IO zNt!_Ge=EO<{EZ;`<%S#mx8f_&D`bkjNlfhu{|v{|T59r5`MX9_BEBiS?Rq7OS=xF? z?yj%!_j3uq8fC8$0h{Na_5x&o-h?|TSNpldJsr=#Xp-{d^B0X(;wlKgY?AVk|8lMb zdW~0}h!EXVzqH<|?Iol|pZ~f(WZocMCNX@qe-ClB=yxX-`UYwmzm>fSAM)R~Jo*pl z2VO)!Fj@OBFt03HroGVpIreWAkFI%_03%5s=8gU5=r7RZyzS9{#MGDZ`c7Lw$Bak# zV*4QRPq++N+t|BgC#p%5y=x@tehjUhmchxEZrh((gkv-$o-lx!SdGrf#UI%)wk9~la>jPrS@7}y+kBDy+{G0JV z^XrpG|ApUr#fk8*jo(F0{|5YT;rL=K+QvTNZXkW^W1}CBf7zz(v zM5jD@2#VfpUw5Yp$@mRQR)zm1(g9SNO4+g9Bq@ZIdJx+Ym<^u{AL?2rR>14B#ZTVY)(3p)*k* zAe1ET^yCU_OgzoKd7Py>O$3Kr^V8Bv%k3xBg@8w3L}5%|!g+ZKSR4pUf2oGyuTySC zU`@cKxi-{qB*7>ax22k~1mmdZcmjLs!)Tl+pG4rw%5|f;Og-*2&Wz3&D$Cl&t`e%uzYe^ zd=uqc2)4333s|`YEWIu3f4%Hr^m8+rcg;zsW9HMm63Urt7r_{s$K>0w#u-hy1%Wx` zLIOVZF`;=}8Z)AvMnQU21btp+o{H(ckLi6bXY^1jX^UuH74dlPn2kWdQo7Y=r{qkC`Nc(i6s%ujD**UW8+pS~mvs>(>YCCDc z@FT^SDTZh_<8r@{{XU!Y`;>?5>dfC?D61GYYz=%I?%4auwxkJr8-^`fb%ph(26x-$ zE%C{0dE(M(bHw}9e}R%&>RH`4e)%9|)qu{bYiX?0qqf|&?dD~t>)Jb~6wM5+R>|^< zMPFt%diqZbE_Mm{`HTC0d#9^To=a{D8A?lhvPY0%(5LiW@p1E8^1N{RMD@#pTw0_T!vZaJj`erGDA)iVN= zzD14N4?7=MK9G+tPB7k7?y`tmzB{NP?0TYG@uGHxV|4Nf`@Zb@_LRc9)%}xX{SA9u zs&`#_t?9e)fBjdoOuxD2kUXk=zO(;I*Ln-{3&(@1aNmf5Xa1{xDEj>SYjF+zjocgE ztGoi|nT~fZ5*;%n*4zI2_9kIPy6qEU3+>Y%H8uP)QHM_WG=_7jwewVD1mpZ3+ zHyDN{c?o8%wTm5BaKK|-)}6GxTVuTXzqwrKA-VY7Se5TzgEPiz3%V8ci7Op9p4oE4 zy})Nle`WTZQjaOzL{jmsab z*)TL>YWK0PWSV}D&XfhIJjdwX=6Bwb6h~Oiwhhku*j;qx(a1JlPW0{Ji;wPg7u6hY zSIf_d+&!vqwjK96(3@En^hdtGhPNo`lQ8L+3oZ7bu>Z3zu*@fS(lO7AhO^60f8_gj ze@V}b^49ES>w89@TM>3NHT}1`?ju9X2C_T5W7;_(YAJK>)N)?#_3Uq!y+5$`1ol4g z0o@}i{%0T9Oyi8lMj9_9SV1|n2Q8zT41!q7wFK`{t|WMe)}SDWrnyN3QItywBB?%s zU@_hQ;wU$wd5frq(FRiUWQi1 zbhs)@PDTH)VV<3tbExSvYw4%sc`1wlB=Y2h424>+c_EW=EaZBXLKm-8XmxUxe_WH2 zLc(+As}jl0$``&oCQXnb*Ju@LRVv5W*JFx@_luZ1T}MJ%M#N_VT$zkxsY*zbYts{? za#_4gA=PPL+)$))=84i&I+2$sS)C>qC8wonM0%}8q}5188o4Av<1LDp=oLztNG4BA z&?|K!r9vWlSz4l6la`>ia7{sqq$vuvUz6D*ada$^3a zr>4PljXFsq*J?fF8YOvAfs!QVTd3SXRxj5-v*OT&P}A9y&G@~wYS%mS*T2WN_3#T! zF87Na*j`!>;q}_8>$wS{vakPE-CZA^?6&f}f9KVxiM&(I z)g!&{)w^E)$U|sdvtoE@wP4wih<2xrD83Z)t6Ve8Yy0+87CsFwEs|$Ayw0!(-6p>i(W4$d6+C=qq9{_mM}EQ-Dmhu8GdcggxXgd0fgx5f6T}bz zLEr@IBmwZZN{dK@DzsO8S>E> zO;CVB9D!zNju!YDTH+|Q!?8FH$K#vmfs;{$Q_&ZvqaXU?EEMBx48$M|#swIPi!lPj za0y0X44%fXumjKFS^OGX@e6Fj6L=C&VG|z3W;}*1_$k(69oAz59>ha<7(c{PEW>iF zz)JiG_u+o5!tGdyX+^jLcj89egqv{-=3@b_!L_&!voQyAQHwg%V+O9mOk9S`F%A<@ zf>KOEIi_GLDp7@xLpz-|XU<{He3%a$&YAD?``;(oauPV>bF6pof8Xx^E?aioxYpyT{&!Dr_qOip z&bY_ZyvgJ7>}wv*Rg0zSoKm`6$ql9p*}=?6F0;3(xYw%&-qC!eT4~u`Ea%dh5w9X^ z&Xq^gh2f@=thYLUQZDZI=E~(_xuu-jmjl+jFFiV*)56}}>CsBg56-c4bx@JCFBUq+@|8-yFg#e!-8r5w=j!nG*<^$1@^Di)+_HN#U9IK{Eqil!?amjnt>cAk z4uf1a;2J+#geaF~>3NXBG*k_Pn54B=N~8JeEYQO9ISRRd164xl)$(|*-Njc%isfpJ zz`HwNu2gj*TXa5ln%yL02Md7AxTAH>OP5MHz~MrAe6-F~X@zrRxv^cjvYF0K2Vj4` zIznuV&x191a2_&01}`&tWkk!aVsSK=F0|we)!cBd++Gj;j7_V)kUw9@lyhUbLN&c> zG)JTY|AUo(QZ6%Cy{nXKsTS4OyL+^luIlM(ajbb)zK|~8)keiL2(&x(*QZ1>r#`7! zBsE8icp;yEDQ0u+nUQokovEVu$$s*qDPL@M z3%^Zq4ra!(KooM#qq)Lxb)+>rPNt@-xp}kk^*We)L9m|!SJxq2k{ZLphU}@#jO0d3 zinlVCP?_-x@yv@P zDv(!yEwV-R0;ja8&Or88s$~>kn_Cujhvw9?P@6aB>AQ%ddMPtQ(>^S)Hh26zDDq1u1Wu4~*X-%|qG!wdG z?V7cnYdgOf9|1nnIcN8HA*14+8BLE@a*H}=<$KM#2HM4)v&&_cqAx(!v~;R24{1;b z;?`2RSW+$DhjmcvujVw-3}XU?@A0gNU=J}o?%%5(kJgKCpJq5lQ~L@_vo_3S8|IpS zZI&fj(6Myu0m<~2*E4Hf4>MTTdbSbc9_BG+kOhKHM7MUXUeDIGTc#F~I-{?2WK(;O zrKL9XvJJhaKVk)RX$D6^IVYtXo!t-!=3$T2&43OWLoJpkA8L=7+R&bmG#QObPN}KA zY-tl4#z}xQb(k{}ddqjzFj?nOMiQBSGoc&eeIaO zbtRwJ6AGVZue^NPv`+SzaO5=Gc$!%?ZKpMj=Y(#F8=Vs^h9z}d22Gd>!O}L57zV(9R>T-G zUS%DY&ggd?Yd1{oGkG}EToSg%4OyYlMvVvjLqoD(mx-W^hNK;nW>T^N88w|#(6Fsb zw6m8*kXi2|6=s(Rnj7(-l1ZDiA(+V{M#?#(N5sv}nL}Pf1_MzUvL!PS8<}L@)Tb$p zw}&C(bHnoV>M!r^xJ}>)EopXLDzNd3KCQ=DMC)lsUL$12j)Xa5{1BydJi`6HLVpU|0BZcuxsj z;qVS*aDGYSw!c)uGV2e@L`X(s(oRZqK(egNfNefj-sKS8B|->S2rWVPWRRtb4ED=V zLdK$0mIJ2DGVg@A4B|p^EoL@)gu@r8KwkpRl@w?TfsP>17uytn=#>bpWl*Sl83arV z%Tk3x(8Y>mmJ-%a*dY-E`Vyc~-$Nd%PG2BMpOetJu*I0r_(~`zKQDFoBKWxgpv(Ld z6SAVqOi=cRWFjV`NofyAGb>q@Y({;M$BUKCVc5LdwK*(Sn?V?k!75ZpU85PQYh0o< zuA&^k?^yPTln!5iisgB`)X|{S!Xz)qFRAe`1U48xEoPY#vl~iXM z%xsQ`h{o4Ad^y1}jKsw{v)hcqu(i?F%?&lNf>v)ttzM?9b-Na8pf_sUu8?&xvBm^6 z>Tnyv7NH-+{8K~Jr2`?^KRYyu$)5fQgoaQGqmqSIi}jO#O%A`<=QSp=m@Y>5csMMs zV7|o~UoW#J9F@uJkraY(32O9xdSEYA zfsIq|=UonezYHEPK>=-)nTqr+%`{JlO&Y(_;j0J%%1v>RsQ8afU{PdZvOg&k=*?Ma zSEV^A+0)&XP*5&c^%8>gFzQ7ukRFswl2Hp|Jvvp(X4OxUEQBVEWdnC6O_}VM0|}Xp zl4cpK$f_-$rlqs#n8r6N>X^7HDD{3B%hV`A0!C1OmBbcMT}5pyXi~UVBV6}~#np&C z#c+~VogA1vGKAQ7(*AJ40=zmbWX!jegz6O2SYXoOm#b7UbF=8yxSWk!1Ke)lG~V4{ z|FZM!?;-nVDmz(EKtv@V5ffKdnp2-@Jc+1n)ivJh@U@7!g=B2;PnD?rWaa|(w_5Zi zP;u*jP;m(p#Tdk{kEvUD*Q&zn3yW()@M%{0MZd88u9;03Qx0B;@LIP{LsX|*WvF%< z;_Lt4b-I40PPbB>UN=*xp>yi=3Kgd7RGnV$@C^vfa_q3%;v&Vmna#Sy4tpd1Q$4m3 z4T~L7Y*e;Y8->MoQ!^qF681hx*zWN7A+I%mWd=;_gWEK|!~LXU;(8`Or)=Kf@GdB^ zq2$K6xT&UOCzR|YC6Op5QB0ziUrHGbV)08e)?<6H)7aQaRgd4;5;+zY{m6UD(-Sn9 zdt~TkF_hAP#!<)6G(Z8xDFYGR2{Ufg_)Rf!14AVP`4xv>2{SH6W4hU&ieTBrHN<--cZGBt7~_QrrT$wPb8=NCs&Rv3#;U1;MxMNruI((*f6G=LGyJ74TbC zz;C1ECdtS&4o_co_|-7!5}0(mU*eR6gI)+*l|B*^cfcwz%X72_Sw7Y-A?c1iv9K7N z(Ryy0yOq{KrFF>RJy4T^?!q(M)*aAnp z#27S!6;a0`BMwERK zai_-bROhAZwi_ojURLAlw;QK4UQy$1+l@0Cud4C(?Z#P+kGC1_!E6VPSnv;LL)>%3 z-C?m0b*Z-5eOMAl43EQa0OH<%usA@S`E%Cp0dBur?FXc9J!IV2Vtl6YyByvR^RIx5 zcdr)ru)b63_l){ItA0OIzuX9mgZKnAevkAmCP4=;@^S;9cA6Y=_y7dOA?V)K;y!>) z_Y-tKbKTE8_k(URfzN!6-&YehQ4_X+CSP;-P6+ElQ19;&hY{3=rh|Hazs3(Es1J1v zA)pT;pbsFplNz6dcg==)LgNp(qoW#s&>cA%f2gMBh{JD!;w?NS*#N&xJ+|Kx| z(>c4%&Dm5vXSh)^FR}%H(r-BYtKiy<;gfOk6dIz5vVO{J?ZmOl_30`1^R&Zn2jx|u zJQ^3z5+%D-JY%*-@Y~vDx>V1&#ylGnPqSJCo^$veV7wZPPF%cHV|-pQz6i$6;suRA z9~Li~t(R;31vh*zx^iBMiRbEazUlBm$dQQT%hK0P2fO1MKj!d%A%dcB9gm1tY`;Y} zyxKiAh|^jcUF+NUv>3d7`UXp2L;SJ^uHQIIMM#UtE=u2-Nd+APJZ8vi?o zXGj-%`l}J~TGVf0k7(4D#R=qfe9qC8b#-OGP*<*|>ow>~G^fP3H2(Jv-%YyEn!k0P zo?%zdu+nq>#Tk9R{LSHvDj*v!Vy%Bqkc+fU+KcwMx)i#82@By47E}5bxeo3nbqL!(IeZlAw!qhKm?C|12ufc=Zju~{8bWi6zl=dNi@rE&l-EXCMqjdq3t(K_{ zsCTwlxUci_A+Ir|W0P}lQ!MEkEu(fI6o?%$a11KLx9`TqcTkie@-`52cty85;}o@! zdy`aK+#51x(_;coo5AD}i5ORjl|Dx2`nuo8YaF!5z60skG->>V!^h#>weaq{RGjL) zNA{gC)xBkZAC#?7?-)#FZXcYb%a0Z%U{iutYD&C`Or3Q2ev*TNcrz~EGW|m-oExSu zuxy~)q|h8dt^E+67T9DNy{#5CfV&QQJv>N>xSL*2V$57AzGn^?mes4%8%tE(M-u9( zM7)Vw_@2Y>AxajA(R<4ABn#jOdypa9DW~M+zM}h*d^XZuY7yvwE{af4t_sT2frVy zd&ZA&sg_OD8h+%yH}EB_x3!bie{N%h`>`=(^_mSh7yJ|S;6z0H95R2Vr2Q1q{GOCD zX9C54JWnOHk1qwwrW&8>w?Fk8DQYo9_%%g%b~d5qR>3)@sG|58@tQ90{fhV0m+{uw zevW9s&{N9LUo;qc_{$9aMT4P}ijW(Ma#;iAmzsO3!Q2NLT>UZub>6o(h#yd(|Ha`C zBB|FSslP<>vF)AK_`f>*Ap#=lr)!T@RP^Y7Hb=0meoe2i$h)m>WDb8Auy@o>_6RL} z+$>GpIc;fUk=QtV$SCZ4RF8D7#fPI{HU2AyKL!Qcu91q{e(eb%sCq$=y1^4@Zy%{w8^i21L$-P##-fCk=x4u)iC?kW9mJ&L?Qb1_ zJ_Wtoq4%A*_#IQ*QLvkl@!yywD%c?E9mL^xG4b13qTY4*lMuB7f%|=zco(bT-Nv`O zKd55(qbdgVrsVLaC`IU+mPunPr5eDdS~dK^C9c2KQL+I2V_2M_CmtCA#GVG9F-|oA z+!VL2u07?|Xx?-9)37fE``+&o@4>!*_sG5o?31`uePC|HzZDlBFv>8~>2ccOM-k@# zf{jaH<56mMs?RTHGc#&aN4Z6EKY*GK9sUf|+<*{$)FnQInh)L6x5J-3=#B889rZ`l z{%EV~T9l#tcNit3CuEqfnjH~6XsTx+litJm#}0oE;`))Gf9nz-SBg(qzr&qF-qaM%vGvhf(=Vy>;&N!$x5)%yk=?(<#h+PE$YWwV zLBgM>+h~l6>v^}Csx1mLcYk_8_2RYl?Np&&AQa{8cx_LJIQ&KI5uL^{wenWb$${0k zrrthoGxg5TKXLd=%DyzCMT>BMkWnv@Q4aqmHmOy$HnF0SlNRcq3@Lk~3ZZ}i{Tc4i z-u3See;L8riP-;zx^@$FaGX#6s`3AD_%T9ZJNj!}{HNJ%_Gea#ztKuOe#l#r(LmI& zO1=Gwgv^*O%isJdwJ$`2{|5j7|No>`c_38l-=AX!XD|#ic4;(ZEWN1i_n8r%kywOR92ufFn~Iwbd>Gh*UuP^1d4K_h;8$!ac&PLuQXu#>$Za7Og8N1A z5itd+rC@u2L3ji9k9rYdB?x|FPIwERj)5mN2!2Z^yaP{F;7J{Sg5Mbt2C)PT;$Dmd ziq!#I$3a;dV1bD%Fc3UQg5dWexEi<)05s^vaz!EfL z3^-v^nQRi3%^^v!2|plsT!!M!<{;i!gpbte#-04#QZmVo@CkxHni0NHffES+gp`NF zqTW7(?3|e(GY*>B7c;^z){O8K2`Yl?ru+X@hR9%(aMO-|Pt887Q!{7vO$48Ir$X>| z5nKAuD%%&0F=0UX$-xJ+2tR#^lobxXB#twQ$^5&V zp9X|UEPkF1hcKzk1`YiM8u|-@f5}kTY$nKpJe^v@|J}C6-)$oUDU*$#hZP4-K@pQ6 zlrsl}@kPUbOwE{p#HO>NVMOp5kbMXdqCpN=64i!87YFfm=s3JKT@0d$vFKQ;0~Jd$ zpkuN4HOK+r*OAy_OfXdQu@Y>$Bt)Bb2>R;^>w;S81c-(M9#AD3sw6Igo7}MwO+o~p zMFO%Rnk0)Z4SaKaX>^!_chIHd@qwIa9!{f6;a78i?C5xi1_RE)Gmu>?jse2MAR7Mf zx~Mbmr3~oO91;PD*}gbuk{D8<2tJ2n&=rUbBJvL7unI&HM3Y7u3WgB8?@Z9p^WbFJ zSkO2u^5&nHq~!IwbPP!LstMJH2b7z}x2(%D$; z>3O_7oi$DbUy&rja}4Mt>^K;6FyJ{9q6oeUsz7Q&hV?28DuQSv1qN^nD!k@J@rG!M zBKSJ+AC7@&N-`KQ12-fwux1%u8A~xmZZ=(i!0;X-xOts8F&`_BRlopiFcuy&Ohp8@ z0P{%TSk;oQft4W=r?a^UvYBgxrE4m)$LZ=)8gw;?rp88VQYTU{&baB@NDm~|3WM7S zIM86w=YYps({~ze4)O0R3sGwG0!k1~6SziZXRZjo4dO-tGjQ$R1|}4UrX_;gfiMPt z(0PCY3oVES&b|W(V}Vdx218*>X&@3w1`Jd>q{U&XJQld`n7+8NGezl$Fu)=nv}8V8 z0V~1)@7fSecSZ^#(vX%;Z%|+zh^8lkOTkVe*wJUv4Uir&xdFX5u67+rhtJlVbM*I8yjrqtrKUnN%9;ShBrF$ByIFoLcW3Wa16pj zHjc>#-&tU=$mqo|JwsrRZh}O@p}Cuy(V0ki=D)({&4f1-!D%3TDrkl|i*E6MPcza$ zGt7x>qOh|&EnFtxaF*Wd~8s;BLD~G zP5{ocV!6)BbKxvok6Au_X370#do(3R9xN|yk)|kEM`NhxJK{S*jkMqHwAk^OwfD7v5 zH~g&@rNw-zjaJM}hl3v;HdhWH<#LL-tRh9jJLz62$-_iK2I(Ufx zUda2d@Fu9_#I5f~zN%HO$%^qiNn4JU7#vbz5YPop+=o+cVv2W@-GISQi zhq$>*Ybi6@CxUQx+w8BvDSgKScfW-=SH`@oyH=6|dro>@-O{yn6_v@a#zbCW<6reG z-})oLZTI1^!#X?HyW#&8~Xx=}w3sJxt ziE>r2hNH)b%t9#YUjeKkC?}vC%myTha>N#ygy`fUK7D8C7?2(@iSIii0Zz#ZjH0B&dwr%{gB z)}ikZ!fVif_XE*60|zd>?=v%69|UqI@TSHJU>%fECI&0kBY=^#B$qUkyM< zb&>%LQ8{uy7-0UnQ*=>|oX>nTPo(!cC`axzDyoCrfm$d>dV`#?BwF7b%*?xOi*iXc zUvS$mGPRgoJQ`Q8GU! zE)K(SO9DL*E1dR=Ma(2uM)3u_&Dx9AbCQK3vqPSrz!}$U(Ms8XZm7bE!PYVlANcgQJhz;i^uR@g+X4~-+5nV2Z zJX;toOo~Lpaxt>g;s{=JSR_b2_CJjIQIW}fE*GORE#yX}06}=#zZ{UJw~`|S$q7+u zQDHH{aKu1fkjCdlrh$YKc--(AP2%j_XJV!|R(hF#w`5#0$;`IDz2^Dnub1AG1buC+c!Wt=pbcrph??uX!mhKYV8Y+qeV%|%GaavSjW_=%oBFQ zub-L44tEFB8g2U1Dwi3Ov)m4U=)?p_{IU_B3?WQD<4m2e4UWD2`t(u*okoQ(5|l4h zpWd#2-k#=ret&1w$2e8%H_M`O`Ac0ZotK~P)a!I#lj$c}bMAa4vyA@QyjgR#cZ07{ z{hIDi3%oscwj?~)TUp-N)8eRAm^yy6uF`60N?UrcMObHh8`;F6f8pbQpVa|vpUz;q z?aaFcCBeGAKZ1(lAC25ia`uFtG?~0sKl5YTo?XzJ?ATW8{$IGNQ6JYzz0%cUT)X~` zVZ*4c?@lsLEiowd9T{qk`c%R_Y}I5OP}XPGb#dfv`|%uK`&Xv&UbuOm=uuDZxA7E% zw!SMmLgM&$-_qT9>z99jwUB(zG2w^XqKcz-jg8Q&Lm=!~McN?6Wo5U7H`WrEqc)5BR;dgWil+Qj7@Ir!t}#|M zIoy&jMWe^kujVwyeF)J%ZrewGme#nz`iJwJP{#n8KxM!1_ocEAhWlg04v6M`zWQK~z*dIEsHuqtW!Ci&V;~|GaS&)PAi-vdoi~33H4}PV^ zt!@ZSB#K?!^H*j|&fBRu&RJ8sE#{ZEJBnWPU?-um+iu%b#U1e{>uU19#A1i<8aDoH z@*lqCxIa}R!E&p$^(p*Ir--%nn^Un_=9;CCwzQ1cs+~U_n&{r5cU8uwC%^35y+Of& zQ(3wN%;qlvQuX zWo>CK%3f`499ZWv?Cm$QVDX)gH6yFUl&$W34d-n*vwQGFe}Kl`6&(K_%gk?Q#&_@T zxnr{AX3N1H+m~vnC!H8|j3gY~K~U-Cm(Jxq(_MQ>*S*!5HTAP-0V_j8)7;C%yyeb? z7Fn|?N82IC?w?~T?42L!!Qt`T-~;pe2FcV~ueuE#WM*wZ(F5%L>yvwrZLyBg-`IRi zBCWXXZm!&Rf30Z!FNMd%tUb;D+`|wmJhr~!E55ear3R}Ju2yN+(c4mW@ga9kZ_?{_ za#3Y-l_+{s0ncRxxWHPS-X6E}TXptPf3SuL8FTYf>_D1-jOVTPk#?nDXIFchKFoGa zUn9zKc~-s1-ZyP;*<#62Q@b9;^5rMX^%Exz4qL!Ye`gdYbN#{&{W^L5tP_v(@WEN1 ztFL;J-TS5cmt_>*X!BhsbkEqO+|qOYM%X1qqSy8W6}Jg_y_2GxrTfdL9v>>=8PodP zb8g=84(xI-`4t4)#c8%$Hn-^#i}0} zzPaTme=D<2Ru-?(a~AJ=Nh?xyRf#>TSkjSv0>A#&GXsKyj&BfB5Qy-}Ul7`li^skNXC+FJ2zGzAaF} z^Fc}3sVzOW2KRp@5G<5*P6c3x12}zgI`|#ivW8uj1T~*4>&PkIzD-@FLbOkAdv~OP z?DGJv(~WAT24(JplL0}`UbtM8`evgi_e3V6!L#a%!<945fjs8nW{dJrIYGpZfg4|9 ze*@3Ys~&xxb%WdZm={x2puAj6_ie^pPS!{K`zCH)-q}uSt=?ZRZ{79J+Kl5~z^Lwo z6v*|=k4Wo%*mzt_JymWZSbsz-IucW>1^G17&ch9 z-d*bp_IknFZ`zuRec5=MqiR0;Wv@xpf8VbV+G47WO}Iw6t-+02A8qlXcsQ<|v@1i? zWkBs-WcKllXl^aTlWk=|jdOYEWODguXr;RLmA6J%ua)wY52l!mLgyPsOPs*A1l#Ln zioHb?A?@9F7Jop!H|0`TWJ&kE>|(z^^DBGm1mwwNR#&Dz>D!*b43 z14*HB?wxpo+IfpEl^eAuI&}hf=}-17+^LeRyyCqPWAxmHpjA+qcC2Gd2xdc)L(|43 z*gaX2oYTfvqU9c9*VO*Wi#rSNf6o^~9K6tqz8#P(K0Gx%b@ zH1c66shMT0UE-eqb@Q(5N0hue2PO6Np!N*pW2nM4VYK%BMadI6D4o%%+VW@l2C+ZG z_GmuqBZo^rk}({J4sQ3ad&F(gsZ%X%%FSBGEci5hDE6j~L*nPuKDCyknd@$-zF78xtu-Mb_So{M=2Tr?eo5RhLIH2{z7@TdmT$9mGF@9Do^Htb zJYL{dxa=(c*1>Zl5=XXVe>~f6(xKizIOcLt=K4L3hUL?(6A!m<4DikOZdFd;Jh))u zMLJ4P*~Mm79gbrR%dNHA{l(>olq|jkS3ES|C;bK2_RcaTxxo4HJkiytf@Y(+Rv%3t z<=qHtITWtC^Ip`JPmLO<>z`if;%jcc{r%i+hcSgDQo+Y-T=B7Sf5m#natEnBij4jf zY!a_6EZlI>=!GQ3`35pQ%e0i{XUY}kpE}{kORiHGrnd@`DoR82l1u{BrC^PnLJ$e@Nbvb@XLdW1{I7rcRpu z(H-B_y~#DZPwAH};fwfzqYtjBWz%q(G2h?P*!f*(GO*dOfA)IQ13 zKgrqGc(=NKyAv<&?bT(x)kn0wV7FJtC$>+PIy7y2gi}1P7s@9s9h!eA!qTBRDbC~G z_eBrNf8alG6DK_<9i&!Zj8^!3sHDmF?vq_mcd1$L{vTWX0^cRvd42n@z56d+3!J=; zE1zQ-Zu2~A-@2WTcYGzL%E+elu<<(<_h#WPR#Q-}CKj z^I^jZF>+>^*wl~9$>L#s3om{htLam!_kS&U!HfRbI7$9%UeM_JI;GDlfV59EOLb>Y zsDTSsskWjqXQ_{*`=$kr6uDo!!uL#2`5DeFS63b~U9YX51-^>tg-drn(!gZ*Q@_=J zf0Mr+JuJUo=@Yy_dUbZ0!?DV@0h&IWjx=kf9;j}8IrM<#-Pm&Oc@?AK-mcpP-8=MC zqmQ*&*g9{cM#nGOd*G_Qd;DEjlm7t#0RR6003iS0uiq|u^j^M_E;<1 zIq+^bZHl)8=AupUb_We$o8lB?{Bdg7$MGiPaats)h8}6W$#@)a;WPZWxQBXN-f3uM z?1<;?kdJ|PNQdP*GwgsvFt0nfW9;CLv4cCt4mW%@1M2F@i0R+}wpBZlpo{a}RYkKA^Wf6GU;{y!9l|H8}UMK$hE*5ri*ht^_%SCoRpR+NRi#3zv1F5Ufh_fAdXa;(IF|^p?qzZxJiKC0J4zV@iB)(Zom6-fookgx!Tx zMSyX)nCf=pRENh4IKSI)m%7_>CAk~#R(8AewFPLY3R69&5NEa;nn?i z5>=OJNCP(kjhCTF11*2*G`5x3{xNW1>{xrPI~At~3yr;a_p;Ye5$)v_(OwSOdpTt9 z4J)F!YS;^WZZA$qd+E+|FE1MQ>UscG4SR*EVK1*5_R^{W-ogJV8ullpf`FQLzZZGW zpJMM(WBP_~UWne;Pz6bZ47J9U$tPjRexj@3Vn*dB(BeHv7ZNY{B-C2y6Q9Ivd=j&v zhV|FK8fjOK+>|Zz#{@qy$%2WnpOl2_xAG$J&m`CW*~OQ9NdvD6ZgjUQmXnQ&#~zn8 zN&}PuX_v}M17HC)mn%yHK7TI1%hc@y$cd@fhRrsBnQZ_)It?3{-3HLDP|!$sL(y2Y zAqoc@PEvLE!Eo%szK{}39O6$6b}L?s3JyC;q2|QQT=a5xT1V5N-QP0@6C{-% z9qX5>=NP7*W28F>uM-3DriOjn$Xhnwr1EVhUv?UE8Mk^&1DFAScga0K&?w}A;i3_T zi$)x7z7x>hXA1SpnfPYFYoeC}L1TPB5H*NL9cLkGXIYA;vv^5#mRvl^BdwPPcv{Hz zSwhY`%dLESfM546y^4hX`ahT@UmqA>{2s1lInXx0{yn4|ztErbNRPIJU52xG-4%Ux zrV=A`Vt^97sv2#7(_uC7+tJ_=j391DW6T+i%|4o8z-X8L&^Txnet|9a07C2;>SzI0 z^^BJB+8Z3A9z66M?IhR}D7yVzZkKai@>-gpQG5tm_l@CN9D`RG!_+oLRNEM%+E@=D zB&uzUsJ1aeQc!IvRwnv@a~|U1yl%WHC>ZB264zGxu3fH}y{1#!G{_?(2` z)9~UK2|*{B5Ok6aK_}S}bdnW8D^C_)_kN%gIV4W5pclGxn9Ln+GLGlTES@I|*>AGA z@RiIt6K5kFb*(aGTWipRo5$oVen-rIzNq2OV)V5d0+ z(Vjvsxu&4CrihnZsE-sr!o79HPCaryg2ymqIG3=2h;4nU{!sGBMtV+H;& z4I6J7)5SEwAEudYHx2AFFlQIDZSTeK zhHT^`d+A1l)BA$rqpKzq0!@{!)|zCFn_TnNn#;k;C1)*Qf1lyEu}}kD0e^MLYbV1- zuMQ(44V$~`Ia}AmQ)bTAGR)R8#?~^!et4Pw*gGC)VCtWlcK_M*tj%)7`f>~QEa!-_ zT*e-GdGx1Gw6atnf#1Gp)a0Ol4Gz}#XxI=hA45?~m(MZg|50)CE~ z5Vt|hEkZD~Tdhd75{1A@ zBgxl;$wHm8#HG_oJ5>l;}kZQFN6xMLI))c<})S%^#X^`iB*gKsZ(Zjcf;Xa2y%#UODN_0M@+8ph%MhgQo+=ZKrbSTS%{#>| zNZ>IuXFo>Mf9xju>0&9Z*z?ISkNdHKnQfezZNb0c^lfHV{uNFBS2xioWJL^%e>E`j z6VAv_;#2`C{KU-5b~Jyxo9G|%f<7q;h;28p^EhWmzi+TPS8z~O_qdsv9ccCr1%n|o z9u>yQ4g)JsaDP^wh)XX>;R(nLc}nj|I8eVBaC~8Irg%>9?wOG1C($x$SkIguri&-W z?~}o5sJwa#k$Vb}drC#2MoWzzs>EXip8{NoHw;hnYVT<`A$}HF_x&`gB{7+2*vikC zexCF*B+kze`JefBC|Vrv0Gm<$StWU%|PSsDGT$d7h7b-gd110=e#f0Zn~D z^{Gg4$nPLu2&*E#n4Zz-xQ^k+7%wrnd`WtS;3XVNpywA+WUy@cGRl_Fy`zD|Nw zWiWAdKV9PI^^cVB)J1wO2W{S4C>Cwy7!kuajJDCa=#QTrmAt zeEP4%>AzC4eMgFhH&8Snbdtj14O2M0VGD;hOyTf`Jsf^*;0VXVuUS0&+7u6ON;Y_t zEAdTHiEp+A2>EqVtZD`m-;$`k#i_j|QhQ6eTz|gsb&{)s4*a%6?QKr&ZIRmBDq0K8 z&0i*~Zp-#)x4FQ57Zm~TR(ho5U18;S4K?q3 zynp6>Pp*02GxPT!X#Rib-(Hr|0SWfL`e2C2&HJ32_vO9G`(|!FK=VIv69W}DdGD8n zv%>9($khi1u0G^keJE{FJ~Z>R2hHB&CJqHWd4xoc_82(&h}rxjsnGM^=Z7l2h=-4( z`j^M@?@=t%AMr`y{CiV4|Gr{4|K1qRzkjb7&cC;Z^B+vi)89e-L5S!-FdhFvh^s$X zBKi+zfA}M^#UH!zOUXY9i~rH!9(%dN?v;ajFJm!C2!B!?`2zmI-JcM}KUEI%KNx`1`ZK-=7i1Kl}XI0{+hi{yt^e|5OUEPc7jE-qOe8Yafa)qD85G+<#{Z zuYI=qai6Jv+-DD)&x|}_HGReu`kCciUSk{i4bb0Q;bJb(^nW8w|9^M)llXr}LzXiw{|j# ztZkquSY1yPt*$$aR@a@P)xB9}t0z+xcq2E~N$_B1a7&qlztGV1s>v@4yf)8D(d|z% zb|2lF95vEJqq?ajXmo~=Nh3#eW6~Ld!IRa{;K}N48(a?+{ViF;)dC-ANPpG{zqs%l zVN5`-dKiu+lfj!Z;$K4~Yo+;h=8`Yj8~LVKol2hB+vJ(OZJycN{_hBwVXLI}hCbu8J+{lx5$SS)2*Ve_PdX!{A{(oBmJx;dZQNnKp zV5iN3M_Da+l>9RS-EMm@K==18be20h%X-(FaoUY!iDw*T@{FUgW=Q>(Jet|;XtT|Z z<~9ReeI|K~Pxbi*C<;9Xy*^IQGCkYDDN2rb48CPcqBp=Lk5Nj=7HCtC=0dUEDKo*3 zAq(OfHhD~2qR(~Z(tmY%^*{Z82SR_w&%WuVc2~{Fvj->i5R=*J$s1r>|My7M*Ov)*>5X$Vgw>wc0NampHDN?9YRqu`(%$sB*A+3`o39eH-r)UucBr3+)hnAzS}KGelo# zlSHJ%A^O4!5Iw#EM2|N?^aSd27@{ZmE(O?|V1M@h31%ReV20=k#BzKs3B4zD1HC5_ z*qDe^GLfVAL^FC%w4?XLw!|S2y(JKzgqWK|n45$+nPkAUN!`RWMy(QvPcqwXlG);u ztROy#4y6J5zd|z=(7uB7Mzo(KqWu(v_QWXC&BYWG>`$RL7Zh2hFj1yhkb8;=Bd6Fi z$OaUeLD=jbm;YP?d}U^uv-7|m@C@O3o8*kPMD4{|lr!rI0cyQ?DfmvvSCQ*?aWQ$n?Z z-W!45aRCM2b&_m~k;68|Xx=740rZ&Eh0z9$?z-^jmiW=oBw8k8*K-CjpCOo+X-ibq z6KZw^)3qZ7LkGr{Vy1!vV}b^U&6u4sV=aoC;m~H;rp+k8o1I=(3S8Zw3~iPRkQ^#N z4C;^yk({Xz$yF*ue{u}g)RevxoOvW~0D}F=6MUo;$k}U>T*aD1WXV{Q85x1YL_@F|bvF9C2a*#093@%Qhd3Syp-x2~Qq)6D6>%}r67As3O7|nU6-!@4iOn+cYv?(#U)=BGd># zx%t2Y=2N$uFL)M2%=r#}82B0_=rsfZu0eudBO-um2CXe-=46VOeqaNue|r#P-Vo^` z`U$V!h75cI{OlHNq;C=RM}}_^jdXv5;WJ$RaPLK;a^_V1sgVsMjmyd_2ycK)-h>eD zCg(D1?-1S_u76XszKy^Y(CKfYA+$`;`ZA{VWs=tQ3y9gvTXkzS)A}-#)|XY#`ZBKd z$_q$JUyii0oG6|44mr@?G?2OFA#=9*$Rf+BMQ#=>ax=5Y&5}iK7AvMRdKpQVidXOmR2y z8`?XB_ww~^1nU2e#Yd1{Xob6})OM%6TXb5w;3#YF6%~4cOW#c$dcADc_1vuMC1hS- z$*SuSH|vRFY44B&?Pbi_=GXrnoQ)v8(B$i>O6(?IFPfY#ILg|4MTK5q^7Vhz zzR`l}8_^OQiMD9(2+|9+wUMrA*VaZ+TXexu)?TEKjU3h4%lVV{#OKKdw7mz3agSfh ziV^@?{Qa=WdqFQhU?6YUM~}rx2MeY*>?fr+?88pmrQHwh&y%s)um?UNOOGQSFiC{1 z^8nM?1C<{qdk~rD!HSO*K1hEq!+^s)C?5T6u~|lVXmE?kGFxn~JJ@2k%ogim5St8p zY>!fJVd~jpew2EP?NMrx5`UC>i;I7J*=;Fo?)4*+S+INkh_U!1^X;wb>NUEvq}(bl z#mF7rR$Lvjm;5KUx`_c3oO$qse;DcS?LB1XJvcB7y)MhA9{IHz`VD{Ztsw6+6)lP} z?`)4hI+BN1rp$WAU?eaOgI2G`$T?-6kGQZxgO&g6DR&5#nUp zLH=X&X+H+yXK3RpZySHTdDx7(XR#`1XEwStj4o4>Iv|O23{3@a3iTdxS`RNt%*Lk zp@;SN*Yvb2uK1*J#iwv`d5ZbfQ}*Pdy8DeT5#kt^Y}F4@#zE0?N1B7_p~7vL!W+{3?>>R zz2b%MPklx}+3-_1?WcCD{S;s0BE3Ju^!|*U*fW-k+UHPikc$f`Ej(vR3(wio!gF>6 zQ{BB{1QW8tb4>K-x{(#0tB9Y9YUms#pMf?bHWQSGRU*tFXBLXk!kxyd!W2n0V`ibIP_vgtORro zN_eq5@b`1H?9aQs2l%<5;h$GPzMqr97UcW60r_5H$oCSQ_LAKOFIkZ97fiFiuoL@* z1^MtthIoHfAe|zaJ~fn-J~f2n@MY_X#LL#lQ+As9BX5^a?iAFvlikDYbop0WbtArJ zH}?QKb!p*FW+%ItkM~x)q~DL}5BrSZgJ2ZwLM-j7bUeB%Iv(XKjiN65s-U%3nbuyF z9%Oh`ywrKsq_I~G8he##3`XT^=-l=-a^U|OB=mn;#19C-*Qmg+3j)8+1b!U~9Le^& zNw(Krerfl*LEhJ`^8Omh`)eXE?*)W^9WX&9ep8V6O(yZ1l8N7xZYbXrgniQ>?3-3$ z-$vrRO@w_L5_(&_!J`CDw)WN^=;EjsGvjMo0N39jaHZQH30i++g4W+ugx23!q4hUb zXnlXj#2qbk-Vyxg9p*ppNdEJV_^i`A@L4B9Gf4(|UNx<&gOaUN&C|V4ui`@J9c0CK z$SnNquhdX&!0z4bw=%oKQ)_7ufZg3~iQe^>x&FsX&aCIdA=K|ic%ud!8B9z^-UzZ>a=u~Bseg@$(p)4t10`>tf#cSV2Gz6(tY8bxq;m#Q1|y%+WI5Zi-yZek@W z-M8#91=^lUpU=@F;QowlZ}u?X-P4Wj*&b<&gJbw3`?iXGqDW7$ZmT{rZL6@rA6Yj~ z3`{<*WC!eb9}9;nA2U%tHXf>cY&ul=*s!aR_DsKp6Mt*_&CzdBRQ}fdo1@<%j$41R zfWM0!FC_dsa{B)}w9xNd>C2_MIi>W>)b%^zHzJ@<-feLXQwKoPV4mMW^N3rJ&+rz6 zT}wy@FQ1vh_p?gBY5k1p>az+_@|hSV-J)yxt*lIy#op(Z*hBO_xBj4Yzge;LNv{3O z@cZrC%l*I z=a30p74UlOznr9aj{gM`?F&fr3zvU1;|mx5t}FnMFAy@QA^qkS9lw|ZFDQ@s|H6CM z1N|GXV!pilqViqf7fy=I06>kz{}PV-(oG!dy%9k#YiB_<|#n@jZGfNqWHCq{V+qbYQi2X&oO&q~fX+-gq14k+$g7DR{X^-$~^Za4Ayk zr&1J@Q|g}s(q{kG{T7s$3HD7}sF`3sh0f7alqN!Tu>qDFywpq8!r`^b@%3=_1|5G` z6d<*g&{U5=c%d7txgb^R^dRFgJVq+0Be7D)W2FvKsx!w*9q{YAN{fHg_Nw>(v#!M4 zx=wa$c^+ zF+(qIYxo1}R4=owdm*j$!dmMkRN|@rs1hd*FYKcA1hEX)9oAPJrux%zSx@P~>tx+r zx%!sLRYxiT#N_wEc*B3i#|ZHpR#~S87!`%RascCSKrAqBtp+tJ!lZ)`CLJVV5(Vwrk3-u4BefpJ7i^>sMV5a$w6diR6)knBAnu`o zxG}?r(gN*J$S^eOq4?DhKAUhcs_#R&&M4d-#$-7R88^speR^gmJ^$mI)mHLLtSeLY9%Ney+Q)Y6ZBs>2%sPnUVq|?{7 z6az<+jmVKm?jyyGh;A*ZeMp&U<47AHM^<*zZ!(R1Q@faS!=5_IUmd{TQE=i>!fNPQ zg%tW8TI!g};eU)6{>QlBVfZj^jv*^yC9{SZRM*z8KWHEHp(%WjU8M`j=^Yk zHN02+$#x4hNf7kiwbaSVy~8hGn{pOVv^ ziHv_HSb&|^oCzcb);$ybA>B@`YMz9ihJr&aH9Uy+QiJI6oV1^5C>{5R{xl(#<&tTFw#k*EyDo@toLaNV8W+5~;rD&j(oa zJt32v8`a#9^Yai-=h;B;Ji*`3i%kN5mOqary|FyJ#zHz{)%N_N&VqjrHo+;jkxsVo zSRQC&aiAq>ppE6OC@vd0NBa0arid zBGUQ=&hgB2-Jg4ch(+V^DbIM8&&I1#UIl|7sp?5hcZxXl#v>O{L;7XrbvSu9oypHp z8$rGo7!T?hL}>z|G{F|c6O24g5RPXi5L{ym3Ai=^<64rgF&#V11mKR;A189un21a@ z(Yc)WhLk4??m1D2k%`<5CjzE_cEV+D|;jHUo#_q*%+Qr-&7hA0{o$x&!aX4M%d%Ep}aQfGOPaX&}T`qB^ zyT%`zrDmYLl$0=?YQ8m?VcJ&Bz}u>7wqu#W@M{Lkzl5NNOv2_zBqi?9X4rOUA{n+r zn_=80LE_z{F741TnXj-k-=WR48I&G?&SZtrOwll*C(pDG#hnbNX7Wg!X^q6oP!L>Z z!^O*l^)BP;}hb>Zn|ot%~czX zvNQ@Mcq7TXj3FWKHd;#XMqYw9T1xOHCR>vgUYf{I=EY4ypf+)DZL$Ig`ek*>?WR>+ zn^jzaFINB%mrkMrx@G{$FqSg<(Lp0m89BH!TwNKfx|)%?nr#WGSzfZ4FWHQ|h81gB zRIHKslWr)oraCQuTj_=(%bYxGD6X>NZ37(weRE|oT|M)9$C@FTlc(*=e< z0r^T>Jk~cVCZ3~^ofCdwn##2$lE=dj4C!IjhA+vb+L2qeizr)7R%nk_h>}9Pb1hu4 zJq$#!Giqm{l&A9KC3*A*;*N*J^A>T?m*G|(L@Kpo@-ExhmCYMFnTUiv2hI!I*g+Dlw8w;6WdmxJ?WomhuptGOPL|U;V_V=> zq}wo`c9KDVET47?iMca4B@i#v=17-Us;ov-kgY(Qd7!sc+ zy6ZgPuDF?fkuOCjG8dj_I0Ecq%yfy&bQxl&%QOgoH?#1GK7ANf9P!@kYKBBtBbfs= zUyanPhV<6I*{7KjkPyCl>=OZFBK|?Tp<`0wHf283%%ij4GMP0)b zbqydA`|~yQbsxF~X(Lc6`LtpReOfUkep)fbKCOtCi9V9Zvh@OMwicdFSzyZ63o1RG zvVbXnYJr@s7uYhSNJUJv2Tq11+6Bf$yTF`i7Z?)l0(+ueXiz_Wc3~lls)ce?EhJ+Y z94!0Ef$$t%$Qm% z(O--*>SD%}VbU3R63wWFSz<;-pSVmdG4G3iLgGtA=v^YE&LwmN_0=VY)cJk3>i5M} zzb^y(_btG_ltIK&f;6FKmLkn8t&jwlA_l=WY-uYQW`^w>5p2WdB+S0igxNP%!t5KF z4sMh&`$iks%2cLyHvj!p7-ZjQglybH;rAv1C~{WpJSWQfBl4jnGGzk*Z=D^4Vo#Rk6%cRV)j*K_^km(UQx_lFJeCgFGRa0T4LB)dfh`F7&Xwr4)|&hkwvZ-sKE*iKT#I%}#}&v~Jz zVe6R!yl=w`~6!&ve+zt8B0CHisXlUYNV;x)J%t}a?6EcNs{Uz zBGp5P{fA_!0CQi33oh-$;Y$r@ktU=S4n0EsXe`E^!+quA4aA zYjiUms=+BE0*82Ag~n1Lr#1)aS)GoaaFAA6Q(6C1I_o+!TWpv7|6?rKBd6rh~&DB+HnY&ETM)n^&T5q@R(Wo2s9Y zn_Hw`T3n=GT$HR|l$w-SWUL>bRGOKSqMwqQmROooqMwtQqz_9H#UOPsgIp*wC^IiP zr!*xMW|$2nhGl_FVJilIrqtxrYzALSJqYLN0aJ38OHz6!Fx(591Ark~Q!!_0h_8Q( zfryU$=~Wk-*%d#!-&hgOFSqBHw8z3!%_-At;>>@&*Ud5GYVEF0vC2=ow`6Ib#m>iz zHnhjQI`!muy5Bq26>~(HnY0b{dBsata47z^diG?NVv~*zmso*+P8W-EYGcfg>R=?bnfsmbiUkMk#TG4#WYE?uZP<1R0LkWy5eQpl`H+P7RYQVq?z?{0PI#O=s1W_B?&WVQ?%Eg?mC}`O ze%M=d?u}Kt_J?7TW@Iif1^Z;?fyxXK1_XfRO$Go^O9KQH000080M;RMm$7~W>=D)> zb5gj(+wD~-004wB0014AzkUN8e_~}}ZKPOvSQFP4Pck74k->opvWPkoa0`$CK^9R4 zkVQ685ZM$$5+D$gm_^WPiwjoVpe>?P^?|n9s#Vcyt5vGi*0$DG?NeKE_u1E0eQvGQ zw%WdPCqtX|d;dK?ZsyFH-`USScarqUQzHd}$ayJg$+^k)X>kGpwq76*e-wLItmfGU zo!)B0O!`K#)~wUJHP#xmwVo!ksY2gmu-Of!8i~PNVKh`ps?F90jonRewVJJBgUMi* zXsvpUUGL#A>GahGlU^q_X&UrMsl^DQHjf&;y<)b;=+H|V%sPir?^bIz*W1K)t3xlY z(pdFko!(-D51UqMt2JBge-(&y*EeYzEJnT9Y_Z#LP*!a)>TT{|LgO&nJ&*~TMWfZ@ z{mzSYW{KWv)R=0-1`w3m^me^b-=H_y#kG2)MXWPu?QWbyZq;U^&gkZ_fh~zqZ>q7^ ziWCZw!R)EAn;R8%*B2Dsqd?6p>NqqkLWwjwisDE9i(1jKI^qb!Nc^Ufc_?TNQPdctsUU>xWZtnHV;H@yW9^7ca>5`hF3dG;gR9O zaG}CO=YW>cLNg5nrq*tN_R|_Q4x2vk??Ogx$V?SnRpCM5fAvfm@Pz#1bYSyJQ^Obcn1FXlm&av83L>^1;}4j#Y?QBH&OM z+s$z%_H$$y+rx3x{TyG6J;HH9`Zh3%_8P|#bM|Rq`D5&T#DaV9TN(hY zK#avn;E|_M#7Crq7u$7(6V)LyaR=tpO$jSm+*{-$e+{CAmaY~Io_h-D6pY3gX^@f25zNmC3*un@EItHaGJpki5rIxvC4vPyVM96CU=|++FcM%v zUBnP4Ood=WoG_Y$4Q27+2u2I>VO<1`U<@TkX-fu7aGr`0;8%cw2(BJCJg|v z7;~eEO3)|oB8DReoGMXJ^N0|#8KXuLAwp;ohGOxN?sPl)B)f%pNQ$fnQxKt;G=LF_ z#}gxjcqogHawnmR`4pn)b}%f&N2JI|EJfBXQxhX)BtxcQA}mb|rZXzRr_nfl1i~N5 zf8t}1DCZI9`xs6hP!^285pkIjMWeljkHMMK;PogLSD=J|iqWye7|fGI8<@qz+{tTP z4~r=`6%hu=F)CsdhFB7~7vc&Q4@ZKK)Ua409Cp5nkwcnfEFOVm#d6r#NE9@Os|W?= zDNwPv(p`1mjU<8vLOg=SRiGdoR4coPe+Wz^jey{wwJ6kuX_Sac!zggS8JvyGLlp!0 zC?o+IBfALIU-nD5>wbww`vs3;aka?D3WCvHL{xv@vUp4$*(1c&EIt;LDM49GJTVqa zfCah)as+}9?#! z$Fq0>$VGx&LL4y;^JE}PAq=HX#$-qZ1Jef|2VxV@g(QOFi9~QE5u>5OP%hGB6y!sI zc|%?k`HHGBZ}p#dA*frCIq3CqY9bzkR)u|%2nsVXAwHhP$Abr`3=`ssBv798mpGG! zcoH8ckPM4YKxptcIgUuBlBsCefAlHQD0$Ijs)9&K#Zsbs5Ft;6T!Wz$r(`N4jY78* zSv(0eM1#GwI3fcy$U#H89BGi#(F!6x8e`-LnJ%G;G$EeB3udx71A=N0oD@f7^MYAU z!5$FIipEgt<kX_1$dsN9&^Uy^>$?wT=K=Gicl|siuKp`RZ`dQgv zl{ZMl>%^lLN|fiHtpRZa;{-w3harekBg2q(dB@sF?SFJ4zOj%j)Y+83dohivYf)Rp zx7US?!-d^SkR$6Ez5j1W1HA~boi+U0-I%EeHGmq2JzD?pk5;tnDf5yX;Z zR*n=m{x&f2RS1`;BZO`;OIe!%C;FWTE&p~M+By4_mLG@tm8dr znY!6fgFm%nlk*ReyiiVuVlT-GZ%-k*RC3S5`Qa}9W6;Mk^iThZC;yQrRfGcQ6q->& zk|(U;rW|B`;BHu2Y-pNph{_(NaS1dD#SHjFhhtoET;-&MvY^=yanc+3q z^q?RC_1-r=NGjkLtnsNSEOQh)&NAI^?WX~>@8uCCgO*mP%FNj%sJq`G88L;|V6Le# zbD;d5L^K731i1b<8U02?qxxnS%G#}Sj^Dd0Hm%*T2a|=ol(&?RjBg3-Y zN+)gvie%{7^lMx?kEvnc*@7r!`x?IrRm+}iJ79_XklZxjVl@{{A)a_3B zmF`oyGWPR(NE7IKH!MgN6nJg4|09VIK^PL|?!7!cFGrq73p6VMX+N$YYPPAMx$O0C zoLU>VNhC~$oTDP^WQn?`$Y*JnG}#J*V959;@qMX zIz>)bir(^rTTFg*j`#T3^533o3n4xobR@FFe#C_}Py-_#FA_SXgytMK&;r2Nrn6KZ z8NLSKdQMN>?uI?bu0LZVIL!q;`6w3(ze+`OUFL)sflQBp_!4DXLRqqiyQ9ESE*qK_ z!n)BwCiow^!MFGO4;<1P6Ft^%JSVC=aEyZ;C6{hD&I=#Ok-67>J0w~jgJ!@QLZQ^Eb$%{jO_K}Crrb!Cv6>LGM5l?a4r;$_>t(Wcf~$rwRc$=<5;eC4N#e9(qao4 z6MIh4f9UMkhG<}7F8!JLH7RI6L>~x_g{&gfcSCOs36%F;R}-fTS2YV7UL9UUomUtZ zKpwZEZmtLxA-`Ct;mu6mD`3q8$0rEiD;fy`(%>&TA>Jd-bf&oVlhj0;mE`KgW(+kR z7?c@M^quQs?Yl0&{LywXTIO+mKZWwO4}BJhwAe0f|_)z;$d*i#ELdXKdx^H%Kko<#gu|<*gp8Grj z+7~#tnUG^-ET0lMzJL^*k+svKnB5aU{@zIOtxu0nWbq!8X;|l)!rkjof-~Wv8%@!n zma9F_?vW$u6|j2J|Luw} zg)>!zm1z)9`&Z9C9f@a)1FqG^9{4Rl^*nFXx!A2sy3Ay}r*{8P(f+d|FWv6_{Sx%a zx1;AcUb_7nRtDU`xp&umy&KV+HzVGtC!uOnUVM$2+ciaOqp_c&w z&N92JAx{J%`wTXzP89vgu)$w;27wTR2N zvyZu<%eVSUW|!_eoYkqYhwo~8DSL-{)0lQy2CFAEr98r})}Mv`@tvm>T;_D8b0Iz* zdS|M`OQs83r~BF&KH2(jO{>j|Bq>9jh6h*N7Vj18RJ>i7n0>cjBgmUKW=$Ag!iyzr zeSsUA_+qs93pW~F2|7TSM@^Gv7N&ZI9nIZ@7!o&w{UW*o9;vRg_3C`GQX_h4p-`S# zt*=fCk3huZamA}_!jOFdZrzx~m^hCsdnLe+ww@?flOp!?PA&TTza{ZIRm&1A#!;vQ zJ)FXFHjd+@1_T84!aj4g)pG4ZHG{$$aT=OZJg9v6k>~SJ> zi(cleeaLT0f9Z6c*DL0v%YY!|ve>gUgZKD+Drt9MNyP*!INR4^?BSGdYGPy2y=gKJ z@nt*jKx?aeYz&Cd@T+i`ctkIT%Hez4iEDh=+&u2zc|5q-qelw$CLPrv*MCg+V>rEF zn$gHHDURCOd>Z>(ms8R5cphGx*ZR2M*h*%WBAwd$|IAw{uxMC~mO1`P_#k z`=kRyR|?y{-u~JBqTtE{-sKVV&iYl9%Jpzuf3YCLRR?&7m$?tGY;~r_yBtmHG;)4Q zz%ZDb+HPHyxNNP7?L6e^@8CKg>Yv7B!QXVq+Fz00aN|M=%JqCV1U##4NGg?+ia zFXhwGv--Vy>Mi>fmEco>wGbkP1mK*=RKI=-0?3wPMrYiUCN zPH(LsArM$)M`YfAt2Y|0%+s3HvNKp(Hh?uybJ-Qra5@eTY{h8{PyTQ#zG-$jjGi3a zEWhH@AaQ6Mw|ci0-ME))jLMH!&9X}=oRao(BV>peSugPttKpn_e4St-(Bp|FEA!ze z2ao`TN8>8Cd78(+LuVQFgc^rPj(B{mz9IX%nE+Y8g`~li%qK0penIDx=cM$=u~AtO znS81jYsWUvMg|InH-R3$v+c?)?ilV+(^-sbuDzN?~Cq;z#GGX8~?+7i}I88ls}hm3aW;{ z1#tFnyu)R#;<89*KCQzFWp=IX(UiUvk!zvF#~@~s=W%u~xpRol9V)sa|6Kw*cqgwW zhtH0VClTh8YpUR>i{sgbyK@{~C$GiG3s^evlwx7?9*SYKJhQV1?r8lC%z3Sxh=|(c zeb~qC8;pMSy;|Meb?va3@&TUhW2#~ffc;(k=)MmH7rD{BOZR%8)8kQJlerG?`5``8 zEvCP`EAHa;+=1bq9Dp8<{r6>emV+fFX_NJ^c%3y^#7*tDf78e+YZ`u^E817}<58SxY~soDVzAZKe4(1KI_M`CONty4Hf` zpVVcy9+*x$=<*S*Y~wi)yb^J``3rM;J-2**x=KG3pHm4<>wPC@e3Gmk9 z*}Ub_plQtrdbPW3Yh8cXRsAwfnY-G^znaz=AE76vgPj-dtM+ zrZ-;Na4k8DxOGuB{C&zntrJNvVGz(3Pjs0VsB9bNt<>QC+RvR3D0IUzNII8u!ez60 zy3e845B$us*yP&U)X?PuU(+ij^x-#mxgLBbcu4AZ_YYLKJmb;R9)~|JA2n_xU2y}N^`tDP;bA`eFGQemd_J=FZ`g=0pWGHS@|Wz(_?YXe*>*J@qe2=V z|7GWPc13I5OCB_g%$H{6V7R=#u2AjrX^eVLE`2WJlngYA`3*za-s9@{cyrBgiC&o> zFBcZ(_4IW;i`5dAy?1M4{`Ba<_g9$w_Il_zAzJwQuA2um)0v+ync$o}fMex|sv~ge zB)a(E*N`nvD`qFQGubYa4tamcYEHyM-5$dmO;Ak^v zaHE*z)>VAsD0SV|ei4G6M`kN6_-PtjX~5Im!r3V*X^mMaB*O*LlZQNO*6p;*XUl;K zlEVZ4TP3ia-Tz>J)m5bzYSp1r@Uy+G@Q+f>v;EA`rVjrK{v`o=m%2V0o@k_3{SUrS zLjoCcgbwCY72A)QhwtwcD{MLKhg=r_ZXwG^`xg%X?Pty{k?;DeI22a)gNyM!HP<8E zX4C7NQZ3ui4L`fd9Qx0Y+$HGbG~=HtQgJkG#;gJ^>?Bu0iBlaC*T+!A}0wb#i!7w>FtsE=t?>q3p2eYp83 zZWQoJdg7lCeaYsa{i7YVtOYfr?dkeR>(=gure?)JiokMcld+y$HH4pVk;gHV_fEa$ zINQx-r<6)V+zoe$P*=<8^k(B93*6NC&?2qX8#m1tt?x{3-@#LUmOrNRxVf>`Xl$f2 z7~{ED_8nY6-nQJEsbJ6WdFm7LKRhz%Zve&nU;hfHUMJiU##|=t&V2dMk-OD5cd?

O23*OOMKVf-fEUg)}geDO=F_@hasa4-pVYd3H4f@y}X`3=gA9`krcVk918Of zl%44)R~sJ3|IAIgF!f+m3N}H0ya*7Lx6vNBqNW>;|5i zjuCa9Mu*b^;@OLpuYEYew*(u-h}PmmZQ(Ws29E-D?n%+B8-+D>Tt6$`Tw{ehw;hCQ z9~ePAjee|^#@fk=HmYGFnm>B0K6<0JZ3RvyOP3C9jS`7}wPgg@)t_+mR4wp4j7`OgAuU?h1(E zNgC@y8*(6PW_;6jeQw}<`CB`#k(n>fR{(V#gDMcyi<7@f`X<42GsJi^^y4NqVTf2B zeIUk4qx^5+XPksPoS|$Vy%2Itlxez?H8%@(mr|A=+7uSa_?GzK!8LI05S6`zx#b2#i)y zHf+;XiXDs3Gix)$x~FQUb<2pt^T4Y*kC93C|08t&+ARLzp?ps>ksOKQDg5Y1EDnPu zEs`IYvX}-=1SRD#doD?u@}35c4b)?gRHJ#XNp)NlY$mEQNVBWES)1}CD4SXk(80lDCFbj?2ey58s+Sq6rlE3nGm1{{@pWiYUPW-< z9DTEIzPVWJbjyES&Bg9uhz{J83*59r@Z#vyp`ul=5l{#OU2x=&iguFx0QgPXVeK=; zc=N{xbeb&CKZfb*m_#}r|3Mr1F_yem-h9GSKmDo~$*Z+EC6K%!xUi2oz^LULc^u~> zNrM!)$?~sFfdhA2D~CLg)0f{hur}PTsm^p>Z)id(QfR+EsqYCqHJX}ov& z+H}79;hwE>weNP&GKkxBbl1#p(fNHql&%cC2?DZWtQjB)%nrf1Yd^j6F%|Om%!UX! znz~)(#~;C(mMpCz8^-Q5#P7qJRfsb910BOaiqx;)$AKNtF&ORW0PGPhmyN8*xEpz+ zUD7d}>N6B2>oHiP{hsj+o%tPO{H^P?{OzBNPoSqkZ^pSV~{fKU=`9?bAvS*oVF z`1O(Zm+-Vubym^$CSDt5*Y%yOU9{a)uPLqmLfokRH*1e0?MQfvt9pCpFT^cm19kd8 z!%i|jTrJfekV7}&R=`b?>U5R$bd~(KyRxDXjf;c*GOB}pn=k`!oZA<+^G~+9PaE}F z{l0>kS&J^^^-J?kG_84Ybb;5M*;WJSrY+v9wJD8aW3EWd3`^N3rk9U-le_o9+J+oj zor%NRApdQ%2$*zx+xY<}{RRPUvUxM}y7iC`e*T)2^e!xdZXgLS*7W^}Qb~W-AGDYp zxEyU#29*N3$4&{$kGMa(bBs9;(lusT9tflIw=FddmNxV)WIdZS@U|u*h6GJh1X*_^ z5CG+WAvJm#qtZojWZA7Z#SDj?HEXEydFV zAftv9GU_6GWDP;JNf&`(n;@$50yq;DEtl06&iEx$?;ze{eP*-3 z#ub-D{6ed`oxrVRADhYxa!)=mE37tqN1l=!iaaC!iN*Oj#a%Uuf4H4ue%iJALLemT z+^vncPVjJMyT`+KCBVMvA-rvsH<18kocb-}sw%7zLt4cK{%ILP!LyR%^{Y+icC9 zm(M9&Rz!k{ZPh^sIghf(6oDQnvHh8;_!c?{_)}=c);%&=Tv9ka@Xv$Vuc*0oXu#!m z_vao?Kyxo5DIZNhOWhuVpI!y-w|q$0-o|_bS`J1_-aasnNYkPvW?W?7?qQjkVzem^ zXZmsHl$?zTa{!)$9wbt)?H}^GS2w$25V?9x~JpKENtrtX6p@gNAf~> zYg+8r3=T02xrh#pqcNgM!!+iKBKHC^=>mki*aEU)*CHj5%$I$fxlt`QanU>ZqMJ3q zXN>IUA1XKSYasF!7!U9C3Gk1pVAvsAfgoRmlAIs1JN<=pER$YnGp8+}!v z%w^@<>a5Jen>LDaxL457$ZI9H{$(OrQaD%j1HAaVc9BKS>!zmX%;@hR%j)$P$GxuOdgEskFm z&ZY`yo|0t{<9UrYyH6=Xe~C5(c&3?A;cLgKABG$Lr@8o zPdgs{8KW$va0^XL$|M=KZI+*Sla_ZDHf3Uo8$ zMH*>LWA$Cb-rQ@!Bz6TK7Qgsx{R0-E@;RT(fM(lK-v?p&Jw0+{>2y!t>f?-Zq=(G! zHzn?e1RKZ^xGYKFC6#ai3MB%9aHyrdV6HGp(9a-fIl0m>+Q02gG8%x|UW@;P1z7+UMIpmm=>=S`Ea9${rOIMq9hH^%abvv!C$Pd9)p&80xck40 ztj4pLUJ+3*MZBJg{rrR=$1*bon5NQ+0x#9EiYi3~XY#A-_MLTx> zxR$&^$Q{>3x}MPDw2|FeB~KUQfXdb-S9Yo@a&P^-4q*5Ult$uQ4Q;g7=xASMD&ObKKqeirK-^|+k5%PL($u^6?Q?HA$p zD{#aoOKG>3ijaw@Q%>u_Ii&kvP5xw2>CqbpGYSU%?}6-vhw=aI8Etf#S<*yQyO$Go zHDwzL6zw28ob@w`5>CfHlztSLG&#k;(%7M5qne(0;QNYF|I2Ga?`ZPb~z2B0m0!|~Lpc?;*4;Iba`F*)N#Eyk(f zAa4@6w?n!a``lG3hjMA}#l%#*&L-<}@-Gix^p?z8sdEq)_AQ=?a{YHl)SU=dd-+>ZODc zo*L9{^3;JHG`0l_d99aeih1KGEx|+o4qUPOjhC@mDfKY;39M8k)4-_ z?pXy~N6tIWYM0oO*zZ$!Sb|xP1JPTJp=ky9dyuJXRId2&WOKB`=z*5CWC!Q`qINIb z4ZzXgIqg!6evW2~!9~W%Oa!XtTCCq;h9-e0!onTT#c4(W=#u4htmW4R@{3z5LkZSI zGe00#g>SNGIMN5kj49?XS+Ra|&haP}xyQ?1ilST_=!+9d%j_63y-atcJ&~61=v@IY z0)@}0GI_ej>%;7?)E<}nr(_}RoXu-oehv|7^*b_NYrl)qQ9VzWsnN|%QV zaH03c$vV?Z(0>0_srrlds6^KY<)H%@{`NI9J0-TlAiF1ypN~N9i70>V6q71@AijCg zgZqSVjct1S#ea_`d`n_Qkq1$iZN`v7ZA>i5%g;K-(d(!QU1W#lLD(t82Zd3L z^lI3SB}+e8mI^*Kh06o{7>JT{b;3OJ&xxPTlhji{+hlqgRWCLa>oR56hqB`ryvJPSBymJWwxKfgm9 z{+@A|a0ZDUHf~FsOj>`O(}7GkNm|QIkJeT4YxkJM@s6n9_wZ#crS;<>%9K26ssGdC z;36>fb$`3q%5W7e(WSH7wLK;i%>Y`RuksLbm%WXb+HIw@@N)E1{*5w=NkK0LKl%S4PuvuS5^&1@@^_Ho92WktARx8~ARxs5 z;qPz(0~d#%4*w-S8`M2@zbL%y5eP})yaWhE&}8URbiu z-i0><_B$z#n&=M?%HKbK($n^c={62i<{H!DW{!dfI$}W_Ij+!qmP}KEIu-TsZbM4J z8bv9I>{u#s4)I3eDTj@c4K#mSVUECYw#5G3s}rR|mAOEvYZz9$zOy$725SNEz-k00 z)A-DJWcG4J_TVRD!v#V|E}+YE!OkfHn9xSX$9Vn0(#&f=1~b&LPe+VN^i2PDuQR0% zvSUE7xushB=k};V?EKM99Yo=i=nk~O`|}e@=m#ZCjBHp42#$BExy^4%JSf;6R-Vj2 z?A&M4wPqy>MM8za^tV*xA~{B2wp+*Kr(kG@fDJJ-^bQeW4W8#5C}WXg=xqt7FeYCt zG|`X6#A5K_xuEeiuy0_fAv2h3!53h{g1Hx4hcpmj+|fmBO8x1ghkRk@BHgWqKP6xs zQy=`}2BEZ;18BecC0TmWjRj{_2^I0auN9oKmP(VUjm&3>>+E~?3&O_&1Dm79f0@+Un99fTYN7_&|AV+VQ5eqVGDS?$pxC*T0-Z#NiOzP`NBV5(nB8h<(S!%{M8F)1vg7wb10Y^6m1n+M(GM1{~aCE}4c zEj-*&h+fRME`k}-Lk^PZ4T{WnTfXfgBug(sManW`y zb*S&K9mo6=8>DqbVKKPdrXYvPj;{xa!wo4;)PFl8ixCCs5j zB+BqsMS*GOK?gX<0KH;qw-SwJkveLCnRKDL;j|SbcZKR7GUfON{(u7XKwToV;m~>0 zKw$>OVHJqa4*lWgCQ;{4lsH{7HEh#Lb51!?C*S>TIseowFzbowL?E_th#oPAL-u>! zD)1VSgG>%ZTaEF_CAj`|rIUsE*@EuX6*{EWHKVGL@AYFF3-k@#ZW(mxBUk10T;|^x zfXX&_f0ukgFrw^;J7%%*#RX6Pdmq~Hdi_(WS+g;lsf-Kke}LXXU~R&{D*UK1A0b*9!|A&FMhq5huT37ha+-CKt;;Pi z6Oqk*5w^9U-c-^z!#nuCMZtzWe}-^xpThpGeXgnkv`aWK2DSrRuF( z)cM%h3F>v+9+<#nN1cIlT(Hna+a@D=WL@#tDIL!wurYMJuD%RdwD5G%A|q+SVcs{i zzF7jq+&<^MGH7rXPu55m4x^TDMRuK86cq29r7SkWdFoyKk50jWY3Br-cGeG1VIlY4 zz3_dY|5>1Xgq9a$t&IX*ZB{3`C3G~HeXwYg&-tl$L1t*mrz4vENZ0g}f{vlu>oIsx zdFTTUhQ_D*{Ug4=VH$faeeH;N&N)kCpA)y9&**X0A!%$dd8zlIJrwH$<)XBphoerX zVyL~b{>)v|NB5_29rKg2o33GOe=4>CiW4`0oJB{N6NWFfvdx^ouV(D05$*EPLDp`; z_d31Yj61{}usHC2QLideGDq_HphWIiEob~(0#OSigd^KFr>o4eWQG3pcA$;4eiXd1 zss3C@`UM(pgMIJ`L+!oiqnGGTfh=l{3!9s<*)aNe^`=?rd3?$?+)kK`1?&(3&d^}Co=pOrdvT5sK zAfF&4v+RCg-~dsbZs_gzyN2~5k6atDf~DMKEpotRCiE4vm=wb|GoB*y_zWf7@aUvS$PfTslp;; zPoEDPE)5$lhZQ@0Y4)P7^RR()ul+5I_&dIN$HjA&V#h`LKTpYy%c?L(-^YvhG1|AW zOuVXvgI@piwS}>`=xF%C4b6tq-3)eJ-JfKa*89`NXSd%U{BF!2li36qTIDqpRrRdH zCp49MR++yp+}!fh*Mf_3k!L`^VIASZOvCG`VySPfN>9?maqDsZU1ARqf?JXw$1^`< zvlmvr1MyqmMiL&rWQJw6x9K&qk2C)hy&f0ZN!DMZT}+ni+vvm5+A2JvMRpJ7uT0Ic z#E*T=XQRheOb%5z_}6N?K_}zU-1aeh4bmnNh#wLpvjPXF50zbM2ZT9&0ZD1nvap zuFwTWPe@}HYsTa_?lXntQ$SG$90L7I-t!IQKMN#M$9NQ+U!$|w6ooo)a=_OT%>vKw za<<4_Du1c1z+mw^Zke5l_mX*@s|x*vZgoZ7U~3*@f{c?D1EKp4zce&j=I-G!e`)Ww zri@vgTNb#Pvpr)YM$bEwX*fL8n&D*6AU60>Y)y~hrFV$ zhr&ga8@OQR`5MM1+9HxIH~4zlPK|KdSQC&~4cf6|=j6mBgaI~3X;i(&FrtP^W0 zRSZ{(Eh1F@qm*eP)+LULGQBgPOvo%R(`$HIeF3&~-9}a|vKN*iLg&zoX{>{Gv}s%h zi;eF~z3!l86gH4#TUZ3ws!3H^n%9cXRYXzocP%$L33lNpI=o(uJs_#4dK(`}DlDvY z4=aMErmLK3B{l))HP9S8x8X@IQbM@*{Ou>>a`niLOF-YQ5D9W_X7^ke24%F!z3i`^ z=yYEBGG2B$N8Vj9A^?iV2669>39${mT|J&QNy!j&tI4@R z&Af+h5hb0OwhqcXI;9XPMnzS)zU|E7KL1iZ^?UP#t6o|B?oj!sG>~NWp3noU5SZ*D!z10e-;*2dfmAmiM$qf3udc2TcC{PNVBbT2 zWFk|l8C?pX&mm)rf{W%)5S7<>qF3pm?6r~8OoNZOlK*TtI3(?<=dda>0yd^_uFs=A*)AD6r%W4`}8q>s62v~!wiv~A+^`mn#$$lONCqjp$yl3ne1$)SnH0nmegKHd$R+_S2RpTO`eq7ZMLG-F9Ob{rG~rxx;Ap z=w~i}v-6$smcMKf(3Bb6B2~8Oe_BQ^s+NGx1xMZFW_JRsm8m>URG3RlL0qj08(Rt@ zkQAQjUD@A^pe5ZKqai!DfI3uAn3C36!=E}* zTbx!^S4k+RCWm0_A4CmKl&OJKld74{m&^}{?~9gjj@>t%l;k@$86#;ija}EuocX*G z+^H3*gUe1$qd+r3)twL8>${>lPt8p8r91C!D|6@DbUZJ3MFO5yVIC1))^10dZt)Ly zFMutJN8g>Nrx%4!@qgpG!1Z#_Oyd6Lv&N}(D%ah_`*_@v04_hysbkYzaob!+2wyQG z{Yz!zTkApMjt&2;OVIPbzO>GMnXEDj@vV1@%K<`xlM5i<6N9Zed^X$DqR}DuxyBBQ z_|4K`0xjk5sm977T0~G61O3K|z-M1;kj4}b|EkxiiWI0weB@-I)YX+WZATaD35Cvx zTRfSFDML%(IR(i+ffFH@GyySEf)ulu`7kX^jKu5@3IfNT5AgrJTuose-)Ue#K-yD! zo56_zz!rT7V{?P+)ooJ0Zj;ZXdr-ff-4OS6k$>&U7VqKTPlO;SXo|wW)aSPwtC_xC z^=%T8=--zT6Tj*iCFjh+`&Dxb6IG|#r=ij@DJx>b(b2`i6IH2mrPb!u!Di7LtjapI zVtRrFs2yk9vfd9b{&U5SZ?0Rg+glr@#&ZC~9XnG&7Zlt$!E1etvK-NCI?!@`>^X<= zVZwc~1I+n8-0b!soV!xy@oxTRL$=^YEHEadX-ufPZn~psgFn)6$8iq-Bq^*0Pchq) zm=#1t>KUe*FD5!`jdf1_P2{yOMSVmbxo<^Em*clKzioMK*0n`Ui5Nd{BAS#>n#cv} z5XPd1X!C8OFX2ze%%Luxwk2uP@?GCXvq!O#JF3cxf)splq%3_Y|ilM&N zlf`};FHF$bh}cwzHi@G>tl)&2s6{hqzpmhF4zhu$R35ZXE{4UNPEuxcDSxC zAdzk6$v?SBwcRZON~0ny%=`--N4F1Pqhg-R$v5mUJSaa7%~U0+m1gSm=n(?YV)C5C zgi%TA((`}Lk_Rme_(EI|iWiN=wAQJ|vb{K_sZ9@m=n7 zp0rNtXT4B<^B2|A;Pd)PJ_-SZ8BazNkDh;xZy>^)=2nKJn%I)DER=2vCsE{Y!nns| zRD`LfVe^DNNQC76iPcI!`M;sZP7xiN9r5yN!uouy_?S(q{UY1W5FkqgB}67VO0NHmC4azndYXk6rFHXw$(w-2P-}%nI4r~0hbq9^ zrBM;CD1E||g>kia3Sa&9E8{z{m1L zR|8a#Y}vS)npp|lI7|>g3K%T|SzkD&sJQLai#Y5P+f<6a4!?u^dX77Rr?*wFc zrBG&CLKlza(@t_A)%FZsJ&*C+KNk778`9s7|V)) z0fsi#HB#0P1kLO!BTFdY+;>Xb$@2R1aTl|5%S5zgU zKr&H0sky+Sl%r90BFXT@lPk7AU!I#_VPOiFS~RO^DI9B{NIVwo{z5qdBd9ZqS262X z>8l~fjkWwd%6h^;zE_gUz78+L;V}KQ@5S(5NZzOy;dRA9Qd#w%*6;=^DL?#$Nush0 zG4-SP1yCF-5YZ%1-BXOJ9*+GQXEJGBs6c#4-NYJ{3g}aGd1~RBGJd0sQ zOaft|>j_?qJ|qofAkLr&U^BcdQPm&bt;wByq6rG<2*2BOtA;NHEKJ-Ozz!8;8Z5mj zL_Z8Lw-=fH!dnm@&Mrc-J#q_=^T_|LKJ6Xv1U&K|b9WqV_mps~w;i5R;IgZ!wmWaf zcHL0`Ti!p{hNdog-H$4G#*xR~4%(_J4RrLpHD6{T;_n^`gQv2afBv=bIS&3@A4F<9 zYg~WvxXu&!{5Qt|TrYJHZg8$;wcZyuUMm0$J2Hirovfd;D|0qojy-KhT=zF)HW~)< zk2aqkW^bbx77j7`@?AEYT(?2*_}40^rSK7U4g1S|9=&wQwHENtm(JH99}Hs@fZ~uLXd* zSS_=67hBp^dKNI}#o)>|bB}hgwwLlEz51zesoj0l&M*Vi@}TiTA3Q9mXs^O_1Dy9fcgjcvTH zho-)mcg**oyKIk zVJX|(?dVH;F zkoT3}8}SFG9}EE96^ZYI-1UM?W|sO1`oHh0WEx^=t*@WfZRiy8Uhp5lW#!pM!K95FWPM)Q5N&fz>^dsKQA*f=8$^Q(YVsc_CKYw* zBn-WC7#d|TVq^1x@^Y$8Duu|RBw5GF0_wt=A=+|AC|4$Ty%ZQs_yr?Zy^?4l#$cM@ zZ}p|9{d}t--u?dPCaa+E&^A)<86v>Mg1VDfBQ3}A$7ryx5;6OXl0xr_An?F zl8+paWm}kjKZ9)Q$4%V^43R4i*ivT%?^tH{@c5X~3#gry7T|57<}Q0nEiC-%;h z^iyIC-wx;jLdeCFlCd|=v3ROmK7Xa(LPoLJqS12NjdUSRTJ89OjUIDu+U;=p-LvUF zxvp5}T#vo>2ds}?jNx>?RN`8bo8g(?eYiZ||8w5p=j_kMGHHT(j8(O@tIWV@rd-;M z$1M2mBYDT%_A`@4PW<_bIp+KlC{l`&Dl>gR#{dnZ0g|wuz^U>?SCv~%abT56`KTBK*f0Kb0-k#m}>| z3@m%Cb-cyI!4>9UAU;k?gHxoB(aghn*zTXhE@RX2V6Qhg=GV>w9`e1VT)V91S0Lgw z_>q4r(m~g6t%EI)CyV3x@cLphX2YNZlPk5H2~pvr+I_*6n#m zGjP3T7D(OheW$QP9l9oqUTWT$mPuztZ)LTiT4)XUQV8#(zE1Mw$gEYwR=B7do6!l2 zP!tLv2Q}V(srfLq)k~;rh*C8_L4vUZl+iWGMth-zMTD<>AIMzcP?hO?oiBYiA8()i zwjN(6JvZC!ycvMLD}dlTj*rvyI#)Miv>tq4Kd(3|Q~tROsWWxDx~%T>>}X;sm6e73 zR0gF6Bh9R|I1`4_4EcS1yhr07>{m3;ImHGm4e^N#&qTSyW}LZkGT2~kC8sjQNLl5K z$~;6E6@>y-I;-<4DU5kpZX?P+73ti^`|*de82$8pr_z9YD^u3|Jh+s~LPK7L;Kr!Z zXL)6EGODK;cbTQRzT!PJNh<;*>SV^Iu^)>xa|O011!<x z-Ry1=n&~Mw5X^|GDvy4;*9VvF9E@EnUV!MZ7KPi+5)B*=LfSy=Lsn} zWiJ5P)i`y@ZHFoH>JEI@W2a)q#ffsv40JflKNqHAMhWgW>BMNI5@+nWVcCWJJgXfssT~E>T|5 z4qy`q2+&`pF55(LzOR_L@BANL8y=n^vYc0f2XhnFJh=@jP;S$bonL}hnw$mt8Y&b|N! zm*|24W5j}p(NWNl;g{8O#|HR_hAx{O$G6^~;ksHHBIM}(+lMeC9{YTP1)y?}v>UK9 z=G)*A`Uaf6*{KGn%}rUUQB}o8djBS1rXknDQCUJJph4G|T?OrCB2*+t1OaWHZ*br% zi_FaG$Sx~EroN{7i)PtqFB?8>XAm=8EZo-$Mm zw50Gqt8j(hV4p9v)(P4v7|wmzio~$ZIZUleJL#* zWoJ8&7A2N+4`6;3tv)75n;Ze&2#Bu{)3)j4FL;8ax@}w9%=RDzD@bRg>wuvo{iP9> zX?2iHGCEkiVBatWRyA~BJX(X?D}7N&yxPQ}K;t>yz-a^?S@#;@GS<-!Hsec)M_PsF z<%DOfM~<{$KJ8)0A=O}v;p926K@%rF$;*cjf z2+^86tZ1tvQFd7daO+Fvs0-L@+Vy2XgB7Dt+|(K@A){~o_*9Ym3|D$3#gEb<`F*@ZzCMCr!aTo84Y}{feg`Q zwlPk@Cm{>NBcAE__+wHr&BHCeg8I}pAig$|W)>dy27vYb%ftYj06qAtD)BSWW9YM? zT{%`?MP52)^Xi*kwD)24scmu`v!$G|q(-kMMQ=_#uBM!IPK@Z9X2dhu6~V@)?0=bh zL>&-+M0f*scC2Hsu$xC8L0<4j><|4u0LaT_;FVO1&YOHHr2`}F4L+17O`~$&-4>ZJ zSks1;-7Dr7Lsx)T8Bx2tR5v^neS7{?$Mut8n{J{WRo3zo#X9^OZ4Qs7)_1afxXN;v zT7B=ASY#M)tn0H?v>BbB<>_JOO#Y`GYJHzpY~QudjLi0Rz3+q}xo6Y^aC8uw*4 zSz4V+zl$K}Rdc!t(?D!+l9H<7mw3%=hCtb|D~aX>0aI&(mh}z}nuWYvZ%M zQ#`lBoU=8m`{%wL1ikf(`z~{Pqr2JtFs#?>sg+Z;M~b~%exa+!Xtm0x_V|N(S9xs* z{Yt!*7cRhcgYUvd_&MFO)m5uM@VRZ6ZNk>*I@i*R4#bWBS5S#%U*n-dXw3}A0_;ZS zY6P;Z0UMyF^&x16zj@2&WS#e>%eVT@ys}w?4-L zanbp4CB0M*6~$oD5*%Cd_jQGq*$qQ7w9uWN}-` z4C9@I8Z)tPJSK0Yh*^UsvC11oW0K0kA29&ZFpL?A`QI~0izI{dx~kiuLdvoY zlae^SapGqQs>UQe#f^EK#g`wJh{0rh9Nt@EL$nIctPHh%$LBc?m;G>G81f#LzmAVy z;%si+9!2-H3wyC}>OIFlPweEqIaducyFKm)<*V~AJD-ESVmCBhZwry=ZpF(Jv7f}g zrV4I3dn^iU;zNcEfT zr)q#*=j+GKD0}yY4yjL<)EMA?D?Gn(`U?bIY`muJ=I#b^r!f9x@YES!uglSVl-+OD z={ZbyR~PWvQNgUe|AKhr9ntQ7VK2ZyB?v-ST2b^7 zi9Rh+#Xw>Jkj{7mCSNSU7}ic4u5lwA)N(d~IMKo5400sOb@@{4FidiS8&wA? zF~dwNhD1XRTWs*?*GGS@V!l|Edaq^YHx1ZRjd&?*7HhWU(i;6z%<3yVp-asyY&I&s z%p0Aj%_jXaLe{E0aZ67K-6pu^|Dk^+*XH8xGoTz#WPK?B&IpEn&Kt(}|> zu0@j&TA!b^54X*a`nieKqhTb2&;0%jJeJ4I=}~FpRmrtR5A-#mZZ&k-ZA>FqlEZqW z!4G$dH0;@c`NGCsas2J4H+1eob@dv=pm*n;dVNY?(8#Q7j##wX6Zm#sfdK{!nt=fw+sc}fDtuHy1*?=4V@i}P=EAU8V} zJXp>g%~trH+h}h#zmP!%tTe&CkRo*S%>!9QCkh7vQx~BvGa)buG!sfO^b!))m8`V% zT*gY6kBq3p25!uv%|uMYQliFI9V36Wa^{D0)FK(X9yS?OWl=GX=JRa(I|jd_IVGg@ zYM_3mhQjvkX*pqzf z%uhT3x9D7s#~Qa-Pfwd~tyH`x3mft<@_u4ET5s30OSaa>Z|Tg1fhaz&?)yeWpO5Oj z$t8Mk6uvwy+-*S_H?)tujh1#cKISssjU(cc4U+diI+s3kGstl|Do=1pezzT;i4`S{$55p{11f z76?g*fY8xRSuGl($Z^5_W&7o0+a2I@T1rL+0rckzbNcl8^wZq^7XWAmxroDEp}as- z)Vc1!;=M^turBcPxBIb6d4R02W4y8VTI)73$!zTiZ&ABfvUrLewuEQEKj``^#& zlAY33H8&w3hd>Z$kQZsrR<8E&&Os)Ve50$;m(H5U6~6SLG5#l}#okGmXPs|zj@@l` z3lVw^e)Kss&GxLKB1Od&Y?q?e#=FDeP{6Q&{`=z7v-VA5mh(yQb_7THSDwK|*ajcL z=?9%t!CyL@@%S<4hDGxFXrEjLZD zCd}3vYbf-+_`6@C5jR&tFAW7AY=Qyk&?+T=EydGBR+5bdM_1m7ah0VfO4j5cL1~0! zvk|){rT`-ce9&n7e)!60xrVr2tG3f<&{=eLSrk2)1>mlrQqW4kRb%^S$XFE)c?C!8 zdKOr_W1Zn!Gt5PwuGzuE$5niB@9yXR&);4=0KaEBt5b!y6sk-{aiZuwtC*Q~WbFyt z97y>mayR)52>{Vaf112^zXzZVsNBJ(sr~GFom#yuylDNw>Rs;eJ0Cix1R;0-veTKo z3+w%=2C%(sm=7}tZ6?M#oq|sc(%b5I7;=6cuW&C25of1+zheCiF0WXex#+)4Ep-Cq zbl%Pq_v=@gbuWA9R=lsXhv$o@VzN_5kIVNVaz6cKyNS$BQnUGMd>k+Kit$@%e0M(f z=LSmGz`<-neqerY(du4t%Q;S&kqz1yzNh(#5t=ki_5E<-7`^_Vay=TJbcpy@u2rek zYasOh%2d{7O9TVgJ7Jou(=uwhAaKG+363Rj&62?uw7d&yvcgI#rG+pFWC!27vGHzW zWepBWsaUl@2>z3V(;tmfiPUdlPS~3Qto#>I(X)`K{P7DA%2Qu}a6AGP5|Z(#VJe6y zRZ7lDCi_h{=Iq+T(NMl15Z5l|v>BY))_6An$lo(?$c?8+?TNG5f_RxO#XMrM!>Zfh zylqe*W^)@$Hkrr7f@;NfQm`iEG<>Uiz;Zi8R5qyPbcAJlPM24)m1TBL)kLi-Ehf5v zb6Z-)3R{*8uaN~8=$ufg!QkNz$_vs6Wz)p6Mm`UebNGXDZICMP7k7gXT%S!$NY?@Y zI8!JUC}~5ogGD`|ERbjX zBe9i@oyb{k1Jfn-AfZpm?SW*PRzgMi*<-iUwQqgp65CPGsJxgguN_q&TZLl{RK6bC zmCZ!Mig+%hC@w5a*N0@S?8}wgVl)WQP2>-X3+kfc-m>7+AZWq@cE0F#$86uRgK~c9%UzV)iBZbhzUz zqI0-Hb#>UPJ4ST2zaVImXhj+z%0p7IFHgF$wjh#FF9{J?9UQ+YEnv2O+tj;CxT_{b zTQ|zKYXMI2lZ=@1W{A@^g7B<#%5FoTR7C%2`k_+P&F$gZW|;ikU(O z2m7yTePx!+aIQ!Db=!r#uJXgz>+)$pqIB*qfs%_McI@o9ZiDJAjoLfWY8+PCz6=CN zh>=Rkg!@8hWoL$7htmLmd$QJvj7eeuV=S5DDe1DNlSn@d1>uaunhmY)rgiBy;nw#@ zU){aCi>EJLH=8~5ELT;b1n#!NBwf5VO@JjK1Qsv>1g$^v5xhP!$sV#Y;f%T>+#-br zl)5@IhsqZ4aB-ln_Wp|+iqokZA zPaS=cVm&}ZzZvzBe@i0smSn*|t1JRV8wHlVC4}a4)n7}Es^Ef&+G`Q!LtcRf^J^fZ^WrIj3lNbA zA__@Pg=i;a1$F35cu-;nqlO8G#PPrf#Ox# zkc`uP`I zbff#9lL-YtpT3!=1bZQunvGcBU>U5>bRa@OAAEl+$FJr*^;=*MzSIFjc)P_$ODj;Y zu+GUjx6QC_*6NKzKmT7qokza}vM?Ou;P=4&v)2xX*dUz6mgei;L?>Ayvg~18cSuvt z))OtF>Nv_ase?ry^qsEXFf-N z-^Oe8d>&eN8p!56G85LWs>b!S^AD%d*PIR!MkCe}O22e~x&U?-k(>>>QsI=8Gp*A8)zl>^2#u`eFcmN*ro?T0X(|gw4C!*# zg37Cb9Vw7jMm!}Ufj-YUFcld@paEiZw#aCx=eaV13CNVnuagiTB2?MW7jNyTu7cP< z(!|(&ZuRN`ogK)R=P4dxprLpDW)4_Syy=JHgJ2TP^bO_reE`E7Un-yDycepw!}XzZ zmtt1Oi|adF{lZi;z#B1FYP#=5U%Q&%J>QQ+8wS~n&re+=z@y>K!J@l0kV9=-ueH|U z@hSY^Y=Qf-OjBp!XG!#aq%=MBHQ!ZqyBeQ{CA;@aRQIrxl=?PReeb>U2HzfoeqF(v zZlZbRjU5p9VG$Zg3PHZKJ1akZ#pUcg{hFGbyBwvLf?|TDHzi!Bozzr;(s?wxAc#AT=%x+eXW1=iJ_n3}&Nt6rh|)!eNsOkjzf|A@Y< zsln`$)dL1@Hga>-R}hTbs3lCD&J!q2RNt9{o25)&3~}WK>OcN_e6NBgfqNf%&USuC z?*oH3si!ZWIWO|}C-FgH??8~-+(~k{679y`0AL_0A!lkC3FM8Yq(;|qXBLT+<`Zrd z)upYvU(H#SwhgqSwgDN1?Fre=S*5gPVv{N7m>ETxVANHD#O7$)ieWD3yf)=n8K+dg zey@mw8Nvvq<@siqa9IXcHYo=}YUE;%-Cr%-V<4Aki3>VgA zk!lv1Y5rj3IIlpEFoXPY{w4fo5Pb5-{Txn?mppBY*aq($KCeIrByq*9e08q0Z);=v5^OT>rQg*1vRM@$uEa>6bQ80F2 zK{MIp7o9e{^{3mlM@@FsZioqAH5Sr#vX^1MWO>{=|LrOt-Ksg)zSNzyc{=CwX!1t9 zz47HqM^l62L#pWK5zg3rbz+rQTi^HUeZ$o(g^r8~v@W+3KQO8|3j84`=|Tv_4S>gf zD@7)Os-PUB31F~v$S+mld0DLP*{v|=0{gkDQL^;t)f8wpzwm;-V3)U?o2PX~3I_K| z><;HLU#Ba;p@B9IR8U0-;8aegS@bCB7vWV_pMxOdq_c6b5oBi(o|Oi}EytY)_1^d`JJ^6%N2RPa2j7B%J^)>;`MwpC!| zzua-hf43(&czgJYCmQVi@SL9k=-uf%3Q2+RX3$+->ZC^-|H@uw*3jh0u_pS~KZ0yC zmlpIomv4msRiA3Lr>ITs{5n6c9v-bx!ms&!ZEaK2i|cI-Gxvze1|w2?*t{2ZvOj z6OeX51&Gv($`s}A`{~|G0*6#;gW|$5+UrB7n1Y^0noqdgZhfl8&c$`PpM&b{%_;uS zS<39kC~JWHXT7#|U_tCy2<>-Hir-Dv??GU}&?i?wDgz5><0ENDxaI02{%uy-tr=4! zQ{;A2l;$OP#3f!%qfN@DJmuM@&OsKVH9!>LQZ_>#&9dVxr?rQNU z{q&3ZWPiS;@^_RUJzTat%39Z+)Ov2Q=B@~KEC25wa__N3)$KivbNVyW(Cr;=RlpaZ zmy^7T%qDDaRJn1dtNWGj=WHmh6Z;WBSu4X&*fV9-Jjh9$lZdFhDYByDz4l~eXH$jn zLDgJyFN?+v+I{%yGo(gtOAT`eKQq=c6G_S6Gw2Xhk$Z79sK+j&$=rZ1Hr1QYeW7Oa zKAEtB`PnTu>r0!GBh`*vjkZ1OdNlRf!f(A~Nw=haU3)Uf;awRz3pb98%- zyXz{On#wMu<@Q_?#WAnu*|wq0y~W~t){3gBzay3@f1vO4v{b0c&yG_2+3-5{3-Fo^Tal7wEV=n+(J5DoX-4O(_pvza-S6&b*%T+n|0D<-a`w>?6`Lr z%;X>SSxG-1npxuRu=|!TR9%VxY!Ccu5R=CD?$UkOvD)59h^TgdTW|TU=2Gw2VP5|( zh?6W_EWDhVeuxERI8=N-jAvPY!CyY>dy=_d&7^BLxUv^rF(sY&dNbd>Rf&d_M)uC= zuJz-*S}ZT1Zt|hNyYzhQSD9T@oh1a-cqu>Pno{uwyWI2 z2`#SslcBoVOP@Em_D5UUBEc}@U!dyHSaLyFl3s=!4FEN{GI^cM$NK`Ow8%~OyWv)~ z_j8qh%l3>%Hb%ZLQ$CNwW>}~6*oh3SavOJm7Re)~LNP}~NV(3g(jp5&c^B)~n?n8=zpz=ReRyYt49uQFK@*D_q z>hlE%B0xQP^)=@5BD{w8nL;&#tQx6ZUOgITT`^0XJN~evw#aI`NLK$|18dTXBpM?+ zp$&np7-fQce;E#jBP7MvFaQWIhL0O{`X}1s%`lM!La?vUJhB1w{P~RJC5OIBmHqYyHb5{-J|i(QKnQ=-I4D z*o}>u6tYIf$P8*Jqj%S4}!HWmCVV!)-ihqi!UyaHS%8aISixM$=B;x}5Ii3NW%C z>fDs?;pc{sOwst3!o8<@QF+^C zvb?7T(0#~JM;jk*1b&Orp5&envj%2XO+aWmEj!`)ftj*=8) zC^3gw&@fsldLcKct&&}`{Wpl;5)i#GniF-vJLDXH- zdc+ZS<@8vl{bWN+Qa|ZC1Zp|2G;O)wb=Fj&w`?gQ`B!a6qz*yQ9?E<68tii2AxIe( zVTvmCV>7y;TS4^T=@&fcs6K+xnBZi!2<=;4$0zMPy|wyel@jes3fg|P8UVkFF?Msc zkMsH0Hx?oT^99V6@&5fPv7B3noCz$ZhX97A&9b|HXT8yA^rS3zK z<&h$L1IK!1%U3X2KdoHv?@GH$c+Ta}ze%M8WL}O+cW8qd$4NYuE1d+@RqD8uFnpIs zgp#mE4gyMJ#1YqPKAl=HvjCN);1nq-XOl=8_A15d`Uu%_eevYHV0v)&5lC3;Ap?RE zOI(-;qTE(3r8~Z^uocz-qC5xQr@HQ7Yn)Z%xQe29j%B1NMw#@`DAC~1efBz{R2fA6 zT%x#jX=rX3;YuQQ4h#{=Mm5d+-c0!dZ=uw`)n?V_sGGD@B9DJrD*;vL$zfCzF{`Uq zvy08TU4O&ha(iu^BXK264 z;H`-sIT9}FyT0Yh`4cXRkL;V8;eHw9`eYo}Ky3mWz-6h>uLw>|6DWdL4?5{uhbLEx zCt0su<8~TX&ffuD=K;n_RXb6&n{~BFC9aDn1T7#~(Rk<&4=bkD78+kCo?1)5Kg7ENnUD%s2 zWi~1q5yctHcI!dt2oVBqqs1tH4Gl!mv$WbvX7HW2Sb^hVBLD$RZ(W_ybaTi?xT2;- zux^xr-D=6r&7pSO{uMD5sA8iG>jEjnTbOw(fp7Hnilf?1+dB=uMOqDE1AO$f613rk z%v#k-%@b84NY)&BfIk?890_s2D&$F7;8KKlmiOTcP=ic9roxS}tcr`5_Zi8HQ&b)_ z(8{Wpes9v_+kjO@4cH3zc;W1XfJQkhcu=-{D}m;w-p**(tB~j(p^%A)8F~sdNBe4t zY~Wut*Hf_82B}2ZhEmvN+F|=S4m8-8G6{zL zcq!yHx-ev%L}$NC+W4${L{UHliK*R6{&<*oI#E)Qrvg%e{x)O7q5K^@Xx^CC+vEdx zCUoCckTHi02eSgpd=0rFxB@TA?C_O_v9QR^i}2&CC&APqgnAZ12Tj;|3DasZkssBm zT#r`UOm0i-qPuKd3gco3n=LZHqAL3w{##0c%}f-=vw;cq$G-?RYj=qvn#)tRw4;k6 zDueCUR-!wcG(T9@Dq5k6eQ-d){-eI;xL!C zN-(vV&-ur8`Fr6p1h~zVMwdF8ha=RL=1V=6S%djZdV$)r!Ia0AHgA1i6Wo08i~&_J zq5?Fj!I}ft%nE(o`RiKby{lr0cfdi@_#vi~&lg~5xRvm`-Cfv>qsgV-iz}_ZMaBgI zWLs0bM@t?epp9t65n|CvZipGOnbr5(?=sMr3|HD)PkoW~4Ap~yw!6jD+8kfL)8EdYBw3T^qbiJPj^OM+sIa6`sW8#su^oIBa)VTDJ}L%vikJLs0Qcn)a;y~7#@nqP!R~5uXFG|%eYUX zoUA8T>p+U3UjQ8ReIDmK#zzaMF_SPS;$mV+{=0L9U;9pcG1H+Vuh9%j8o#)VbHdq? z99a}7eh&H|eRw`UH17}p&lkDuPchpguPxv;GUG1FX(KB=XpH$p26`TKHrtvI#De`P71yiD>5Y#E-Z9_BG{|(aLG}hb}TwQ%w3ub3p^`0v4g~niAj) z|1kS#%H$;mp{^udw-0$O=kNF@Ndv+lO~OTaAN`}$-UwR%CU-bF^)Gbq&?Tc+qEX=h z`zt*XT!md0O6D3J85`+TU>gl3o$71xt&^2`gu(`R{L;ZMmsCV26&oo_bV{Cd&Zd4r<=hN)R>hqg}nEwv17KGo-h)R2m@Lks3?1~HA*^<=-3`Wud6IqBU{CHb(c zji%19-ZI;;%;Hpq8I>ItF&TC#1FLfAY}iuKS~%od#HkIMB`s-<;w$UhT_6BBUYM8< zKeYSjpRO^2v0+GKKqkVP*+^x-(1V2q+t^{~k6oJ8N>u5TqghN8f6lzGU0Df+_~r3( z5%51;a|&a{(BHZ<>cTO6_R!Z$aNn}81gow_^~txi538asS-XL8Tf`<) z^Hy)EboOj|Za3RnMY7ja#RSl>fhtJU_ryRe{}`|q1?mz<1I3JhZqNYUV(jrqOANgW zeX$jYF#hg?OXI~#!-Xd;#oW*~ORvWKk&}tC8TXMWczwe%L^9Q;XS0fAB(#sr$@nj? zJv)kb`Zj{3$Q~PvlLl>d-7Vf2-?&aB=E0rJY*m zBR@@8$3|FJGR;9UR1BD#UMO~cchR{L2}0y?wn8z|(>h*Q(sw`8%Z(KXf=x=tLuJR( zqAIyi;GWGe=+appmVJi;&9Wo-tK`X=I9++7qDMP*vfPd&!up#{TgtSws0n+VQN!HF z53DGrUxl3z6&ecfW|zwDCKvVN!})dc&lhwGV|^_kv#lB+v<2A6MQweIjm$*#Yb>`V z#cWN}N?FmCwar@Dl(7w5@hxeIUim6XDSUEM-juWMUm~;Y9z0b)xW;Y!n8`{Lt#6aw zZ$v(Td;O>Z#%*^%)pOl;I~gdqa!y*6mz=7N2v;GTCs(VZ2EBi5caEkcn5CGO`*- zI+$3BxcBnr11q%!M0y5v#{W}jR|8e$q(jY-6_q$-W6+ia;R6`+v{NqvGx2I74 z^u4HTP}o(|P9gq+crD6guZ)Au(dGa%$w*=yO23N^Kh`B%7!pFXG&2?{KX>JU7(+`e zq1>`?G|g-zqE+Rrm?Zw*1eC4p!w0>2Ds#>0|43mdZ*9n(VwQa;NyjEj&odM>TrS;;dAY*}|LBu254*!)Xgu$-OB~ zw^rg21nEO&0qUYA-YLIz2dCmS3{G5wP?tCIdH+<5!n>=X8}(`jxI26WbFgy9WdWEQ z9d**#rZgRP*HVuVJQJwUMJfspc<(U%wiR&bpWk2)Xlia>RG{C-m#M;16^%J50rJN~ z-uwA4l%L(m2ex&yA0i_xVP%ShXC=Rv$bW+YYo0x1I-F`@m5Fg-8!PcZf$*(oU#UL6 zlAFf<0C|0WpniW(Y(;?Ip@K2By#qkrab&T^5m{YG4EZr+@)_Wx^X2@}eTnF&kSpzXdD=zH%J- z$?W4V!mvacKQFgr0#h3t*MgILz)LVoub_zkaHf`N1eZjxtjDnw2}=*^b*;UnQr=5upO5L9t|Dkyw`-Y0v(|N2R1;mF_g zN`!>bfyaR-oAb{_wTcc2f`OKh1a75}rd&KqSkaBBKn9!HXDTmB{u=N>e+w8tbr)U& zVL0PI8A?Sw)>nK@B_B$4m{uQ4$Gl?=0W6=sAfQsct~woDB%6KMViOMn0Gc_Yu-1!qB-qnLjRORUD=P{K>H*O zMO%pZV5{eVF%LgI@Bw<^wNL`ypWW_2)}_gZ-5dYu6{A9+(i3*c)+MNNMN6^zk9_(0 zi2UFxWg>12c0LJVd+~BH_y9mTuPm|?WHnzi6mm^Nc6YuZfEOP_Gd5E*5Jh-5QD681 zza>;v9olp6LXLR^)!ou{*We!WzoZgv_)(Fk(Ry)IpJ8(sXaJvpFGwNFulm{3+cr*~ z>s+#7m=QYRE&OODJd+CRG# zpQV+O&Ijho)Fc_p`EQuv9=|_fIPZ*uT3if@evyblMY05a^UsE-Mr|LULjx>@x-5={ zA}K#jQNLlBxdF{YC#Jcx$Pgn9`X@uReRtL&KUP9ruraC1mUm2#-kwtXy>Mec>!+k~ zvq7KilLyIiO4HX_sI_B7@3;x)tU!56pw`eAPCpRQ&U!AzumVb96&zdX0{$}AGFiZ;}1iFzk)tN2-| zhI-l*HiVDz9cFr$OZitMmm?|f?&lvT;pfLi)6)P&v?EvUNx*!{0-hI1bSV_C_@Kza zflG*^36Pc!S+HktK$RmX2HY;Ip^LjBB5)Xu#Y%cE0)^)>Y|Q%-_wwA`dgJE%(&LI> z(|KO=Qu8wW-E%INWw3)U`J(=`tloQ5RqIuBI#xwq%4n*~!Il^=Db6IHL6Z^wGs0TM zoBX=D)3VmUr7mSAMNSFwo!Q^(gYvyfb>}X22)F_NiBNn6XovT5WBq{N*5ZWxJV||a z&%dSy{uKNhP!I3r$NDk4t;GuYd1-98Ydtr$QT?1=JAcIveGt6PwkA}7Ud@zEyz z7DPe{N)9i|0#&S(RH=|s8L8W;8sdj-nepj#oq9OZq0wNT*s+i9U#$Dy8`U>mFpe<< zd@0T}Hf%7ruvE1QTeX+$K$W9rc(E6$S)F&sbx0`Rge_6Y`XVS*vOXC~RL?KvCN;O1 z>Dc`4`)o)08FMs#az$i6U5ja0Nw@n%<~D|}^MY-3MBMv;1n)mIHmx3QXx4Zhk9u9T zp?lD9{-m}i``*ezA3x#Q3^MGkxQW#TAp9`78Gc5t-M^mJqu$LLQ6J`Ft&}Fevd`qK zb#Q5Cp0fgN2!I>GX@)(sR?Sk~b*u99g3b{|oJTKE!YAgWc^*=?Rr<*}_&rM;<07T+XK?F5+TUMOFe}vxcPJ z45nQ~g0n9k_}kc6isHnHe(ju5A;W;Hl|3C2Z4-G^W2g zJJTE-rPPZd@Tc71&#;%NaNi`GMmrBOc0@WijirMTTqmdQYJ@ z*JBPu$f6tn=38+irY*;U*T@9mqz~z(W~7JMOCmG!t|wBaFd$Q!egOqNF`bS7GU^2C z+!NJIO~+I$gA5~dqB7Fi4_YH3FdjPP4mTN4UpdxzB?Qmb$%k}>wv6}JDpFo=LVu>T zUd*6~TthUMOmY>C(&;x14{Y$W=z!T>f!5ds_6Pz0%Z#+ky3zty{)YrW*hh!Ak2kPY z%{Ukcnh6Ydq$l~Oc}vUE%#?{UNrz$W?qUivQd7#f*>IKByEFc#yW_76FW!oZL!VqVy|lE15jtLU zGd@E_OvaV$3UUTtg{mn3t+)~m3=Y)8=U)8{t$DHnu~k}|FRR1uWC9GP_G@SBg27S6D~ctJpLFKo}gpuuiXhx`OiHgeD+ zCIXBf77#{#;Wh=Z6{+ZSz4|a|nHmUMJAf0p&Yvy-j-O{BD#vzFk{1h>VR|j{P4v>? zW=p$-nZ?0O=XFD5mC^L&LV^}_AR81=5$?AnT63fc|CQ%S4BB)y*ORDLYk@4T;Gyhf zGG0444y?Etk9C%8J54l96*yRp%u=9&B~qo=i|?qYttA66tXC10=~rY1K83YL6Bn8% zPKViMU5vlYQ;SliW;1OL`@z|)3RK53AibYaoalgg?gGtQWFD%Q(@mX$N?#p$q`*Dl z@{71ngPztOx{f$)Yd8LZ8o5lqvt_OP-mx?QQObPK6KPDLiLgRZi8 zl9w?f0jH`=C69;Ni96WLBH6qoA9)7nN>%hI5U0Q`uBN=Zta|^Qm+|Xsepm2CK$X>( zp{#_tvhoaJFD%rkOd!0bN>`9HWGbqrNDy=SLgEg!N-)Linnc^ zI2s7;CDUjTSZnrMeNJ;jp6@e>)kBTEr`9%^2)2QiT3Qb!V8isbgk>e)MP*vRg~PLo zKE|o6LZHtD!=uOk7Sr(9Lub|B>@|dHL`EYlr!k3Df{_!OQDl~L!s}PPC+2ydqp4$; zHSP?ci}JuD%q1I+Qa+{`v1N31{g02brhLDwcydTnb@)^|5rbK$8%(D8w85c`f86_z zjw$c&eACUnc8_2TE1WUw&@Oz!1YI7Q%?uPq4?WFU|A&aEenc)$wW#QSEBhPF8-q;J z*GO>yL*e35*m!FzVW+s_tg#VNOfG}|fO8Ho=Vj)AO?u)HGE~xFN>E{v^ACN<5P=Eq zR){gH3YUBKW6T}@6l3Jqf9xQtPCX#qL~RF+eb(rp{$)d-Qh2p8#G{RFs+sxi&1TXo zA-I8OC|%HWIYq(9-A@dEbxM6PYI2U8{Dcg2IWhwCoJ#j}7S)xN+)T=JGsQDQ&SMT} zKG?Mx`zl|jqg!0R?9@~$+9dw6mhSsxR*sN%lI&zXHE&>HoXto~ZLY+H?o6$_4Ku_9 z3WCLqnY=j8*68sj5oe@!M;^Tc7RST^uqG7p9>oER!*hIVIqxB;uFS5AT>Zfwrwe!6 zY$DPiMOLN0CTcMZX_~4boIVAo`Nyd`wij!#0g05R;hbJjfJy1a9be!dN`TkE>brL* z)&v&@0ad_~10AIot9V(Eh#B5{{h*3D-+97E@QP$eDRL+hKEX%SN?bf3F&o1I#Bi+d zkk=_=@Sl_=@C<_Jf~tP_`R1s_0_x|Dhk0JFB!}KdFcm9I(p1PkWX7 zj|#MF8_}UgtcS~ctz{`5`{O6OB&d`wT>v-JL$zct&@hKQcQ!InRAG%R`65Vo2+y}fwhS9tz-0IIM7`9CeLE}B`D-AfcR z!<0+c1Ep2N=2c+6RWfh9ZRilze0^Bj;NvMKc-cjdw!&E;w6nMw6b1#+*Lp1TcDD~c zj%Kl?;BX18vpUr;6OxB;zAl3B6g{17|EjW3^PMwnuJ1@VJVV@!lnu!yx)vA}FW z;$yP-6dslp7Vu^O{{BlAo(gk%g_Y7ZDZ@&b%poVpZ&-}r{#1E%YKd29LN%jD=O{AR z9;b>npe6LYxk{a)s(*Rg+-S8*E9$^RI594MgE15DScH6@5gOXs1H68;k-nSVJ|HwI zC@0EtO7mNhQb9gaGYFOIzEM{aTs<0BNyAprs7xBR<9n5W@h6_ZVc9=H4I0cwZqWze zx|wj~WI+pg@uXRO>staOxG?B@QlSH;BQ0XO^>~QwXu7D_r$WoF5vu~(ey}yUgly;b z9Gs)mCBvaMHrARpaVsM9v%|y9n-Ac-3TU`qK(hs`jGG;jE=@P%ttX{_;HDiIp+eW- z-aV4gvf~T^lQMPPhtd7l;5RB+$%P9U*T<`(58G~dkE-)sG;XHE>y1|u4h!D<1vYgS zh4d?6yV|cWsO-RRd@lN_b1%HM?%~#$u|zG-PC>%IPd%n~!jS=A$h!MY)2eR8h!OImo=T(E1Gv5&cw&7`v`pR0OUL?kXNFeII}^@|u-g`>Y@@{8d!ByKt-qu@QjVqIf-ac@UYnmCimY^86rN zW%f3U>)C83ZmO5AxGp2EGWb=&M}nIieSG8XS_eI0j(@o>65jBQ5L6h^q~L zb+GKlU>Qq`8(_ED@|B>D^bF5VP<(>6%{3s|D|+_YCTyqQt{dJQe1~Yh>p`+tpzlKH zJ5dka0BRAaLp60HFwy%EnRoDoWuPy6>rc0I&1F+0)KnZMR@hc9x;Mz0*)z>jM7K8otxe zQ0oGJM&oxHPV5H$X&S%Nu(-QJ@nia;T|_L|jbP69MYj=g!EV^q?~C>mab@k&9d-SK zbbnvUCS^V)TYb5#AUoRR=90X%Q#xBD>yke-O4e?MmdA%$ z{+hIup_Xs$-l6#1zUUwkU(E&bL5+Nnd4Jh_>#~l`x9*^f->!HLxSs&-yA;n4fM>f=d8jgnvTX zZx^W|%Gk5a3|jVz;-_Ha=g<}PH;Q{vNMu^v=N!Cuufgxtzx(j}6faUmq-|ka&NP`EL8Gh<8*6Qg2 zNTYhNQ}I>+d;ylZzbtlYn>2}?sDFApfk*MSup;b+4NeOR!tULeeE_AjhzB$(;u=MY zJP_7%bl3cQK>7}S$O-AwiKd=};e3BSJTV?r{0!{a2t z_%;YbAM-GHcPV}*mi-u^^)M>;u6o%o9(Bbd27d%K7csWWi%o#|M~A6L6n{T!I0APe z0;|3ptOvTYvB4+QPozMcqpwE5O~kn%UTqYQCDGPBm4v+>qpJXQ?`YHcc{pe9qB|<1 z9$v>uJBIGerCgNML6``)ra@@)ILx$IPGfV#lLmi0oRV_`dN3`X0DWpMl>zG$U~QF? zf~hBD0((9=WVm|fkCV{sDSv4&{qnTpOJRzipey=OMLg~Fld9)apM`dPCLLaBbVfQ>GNkv`>2FAhvj-*hZ+kSxFF!jgum`6eqk^`zYh3% zV0kc5bjSiUup$`PHgwJ6D@mxnX7zTN1Et_c0zZ{3nT)PhrP37fOn+iPma=k-Cvg`Y zV8cHav?WRjgy}`56fXkx9PzBdpTT{iieW(3V2@R>`OjrZ|3q7&pJ=)MwU-ST{8_pq z@znr<=Jq-2%Lg23cv!d;<7%sYo?te42;v}1X)669!PA+Nd@403c=`OP#ZvTp3jAHSNk?qs-_O?iF zph%xBim{(|GDCmB7+~WDG5Lbx9q{wd;O7_X+NBP_>NYU=pvOBY9&=0%TYsZ=X|fpR z;a>m%0RR7dSqXd;#nRtSZ(w(fI?1d?5OH)?8C^yPc7cR|PJea-Hb-L=ysscC;u-a! zqU0IG18?wp4x)<+@m9R`iChXQD3{8ih!GFO6Y&<6?_WKWCF_R|e#uOCSN-ek>gtJa zUmVpX_mYOkE$=Dr+ZT6q-CUGU_INa#Y~(fEd8N{er=8jHj5C|rv$Kf?UY_*rOQO2- zbvDrm#-wL}@qbd9@S+4%9`#mWW*k8!`7BWMcjhqr6)&1(_MDm#&iqQRhcmC%nak|C z*+erhPn2iM>&i#?_GN)OBl3bAVBT^(%+zv2M&>m~j>vx~UJ~G&wPtT;$tV4Krh1 znfW@YjWOhh;?6k#kSyI zZd5nt?NQu2EH(lPUe{5tXZG7o&eDcfPD@LTQQ^|{YH4XVXBo5bi>EPv6y|SG^UHku z#-`GSR;%0!-*_(V4d;Pc%QMar?r9c>>MMNvCV!~-8dP7I<jX#OmNW z?=kxw-8HjZ=djx326*1}?VE`QZh8+3Y4GrrvzlvGnd>37(h1KBQtlSS_G%<*wX=%n zoi*ImDhbKACu8AWFKLl;6Xe|Tgl|vjXvTKSMoksfBrk<@h**^Z<4Tw(!FQ`NZ#Cq2 z>3^taB|IZJdb*bYPQr^4&LrLR?b`^*;|8WC>AG*}}b!NZc;;iMm@u0!YOPmi3Gk$w>#G*HMLUSZdFWv#CHAiw2@zz{s)_b|YRH$_) z%xT4Ae5oGml0c^1*;H!A`WbOEd~fAOqJK@B{{+N$HI?eEQO=b*A3S96nGoFHS%o(?H*LiFc> z=r5SP(YNoTNr?WU#o1U8y@^D75WR^+-(MseY@3wmFWW?a`A?$n3q*hA+Ydm>Vu=2_ z#rZ0X#5m_0BjPav_-3s0gJHs0YkwkMnwy+0?kp?bobK*yNwZx{x5@dICOoUV^R2}^ zmgw(%$Lw#t__hSIzY87g+cP@qF%SC$dtvk}FKQv%k2cDqzCE*}8>_8$e&l`eqjq7F zvss_VctSLVs}`bmwPg z|4@kTSIqtqk_4*jPrm&S>|F|bf9~b{M0Lm`hyTj#Uwr#vEG>h>e{FGo2^~Jp`NN8& zoZk!(1|IpXEMls?|43jHsd%g!nz3B9WV|1jtkN@`t*-MsvwzR>h>?=aP?f=`k`bfU zu#60zR95iBuI3dHAa5;@c7F!ualm|3nf=FDXIqePHEHLsN{=~z#!cr>X8$?S`O9h! zVh;=cng}{1#bei$PKbETM#MO-l(-56+mIYHVN`$T7bYU1jK@iaU@%}XXQITnpMV!u z=uGflvZT#HvXlu#>q#uFG?^%Ek$(R)>)8Ue+^2#iD#pxqEsDCXcI#kOt-WNYE z*;Zr7vPw_uEO*l0ksX=nh~4SiPsQLz$cv4YT3}{M#?x$~jKemF=Yjb6L@dL)r*~u> z5om4J$tV*$f%ABPKclQGgI;9a&c6LDOn4V2?2?y;QLpWuHC$`FtZ-vpc)Ceec(If< zD3VLbiu9lee&<-3sef$asNc__h&)^^%PGVOgjnjX+?9!4gSaKa5K~yaXqt+)k)!;` z@lwxu4l?xuVQ0NTZ#!~MRll{)(Dr$yZ8=Cdg8?UC>IF4bFP(=4!@VHv% zBXRt_s3?r_ayQgL&Qo$XFt0?a3R0QO-Yq;_UQ(31`}Tj~1b-YoqOymL__U z)pBobjoeGCl7C&8=u#GON$M1E%ps0=Pu@s7NbJ=lyEe=kULDySu~M?D)yWJ~Giyw@ zh=rQMxk|~&q~xqzJPlTo*0o8R+gVMkQ^O8e=M}MLLe{HW@ zuVS_~XN2(v>ps4{0FHeh>A!CuY4I{$hd)NogI^};5r5x)6;7(tN@D}KDiOl!CHLVS zbh#fB=zw1X>xW?7uSF)?O1In}rCYT=V*jzy4r@1Fnr+z)mD|(yrL}I@tO1VQRwreW zi35ClAwbsy^uRu{d#I0ZFG82QZ%U@n0;xUwI`-_rAWDs1-lpmsP_?sfzey_*Cc5{M z2NbHuL4Qm*zP*@`u?-Gtkxrp{92_21;^48eM|iB_rMa7Q({XI~B|F^i0CWp)JqjD& zVWOvRzXdrTLAi7dm%S<*;yq+0-U~lHWrm4N=$u}mBYOMx+n~ppFZ$$V4X2X8P2_Cf zoK~NgebbFv*NbFdqqZ#K`S#MNC+n(ZEmeS8s(%30uB>9BD%jYyK?MjxRb80ttj2xy zhI$qFk8|7OUz3-;0|~t$p}t*nnK`pg9*Ryro2WMiX!Qnqnq^UQ=PSlQd=@1&OQ)qO zsacfNO4%P}wI37xD(V5-A6i87G8-jp&~K(>*3jyKc!-xsQ&*ZnKU$tF&!}K7hf#ez zo_`rrr-mz{`niL>3|B~poK+X7LyeT_hO6g96HFX>R$WSZT%%4{(R$}t_+1MxQPIgl z;j{6~`SwaUcmo_R$#{{v_kT@n-O9@82%lu2o?E?1sWx$*H3FE8uEOHde>bP(yJf@ndGKNV-LiN_*+7rCVd^4W%Vllar$= zV|sk7Y>1DRC&kZ|C&ow06XNH{#)t%hMA`40wy~{0Vh|--x3FR+DDU0l+X2ECKoEI(MiIhDENm)5I8Gs$jXOa2 z5|M4p%h5#$^xfgBB81}=Le;DtAbcHIab^+16t&PE;e>zI;hR8*F+~U;W8vE(gcJW6 z;ky9gtRjR9u&}uZ;iTg5d4KWq*)70vDZA1o4zwXb;iw|J6Gc>WyS#INGE}qr=fxYIJ5e`dW>~gny%N)#$8nv{{YL z4o6$m=$vr$gBqP1j($?3^TN^3YIMGD|AHO737fgGmpq^EV(M5w3FqLisGEbT1sFE5D1x+Hivc>$l|+rQJ5vHKKtT^kCrtpKU^?LX-2 zK_3p(Kdvb?B4%?UVt*W8s->DE91bJAKMBvb|04c=(c@~SE{+&#Xto-h_m}@-;)3z= z!cf+Qv`e<#RT_!e2{r{7zKAFQ!HNKAxE>93@RD`ERn`1fOx4!?n}4=}rM3b2XeShrW&(p0br`7wgPM-C<%_c5xC_3=B{&Jkp18snJ43?P zu(!FFyn^qdQ{tTr|LhVZ-b6|~9z3JC!A~UJPobdT*#Np-ft$ettQ3$T8^y=kx4e}Z$t_gg6m7y&ti{LV9LY3WuXx&VtH&e7Gx$;^jt_?_U zMzs3N8=06?7$ZEpD_PeS(Ap)(^@Zdpq13p(I5jE*VYiU5TS(YVuDpSX8v>+TAdHC{ zbysi0BYzwt=&f%m&_IDblma(Hd&-Yn08G!xzUTzwzlHJW+9s2b$z=R(4f0kdZVdn? z!}u(B0q-FlIyaTNvF?^(Ku?TFy}Z0VXlKko@NEUYIb|-cMoB1#Ce%|cqSzDJc2{2B znV_~i>B6C1)Q*Z8MmFJEYUs8?K(NqCU*m$EzJC{lZOzL&NEm$@KpPsGjNQgr)S%Ds z;&xwjRmR@oi@nv$od|dZBzI9I^FO{YVe@ye`L2}oIRlU1B&X`J6dy!-Pc@kOh$W`l z^6o(qFz%zuB3^0sZeQ$6W1{Bad)wMHUs%B24D5TV86|_Yns! zs`oH)zXIGZ0BoT$v;)8gD4b1lh8as4gCbTpIfKFP`zvo_Ty#i^{V86)=oZvhip3-| z;tM+n#)B#tB*H8bF(drYjxk0vVI%ddEq_pro)7xs02P{td~qNg_B{&K!}LdlynNKc zO)qPCxLiJ()AnxvjX%p9p-(ER?<`XC5w7*o&B%ag34JFW)s`dO)!n8+-EE@DHjOAR z9`V}V9xc8@s+$aI9k3l3^+L9;v913X2azz`ke{iXr}dGuv?}?emXS|rY5BO;6MsLw zx+Jn^D8#@%Z0x^8OgQ-tUvTyih!o%Y_4q~*CmzfPN$sl#eX5n%i5M8 zH)d~N9~G=0s@9{y@+-dZAnG?rofCfc5w%cwXtkWr^YT?r_ivP9?A8U94cb;YPy0j8 z)&7)onV74D(CIYK)BXw_yaA5G_HR50=N?IxaKs5}@@{Thigr8nkgO&7H(9z`ms2r8&}jE0q##G~3OZK+>T6h*bD zw)nM(ct=C4^@zvs+}RtM=F|V@&*$cT_sluxo^$TG=bo$0WPh}ooHn!dKR-ZY<0N6| z5Q8R(6fQ}^FelFtXOLg+K5Lz>g6t21vG%T3QNWusgR?`J04SXO-p+OQ-KuBvK zg===pb*fO?#eYO)Pk3L-b{mRr;^ZI+2L zfXFR{NUAJy3ya*AgwY`42BzJyTW(WHS}zmu6q4mt#i6q;bkK``Hwgmf^~9lX15x7?FW zp#hpah*2hN1sMDQ90c2G6%y5PJZa?pDG!~8za)%P@s__q#%}o& zIS5WmLY51y=>!~}2Jq!iAbF@HAsZ7VA;*P=e0m@W<7M!dBuoHz+JmQm+bw?~cifV& zEgaYq!BYt>du9WBykad6A?S~kHYHFV36hWtk$;BGdyKwFLf$Mjt$9@iQhB9n_OgyK zq7CHzIX;3>gVC_`Lp`WDL-Pa#AB@)}cqW0xkL16PK_80x6G_Mi^EyDFnjIPO1Tum* z7{Ed>kBR`TI+PYV2Ih=IWjZdiMBh+n%;RBOFNC(`CrY;wh_d}|iC@hSr){H;>8K@+Ou zIGJeBL^DP}crBN*f&suo5LFV$Wz!X}Zn4m59Yc+5emw9zr5E3)5g z7rh~{xYZ>NWwgn z1dyh7(aTYxX-LSoUnb;ylobh7f?m`m`127QU&46!dqjAY$h%VxyVFPPNZNFK2}RmE z!oGlm3*`J^5;(fh0Q*gubbl<$m<;VfBbUH{SjEfIR3WowGmK1RHPI@FMMb%qBMfE9 z1m}o=3i(||+Ppl=z;1NA+EJip>0lOJZZ=;@SO#JpL9B}# z)CLOTy`0=sxK$NPbQtI7bBE>T{(Uz@U3sl7Y56s4l9v!g3oppZ0m4CR;uyqXUp|n1 z=_3)4!M<<=`tr~;63|bNAZ`5|RFLP9Hu(dqNg-|Vl7B$Mm#*-|6eA{p>kOqA%?w;w z&a`MEZDwQ;1ILY4!Ec(S6IGPswoZr;#l0eNUB{KVzfv>hk)!4s5S<)G5l0__v3-E27RLro0Ll#0U) z2bgv-#z1ixiIOA*LRp7eQQI&{*bLm4IShvPWzFzWGM(0rC>-dIPb}DtL%Y^L4P+TERRYOI5LKkw{nCeYyn<9@TNF| zhF)E;ZcKm^P6Dx(mBOFOG*Nkz94h0|iyx36iEONJK*RLQm!nNtY`L z9|0u_D0x5$rU+}vq`-p}zF4sAP#D7$JXTCcJV^>XLV;5ic$C85u?l*TLg!?~ zx>GTp4&zOQk25hH#lKWRe+$#+!kDMPV&2p|4cPu2$eR3cMEMS7B5u@H%V{vSGc#9=pPZ8pXOBF+Y;6!#oIY zQ}FLn;LjBJbD}l(mMZ8z3Oy$jHk>3{^ZYx^gZAhLg`SHFJ^xkM*?{Q?UsuH8W*grT z&jT2LDfa6j(V9z7h?n_;rWQKsq<^4O3c4EG+=78lg3V;RRvSnUg)FiO{e!bfc2@9o zX@jwkB&WcyDR7_y2Ptq!8=G5jcLh%mgcGNuS|rC7>?3_0>r*_&$SqVSGGHLT&S9*A zaT;R^?_V0mdof1qd_lCH*X=}W4VVoh4%1U$^uid`g)q#+V~ps?hR&Goi+?eR=Z<(? zFQT#E?#cL+5EW`8#Ye>Y5j9cK3y`s=wR=>CFpO&h0I-%S}^+&NOW>h2id zFD$tM*%x+kgX(f!_wdIzW(62@wYu>^Zp&`?zL|0-ZRWJkxNmoScWB?EuJ>IZZ%jL1 zxz6jiZ)*oGt?WDSMs0DW#xK~fA>&M-{drZ|r~d74E^P|id|XPdu73@!`#x+>@{VJ+ zn)TEZ-492-rG|Ys$KOwn+pu<^Pmx#QK(n8<_TsK%bDsJf+j*&He5bqq2b<1j>Y6=# z!xPVryz*hek$F>NZv;0^8QT!yefz&*btCsRWv^YaU_xr;Hm)yuz2;C=_^#X|dtX1g zx_WJQGLPIf)HXjdHGgwfhpW9W4ft=nQpu>sj(t2{sgr%{&-H~7rE8B zzs)aq`bop|JUn;8$a@W!-ue5R(+hW8D9xDWyJ`a2(J$xBQuccNkaJ;8XUBK_<*SF1 z`p*e#`aLt&C-DP52~ed}O<|+YU4B9Zlbg(b%|$FMo4&s$Y-rzQ@0=x5k>+ zsCF*x*?jX*rAwag=KeKHia!q++J|+oK4$3Fd+P4vn{?r9zOR?zyn6Qce?<3;8hwH& zK2xx0kF{~?$(;Hto1<37&G#WK1~I!|Oy3PPx?szj7v|8N2JgumcmCIbbN7E%_TeFS z-CvXQ=_pkiCru73@uS%-R8 zK9zE;lb4-57W~jVU_!$$%bN~w;%5I#D38PnLkdEL=~sqIDuuS*{AWXp>8nqEBnRrU3E13nt;b@Jh! zfmlkiaesaN8PCK(_KQPn0_W7tzvsDJIyuq0|8xd*cu>)U+mSb~AC4HIuhm|C@!7(# zl^=d=DVY20y75x&l4VEO_T%S$d#V?2j(IC*~h5FPib}TJYY+vPMn%&cma>G^LkLKVNWeL606|z6d$@ z&Vy+mH&i-%*Y=w^dH$ZxtC#Ft@Y7FBO?3X(-i0~g_m0;sj2*J+hgWtlZG3aPI%P!r zZGR`@CQa>S-0OEg=*z7)*RR+-@mil)T(XkcWTch(rMY%4_8Ibo%fx- z+-2;k{$oe^2*cz0pRLbKubwJ&xW!uM#d)8JTlFC3#`LPNd5?ldq?Qgb)@)h&d#4Q7 z8RQREmtj|Taqs?8cfCNrcwK>b`sb>cvkUiXcc+9*Fz9=gduDg+aBKRH#pSce`hTox zt3{@tczfpAq&1iJ4Nt6^nX>9L_kmZsUToO^6+yf{DGTbC^KL@!N0fJi@;*@B0m{0s ztm(?SudM0HID7eke_}f7OYUQSxaWv_4&R+nZ`gz}>Z5_KF`f@|BgSPg-+#e+&>P}5 zrcZf6TPP{V;l|hC9DVK;BQzq3}Zw`z22`F zqu%fW#wd4w!nUEe<2j5`F8qk~puIYSG3rlFV_6jA?;Ug!#qX4ZPQsoN$1z4R_!jfr z#2C?0-+dI*>oG=j+ zZa?Nnd;Jy0=q>Ue%!A%5d-1wx-@nAT7Utbp=LVQ}Vmf*o?ZC3={q!-$=v}oPW0WUb zF+X~fZNV7j%w~*H&eURl^fuW<$bBD)-kKj^JOk$UvCSxdHeh~~KY#CGJ^3(87>|c} z6~?H)titxEVT@!^AGrwAQIEI~^P|470`s8v_uCkw{%;P(C@0IXEPD6P#u(-2EUX9B zoEexO_2|$yBA}O-hYLd2c7Q%2c1AUCSr`vYfG<<@_n3xpEwUA z9n%l~4*&rF|DBb4bbn2E7RPTA!B47E5v_=LMfDf0D~U(Fil~Y0QK|Q<3CT@l=W)Z$ zqts&%!e)e|-bq$#46!|udPJgzF{ZS;lZax5F)d1~{ZVZ_Gg_+W>eYW|EoZII`hCy$ ze9u1noU_+CHk)m-&1UnmsIVAs;cZcBG1{V@MX^V_GaD^Ncz^t57H@d+i!FwEGBYf| zqcbc9dUTpae+wUrWRG_HNf!M)+TBZEkDh1|?$LuSx_GWN$inXFA<81m1$a z8;^E-tvs0y1G2JQ*7{PeyBn`$Z->n%C)4?O$LVjI5t3~SZC!7IJ;=YL%bL#*r=$!7 zr`4a=tjBpDcYnS?PNFLlGn}b5-yWU2b&h=OWlYbqtW0;PzT5C}IBd!_)#-@KaHh?A z;`n7dF(Jc|7?+vldg28nVOnAu#>XY0mCnq_b|oY}K8C5bp7wNSmOa9roROYrPfkyF z*|RfU_DolT-IW+W)fH)vi_gY1hkd#$!(q2-{ARlYPk$=(eYy(hOi0Ui{N6{mr>c_T zKE3{Lca&=D{{Lz`mXUGEi8JF8U1@PyQ(c{{HN|?Oug6bA_e|!-SZ|{5%;J*#0gb%F zpBdCUY~fPBn{5UhTkKcc^!(O@&FNtq_|lD%H;?;NRbP1+eYv^X34$g}=KpY_iiyR9UuG^FdRJEHrK>-k)teg4m^u!k(>>G#WzTpqRMV(Zes zg;n+_ID{FtVdzY>*?igd`{py-8ox64kTq4Ws(+EHuNtlfsj+Ijny6yc6g5>PtC?zn zTB!0=zFMUU)f%;4Em5S3RIw^mJ5-rErm9tqs#T}dX?0SaRp-=Ybw}M*b?O)ONPFpq zx{>zNN;lTe>lQjl2kW-Foo=r~bqC#1zo@ki(=Y4(I$96bBlHA4Nyq4sdWxQ=Q}k>- zUw_Zh^YlWUr-1fH zTi?{z^$q<9Y)}sxgC8hp0KO0afe-?%p$)Wy_7Dmkpald$O9+OJpdk!8K_t8eJ)jr# zgx=5(`ojQ-g0}Dq^nqv?0>j}Ah=Dg@G=GeNDUbjTNQCJy16+^=*^mQoLn@>}IyeDg z7Q6$qArt08E-ZpPSONL43JPE~tbui~0oFqi?1WuV2IcSp?1nwC7b>6<4!}V;1c%`W z9EE?targwP;RKw7Q*aK>!$r6RSKw>73g5uDa1FkPAK*v03Af=E+<|-W5N+s3J*a#b=4+dZ}Y>qEr5C&r_Y>Vx&1HOnIu@km~O2`A%Jj70}d!(>Fv!0DKc^Kmh{a2_s2!UB93SK}I7i|cSbZorLLgzw`f{0nZu ztyqfNka0Wiz@4}YKfv9%4=Zp#R)1m@9>5RrApR8(;Su~heuT&HIDU+upx~!igD0>S zPvTkp953Mo{0hIutN0z>z}t8S@8Ny?34g{18Th&@dWBV`wamr-}3yB~TJgBcxPHCnx35O!^}&pnqIiLVuzH zDx|fvj#g7KZKO@Kg|<>DG3}x3j2KmG$pGw@Iz#xXpK$MIy2csb|uDt}(d@A4X6&Fgss=kZd0pEvPl-pYsgFn`Dgc^mKJ3a;cT z-pzY>JC|`e@8skBF$-674WHmzKFO!~4F8MI@_GJ(FYrbFiofCO{5{{~TYQh}_&)#4 zkHlMirJ*#H=He$!BuGM~r36bWc}dzzC+Q*)(p91*O1epR=^?#kh<^;15i&-`Ns=VU zB$+I+5+@TRS<+;NWJ!+9l-V*z=E(wCEP1kA@@1v0l|orBMe?4M$adKwWwJ*qq)Lv+ zQK^y7JyYK_Fip&JCeSoDEsfoT zn+OwWx|!}K*o2rirhl#JWBQpWGsFxvqs(YC!Avr5nK(1W#G7d*&A3danPuKFbIp9S zz$`IK%`&sxtT6eez^pcF%{o(PN=%V?&ulQ8%oelFY&F~IpHxjXR7;=fYx+waugB|A zYSGjFWULSKuTV<^1QY-O00;oqA#+j&cPMd{0{{SQ1poja0GET}0~D98Km-kcom5+B z990-TGqcz3HhVf_L7~JkTcIYnv&n48F4{7ibsLJ&ZZ9#|2WKyHHanZSEHkqq5h^8Z zG%sEvtT2#3ptPG9p@Q}TQVoUrR8&L}^uZeO!3RMR5e30>c4xKfgOCIN%y+);`~Nv} zZby%w90tIzjOVjYWu2)s0AL+|M=WNEat+PPRaHYqNk^<*sv_A!TFFu8klZLawNOtB zk)E^AK%t)Qw;P)31eylPy6?ZK@~~f1ZO0B;XbxF6^3_e%@K-cdFGqA!X=+GTjj96(Q(v|E}+>@0TqH0%edfaC{dw(9S%|< zR${m=%@-H|PC3?TJO@+)KaS}Qf+ukVa9|bqi00vdhr>Ab+`~saOy)NBFHGm>J2ek^ z-o2jAdKh@?L3=zssXD~}0MX}HE5%|_!J&UtEq=xT-#T@W4A8895YGWGFY3KXy^x3f zS;w)+ch762a*b91GiMu}jsZdYog+K-aI)=KJ&q$gUsKEYbYQn_ zHmwTkXzDD;2)f~a2qQwx)R9orbxUa4mS9^I!9wMdB?@x6scMSQuuMh3HM%r0^ePag6S&N}Z$!x_>ka#{REH2mbS-NZ>PD2jGeFjEX0=eZGKK;_&?H+AG;T z^l&u)*x=%F@6aWAK2msb0b5gMI z{>#J!008ipQRV{~myJXO34fhbZ)_Ar6rbI>-m!P3OmDBW0+zK`1=_$JTpOr}nQMET zD1Q!GCH{$fd$)VNz3%NUvwO9TA!%r;MWga3nrtkA#2{8oAW_h0R6+tFgh;=LQ9f8O zG4R1eQDQWjID5UL{bs@>Z|BYL{ob4RX77;JwwIh;NJAPk(O!fPnyjrT~eF zd1YA4+qUT=%AS&9*|qLMlw`@Y72+vMrUeHSyQz$pEQN^DfTG)Cjz|MVs_^saV%E@e z>VSWa7ci)mD4HT!idP|;qz?qF5zAJJqN?W%-;hEq)zI1YcBC4bYT2S~h#6Iv$cWD@ z*`ltz9=3V$I6ffTLFD0yi}HA{X$LpXY_ymBV2lw+h1Dz;cIoN{|uC+B>--?p}QXs0h1b^z3L}5&zlk!Co4#hC+ z!JaLdA_dBCWg!Vc2u~H z6+5cvpb|GU&yTI>twQ&}i*;VeDIcwf`!*bfboBi0x{> zdHDC&cYnn%_r7b5wr0J3e)#gvf}|GqY-t%>3^LY|N9e{|jjWr)vPxcyDz$p4EU2DG z+_njwSB_~el4oTAhb+Ck&=F9WyB~dgkzBv^+KNX@*5RdvLeCaGM{Pr8K6LrjMjiw; z>(_LyiIuV0ZnRvI*990^1{{%eSu}KQq>2Pex__FbjVM|+sbYLi)f7$5h;HwT7VY$` zQnsmspes_;?Z~=F-Y6=Oe6dI(C5uEXl8q20Bav7{%#>73j+n%dBQ(Y=>=LRGHr-zY zRnKZA`CcBK_Z6k!x_f6U8U(Tbi&0kR9_cmo2`vE7n;B5)p`I8^(OcLwJbC2JxSw5H zn}68Ywr?Wvn-IS+9=IC(;r;A;#WrVZ=9eQoFT&5R{Pb_~=H!)E_MO}(Enm$a?03Bi$#OJ2sq5;$_`k^^bjmYTt-7k58F@ojP~3@A!|)Pki0> z>H33Tss`Aq>hzrjIWRYxs{I(`7ITeU6ZZhOgj>oz$Tf4zIe~kKTfwd5+V1Os0Qe73 zO9KQH000080M;RMQr8C_Lox*b00an^K}rNCf2CDjY!p=#zO#4Q-R*A6-M!mZu$Bq4 z7+O+x+T8}WfVtgTnqrkzSP4G3e=}{T%+9Ry)06~~22z2(B49M}!9*Sm!C>OO+gYqW8QkRT+U)gUeFF1;2`(9Ws?t z(abxxs#yWc((*>twjfQh5e-3L#QLcL$7};uIel1inWJgo-sy=S4p!MaK z?b~{mvl6{MGB_6mWe-zjSC)PfvxkuSO? z%L!qUB}tx$F@oa+rpOQ`eIm&~SMW=K@JSLA35=0ABqAnBF~YkNFF7QR35*jAe_i57 z2xZYJ*e)!i^Es?IVnmoN3)?+ zI+q&ArKC&>;B*cT%D4t0n=w^BJ6RM(2O29OY6o>2~T!f69b;)+f72JX^`jy00 z!-7Oap5T~U^&^SIFsq$bS>@4He*!V#MG}Jz(s6;Cb!UCiCM0pk(x=6NIZ;4aDIBH{HfJ6{?-Mv7=F~r^Q z!ia@O5OyyIq%7ioa{-OF11^9_6uRIkRNw-UB`4wnQC4HkFI2ezB~kxMe}N0c(#;qS zP!qy}KxOFxX&<3`-H&E7Ji;~C(v~UEE92=dARVLJR`(=T>5#ZU8|w~cckSL_-Qnvz zw)5_gr*{~GQ2|4+(>8apmu9q5WzYT8ny58UYorFL`Kbk{abC>l#apPY@ce9#J$x&* zHgC-^4|$mS+UKoTE#p4SfAGUIwHnrW+;%S>_13_9$Lslh+Z>(YQ=YHGDN&8D*w1=JjfM{^dFAd0V`*uyxowe+$D0sWsPoJ!sn| zeQrObF@;H=4B)h-vkj*s(6xSKuyuB>CpI&`Yw`8Nho=}ISW+g7)2iW^HJA)S%Vy@( z6aYh``Zx{juW3R?@lVqkq8j>M(6Dhs|Au7EN5>>}Sq#+39GpzG&7v;n4PDz;_k zEz_Zsw`{ZS!)*R)e`+aDN28p#XeDK(7E||vbfTi$iN3_7QBe|;m5P~gEHh!5i5 zq0+{lIh3V0v2|wg#4CeMzTWWg=I(<>Lbrv%t8<|*qTjw*e}1FV?Vi2y>xrj7h3{Yc z@z0T4i`QN}cy70>h90{kT%A*NSkL$N)7Z9cG`1Ssw(Z6^v2EM7?KZa6xUrK)|9pRU z@4MDBXU)Z2o;9;)_THbz0C#xC_x*J-KtphvQ0g(HvkNeA|IAicp_%w>txeu^`e!Le4jxI@LIT58{`Ew} zbVt)t*D=$M>bmE@uq6wDQ$L6OH;Kw`qbCxv%TPH*Z!3}AtPP}8OXf55QQS`@&M05}hov6N*GQ*U~{ zUnzC{2V$ZJ!}9n8>?{GnLX6O3La3z32Lz^CiFQUhsEM}cRx3*VX_fwM{rpGzoE4R;#*LwJK`-!IvUYDau?oVJk!=>)%Xrs-| zgKq_V#kHo#&d&1{kd7;>o!P&MHqeYFhh#B{_~AgBhCiL`lc7tSH%%TY^Nv7PBFmg0 zpPGaaV%+;ZnIT06;XT9In2nn)u_BH_CFs|O?1g!UUG92#c`D3)qYKt~-c6CYPQUMkxG?L2J^ zZk7qFspI2cg06ZabTMS&h-qauO)Bc4Pa$WP45$huc)r@>Bc+SgdKT0Cw(?xsG*@?) zd00fOD6N(}f~7S0L`1Ktn`Lpj)rmwu%ZPEWX4S`&#)Vd@R{dfs>|J?l5t=zGb4 z?SQ!hjea4yNQN%p36dMyIJD+G%28O+@?q>(YzWhiDw?X*1otZLT;a@-CsQ1nNR46h z&?&FOsh4vdH8ZrS-+7|j`Y7F>u;!wc@5K(`z1MgLB-LwVRa&kV!V!?V9QoVN_`=4o z&l@74^~8Q>&U6hEvD$GgU9G#-@0=yjCMmaac$$gCUyyWabi;we$zBm@5enr?s@3DM;lcJv(iJ zN}6o>4b(=g!nk5iD=~1i*Ou|Z_K)?S6NtrpfK6aCi%9xDR);~(-VI$kH8fEMLS~7{ zsDLikTqT26AXc<9;m(-EtVSF9K$S#M@ghS8)J4voR#nY2=r7iqE+xM~sYok?=WHSc zZ^S<>Wt=z9p_lt{MaqP!heM3YN>3LLdE7L&U?-0u@pdJ18FM*YOT?Lq;t~{{)4)kh zpd)?K?3Szqywb_9y;9t+B=%a&LMlv|ffxRnd5};6ed+i{mo5A$=BVK#=h{P(EEg|= zvN^MqE|A=Ea%C!0F=tK;9wm63*u2OnousY;N_L$TzHVTLrKfYphOua{8p%r?LOgS7 zTh@s;B14r^$I|ZFEa;wVKM$vv*f?s>Eidwx#7q_g&2o-zP)DV z@r>qxLK4MAScvwRQtV&Uq1*|x%+!AssJUqiht-`ic=vUNb^8@&{MozSLs;{J|DSK> z7<{lSQw{s`kDzQ!6?VBighbX_vP&viG%6By=sTh#+?-(pm+PKzE{d9T3_a~RU=ljy z_Qzo6a2UJXPEg}^IZo+iiuthB^HUTn(vmf9yQc`Hm|{83{0NRiya9cBXi2`tn4v+< zB@8HTPucQuokzD^ro5)mcR((w4#xbr?f~vY8@C{kT@B0NQc7kVNa*o3HtuV=q73YARy<#jds{E+&Z&Qd>19)6Rzc5NL3OiRx;Gyjq*DHgkE+0HP>J@2MH*(^#g02v5ZQW1 zfwE)lXfR)10h@HVq+F+lxa3tqIg|eTU3s-0o{?;_o{%6=4<=dz0NroI+1@kmW>&if zGvPH*BPH{ZtE`7>f(fS!)N3hgZR{&nVW*XyLl&D%rK8P}@C>ep{y}WA=XhG38#L)W zpxv-g+;y+U(^uhX4cAu?WYCvhcYlWwY#_1fTKkV7xTbvD56OtG>bMQft;f*r`-%wf zy$MJh#dsTvn@GzxKoDG$DN~$MH;3m)SPPj$C$ zodv??sMN3}C2;A}0(QASbhtg!9oY?SupZ`zO1({d5XXVx1w7{#ezm(ZatgQRm5>3G z%k1S*{?_z>eJ`V0J_eE<8=U!Xn^7?H=8@>1nNHUom{Ue!0On$+rG;o{F$Jv&TKL3h zkTyGv4wVrM=C%+_)bzvh@0BwI=v&k;*Xm6n25w$O$tSNg@^d$sR`i2f$c`)vk2D$k zA`$x_^0qmrHl;*XUFT4l+6_tzt^-nrK-WbZswvEo@M*K)q)j_!ZAu)w^s~Yg2i0g& z#-i{EYG)2I0R3D%O$o~=3;Ybc$Y$Uq6{q)?+0U$@lVwz#A^2^|>-w4R{|0J~rIohY zI$AkVTD9sA>j^?HHY}daS02^J9x-uhYA{pwDJCXt1G8J$?krGV72E8>S#(8GqcZX?LOA^|r@Iw2I{=DLr>AjkaQ)t#FSU9LwPt zB9GKn1Xl|iYj8=mgm!(FVJBKCD=VK}7UA9ya6_1^TA71XqNv>AfkaEp{*C$fFVWnm zGE;7&MY4&CoTs@WHv(?Of8aV%W?eDIW_U#ByS!L;)pf^JEUj5dLz>=MtZsCLy|6)TowL95JH=visC^Al`5z+HfMg@mhdds_?mU(5e}f z6DQNCw<;Fgx`ar5mKj{qyG#$86US_yB5HY3p(u%F8(&dL$Ec2{R?Zy4S5W^Y3m5Uy z-;7i~=h4uuD7v*^X>&LNf1Gh#+Rp*`0w88Ytqj*i8cD44RhMR-=V+af#8$UnuD%Df zl_-60zxIMZ_9DzQ`%zOhc1$J&Mi#kB$23Z*A(5;K;K%;r!VGwnbb|Qr51`#7Vr1!< z*%CS<(3;fv#6?co+1qk-HLUr#*($nu>%Q#=`-;|Y1OOD*f}7aU8A{#b2|)3x?Oh{J z8efN7roSItt8N^Fx5YDf%rALVy#2V+$*JFAHujjQbSNI06e!>PiDRpB6263p5!G=!H+7OWnzw?NmOG$_YUlZt7 zIUJCHN3RdIo^QYa&PTGw0HcPr;?N(o^fhh~Jjz}nyBGYxVBOO2#omRy zIK?gLNo;~+DFn5|?kW&Jej9(V>@n3GLcRHXVt(Ko&BWXstEgWBxoN3a2_fhSsY~It zY81p^7%lpNGpLWJL7x@6J91TeS4Vb5&Lld1c%Qp$IK4iH3>ZA+$#rk>p^X^ zkbVDr|Ku9U6NnJ>6eKqoAyJ8?e4#pgi1#rz<5@2sA&)Gt_0ztnMDpW$DqEtWdMPU| z^eg8OMd0?oR!MqW_?!3(<#$$$LKex3he|!EVKrDZkQDZk<$ptI*j+Jk<3f4$6|hC`+vEWku|-$4pw)wfMu?w%ixVi{h#n71+0 zd158bOyn;G%kFs5ynrMcVA!I|ckUj*g}tPml7A+;CYeuf7iToPB=!}B*X|kw-)-rW zZPsT3eIlz^hjqQDm};O~r7V%zy+siGdQjTuU1d~(!ULn-ke`*^zA&?XangFbFmkMB zG;u37Wru!DqezQTGwHoC>XUto*znrb5Z<%ue`A%nVOVU{)0ld7ES2=tAbw`erCmgx zUnV>`5g|X?1oDGNwgvv_3VYEIx=HTr-LJO?GOoN7+HQNxU`sf#4kaoT1$1L>RWW`? z1~m#Dnj-$*=BDoZlV80`y@O`Uq__>4Y@j#LC$4e#1oOJ?{K0@f`-F$EF(L%_8EP1} zXd~Wg#{J2oMh&0;{O{~-WAU1yF+06?iWckpV@wXi#aq^58}#Q{@5YSQ=aC}xMxWUb z5U?3|XXk+vd}e@U3tDeH`<7n`EqtX^H`-SeP|$g?{-eth!58fCV&m_{d_^Z1oF=D{ zlciv({h*&ny>ET19N9T<&Rds%pI&at6$h#O;s%lGii9czo(TF8pBx6{Lj}9r736hAn|PZY}KT7Ab1KK3R0er znLp9M>`|FNh26fWEVM}qe2Uhm)sw{#0M=0-vh`^szw>K9bXkKccmGlUc!<2c!3yk& zJoKagJj^}}vVN%pN7Ez(IqPfH{ERUSBmOlwva`s_~?n*E^vzX>z^8t^b^Wu*7 zB>3!-I&$9W^G^qBb5dD%BPSbnDSmh?&miby`I=pkp=ViBV0)dXjs$>JRa4tyUQb8? zmGK1E7Z)G?m73F0RrN|&rlQS8yO*bIPG>uXpg~Ln>vj*)@|9=ku6V@r?_>4ohwgUF zjM?9aw5Sa}LaDj^H7?!NN5TI=*m6>=6wxKn{h_WUp;Wp_&OBNl!vv+QZ&D2Tu*xy_k$e zZ^GkYm?mMG2k;c`;-NYRfXRWHzO%E zaaSLxKXI#!o9J%QTc+YCT;*nYA4#B7BbhIso?yZPx)}IQ)VvJ62gx#CBjl3krs(1z zWZl+=twVd5`{z5=c1=&|B%bN!l<2J!=|6s6A7pM6N5AYGvuXO zXU?kNf?)MPbJO{$hMZE@Z*8wm`%brx*7Ct@0nJvLmZu5$q~j|7y1F9=E622)$_-`G zI`=HJ4xTtc6D1wI5p$SjI;ZLC5kjH>`hpk0+@U(+kVkXcm%3(xhCFz=5jI2IZ__v? zj`Z6B6bf+5KMsET!!&zwIf;YJhFvivUHR97AKa% z{Mc9)k8zAS^B8ps1-274=ju63OqdId(Ox}>82JkJs*fI|y0%JGs!(@p??MmY*XyTs zb7dH*dQP!qwE9UQ>Y}(ti*S@ds?=Q6Feil|hI`S{YVl^w&U25=g+12pS$3k;tB1dV zXXb@fm<(_725R;ShOTeDlX-}o)KZLw@QO>-ybA1)8t#TuOr^2lSa=kIlZ*xd%&&WF zD>%fpOJ)JMF4HN7lb4BpZ+$J`D7Udhek6A3)#bg2RkxD?@w326e6B?~FM_+V_EDv4 z9dF3Z{(dISGnN)U6Zvw%cT&K+E5%t$Tlh~@VdGg-tHEg=u=wKdzHAhu54(Kg*r#PC z^Z8y&rZXaQ)UTV)i}#B!o$AhPe~p|YM9zd&iyF?tWmOk*;HW7?c0d_egH0Ws*P`K_ zjIB30*HEAKv!K$Vs4{C?<nC=EBDxNl+l4_hWSR6wPKPZ( zhD6B+!59wwmfCL-4{5FmV`Ip0&~H5+!bcsf7mvhig!Bgex@W-!Yvu_5;eY4&jd75m z9ic@LjI#i@cF^@1?NS8bUmPIwfJB&up4o%x_BZ!{VCV)@*yr~k+K%JB8SvqH+7;ML ziaSJmA)odHK{{%Bwk4cO(H&veo!Iw;{7gN*cI8WRING_Z`QqgqguH<;9fo<}2#!v? z!07){xM_OB?;Ef3WN`O8OOs0c`2P|D;C1&y1^A^-p%s^14mU zm5$Ao>)W4>1pTaw6sj@fAix4r1`BD;_R=$J>QO?088t8Q_)o}<2T4Mg(bM(b1x6+--Ow$`K5!JGhnJtA`I9V2lg+Su;v81!Kygc1u zHLsbd?1Z$AQcQ+5=i{QqtTs5-i>{8kIyy9srFu*93dUhZV{egMnEY)B>adKdW1-^e zSByXJOlf9Hz}aY<5|trpKhG^-khm}X4tHQq2>++;3_ zjEYH@+6(Nn}wougj5?qftIK?Fi1G~~n zBWht?2og=H>;)ras>!wZmFe2=p>~j!6Bt2EoXXFQT~x8YvQfQmby$kuNO~FcIbP2h zML|h9{V7Z}1}Hixnc;AAYGnqpv7Fj=l4oW0RJt{$GhxBcu~t$y&gd#6yGU)H-W0mU3lT*JeX(w z)vQ=?T|BWWRrIXXfUXEVbCW@Iv3CLOPM7xRw#0)}AZNm021icX zq6Xz+O;or+Vd74DLzJ*lR=(w+Oy@_z!&-A;IVVq@f1v|Q?4Ip{ZSY#C>|4{+DX7DG zec-&@bJ8)X4j!Y4mbg6Zws*MaMa}-PqCrVhkNI30XqL~rR2T76Ufyo^aOqf&ui%7%j6>3sdByCm z!dX1F%mvMpoo-^CsM02?r-vkcy}(2sBok zc=7Em{qaL_%W2`Tr$El;Aj5QJ>HC4oMp51wySMf2I^pvW87$N<^RqsPxw^6v#BU1a{CdkBS#sI~}Wis=wS=;DdI_^E+zQuk8rQ6U$5vt+**z0T*q68^=l z{xv&K0evhV@(n&Zz1}DYGMdSq^<>vt*fBU)i)i8yE^{d27%mMI(U_~(G(_6wCJftg zpq6T=LGw;otGFM${{k_DFvShFKGF35p*_mviT6dfml)9)rxgm&tWrey%6txg^c&pd z0)H?Sh^khHn!R@gPa+n>=K59#34k$%EX4tin@Gc?&cH;1KDyvFP)#Y@wL)}qA`KoP zLUB>UDu(S(1mZu;Nd=^&`i~Id!c5y``rY7yefL-8GU4@g?Nxh`<9ZOAM(hK`$1;(| zk14npQhK!3Y;igK-?o@xHqy%LCWst8uL=JSG4wNO`u{V?-)0r!B>n^DEedeZ&$-zj zW8k2)4}owEYXpCHrxxd`LP0cUB44{i5SjK9=VQ=MgEr)`HsnEB8xK#T>uDCCd5I{}YUSujvb+bM7i7iR_ZZ2_j`{ZVEPR z4Kru=lQk+$_m zYenI(U8KL*bk^KYvjuM&G7Ob8jIcjW%`sfFYJfjW&Dq=o*$NnUYeDBtwM0G_gh1uc zlEk(t2X`pT*N$Km=Kx!lBVIj)Y%9#U>mSE-gpaG?#191N@)v;*LjYui8JnRjqZ91% z;Z}`$E@DL%NqdeQ?W$JK^}q358H2}G(t+f5AQrLystwb6>$ZUXxICc2 zmD@o`S=*9uH-d&o%rhg0Mr;cjI|Yl6LQWi zD&key#ZUqJP$2+Ek_R-Ec0ws5Jj@aDFV!*M;&Z_V4)rXndK(&0k$Gp9bV|sun-=3* zXIiHx)CC+fUT<#1oeF<8+EDTDu8Tc&bz0@waK^Ofmb@abjg9Nqd=uRUfmns@!D|ht zCH`wtyh5rCGUq4$s3kf<%+oJ9OsWkrH=r(wnIIB46I2sSW0#jfT?gQ0#~w%CGq&#$BgT({03YZKblGNvElV90-l{k-t2hEj8X9FUWZb$~*1 zx8&sxU;3|4I$lAF30VJvNpJD_zMFrr54FeE?h%oYR1cgI+wxoxB6^<_=8?NewL4gc z=O+Anjy5|$#}9EiCAs>3;Cr+lzlXsDrw|<1Ab8$n@^NzZC(i#Y{*eow*T5Q$Hay$x zfDQaKjQBVom>z5{D-z>z&dTkR2}8kImW1@dLg98`yd-5YX8eFkP%=TeC3Ox+VBNig zHf*QvfCLJaWxxrGPy;7eX-FDcgbaia%*3Yym*zl8>#Ap~+VlC89ZO`H=rDF$*9}V2 z-c6?E|79-7F!2}Hk=|OT^wz49Lj-}Xy8ddUC%erwdx0cPBck&lByT1B*BQRsN8EYL z#kkA-Jd6F#vMy35stYExj?tE{FZCwCvqDL~=>n`a^b7JVmU2x)p7I;Mx>9#?{3RE_9(bdy#(k15ABT5rTQX&>3sOiqLaO4T98)_#Ob0vP zyTXC5rD~$3*fv7DOO>TpSiA-`@1P4VE8=3tXv1mTh(nD{2X;YyH0iDrWu`qysq42}9i)Wu)@hV0XNHl}#n3LCZCEJ3HvW zgRu!CC4H6TA-N>8$IJMW{T0Ysyh7 zeA2pI|G2$&1?q393vF!`<^L4Zo}Y6pt4kqzgcAW)i{^h8gTdqQr_*Y;bHHhfZE)+L zeNx7D9a zi32%tW&bnsT`!xEUaLQyfZ1-P>KuNx2OHyJcmIQ?7F`Id&&2&ZC21Q@!oU;FwVqx< zo7|2&{LYo*^rfXDAx#vVTCbt$pHdU8{g^(d?W2>8dNku6ga-ODf?JQ*hQ@Ly)?Xc- zV?WDz&Pv@??Mr3t=P5Z)#qD=vJ4}uMyab2u&Iq>v%q_6OfKglw=;5-%ao8aRm&O`> zlj)t)-aCIoT$Fi~6KAP^XS4lWhJEK?4387l{p!Mwm z64Hkm)dD~WH@q#C@u zU(`4f{lpI0t;obJQuy0=;~Of|2@pMzHS2KQknIA5ph`m z2R=hR{Q{y)O+ZP{|H$CHK+qug$e@N%sE$!x7@mM{2oFf${D8mGu!H^DaBi6uZ_)A( zio)(mNCBh=5ktq@1XqOOx8Y7mb%EB}fK&x+njhf4ET5qYM|ltPdG=*-{P!q@bm7(M zM}YW2g6pdwvZt-yCqzOXOQAonD+`#UKnC4?UHIFi^%JM4pFUE1R&8Zc$FM?&7ncm~ zx59s|hWPS9YX;>bx`+RhuQW4Yg?^_I{suH!F#}5?fF1hX3c`qP2sQo)$UAbv4v3PE zGw@pyr;;0V>FomceX;uJSe#vOf9Y)#KCI` zvqI$H*r%(&x6ne=(1IGjD7T6o6@d_>Z(IW3n}M-AW7AlJpLt7RXQg>nSXNw-g8+k z%$4cK@0TNOIqWhkmzM3kdhoLVzK~ann38b%GwD4FnoUd=FJvvoaf-vGX-m`u3~m!{ z`BEMu%ghFzr6aeLlCx+vt70#e{Io!E<#-u}2hEoC&IT+_JUSISF0IfiQairG-3VO5 zyBkY>q*zQ-aX^D<%t)W;uqX)Mvx8|g;g=2SW&mB{XdpBxU5Q{|bL-m!nNnv+D3idAsV%!boSS-(egO^1(uQAEKlPF@uTTPD| zU|JD5x1NPurPCnkhJ(}r#+l5=nT7tY&1Lkpon{$l=*DVvS<|Prik_L&$hPJ%Woa~Z zZIm}0=uTqUj-v2{A3C@~UQ?cZhe@c>W9B0uH*+2JrVJF+Z!RyK3n6PEw2-Tx_TW5+ z&j|1CDhH)o^Z$Oo9VC?+iiG0%b#4=n%k3`G>@J3J?}J?|YBX?>+Z0YevwZv2$&VSf zDP1fCAK~Ry9|2p_F1v`b`YihLabvp=kckTXrmDJl8w>Hh{y-DP9GryCHIDrr z<6zx1hHU`PE7?5l_hEaiQMj$1%1tmTH=(w&Rk0*v7xu1U3W#*Jo$=9dPko ziU)&5K;>6-~{=gv3M*0cGdjt zll1F5b(!qX%eEWKw`;zCtf^}!h^sV9HBNB*wyR?4NW>;6V*sv28g;-lLisi-A3|T2 z;A(A}Q!-9$<8Ey#NP1gEtmj`2gZ!S#>eqt8oGdZ?8?_w5%el&5!|$uNDaKOE;M5_U zwB}VqbONFS?PuO{F!gkUb4^!XO&92DB0o$CYpQfC=&bDNu09UX1Kc$$IDc^86o63u+saizDTz=`t@d7gJvy?!cbx){~jqrhZ%eqD{pVDEQoHIi;D+?Rd1m+m$gTD(XGIH z{~lJpaP=Wb6t%2iR`dx6Y#1|oikOxLT+x8DlIxcYyYS_MRljxyU@K#E&B|7h2M$ks zEF6)eoI}U+JDz5T;6|A@vrp$DKSlz$?K0Llh>mv{l-*Yo1tmnK#^6V!s&Q=FDYs-u%hq}Bj{HX z+cZl>_&LGl20;o_z_S?m9p#NWyM~pllL|@JnfGuDeM_953ttX(oGwxH;lcyAwxcwr z31#|O{}VH@g$%-Y{4MNYu0q88L*#b2$c_9+;{YG}03YPw*&qMPxK*(5^;jctDz>d2 z>HZn^wSVSYh%fO;|DeG411wV<%@#LS%;2qP1f1W0A)A7>fOFzu>Oxh(54{iyLtYSP zE(q>*j98m$+*z^AjTMB^y@|sOzfc6WkN2CBx@=$`f=bsKtf!kQom+@lWQDet_sF{K zr`CvTdi2?MoE0PA{eNkR?H^{)aLL2$iesVLP6XQ6D@OUcJVeIve}#9U-1uS3K2nfZ zn~3XysRl0sV0F*U5Gf^qz}^Ix5v)rZ%1uq6e(F5_=W?g5nP=xcD(Sd&2VTDzC?iJw z(9+ln)^=@Z;YeFfZ=(I!z6PETf28O8GUq|bTmN6@z;VR z#3^U=Ieqk5lSW(nBQ{k&eZH9)aazt5oBt`T6Nb*U*zFElR05{)+a@2svO~mtr-p$Lt_#H@1l^5mB_@R2FH%q&2IowF|08Ej(+ z`~m=<`?{A9T?-<95VdU(<$-(Jtt8MX;fjXw*&GbHcN5nIRnp}D4aVn1Y5Ucrr~{Xk zF6b>s&j&}Ni?;WBZaF@1NOADhU@O-^1F8t^B53X=JePbN&(Mb!TabH9erZ(U7tyf% zsmWXN=h8FY@8^ovn8x880l@DlT- zK{B;zsqLZVo;`q1lxemt9*I00PDhi^JcN%?&8J+g95c5E55uYE4_Sq=G(pzim`+e# zXAHK0ii$uV+tanF^I+mU%^+)X++?zBy}%Q(Kp$;BhRRa0Rawz8nA^3hzulU5)m)EF z=B_LorB`2Gta{d2u4#=rM(*iZU5x7aRayqs(_+nHWgx(?3BG?0^YPe7@qW_dy*}65u@I@{) zn8H^Ou7(4y;%GPMKl|(IC@7e5tkxRm9lLBHw#?zOFw|OHQ{Qg0mLp5;RX)55Ds9n) zBwAjZItwEx3>D)Y%vi`b>?zc)Wr*RAGxwd2(*1<-wd;4#U1i~;9=Khtu zS8t$KTXnCW5xX&Rx&_BA=WSM3b#LU`8pxh2j$6-Spj|FPYcW~T)Q((yR!(d z4VcDye+q}AnfK}`tolv(#y}7I=Dm|H6Tge-tq2YWQ8LdKHg2hHx)|aBi0U%3j{nIU zyv%EI@s%de5a!|&fyhtc&@F1HO5x8KXE%U7+uTs1IuFkgrcvd?eK1$a&Zv)h$X=P~ zPvAF1Fix}8sfRASb{s^B$_B-FgMbj6{y<9$xPXw5{=pwA?~dhv2Gm%GFs0T&vh*zn z&c$%tqKb_{mW`z@7%+z}0^cAzb%dX4E~*KBwgp|fE%c7A?X`O0q$XfO2Ch~`Bfn6NA zWI31hK7AsyEZ4r2wka~8=ZHyZ-megvRE6Ba3HTt2Icm8eoCNqQj&<5Unm4t7JdIQQ zeDZNy!FM}WT@JCta=0&tP$I(`wpIkZs2t$W6ZxPMyFAEtC_0eH-S0-n8KsycFB8rx zHz#tMicRSxFEP-Ac%>YVd)=17XzoB-F%{Lw2ZR0|Gt|XpJ>bVp*W0&XBbq%0)gemk zmXrOc#+!RR1U~i4H7H6Nq^v@5*Dh|8*{iEGK5<=kI~W-)Ar7`>lsEUAlu?112M_QI zs*%laqe7`p2)q#Pp?tclfc8vSeuRnsY zA=kkP-5G{3eA<}MP7tUb@LU7H>zFf4h^&cd#=gi3BM_g(BkP2oh$PaNZCG&6m97Rx zcG3@}>d?u>XwbFT`?pe^=*FBlD-NCAm|{VRH|YM3%og~uE+@lu4r8ih3IA{jDbC(VmNTHqbw-1UpEA6HeAxt zP0a?|^U)vV>f}le-9X_=?jPToOA@4&9l^e1eWD#tL7y4#?Yrp=m1Q9&lBw?XJokkb zW=Ho2aF_6vm%HLvg-*#iRiSP)KqwIm*PNPVRa|hVk!l1%2|Ds>2AO8dHF~0 zTON8K3gVRW`aA?g!oQ>2*8BD5PShfrE&OBM?~a#>tF+C1;sMFCI2ULmA`bI zSyNp0jgsc88WK1aogio5m*Sye_4_V0VVEdCl9)Z>!b&ilQ;Jj1Xc%Bf@1AKWUzA{^ z3peH)*O^O^ex>8gZRyy^%Cdly$Pi{~fpdw^?G+$h0*cN5xz*)PKJ9o}XJ6aC;hAw0 zW>1&D0RiToz~+*s6Ug*KE{)$);}Z4TXNHVsZ?wxSof8mAWJ(F5octq_Zf;Yp5z9Ts zuvXlOQ!=pQ$h2Q21*Ly!LN>o=lo(RfX{9E}5+VNTA7yO-+bnZy$DdO*@=PX4^*kKp z!FS1d=Ih0|s!xU2xV4YjcX1i+Do1XF@6wp??@5zC0~&u5-ai@CJvJiE#4 zIB!11PJ#o%dF->twMpBCRoPErOcUkox@11q_f`-0RHmd>681~qYSpOzN}^WSFH`j( z7HWA(*9_%)Qm z81ZM>{=9uuyOzRkRxkC8*fRcq^`o&LFe_6=tTJ zP!i9u=*QB5EcV8@EI!-CBJyZ!LvcmSvAH0SWYQf$DVtpNi)7PO0sF$U6ArgOpbY1L zCf7Wn%##P%Qz94f$F`KYmvE(C{BIm(?g1@i%lUad+1j7+QX;ISZfrKrU+r^z0fQSi zwc}PEf(N=Ujt9*?e9raeULuuDs=;$p{|;j=Sr(v@x8gU!`s&LjuZb_d{eqL(We>ixUL~=KzxmRcNMxKsO&JVG_VVckdHqbx5RLDJltN0{ zB((BlSs-eD&v%8a0h@m_!;owthPc*NR`<>1zed}wQ zJ?SCzd6f@P-*fgu9Gb%xZOIu0GsC;HbnnpUnzPNGBLDmgnM2Bt#m6c(i~F4+y^1FA zyZCNz!qrnuB96t0H}*fbE2But90bQv&AI`PL{+N!TAuWE^7ho&{0Sxy0w_BGzVs5A zkihD1fbye|2DTNHL@La3NmI`UsnIzND`NZubnu9fm{Ts=Q-*O|hA~r?F^ma)Eyd-# zw%4y{TrYwU{T}c1f87QXW~z}W(iK*E(hlL5XjXre#6JY3l|*RBH@SvNGs1#g=Ksy+ z5OfEs1rt#u{)Pe?E|=1BfMmK~84zx4AwVbg|kCCO6MH+zdA}i<%@jKXn`1 zYt?_h7VcaX?dL8EQrpSOcl5gdA64fR9ah)1?buFZ+qRv?wr$%xc4OO3(in|x+ji5~ zPQE_lKl$G=?sd3M_Q@V|t~syk?ed_O4B4u`wk%+&&(`WEC=zt#&f*)>A1W`Lv~}dG z&0m|(8z1$knOZ!r94)r%sS4X#H?Dt**Ug zin*AApkv0rWv|<1DKFQT<2?gCnY^=@tJnVeIQ}4c1qlx5&(k?h%gskl+c>X{Z~mZK zXz>5duV;hf+d1931H6nQ`||A=WZoy9m3k9)k;=UJty^WzFKw6`-klOE)8Sn$d&|H2 zI7cha-e_k1A`GTkD5_bGyT=MmZwwtxmSV57f+636C*QZf z%*U5k7r&N$D;_?ryDXOv*h*2~aXU}0f|&;V(EVtR>2@`ZxN)p2{7ZaRhk2o7VMvH8*8EkjlW>>wg2SNh;I;a$)Pt`kE$#pjWX!cDgr;Q=^cN4ChX_4mQJZ*F6Nl z&V4&z-T}jlnOVv29S$tqd@w3zDR%roJ)STsX3hu4i&_KY1iNFY+sl}1#|y{Vnh|3u z?r?`Wo-zty0l*$fYJTFMgERZ4+HWED$1bl3Pg=<%_QqaPf!_J0UKohRE{l;`G%>y! zOYZOxvSsybXUx3~?cvVy4OQAbAyfi%xNMcBcyS_ah+5x!;<+dJwI&Fb(CId+?OeNb* z-5)8S}I)^tXqZA0CxNm>(Wy48Xxp8bcm0 zGQ0YWle>y*xyTe|z8134D8GHi&>)Jl7A2<4yGl zsC02RSF`4$y<}enCq}&LR-&_a=E|zsEl-DtkM{6dy4N!LqjiiQ>o<=B0-ik=nRU}E z5^S>)s?4{Jss1f*l8>vIgYkb)aW#vbb#RV#s}6hCTo1SF>|6Nkh4A(8^dECGe&UiJ z_iI~vet%dI+UFOPg=GMiB4i3)m7~-E8)}Xu-0!7I$ux=Mg=H#Xi}*Gy&9Stl<20F- zMU@p7iwZVO4~Xt5ywbTv3aXfY5!~Z=6+eXa3u{zX%6p+CSsB)q2j zhzb-N)Zs3tF4a3!@tqC%Gz!}JE~hUw2H1h%jd~bEH;SzppGyHA?0n(5y_AjUYhWIN z9a`R#4ragBw$8ciFnpuCdJRmN8g?2V&Iuj~ebeoY0OR~R#WjmZ)VCymswRwcNWP$N z_>h);>endi@Bv^<7~xk!q4wft$vZJ&6EU~KcEW_j0T#7$TBxYl(Wp6- z&J5y54AUX*Icg--k?4a#)O{)Eq6|_6%*H`K=Ws0=2XxyZ(|wDZEHBwkvTaP@TlS#E zP3E(jAGIKwVH6PUNYQ*q-X=Aj)K!wqE7h&?eN5~&%{wdHG1iJR_m}PJssLq8FQ7k zCdo>*tkSJ{<$QX6L1r>vTf#F<{{?A=E5@ActhU$v^dER{wn`b&?$IqY3JUz!fJ6}6r0)VGQ z$x`-jcBf4QZ*|>?@U-*a7IBRqi3hFa8IKU{51+!c_@jgEXg-UDRHS3&gnuU7VB2Ez zki^B-5)x#nRByB>vr*gc?RJf*^A==3%DNZS5Vc|&)U1f}5F{XN=u)Oi-BB!|ReXr~ z6PDOYeRv6F++f{6FOkl;@h7qn;DDh66MAWVh=ws??lhQE=sKjl`FinXOeBgT>KwUZ zC(4V+zb_zkj*UU#!sIDG++rxd$+|)Eiq&&N5W9)k`0(b+ZA|T8Ncdtx6^&^v<1maD zH1VcK{>@D;%B>LAL6!i|Wf34m1R4BBDcRAj15!WqvJUGV1PP@jB2yh}mk5~I813uR zhUutV_?Xh9v7#$*6t?F58TSaO^{Qe@Te{<;lQY)j&6H&^%Zc*BY&a6gZ4)QQlcfYp z^n%H6(%tsj^i*koenM41i=3aJOfi|2j4cT3l9iq$f@vq1WLs&xV)Q6kQY2LtJY zJ|-3=oS!!q+U|DJN2;%DNDZXcKl}y9>EKZ?&y{vUJ7tu9Oj}&~aTa6FYH?-d&sul) zcphmSIaFE10hH9Ppk>=Pmx``AbkJab=L^skRk0SxE(KM=AjvLy;4dGUn7`)BokI;( z%Ni4%>#!3T)9TM8>Q~}iJ1IF(7>E$GlnO|M5pj5$O;z`E6(C`fF9TxsoWCujw+Y%x z^SWoucaGhPvnGsbpE;)uszD~QF%<uDE8(Srjnk#EO+xt&!Ko zeZ6U7Xxeup6w3@$cL7crQ!slvnQ*3t9)#)VGTDo1bu^c@=B8i6c{6T!o2R8aBswG! z<;v;u+I)}~aDF~nE)<65O`3x-2j^f-gU0=e?B}6&S)Re3jStN7o4O{uPdpFm9`$zO>0H?_yoPu4GTkQ?gb9m;DmK-{ zb+#WOSy#f!a7QEWVtbLJRw+1%j7!t27V!K|<973{GD*=Vwr}APJ%^LpdEOw=bsX0{ zR4)q}Cxr8%I!04Z{g!78yG-Yncz@PFdC|^6{#GfT&`fhD=|wiRVbG9^F;z{l;+6~R z1D{7iTa5GIRT=1@CpFV+8Oz7zieHylqr~A-+@P3Pba;yh$*ERJdH$z_;e3+fJm_Lo z=5PqAfqCph4em@lPK(uD9Hp8Zr7|==ObaRuMN&Q%%9It~;|^}d;3RLE2oOC)$w=~| z$8FuuARzq~*CDTQ;RGL&Qu^0Mgdjm?7QP6)TkX1Uc0M9i37X_Y#fql@ z?lH5&J?#D?=wphs8b z&$HT<-UZCixHHvcDU0gVCsi`#_HN9;6`}UbU@W4KGxkAmZTRn(Yj0Gn6XXtV)W8)% zQ!7LW74b+MzQx8$D$#yFl!Ajx(M}_ANu^Xv!bu-s%ZNKaYJE~=ygMNxi zEfANik(IQgsQ8nsgOV&ILE;F0$0e-*ufqlNn(bYPTZ4vXLt|}QWOgYwkDTNnt8J4z zzV<>glT)3EFi`CbUp>L~;yquS1+~r;$JEeYm-~x5`kqt0wUEShL}p(^k*`kuLa%WvW~NLIghBBfs;TM>mc8g_VP%~%qBB{KiY?SU&cEvi zOog8_2QW9qSkXh(7=(CrJ}Y2xlt`ncVS9NLVmHDMW%zrt6qL$`P4e?Qa9-n&jw0eP z;E+s(#ipIG=}5Ba&9%-Cxa<~lprf(!KwM$0ot=n(YaasDC8pW+fQ!eX2JB*l3@QjP9nT&oxY$Mux7w!|FM+7*~s}2w!VmEqY8N1?;_dK4es8 zvR1F^SkLk^EARE{(HX$~ev#d@H)!dY0w2_6r!1sHQ<2cN7rRz+nhZk#Fw@3XygR2W z2jCjQN6rw>K>@hu4Q5eJjCcDKh##;2z*qp@7ttqwS&zIoaOS;fyeoOlg`5YHU2XY$ zSPa!c2oj-l6q9@-4Mj)?jyyhrfm2y0jGK#LouolRWh*47g9zK|S6lc93z~YWVB}_` zVEPRvIFo_tK|N8`+_D3};e_s09Y){sBcVFX8SZ$5MtFoqi(f&6S79p5*~a3)Y?mVC zPD8jrHYfyq$==yXWr0ml&Al<`JYV|p#>^3ZO<%;rfpWvUvn&5RQj1|zgn_9T{je}i z9;rDaS@`U*nbHO?-t*hBE04U1rO+BieS1SpmXSN~uBs%D{TqXl$L`-fd@u?F zOE$&#SAu}2$d?Z&IQ`T?dl+~r@tsPRdJ>h`h+E?e-@48+m$A%Yl{5(B7U)?7l(t)YQNYaEQ&|Y^SSnr!235jF zn!Z1q?iv;6!BR!6F0gfZHc8y-CynKg!g!ZFxQcwYx2ZdzI@_j3zycXb_I}MG&n-Y| z-4Le7cQU^X3<%fE~LVe05^>Z{3Yktj)7D@gzwaoNN_85YCuVH-=n3^-o zjrgA1U?<_YyCqklFX2YAgT`?;v|SIey|i~XLQ!83Ur*R#3p36#c;JZbg=|*;t%18c z5`h%3A&f=lOhotogxEOH8h*@SzcyHH#D7GI+ z1bA7dq+Nm*yMhUhP%j4vypFpN!ny@RSmN@WzE|IsGD@s(ih}mCx9Twl6*ox)jiQ-w zxDog56AsMjMyL>TK+X7Cy`tN^)_b)BJwV*TM983~L7UJg<5;aGd!a$sA!nC5e{L-< zkSr{)L0v-M5MJL`9k0rI`t9_BgIoaMe|W0>6GUh5o|%Q;K-^phb0)4xEjNmA?(aE_0b2CLnNgKL0;VOcY}JO1fphaXzo^g4$xlUdq0qS zr;gM%D1VXoZgUqMmy-dUU8x7HXx}MDUS3st?-aBYK^j2UDiF%?Blr0aq)`Dt5!Fz+ z#87)sR^ok-^y5_G8DV$^B1^r5Epd;qKr);OOh>P&CG+N+p?b-Ixfh+1ZsO-((zm{j z=T3!;eftj!d1^sK>RvZPGyV^6P%EK>TF?vAcUNIw>@WIRMvFJvS%u+vunQy3S`d57 zcU9qy)$Ivk-ONvPVO?wh)Cyo*0PxF0ZsNi0&ECm`&u{=FD}qKIgr>9`WRMr^FZ%+H z*dC(t+#Ab4HDU<2$Q$->{8_N+tW=1D3I+VpAulYl%KUuT!N-(CYj;KwS39#am<8{! z7bcpIEnFczG5YlMwbbJ0SFN3$WK*O!@E_g+_&dV!Ap#BCg2Qsc^!WH@|o`VPRa-Hy>Bek0-t4B{$Hhd%}jFIG@GrLAIoGP zbe;k4XJCCJo|7yn9j6YcwidqC-s6_`oHSLo$LkrXK)a)lb~M{3*RMw| zu8{d4IpHq^tZjK4u5{~dlDz9H#;>IRfmlOTB~t!ieO$RQnBHzOngffEqENlx;l-&` zlK~aPJqmTBMnxn?zX{@3$&($N1U$?ePWdU_hxdK>F_AKW*%@-z(@2MLldjFA*KYCO z0mlBG4T`l_muIpoC#HL(Vur%gjUWe?A#k^ zQ+(cK?>mQSEefeUx-S!nqpJRQvA6&+YoH3Dh@TV^nD>1lyoMAifKA?jHB+Ah-VIG2M=`qvb=pbrmsmQ}p5>OjN z6}&`S>G^5&P=`Z*^}F`p^>ggW?@{&h_1A_0-vlu~RiB0TFhpoH@uTHYQ=`Vs%#%oI z*izbLx{7Fm0ZSw zKo>2ZN_=G`njIwtYN}L{quASoTY)3xqa+t?Z=IKJ)=E812kKfnu2im+mQ*3lfXa8t z7t15VR6tWu{Zsa(>$WZa?nW?s<`mr@qx+^CwtKAGT5#>;aq5Al`$cf+6gDDXaU=Q9E#@uI286P+4!e0lXT+5A=a@Wu?TzS+>+QZ(!Inm zK`7)ee^xPnQxuZn@C6Yo?eoj%NXg6-P;*$*cbt;3TW3+qt7fH@mCA3N%KfvEo_toPu?ow|?nqNM1%(_;XlF4=U_QTJPoJEcK zuMgU*QPB>u;wslklq`$odIDPm4qNKX;jq*)uZ_xCr2j&$0s`KkvR*pdZADI^9)jho z%CM4(Of=7m?T<|*fON}nhcAuG#Nsbb$bH$ZNg%qISWN7yz$Js5husjG-NHHI22^W8 zu50mJB8R0vnCpPcY`Z$GPdch))xB~sH9wN!qKWb5l#B%Wo2+5DtV@$q_?AeayJ2M%R zqZMM(J_=qx7Ui|RXOMn02Nfo@4hf_19wh68+jNzQ9UA-eC4lgaP&z9*?BX_XS(%Rg zvSmQq^r7TC=7Lt$&PMR|$kf7To&R_No#jozRXF;Aqg=UqIb#l|-BuRae9hbDWN1iI zePaA=Ap#8rXj=|KB)A2U*MQpD=aH&!!Q7e(?mAGMj>aPFgSTWF|C80VC$4!*IM+;1 z^N0P?S+Tlgdb!jG$He;l~XHNAB1NT793}u^TTZV3$E@H-lG!wnwO7CjV5xVzK;S zE?g_9l#EklZJW)N!zzEn%q>qzP@y)*t@0xNoi@L`7E7)rzoJVGUN%Zkh=8yODLUe4 zn(`K$F!AX4hKs9FtZ_Gn|9fxz;t5;M8>%TxNNIDL_|v~nyEU4R0enXJS+pje$T^UR zCrRf5u*d{=f`X0jWXJG1TXHon-h_sn^I^ueGH(c@$Z?~!rEDyXMpGx+eEZaP9K5=I zh4oCS3cTs%8QdrDCPs0HPZr@OU8WkrC+WH1W$vO?ci_v)OkD6bgHkeFwAb8pdWiWa z4eiag+Py#f!Hg>fl8KFKu4UJvu{4 zS{TJ+Vc)M~Wq!CSM)3A~hd^^Wd?VbguOT-_*%34$vleB%A+IYy&FltuCk&*$q(a2LMYbBzKax@lb6NDyakI3a zKN=UL0X$bYJHz>MaDcphcK}}6_OLDBaDeN`Mi=}yEcZ*eMVRpwuY>)P=Sn4dwUkg( zFH5Mrt)5C;Gh$ZLu4wov0OUiKw#Y#In+LjvSfp32GNfU|PFe4Xu}6&TTr_QZQJ_Pu z(vR$BW{Vc#JsZT1T2(_=)!i#E#D_iHUZn9(hexhe{dsA1alZmw)Cb;&fqDR_v@JKR z-h-+zRuIj|Zbta_=1;=SpYN}J@TQo-_|M#w_4gRF0SKaJA{)nvFY3kcL}{|2UHD$2TDUr;oGt`Zl*h=oAp|m!I zF#d+zo*5NIX$65`JS#w6{e`SnCyW^sc@#_koB!-s1}v7I=Kz*kO9>4^K$c!Gjn|Jp zHyOFrQ^?8|%zlDv9;1~7MCAOce|2h}(Bw+l!3uxJZ+bHJ*Pfv^XrA13A}0vq2q3(39| zd=Xg{jOQC1*~Huc_Kg8d;ul^j$aSw&odPV&JijJ6yY8qa@2KW<)caX%6tD=%OF7{!tn)6*=(A41M_U1QxKHqdgy7+b*e!QeRk*9O-}r9;k<1Vp15|15cV0~& zsp)KUB>&)Oh#xpewZ0+|T2+W^J<<8eOK_8D|1J~E=IO~~O9)J02NWYigzUu+0g~E{ ziJk6nJ}8fQcO7U&ve>4e8D14We*vSX_GCVS3NO(Y8EB>$uo%w-iA9+wS=adja@ z5sBBbGGaxub30C=d~DM|)RMC}XL?2W!D~ufBjkF8We}HZj5J?%lMm6BPl$tvnQWB9 zN=#PV-Yuy3Zw)yhU%13oXT-E_-==g!9Rdjc!!Y9j`6R3n+ca;#7mnH6U9F57AJ^0B z?k;n~5RXU4FAcZj2#u50OAu+b{2hzTxUL?j*Ma|OrKfjT7(ADOPn<*aghmVrQ+JQJbZ`LRT-_${#NsB*f5_qzMJs!VB0_l+I$`_DwHgt5_6c4F`!6wiZMyUweEoud z3_@@)rMdt_&4gy_urPhG*I)#_VEmj4!e?ek}pCQ?hEpU zB(NM78?r8!ivk$H!YajL!1AUN@aJWOPlpMN6{H)T5{1Uu@CPfyM@1Yk$#fru>!USn zZ3`n7ePE8Olgj@~V-%PtQ4+B)3eThzRiG|Bu$xD{Fo3qH4856*zp4CvOBu-_8=^%% zn9n2xo@cjzD%P%6)xl;847ElQg6SnPOzI#quS#Q1G#*Y|A5A%3e31hW72;eu>JKyN z2=*FiV@%yHbKdn)c#!%}r*Ty}@qtGK)24Q~!bjAh4M`0yNiTMy3OwD~n zf$>XsGb(P~F3c2~E;af-2<#2-W!Ev2*m!Q!V)hzvV~S^Ljc)KdGQsL}dWUu%E?62R z7~8_G;B5V*?5%%kYztahp}PSmBIhm&lMjs+7hD<7dN#;Klyr+=$guvw>y+Ku z?J2xcE_587OBXfENE{K~ku1lwuBHTABCT2y4};77HL5}_h9gNBA(m~F!LR@;|U(iBtTeT0FiU!kh)@BA;2Qe;A<}B6I zP9TmO178q~0v@6Kp%N|66Fh{4ba|i`Eoo0c-t3O>orFfDkge+IW@9?RQrAzzj_y0t zF;N8~MtQv7-y*-!)%L`XzKp+oBgMkz0ofOa1WV`yGe3<-p;6C!gCzxKG{GGT4~oDD z4jnc4n?o=`E3q+he;zZx1z#_7KmC{IuNmC~;_&P>>F=oCs2RHwe<&o2c54`RYtkp~ zDNbu*;ySwfw%q6HKS@1TNKR|Ses?G=XigTXhZ2u&W?ilnP3e?`Bo6SaAJi?Aw3i&0 zk1q4hETgea(fdwOf8+s1(2ZsF;qi)*LD--d;~ z3PnVg93Y%hKV%R%)Gg}uOyOE2_51D(j`b2O#0@2ujz;YPT|75l4mGq>qcJO53&YP6 zMMZftXmJqK;w7=~jhM*Qn<9V`=g5i%t+yfk?m2!hA9Yq4a>fvMR$2T=JCd5viZ*X= z=fS-$kO(*>Py0ei`fLf@cXU!T_>lQ&+ObY}^LlRUF6rq0Q3vIu>7%4rJ+!M!h^&#R zb0l^7feJ3{5b^x%kZCX=FjqkxhxO;F$Qh)fW&VseFeh?YB-bF=oVf^D=9(fmBvg6R z#em4upmW}vYmuA#3M!6ox}z@_>k27+;P+ioD<+^s=F+7j0-uZG^(s+%;sr$?R*5}C zz(4(PCI6j-LSFpexlUn66`y?#2B$JIMVob-w~gEc!E4jpu^@*Gnf$dJ&Ro;nf-K;hWlfB>sLY=6-A~anTo|B`RHZvf~vVrTEmXJ*;nBA$&R$EvdI;u zRNy%@v9B=?md@sR)FxM$(J{AdYQIV;KabO}CD=F;dH}gZn4~JKn{E^@tuNtU@(2)= zIJZ+D(@|eY$Z+ZaXsegGD$KmZbGfH)xlw9djs)k}A1q`)cYPpgzDndA_vsz28j9}) zI)Z#^8wydiwpAU>JKU|Tiu%4(Rb6EOb`GxGvg47+_mo8ZKbx@q+e{1j(z!&d@{7=( zr|-Kvi<#)W!114V8d4%wli+CwtCE1}FFLSNBv2f-oi3cQj)VJT`Fkucws)xUd$N|I z%ibE|lPmTQDMZManq6vy-Z7KuFM;4xrN}Q$Vk>{;x5&hPLN3xC5a-PWA~se4%*Ios z=UF;4fFAE|L&5ZuZ#!eB#%|K_Zuq^)Zc=gM2M<}X-?y9KQd8#OG7_sF1$cWO(^uIJ z%?mq>Kl906vl(A)nLd_4UuDGucw~f@7z_i(DTD?LtukaW$u=oOgV8bSeeM)dUer8Z zXIxNva7*(~(`*F~NT;PxO+sgY8IpZAntgh#n==g`I&5`O+!NX=Fx3`p@98AAk&7K> zm+AFydlE(Fl)5d)AnNHPkiR|hWxfO>(c4l@&o-pvE+LO%ul z`Ca#vs5qhKQe51m9UW9MU+C;K6UL|B-kp0~HxEXREUjBegV3?iQ@q_P$Pg{9$4DQG zQqr#IQttaTdHF?&A@MDhV)}xmVvI&4*IPjt>L`9rqdF`I0P_r1@P<&&^OICf}+ZVe~(ypLCR=K_g!^W$JA>< z8_E*f%hKuvmZz$!Jht4NCkQj5Q+2xM2j|B>a`_@WnuH$j){cO?m#w?ptC!rJm#)jJ zV4-qMr1(r;S@v&>U|O@9-1IjUxB(56RYlTSVZm1JLFA`aHpymZ;(1o_q-)>EX-t)# zsrOJKkcEVx>;lFUHVI-}HXi zl2(1^49`q}(WRD5;eMAczNS%6;S66($Oa=8vi~Mntf2%@MFqag)z6j654i72BDFeq z8d!mIt@r-mtaI)KC;8qOS@E4REa^x8iP0~NJ~)}`d3%E93(rfZXR~4_xIZ4uesD;?W#`hY-t31rlwINa#w?sQ4gBA7#%Ro6tp7@t`h&w9e# z6MK!(GnJZ)qI5ollewyXmtV}9fiGE@TUM%*WP#3-Aa_5)SNbT(_LA-%`py3-U5Xxl zsC*kTRk6dAXrQC6P;M>9qLpX`Nw4K<%NS zr0Z9S$B#6Ag>z+W_RmDaQnL>fwB(t$QPZMnEszc--*>`Z55t_95Ajp3vZWVQEgLQ3 z287eRNRqq`MDNwLLJqY}9ViL2h{U4B{9*Mi_ES~nX2$>27} znx^UJ@St8V*^_soCzJoPd(Gifl}n&I>s=K>IS^+N33mv;maZEjZ4DB0x@) z&6nJOJ4e()LGksw#BV1vg)%LLi2a?O+??MFa2g=l6i3IxMt}lA&u?`s`^X{P6tz|Wk8q^mlaF-8F4~;j$n^NBJfKS^-eRNZ z;qr>n^hK~qX^HKUeIWv1+=-{*MAWZt&qO6;3R2va7+w^s;Nf$zcm}R)IfwQ!P&l~* zt>O9LErg&`kqIl%tV?!ixt%a$!D`x5ZKE-oeaYF>=6d zz3{Xq(0QQq57|TBR7u2;T)&mzXIf}k+ma<4v|pg^2OFKH#Xuom1-6URb(5)}4EF|0 z(Bp7_FA4vG;EVy0r0Gsx%q!T-6_$qv{xS}EW~zAFK0_8*fKbp%j*HuRVKK7>MH$N& z`Ee=HDy0>uRE0l*s3IVF!tz$^VUb)vf3wWlmX2!;n663CpR=DeWdIFJzt`#rw%|0o z=EB{Er_4GKw-@+imtUwk3K*UvN zRarJp;X-z2oXYU0?@iPk5qrSY!ctvV#fK_AujnCeIxBa;k{>x%k$OGyH+~zgv|KG+ z8ya<>?O)=>ZWQkM_p0?_uy&A&3;>Xoxa9${GK<%E!c$O<3X%^i*8v5DkmF0<3-~?@ z*{|{rh(v)GZB7dyL+{uEEJ_1_BPa(l^*;fbSQ|NF58|fZZcQ~z3)M)%}%tY32f+nqpr}FK2V~Rj(i_L`XK?f7uTPX z-wSDBo^;?%Y{@y=izb-4+M_VFEB;E)@~F!nIR_#cVMcB&<=)Ud5!=>Hskj2=@oy-_ z2D5}&hxf|G-5ar-eA2+sN}ezrrhCs4#ZEP*IQ!uzM;E$B&*Z+<_Vz*jZq}L3gKJC;G%BlB)kLIgpjPf zgU60yZo{l{FV+YrA>Ts(d<$O%-jOyd#Dp+&Jmd26E9j@Q3K-LYapsRqu=p1QssU5N z0Ya}y^Nis;t69#IV0X>|_G251MxrWp1l1k7wYBbR80HVbIt^yKkmj7zr{JX-C;qBZ zgasW8woOQl)U~EwQ_6v+8aC`QXGP0rMz3!y_>l2?#4v{l1MG^1!6;&Nj&ZDV?w_zG z=Bq=@OIKAaCYG^4E^E`e;#u0jV;Y2J9K;nDw(^}{R(x2jqAADOVZIRylJO%#%8c?a zs|yVgS;u@;!1&^fY}-XQjT3>-CRV>&pS8Pd_X5)NrDv)A389P2-%D&FatpEN&B(ze zekXt0Ubo}PTk)zYgT!&OJ;m2xlE2l z0{sr&p=fjUW2b|3n~%lgE~szjhXG&gmB97i(0X~i=g?vvKDlfi^sc+xap=4YYCR7Z zmE*XkF=&6HZ`DE%#*3DUj@H;;Y2S14=5*fcuhcexGR*|c2W9u+%G`t3n!g54ts4)5 zmgpWQOMc0iEye^-Nk@Z@EuOV_zOFMbBQpEbBUHI-pIv8z{d53-&w(#HncvCi#7g|+ zg3D_hzT4yd=Pzr^%hTqf&jOO4ogjZrHbKmbuBKHq7WOzGp1ujCb@(r_#QH+!_C4^ee(wa=G=I~aBBl-R=K;sCK<=ILIZA?Po^2e zCq@~sE=(Qi+dC0Q$=eGt#=Lk3nMfa;@8LK9==tHNT*Pt4J~i+I_rB;8%pa86*kvb| z78!pfS@Eap5-&`Lzq87D3l>*KPwRfK7L>5Wg-5jVC^h`r!$Q1K4ajjWJ5O~FZaA?3 z9#qpSqhlH)iCjjO{=7#1{XWSEr&f9Ni6*8c^L6-1m`hh%4px~&8>SjeN6&s8Wc}IS z`EPV}Q-QK!y%sYC3-d@_1Cp1=x?M*{t@8LpUQ?u_p_5lhspP7HB3w-~vuB)RmZPz= zYLug~ihj4U2BDP}9I{4O`Lii-BsJX-s7}Ldrv*C-W2{3hsSy1c*7P+M{FjNkn(=)o z{_tx|=HCc2VQl#z^K;MIY$27S#avEj^gDmr;rORSkjnZf^6^Z;PRsGSvK#MYg`*ek zfE_-{5kXR&mG@!Ga;#^XIAPq&eOs{Q1X`0l6%%``V59+$+bfl!??+*2j7KaJphmV( zi}l+~DmhM{u15P|MR`I1oa`v09dtqUCyXtnLyW-eo8E2K-&I168-{sHrWMO$Cf98N z-}gs6GS6He0S;UJ_>Mti&!|*np`C=aO)~3Qqv8f15Uv?+*h{seH!Iz>(rtS&ys;!qvWjA6ow8&dATZ%y+SOm;iR6xcpwl zJ=tfK?%1b048OqI!;|ayo4aSochUfso>0T_+THxal{?%ogr1n4sjEH1!WKzjh1AAFaqkpdW<-eJo_*~*$h8ZoRFlgBvdUyn_L((G0coHQ!J0Tag1L@ zY#!o8zi)nD0P+FsdE^{Ha-5X$-u&{??t{}&VxNnBNgSGQ*Tp+G>K;QpVpSe^w5 z5y;iBwZdP)_@{&~&E;E9lw_l;H9KQjekHlk*-rgt95ZN4zM^h25sfy&>7U>~EkkxO zP0!XLDdWV<>5U>qn>}w9U4^~!ZxdhRkdjtL{txRh1RMFg(MB$Ztm2OTN5NaWt2yi8x$ z)+n6pu#rYkwa(F1k-@;@ldwNE{ZEbOC0@ShLP3^qu$Z3xL66|@Txg2kXs{dEO+O!G zpEIuEjtz^^mGdYoy|^U5N(vnF#KaJ4M-J%GL*>t;^@>EP<{v|EnTGB z)zdI5acVS{UP>W0pHfMSTXDl*G8n;135^TM)|1|2UH{g#S=e@Q@%IcAR zZCD1dzi1f#t*%Cnd`_Bv2LcKD<|fayA_qf}C_sy0HosXh9#M>#VI+|mcrKnfaTN#z z#7qnf!|1BT#m{T+7fiH3tJis(I~ifNWX$iB_QT!X1wfsGICZ_)5SWVaZWgZ_D>av zuDc7&*nNJ!xM7S_l%g5SCV=`7Fx_`RxC)(k3M-L)8zS+;5yRjhuih#1W*SW3EPdTJ zz!EtU8N88}A7;!-ta0@lhc3)DMx+z0*&c);__dC_5P$#a0)z<~7Vgk!p;W=r_xk0% zR3m!Xf-`dMx`1~#gYK*cK7~{mWxTLxM7(zNaUUZy3n|Pb)IJA^$r{Y0_lnnvU=mpf zb|uMWFRzW+ET4I@0eEa#8<4-l_LP~!j>gZQVohf_hpj>3*>VCoxT>@R_kyg8W!^f| zKlvG}kJ&Qi0G4F!%rE(4Cr(#4>Hsot?he#1_x;h?AE$=$L`M#toR5Aod~DZp@A;Ym zFI&LZk!QqQJ|a!%Y*Q-GS{P4o&cm!+y?*aqBcAvo47#TpcZw(nTM?h@%m4KVfA$!6 zm-%F%EyF~Q-?>9CdafKFPa`xq-6^ryowgBUe`HkE9eS&&x_O>az!4XmRk>`m&g!{-Bz$;NVHhX&Lu%>DK$5%rTmg`; z)>b8uC3j*YS&H-AP@fOnpi+7O#DPKY$` zYq&Yi^Hqp|&+zPzz}83F?OgV+k7HR`wbRy=j%v*9MQXh<1e=obr*&AKl_JE z+Z~TR{H3}0jy)%cH1Bo|Pf@n1GlpHCH}yoHg;#%>_J!6wKP|(<$`H|~-S6?&JNM6h z_s!H>- zX8k5wy2TouP&IWMqO8m42tl?czrgTFpA8YM@#)k13E$V(N4o3uv)9`l(>)6U z@bxrjPiBZqbBSk$y%G>^{AydREG)Xh^AXMH@{|()Q;S{591!sr^)6l~*;E5^L(S zU96pEy;SmlRGnjRCgHY)W81cEOl&6;+s4G!7u&XNCllM8*tYHD=HBz?o~o|uUtP7U zySjV7@7n8GO_r?1i)!TOQj`tg)wX{dqV%Y=oTf|%-1{X}BWO;rM*~Yy592v=(#^&I9UKR3Jv*RnCjx!h_4tA--# zA$Xpgv?>Uks&&SjySg*YU&b*v#eca4jR6@q5Koj>T4 zoau1JG|pT|RILtNy-viScnD&e5dcMVtj4VvJ$^=IE~6JrOv;&RxZohJ!j0`5>!@yk zuI&I$@2`pp`86Wvvqw?3FWkId#CHmlleALq@3XhZKg}pr0hRNpkX0JixPDuH%#x5T zaD@!kYT-G^8ennkL=Yd3b-M%N)O#Q3F|6AHY8yVaeqXaQ0>g8yj;88b2_UHpxd3nN z4OMZItxlE7LMk0Ez)4hqP4F43zNyR-oxoEk`-z3PgrPuxN}w50QB)(0Dwmq;W@V1}Yr+@e;EvVVZaK`$(t0+;^@54J5Eff89-36LzEg9jnnz> zKuoVl)jqB=8YdSuAYznc?zKk0<MJvat>Od!ZA^g4=&>ZUmwduw%#rg26tYmyX9Lv}jh z&}gl(lsy`4m}Z9Sasarwf`dt8zm?F+B8L?yjg*n%ISHc>#3f#nk=*1m1>()0hUm3e zuZ7OZRXC3b31DLO7?^v7?0SYdV%9bbzyRn_B10+_{;T-A0vk`0 z4Qj!LJL=d;s(ZX$F?!RzKpHLR114OMk>=mdW!^cgFx;5?D9#r2N*D%4)zM4-Q=S$V zzgEz6XT#;Y=a+|S&F9{LyJb{H&__)+gB-)fvP}iS4Z1*`%ULwDZ8L#m2tvg8tdQO~ zh&RmULRg@f`vC`0Ty4&wVqHkM6#YodN`*J)8bvE*sBwBLO+Ew6-P@~a^;CqWiVOPu zeg_7^3k+OAQ$f`^ojwLpN$;~MX=lm?PPD((o`W27#q0|_U57Q;3<}|UHz4bCuv1=% zLp_+r?M&vxdx(--i0wfeEe|DllaX&jwr$E9ennE(n$<o-NIFB%)!kx-NdQ zjX>UP?lM7|{?P;$+|us;rg_zVqvZIY0ZR5HZuQQVCAhgGLd$)M2|{){9!SF3q3;e0 zBj=TsmDd&)5^k+$w6CYTp61Wp7Bil%KdhctK>=QvmyufrMlGDoGi0{49P`IfB8-IX zhFD|xYEvgWUe}=qvA+N-pE>VZe%N0{#GMma6rHJpFW(jUzpl@8D(|%wTpHA@Eq#b- z7}{G<7PW=e%0Fp-Q9Ml%MJEaLCOzXwEEhCvdy@{4Tu7GOC)3?#I22=DN%q-8g!Bfr z_5fUIkI}cjmZx!ZW2eEj5C{p@4T}t~!i;B-y%@VrCRuW#yFj~`AzAMaw$zEl*})8y zsUfrvXe@D7|H3F~vpn3XHdv@K#p}H7{DVmqsAEVYx7KnxdeAhZN??tMw=fx=w2V*J znT|+;Q7bZ#8+etbsL~+2(qSOACzcoUD+Iuy2Eq)alp6muW;WE#StGs5^>`Fl?1vF% z=_}v+_6w8%4$s}#e#4MgVU|J><=So#o|H{T=i84~aqk-b@0Q)G#8T^Tn&=Im<|od+ z?H<-o*P8VoU{C6Ohrq7y-Rbc+!MDxryfUTTmBMMW_IJvgfhg}y$4IC`=j;90JfPm< zkNQn@_roml*QCrcF8|fbeQ&yw$a?r9VHn_LZqMQlcekDN-R|T5RU7cOI=iykg5K{$ z8`K}UJRPg|=bW&UyXJ}z#>Q9wrU%*5>(TQE0(<4%ay(ABUhBK?xgTxLzaVFZ`Qha6 zZO5v>zkcFj5ZH#^x*P3|bUnQEtCmeEmv3>#b#Rj1E#B2|m-)MgP z`GDXLo!N(dA^BqXBIu6V?pwZb@kZ^5?1{D8<#Q+WMZO*qamTV7&a~&z3*@PLP^tbx z{O^9J%i4)_4F?Dak1lm~78DEMZ0KlYXk+t#)PNuj4|i0FlxtThHO;oH7HtDt91{>x zC=2=j6L-#4!<3$%q zqZlx1f6d0C;#DX-dTG=fh5~xWrCXR%@TQKcU``N<99N@wU{{8W9Lab}7W3F0d};L? zC~-)T6{*(7K9@vMUMgH%n*Su!&L$Y`Tsg}$+Hjhf#Rrm=f{LT>~ooC<)P z&e9#_0FxCuUG%$Y&8TI0{@E!rXK0U2K`cttSXt>t9#g-w2AwV-8u;BhTW zjtjg>3qgh1gj!A(^Eb{4{-W`D9Je)Ha!#291cKS6gFB$xrOHZ`W-Q){BQ%H#!wDVG ztVFj?ZwpqVrn)tbIe|*&!-PsCK;rQ#L?=}`p3c$18()>eQuMCDVrPDjp-_s1sDa3# zc}K-Y>W*41X9in1gj*9VF>UU7crsod{)jH4mJf}^xrocEHr+sPdn_}iG)`a_+z}b4 zDUZ$~RRMUAj?6S?AK@rw(Tl%X3p1Q0;XY~z{#0^RhLD$9kHamKJ%FAxT?3iSmu%2z zpoKNa5u-pluWw*iqcc|yHUYn7G@-Ft$fYRK*Sc1iTjzA8(!ML5IIUr)XA=#YRa3&Q zyxoh{E8}B@_wQ|Njr;!w`;@DX5 zNCN36r=hT&0JXLHKv(~#6%%0PH%*#SsgdP{0JIx1TVvkTF^M-Q= z{8F#d@O-e^(pfwhJ|Uc(J;$Dmm1o4O%BA>xv$}6OA8cinR^>2C{-Wwnwk## z+O4r)g#JbZwtRn7+b3TBU^Y1>6d5jXDgZ41fmdhl-+W0ZZZKU({X%Ik#?RP7+GJBs zsy4`@YD_VVT}FGp2Ic(@H}9(8))HAq5nAMm>HZUQ**?B3=5aStqyfDUkrpIRv3qd z9;5R3V`bWH&`KzP)6ISmeNCf;sRN)QgicK3oTU#C#{Zk(cT_E5Z}$|kVCGV)cp_$n z40Q=@g@7ZyMc4jDXMIa6cxI;W6#A~% z7>1+|tb=GxKAifBh_XGxXlzZY)Nt$AS-`ef(%AhGg;Lo%x9>(A)+4-Y2FAUy&*j#%yUD9}B;%rN{N zkrqhV+u~DdSmFJox`N$nCIeW>s;qD>s?ROCOC=6fOfCKKZDl^wS512 zv_t;Jzy#TocinGBPSM55nFpV4GJ>9AZ>*vCT7cuI2R}B3eXmmm%)RT%Y7s`>H)K>l zjtROgEt_gED;{Vc-S^?A=7=44f7Ai@3$Gg}9%@9TdtnzA@!dFamjNKbeZfijSSRh_FFEz~5j zOyS{$%RtZ5+=XzH73yCQUPGRpMp7r_DWOKt$6;dN`Vg3k?VM2;;V_BX8mU6QD7j4u`@8QgASS*5WzJ`JY>!5AkGw{ zNyg_cUySB(Ud-{cI$Jag5r7-l4Mo*^+X4i~>I^2E!!$->TBvvG5sis^yU|8rlg!iM3 zeC!h?%Xss%nTh~MWBi}w9ZSJ4Z#cGB%MQ3CaSmv&WahZUSyh_{H!icztZbWENZNU$ z6r8XvS^Xz$Ii8!FZEgdN$c7C<#luqz@{;Nh$91)1mjD-cL^2!ypzfd*80fB=pz2bl zU(piMaUGhFe~efXQCJd}I?~Ztc$^iUAh1<)!G0%k{=-9E+AUctS>uJ<)bgn=JDX}c z$H(~0K>4R0;oCI^RLgBU`>r15k5nic9Xdty7(&lGtUcEX(Zp(^M27_<*BYMk$EgiE z)6;O?Kp0>XDz~na*^>KHB!ML=#V?Ac5u7(II9^UApXdH2ZTWC~tS3YF+$xuoS$Uv; zz@2WAkXsiw)ksT_z4Y`rEpfiH+wA17tovmhgm7SNTPa8#ztuW4s%olSn=?~~@Fj+- zX?k2XC~Xrr?QqNDy#iPA8u+PqTYS31u#8gcjQ~*P97MK=wx~R+-Ka4c=i;}naL0cK z@^!GTd592sMr!P%T%*HQiXl_;9N+sxoY5}ICj510;~V~PCY8Rm&F`)o{v(oYpSbiv z*amJE-rTcwt){a)-BjMw!|1Sqa64fsKut@GXKhka61QmBhrUSfV8KH3n6 znkWn8^5#O?ce3_&LQwGE|J+Hl!v>MCK_TTATWR>dIh-Yhk3NzMZ_v)lzx7q@U0TNB z6fsEgPk?Or#A*$}v+WBN*dmLdVFX;9a}LF_?#^Y? z|D$O3FCjAql_U2&JT+yd;B2iJc=jKG>UYl5R&jAt#=}jy+MbDqy%`q@Jq8FSLQD-n zGy7-T^ly%}4}o2p=~@qosyj`RS$7CK%k6r+Tw`1LSoBv#+C=6X-2o?(uEcubo{P3} z742uqW9Oeohq!AThNA2df#Fp_b5VistS|D4mL}VeUYrr-Hu$2N|6|b55wyop2ru2( zc_|r8|eXx%|MdUp@i18}}ETE(TsGQraNQO>|IEA#!Aw3Fe;cq3{}+N(7)Amp1zW&9oh3 z#fB5%a zLs*nSjG|9X(({Nx&f-;UUqGk8copx_4fG8oiBQgv3nFg&03z{uPHL#=jW1ZI0|CD* zXBSe#>0BqkapiZv*9Sl@#Ej{=5HaZR62eW1z*OTAOMXDI=@{>et4#pxYNj_%b8#ygk|YK!$fO z^?|QmsWU1?8KbuMl@attTDEh1a)KC+b>sEUJ)BCwl*Y>~sIr_8Bt5z3pC~Tyr9j zA>JR2_}S?EUnlDb0O$-}1UY$*5u<;F3;2^v2ibl>8p2uq)aUrMO$W@|yNug=m!}O< z-Lj<=_FU+|o2I`qhI`-enevplE^pL{_Mk3u?l^YFeq@##?9d)*jiULEsSw@^Ry^_P zGh@mkT)jYqHp8qTUC7N|Yw+3$-A@-cbpaWWu@pP55BR!YFg3^1k@sBxdTLnxI61Q+Rg--%yMzwYJ9hiKtL9@Fc5fI$U)MmW4pYgvq z26^F`3Aq3tWHjapr!jYB+dI~e6qjpypGmm1SZ~A@J*PLy8m@2ycJ!FrCUW(Md+T!0 zCpR(LD{{=^vv!P_+lF$~zuBTe+%oLXS2~)BN0mgM@W%>LM_Yh7U7~HqNzcg}1RT&t zy%B~#%2$W+OiPD5RKLs_&@yz0(8>FE_-MWveh@`R;9&a$_j?_aQ0ha^{q>|7{Z@et z&%$fuj77gZkEKk$TW^T#p_k6@$Lk3?rzPa}4_LoQwRGm5U&0AdLh%Cczn*t!%HEE{ z*i8sS)d!rCU$Eo4;2L@cAB-2!N@@+>)S+*gD;|x_ z@;m{tl^>7@0L(IV|FIhMtU)2?F(0{rw~uUHN{*RL?;>LqY&A zp<{GMDgw{dhz_yu0L0wENh-z^&+5|1E~g2PLEUMq!>x6~^D}|~b+_@7Erl4?e+Z zkUK&a_hZuxxI3)&Sr4owS~>iK2VB6+y9KfjjI!(cARHh^?wxWd7Zw5-U`G2Jg#Ymeo(rPr-%UpJ@e!wWY8F~xW^ zF=_*9Loq{Y6hgT+Fl)ZY+k!4Une>+_GMRS`@oYOOeEKR;i0%HJ^|0Jf)4rQAvg?rK zes_-KT{otq^u8O-C|QiaYoixDaf(!X&#!kVb#wP$g=1;j%(t+0(g4XLq$R`tR0Gx7 z4N?wIbb@80as$%@8@}5I7dV-p3l@m=aIIO&C1S(uP5XxrsWImsB_xlC#vT&a7RV0$ zzfQk|*25`9H84-hF6mlJTr8`b|0WHRkKO(Xc$6gR zr=ealQ>Nd}mv^n=f;AZ}go_wjo_I8a?oSz>wXuC*{;HX%=a$%CcJ7 zm(9QYyG)5aY#s@T9&mKAY?aP7EIv(IWMyIORtaaE!FIt}8k1|QGUv14ZM#gy_MEe{ za#Xae8Za+*1w23kK%3WYE;}P^pB5~jLv+Vg|K{n_cKJ9r#{v7Qfs32$V2XV8=!nNo?rO(-_V6D16^+-mt=igH zx9WnXaq!!F;p{U4SS(Ep}VI+x-X5{Q3o@X?D1m#-h&^_WM-zHhu>O^@7!k zWpjfy;F^xVLqdsReIunISob|LWNIE_5t31lPp@0#)$>+HvAMuN&rE4J)wPGSOS3(E z8D|dF;~@J8s&w^E$Qy=dvr0ce>Qd zO-Z4dY4(KHg5behSwZFk}M3+<5hX!e~C#162o;F-O;J(*+n#N6nX{@I@UVyz)oq~B2o6Mo%G zLzMoc;OWV@Tdm<0Ch#r=VD-va9pU+Lxz+uHt{s*p{en_MxqWy(b4?Hs>;%!=R=dL& zt0nb!_w05c6ZxK!8=N=yPji3k+)*Y3FuvjK#=Skf4pHz!&_JdFJ!(D(J}6+8~;U7FxL$$z2-qx*w&Zjm8#Q_G;G)zN+>ZWzpd`(#H1`4-kKrN+*d%GH z54g6zrKsoE-%usMK5bEH0^W|qouQrcNXE($9mk9;D3gMvyQKd!lFp?S5}$-XJum1# zQ5;96GYF3w3Fd$*D#x(rG^nGOrb3Z!(2n~8lH)gnu--djS+2pbdoz4}TSz65@|(;DP=^5+gYM zxy^eaP$^CJ*>*RAE~bd^T|3;?3?I2O6f)LNeqrz5n?Q*?E3mV%ihIhZo8F1{O_^mR zBi*P=L912iMVFD8RP(f*&XB6K*zR)WJ;P0w^|J&5lsSuqD$OT{8tZ`q$kqQPSb_ZY zZXT-r8_m!z#Q7a2JIUS3ySXF|@9e5=XAieHs;yqUZ1!aL&igmVVJ}L2b1RX&<^un| zbP!Cf=f2i!_TnVPuB!a7u$)}isc513--@ka^s)dbeshoQtkU)ni+pv2ueO^nQQlsT zloMRMYm6-A%N@rH92?0Fcpot(j z53C8kxWJ|fQ#B8?4Ct^>SS9MIkVPfXYEDrl^lZ+-8H7C_!WoCX(A61PR~WwxRaZ!$ zu(AyIF;8zH^li@P0gg|ic2@fVp-aN}1oRCxNeI8h4?`B5FYPBN&H%~@$bf$(0DmPA zl&gPv2gY^>IA;f3rWg0a02{1d3o78T7ntFO2;>C`S{SL9BF+!bhzMhEM_bbGPaKG4 z90GS7tW+K3Q$PP`DCuu-_TR7)yI2bY4iNV_VuY#{X8%U>{fn`LKY1 zR#H#E!D*=4G44|Z>{(=C< z1#F+9u03ovNv##dHo-T^eZO?yXWwt~XsueWkiFntPjCHoI-a(>x^8W3H(GS5Mi>b| zor`(0UZ1cgK?r?F8Q8T@j?AA{D&bj9r+sowaT@CO>`Xea>Gs|l_P@H)sc+1xb$xhB z8ZRC;vh}Lb7^gnb9~GP+ujwyl=xKJy0|3?qyR)qQzGS~CEPahF4M<~(4nLN305kM| zr)9afIkDxixZPOUJl{B>D^VFA`|J7D>5d}daamVo9h7y6X5(mGOkudmVMRn`GAO~b za9KZBr52B;Yo^kTl-;^lQmNe{`l9)|y8gm3VHtJ|E6xjjAE*tD0gC{Mej0LI1A z8v8oYowOZw52Y4Mr)#_cnq!aVJYobj|CVxun@=w$Fr6G3wl61--klf>QMcd=G&9() zv@%q>R0E-TTF%@qfL?aAsE&5Da87J580{F$Jv}K+8?+&S;q+NT zug0EbU+MOikBeptr%LcApTn9 ztEh1ub!iyMmx8W16QbY|BMjs}TG)xVWB~&U-1486*L*6=NKz9+VpjC01f20I{%DWf zDmk_)`0k3&0(9r^1r0Ptu{RIN4bFa;XS@oh{|xo8tCn4=hYaX(YOCNNijBRCrtjMs zvMpfFWSv-6J64||1ZK+`2y(T4BaTf8rJg12)^uz%P?ky6+TMb1#p~wu@?^*u>;2(6 zF_^$-5!fiBT*#y0IOyQ{BILU7ifniELcf!BW9`dpMKMwmQH1$Jj_#%7vt!_H~#5m zH)}EeSTOMURSiE@py=mQu64jH^F#DLggr6*D2T?)H`*MM6#)dab?X5W;I9#TqS0M)CJ3dAGx-7*%HDA zrz4wdMT}|6PrLm(L6wE6PwLa5XHHp6OL8^`hQ5%Qr|h#XmmQe06c>SRr;-aqf$mrG zQPg}EH$8%zRm-gmPK1Rx#|N*~Hg;e#3q}2vmi5a=l23>J>vS|FZ=Tdv5WH3*v{MVX zo^Bc^6uLA3@J%|24f0l31zaT3fZI!9tRd&bGBtK$OowN5i&a8fnx^g?3WovP_pkqo zi*i2O=IhlD?Y=LA?I`ISyNirIUM#K=Z>oYRu}_KEZ6kZn1mc%OV>`wa1bkH05ED^U zOt=Ghc+kbL?#tJHzu$I5l_-XjBl5+f>`JA~+R5QCKq-*H*6ddoog`!OXtCk|awLuw zi`9v)jM2&=i$&&y94SgT8#pW-v=HNC2RJgoK@WG%QZKJFNeLdWN(vG-)@7Fe zP_-)Z!=a7GS*AEywDb%Xt?_dV7m*9~ClHL!%acrFc&-@1n^OTX3_2X0ZeYYkgbgwu z%YpH0=M_{R)TIaZOkQU9Lg-Su>vOGViDE!3^_Ou1PnGY2O&#=!xyYcGbSc)dhw53K z2HYZK9ni=h5zG15!d*TQn{H6MVNaTe&cp=Qirq#K(Q0UbwiFYAQ2OJT4g|#U3ymf* zFZ+smN@Ms~^E4LK^DcgX?z%@Cq&w$pL++!~QEa2vqju&439Rc*tn; zl#MM(QxuzpN^P#H(nRhIF%_w@>Gf=A0~COh*lU2rME2IDFE4>)cK18w8#uwNWPxy4 z6DN-6ujM7zZPO~DXbwpsMf4*!r&|dtyx~>QbbhTI51E^^@WOsb8B$><%$1KJ_kKf*bUSE*!T}5N^8LnWAfC9BnP_N^ z@1Mk6>UfWDO#IojCONQ|! z6T?6#CkrmbN;N47y%v~8VDq3%Hw-!f_EC~#PI`txE<>6uL&BOZGEgee05B^{)x3V9 z-(6I{wNaZWoT3z7QarEwI2VWRw-k=IlXQ0fX%7PG()@Z5Nfdl|YNL z=y{o@DrIswG%9L$5zkFgp)kZ`_E{RPPq+f?45Sklt)dNv8IhHJ8G_K-2w1-`D1!YN za@|AXC0k#Aqq9z$qf!#G0cP-;e*SLZqqqR# z?8NLBvP-kQEvIxA{2BYRb#KHGtkERiX32r0z^l#v1LTIJk_&}k39zdM=ln4jhyHG6 zD$~MJq4zz)1|NA8&aQ%zDT+;`&C3C?7eBQtuR}M-nsLD=h2>IK(if>p`fp2(rg9r7C z1uhrbJxUL_qYhC_5uhS@34elCpwX0N_ZCED8|n;6bjcECBt=5r99I)z^bbu8DFYvc zS{c7d{X|s)#cXi@VG)%A2Y|UJ3MxnUM+zIkXL$kR;voWDg!(1HU33sUl#;>SOPT4i zr3$n7YYoSdwwh$!beJ2Jy{sw|qzTc5W7JB5iIB2#7{VU#+5Vgr7CmRDE z;^a~|(iW6ni8iL9e=r*reUC$4X}>767Uf4;K}<|CV5%FXPD4!ae8-;DH=g)7-wu4` zTwwwr0;zCk0$xQ>(*$N>eopCtLiqbkKdQ3CY5n@_>hccN4;;!-a%$5<`HMMdKC*TXG9c+rY|47m>>TxB(asHkzqiV9lx z^cuB&X!YrGBX|=MH5s)NMYGEkW*jb5a zS5h+o*vWpqqC5xU605H3gc33<{>36rd0{omnZAp(h@56EF>2vJ-%w=(|D%;zw+FNJA zzfy8fDiOq%+0vL!=^&R>h*jYY(8GGCQJHV!o76jX2uKu-5e zxuq-c;b+PJ7NDo00gGEv7{&YSiW!Aru1!aD{bE5ZB@r69dgHtv>-5F z`|p>iSHJ0_`9zCMYGo5rTiUPhYH@w?i-ZzxNPt@Sle8mzS* z-ne{uuHB?%E~VKMZnI+0fR|IZ)xksLhlB}f^J}|F zxDE&D#VM#;S7e7?bjPkYrw0TC5I?HVh25Orr_b#%Zj>SmxZmdD<_hT*^1|snEVUyA z0Z4!$tfHN6&;3*$n%6haLGUezSkxx~4l=XS_MzMc1TwSc-2F$)01Al@kif!GEkVnOh6cu5u#zO$l^kM0B}9WE~X29K>AyvH~C? z%1O+!V~{}!A#p&&Nc_^EeFnXW9C8$wY$2{|Ql+PH9D+na&d*KK3o+*i;bvQ>06W0- z<&}O%i=+R{U0SPSKP0r_^4X;1ps52je`Z58pqP;|$lS7hqn~vMs9WdMU=n@IJNuaI zei1(C)f6WYq(;dg*5nI`2Ksh`YcMnkNQy;2&<@$;nQN3C-+?mdcm%tXL7Z3NRxBq) zKDGKIAR3k5ify}&ecgTg&k-)~q#Tsjzlx{23fxmw17cG`&T(FP>-2$%5E5{-d&(US z!1h5I9T8)^43r(ktrCBw<6cnR869YC``fN5444(F9`r#0r$U{yyBXn6 z)Lj`z{#(Y_#5nl8{Th8Xr9jmu>{z106^_* zyLQ+*lcYL{>}&NQ)7_h7L0r+1{19ZbM_*wO29gZ2iwq4nB-9n`)V|=cHpAC8Z+r1baM++VXQF>31#O2 z^Cn3PFB~5ZsoV*S5mChA%TDHOdO716%GJ5=p%iKg+Q%YZL!ul`9IkRZ!`0N)8El#M|BJTpPE(6_R}6`@pHfKT2(SxGMvPH9rF2y z<^bNfOJnGH=bWKQ*o@o}0NWHT*@dh+tK4xF33KwPG>5#4xHeO_Uv;Cc!RYa=dpj=y zvvZBt#l>iy=krH=OsyJX?srJv15_^ei7qRzhtK)jZaR;)LK@s-O{bNJ_DZW?b>iDG zi6Pmw3QxMec6v!JF-l`Xlp!lLr1pd{nN`}BsIZwQ>AZ7wYy;mMU`?onlIWJNq#To0 zYGW8H`c({@5jvdta+1;0R!b_0x!eEM)WkZy|EPF7F^$2bub#leCfn=@w`AHco*86f zj)`MrUojyBQsjW%Ni$@-_j!cvt>3aBztHvJT-7ucLV@p7>o#?U?x*Vk?jw8%QQN`{ zJ42f~u-?7)EX?QtbST^p1sX;lIU3zs{MJ5u3T|#&c83ivac`r{BR_x9PXApSx%n1^ zbPg@9WI6%8T41#qq+jXPuT0hzoC$K}|TjbbsWk7`lza5Sqd~y9cz#yv;0%wer#a zEhG@R|2`Ko1qj}U76SK>o;i+mZUS?@{@u70Y-$Y&J9KlUheru?iSi90cKssHu zoo#R1Xn!0X9##Szi+r*t(gT;G8{0FxjkoG7%y(}a+|D^4&{L{%TDG6weMIit2~zIg zF~9cSJ~lBC*qeFP5-5G?6{0rZCsRClq|b2NHjC*1HVu=Tv`1f~iY#rcj(?u(BeNBH zSdB;KDpJktxbWa`*8;TsbgJLsbA9+($i5YB)TsQGr~+Z)fbwxn>;>uD@_;i87&d@m zHlX#XL6L2KL(N0mgi7OAlaQPK;tCb~V~^-|DO7eHiD2U36p%1Gz0dIPEfd%lb8 zj^zsj5C|MGgyI-Ly&>y_dfy?!3mC8mi|J=rK`7m&%L-iHL)*LBFC1S0;O{VFcjWJ=%v%S%{^}PeZ;;&n%NMws z{_FkEHi+dtkv93}N>i&~t#WCrWUXjU)xeB=oJBg--*PW>|L2`)!+hQc<_)XeL0r^Y zEMF>zw<^piji^wi|4mswbcXhU`-T7QpL&z~0<5RFzRE>IvK)1NR;v{d8(2vh)rp}l>!`g+Vd5t7ffx~PvhZS(um zi1ep_g`J|QA#aN!6H)J$T;b<)3?tV|f*)sxBNp#*m?6Z`fp{}Umf}b<8HA(NXsYrH z_cl!3q&=Uz_vdEE2iGS{!1&oi<6!~Ur=qm?r^c>)>vX~Q`9$k->NSrYu4)qq9XG4G zIXU1Egm5W-i)CjrIZgdz#>#!B?5K~aqt|81^&8ALqXD+s&!&{+k-`xFgg+b@c!5Du zD{^JbY+Nu2GHMhro0%Mw$dc7*Y5J5(;+l;&E%cQ4T+_zjJ&NE;A*CNgSaBn-*~X2(A9jKhP{AQR0yMU|G}{pk2~l%AM)+ zmrfPv4?d=AgOe=zQPo^p0M+tEE8BbCk}~{^@@m5~{RfWhSc19(Lsh$jhCNNqcU+-L zNxp4PHQb_0ROyZxghuNMb(}6-^n348rb>WuGvWTnAhuye+W<>L1^eX4A?-wMX$|0t z0J%l0JTeqoRgSbcJ6FX$sgA{nci!@jN=}zAmhp6AuAsUt>u2kwY{%IU68!7p=d(eK z({r5hQ~j1UOE6r1bb`BVHEHCkKT~*K=Kc0MxJ3sGt2t5lM5g)q`i@An+{cSws{e@Ol`QDA|b_?nVke^52M3g(U#QG)l%#4+L{`s3<;qf$m)VD z=uL;eBMbAxGuGG{$Aj6DPp;W86)D|H&))~kyg+eSu-C>#oNWV0A=G@FE5L1!Ha6!t z7*iSfG*2z4OSsZChvb6YY-}HpvhJCsXw8lHOdIsi7t8J#}KJ67{#s?NYXG`5wG1U1JwxA%p5 z-4?6i6R+M1+jrg#t=Gtx4=($el752ZNH|c!L|MT99u%d1okmt%fnf<9#8Huq_{np(34se?p@HiRYa%=F z{>JOvR5TaG;RQkiIIQI=ezsz4cg}OR3|;ss|(OYn!ba9-DJUbhD_Z@x z2S0?(j%?UjpGSVRxTXXTOhA7XO&e7*sQj_@TT)RI6+eQb^tEuejuYi3C;)kAt)@(i z2}f#C&C-GV0$MzyAO)co$I$N|j3XalYjC{CU;!qffVoOj1~@QD(#tWCvxwR z5j|6&4;0mwiJO>rZ|ij+GzTMEHsD(of4qASiGU1- zLKzTsPe^H3Lfsg?ITZDILmrbI^jmOVtbY($Zz2@8_@e;@871S5x7hH`fV7^hLlJ2< zli43tl{8#q9&(u49X()3O++*zMoT3`k)~jC2FA9;<1xPn6yunubxXs?peLe%As#gv zjc0UkLQ%*Wj#Fw_QJWQGudzKYaKtB5gcTEpf<9YN123BsA+KtQs|h7Jp!gEaOn*e_ zuqv8g4aVZB=EH-doAz|3{RBS#m+-jDihI19e#iXU< z$U%@j?cPvA(UO~@Py#GQ8VDA0Xl8>W@iupKL8_vvQPtcrpw}p@Hf2>RE>2YmDNrye zAT8{T_rVqrhnqs)W+Pj^Xf%{fkbkCi9xbN$J=m(W7D!D<@fa$S&A%NjL4QkH1jv+? zKoX2Jvwqd9wFDC3m<2a+nyJiWB6;=tqH0`#DpJ8oJOH9zsE1fgvtTI2uda&4qZY3g zDY3;8KIjqb0i$W5WQbB+OE$8eZ1ATmkXRMkBoT>#@;=@W6nS8k$2e31Hh(bPAI2J* zljALFw4aYs0N+PCC@hK}s9< z1cDK10DU!Y6SS+5Y>&Yc_WIRmngNoLLzhPfdnyqNub3 zFsFIS{Op6(0xOH=bv`L`2!BP3X%wZ4R+#5}4Mn?j7hri>P8azWyQ0e${zTB;HJ=gZ z$~2?bA)XiMIyp&57P%UcUfyb#9gHkk_R5SPTNo1?)0Zb@t{3TbX`%>cGGmu_GJ4Fy zbF<_}fXpG=nGCzW&gv57oeueJLEnx+#;)(RP+Tb%1@uR)qN`vxGk;gM2tc1KUKZ)? z`q60&y;naC;(7Wg*ob9+!{~2f+4=?G&XK<{BwjTnT4Wo~=!m!Sa=}ZCo08qUASXFw zTP9#LtgbrxwConK<()jQqfCp)jjCoS26Tc#o_w zrqd`>whaUz`6QierGgRJ5OBR(T;QsiI?i+_NRbFJc4*)HJl3UHDK z@m(z2@`(;e9?G-2kP&|Oav%`FBoJ4~Wr0# zxojHsl`W+-$~FuhV&!p=@FP<$6)@=#tB9Q{?4{6QxK%3KN(9qfC(zitxPefc)eO%N z&Y^(K($O#w)_+$=!{L!_ByAmVi~uVOxqdiswlRiiFb#MlQ#6hG8QIAPrhYh7=4n1i z?2lzQnGC0n3Lq8*G6PVdl|ln#TX`=@g%Fj2)lOc}Q4z2Ws&-NWX2P2skkQ2rFwJ#B zk>XNyg1(UumjbRovr~q2xwiwR7|3%$WTq_8pql^#jDNoa!E@*WG)PC#tF|hNMmgy& zN=GGNPM(fNb@veT1saW;h?AJPIx2-@@X{%}_rgIL_&69-nNF2~!XdZ=(HJ0eKq_@K z7D$}q8E!@Tc2kQOX~F0T1WlvCAbqHgD#5T}_<^eg+c%NeHyrG% zHmewACrwfoNE#2yHKe*3L;+*B!30voQtVq1g4NH6x?qXa7BXq0*wlB zv%9Y{ObXNrjfx7nk%AlX1za&aGH5i?I7gY?1jT8*F|BZ~RpVLV;`cGxB4f$qA>*!6 zE}xOzNFdZDI+_gn=ZQ2LRl$`A<6wztP{M*89IO^73(kdYJ_wrvu1f$Ku9>N>!NqP{ zgn#3sqp21bSBZ-P7~EGKonXczz~+WB&d0O5r~9S>7g$wo;RVAoAyWj)M(b!gSkeGB zSenkmcttqgGmJJXGbTYf#H&n4wGiS0?4cWF0mV#%VvIpC7AVF**bP_5>gcvL$rLKI zl$eNe9nC@%DuP&7=x8=5<3ZWDbdi#6jelei)Pa*Dp;WrK@%TMu!vkp!jQpPYk2m~s zzS_TMF#+e8{o1R>duN=~NHBmnz4Xe0x1fv z-wK$efT`r%G@5GERGWh|D6XVsF@N5CsbMj>f~jB`eybw4oB?nnTo)jU(+a=~TgX6p zX7Lb_>0`NC2S>^~>2~A|v01-71ZUnD&TO9T= zDAH1h$ZQ?00LATKLmjj{7;QAYj#SWGR>94M3aTd+Wa;AOSVUU~G%Z|D=0KOvWink* zbaUXzNfg+F!DZtp{Sz`m=Z@#M;pP3N@IF%grrOa#~0~n6U1O0RKwyl3f?Gp z88--Q?Tq5zO!tF7d`G+KTOjd`+}MqZePc#`?x<#u=)~wHmrUG#`FVv$s9=JU^tiX z=D`vP4Tgshco?kVga*?)d+|!W;DTN>MTB=Gtm0mp8`d;JGac59 zUiREZ;90O{_p+ys@XjGL__F}kLW0NeV(Mmomk=79ucd?rWLg&uT_L52NvpOFCz5aPmH$^7=Myx2IIJYA->7mR_=Ld-jX(<%Kpbj|8w(>jF?fi zZ6dm7aevYJ^%o}>w{iBZ(`RJuia$O2Y~+}}__MdK)HeRG<;TryNB{D~0?(9JFMoVq zkDeMm$6k5QBL`QEyRUEKZwK;y#P*Io;^EG>T*Xs%^l7;;byw|-_zQpP9Mkynz+FpT zXoS-bKp&bjG94>oMrKBoG+_VcSg6|WVI{eED1t@Lx} z?)`UC&U;^Zcfj=hE3QtuC->MH_R^;fQ{TAJw4m$p-=CW@r}{Tkc*U@VC9iCMLT(6- z*|urSuXmO;G+$}mbffUSym&HQn|FQ5^nWK8wC_Cf)3OoU9-ffKZ>&G~!^N((U!2%5 z^sVpjbnX7M;gz>OKGtw`&<`1_ivqR(apmQw7ca>@QeLP0qV|PX-a0YnchR#=7j|5K zdE&#ldQR8YJ0^ZTYi#}SQti&&llKolSDk)i%l-PbKeL}-R{WJ;T>3)ov*Odxib53r`ZM);qy85TS`l@a|+W*tw!xcyOe)^f`#;T0x)_!-i zbjFb%*MHL@mHuVnj{{z6Y)^Xfsq24xYv-38+u9E;ec`Kb3y*%eUTC>I_J6%~{@m1k zp2LSWOnL9M+)ZZ>H@)}QYp*At|LMZwtWR7WpL}urycWKabNtMIUU}+Tl_q}XEB^Ak zwMk2l9kNl>%%~stS_~EoYZK|6MpzpOjAz_B0^`}Yn)KCtSnUMHb2CicoT&=I>HlrXIOl)0VuI9Q zb0n%No|UT7WDsKHEx*xv>DE>}Sf)o{4$>uu@f&9AeX$k_h`A-hxEZ9a>6n}>!@#0a%Ezz)2 z+!79}#R*L<)>MD7`CqAGk1r7n1&U*8G*ApOOf)9wmQeYxNeD*#p+um^jXVMXPp`HW!a8IR_>ZX&j=r#*i-G>T-2w1;h`U9Kl$lzDkk5bo6gs!^V))g z4^_&Do zyM?`v-Nx=>ceB4>A7uBi53_sON7?=C0rnvKID3RW%0A5=XP;qDvd^-wvS->KQP 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

mTPpkTatQ!C(CKbZPMI8x)673%G~zjiS5Vto1V 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

R^wd~ibXfvW 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

    B`1k^rt}Q#2YF9|^28Y#!BQ%3d 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 Date: Sat, 10 Jul 2021 19:38:28 +0300 Subject: [PATCH 151/831] relx in rebar3 3.16.1 needs rel_vsn, let it find one here --- rel/vars.config | 2 ++ rel/vars/dev_vars.config.src | 2 ++ 2 files changed, 4 insertions(+) diff --git a/rel/vars.config b/rel/vars.config index d40e8b179..6adbe65a8 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -1,5 +1,7 @@ %% -*- erlang -*- +{rel_vsn, "3.0"}. + %% Platform-specific installation paths {platform_bin_dir, "./bin"}. {platform_data_dir, "./data"}. diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index 563b291d6..6dc2ad8aa 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -1,6 +1,8 @@ %% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ts=4 sw=4 et +{rel_vsn, "3.0"}. + {devrel, true}. %% Platform-specific installation paths From 1ec5284f5cdc49612a8ab88ef84783b55669c086 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 11 Jul 2021 20:37:49 +0300 Subject: [PATCH 152/831] start, and silence, lager before other apps in stats eunit setup --- apps/riak_cs/src/riak_cs_stats.erl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_stats.erl b/apps/riak_cs/src/riak_cs_stats.erl index 7d6e56484..959db8b31 100644 --- a/apps/riak_cs/src/riak_cs_stats.erl +++ b/apps/riak_cs/src/riak_cs_stats.erl @@ -331,10 +331,11 @@ metric_to_atom(Key, Suffix) -> -include_lib("eunit/include/eunit.hrl"). stats_test_() -> - Apps = [setup, compiler, syntax_tools, exometer_core, lager], + Apps = [setup, compiler, syntax_tools, exometer_core], {setup, fun() -> - lager:update_primary_config(#{level => none}), + application:ensure_all_started(lager), + lager:set_loglevel(lager_console_backend, alert), [application:ensure_all_started(App) || App <- Apps], ok = init() end, From 2d91f08c77fffa26490082f966007dd1c0f88643 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 11 Jul 2021 20:39:35 +0300 Subject: [PATCH 153/831] only compile test-specific riak_cs_get_fsm:init when TEST is defined --- apps/riak_cs/src/riak_cs_get_fsm.erl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl index 852505a9c..449022c64 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm.erl @@ -125,6 +125,7 @@ chunk(Pid, ChunkSeq, ChunkValue) -> %% gen_fsm callbacks %% ==================================================================== +-ifndef(TEST). init([Bucket, Key, Caller, RcPid, FetchConcurrency, BufferFactor]) when is_binary(Bucket), is_binary(Key), is_pid(Caller), is_pid(RcPid), @@ -154,7 +155,8 @@ init([Bucket, Key, Caller, RcPid, FetchConcurrency, BufferFactor]) riak_client=RcPid, buffer_factor=BufferFactor, fetch_concurrency=FetchConcurrency}, - {ok, prepare, State, 0}; + {ok, prepare, State, 0}. +-else. init([test, Bucket, Key, Caller, ContentLength, BlockSize, FetchConcurrency, BufferFactor]) -> {ok, prepare, State1, 0} = init([Bucket, Key, Caller, self(), @@ -177,6 +179,7 @@ init([test, Bucket, Key, Caller, ContentLength, BlockSize, FetchConcurrency, {ok, waiting_value, State1#state{free_readers=RPs, manifest=Manifest, test=true}}. +-endif. prepare(timeout, State) -> NewState = prepare(State), From 274d77cbbf7781bfb017150dd385f4ea3822f441 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 11 Jul 2021 20:41:04 +0300 Subject: [PATCH 154/831] add specs to riak_cs_config:get_*_timeout funs, to complete fcd6b0c49 --- apps/riak_cs/src/riak_cs_config.erl | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/apps/riak_cs/src/riak_cs_config.erl b/apps/riak_cs/src/riak_cs_config.erl index 728000cbb..9e299ddf4 100644 --- a/apps/riak_cs/src/riak_cs_config.erl +++ b/apps/riak_cs/src/riak_cs_config.erl @@ -446,57 +446,83 @@ ping_timeout() -> local_get_block_timeout() -> get_env(riak_cs, local_get_block_timeout, timer:seconds(5)). +-spec get_user_timeout() -> non_neg_integer(). get_user_timeout() -> get_env(riak_cs, get_user_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec get_bucket_timeout() -> non_neg_integer(). get_bucket_timeout() -> get_env(riak_cs, get_bucket_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec get_manifest_timeout() -> non_neg_integer(). get_manifest_timeout() -> get_env(riak_cs, get_manifest_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec get_block_timeout() -> non_neg_integer(). get_block_timeout() -> get_env(riak_cs, get_block_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec proxy_get_block_timeout() -> non_neg_integer(). proxy_get_block_timeout() -> get_env(riak_cs, proxy_get_block_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec get_access_timeout() -> non_neg_integer(). get_access_timeout() -> get_env(riak_cs, get_access_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec get_gckey_timeout() -> non_neg_integer(). get_gckey_timeout() -> get_env(riak_cs, get_gckey_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec put_user_timeout() -> non_neg_integer(). put_user_timeout() -> get_env(riak_cs, put_user_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec put_manifest_timeout() -> non_neg_integer(). put_manifest_timeout() -> get_env(riak_cs, put_manifest_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec put_block_timeout() -> non_neg_integer(). put_block_timeout() -> get_env(riak_cs, put_block_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec put_access_timeout() -> non_neg_integer(). put_access_timeout() -> get_env(riak_cs, put_access_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec put_gckey_timeout() -> non_neg_integer(). put_gckey_timeout() -> get_env(riak_cs, put_gckey_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec put_user_usage_timeout() -> non_neg_integer(). put_user_usage_timeout() -> get_env(riak_cs, put_user_usage_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec delete_manifest_timeout() -> non_neg_integer(). delete_manifest_timeout() -> get_env(riak_cs, delete_manifest_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec delete_block_timeout() -> non_neg_integer(). delete_block_timeout() -> get_env(riak_cs, delete_block_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec delete_gckey_timeout() -> non_neg_integer(). delete_gckey_timeout() -> get_env(riak_cs, delete_gckey_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec list_keys_list_objects_timeout() -> non_neg_integer(). list_keys_list_objects_timeout() -> get_env(riak_cs, list_keys_list_objects_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec list_keys_list_users_timeout() -> non_neg_integer(). list_keys_list_users_timeout() -> get_env(riak_cs, list_keys_list_users_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec list_keys_list_buckets_timeout() -> non_neg_integer(). list_keys_list_buckets_timeout() -> get_env(riak_cs, list_keys_list_buckets_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec storage_calc_timeout() -> non_neg_integer(). storage_calc_timeout() -> get_env(riak_cs, storage_calc_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec list_objects_timeout() -> non_neg_integer(). list_objects_timeout() -> get_env(riak_cs, list_objects_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec fold_objects_timeout() -> non_neg_integer(). fold_objects_timeout() -> get_env(riak_cs, fold_objects_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec get_index_range_gckeys_timeout() -> non_neg_integer(). get_index_range_gckeys_timeout() -> get_env(riak_cs, get_index_range_gckeys_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec get_index_range_gckeys_call_timeout() -> non_neg_integer(). get_index_range_gckeys_call_timeout() -> get_env(riak_cs, get_index_range_gckeys_call_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec get_index_list_multipart_uploads_timeout() -> non_neg_integer(). get_index_list_multipart_uploads_timeout() -> get_env(riak_cs, get_index_list_multipart_uploads_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). +-spec cluster_id_timeout() -> non_neg_integer(). cluster_id_timeout() -> get_env(riak_cs, cluster_id_timeout, get_env(riak_cs, riakc_timeouts, ?DEFAULT_RIAK_TIMEOUT)). From 81193eb1c71b3931cea7f6e20512144ca89fa9b7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 11 Jul 2021 20:42:28 +0300 Subject: [PATCH 155/831] wrong ExpectedSignature in riak_cs_s3_auth:example_delete test? --- apps/riak_cs/src/riak_cs_s3_auth.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/riak_cs/src/riak_cs_s3_auth.erl b/apps/riak_cs/src/riak_cs_s3_auth.erl index 0f1e3cb84..586edfbc4 100644 --- a/apps/riak_cs/src/riak_cs_s3_auth.erl +++ b/apps/riak_cs/src/riak_cs_s3_auth.erl @@ -489,7 +489,7 @@ example_delete() -> {"Date", "Tue, 27 Mar 2007 21:20:27 +0000"}, {"x-amz-date", "Tue, 27 Mar 2007 21:20:26 +0000"}]), RD = wrq:create(Method, Version, Path, Headers), - ExpectedSignature = "k3nL7gH3+PadhTEVn5Ip83xlYzk=", + ExpectedSignature = "amG66fXy2/BJ/HvrN2jUKINWfrE=", CalculatedSignature = calculate_signature_v2(KeyData, RD), test_fun("example delete test", ExpectedSignature, CalculatedSignature). From e13749c3ffecc1f5e37016196e3e68d999b0b1a0 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 11 Jul 2021 20:57:57 +0300 Subject: [PATCH 156/831] more Makefile cleanups --- Makefile | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/Makefile b/Makefile index c3ab6f606..fab5da102 100644 --- a/Makefile +++ b/Makefile @@ -89,16 +89,6 @@ DIALYZER_APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools crypto in PLT ?= $(HOME)/.riak-cs_dialyzer_plt -test-erlang: compile-client-test - @$(REBAR) client_test_run - -## to fix: -compile-client-test: all - @$(REBAR) client_test_compile - -clean-client-test: - @$(REBAR) client_test_clean - ## Create a dependency graph png depgraph: graphviz @echo "Note: If you have nothing in deps/ this might be boring" @@ -110,7 +100,7 @@ graphviz: pulse: all @rm -rf $(BASE_DIR)/.eunit - @$(REBAR) -D PULSE eunit skip_deps=true suites=$(PULSE_TESTS) + @ERLOPTS="-D PULSE" $(REBAR) eunit --module=$(PULSE_TESTS) ## ## Packaging targets From 4ec57bb8be69ee8c959ea692cdee359391db90ab Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 12 Jul 2021 19:29:44 +0300 Subject: [PATCH 157/831] fix riak_cs_s3_policy:parse_arns/1 (specs, error path, eunit test) --- apps/riak_cs/src/riak_cs_s3_policy.erl | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_s3_policy.erl b/apps/riak_cs/src/riak_cs_s3_policy.erl index a9215dd0c..1f45b4c17 100644 --- a/apps/riak_cs/src/riak_cs_s3_policy.erl +++ b/apps/riak_cs/src/riak_cs_s3_policy.erl @@ -720,7 +720,7 @@ print_principal(Principals) when is_list(Principals) -> PrintFun = fun(Principal) -> print_principal(Principal) end, lists:map(PrintFun, Principals). --spec parse_arns(binary()|[binary()]) -> {ok, arn()} | {error, bad_arn}. +-spec parse_arns(binary()|[binary()]) -> {ok, [arn()]} | {error, bad_arn}. parse_arns(<<"*">>) -> {ok, '*'}; parse_arns(Bin) when is_binary(Bin) -> Str = binary_to_list(Bin), @@ -734,7 +734,7 @@ parse_arns(List) when is_list(List) -> {ok, ARN} -> {ok, ARN ++ Acc0}; {error, bad_arn} -> {error, bad_arn} end; - ({error, bad_arn}, _) -> {error, bad_arn} + (_, {error, bad_arn}) -> {error, bad_arn} end, case lists:foldl(AccFun, {ok, []}, List) of {ok, ARNs} -> {ok, lists:reverse(ARNs)}; @@ -902,4 +902,20 @@ statement_eq(LHS, RHS) -> andalso (LHS#statement.condition_block =:= RHS#statement.condition_block). +valid_arn_parse_test() -> + A1 = <<"arn:aws:s3::123456789012:user/Development/product_1234/*">>, + E1 = ?ARN{provider = aws, + service = s3, + region = [], + id = <<"123456789012">>, + path = "user/Development/product_1234/*"}, + AAEE = [{{ok, [E1]}, A1}, + {{ok, [E1]}, [A1]}, + {{ok, [E1, E1]}, [A1, A1]} + ], + lists:foreach(fun({E, A}) -> ?assertEqual(E, parse_arns(A)) end, AAEE). + +invalid_arn_parse_test() -> + ?assertEqual({error, bad_arn}, parse_arns([<<"arn:aws:s2::123456789012:user/Development/product_1234/*">>])). + -endif. From 045182a8c9a588c85d557f8860fcc76f549dcb9d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Jul 2021 00:13:03 +0300 Subject: [PATCH 158/831] rm -rf rel dir before making rel target --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index fab5da102..83601958e 100644 --- a/Makefile +++ b/Makefile @@ -33,6 +33,7 @@ distclean: clean devclean relclean ## Release targets ## rel: compile + rm -rf _build/rel/rel/riak-cs $(REBAR) as rel release cp -a _build/rel/rel/riak-cs rel/ From 27cd1f32b8d29f5675b80aaac5a95d07cc2c7d65 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Jul 2021 00:16:54 +0300 Subject: [PATCH 159/831] use seq instead of overengineering with awk --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 83601958e..510d9f615 100644 --- a/Makefile +++ b/Makefile @@ -64,7 +64,7 @@ relclean: DEVNODES ?= 8 # 'seq' is not available on all *BSD, so using an alternate in awk -SEQ = $(shell awk 'BEGIN { for (i = 1; i < '$(DEVNODES)'; i++) printf("%i ", i); print i ;exit(0);}') +SEQ = $(shell seq $(DEVNODES)) $(eval stagedevrel : $(foreach n,$(SEQ),stagedev$(n))) $(eval devrel : $(foreach n,$(SEQ),dev$(n))) From 37abf3c17a0c79e9b76e5148f6981ead475fdd24 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Jul 2021 00:17:54 +0300 Subject: [PATCH 160/831] new relx seems to require full paths when copying files, sometimes --- rebar.config | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/rebar.config b/rebar.config index d47987eff..c846c51c7 100644 --- a/rebar.config +++ b/rebar.config @@ -45,18 +45,18 @@ , {template, "rel/files/riak-cs-admin", "bin/riak-cs-admin"} , {template, "rel/files/riak-cs-debug", "bin/riak-cs-debug"} , {template, "rel/files/riak-cs-supercluster", "bin/riak-cs-supercluster"} - , {copy, "rel/files/cert.pem", "etc"} - , {copy, "rel/files/key.pem", "etc"} - , {copy, "rel/files/app_epath.sh", "lib"} + , {copy, "rel/files/cert.pem", "etc/cert.pem"} + , {copy, "rel/files/key.pem", "etc/key.pem"} + , {copy, "rel/files/app_epath.sh", "lib/app_epath.sh"} , {mkdir, "priv/tools/internal"} , {mkdir, "log"} - , {copy, "rel/tools/repair_gc_bucket.erl", "priv/tools"} - , {copy, "rel/tools/internal/README.md", "priv/tools/internal"} - , {copy, "rel/tools/internal/block_audit.erl", "priv/tools/internal"} - , {copy, "rel/tools/internal/ensure_orphan_blocks.erl", "priv/tools/internal"} - , {copy, "rel/tools/internal/offline_delete.erl", "priv/tools/internal"} - , {copy, "rel/tools/internal/riak_cs_inspector.erl", "priv/tools/internal"} - , {copy, "rel/tools/internal/select_gc_bucket.erl", "priv/tools/internal"} + , {copy, "rel/tools/repair_gc_bucket.erl", "priv/tools/repair_gc_bucket.erl"} + , {copy, "rel/tools/internal/README.md", "priv/tools/internal/README.md"} + , {copy, "rel/tools/internal/block_audit.erl", "priv/tools/internal/block_audit.erl"} + , {copy, "rel/tools/internal/ensure_orphan_blocks.erl", "priv/tools/internal/ensure_orphan_blocks.erl"} + , {copy, "rel/tools/internal/offline_delete.erl", "priv/tools/internal/offline_delete.erl"} + , {copy, "rel/tools/internal/riak_cs_inspector.erl", "priv/tools/internal/riak_cs_inspector.erl"} + , {copy, "rel/tools/internal/select_gc_bucket.erl", "priv/tools/internal/select_gc_bucket.erl"} ] } , {generate_start_script, true} From e4aecbe48a6c4fe158b3c0df3658d9068ab26f03 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Jul 2021 17:37:49 +0300 Subject: [PATCH 161/831] update riak_repl_pb_api sha to tag riak_kv-3.0.6 --- rebar.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.lock b/rebar.lock index 0095b4ef2..b8a16397d 100644 --- a/rebar.lock +++ b/rebar.lock @@ -45,7 +45,7 @@ 1}, {<<"riak_repl_pb_api">>, {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", - {ref,"c85a3db7272e8cf8fa3147fa744cea5d2dd33029"}}, + {ref,"39bbd1af655b1855e1af32b2624417750f9e7bdd"}}, 0}, {<<"riakc">>, {git,"git://github.com/basho/riak-erlang-client", From 6db1fe47efd821138910570c2dae5371034fb408 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Jul 2021 17:54:40 +0300 Subject: [PATCH 162/831] dialyzer-clean at last (still with 3 exceptions) --- apps/riak_cs/src/riak_cs_block_server.erl | 9 ++++++++- apps/riak_cs/src/riak_cs_pbc.erl | 2 ++ dialyzer.ignore-warnings | 24 ----------------------- 3 files changed, 10 insertions(+), 25 deletions(-) delete mode 100644 dialyzer.ignore-warnings diff --git a/apps/riak_cs/src/riak_cs_block_server.erl b/apps/riak_cs/src/riak_cs_block_server.erl index 87e680cc9..06409d0bc 100644 --- a/apps/riak_cs/src/riak_cs_block_server.erl +++ b/apps/riak_cs/src/riak_cs_block_server.erl @@ -310,6 +310,11 @@ try_local_get(RcPid, FullBucket, FullKey, GetOptions1, GetOptions2, RetryFun({failure, [{local_one, Other}|ErrorReasons]}) end. + +%% having spent three days trying to deal with this warning in a +%% non-violent manner: +-dialyzer([{no_match, handle_local_notfound/10}]). + handle_local_notfound(RcPid, FullBucket, FullKey, GetOptions2, ProceedFun, RetryFun, ErrorReasons, UseProxyGet, ProxyActive, ClusterID) -> @@ -357,6 +362,8 @@ get_block_local(RcPid, FullBucket, FullKey, GetOptions, Timeout, StatsKey) -> Else end. +-dialyzer([{no_match, get_block_remote/6}]). + -spec get_block_remote(riak_client(), binary(), binary(), binary(), get_options(), riak_cs_stats:key()) -> {ok, binary()} | {error, term()}. @@ -551,7 +558,7 @@ do_put_block(FullBucket, FullKey, VClock, Value, MD, RcPid, StatsKey, FailFun) - Else end. --spec sleep_retries(integer()) -> 'ok'. +-spec sleep_retries(non_neg_integer()) -> 'ok'. sleep_retries(N) -> timer:sleep(num_retries_to_sleep_millis(N)). diff --git a/apps/riak_cs/src/riak_cs_pbc.erl b/apps/riak_cs/src/riak_cs_pbc.erl index 4ab0bb36b..e94cd3489 100644 --- a/apps/riak_cs/src/riak_cs_pbc.erl +++ b/apps/riak_cs/src/riak_cs_pbc.erl @@ -178,6 +178,8 @@ get_index_range(PbcPid, Bucket, Index, StartKey, EndKey, Opts, StatsKey) -> riakc_pb_socket:get_index_range(PbcPid, Bucket, Index, StartKey, EndKey, Opts)). +-dialyzer({[no_match], get_cluster_id/1}). + %% @doc Attempt to determine the cluster id -spec get_cluster_id(pid()) -> undefined | binary(). get_cluster_id(Pbc) -> diff --git a/dialyzer.ignore-warnings b/dialyzer.ignore-warnings deleted file mode 100644 index 776dcf372..000000000 --- a/dialyzer.ignore-warnings +++ /dev/null @@ -1,24 +0,0 @@ -# Errors -riak_cs_block_server.erl:324: The pattern Success = {'ok', _} can never match the type {'error',_} -riak_cs_block_server.erl:361: The pattern {'ok', RiakObject} can never match the type {'error',_} -riak_cs_pbc.erl:58: The variable _ can never match since previous clauses completely covered the type 'pong' -riak_cs_pbc.erl:175: The pattern {'ok', ClusterID} can never match the type {'error',_} -# Warnings -Unknown functions: - app_helper:get_prop_or_env/3 - app_helper:get_prop_or_env/4 - dtrace:init/0 - riak:stop/1 - riak_core_bucket:get_bucket/1 - riak_cs_dummy_reader:get_manifest/1 - riak_cs_dummy_reader:start_link/1 - riak_object:bucket/1 - riak_object:get_contents/1 - riak_object:key/1 - riakc_pb_socket_fake:start_link/0 -Unknown types: - riak_kv_backend:fold_buckets_fun/0 - riak_kv_backend:fold_keys_fun/0 - riak_kv_backend:fold_objects_fun/0 - riak_object:bucket/0 - riak_object:key/0 From af98e350f20165876d63bf600be6e667620790d4 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Jul 2021 17:55:36 +0300 Subject: [PATCH 163/831] always expect riak_repl_pb_api to have get_clusterid/2 used not to be the case with oss builds --- apps/riak_cs/src/riak_cs_pbc.erl | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_pbc.erl b/apps/riak_cs/src/riak_cs_pbc.erl index e94cd3489..b0c54d018 100644 --- a/apps/riak_cs/src/riak_cs_pbc.erl +++ b/apps/riak_cs/src/riak_cs_pbc.erl @@ -190,18 +190,10 @@ get_cluster_id(Pbc) -> {error, _} -> undefined end. +-spec get_cluster_id_sans_stats(pid()) -> {ok, binary()} | {error, term()}. get_cluster_id_sans_stats(Pbc) -> Timeout = riak_cs_config:cluster_id_timeout(), - try - riak_repl_pb_api:get_clusterid(Pbc, Timeout) - catch C:R -> - lager:warning("failed to get cluster_id from riak: ~p:~p", [C, R]), - %% Disable `proxy_get' so we do not repeatedly have to - %% handle this same exception. This would happen if an OSS - %% install has `proxy_get' enabled. - application:set_env(riak_cs, proxy_get, disabled), - {error, {C, R}} - end. + riak_repl_pb_api:get_clusterid(Pbc, Timeout). %% @doc don't reuse return value -spec check_connection_status(pid(), term()) -> any(). From e8df3cd85e9d5c0fc5ef21b92885b1f63563ae74 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Jul 2021 19:35:37 +0300 Subject: [PATCH 164/831] globally update copyright notice --- apps/riak_cs/include/list_objects.hrl | 3 +- apps/riak_cs/include/oos_api.hrl | 3 +- apps/riak_cs/include/riak_cs.hrl | 3 +- apps/riak_cs/include/riak_cs_api.hrl | 3 +- apps/riak_cs/include/riak_cs_gc.hrl | 3 +- apps/riak_cs/include/rts.hrl | 3 +- apps/riak_cs/include/s3_api.hrl | 3 +- apps/riak_cs/src/base64url.erl | 3 +- apps/riak_cs/src/exprec.erl | 21 ++++++++ apps/riak_cs/src/riak_cs.app.src | 21 ++++++++ apps/riak_cs/src/riak_cs_access.erl | 3 +- apps/riak_cs/src/riak_cs_access_archiver.erl | 3 +- .../src/riak_cs_access_archiver_manager.erl | 3 +- apps/riak_cs/src/riak_cs_access_console.erl | 3 +- .../src/riak_cs_access_log_handler.erl | 3 +- apps/riak_cs/src/riak_cs_acl.erl | 3 +- apps/riak_cs/src/riak_cs_acl_utils.erl | 3 +- apps/riak_cs/src/riak_cs_api.erl | 3 +- apps/riak_cs/src/riak_cs_app.erl | 3 +- apps/riak_cs/src/riak_cs_auth.erl | 5 +- apps/riak_cs/src/riak_cs_block_server.erl | 3 +- apps/riak_cs/src/riak_cs_bucket.erl | 3 +- apps/riak_cs/src/riak_cs_config.erl | 3 +- apps/riak_cs/src/riak_cs_console.erl | 3 +- apps/riak_cs/src/riak_cs_copy_object.erl | 3 +- apps/riak_cs/src/riak_cs_delete_fsm.erl | 3 +- apps/riak_cs/src/riak_cs_delete_fsm_sup.erl | 3 +- apps/riak_cs/src/riak_cs_diags.erl | 21 ++++++++ apps/riak_cs/src/riak_cs_dtrace.erl | 3 +- apps/riak_cs/src/riak_cs_gc.erl | 3 +- apps/riak_cs/src/riak_cs_gc_batch.erl | 3 +- apps/riak_cs/src/riak_cs_gc_console.erl | 3 +- apps/riak_cs/src/riak_cs_gc_key_list.erl | 3 +- apps/riak_cs/src/riak_cs_gc_manager.erl | 3 +- apps/riak_cs/src/riak_cs_gc_worker.erl | 3 +- apps/riak_cs/src/riak_cs_get_fsm.erl | 3 +- apps/riak_cs/src/riak_cs_get_fsm_sup.erl | 3 +- apps/riak_cs/src/riak_cs_json.erl | 3 +- apps/riak_cs/src/riak_cs_keystone_auth.erl | 3 +- apps/riak_cs/src/riak_cs_kv_multi_backend.erl | 3 +- apps/riak_cs/src/riak_cs_lfs_utils.erl | 3 +- apps/riak_cs/src/riak_cs_list_objects.erl | 3 +- .../src/riak_cs_list_objects_ets_cache.erl | 3 +- .../riak_cs_list_objects_ets_cache_sup.erl | 3 +- apps/riak_cs/src/riak_cs_list_objects_fsm.erl | 3 +- .../src/riak_cs_list_objects_fsm_v2.erl | 3 +- .../src/riak_cs_list_objects_utils.erl | 3 +- apps/riak_cs/src/riak_cs_manifest.erl | 3 +- apps/riak_cs/src/riak_cs_manifest_fsm.erl | 3 +- .../src/riak_cs_manifest_resolution.erl | 3 +- apps/riak_cs/src/riak_cs_manifest_utils.erl | 49 ++++++++++--------- apps/riak_cs/src/riak_cs_mb_helper.erl | 3 +- apps/riak_cs/src/riak_cs_mp_utils.erl | 3 +- apps/riak_cs/src/riak_cs_oos_response.erl | 3 +- apps/riak_cs/src/riak_cs_oos_rewrite.erl | 3 +- apps/riak_cs/src/riak_cs_oos_utils.erl | 3 +- apps/riak_cs/src/riak_cs_pbc.erl | 3 +- apps/riak_cs/src/riak_cs_policy.erl | 3 +- apps/riak_cs/src/riak_cs_put_fsm.erl | 3 +- apps/riak_cs/src/riak_cs_put_fsm_sup.erl | 3 +- apps/riak_cs/src/riak_cs_quota.erl | 3 +- apps/riak_cs/src/riak_cs_quota_sup.erl | 3 +- apps/riak_cs/src/riak_cs_riak_client.erl | 3 +- .../riak_cs/src/riak_cs_riakc_pool_worker.erl | 3 +- apps/riak_cs/src/riak_cs_s3_auth.erl | 3 +- apps/riak_cs/src/riak_cs_s3_passthru_auth.erl | 3 +- apps/riak_cs/src/riak_cs_s3_policy.erl | 3 +- apps/riak_cs/src/riak_cs_s3_response.erl | 3 +- apps/riak_cs/src/riak_cs_s3_rewrite.erl | 3 +- .../riak_cs/src/riak_cs_s3_rewrite_legacy.erl | 3 +- apps/riak_cs/src/riak_cs_simple_bwlimiter.erl | 3 +- apps/riak_cs/src/riak_cs_simple_quota.erl | 3 +- .../riak_cs/src/riak_cs_stanchion_console.erl | 3 +- apps/riak_cs/src/riak_cs_stats.erl | 3 +- apps/riak_cs/src/riak_cs_storage.erl | 3 +- apps/riak_cs/src/riak_cs_storage_console.erl | 3 +- apps/riak_cs/src/riak_cs_storage_d.erl | 3 +- apps/riak_cs/src/riak_cs_storage_mr.erl | 3 +- apps/riak_cs/src/riak_cs_sup.erl | 3 +- apps/riak_cs/src/riak_cs_user.erl | 3 +- apps/riak_cs/src/riak_cs_utils.erl | 3 +- apps/riak_cs/src/riak_cs_web.erl | 3 +- apps/riak_cs/src/riak_cs_wm_bucket.erl | 3 +- apps/riak_cs/src/riak_cs_wm_bucket_acl.erl | 3 +- apps/riak_cs/src/riak_cs_wm_bucket_delete.erl | 3 +- .../src/riak_cs_wm_bucket_location.erl | 7 ++- apps/riak_cs/src/riak_cs_wm_bucket_policy.erl | 5 +- .../src/riak_cs_wm_bucket_request_payment.erl | 5 +- .../riak_cs/src/riak_cs_wm_bucket_uploads.erl | 3 +- .../src/riak_cs_wm_bucket_versioning.erl | 9 ++-- apps/riak_cs/src/riak_cs_wm_buckets.erl | 3 +- apps/riak_cs/src/riak_cs_wm_common.erl | 3 +- apps/riak_cs/src/riak_cs_wm_error_handler.erl | 3 +- .../src/riak_cs_wm_not_implemented.erl | 3 +- apps/riak_cs/src/riak_cs_wm_object.erl | 3 +- apps/riak_cs/src/riak_cs_wm_object_acl.erl | 3 +- apps/riak_cs/src/riak_cs_wm_object_upload.erl | 3 +- .../src/riak_cs_wm_object_upload_part.erl | 5 +- apps/riak_cs/src/riak_cs_wm_objects.erl | 3 +- apps/riak_cs/src/riak_cs_wm_ping.erl | 3 +- apps/riak_cs/src/riak_cs_wm_stats.erl | 3 +- apps/riak_cs/src/riak_cs_wm_usage.erl | 3 +- apps/riak_cs/src/riak_cs_wm_user.erl | 3 +- apps/riak_cs/src/riak_cs_wm_users.erl | 3 +- apps/riak_cs/src/riak_cs_wm_utils.erl | 3 +- apps/riak_cs/src/riak_cs_xml.erl | 3 +- .../src/riak_cs_yessir_riak_client.erl | 3 +- apps/riak_cs/src/rts.erl | 3 +- apps/riak_cs/src/table.erl | 28 +++++++++-- apps/riak_cs/src/twop_set.erl | 3 +- apps/riak_cs/src/velvet.erl | 3 +- apps/riak_cs/src/velvet_auth.erl | 3 +- apps/riak_cs/test/cs782_regression_test.erl | 3 +- apps/riak_cs/test/riak_cs_acl_utils_eqc.erl | 3 +- .../riak_cs/test/riak_cs_bucket_name_test.erl | 3 +- apps/riak_cs/test/riak_cs_bucket_test.erl | 3 +- apps/riak_cs/test/riak_cs_config_test.erl | 23 ++++++++- apps/riak_cs/test/riak_cs_delete_deadlock.erl | 11 +++-- apps/riak_cs/test/riak_cs_dummy_reader.erl | 3 +- ...k_cs_dummy_riak_client_list_objects_v2.erl | 3 +- apps/riak_cs/test/riak_cs_gc_manager_eqc.erl | 3 +- .../test/riak_cs_gc_single_run_eqc.erl | 3 +- apps/riak_cs/test/riak_cs_gen.erl | 3 +- apps/riak_cs/test/riak_cs_get_fsm_eqc.erl | 3 +- apps/riak_cs/test/riak_cs_get_fsm_pulse.erl | 3 +- apps/riak_cs/test/riak_cs_lfs_utils_eqc.erl | 3 +- apps/riak_cs/test/riak_cs_lfs_utils_test.erl | 3 +- .../test/riak_cs_list_objects_fsm_eqc.erl | 3 +- .../test/riak_cs_list_objects_fsm_v2_eqc.erl | 3 +- .../test/riak_cs_list_objects_utils_test.erl | 3 +- .../test/riak_cs_manifest_resolution_eqc.erl | 3 +- .../test/riak_cs_manifest_utils_eqc.erl | 5 +- apps/riak_cs/test/riak_cs_s3_auth_eqc.erl | 3 +- apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl | 3 +- apps/riak_cs/test/riak_cs_s3_policy_eqc.erl | 5 +- apps/riak_cs/test/riak_cs_s3_policy_test.erl | 9 ++-- apps/riak_cs/test/riak_cs_s3_rewrite_eqc.erl | 3 +- apps/riak_cs/test/riak_cs_s3_rewrite_test.erl | 3 +- apps/riak_cs/test/riak_cs_storage_mr_test.erl | 3 +- apps/riak_cs/test/riak_cs_utils_eqc.erl | 21 ++++++-- apps/riak_cs/test/riak_cs_wm_bucket_test.erl | 3 +- apps/riak_cs/test/riak_cs_wm_key_test.erl | 3 +- apps/riak_cs/test/riak_cs_wm_service_test.erl | 3 +- apps/riak_cs/test/riak_cs_wm_test_utils.erl | 3 +- apps/riak_cs/test/riak_object.erl | 3 +- apps/riak_cs/test/riak_socket_dummy.erl | 3 +- apps/riak_cs/test/riakc_pb_socket_fake.erl | 5 +- apps/riak_cs/test/twop_set_eqc.erl | 3 +- rel/tools/internal/block_audit.erl | 3 +- rel/tools/internal/ensure_orphan_blocks.erl | 4 +- rel/tools/internal/offline_delete.erl | 3 +- rel/tools/internal/riak_cs_inspector.erl | 3 +- rel/tools/internal/select_gc_bucket.erl | 3 +- rel/tools/repair_gc_bucket.erl | 3 +- 154 files changed, 461 insertions(+), 203 deletions(-) diff --git a/apps/riak_cs/include/list_objects.hrl b/apps/riak_cs/include/list_objects.hrl index 9c5ff7dac..af8f84c17 100644 --- a/apps/riak_cs/include/list_objects.hrl +++ b/apps/riak_cs/include/list_objects.hrl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/oos_api.hrl b/apps/riak_cs/include/oos_api.hrl index 9958921cf..c77a35fbe 100644 --- a/apps/riak_cs/include/oos_api.hrl +++ b/apps/riak_cs/include/oos_api.hrl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index 370e11aa3..f756f5ba0 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/riak_cs_api.hrl b/apps/riak_cs/include/riak_cs_api.hrl index d0926b9cb..a610bbc8c 100644 --- a/apps/riak_cs/include/riak_cs_api.hrl +++ b/apps/riak_cs/include/riak_cs_api.hrl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/riak_cs_gc.hrl b/apps/riak_cs/include/riak_cs_gc.hrl index 08b77afb4..65fac075f 100644 --- a/apps/riak_cs/include/riak_cs_gc.hrl +++ b/apps/riak_cs/include/riak_cs_gc.hrl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/rts.hrl b/apps/riak_cs/include/rts.hrl index 5899f0ecf..bf195da3a 100644 --- a/apps/riak_cs/include/rts.hrl +++ b/apps/riak_cs/include/rts.hrl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/s3_api.hrl b/apps/riak_cs/include/s3_api.hrl index f61c83af2..108a5bbfe 100644 --- a/apps/riak_cs/include/s3_api.hrl +++ b/apps/riak_cs/include/s3_api.hrl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/base64url.erl b/apps/riak_cs/src/base64url.erl index 33706305a..f9d6832ee 100644 --- a/apps/riak_cs/src/base64url.erl +++ b/apps/riak_cs/src/base64url.erl @@ -1,6 +1,7 @@ %% ------------------------------------------------------------------- %% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/exprec.erl b/apps/riak_cs/src/exprec.erl index 5fe7f1d01..31bd9f76b 100644 --- a/apps/riak_cs/src/exprec.erl +++ b/apps/riak_cs/src/exprec.erl @@ -1,3 +1,24 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + -module(exprec). -include("riak_cs.hrl"). diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index 785cc424c..c51d8a44e 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -1,4 +1,25 @@ %%-*- mode: erlang -*- +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + {application, riak_cs, [ {description, "riak_cs"}, diff --git a/apps/riak_cs/src/riak_cs_access.erl b/apps/riak_cs/src/riak_cs_access.erl index 249935117..87719323e 100644 --- a/apps/riak_cs/src/riak_cs_access.erl +++ b/apps/riak_cs/src/riak_cs_access.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_access_archiver.erl b/apps/riak_cs/src/riak_cs_access_archiver.erl index 7802a9aee..ef600dfad 100644 --- a/apps/riak_cs/src/riak_cs_access_archiver.erl +++ b/apps/riak_cs/src/riak_cs_access_archiver.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_access_archiver_manager.erl b/apps/riak_cs/src/riak_cs_access_archiver_manager.erl index 0f3d3f4ee..4693ec562 100644 --- a/apps/riak_cs/src/riak_cs_access_archiver_manager.erl +++ b/apps/riak_cs/src/riak_cs_access_archiver_manager.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_access_console.erl b/apps/riak_cs/src/riak_cs_access_console.erl index a67bf89e3..8eccbd458 100644 --- a/apps/riak_cs/src/riak_cs_access_console.erl +++ b/apps/riak_cs/src/riak_cs_access_console.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_access_log_handler.erl b/apps/riak_cs/src/riak_cs_access_log_handler.erl index d0eac26ae..8a86c97b1 100644 --- a/apps/riak_cs/src/riak_cs_access_log_handler.erl +++ b/apps/riak_cs/src/riak_cs_access_log_handler.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_acl.erl b/apps/riak_cs/src/riak_cs_acl.erl index b16ff002c..5f959f22d 100644 --- a/apps/riak_cs/src/riak_cs_acl.erl +++ b/apps/riak_cs/src/riak_cs_acl.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_acl_utils.erl b/apps/riak_cs/src/riak_cs_acl_utils.erl index 60faed710..cb3f9a0bc 100644 --- a/apps/riak_cs/src/riak_cs_acl_utils.erl +++ b/apps/riak_cs/src/riak_cs_acl_utils.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_api.erl b/apps/riak_cs/src/riak_cs_api.erl index 7b4a4c530..d7ec6ca6b 100644 --- a/apps/riak_cs/src/riak_cs_api.erl +++ b/apps/riak_cs/src/riak_cs_api.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_app.erl b/apps/riak_cs/src/riak_cs_app.erl index e364f53a4..5a25e873e 100644 --- a/apps/riak_cs/src/riak_cs_app.erl +++ b/apps/riak_cs/src/riak_cs_app.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_auth.erl b/apps/riak_cs/src/riak_cs_auth.erl index 0e5fcae57..ae27d7256 100644 --- a/apps/riak_cs/src/riak_cs_auth.erl +++ b/apps/riak_cs/src/riak_cs_auth.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -36,4 +37,4 @@ -callback authenticate(rcs_user(), string() | {string(), term()} | undefined, wm_reqdata(), wm_context()) -> - ok | {error, atom()}. + ok | {error, atom()}. diff --git a/apps/riak_cs/src/riak_cs_block_server.erl b/apps/riak_cs/src/riak_cs_block_server.erl index 06409d0bc..32b9f1b6b 100644 --- a/apps/riak_cs/src/riak_cs_block_server.erl +++ b/apps/riak_cs/src/riak_cs_block_server.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index bb5ab281e..f50e342fe 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_config.erl b/apps/riak_cs/src/riak_cs_config.erl index 9e299ddf4..0dcc9369d 100644 --- a/apps/riak_cs/src/riak_cs_config.erl +++ b/apps/riak_cs/src/riak_cs_config.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_console.erl b/apps/riak_cs/src/riak_cs_console.erl index 84ba0ae1e..6e4a3eb80 100644 --- a/apps/riak_cs/src/riak_cs_console.erl +++ b/apps/riak_cs/src/riak_cs_console.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_copy_object.erl b/apps/riak_cs/src/riak_cs_copy_object.erl index 61c4affa1..db884c44a 100644 --- a/apps/riak_cs/src/riak_cs_copy_object.erl +++ b/apps/riak_cs/src/riak_cs_copy_object.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_delete_fsm.erl b/apps/riak_cs/src/riak_cs_delete_fsm.erl index a9337f472..c18958528 100644 --- a/apps/riak_cs/src/riak_cs_delete_fsm.erl +++ b/apps/riak_cs/src/riak_cs_delete_fsm.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_delete_fsm_sup.erl b/apps/riak_cs/src/riak_cs_delete_fsm_sup.erl index 370303614..882b30ad5 100644 --- a/apps/riak_cs/src/riak_cs_delete_fsm_sup.erl +++ b/apps/riak_cs/src/riak_cs_delete_fsm_sup.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_diags.erl b/apps/riak_cs/src/riak_cs_diags.erl index 7a5b317ec..c0f0e37a7 100644 --- a/apps/riak_cs/src/riak_cs_diags.erl +++ b/apps/riak_cs/src/riak_cs_diags.erl @@ -1,3 +1,24 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + -module(riak_cs_diags). -behaviour(gen_server). diff --git a/apps/riak_cs/src/riak_cs_dtrace.erl b/apps/riak_cs/src/riak_cs_dtrace.erl index fa234c670..359ea8e03 100644 --- a/apps/riak_cs/src/riak_cs_dtrace.erl +++ b/apps/riak_cs/src/riak_cs_dtrace.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl index 75994e9de..a9221266a 100644 --- a/apps/riak_cs/src/riak_cs_gc.erl +++ b/apps/riak_cs/src/riak_cs_gc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_gc_batch.erl b/apps/riak_cs/src/riak_cs_gc_batch.erl index 6bec9d2ea..94dc04b1f 100644 --- a/apps/riak_cs/src/riak_cs_gc_batch.erl +++ b/apps/riak_cs/src/riak_cs_gc_batch.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_gc_console.erl b/apps/riak_cs/src/riak_cs_gc_console.erl index 9e74be078..5f5795edb 100644 --- a/apps/riak_cs/src/riak_cs_gc_console.erl +++ b/apps/riak_cs/src/riak_cs_gc_console.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_gc_key_list.erl b/apps/riak_cs/src/riak_cs_gc_key_list.erl index 586e0de9f..e983d88f3 100644 --- a/apps/riak_cs/src/riak_cs_gc_key_list.erl +++ b/apps/riak_cs/src/riak_cs_gc_key_list.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_gc_manager.erl b/apps/riak_cs/src/riak_cs_gc_manager.erl index a97e8bd44..f7ea3e8c6 100644 --- a/apps/riak_cs/src/riak_cs_gc_manager.erl +++ b/apps/riak_cs/src/riak_cs_gc_manager.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_gc_worker.erl b/apps/riak_cs/src/riak_cs_gc_worker.erl index 6798ac551..392912533 100644 --- a/apps/riak_cs/src/riak_cs_gc_worker.erl +++ b/apps/riak_cs/src/riak_cs_gc_worker.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl index 449022c64..0931114d0 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_get_fsm_sup.erl b/apps/riak_cs/src/riak_cs_get_fsm_sup.erl index 7a672356b..44ec644ad 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm_sup.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm_sup.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_json.erl b/apps/riak_cs/src/riak_cs_json.erl index dda831d97..d9023d9cc 100644 --- a/apps/riak_cs/src/riak_cs_json.erl +++ b/apps/riak_cs/src/riak_cs_json.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_keystone_auth.erl b/apps/riak_cs/src/riak_cs_keystone_auth.erl index b6211d34b..5202da453 100644 --- a/apps/riak_cs/src/riak_cs_keystone_auth.erl +++ b/apps/riak_cs/src/riak_cs_keystone_auth.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_kv_multi_backend.erl b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl index 040957171..2a7ffa6ae 100644 --- a/apps/riak_cs/src/riak_cs_kv_multi_backend.erl +++ b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl @@ -2,7 +2,8 @@ %% %% riak_cs_kv_multi_backend: switching between multiple storage engines %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_lfs_utils.erl b/apps/riak_cs/src/riak_cs_lfs_utils.erl index 722f850d6..499f76e1a 100644 --- a/apps/riak_cs/src/riak_cs_lfs_utils.erl +++ b/apps/riak_cs/src/riak_cs_lfs_utils.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_list_objects.erl b/apps/riak_cs/src/riak_cs_list_objects.erl index f53e3d998..cc1dccd87 100644 --- a/apps/riak_cs/src/riak_cs_list_objects.erl +++ b/apps/riak_cs/src/riak_cs_list_objects.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl index 4f6425013..306f6ceae 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl b/apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl index b9a28dec4..88b1e8e55 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl index ad469ec88..f796a0666 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl index 3cb099f80..1c5fba309 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_list_objects_utils.erl b/apps/riak_cs/src/riak_cs_list_objects_utils.erl index 3c7a96802..b3824646b 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_utils.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_utils.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl index 72e196624..d0793b52f 100644 --- a/apps/riak_cs/src/riak_cs_manifest.erl +++ b/apps/riak_cs/src/riak_cs_manifest.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl index c3325317f..800f43a21 100644 --- a/apps/riak_cs/src/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/riak_cs_manifest_fsm.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_manifest_resolution.erl b/apps/riak_cs/src/riak_cs_manifest_resolution.erl index e647c8292..d5669a250 100644 --- a/apps/riak_cs/src/riak_cs_manifest_resolution.erl +++ b/apps/riak_cs/src/riak_cs_manifest_resolution.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_manifest_utils.erl b/apps/riak_cs/src/riak_cs_manifest_utils.erl index f69a2b474..866c09237 100644 --- a/apps/riak_cs/src/riak_cs_manifest_utils.erl +++ b/apps/riak_cs/src/riak_cs_manifest_utils.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -61,8 +62,8 @@ new_dict(UUID, Manifest) -> %% from an orddict of manifests. -spec active_manifest(orddict:orddict()) -> {ok, lfs_manifest()} | {error, no_active_manifest}. active_manifest(Dict) -> - live_manifest(lists:foldl(fun most_recent_active_manifest/2, - {no_active_manifest, undefined}, orddict_values(Dict))). + live_manifest(lists:foldl(fun most_recent_active_manifest/2, + {no_active_manifest, undefined}, orddict_values(Dict))). %% @doc Ensure the manifest hasn't been deleted during upload. -spec live_manifest(tuple()) -> {ok, lfs_manifest()} | {error, no_active_manifest}. @@ -366,7 +367,7 @@ delete_time(Manifest) -> end. %% @doc Return all active manifests that have timestamps before the latest deletion -%% This happens when a manifest is still uploading while it is deleted. The upload +%% This happens when a manifest is still uploading while it is deleted. The upload %% is allowed to complete, but is not visible afterwards. -spec deleted_while_writing(orddict:orddict()) -> [binary()]. deleted_while_writing(Manifests) -> @@ -378,7 +379,7 @@ deleted_while_writing(Manifests) -> find_deleted_active_manifests(_Manifests, undefined) -> []; find_deleted_active_manifests(Manifests, DeleteTime) -> - [M?MANIFEST.uuid || M <- Manifests, M?MANIFEST.state =:= active, + [M?MANIFEST.uuid || M <- Manifests, M?MANIFEST.state =:= active, M?MANIFEST.write_start_time < DeleteTime]. -spec latest_delete_time([lfs_manifest()]) -> term() | undefined. @@ -389,7 +390,7 @@ latest_delete_time(Manifests) -> end, undefined, Manifests). %% @doc Return the later of two times, accounting for undefined --spec later(undefined | erlang:timestamp(), undefined | erlang:timestamp()) -> +-spec later(undefined | erlang:timestamp(), undefined | erlang:timestamp()) -> undefined | erlang:timestamp(). later(undefined, undefined) -> undefined; @@ -408,36 +409,36 @@ later(DeleteTime1, DeleteTime2) -> %% NOTE: This is a foldl function, initial acc = {no_active_manifest, undefined} %% Return the most recent active manifest as well as the most recent manifest delete time -spec most_recent_active_manifest(lfs_manifest(), { - no_active_manifest | lfs_manifest(), undefined | erlang:timestamp()}) -> + no_active_manifest | lfs_manifest(), undefined | erlang:timestamp()}) -> {no_active_manifest | lfs_manifest(), erlang:timestamp() | undefined}. -most_recent_active_manifest(Manifest=?MANIFEST{state=scheduled_delete}, - {MostRecent, undefined}) -> +most_recent_active_manifest(Manifest=?MANIFEST{state=scheduled_delete}, + {MostRecent, undefined}) -> {MostRecent, delete_time(Manifest)}; -most_recent_active_manifest(Manifest=?MANIFEST{state=scheduled_delete}, - {MostRecent, DeleteTime}) -> - Dt=delete_time(Manifest), +most_recent_active_manifest(Manifest=?MANIFEST{state=scheduled_delete}, + {MostRecent, DeleteTime}) -> + Dt=delete_time(Manifest), {MostRecent, later(Dt, DeleteTime)}; -most_recent_active_manifest(Manifest=?MANIFEST{state=pending_delete}, - {MostRecent, undefined}) -> +most_recent_active_manifest(Manifest=?MANIFEST{state=pending_delete}, + {MostRecent, undefined}) -> {MostRecent, delete_time(Manifest)}; -most_recent_active_manifest(Manifest=?MANIFEST{state=pending_delete}, - {MostRecent, DeleteTime}) -> - Dt=delete_time(Manifest), +most_recent_active_manifest(Manifest=?MANIFEST{state=pending_delete}, + {MostRecent, DeleteTime}) -> + Dt=delete_time(Manifest), {MostRecent, later(Dt, DeleteTime)}; -most_recent_active_manifest(Manifest=?MANIFEST{state=active}, +most_recent_active_manifest(Manifest=?MANIFEST{state=active}, {no_active_manifest, undefined}) -> {Manifest, undefined}; -most_recent_active_manifest(Man1=?MANIFEST{state=active}, - {Man2=?MANIFEST{state=active}, DeleteTime}) +most_recent_active_manifest(Man1=?MANIFEST{state=active}, + {Man2=?MANIFEST{state=active}, DeleteTime}) when Man1?MANIFEST.write_start_time > Man2?MANIFEST.write_start_time -> {Man1, DeleteTime}; -most_recent_active_manifest(_Man1=?MANIFEST{state=active}, +most_recent_active_manifest(_Man1=?MANIFEST{state=active}, {Man2=?MANIFEST{state=active}, DeleteTime}) -> {Man2, DeleteTime}; -most_recent_active_manifest(Man1=?MANIFEST{state=active}, - {no_active_manifest, DeleteTime}) -> +most_recent_active_manifest(Man1=?MANIFEST{state=active}, + {no_active_manifest, DeleteTime}) -> {Man1, DeleteTime}; -most_recent_active_manifest(_Man1, {Man2=?MANIFEST{state=active}, DeleteTime}) -> +most_recent_active_manifest(_Man1, {Man2=?MANIFEST{state=active}, DeleteTime}) -> {Man2, DeleteTime}; most_recent_active_manifest(_Manifest, {MostRecent, DeleteTime}) -> {MostRecent, DeleteTime}. diff --git a/apps/riak_cs/src/riak_cs_mb_helper.erl b/apps/riak_cs/src/riak_cs_mb_helper.erl index 9d01ad895..0b72f11d9 100644 --- a/apps/riak_cs/src/riak_cs_mb_helper.erl +++ b/apps/riak_cs/src/riak_cs_mb_helper.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 15cdf2e3e..269afb3a8 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_oos_response.erl b/apps/riak_cs/src/riak_cs_oos_response.erl index 9a841136c..d9ab13677 100644 --- a/apps/riak_cs/src/riak_cs_oos_response.erl +++ b/apps/riak_cs/src/riak_cs_oos_response.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_oos_rewrite.erl b/apps/riak_cs/src/riak_cs_oos_rewrite.erl index 2f120209e..392ab0c50 100644 --- a/apps/riak_cs/src/riak_cs_oos_rewrite.erl +++ b/apps/riak_cs/src/riak_cs_oos_rewrite.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_oos_utils.erl b/apps/riak_cs/src/riak_cs_oos_utils.erl index ef272ec85..74d2d4d71 100644 --- a/apps/riak_cs/src/riak_cs_oos_utils.erl +++ b/apps/riak_cs/src/riak_cs_oos_utils.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_pbc.erl b/apps/riak_cs/src/riak_cs_pbc.erl index b0c54d018..08637993e 100644 --- a/apps/riak_cs/src/riak_cs_pbc.erl +++ b/apps/riak_cs/src/riak_cs_pbc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_policy.erl b/apps/riak_cs/src/riak_cs_policy.erl index c695ed1ed..41ef568a4 100644 --- a/apps/riak_cs/src/riak_cs_policy.erl +++ b/apps/riak_cs/src/riak_cs_policy.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl index e0d3557ff..4bc0da899 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_put_fsm_sup.erl b/apps/riak_cs/src/riak_cs_put_fsm_sup.erl index 9a70d1435..f76953d2d 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm_sup.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm_sup.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_quota.erl b/apps/riak_cs/src/riak_cs_quota.erl index cadd6cccd..7d0e4d428 100644 --- a/apps/riak_cs/src/riak_cs_quota.erl +++ b/apps/riak_cs/src/riak_cs_quota.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_quota_sup.erl b/apps/riak_cs/src/riak_cs_quota_sup.erl index 6db2eb3a5..1b3cd23fe 100644 --- a/apps/riak_cs/src/riak_cs_quota_sup.erl +++ b/apps/riak_cs/src/riak_cs_quota_sup.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_riak_client.erl b/apps/riak_cs/src/riak_cs_riak_client.erl index c0c961fb7..6eddcb3ad 100644 --- a/apps/riak_cs/src/riak_cs_riak_client.erl +++ b/apps/riak_cs/src/riak_cs_riak_client.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_riakc_pool_worker.erl b/apps/riak_cs/src/riak_cs_riakc_pool_worker.erl index 844c2d794..ce7997bfc 100644 --- a/apps/riak_cs/src/riak_cs_riakc_pool_worker.erl +++ b/apps/riak_cs/src/riak_cs_riakc_pool_worker.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_s3_auth.erl b/apps/riak_cs/src/riak_cs_s3_auth.erl index 586edfbc4..d937a7349 100644 --- a/apps/riak_cs/src/riak_cs_s3_auth.erl +++ b/apps/riak_cs/src/riak_cs_s3_auth.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_s3_passthru_auth.erl b/apps/riak_cs/src/riak_cs_s3_passthru_auth.erl index 106087681..f4b43c51b 100644 --- a/apps/riak_cs/src/riak_cs_s3_passthru_auth.erl +++ b/apps/riak_cs/src/riak_cs_s3_passthru_auth.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_s3_policy.erl b/apps/riak_cs/src/riak_cs_s3_policy.erl index 1f45b4c17..d09e2b833 100644 --- a/apps/riak_cs/src/riak_cs_s3_policy.erl +++ b/apps/riak_cs/src/riak_cs_s3_policy.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_s3_response.erl b/apps/riak_cs/src/riak_cs_s3_response.erl index 8ca63ebb6..dd4466d89 100644 --- a/apps/riak_cs/src/riak_cs_s3_response.erl +++ b/apps/riak_cs/src/riak_cs_s3_response.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/riak_cs_s3_rewrite.erl index 3f8a47cfd..b6525bd10 100644 --- a/apps/riak_cs/src/riak_cs_s3_rewrite.erl +++ b/apps/riak_cs/src/riak_cs_s3_rewrite.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite_legacy.erl b/apps/riak_cs/src/riak_cs_s3_rewrite_legacy.erl index e239e772c..a4361d2f1 100644 --- a/apps/riak_cs/src/riak_cs_s3_rewrite_legacy.erl +++ b/apps/riak_cs/src/riak_cs_s3_rewrite_legacy.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl index 9110f8f4e..9e91a956e 100644 --- a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl +++ b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_simple_quota.erl b/apps/riak_cs/src/riak_cs_simple_quota.erl index 49a032516..aa0e0a248 100644 --- a/apps/riak_cs/src/riak_cs_simple_quota.erl +++ b/apps/riak_cs/src/riak_cs_simple_quota.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_stanchion_console.erl b/apps/riak_cs/src/riak_cs_stanchion_console.erl index b9fc60940..94737eb47 100644 --- a/apps/riak_cs/src/riak_cs_stanchion_console.erl +++ b/apps/riak_cs/src/riak_cs_stanchion_console.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_stats.erl b/apps/riak_cs/src/riak_cs_stats.erl index 959db8b31..68a119bae 100644 --- a/apps/riak_cs/src/riak_cs_stats.erl +++ b/apps/riak_cs/src/riak_cs_stats.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_storage.erl b/apps/riak_cs/src/riak_cs_storage.erl index 6e66f41f7..3a2eb95bf 100644 --- a/apps/riak_cs/src/riak_cs_storage.erl +++ b/apps/riak_cs/src/riak_cs_storage.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_storage_console.erl b/apps/riak_cs/src/riak_cs_storage_console.erl index fe8da476d..b3bd2ea2d 100644 --- a/apps/riak_cs/src/riak_cs_storage_console.erl +++ b/apps/riak_cs/src/riak_cs_storage_console.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_storage_d.erl b/apps/riak_cs/src/riak_cs_storage_d.erl index a0914f5e3..05c96603c 100644 --- a/apps/riak_cs/src/riak_cs_storage_d.erl +++ b/apps/riak_cs/src/riak_cs_storage_d.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_storage_mr.erl b/apps/riak_cs/src/riak_cs_storage_mr.erl index 8fc48a75e..b64dee7f1 100644 --- a/apps/riak_cs/src/riak_cs_storage_mr.erl +++ b/apps/riak_cs/src/riak_cs_storage_mr.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index 4d8f5083d..74b58d6fa 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_user.erl b/apps/riak_cs/src/riak_cs_user.erl index 1745a017f..6b034726b 100644 --- a/apps/riak_cs/src/riak_cs_user.erl +++ b/apps/riak_cs/src/riak_cs_user.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index 7924ccb39..b6660c227 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -1,6 +1,7 @@ %% ------------------------------------------------------------------- %% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_web.erl b/apps/riak_cs/src/riak_cs_web.erl index 16f3b52e2..78dc12a26 100644 --- a/apps/riak_cs/src/riak_cs_web.erl +++ b/apps/riak_cs/src/riak_cs_web.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_bucket.erl b/apps/riak_cs/src/riak_cs_wm_bucket.erl index 76433997e..5ed305982 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_acl.erl b/apps/riak_cs/src/riak_cs_wm_bucket_acl.erl index 2e52d80c1..af01dec99 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_acl.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_acl.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl index 2594b86aa..7a054615c 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_location.erl b/apps/riak_cs/src/riak_cs_wm_bucket_location.erl index 6fef58044..b77cc544f 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_location.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_location.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -44,7 +45,7 @@ allowed_methods() -> content_types_provided(RD, Ctx) -> {[{"application/xml", to_xml}], RD, Ctx}. --spec authorize(#wm_reqdata{}, #context{}) -> +-spec authorize(#wm_reqdata{}, #context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. authorize(RD, Ctx) -> riak_cs_wm_utils:bucket_access_authorize_helper(bucket_location, false, RD, Ctx). @@ -63,5 +64,3 @@ to_xml(RD, Ctx=#context{user=User,bucket=Bucket}) -> [riak_cs_config:region()]}], {riak_cs_xml:to_xml(Doc), RD, Ctx} end. - - diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_policy.erl b/apps/riak_cs/src/riak_cs_wm_bucket_policy.erl index d45b24f81..1616d0773 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_policy.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_policy.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -45,7 +46,7 @@ stats_prefix() -> bucket_policy. allowed_methods() -> ['GET', 'PUT', 'DELETE']. --spec content_types_provided(#wm_reqdata{}, #context{}) -> +-spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. content_types_provided(RD, Ctx) -> {[{"application/json", to_json}], RD, Ctx}. diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl b/apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl index 68f16c2b2..87300f2c4 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -62,5 +63,3 @@ to_xml(RD, Ctx=#context{user=User,bucket=Bucket}) -> [{'Payer', [<<"BucketOwner">>]}]}], {riak_cs_xml:to_xml(Doc), RD, Ctx} end. - - diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl b/apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl index 4d37470b7..fa48bd6a9 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl index 7cafe5d09..206da4090 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -43,13 +44,13 @@ allowed_methods() -> content_types_provided(RD, Ctx) -> {[{"application/xml", to_xml}], RD, Ctx}. --spec authorize(#wm_reqdata{}, #context{}) -> +-spec authorize(#wm_reqdata{}, #context{}) -> {boolean() | {halt, term()}, #wm_reqdata{}, #context{}}. authorize(RD, Ctx) -> riak_cs_wm_utils:bucket_access_authorize_helper(bucket_version, false, RD, Ctx). --spec to_xml(#wm_reqdata{}, #context{}) -> +-spec to_xml(#wm_reqdata{}, #context{}) -> {binary() | {halt, term()}, #wm_reqdata{}, #context{}}. to_xml(RD, Ctx=#context{user=User,bucket=Bucket}) -> StrBucket = binary_to_list(Bucket), @@ -61,5 +62,3 @@ to_xml(RD, Ctx=#context{user=User,bucket=Bucket}) -> {<<"">>, RD, Ctx} end. - - diff --git a/apps/riak_cs/src/riak_cs_wm_buckets.erl b/apps/riak_cs/src/riak_cs_wm_buckets.erl index 1bc9e2a4a..f25fa49df 100644 --- a/apps/riak_cs/src/riak_cs_wm_buckets.erl +++ b/apps/riak_cs/src/riak_cs_wm_buckets.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_common.erl b/apps/riak_cs/src/riak_cs_wm_common.erl index 79c5dad61..632cd1e9b 100644 --- a/apps/riak_cs/src/riak_cs_wm_common.erl +++ b/apps/riak_cs/src/riak_cs_wm_common.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_error_handler.erl b/apps/riak_cs/src/riak_cs_wm_error_handler.erl index 494188b30..0683e721a 100644 --- a/apps/riak_cs/src/riak_cs_wm_error_handler.erl +++ b/apps/riak_cs/src/riak_cs_wm_error_handler.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_not_implemented.erl b/apps/riak_cs/src/riak_cs_wm_not_implemented.erl index a5c74097b..ee15833d5 100644 --- a/apps/riak_cs/src/riak_cs_wm_not_implemented.erl +++ b/apps/riak_cs/src/riak_cs_wm_not_implemented.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index c5fcf1896..69b98bedc 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_object_acl.erl b/apps/riak_cs/src/riak_cs_wm_object_acl.erl index 376f81f33..c74007b71 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_acl.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_acl.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload.erl b/apps/riak_cs/src/riak_cs_wm_object_upload.erl index 91aca63ba..5c85bec81 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_upload.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_upload.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl index f99b729ac..3e94ecec5 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -151,7 +152,7 @@ process_post(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> response_location(Bucket, Key) -> lists:append(["http://", binary:bin_to_list(Bucket), ".", riak_cs_config:root_host(), "/", Key]). - + -spec valid_entity_length(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. valid_entity_length(RD, Ctx) -> MaxLen = riak_cs_lfs_utils:max_content_len(), diff --git a/apps/riak_cs/src/riak_cs_wm_objects.erl b/apps/riak_cs/src/riak_cs_wm_objects.erl index 11b4fc666..03f2046e0 100644 --- a/apps/riak_cs/src/riak_cs_wm_objects.erl +++ b/apps/riak_cs/src/riak_cs_wm_objects.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_ping.erl b/apps/riak_cs/src/riak_cs_wm_ping.erl index 30644f508..12dfdd8f4 100644 --- a/apps/riak_cs/src/riak_cs_wm_ping.erl +++ b/apps/riak_cs/src/riak_cs_wm_ping.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_stats.erl b/apps/riak_cs/src/riak_cs_wm_stats.erl index fbf277d65..2f8f98157 100644 --- a/apps/riak_cs/src/riak_cs_wm_stats.erl +++ b/apps/riak_cs/src/riak_cs_wm_stats.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_usage.erl b/apps/riak_cs/src/riak_cs_wm_usage.erl index 79b046bfd..ec8f3e5ad 100644 --- a/apps/riak_cs/src/riak_cs_wm_usage.erl +++ b/apps/riak_cs/src/riak_cs_wm_usage.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_user.erl b/apps/riak_cs/src/riak_cs_wm_user.erl index 89a0ec622..03e6d7dad 100644 --- a/apps/riak_cs/src/riak_cs_wm_user.erl +++ b/apps/riak_cs/src/riak_cs_wm_user.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_users.erl b/apps/riak_cs/src/riak_cs_wm_users.erl index 6a9f4d1fe..630bd2761 100644 --- a/apps/riak_cs/src/riak_cs_wm_users.erl +++ b/apps/riak_cs/src/riak_cs_wm_users.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index d57275150..9b46c609a 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_xml.erl b/apps/riak_cs/src/riak_cs_xml.erl index f8a461230..c6259e324 100644 --- a/apps/riak_cs/src/riak_cs_xml.erl +++ b/apps/riak_cs/src/riak_cs_xml.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl index 52f4d821d..a371090f8 100644 --- a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl +++ b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/rts.erl b/apps/riak_cs/src/rts.erl index 9971c0dac..12a415951 100644 --- a/apps/riak_cs/src/rts.erl +++ b/apps/riak_cs/src/rts.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/table.erl b/apps/riak_cs/src/table.erl index 8f8dd8af5..d0ee2c554 100644 --- a/apps/riak_cs/src/table.erl +++ b/apps/riak_cs/src/table.erl @@ -1,3 +1,24 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + -module(table). %% API @@ -30,7 +51,7 @@ create_table(Spec, [Row | Rows], Length, IoList) -> -spec get_row_length(list(tuple())) -> non_neg_integer(). get_row_length(Spec) -> lists:foldl(fun({_Name, Size}, Total) -> - Total + Size + 2 + Total + Size + 2 end, 0, Spec) + 2. -spec row(list(), list(string())) -> iolist(). @@ -56,9 +77,9 @@ align(Str, Size) when is_binary(Str) -> align(binary_to_list(Str), Size); align(Str, Size) when is_atom(Str) -> align(atom_to_list(Str), Size); -align(Str, Size) when is_list(Str), length(Str) > Size -> +align(Str, Size) when is_list(Str), length(Str) > Size -> Truncated = lists:sublist(Str, Size), - Truncated ++ " |"; + Truncated ++ " |"; align(Str, Size) when is_list(Str), length(Str) =:= Size -> Str ++ " |"; align(Str, Size) when is_list(Str) -> @@ -81,4 +102,3 @@ spaces(Length) -> -spec char_seq(non_neg_integer(), char()) -> string(). char_seq(Length, Char) -> [Char || _ <- lists:seq(1, Length)]. - diff --git a/apps/riak_cs/src/twop_set.erl b/apps/riak_cs/src/twop_set.erl index e48bcbbf6..496e6e086 100644 --- a/apps/riak_cs/src/twop_set.erl +++ b/apps/riak_cs/src/twop_set.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/velvet.erl b/apps/riak_cs/src/velvet.erl index 9a1242225..7b361ec5b 100644 --- a/apps/riak_cs/src/velvet.erl +++ b/apps/riak_cs/src/velvet.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved,, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/velvet_auth.erl b/apps/riak_cs/src/velvet_auth.erl index 0007cac57..628d90165 100644 --- a/apps/riak_cs/src/velvet_auth.erl +++ b/apps/riak_cs/src/velvet_auth.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/cs782_regression_test.erl b/apps/riak_cs/test/cs782_regression_test.erl index a8aefbe76..21d362073 100644 --- a/apps/riak_cs/test/cs782_regression_test.erl +++ b/apps/riak_cs/test/cs782_regression_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_acl_utils_eqc.erl b/apps/riak_cs/test/riak_cs_acl_utils_eqc.erl index ab41a4946..764268adc 100644 --- a/apps/riak_cs/test/riak_cs_acl_utils_eqc.erl +++ b/apps/riak_cs/test/riak_cs_acl_utils_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_bucket_name_test.erl b/apps/riak_cs/test/riak_cs_bucket_name_test.erl index 3be6e5b26..8b33471ec 100644 --- a/apps/riak_cs/test/riak_cs_bucket_name_test.erl +++ b/apps/riak_cs/test/riak_cs_bucket_name_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_bucket_test.erl b/apps/riak_cs/test/riak_cs_bucket_test.erl index dfb90969e..24ad1174a 100644 --- a/apps/riak_cs/test/riak_cs_bucket_test.erl +++ b/apps/riak_cs/test/riak_cs_bucket_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_config_test.erl b/apps/riak_cs/test/riak_cs_config_test.erl index e125aa053..4741561ea 100644 --- a/apps/riak_cs/test/riak_cs_config_test.erl +++ b/apps/riak_cs/test/riak_cs_config_test.erl @@ -1,3 +1,24 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + -module(riak_cs_config_test). -compile(export_all). -compile(nowarn_export_all). @@ -104,7 +125,7 @@ gc_interval_infinity_test() -> cuttlefish_unit:assert_config(Config, "riak_cs.gc_interval", infinity), ok. -max_scheduled_delete_manifests_unlimited_test() -> +max_scheduled_delete_manifests_unlimited_test() -> Conf = [{["max_scheduled_delete_manifests"], unlimited}], Config = cuttlefish_unit:generate_templated_config(schema_files(), Conf, context()), cuttlefish_unit:assert_config(Config, "riak_cs.max_scheduled_delete_manifests", unlimited), diff --git a/apps/riak_cs/test/riak_cs_delete_deadlock.erl b/apps/riak_cs/test/riak_cs_delete_deadlock.erl index 727a55333..9a4baa3f9 100644 --- a/apps/riak_cs/test/riak_cs_delete_deadlock.erl +++ b/apps/riak_cs/test/riak_cs_delete_deadlock.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -88,7 +89,7 @@ prop_delete_deadlock() -> undefined, undefined), MpM = ?MULTIPART_MANIFEST{parts = Parts}, - NewManifest = Manifest?MANIFEST{props = + NewManifest = Manifest?MANIFEST{props = riak_cs_mp_utils:replace_mp_manifest(MpM, Manifest?MANIFEST.props)}, OutputList = riak_cs_lfs_utils:block_sequences_for_manifest(NewManifest), @@ -111,14 +112,14 @@ assemble_test_list(ContentLength, BlockSize, Parts) -> part_manifests() -> not_empty(eqc_gen:list(part())). -raw_part() -> - ?PART_MANIFEST{bucket= <<"part_bucket">>, +raw_part() -> + ?PART_MANIFEST{bucket= <<"part_bucket">>, key = <<"part_key">>, start_time = os:timestamp(), part_id = g_uuid(), content_length = ?CONTENT_LENGTH, block_size=?BLOCK_SIZE}. -part() -> +part() -> ?LET(Part, raw_part(), process_part(Part)). process_part(Part) -> diff --git a/apps/riak_cs/test/riak_cs_dummy_reader.erl b/apps/riak_cs/test/riak_cs_dummy_reader.erl index 33b472fe2..f58d9056a 100644 --- a/apps/riak_cs/test/riak_cs_dummy_reader.erl +++ b/apps/riak_cs/test/riak_cs_dummy_reader.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl b/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl index 61e6764e6..c5f9ea926 100644 --- a/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl +++ b/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_gc_manager_eqc.erl b/apps/riak_cs/test/riak_cs_gc_manager_eqc.erl index 826f9db5b..647205e5e 100644 --- a/apps/riak_cs/test/riak_cs_gc_manager_eqc.erl +++ b/apps/riak_cs/test/riak_cs_gc_manager_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl b/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl index 40f77491a..2add1f678 100644 --- a/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl +++ b/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_gen.erl b/apps/riak_cs/test/riak_cs_gen.erl index d9561e219..e6065a16b 100644 --- a/apps/riak_cs/test/riak_cs_gen.erl +++ b/apps/riak_cs/test/riak_cs_gen.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_get_fsm_eqc.erl b/apps/riak_cs/test/riak_cs_get_fsm_eqc.erl index dde09faf8..7a18cf396 100644 --- a/apps/riak_cs/test/riak_cs_get_fsm_eqc.erl +++ b/apps/riak_cs/test/riak_cs_get_fsm_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl b/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl index 95832995e..8872c88cf 100644 --- a/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl +++ b/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_lfs_utils_eqc.erl b/apps/riak_cs/test/riak_cs_lfs_utils_eqc.erl index 23d248b4f..f406f9c55 100644 --- a/apps/riak_cs/test/riak_cs_lfs_utils_eqc.erl +++ b/apps/riak_cs/test/riak_cs_lfs_utils_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_lfs_utils_test.erl b/apps/riak_cs/test/riak_cs_lfs_utils_test.erl index c5d05f0db..f886b7098 100644 --- a/apps/riak_cs/test/riak_cs_lfs_utils_test.erl +++ b/apps/riak_cs/test/riak_cs_lfs_utils_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_list_objects_fsm_eqc.erl b/apps/riak_cs/test/riak_cs_list_objects_fsm_eqc.erl index 035dc3588..280cdea0f 100644 --- a/apps/riak_cs/test/riak_cs_list_objects_fsm_eqc.erl +++ b/apps/riak_cs/test/riak_cs_list_objects_fsm_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl b/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl index 7aca78a54..5d2dc1a9c 100644 --- a/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl +++ b/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl b/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl index a96a6b828..b44639a09 100644 --- a/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl +++ b/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_manifest_resolution_eqc.erl b/apps/riak_cs/test/riak_cs_manifest_resolution_eqc.erl index 5599c032c..f55a0a7de 100644 --- a/apps/riak_cs/test/riak_cs_manifest_resolution_eqc.erl +++ b/apps/riak_cs/test/riak_cs_manifest_resolution_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_manifest_utils_eqc.erl b/apps/riak_cs/test/riak_cs_manifest_utils_eqc.erl index 3dee5e707..4eaf32929 100644 --- a/apps/riak_cs/test/riak_cs_manifest_utils_eqc.erl +++ b/apps/riak_cs/test/riak_cs_manifest_utils_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -84,7 +85,7 @@ prop_active_manifests() -> %% the manifest has a write_start_time < delete_marked_time of %% some other deleted manifest's delete_marked_time. ActiveManis = lists:filter(fun(?MANIFEST{state=State}) -> - State == active + State == active end, AlteredManifests), ActiveUUIDs = lists:sort([M?MANIFEST.uuid || M <- ActiveManis]), ActiveUUIDs =:= ToGcUUIDs; diff --git a/apps/riak_cs/test/riak_cs_s3_auth_eqc.erl b/apps/riak_cs/test/riak_cs_s3_auth_eqc.erl index e4b40b426..e54c18551 100644 --- a/apps/riak_cs/test/riak_cs_s3_auth_eqc.erl +++ b/apps/riak_cs/test/riak_cs_s3_auth_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl b/apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl index ff82ec396..59ca9a26b 100644 --- a/apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl +++ b/apps/riak_cs/test/riak_cs_s3_auth_v4_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_s3_policy_eqc.erl b/apps/riak_cs/test/riak_cs_s3_policy_eqc.erl index 1d848c938..8026fd557 100644 --- a/apps/riak_cs/test/riak_cs_s3_policy_eqc.erl +++ b/apps/riak_cs/test/riak_cs_s3_policy_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -127,7 +128,7 @@ prop_secure_transport() -> {_, {https, true}} -> (Effect =:= allow) =:= Result end end). - + %% checking not to throw or return unexpected result prop_eval() -> diff --git a/apps/riak_cs/test/riak_cs_s3_policy_test.erl b/apps/riak_cs/test/riak_cs_s3_policy_test.erl index 86d03d3b1..7e74808b6 100644 --- a/apps/riak_cs/test/riak_cs_s3_policy_test.erl +++ b/apps/riak_cs/test/riak_cs_s3_policy_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -43,9 +44,9 @@ parse_ip_test_()-> riak_cs_s3_policy:print_ip(riak_cs_s3_policy:parse_ip(<<"1.2.3.4">>))), ?_assertEqual(<<"1.2.3.4/13">>, riak_cs_s3_policy:print_ip(riak_cs_s3_policy:parse_ip(<<"1.2.3.4/13">>))), - ?_assertEqual({error, einval}, + ?_assertEqual({error, einval}, riak_cs_s3_policy:parse_ip(<<"0">>)), - ?_assertEqual({error, einval}, + ?_assertEqual({error, einval}, riak_cs_s3_policy:parse_ip(<<"0/0">>)) ]. @@ -137,7 +138,7 @@ eval_ip_address_test_trust_x_forwarded_for_false_test() -> Conds = [garbage,{chiba, boo},"saitama", {'aws:SourceIp', {{23,23,0,0},{255,255,0,0}}}, hage], %% This test fails because it tries to use the socket from wm_reqstate to - %% get the peer address, but it's not a real wm request. + %% get the peer address, but it's not a real wm request. %% If trust_x_forwarded_for = true, it would just use the peer address and the call would %% succeed ?assertError({badrecord, wm_reqstate}, diff --git a/apps/riak_cs/test/riak_cs_s3_rewrite_eqc.erl b/apps/riak_cs/test/riak_cs_s3_rewrite_eqc.erl index 70b0478d6..490c0bdbf 100644 --- a/apps/riak_cs/test/riak_cs_s3_rewrite_eqc.erl +++ b/apps/riak_cs/test/riak_cs_s3_rewrite_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl b/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl index 931b0f62d..a7e11c0b3 100644 --- a/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl +++ b/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_storage_mr_test.erl b/apps/riak_cs/test/riak_cs_storage_mr_test.erl index d6798b238..660b09e38 100644 --- a/apps/riak_cs/test/riak_cs_storage_mr_test.erl +++ b/apps/riak_cs/test/riak_cs_storage_mr_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_utils_eqc.erl b/apps/riak_cs/test/riak_cs_utils_eqc.erl index f43327a57..7f10bc500 100644 --- a/apps/riak_cs/test/riak_cs_utils_eqc.erl +++ b/apps/riak_cs/test/riak_cs_utils_eqc.erl @@ -1,8 +1,23 @@ -%% ------------------------------------------------------------------- +%% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% -%% ------------------------------------------------------------------- +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- %% @doc Quickcheck test module for `riak_cs_utils'. diff --git a/apps/riak_cs/test/riak_cs_wm_bucket_test.erl b/apps/riak_cs/test/riak_cs_wm_bucket_test.erl index 73c707414..a019cdb94 100644 --- a/apps/riak_cs/test/riak_cs_wm_bucket_test.erl +++ b/apps/riak_cs/test/riak_cs_wm_bucket_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_wm_key_test.erl b/apps/riak_cs/test/riak_cs_wm_key_test.erl index 0aede8c16..22d5394a1 100644 --- a/apps/riak_cs/test/riak_cs_wm_key_test.erl +++ b/apps/riak_cs/test/riak_cs_wm_key_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_wm_service_test.erl b/apps/riak_cs/test/riak_cs_wm_service_test.erl index 23f3d1cc9..bef941f05 100644 --- a/apps/riak_cs/test/riak_cs_wm_service_test.erl +++ b/apps/riak_cs/test/riak_cs_wm_service_test.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_cs_wm_test_utils.erl b/apps/riak_cs/test/riak_cs_wm_test_utils.erl index 5cd7fdbc9..b465b2abc 100644 --- a/apps/riak_cs/test/riak_cs_wm_test_utils.erl +++ b/apps/riak_cs/test/riak_cs_wm_test_utils.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_object.erl b/apps/riak_cs/test/riak_object.erl index fe9060cf3..437a0b451 100644 --- a/apps/riak_cs/test/riak_object.erl +++ b/apps/riak_cs/test/riak_object.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riak_socket_dummy.erl b/apps/riak_cs/test/riak_socket_dummy.erl index f948c4e42..1bfdce8d9 100644 --- a/apps/riak_cs/test/riak_socket_dummy.erl +++ b/apps/riak_cs/test/riak_socket_dummy.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/riakc_pb_socket_fake.erl b/apps/riak_cs/test/riakc_pb_socket_fake.erl index 951cd403e..7c30e308a 100644 --- a/apps/riak_cs/test/riakc_pb_socket_fake.erl +++ b/apps/riak_cs/test/riakc_pb_socket_fake.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -161,5 +162,3 @@ code_change(_OldVsn, State, _Extra) -> %%%=================================================================== %%% Internal functions %%%=================================================================== - - diff --git a/apps/riak_cs/test/twop_set_eqc.erl b/apps/riak_cs/test/twop_set_eqc.erl index 7d09b18dd..c5d5a6060 100644 --- a/apps/riak_cs/test/twop_set_eqc.erl +++ b/apps/riak_cs/test/twop_set_eqc.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/rel/tools/internal/block_audit.erl b/rel/tools/internal/block_audit.erl index 93e2aab82..6aa132f59 100755 --- a/rel/tools/internal/block_audit.erl +++ b/rel/tools/internal/block_audit.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved,. +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/rel/tools/internal/ensure_orphan_blocks.erl b/rel/tools/internal/ensure_orphan_blocks.erl index b5b149951..3a5eb99b9 100755 --- a/rel/tools/internal/ensure_orphan_blocks.erl +++ b/rel/tools/internal/ensure_orphan_blocks.erl @@ -1,6 +1,7 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved,. +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -243,4 +244,3 @@ write_uuid(_Opts, Output, CSBucket, UUID, Seq, CSKey) -> mochihex:to_hex(CSKey), $\t, mochihex:to_hex(UUID), $\t, integer_to_list(Seq), $\n]). - diff --git a/rel/tools/internal/offline_delete.erl b/rel/tools/internal/offline_delete.erl index 9c3c32ab4..45ecc7d3d 100755 --- a/rel/tools/internal/offline_delete.erl +++ b/rel/tools/internal/offline_delete.erl @@ -2,7 +2,8 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2015 Basho Technologies, Inc. All Rights Reserved,. +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/rel/tools/internal/riak_cs_inspector.erl b/rel/tools/internal/riak_cs_inspector.erl index 7dade03b9..cdf4243c7 100755 --- a/rel/tools/internal/riak_cs_inspector.erl +++ b/rel/tools/internal/riak_cs_inspector.erl @@ -2,7 +2,8 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2013 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2013 Basho Technologies, Inc. All Rights Reserved,. +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/rel/tools/internal/select_gc_bucket.erl b/rel/tools/internal/select_gc_bucket.erl index 8ea787857..58d316c3a 100644 --- a/rel/tools/internal/select_gc_bucket.erl +++ b/rel/tools/internal/select_gc_bucket.erl @@ -2,7 +2,8 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2015 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2015 Basho Technologies, Inc. All Rights Reserved,. +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/rel/tools/repair_gc_bucket.erl b/rel/tools/repair_gc_bucket.erl index 720bb37c7..22d4e3e0b 100755 --- a/rel/tools/repair_gc_bucket.erl +++ b/rel/tools/repair_gc_bucket.erl @@ -2,7 +2,8 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2014 Basho Technologies, Inc. All Rights Reserved. +%% Copyright (c) 2014 Basho Technologies, Inc. All Rights Reserved,. +%% 2021 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file From fb52120ee7f8b4333445d3fd0b880a0051c72093 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Jul 2021 20:44:01 +0300 Subject: [PATCH 165/831] add CONTRIBUTORS --- CONTRIBUTORS | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 CONTRIBUTORS diff --git a/CONTRIBUTORS b/CONTRIBUTORS new file mode 100644 index 000000000..27a43f6e1 --- /dev/null +++ b/CONTRIBUTORS @@ -0,0 +1,57 @@ +Riak CS was created at Basho Tecnologies, Inc. by various contributors +employed by that company during 2007-15. Committers' names, as +extracted from git history, are as follows: + + Alex Wilson + Andrew J. Stone + Andrew Thompson + Andy Gross + Bishop Bors + Bryan Fink + Charlie Voiselle + Christian Dahlqvist + Christopher Meiklejohn + Christopher Molozian + Dave Parfitt + Dave Smith + Drew Pirrone-Brusse + Gabriel Nicolas Avellaneda + Greg Cymbalski + Hector Castro + Ian Plosker + Jared Morrow + Jimmy Mullen + Joe Caswell + Joe DeVivo + John Daily + Jon Anderson + Jon Glick + Jordan West + Junya Namai + Justin Pease + Kazuhiro Suzuki + Kelly McLaughlin + Kenji Rikitake + Lauren Rother + Luc Perkins + Macneil Shonle + Magnus Kessler + Marcel Neuhausler + Mark Allen + Martin Cox + Nicholas Adams + Paul Hagan + Reid Draper + Scott Lystig Fritchie + Sean Cribbs + Seema Jethani + Shunichi Shinohara + Ted Burghart + Uenishi Kota + +Plus, a few persons whose names could not be ascertained: + + mexicat + pavlobaron + +In 2021, Andriy (Andrei) Zavada resumed development, as an employee at TI Tokyo. From 2fb3b4ac5a80457965815376bbdbbf65aeb4f184 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 14 Jul 2021 16:26:51 +0300 Subject: [PATCH 166/831] chmod -x escripts in tools/internal/* --- rel/tools/internal/block_audit.erl | 0 rel/tools/internal/ensure_orphan_blocks.erl | 0 rel/tools/internal/offline_delete.erl | 0 rel/tools/internal/riak_cs_inspector.erl | 0 rel/tools/repair_gc_bucket.erl | 0 5 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 rel/tools/internal/block_audit.erl mode change 100755 => 100644 rel/tools/internal/ensure_orphan_blocks.erl mode change 100755 => 100644 rel/tools/internal/offline_delete.erl mode change 100755 => 100644 rel/tools/internal/riak_cs_inspector.erl mode change 100755 => 100644 rel/tools/repair_gc_bucket.erl diff --git a/rel/tools/internal/block_audit.erl b/rel/tools/internal/block_audit.erl old mode 100755 new mode 100644 diff --git a/rel/tools/internal/ensure_orphan_blocks.erl b/rel/tools/internal/ensure_orphan_blocks.erl old mode 100755 new mode 100644 diff --git a/rel/tools/internal/offline_delete.erl b/rel/tools/internal/offline_delete.erl old mode 100755 new mode 100644 diff --git a/rel/tools/internal/riak_cs_inspector.erl b/rel/tools/internal/riak_cs_inspector.erl old mode 100755 new mode 100644 diff --git a/rel/tools/repair_gc_bucket.erl b/rel/tools/repair_gc_bucket.erl old mode 100755 new mode 100644 From 994d692039bd2feb6f0c885e80d9c380156ab63f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 14 Jul 2021 18:41:49 +0300 Subject: [PATCH 167/831] update riak_cs_multibag tag and sha --- rebar.config | 2 +- rebar.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index c846c51c7..ebd3a6aac 100644 --- a/rebar.config +++ b/rebar.config @@ -29,7 +29,7 @@ , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "riak_kv-3.0.5"}}} - , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "riak_kv-3.0.2"}}} + , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.3"}}} , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} ] }. diff --git a/rebar.lock b/rebar.lock index b8a16397d..104799af8 100644 --- a/rebar.lock +++ b/rebar.lock @@ -37,7 +37,7 @@ 1}, {<<"riak_cs_multibag">>, {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", - {ref,"230127a0acc537094225ba802e880275e2455480"}}, + {ref,"df75f4e4ce4c5748a984521d8580bfbcf67e3462"}}, 0}, {<<"riak_pb">>, {git,"git://github.com/basho/riak_pb.git", From 3a3c3279a9b1c7a49ef3e187d254a606223c2cf2 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 14 Jul 2021 23:49:00 +0300 Subject: [PATCH 168/831] move pkg.vars.config out of root dir (may still need attention) --- pkg.vars.config => rel/pkg/pkg.vars.config | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pkg.vars.config => rel/pkg/pkg.vars.config (100%) diff --git a/pkg.vars.config b/rel/pkg/pkg.vars.config similarity index 100% rename from pkg.vars.config rename to rel/pkg/pkg.vars.config From 22a1c1106dd95ef07a94f1ad8adb618bd0a7040e Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 15 Jul 2021 00:03:51 +0300 Subject: [PATCH 169/831] update riak_cs_multibag tag and sha once again --- rebar.config | 2 +- rebar.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index ebd3a6aac..5267aed6e 100644 --- a/rebar.config +++ b/rebar.config @@ -29,7 +29,7 @@ , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "riak_kv-3.0.5"}}} - , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.3"}}} + , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.4"}}} , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} ] }. diff --git a/rebar.lock b/rebar.lock index 104799af8..ebb72f4f7 100644 --- a/rebar.lock +++ b/rebar.lock @@ -37,7 +37,7 @@ 1}, {<<"riak_cs_multibag">>, {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", - {ref,"df75f4e4ce4c5748a984521d8580bfbcf67e3462"}}, + {ref,"0bfde6527a3068bdee23cb7439954faff6b9a7a9"}}, 0}, {<<"riak_pb">>, {git,"git://github.com/basho/riak_pb.git", From 22465c5d899f0e647cab9701efe8f6d3cecbdbfa Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 15 Jul 2021 16:57:58 +0300 Subject: [PATCH 170/831] tweak CONTRIBUTORS --- CONTRIBUTORS | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 27a43f6e1..dfffd42c9 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -38,8 +38,7 @@ extracted from git history, are as follows: Magnus Kessler Marcel Neuhausler Mark Allen - Martin Cox - Nicholas Adams + Pavlo Baron Paul Hagan Reid Draper Scott Lystig Fritchie @@ -48,10 +47,12 @@ extracted from git history, are as follows: Shunichi Shinohara Ted Burghart Uenishi Kota - -Plus, a few persons whose names could not be ascertained: - mexicat - pavlobaron -In 2021, Andriy (Andrei) Zavada resumed development, as an employee at TI Tokyo. +Since the days of Basho, development and maintenance work has been +done with contributions from: + + Andriy Zavada + Martin Cox + Nicholas Adams + Peter Clark From 96a1c9e70eb06c628f131cdf4f1c1f8882330848 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 19 Jul 2021 18:24:09 +0300 Subject: [PATCH 171/831] bump deps following riak_repl and riak_pb merges --- rebar.config | 6 +++--- rebar.lock | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rebar.config b/rebar.config index 5267aed6e..8d36f1f37 100644 --- a/rebar.config +++ b/rebar.config @@ -25,11 +25,11 @@ , {mochiweb, "v2.20.1"} , {exometer_core, "v1.5.7"} , {uuid, ".*", {git, "git://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} - , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "riak_kv-3.0.2"}}} + , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "3.0.7"}}} , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "riak_kv-3.0.5"}}} - , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.4"}}} + , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} + , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} ] }. diff --git a/rebar.lock b/rebar.lock index ebb72f4f7..22d5a74c9 100644 --- a/rebar.lock +++ b/rebar.lock @@ -37,19 +37,19 @@ 1}, {<<"riak_cs_multibag">>, {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", - {ref,"0bfde6527a3068bdee23cb7439954faff6b9a7a9"}}, + {ref,"0e3cac45f8e138b1ac8eee1519d2f3da7b5273f6"}}, 0}, {<<"riak_pb">>, {git,"git://github.com/basho/riak_pb.git", - {ref,"6dbf0fb30f126721b5cea6d298f0023dc986d01f"}}, + {ref,"3129374435d67086e05f97a92482ef7f280aa7c7"}}, 1}, {<<"riak_repl_pb_api">>, {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", - {ref,"39bbd1af655b1855e1af32b2624417750f9e7bdd"}}, + {ref,"64476172209242af64ed78db7dd705d07189316a"}}, 0}, {<<"riakc">>, {git,"git://github.com/basho/riak-erlang-client", - {ref,"e51b233a43cfe606bbab9b0e2881609f6d846f0e"}}, + {ref,"07c9582c9fd97f8252e0a3e488d6ebc08a9a4172"}}, 0}, {<<"setup">>,{pkg,<<"setup">>,<<"2.0.2">>},1}, {<<"syslog">>, From 3c3d5639eea42e11c209f562c0becfed4cd04f6c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 20 Jul 2021 00:49:25 +0300 Subject: [PATCH 172/831] Revert "only compile test-specific riak_cs_get_fsm:init when TEST is defined" This reverts commit 2d91f08c77fffa26490082f966007dd1c0f88643. --- apps/riak_cs/src/riak_cs_get_fsm.erl | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl index 0931114d0..cee01eadd 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm.erl @@ -126,7 +126,6 @@ chunk(Pid, ChunkSeq, ChunkValue) -> %% gen_fsm callbacks %% ==================================================================== --ifndef(TEST). init([Bucket, Key, Caller, RcPid, FetchConcurrency, BufferFactor]) when is_binary(Bucket), is_binary(Key), is_pid(Caller), is_pid(RcPid), @@ -156,8 +155,7 @@ init([Bucket, Key, Caller, RcPid, FetchConcurrency, BufferFactor]) riak_client=RcPid, buffer_factor=BufferFactor, fetch_concurrency=FetchConcurrency}, - {ok, prepare, State, 0}. --else. + {ok, prepare, State, 0}; init([test, Bucket, Key, Caller, ContentLength, BlockSize, FetchConcurrency, BufferFactor]) -> {ok, prepare, State1, 0} = init([Bucket, Key, Caller, self(), @@ -180,7 +178,6 @@ init([test, Bucket, Key, Caller, ContentLength, BlockSize, FetchConcurrency, {ok, waiting_value, State1#state{free_readers=RPs, manifest=Manifest, test=true}}. --endif. prepare(timeout, State) -> NewState = prepare(State), From e23c4a5e221dd7d1d1a85e0ca7ca6b3b3d7acf42 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 20 Jul 2021 00:48:58 +0300 Subject: [PATCH 173/831] eqc->proper conversion --- Makefile | 8 ++ apps/riak_cs/src/riak_cs_gc_manager.erl | 9 +- apps/riak_cs/src/riak_cs_s3_rewrite.erl | 5 +- apps/riak_cs/test/cs782_regression_test.erl | 3 - ...ils_eqc.erl => prop_riak_cs_acl_utils.erl} | 21 ++- ...er_eqc.erl => prop_riak_cs_gc_manager.erl} | 52 ++++--- ...eqc.erl => prop_riak_cs_gc_single_run.erl} | 46 +++---- ...t_fsm_eqc.erl => prop_riak_cs_get_fsm.erl} | 93 +++++++------ ...ils_eqc.erl => prop_riak_cs_lfs_utils.erl} | 25 ++-- ....erl => prop_riak_cs_list_objects_fsm.erl} | 20 +-- ...l => prop_riak_cs_list_objects_fsm_v2.erl} | 46 +++---- ...l => prop_riak_cs_manifest_resolution.erl} | 40 +++--- ...qc.erl => prop_riak_cs_manifest_utils.erl} | 40 +++--- ..._auth_eqc.erl => prop_riak_cs_s3_auth.erl} | 21 +-- ...icy_eqc.erl => prop_riak_cs_s3_policy.erl} | 48 +++---- ...te_eqc.erl => prop_riak_cs_s3_rewrite.erl} | 30 ++--- ...s_utils_eqc.erl => prop_riak_cs_utils.erl} | 24 ++-- .../{twop_set_eqc.erl => prop_twop_set.erl} | 127 +++++++++--------- apps/riak_cs/test/riak_cs_gen.erl | 9 +- rebar.config | 7 + 20 files changed, 315 insertions(+), 359 deletions(-) rename apps/riak_cs/test/{riak_cs_acl_utils_eqc.erl => prop_riak_cs_acl_utils.erl} (83%) rename apps/riak_cs/test/{riak_cs_gc_manager_eqc.erl => prop_riak_cs_gc_manager.erl} (80%) rename apps/riak_cs/test/{riak_cs_gc_single_run_eqc.erl => prop_riak_cs_gc_single_run.erl} (93%) rename apps/riak_cs/test/{riak_cs_get_fsm_eqc.erl => prop_riak_cs_get_fsm.erl} (69%) rename apps/riak_cs/test/{riak_cs_lfs_utils_eqc.erl => prop_riak_cs_lfs_utils.erl} (84%) rename apps/riak_cs/test/{riak_cs_list_objects_fsm_eqc.erl => prop_riak_cs_list_objects_fsm.erl} (87%) rename apps/riak_cs/test/{riak_cs_list_objects_fsm_v2_eqc.erl => prop_riak_cs_list_objects_fsm_v2.erl} (91%) rename apps/riak_cs/test/{riak_cs_manifest_resolution_eqc.erl => prop_riak_cs_manifest_resolution.erl} (80%) rename apps/riak_cs/test/{riak_cs_manifest_utils_eqc.erl => prop_riak_cs_manifest_utils.erl} (86%) rename apps/riak_cs/test/{riak_cs_s3_auth_eqc.erl => prop_riak_cs_s3_auth.erl} (91%) rename apps/riak_cs/test/{riak_cs_s3_policy_eqc.erl => prop_riak_cs_s3_policy.erl} (90%) rename apps/riak_cs/test/{riak_cs_s3_rewrite_eqc.erl => prop_riak_cs_s3_rewrite.erl} (85%) rename apps/riak_cs/test/{riak_cs_utils_eqc.erl => prop_riak_cs_utils.erl} (75%) rename apps/riak_cs/test/{twop_set_eqc.erl => prop_twop_set.erl} (75%) diff --git a/Makefile b/Makefile index 510d9f615..f561322c6 100644 --- a/Makefile +++ b/Makefile @@ -49,6 +49,14 @@ relclean: rm -rf $(REL_DIR) rm -rf rel/riak-cs +## +## test targets +## +test: eunit proper + +eunit: + $(REBAR) eunit + ## ## Developer targets ## diff --git a/apps/riak_cs/src/riak_cs_gc_manager.erl b/apps/riak_cs/src/riak_cs_gc_manager.erl index f7ea3e8c6..2ff044296 100644 --- a/apps/riak_cs/src/riak_cs_gc_manager.erl +++ b/apps/riak_cs/src/riak_cs_gc_manager.erl @@ -129,6 +129,8 @@ finished(Report) -> %%% gen_fsm callbacks %%%=================================================================== +-ifndef(TEST). + init([]) -> process_flag(trap_exit, true), InitialDelay = riak_cs_gc:initial_gc_delay(), @@ -147,10 +149,15 @@ init([]) -> initial_delay=InitialDelay, timer_ref=TimerRef} end, - {ok, idle, State}; + {ok, idle, State}. + +-else. + init([testing]) -> {ok, idle, #gc_manager_state{}}. +-endif. + %%-------------------------------------------------------------------- %% @private %% @doc All gen_fsm:send_event/2 call should be ignored diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/riak_cs_s3_rewrite.erl index b6525bd10..35d524cae 100644 --- a/apps/riak_cs/src/riak_cs_s3_rewrite.erl +++ b/apps/riak_cs/src/riak_cs_s3_rewrite.erl @@ -67,12 +67,9 @@ -spec rewrite(atom(), atom(), {integer(), integer()}, mochiweb_headers(), string()) -> {mochiweb_headers(), string()}. rewrite(Method, _Scheme, _Vsn, Headers, Url) -> - lager:debug("rewriting ~p ~p", [Method, Url]), riak_cs_dtrace:dt_wm_entry(?MODULE, <<"rewrite">>), {Path, QueryString, _} = mochiweb_util:urlsplit_path(Url), - Res = rewrite_path_and_headers(Method, Headers, Url, Path, QueryString), - lager:debug("rewritten ~p", [Res]), - Res. + rewrite_path_and_headers(Method, Headers, Url, Path, QueryString). -spec original_resource(term()) -> undefined | {string(), [{term(),term()}]}. original_resource(RD) -> diff --git a/apps/riak_cs/test/cs782_regression_test.erl b/apps/riak_cs/test/cs782_regression_test.erl index 21d362073..5958f31bd 100644 --- a/apps/riak_cs/test/cs782_regression_test.erl +++ b/apps/riak_cs/test/cs782_regression_test.erl @@ -21,9 +21,6 @@ -module(cs782_regression_test). --compile(export_all). --compile(nowarn_export_all). - -include("riak_cs.hrl"). -include_lib("eunit/include/eunit.hrl"). diff --git a/apps/riak_cs/test/riak_cs_acl_utils_eqc.erl b/apps/riak_cs/test/prop_riak_cs_acl_utils.erl similarity index 83% rename from apps/riak_cs/test/riak_cs_acl_utils_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_acl_utils.erl index 764268adc..61968cacf 100644 --- a/apps/riak_cs/test/riak_cs_acl_utils_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_acl_utils.erl @@ -19,16 +19,13 @@ %% %% --------------------------------------------------------------------- -%% @doc Quickcheck test module for `riak_cs_acl_utils'. +%% @doc PropErtest module for `riak_cs_acl_utils'. --module(riak_cs_acl_utils_eqc). --compile(export_all). --compile(nowarn_export_all). +-module(prop_riak_cs_acl_utils). -include("riak_cs.hrl"). --ifdef(EQC). --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). %% eqc property @@ -39,7 +36,7 @@ test/1]). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> + proper:on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). -define(TEST_ITERATIONS, 1000). @@ -50,8 +47,8 @@ eqc_test_() -> {spawn, [ - {timeout, 60, ?_assertEqual(true, quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_add_grant_idempotent()))))}, - {timeout, 60, ?_assertEqual(true, quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_grant_gives_permission()))))} + {timeout, 60, ?_assertEqual(true, proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_add_grant_idempotent()))))}, + {timeout, 60, ?_assertEqual(true, proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_grant_gives_permission()))))} ] }. @@ -100,7 +97,5 @@ test() -> test(?TEST_ITERATIONS). test(Iterations) -> - eqc:quickcheck(eqc:numtests(Iterations, prop_add_grant_idempotent())), - eqc:quickcheck(eqc:numtests(Iterations, prop_grant_gives_permission())). - --endif. + proper:quickcheck(proper:numtests(Iterations, prop_add_grant_idempotent())), + proper:quickcheck(proper:numtests(Iterations, prop_grant_gives_permission())). diff --git a/apps/riak_cs/test/riak_cs_gc_manager_eqc.erl b/apps/riak_cs/test/prop_riak_cs_gc_manager.erl similarity index 80% rename from apps/riak_cs/test/riak_cs_gc_manager_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_gc_manager.erl index 647205e5e..dcd5d02d2 100644 --- a/apps/riak_cs/test/riak_cs_gc_manager_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_gc_manager.erl @@ -19,18 +19,18 @@ %% %% --------------------------------------------------------------------- -%% @doc Quickcheck test module for `riak_cs_gc_manager'. +%% @doc PropEr test module for `riak_cs_gc_manager'. --module(riak_cs_gc_manager_eqc). +-module(prop_riak_cs_gc_manager). + +-compile([{nowarn_deprecated_function, [{gen_fsm, sync_send_all_state_event, 2}]}]). -include("include/riak_cs_gc.hrl"). --ifdef(EQC). --include_lib("eqc/include/eqc.hrl"). --include_lib("eqc/include/eqc_fsm.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -%% eqc properties +%% proper properties -export([prop_set_interval/0, prop_manual_commands/0]). @@ -38,7 +38,7 @@ -export([idle/1, running/1]). -%% eqc_fsm callbacks +%% proper_fsm callbacks -export([initial_state/0, initial_state_data/0, next_state_data/5, @@ -46,8 +46,8 @@ postcondition/5]). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> - io:format(user, Str, Args) end, P)). + on_output(fun(Str, Args) -> + io:format(user, Str, Args) end, P)). -define(TEST_ITERATIONS, 500). @@ -65,7 +65,7 @@ %% Eunit tests %%==================================================================== -eqc_test_() -> +proper_test_() -> {spawn, [{foreach, fun() -> @@ -78,8 +78,8 @@ eqc_test_() -> meck:unload() end, [ - {timeout, 20, ?_assertEqual(true, eqc:quickcheck(eqc:testing_time(10, ?QC_OUT(prop_set_interval()))))}, - {timeout, 60, ?_assertEqual(true, eqc:quickcheck(eqc:testing_time(30, ?QC_OUT(prop_manual_commands()))))} + {timeout, 20, ?_assertEqual(true, proper:quickcheck(?QC_OUT(prop_set_interval())))}, + {timeout, 60, ?_assertEqual(true, proper:quickcheck(?QC_OUT(prop_manual_commands())))} ] }]}. @@ -109,19 +109,19 @@ prop_set_interval() -> prop_manual_commands() -> ?FORALL(Cmds, - commands(?MODULE), + proper_fsm:commands(?MODULE), begin {ok, Pid} = riak_cs_gc_manager:test_link(), try - {H, {_F, _S}, Res} = run_commands(?MODULE, Cmds), - aggregate(zip(state_names(H), command_names(Cmds)), + {H, _, Res} = proper_fsm:run_commands(?MODULE, Cmds), + aggregate(zip(proper_fsm:state_names(H), command_names(Cmds)), ?WHENFAIL( begin - eqc:format("Cmds: ~p~n~n", - [zip(state_names(H), - command_names(Cmds))]), - eqc:format("Result: ~p~n~n", [Res]), - eqc:format("History: ~p~n~n", [H]) + io:format("Cmds: ~p~n~n", + [zip(proper_fsm:state_names(H), + command_names(Cmds))]), + io:format("Result: ~p~n~n", [Res]), + io:format("History: ~p~n~n", [H]) end, equals(ok, Res))) after @@ -130,7 +130,7 @@ prop_manual_commands() -> end). %%==================================================================== -%% eqc_fsm callbacks +%% proper_fsm callbacks %%==================================================================== idle(_S) -> @@ -161,7 +161,7 @@ next_state_data(_From, _To, S, _R, _C) -> precondition(_From, _To, _S, _C) -> true. -postcondition(From, To, S , {call, _M, ManualCommad, _A}=C, R) -> +postcondition(From, To, S, {call, _M, ManualCommad, _A}=C, R) -> {ok, {Actual, _, _}} = riak_cs_gc_manager:status(), ?assertEqual(To, Actual), ExpectedRes = expected_result(From, To, ManualCommad), @@ -169,9 +169,9 @@ postcondition(From, To, S , {call, _M, ManualCommad, _A}=C, R) -> ExpectedRes when ManualCommad =/= status -> true; {ok, {S, _}} -> true; _ -> - eqc:format("Result: ~p~n", [R]), - eqc:format("Expected: ~p~n", [ExpectedRes]), - eqc:format("when {From, To, S, C}: ~p <- ~p~n", [{From, To, S, C}, ManualCommad]), + io:format("Result: ~p~n", [R]), + io:format("Expected: ~p~n", [ExpectedRes]), + io:format("when {From, To, S, C}: ~p <- ~p~n", [{From, To, S, C}, ManualCommad]), false end. @@ -211,5 +211,3 @@ hold_until_unregisterd(RegName, N) -> timer:sleep(1), hold_until_unregisterd(RegName, N - 1) end. - --endif. diff --git a/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl b/apps/riak_cs/test/prop_riak_cs_gc_single_run.erl similarity index 93% rename from apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_gc_single_run.erl index 2add1f678..614248a06 100644 --- a/apps/riak_cs/test/riak_cs_gc_single_run_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_gc_single_run.erl @@ -19,19 +19,22 @@ %% %% --------------------------------------------------------------------- -%% @doc EQC test module for single gc run. +%% @doc PropEr test module for single gc run. %% Test targets is a combination of `riak_cs_gc_batch' and `riak_cs_gc_worker'. %% All calls to riak, 2i/GET/DELETE, are mocked away by `meck'. --module(riak_cs_gc_single_run_eqc). +-module(prop_riak_cs_gc_single_run). + +-export([prop_epochspec/0, + prop_gc_batch/1]). + +-export([]). -include("riak_cs_gc.hrl"). --ifdef(EQC). --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). --compile(export_all). -type fileset_keys_input() :: {num_fileset_keys(), no_error}. -type num_fileset_keys() :: non_neg_integer(). @@ -55,14 +58,14 @@ -define(BLOCK_NUM_IN_MANIFEST, 20). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). + proper:on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). -define(TESTING_TIME, 30). %%==================================================================== %% Eunit tests %%==================================================================== -eqc_test_() -> +proper_test_() -> {foreach, fun() -> application:set_env(lager, handlers, []), @@ -87,20 +90,17 @@ eqc_test_() -> end, [ {timeout, ?TESTING_TIME*2, - ?_assert(quickcheck(eqc:testing_time(?TESTING_TIME, - ?QC_OUT(prop_epochspec()))))}, + ?_assert(proper:quickcheck(?QC_OUT(prop_epochspec())))}, {timeout, ?TESTING_TIME*2, - ?_assert(quickcheck(eqc:testing_time(?TESTING_TIME, - ?QC_OUT(prop_gc_batch(no_error)))))}, + ?_assert(proper:quickcheck(?QC_OUT(prop_gc_batch(no_error))))}, {timeout, ?TESTING_TIME*2, - ?_assert(quickcheck(eqc:testing_time(?TESTING_TIME, - ?QC_OUT(prop_gc_batch(with_errors)))))} + ?_assert(proper:quickcheck(?QC_OUT(prop_gc_batch(with_errors))))} ]}. prop_epochspec() -> ?FORALL({N0, N1, N2, Leeway, BatchSize, MaxWorkers}, {nat2(), nat2(), nat2(), oneof([nat(), nat2()]), - pos_integer(), pos_integer()}, + small_pos_integer(), small_pos_integer()}, begin %[StartKey, EndKey, BatchStart] = [N+1000000000||N<-lists:sort([N0,N1,N2])], [StartKey, EndKey, BatchStart] = lists:sort([N0,N1,N2]), @@ -117,7 +117,7 @@ prop_epochspec() -> nat2() -> low_bounded_int(1000000000). -pos_integer() -> +small_pos_integer() -> low_bounded_int(1). low_bounded_int(LB) -> @@ -136,7 +136,7 @@ prop_gc_batch(ErrorOrNot) -> ?FORALL({ListOfFilesetKeysInput, BatchSize, MaxWorkers}, {non_empty(list(fileset_keys_input(ErrorOrNot))), - pos_integer(), pos_integer()}, + small_pos_integer(), small_pos_integer()}, begin Self = self(), meck:expect(riak_cs_gc_manager, finished, @@ -151,7 +151,7 @@ prop_gc_batch(ErrorOrNot) -> stop_and_wait_for_gc_batch(), ?WHENFAIL( begin - eqc:format("ListOfFilesetKeysInput: ~p~n", + proper:format("ListOfFilesetKeysInput: ~p~n", [ListOfFilesetKeysInput]) end, conjunction([{batch_count, equals(ExpectedBatchCount, element(1, Res))}, @@ -176,7 +176,7 @@ wait_for_stop(Pid) -> ok end. --spec gc_batch([fileset_keys_input()], pos_integer(), pos_integer()) -> eqc:property(). +-spec gc_batch([fileset_keys_input()], pos_integer(), pos_integer()) -> proper:property(). gc_batch(ListOfFilesetKeysInput, BatchSize, MaxWorkers) -> %% For `riak-cs-gc' 2i query, use a process to hold `ListOfFilesetKeysInput'. %% ?debugVal(ListOfFilesetKeysInput), @@ -201,7 +201,7 @@ gc_batch(ListOfFilesetKeysInput, BatchSize, MaxWorkers) -> block_count=BlockCount} = _State} -> {BatchCount, BatchSkips, ManifCount, BlockCount}; OtherMsg -> - eqc:format("OtherMsg: ~p~n", [OtherMsg]), + proper:format("OtherMsg: ~p~n", [OtherMsg]), {error, error, error, error} end. @@ -232,7 +232,7 @@ expectations(ListOfFilesetKeysInput) -> %% Generator of numbers of fileset keys included in a single object %% of the `riak-cs-gc' bucket, with information of error injection. -spec fileset_keys_input(no_error | with_errors) -> - eqc_gen:gen({non_neg_integer(), error_or_not()}). + proper_gen:gen({non_neg_integer(), error_or_not()}). fileset_keys_input(no_error) -> {num_fileset_keys(), no_error}; fileset_keys_input(with_errors) -> @@ -241,7 +241,7 @@ fileset_keys_input(with_errors) -> {1, {num_fileset_keys(), {error, in_fileset_delete}}}, {1, {num_fileset_keys(), {error, in_block_delete}}}]). --spec num_fileset_keys() -> eqc_gen:gen(Positive::integer()). +-spec num_fileset_keys() -> proper_gen:gen(Positive::integer()). num_fileset_keys() -> ?LET(N, nat(), N+1). @@ -409,12 +409,10 @@ meck_pool_worker() -> dummy_pbc() -> receive stop -> ok; - M -> eqc:format("dummy_worker received M: ~p~n", [M]), + M -> proper:format("dummy_worker received M: ~p~n", [M]), dummy_pbc() end. -spec i2b(integer()) -> binary(). i2b(Integer) -> list_to_binary(integer_to_list(Integer)). - --endif. diff --git a/apps/riak_cs/test/riak_cs_get_fsm_eqc.erl b/apps/riak_cs/test/prop_riak_cs_get_fsm.erl similarity index 69% rename from apps/riak_cs/test/riak_cs_get_fsm_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_get_fsm.erl index 7a18cf396..3d134ebac 100644 --- a/apps/riak_cs/test/riak_cs_get_fsm_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_get_fsm.erl @@ -19,37 +19,37 @@ %% %% --------------------------------------------------------------------- -%% @doc Quickcheck test module for `riak_cs_get_fsm'. +%% @doc PropEr test module for `riak_cs_get_fsm'. --module(riak_cs_get_fsm_eqc). +-module(prop_riak_cs_get_fsm). --ifdef(EQC). - --include_lib("eqc/include/eqc.hrl"). --include_lib("eqc/include/eqc_fsm.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). %% Public API --compile(export_all). -export([test/0, test/1]). -%% eqc_fsm callbacks +%% proper_fsm callbacks -export([initial_state/0, next_state_data/5, precondition/4, - postcondition/5]). + postcondition/5, + start_fsm/2, + stop_fsm/1]). -%% eqc property +%% proper property -export([prop_get_fsm/0]). %% States -export([start/1, waiting_chunk/1, - stop/1]). + stop/1, + nop/0, + get_chunk/1]). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> - io:format(user, Str, Args) end, P)). + on_output(fun(Str, Args) -> + io:format(user, Str, Args) end, P)). -define(TEST_ITERATIONS, 500). -record(state, {fsm_pid :: pid(), %% real pid of riak_cs_get_fsm} @@ -61,7 +61,7 @@ %% Eunit tests %%==================================================================== -eqc_test_() -> +proper_test_() -> {spawn, [ {setup, @@ -69,7 +69,7 @@ eqc_test_() -> fun cleanup/1, [%% Run the quickcheck tests {timeout, 30, - ?_assertEqual(true, eqc:quickcheck(eqc:testing_time(15, ?QC_OUT(prop_get_fsm()))))} + ?_assertEqual(true, proper:quickcheck(?QC_OUT(prop_get_fsm())))} ] } ] @@ -89,34 +89,34 @@ test() -> test(?TEST_ITERATIONS). test(Iterations) -> - eqc:quickcheck(eqc:numtests(Iterations, prop_get_fsm())). + proper:quickcheck(numtests(Iterations, prop_get_fsm())). %% ==================================================================== -%% eqc property +%% proper property %% ==================================================================== prop_get_fsm() -> application:set_env(riak_cs, lfs_block_size, 1048576), - ?FORALL(State, #state{content_length=?LET(X, riak_cs_gen:bounded_content_length(), X * 10)}, - ?FORALL(Cmds, eqc_statem:more_commands(10, commands(?MODULE, {start, State})), - begin - {H, {_F, FinalState}, Res} = run_commands(?MODULE, Cmds), - #state{fsm_pid=FsmPid, content_length=ContentLength, - total_blocks=TotalBlocks, counter=Counter} = FinalState, - stop_fsm(FsmPid), - %% Collect stats how much percentages of blocks are consumed. - ConsumedPercentage = - case TotalBlocks of - undefined -> no_consumption; - _ -> min(100, trunc(100*(Counter)/TotalBlocks)) - end, - collect(with_title(consumed_percentage), ConsumedPercentage, - collect(with_title(content_length_mm), ContentLength/1000000, - collect(with_title(command_length), length(Cmds), - ?WHENFAIL(io:format("history is ~p ~n", [[S || {S, _Rs} <- H]]), - equals(ok, Res))))) - end)). + ?FORALL(State, #state{content_length = ?LET(X, riak_cs_gen:bounded_content_length(), X * 10)}, + ?FORALL(Cmds, proper_statem:more_commands(10, proper_fsm:commands(?MODULE, {start, State})), + begin + {H, {_F, FinalState}, Res} = proper_fsm:run_commands(?MODULE, Cmds), + #state{fsm_pid=FsmPid, content_length=ContentLength, + total_blocks=TotalBlocks, counter=Counter} = FinalState, + stop_fsm(FsmPid), + %% Collect stats how much percentages of blocks are consumed. + ConsumedPercentage = + case TotalBlocks of + undefined -> no_consumption; + _ -> min(100, trunc(100*(Counter)/TotalBlocks)) + end, + collect(with_title(consumed_percentage), ConsumedPercentage, + collect(with_title(content_length_mm), ContentLength/1000000, + collect(with_title(command_length), length(Cmds), + ?WHENFAIL(io:format("history is ~p ~n", [[S || {S, _Rs} <- H]]), + equals(ok, Res))))) + end)). %%==================================================================== %% Generators @@ -144,7 +144,7 @@ stop_fsm(_FsmPid) -> ok. %%==================================================================== -%% eqc_fsm callbacks +%% proper_fsm callbacks %%==================================================================== initial_state() -> @@ -156,8 +156,11 @@ next_state_data(start, waiting_chunk, #state{content_length=ContentLength}=S, R, next_state_data(waiting_chunk, waiting_chunk, #state{counter=Counter}=S, _R, _C) -> S#state{counter=Counter+1}; next_state_data(waiting_chunk, stop, S, _R, _C) -> + S; +next_state_data(stop, stop, S, _R, _C) -> S. + start(#state{content_length=ContentLength}) -> [{waiting_chunk, {call, ?MODULE, start_fsm, [ContentLength, block_size()]}}]. @@ -166,7 +169,9 @@ waiting_chunk(#state{fsm_pid=Pid}) -> {stop, {call, ?MODULE, stop_fsm, [Pid]}}]. stop(_S) -> - []. + [{history, {call, ?MODULE, nop, []}}]. +nop() -> + true. precondition(start, waiting_chunk, _S, _C) -> true; @@ -175,14 +180,20 @@ precondition(waiting_chunk, waiting_chunk, Counter =< TotalBlocks; precondition(waiting_chunk, stop, #state{counter=Counter, total_blocks=TotalBlocks}, _C) -> - Counter =:= TotalBlocks + 1. + Counter =:= TotalBlocks + 1; +precondition(stop, stop, _S, _C) -> + true. + postcondition(start, waiting_chunk, _State, _C, _R) -> true; postcondition(waiting_chunk, waiting_chunk, #state{counter=Counter}, _C, Response) -> validate_waiting_chunk_response(Counter, Response); postcondition(waiting_chunk, stop, #state{counter=Counter, total_blocks=TotalBlocks}, _C, _R) -> - Counter =:= TotalBlocks + 1. + Counter =:= TotalBlocks + 1; +postcondition(stop, stop, _, _, _) -> + true. + %%==================================================================== %% Helpers @@ -196,5 +207,3 @@ validate_waiting_chunk_response(_Counter, {done, Chunk}) -> block_size() -> riak_cs_lfs_utils:block_size(). - --endif. diff --git a/apps/riak_cs/test/riak_cs_lfs_utils_eqc.erl b/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl similarity index 84% rename from apps/riak_cs/test/riak_cs_lfs_utils_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_lfs_utils.erl index f406f9c55..525a09508 100644 --- a/apps/riak_cs/test/riak_cs_lfs_utils_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl @@ -19,17 +19,16 @@ %% %% --------------------------------------------------------------------- -%% @doc Quickcheck test module for `riak_cs_lfs_utils'. +%% @doc PropEr test module for `riak_cs_lfs_utils'. --module(riak_cs_lfs_utils_eqc). +-module(prop_riak_cs_lfs_utils). -include("riak_cs.hrl"). --ifdef(EQC). --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -%% eqc property +%% proper property -export([prop_block_count/0]). %% Helpers @@ -37,19 +36,19 @@ test/1]). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> - io:format(user, Str, Args) end, P)). + proper:on_output(fun(Str, Args) -> + io:format(user, Str, Args) end, P)). -define(TEST_ITERATIONS, 500). %%==================================================================== %% Eunit tests %%==================================================================== -eqc_test_() -> +proper_test_() -> {spawn, [ - {timeout, 20, ?_assertEqual(true, quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_block_count()))))}, - {timeout, 60, ?_assertEqual(true, quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_manifest_manipulation()))))} + {timeout, 20, ?_assertEqual(true, proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_block_count()))))}, + {timeout, 60, ?_assertEqual(true, proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_manifest_manipulation()))))} ] }. @@ -114,7 +113,5 @@ test() -> test(500). test(Iterations) -> - eqc:quickcheck(eqc:numtests(Iterations, prop_block_count())), - eqc:quickcheck(eqc:numtests(Iterations, prop_manifest_manipulation())). - --endif. + proper:quickcheck(proper:numtests(Iterations, prop_block_count())), + proper:quickcheck(proper:numtests(Iterations, prop_manifest_manipulation())). diff --git a/apps/riak_cs/test/riak_cs_list_objects_fsm_eqc.erl b/apps/riak_cs/test/prop_riak_cs_list_objects_fsm.erl similarity index 87% rename from apps/riak_cs/test/riak_cs_list_objects_fsm_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_list_objects_fsm.erl index 280cdea0f..105b4fc34 100644 --- a/apps/riak_cs/test/riak_cs_list_objects_fsm_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_list_objects_fsm.erl @@ -19,16 +19,12 @@ %% %% --------------------------------------------------------------------- --module(riak_cs_list_objects_fsm_eqc). +-module(prop_riak_cs_list_objects_fsm). --ifdef(EQC). - --compile(export_all). --include_lib("eqc/include/eqc.hrl"). --include_lib("eqc/include/eqc_fsm.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -%% eqc properties +%% proper properties -export([prop_index_of_first_greater_element/0]). %% Helpers @@ -37,14 +33,14 @@ -define(TEST_ITERATIONS, 500). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). + on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). %%==================================================================== %% Eunit tests %%==================================================================== -eqc_test() -> - ?assert(quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_index_of_first_greater_element())))). +proper_test() -> + ?assert(proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_index_of_first_greater_element())))). %% ==================================================================== %% EQC Properties @@ -79,7 +75,7 @@ test() -> test(?TEST_ITERATIONS). test(Iterations) -> - eqc:quickcheck(eqc:numtests(Iterations, prop_index_of_first_greater_element())). + proper:quickcheck(proper:numtests(Iterations, prop_index_of_first_greater_element())). %%==================================================================== @@ -105,5 +101,3 @@ positive_int() -> sorted_unique() -> ?LET(L, list(positive_int()), lists:usort(L)). - --endif. diff --git a/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl b/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl similarity index 91% rename from apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl index 5d2dc1a9c..f9d39f19a 100644 --- a/apps/riak_cs/test/riak_cs_list_objects_fsm_v2_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl @@ -19,18 +19,15 @@ %% %% --------------------------------------------------------------------- --module(riak_cs_list_objects_fsm_v2_eqc). +-module(prop_riak_cs_list_objects_fsm_v2). --ifdef(EQC). - --compile(export_all). --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -include_lib("riak_cs.hrl"). -include("list_objects.hrl"). -%% eqc properties +%% properties -export([prop_skip_past_prefix_and_delimiter/0, prop_prefix_must_be_in_between/0, prop_list_all_active_keys_without_delimiter/0, @@ -42,36 +39,36 @@ -define(TEST_ITERATIONS, 1000). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). + on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). %%==================================================================== %% Eunit tests %%==================================================================== -eqc_test_() -> +proper_test_() -> {spawn, [ {setup, fun setup/0, fun cleanup/1, [ - ?_assert(quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_skip_past_prefix_and_delimiter())))), - ?_assert(quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_prefix_must_be_in_between())))), + ?_assert(proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_skip_past_prefix_and_delimiter())))), + ?_assert(proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_prefix_must_be_in_between())))), {timeout, 10*60, % 10min. - ?_assert(quickcheck(numtests( - ?TEST_ITERATIONS, - ?QC_OUT(prop_list_all_active_keys_without_delimiter()))))}, + ?_assert(proper:quickcheck(numtests( + ?TEST_ITERATIONS, + ?QC_OUT(prop_list_all_active_keys_without_delimiter()))))}, {timeout, 10*60, % 10min. - ?_assert(quickcheck(numtests( - ?TEST_ITERATIONS, - ?QC_OUT(prop_list_all_active_keys_with_delimiter()))))} + ?_assert(proper:quickcheck(numtests( + ?TEST_ITERATIONS, + ?QC_OUT(prop_list_all_active_keys_with_delimiter()))))} ] } ]}. setup() -> error_logger:tty(false), - error_logger:logfile({open, "riak_cs_list_objects_fsm_v2_eqc.log"}), + error_logger:logfile({open, "riak_cs_list_objects_fsm_v2_proper.log"}), application:set_env(lager, handlers, []), exometer:start(), riak_cs_stats:init(), @@ -232,13 +229,10 @@ test() -> test(?TEST_ITERATIONS). test(Iterations) -> - eqc:quickcheck(eqc:numtests(Iterations, prop_skip_past_prefix_and_delimiter())), - eqc:quickcheck(eqc:numtests(Iterations, prop_prefix_must_be_in_between())), - eqc:quickcheck(eqc:numtests(Iterations, prop_list_all_active_keys_without_delimiter())), - eqc:quickcheck(eqc:numtests(Iterations, prop_list_all_active_keys_with_delimiter())). - -test(Iterations, Prop) -> - eqc:quickcheck(eqc:numtests(Iterations, ?MODULE:Prop())). + proper:quickcheck(numtests(Iterations, prop_skip_past_prefix_and_delimiter())), + proper:quickcheck(numtests(Iterations, prop_prefix_must_be_in_between())), + proper:quickcheck(numtests(Iterations, prop_list_all_active_keys_without_delimiter())), + proper:quickcheck(numtests(Iterations, prop_list_all_active_keys_with_delimiter())). %% TODO: Common prefix, more randomness @@ -367,7 +361,7 @@ format_diff({NumKeys, StateFlavor, PrefixFlavor}, ok. output_entries(Manifests) -> - FileName = <<".riak_cs_list_objects_fsm_v2_eqc.txt">>, + FileName = <<".riak_cs_list_objects_fsm_v2_proper.txt">>, io:format("Write states and keys to file: ~s ...", [filename:absname(FileName)]), {ok, File} = file:open(FileName, [write, raw]), output_entries(File, Manifests, 1), @@ -424,5 +418,3 @@ print_key_and_manifest(Key, Label, [M | Manifests]) -> _ -> print_key_and_manifest(Key, Label, Manifests) end. - --endif. diff --git a/apps/riak_cs/test/riak_cs_manifest_resolution_eqc.erl b/apps/riak_cs/test/prop_riak_cs_manifest_resolution.erl similarity index 80% rename from apps/riak_cs/test/riak_cs_manifest_resolution_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_manifest_resolution.erl index f55a0a7de..b62628731 100644 --- a/apps/riak_cs/test/riak_cs_manifest_resolution_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_manifest_resolution.erl @@ -19,18 +19,14 @@ %% %% --------------------------------------------------------------------- --module(riak_cs_manifest_resolution_eqc). +-module(prop_riak_cs_manifest_resolution). --ifdef(EQC). - --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -include_lib("riak_cs.hrl"). --compile(export_all). - -%% eqc property +%% proper property -export([prop_resolution_commutative/0]). %% helpers @@ -38,21 +34,21 @@ -define(TEST_ITERATIONS, 500). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> - io:format(user, Str, Args) end, P)). + on_output(fun(Str, Args) -> + io:format(user, Str, Args) end, P)). %%==================================================================== %% Eunit tests %%==================================================================== -eqc_test_() -> +proper_test_() -> {spawn, [{setup, fun setup/0, fun cleanup/1, [%% Run the quickcheck tests {timeout, 300, - ?_assertEqual(true, quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT((prop_resolution_commutative())))))} + ?_assertEqual(true, proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT((prop_resolution_commutative())))))} ] } ] @@ -66,11 +62,11 @@ cleanup(_) -> %% ==================================================================== -%% eqc property +%% PropEr property %% ==================================================================== prop_resolution_commutative() -> - ?FORALL(Manifests, eqc_gen:resize(50, manifests()), + ?FORALL(Manifests, resize(50, manifests()), begin MapFun = fun(Mani) -> riak_cs_manifest_utils:new_dict(Mani?MANIFEST.uuid, Mani) @@ -97,28 +93,28 @@ manifest() -> process_manifest(Manifest=?MANIFEST{state=State}) -> case State of writing -> - Manifest?MANIFEST{last_block_written_time=erlang:now(), + Manifest?MANIFEST{last_block_written_time=erlang:timestamp(), write_blocks_remaining=blocks_set()}; active -> %% this clause isn't %% needed but it makes %% things more clear imho - Manifest?MANIFEST{last_block_deleted_time=erlang:now()}; + Manifest?MANIFEST{last_block_deleted_time=erlang:timestamp()}; pending_delete -> - Manifest?MANIFEST{last_block_deleted_time=erlang:now(), + Manifest?MANIFEST{last_block_deleted_time=erlang:timestamp(), delete_blocks_remaining=blocks_set()}; scheduled_delete -> - Manifest?MANIFEST{last_block_deleted_time=erlang:now(), + Manifest?MANIFEST{last_block_deleted_time=erlang:timestamp(), delete_blocks_remaining=blocks_set()}; deleted -> - Manifest?MANIFEST{last_block_deleted_time=erlang:now()} + Manifest?MANIFEST{last_block_deleted_time=erlang:timestamp()} end. manifests() -> - eqc_gen:list(manifest()). + list(manifest()). blocks_set() -> - ?LET(L, eqc_gen:list(int()), ordsets:from_list(L)). + ?LET(L, list(int()), ordsets:from_list(L)). %%==================================================================== %% Helpers @@ -128,7 +124,7 @@ test() -> test(100). test(Iterations) -> - eqc:quickcheck(eqc:numtests(Iterations, prop_resolution_commutative())). + proper:quickcheck(numtests(Iterations, prop_resolution_commutative())). only_one_active(Manifests) -> {_, FilteredManifests} = lists:foldl(fun only_one_active_helper/2, {not_found, []}, Manifests), @@ -142,5 +138,3 @@ only_one_active_helper(Manifest=?MANIFEST{state=active}, {not_found, List}) -> {found, [Manifest | List]}; only_one_active_helper(Manifest, {not_found, List}) -> {not_found, [Manifest | List]}. - --endif. %EQC diff --git a/apps/riak_cs/test/riak_cs_manifest_utils_eqc.erl b/apps/riak_cs/test/prop_riak_cs_manifest_utils.erl similarity index 86% rename from apps/riak_cs/test/riak_cs_manifest_utils_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_manifest_utils.erl index 4eaf32929..8b88afdb2 100644 --- a/apps/riak_cs/test/riak_cs_manifest_utils_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_manifest_utils.erl @@ -19,18 +19,14 @@ %% %% --------------------------------------------------------------------- --module(riak_cs_manifest_utils_eqc). +-module(prop_riak_cs_manifest_utils). --ifdef(EQC). - --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -include_lib("riak_cs.hrl"). --compile(export_all). - -%% eqc property +%% proper property -export([prop_active_manifests/0]). %% helpers @@ -38,23 +34,23 @@ -define(TEST_ITERATIONS, 100). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> - io:format(user, Str, Args) end, P)). + on_output(fun(Str, Args) -> + io:format(user, Str, Args) end, P)). %%==================================================================== %% Eunit tests %%==================================================================== -eqc_test_() -> +proper_test_() -> {spawn, [{setup, fun setup/0, fun cleanup/1, [%% Run the quickcheck tests {timeout, 300, - ?_assertEqual(true, quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT((prop_active_manifests())))))}, + ?_assertEqual(true, proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT((prop_active_manifests())))))}, {timeout, 300, - ?_assertEqual(true, quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT((prop_prune_manifests())))))} + ?_assertEqual(true, proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT((prop_prune_manifests())))))} ] } ] @@ -72,7 +68,7 @@ cleanup(_) -> %% ==================================================================== prop_active_manifests() -> - ?FORALL(Manifests, eqc_gen:resize(50, manifests()), + ?FORALL(Manifests, resize(50, manifests()), begin AlteredManifests = lists:map(fun(M) -> M?MANIFEST{uuid = uuid:get_v4()} end, Manifests), AsDict = orddict:from_list([{M?MANIFEST.uuid, M} || M <- AlteredManifests]), @@ -100,7 +96,7 @@ prop_active_manifests() -> prop_prune_manifests() -> ?FORALL({Manifests, MaxCount}, - {eqc_gen:resize(50, manifests()), frequency([{9, nat()}, {1, 'unlimited'}])}, + {resize(50, manifests()), frequency([{9, nat()}, {1, 'unlimited'}])}, begin AlteredManifests = lists:map(fun(M) -> M?MANIFEST{uuid = uuid:get_v4()} end, Manifests), AsDict = orddict:from_list([{M?MANIFEST.uuid, M} || M <- AlteredManifests]), @@ -149,16 +145,16 @@ manifest() -> process_manifest(Manifest=?MANIFEST{state=State}) -> case State of writing -> - Manifest?MANIFEST{last_block_written_time=erlang:now(), + Manifest?MANIFEST{last_block_written_time=erlang:timestamp(), write_blocks_remaining=blocks_set()}; active -> %% this clause isn't %% needed but it makes %% things more clear imho - Manifest?MANIFEST{last_block_deleted_time=erlang:now(), + Manifest?MANIFEST{last_block_deleted_time=erlang:timestamp(), write_start_time=riak_cs_gen:timestamp()}; pending_delete -> - Manifest?MANIFEST{last_block_deleted_time=erlang:now(), + Manifest?MANIFEST{last_block_deleted_time=erlang:timestamp(), delete_blocks_remaining=blocks_set(), delete_marked_time=riak_cs_gen:timestamp(), props=riak_cs_gen:props()}; @@ -169,10 +165,10 @@ process_manifest(Manifest=?MANIFEST{state=State}) -> end. manifests() -> - eqc_gen:list(manifest()). + list(manifest()). blocks_set() -> - ?LET(L, eqc_gen:list(int()), ordsets:from_list(L)). + ?LET(L, list(int()), ordsets:from_list(L)). %%==================================================================== %% Helpers @@ -182,7 +178,5 @@ test() -> test(100). test(Iterations) -> - [eqc:quickcheck(eqc:numtests(Iterations, prop_active_manifests())), - eqc:quickcheck(eqc:numtests(Iterations, prop_prune_manifests()))]. - --endif. %EQC + [proper:quickcheck(numtests(Iterations, prop_active_manifests())), + proper:quickcheck(numtests(Iterations, prop_prune_manifests()))]. diff --git a/apps/riak_cs/test/riak_cs_s3_auth_eqc.erl b/apps/riak_cs/test/prop_riak_cs_s3_auth.erl similarity index 91% rename from apps/riak_cs/test/riak_cs_s3_auth_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_s3_auth.erl index e54c18551..55e35fb02 100644 --- a/apps/riak_cs/test/riak_cs_s3_auth_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_s3_auth.erl @@ -19,29 +19,23 @@ %% %% --------------------------------------------------------------------- --module(riak_cs_s3_auth_eqc). - --compile(export_all). --compile(nowarn_export_all). - --ifdef(EQC). +-module(prop_riak_cs_s3_auth). -include("riak_cs.hrl"). --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -include_lib("erlcloud/include/erlcloud_aws.hrl"). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> - io:format(user, Str, Args) end, P)). + on_output(fun(Str, Args) -> + io:format(user, Str, Args) end, P)). -define(TESTING_TIME, 20). -auth_v2_eqc_test_() -> +auth_v2_proper_test_() -> Tests = [{timeout, ?TESTING_TIME*2, - ?_assertEqual(true, quickcheck(eqc:testing_time(?TESTING_TIME, - ?QC_OUT(prop_v2_auth())))) - }], + ?_assertEqual(true, proper:quickcheck(?QC_OUT(prop_v2_auth()))) + }], [{inparallel, Tests}]. @@ -126,4 +120,3 @@ format_subresource({Subresource, Value}) when is_integer(Value) -> Subresource ++ "=" ++ integer_to_list(Value); format_subresource(Subresource) -> Subresource. --endif. diff --git a/apps/riak_cs/test/riak_cs_s3_policy_eqc.erl b/apps/riak_cs/test/prop_riak_cs_s3_policy.erl similarity index 90% rename from apps/riak_cs/test/riak_cs_s3_policy_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_s3_policy.erl index 8026fd557..92a165240 100644 --- a/apps/riak_cs/test/riak_cs_s3_policy_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_s3_policy.erl @@ -19,46 +19,49 @@ %% %% --------------------------------------------------------------------- --module(riak_cs_s3_policy_eqc). +-module(prop_riak_cs_s3_policy). --compile(export_all). --compile(nowarn_export_all). +-export([prop_ip_filter/0, + prop_secure_transport/0, + prop_eval/0, + prop_policy_v1/0]). --ifdef(TEST). --ifdef(EQC). +-export([string_condition/0, + numeric_condition/0, + date_condition/0]). -include("riak_cs.hrl"). -include("s3_api.hrl"). --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -include_lib("webmachine/include/wm_reqdata.hrl"). -define(TEST_ITERATIONS, 500). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). + on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). -define(TIMEOUT, 60). -eqc_test_()-> +proper_test_()-> {inparallel, [ {timeout, ?TIMEOUT, ?_assertEqual(true, - quickcheck(numtests(?TEST_ITERATIONS, - ?QC_OUT(prop_ip_filter()))))}, + proper:quickcheck(numtests(?TEST_ITERATIONS, + ?QC_OUT(prop_ip_filter()))))}, {timeout, ?TIMEOUT, ?_assertEqual(true, - quickcheck(numtests(?TEST_ITERATIONS, - ?QC_OUT(prop_secure_transport()))))}, + proper:quickcheck(numtests(?TEST_ITERATIONS, + ?QC_OUT(prop_secure_transport()))))}, {timeout, ?TIMEOUT, ?_assertEqual(true, - quickcheck(numtests(?TEST_ITERATIONS, - ?QC_OUT(prop_eval()))))}, + proper:quickcheck(numtests(?TEST_ITERATIONS, + ?QC_OUT(prop_eval()))))}, {timeout, ?TIMEOUT, ?_assertEqual(true, - quickcheck(numtests(?TEST_ITERATIONS, - ?QC_OUT(prop_policy_v1()))))} + proper:quickcheck(numtests(?TEST_ITERATIONS, + ?QC_OUT(prop_policy_v1()))))} ]}. %% accept case of ip filtering @@ -237,10 +240,10 @@ statements() -> creation_time() -> {nat(), choose(0, 1000000), choose(0, 1000000)}. -string() -> list(choose(33,127)). +ustring() -> list(choose(33,127)). binary_char_string() -> - ?LET(String, string(), list_to_binary(String)). + ?LET(String, ustring(), list_to_binary(String)). nonempty_binary_char_string() -> ?LET({Char, BinString}, {choose(33,127), binary_char_string()}, @@ -280,7 +283,7 @@ access_v1() -> #access_v1{ method = Method, target = Target, - id = string(), + id = ustring(), bucket = nonempty_binary_char_string(), key = oneof([undefined, binary_char_string()]), req = wm_reqdata() @@ -305,8 +308,8 @@ wm_reqdata() -> response_code = oneof([undefined, http_response_code()]), max_recv_body = nat(), max_recv_hunk = nat(), - req_cookie = string(), - req_qs = string(), + req_cookie = ustring(), + req_qs = ustring(), req_headers = undefined, req_body = binary_char_string(), resp_redirect = bool(), @@ -317,6 +320,3 @@ wm_reqdata() -> port = choose(1,65535), notes = list(nonempty_binary_char_string()) %% any..? }). - --endif. --endif. diff --git a/apps/riak_cs/test/riak_cs_s3_rewrite_eqc.erl b/apps/riak_cs/test/prop_riak_cs_s3_rewrite.erl similarity index 85% rename from apps/riak_cs/test/riak_cs_s3_rewrite_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_s3_rewrite.erl index 490c0bdbf..9e958af33 100644 --- a/apps/riak_cs/test/riak_cs_s3_rewrite_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_s3_rewrite.erl @@ -19,40 +19,36 @@ %% %% --------------------------------------------------------------------- -%% @doc Quickcheck test module for `riak_cs_s3_rewrite'. +%% @doc PropEr test module for `riak_cs_s3_rewrite'. --module(riak_cs_s3_rewrite_eqc). +-module(prop_riak_cs_s3_rewrite). -include("riak_cs.hrl"). --ifdef(EQC). --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -%% eqc property +%% PropEr property -export([prop_extract_bucket_from_host/0]). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> - io:format(user, Str, Args) end, P)). + on_output(fun(Str, Args) -> + io:format(user, Str, Args) end, P)). -define(TESTING_TIME, 20). %%==================================================================== %% Eunit tests %%==================================================================== -eqc_test_() -> +proper_test_() -> Tests = [ {timeout, ?TESTING_TIME*2, - ?_assertEqual(true, quickcheck(eqc:testing_time(?TESTING_TIME, - ?QC_OUT(prop_s3_rewrite(pathstyle)))))}, + ?_assertEqual(true, proper:quickcheck(?QC_OUT(prop_s3_rewrite(pathstyle))))}, {timeout, ?TESTING_TIME*2, - ?_assertEqual(true, quickcheck(eqc:testing_time(?TESTING_TIME, - ?QC_OUT(prop_s3_rewrite(hoststyle)))))}, + ?_assertEqual(true, proper:quickcheck(?QC_OUT(prop_s3_rewrite(hoststyle))))}, {timeout, ?TESTING_TIME*2, - ?_assertEqual(true, quickcheck(eqc:testing_time(?TESTING_TIME, - ?QC_OUT(prop_extract_bucket_from_host())))) + ?_assertEqual(true, proper:quickcheck(?QC_OUT(prop_extract_bucket_from_host()))) }], [{inparallel, Tests}]. @@ -64,7 +60,7 @@ eqc_test_() -> %% the key before URL encoding. This is also a regression test of riak_cs#1040. prop_s3_rewrite(Style) -> RewriteModule = riak_cs_s3_rewrite, - RootHost = "example.com", + RootHost = "s3.amazonaws.com", ok = application:set_env(riak_cs, cs_root_host, RootHost), DispatchTable = riak_cs_web:object_api_dispatch_table(), ?FORALL({CSBucket, CSKey, Verb, Scheme, Version}, @@ -132,7 +128,7 @@ build_original_path_info(pathstyle, CSBucket, CSKey, RootHost) -> {Encoded, RootHost}. base_host() -> - oneof(["s3.amazonaws.com", "riakcs.net", "snarf", "hah-hah", ""]). + oneof(["s3.amazonaws.com", "s3.out-west.amazonaws.com"]). compose_host([], BaseHost) -> BaseHost; @@ -147,5 +143,3 @@ expected_bucket(_Bucket, []) -> undefined; expected_bucket(Bucket, _) -> Bucket. - --endif. diff --git a/apps/riak_cs/test/riak_cs_utils_eqc.erl b/apps/riak_cs/test/prop_riak_cs_utils.erl similarity index 75% rename from apps/riak_cs/test/riak_cs_utils_eqc.erl rename to apps/riak_cs/test/prop_riak_cs_utils.erl index 7f10bc500..96ae3d947 100644 --- a/apps/riak_cs/test/riak_cs_utils_eqc.erl +++ b/apps/riak_cs/test/prop_riak_cs_utils.erl @@ -19,31 +19,29 @@ %% %% --------------------------------------------------------------------- -%% @doc Quickcheck test module for `riak_cs_utils'. +%% @doc PropEr test module for `riak_cs_utils'. --module(riak_cs_utils_eqc). - --ifdef(EQC). +-module(prop_riak_cs_utils). -include("riak_cs.hrl"). --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). --compile(export_all). +-export([prop_md5/0]). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> - io:format(user, Str, Args) end, P)). + on_output(fun(Str, Args) -> + io:format(user, Str, Args) end, P)). %%==================================================================== %% Eunit tests %%==================================================================== -eqc_test_() -> +proper_test_() -> Time = 8, [ {timeout, Time*4, ?_assertEqual(true, - eqc:quickcheck(eqc:testing_time(Time,?QC_OUT(prop_md5()))))} + proper:quickcheck(?QC_OUT(prop_md5())))} ]. %% ==================================================================== @@ -59,9 +57,3 @@ gen_bin() -> oneof([binary(), ?LET({Size, Char}, {choose(5, 2*1024*1024 + 1024), choose(0, 255)}, list_to_binary(lists:duplicate(Size, Char)))]). - -%%==================================================================== -%% Helpers -%%==================================================================== - --endif. diff --git a/apps/riak_cs/test/twop_set_eqc.erl b/apps/riak_cs/test/prop_twop_set.erl similarity index 75% rename from apps/riak_cs/test/twop_set_eqc.erl rename to apps/riak_cs/test/prop_twop_set.erl index c5d5a6060..cc35dba50 100644 --- a/apps/riak_cs/test/twop_set_eqc.erl +++ b/apps/riak_cs/test/prop_twop_set.erl @@ -19,17 +19,14 @@ %% %% --------------------------------------------------------------------- -%% @doc twop_set_eqc: Quickcheck testing for the `twop_set' module. +%% @doc prop_twop_set: PropEr testing for the `twop_set' module. --module(twop_set_eqc). +-module(prop_twop_set). --ifdef(EQC). - --include_lib("eqc/include/eqc.hrl"). --include_lib("eqc/include/eqc_fsm.hrl"). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -%% eqc properties +%% proper properties -export([prop_twop_set_api/0, prop_twop_set_resolution/0]). @@ -37,7 +34,7 @@ -export([stopped/1, running/1]). -%% eqc_fsm callbacks +%% proper_fsm callbacks -export([initial_state/0, initial_state_data/0, next_state_data/5, @@ -51,26 +48,26 @@ -define(TEST_ITERATIONS, 500). -define(SET_MODULE, twop_set). -define(QC_OUT(P), - eqc:on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). + proper:on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). -type stdlib_set() :: sets:set(). --record(eqc_state, {adds=sets:new() :: stdlib_set(), - deletes=sets:new() :: stdlib_set(), - operation_count=0 :: non_neg_integer(), - operation_limit=500 :: pos_integer(), - set :: twop_set:twop_set(), - size=0 :: non_neg_integer()}). +-record(proper_state, {adds=sets:new() :: stdlib_set(), + deletes=sets:new() :: stdlib_set(), + operation_count=0 :: non_neg_integer(), + operation_limit=500 :: pos_integer(), + set :: twop_set:twop_set(), + size=0 :: non_neg_integer()}). %%==================================================================== %% Eunit tests %%==================================================================== -eqc_test_() -> +proper_test_() -> {spawn, [ - {timeout, 60, ?_assertEqual(true, quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_twop_set_api()))))}, - {timeout, 60, ?_assertEqual(true, quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_twop_set_resolution()))))} + {timeout, 60, ?_assertEqual(true, proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_twop_set_api()))))}, + {timeout, 60, ?_assertEqual(true, proper:quickcheck(numtests(?TEST_ITERATIONS, ?QC_OUT(prop_twop_set_resolution()))))} ] }. @@ -80,24 +77,24 @@ eqc_test_() -> prop_twop_set_api() -> ?FORALL(Cmds, - commands(?MODULE), + proper_fsm:commands(?MODULE), begin - {H, {_F, S}, Res} = run_commands(?MODULE, Cmds), - aggregate(zip(state_names(H), command_names(Cmds)), + {H, {_F, S}, Res} = proper_fsm:run_commands(?MODULE, Cmds), + aggregate(zip(proper_fsm:state_names(H), command_names(Cmds)), ?WHENFAIL( begin ?debugFmt("Cmds: ~p~n", - [zip(state_names(H), + [zip(proper_fsm:state_names(H), command_names(Cmds))]), ?debugFmt("Result: ~p~n", [Res]), ?debugFmt("History: ~p~n", [H]), - ?debugFmt("Current expected size: ~p~n", [S#eqc_state.size]), - ?debugFmt("Current actual size: ~p~n", [twop_set:size(S#eqc_state.set)]), - ?debugFmt("Operation count: ~p~n", [S#eqc_state.operation_count]), - ?debugFmt("Operation limit: ~p~n", [S#eqc_state.operation_limit]), - ?debugFmt("Adds: ~p~n", [sets:to_list(S#eqc_state.adds)]), - ?debugFmt("Deletes: ~p~n", [sets:to_list(S#eqc_state.deletes)]), - ?debugFmt("Set: ~p~n", [twop_set:to_list(S#eqc_state.set)]) + ?debugFmt("Current expected size: ~p~n", [S#proper_state.size]), + ?debugFmt("Current actual size: ~p~n", [twop_set:size(S#proper_state.set)]), + ?debugFmt("Operation count: ~p~n", [S#proper_state.operation_count]), + ?debugFmt("Operation limit: ~p~n", [S#proper_state.operation_limit]), + ?debugFmt("Adds: ~p~n", [sets:to_list(S#proper_state.adds)]), + ?debugFmt("Deletes: ~p~n", [sets:to_list(S#proper_state.deletes)]), + ?debugFmt("Set: ~p~n", [twop_set:to_list(S#proper_state.set)]) end, equals(ok, Res))) end @@ -131,13 +128,13 @@ prop_twop_set_resolution() -> )). %%==================================================================== -%% eqc_fsm callbacks +%% proper_fsm callbacks %%==================================================================== stopped(_S) -> [{running, {call, ?SET_MODULE, new, []}}]. -running(#eqc_state{operation_count=OpCount, +running(#proper_state{operation_count=OpCount, operation_limit=OpLimit, set=Set}) -> [{stopped, {call, ?SET_MODULE, size, [Set]}} || OpCount > OpLimit] ++ @@ -152,21 +149,21 @@ initial_state() -> stopped. initial_state_data() -> - #eqc_state{}. + #proper_state{}. next_state_data(running, stopped, S, _R, _C) -> - S#eqc_state{adds=sets:new(), - deletes=sets:new(), - operation_count=0, - set=undefined, - size=0}; + S#proper_state{adds=sets:new(), + deletes=sets:new(), + operation_count=0, + set=undefined, + size=0}; next_state_data(stopped, running, S, R, {call, _M, new, _}) -> - S#eqc_state{set=R}; + S#proper_state{set=R}; next_state_data(_From, _To, S, R, {call, _M, add_element, [Element, _Set]}) -> - Adds = S#eqc_state.adds, - Dels = S#eqc_state.deletes, - Size = S#eqc_state.size, - OpCount = S#eqc_state.operation_count, + Adds = S#proper_state.adds, + Dels = S#proper_state.deletes, + Size = S#proper_state.size, + OpCount = S#proper_state.operation_count, case sets:is_element(Element, Adds) orelse sets:is_element(Element, Dels) of @@ -177,15 +174,15 @@ next_state_data(_From, _To, S, R, {call, _M, add_element, [Element, _Set]}) -> UpdAdds = sets:add_element(Element, Adds), UpdSize = Size + 1 end, - S#eqc_state{adds=UpdAdds, - operation_count=OpCount+1, - set=R, - size=UpdSize}; + S#proper_state{adds=UpdAdds, + operation_count=OpCount+1, + set=R, + size=UpdSize}; next_state_data(_From, _To, S, R, {call, _M, del_element, [Element, _Set]}) -> - Adds = S#eqc_state.adds, - Dels = S#eqc_state.deletes, - Size = S#eqc_state.size, - OpCount = S#eqc_state.operation_count, + Adds = S#proper_state.adds, + Dels = S#proper_state.deletes, + Size = S#proper_state.size, + OpCount = S#proper_state.operation_count, case sets:is_element(Element, Dels) of true -> UpdDels = Dels, @@ -201,32 +198,32 @@ next_state_data(_From, _To, S, R, {call, _M, del_element, [Element, _Set]}) -> UpdSize = Size end end, - S#eqc_state{deletes=UpdDels, - operation_count=OpCount+1, - set=R, - size=UpdSize}; + S#proper_state{deletes=UpdDels, + operation_count=OpCount+1, + set=R, + size=UpdSize}; next_state_data(_From, _To, S, _R, _C) -> - OpCount = S#eqc_state.operation_count, - S#eqc_state{operation_count=OpCount+1}. + OpCount = S#proper_state.operation_count, + S#proper_state{operation_count=OpCount+1}. precondition(_From, _To, _S, _C) -> true. -postcondition(_From, _To, #eqc_state{size=Size} ,{call, _M, size, _}, R) -> +postcondition(_From, _To, #proper_state{size=Size} ,{call, _M, size, _}, R) -> R =:= Size; postcondition(_From, _To, S, {call, _M, to_list, _}, R) -> - #eqc_state{adds=Adds, - deletes=Dels} = S, + #proper_state{adds=Adds, + deletes=Dels} = S, R =:= sets:to_list(sets:subtract(Adds, Dels)); postcondition(_From, _To, S, {call, _M, is_element, [Element, _Set]}, R) -> - #eqc_state{adds=Adds, - deletes=Dels} = S, + #proper_state{adds=Adds, + deletes=Dels} = S, (sets:is_element(Element, Adds) andalso not sets:is_element(Element, Dels)) =:= R; postcondition(_From, _To, S, {call, _M, add_element, [Element, Set]}, R) -> - #eqc_state{adds=Adds, - deletes=Dels} = S, + #proper_state{adds=Adds, + deletes=Dels} = S, ResultContainsElement = sets:is_element(Element, twop_set:adds(R)), ShouldContainElement = not sets:is_element(Element, Dels), case sets:is_element(Element, Adds) @@ -253,7 +250,7 @@ test() -> test(500). test(Iterations) -> - eqc:quickcheck(eqc:numtests(Iterations, prop_twop_set_api())). + proper:quickcheck(numtests(Iterations, prop_twop_set_api())). -spec sibling_sets([{[term()], [term()]}]) -> [twop_set:twop_set()]. sibling_sets(Siblings) -> @@ -281,5 +278,3 @@ expected_adds_and_dels(Siblings) -> siblings() -> list({list(int()), list(int())}). - --endif. diff --git a/apps/riak_cs/test/riak_cs_gen.erl b/apps/riak_cs/test/riak_cs_gen.erl index e6065a16b..da58ddd77 100644 --- a/apps/riak_cs/test/riak_cs_gen.erl +++ b/apps/riak_cs/test/riak_cs_gen.erl @@ -19,13 +19,11 @@ %% %% --------------------------------------------------------------------- -%% @doc Common QuickCheck generators for Riak CS +%% @doc Common PropEr generators for Riak CS -module(riak_cs_gen). --ifdef(EQC). - --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). %% Generators -export([base64string/0, @@ -177,6 +175,3 @@ char_mid() -> char_end() -> oneof(?ALPHABET ++ ?DIGIT). - - --endif. diff --git a/rebar.config b/rebar.config index 8d36f1f37..40051eab0 100644 --- a/rebar.config +++ b/rebar.config @@ -16,6 +16,7 @@ }. {project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/hmmr/rebar3_cuttlefish", {tag, "2.1.1"}}} + , rebar3_proper ] }. @@ -74,6 +75,12 @@ } ] } + , {test, [ {deps, [ {proper, "1.4.0"} + , {erlcloud, ".*", {git, "git://github.com/TI-Tokyo/erlcloud.git", {tag, "0.4.7"}}} + ] + } + ] + } , {docker, [ {relx, [ {overlay_vars, "rel/docker/vars.config"} ] } From 0ebcfd5eae26d515dfee20f773e15b8bb96b01a6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 24 Jul 2021 18:20:05 +0300 Subject: [PATCH 174/831] delete artifacts produced in prop_riak_cs_list_objects_fsm_v2 --- apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl index f9d39f19a..6c523909e 100644 --- a/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl @@ -41,6 +41,8 @@ -define(QC_OUT(P), on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)). +-define(LOGFILE, "riak_cs_list_objects_fsm_v2_proper.log"). + %%==================================================================== %% Eunit tests %%==================================================================== @@ -68,7 +70,7 @@ proper_test_() -> setup() -> error_logger:tty(false), - error_logger:logfile({open, "riak_cs_list_objects_fsm_v2_proper.log"}), + error_logger:logfile({open, ?LOGFILE}), application:set_env(lager, handlers, []), exometer:start(), riak_cs_stats:init(), @@ -76,6 +78,7 @@ setup() -> cleanup(_) -> exometer:stop(), + file:delete(?LOGFILE), ok. %% ==================================================================== From 07f7d63869dc3d2c6d553f538151ae79a0b63428 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 26 Jul 2021 17:05:46 +0300 Subject: [PATCH 175/831] implement ListObjectVersions --- apps/riak_cs/include/list_objects.hrl | 105 +++++++++++------- apps/riak_cs/src/riak_cs_api.erl | 23 ++-- apps/riak_cs/src/riak_cs_list_objects.erl | 96 ++++++++++------ .../src/riak_cs_list_objects_fsm_v2.erl | 14 +-- apps/riak_cs/src/riak_cs_oos_response.erl | 2 +- apps/riak_cs/src/riak_cs_stats.erl | 1 + apps/riak_cs/src/riak_cs_web.erl | 2 +- .../src/riak_cs_wm_object_versions.erl | 96 ++++++++++++++++ apps/riak_cs/src/riak_cs_wm_objects.erl | 1 + apps/riak_cs/src/riak_cs_xml.erl | 84 +++++++++++--- 10 files changed, 311 insertions(+), 113 deletions(-) create mode 100644 apps/riak_cs/src/riak_cs_wm_object_versions.erl diff --git a/apps/riak_cs/include/list_objects.hrl b/apps/riak_cs/include/list_objects.hrl index af8f84c17..9b79fd5a6 100644 --- a/apps/riak_cs/include/list_objects.hrl +++ b/apps/riak_cs/include/list_objects.hrl @@ -22,24 +22,30 @@ %% see also: http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGET.html %% non mandatory keys have `| undefined' as a %% type option. -%% + +-type list_objects_req_type() :: objects | versions. + %% This record actually does not need to be versioned, %% as it's never persisted. --record(list_objects_request_v1, { - %% the name of the bucket - name :: binary(), +-record(list_objects_request_v1, + { + req_type :: list_objects_req_type(), + + %% the name of the bucket + name :: binary(), - %% how many keys to return in the response - max_keys :: non_neg_integer(), + %% how many keys to return in the response + max_keys :: non_neg_integer(), - %% a 'starts-with' parameter - prefix :: binary() | undefined, + %% a 'starts-with' parameter + prefix :: binary() | undefined, - %% a binary to group keys by - delimiter :: binary() | undefined, + %% a binary to group keys by + delimiter :: binary() | undefined, - %% the key to start with - marker :: binary() | undefined}). + %% the key to start with + marker :: binary() | undefined + }). -type list_object_request() :: #list_objects_request_v1{}. -define(LOREQ, #list_objects_request_v1). @@ -47,48 +53,69 @@ %% This record actually does not need to be versioned, %% as it's never persisted. --record(list_objects_response_v1, { - %% Params just echoed back from the request -------------------------- +-record(list_objects_response_v1, + { + %% Params just echoed back from the request -------------------------- - %% the name of the bucket - name :: binary(), + %% the name of the bucket + name :: binary(), - %% how many keys were requested to be - %% returned in the response - max_keys :: non_neg_integer(), + %% how many keys were requested to be + %% returned in the response + max_keys :: non_neg_integer(), - %% a 'starts-with' parameter - prefix :: binary() | undefined, + %% a 'starts-with' parameter + prefix :: binary() | undefined, - %% a binary to group keys by - delimiter :: binary() | undefined, + %% a binary to group keys by + delimiter :: binary() | undefined, - %% the marker used in the _request_ - marker :: binary() | undefined, + %% the marker used in the _request_ + marker :: binary() | undefined, - %% the (optional) marker to use for pagination - %% in the _next_ request - next_marker :: next_marker(), + %% the (optional) marker to use for pagination + %% in the _next_ request + next_marker :: next_marker(), - %% The actual response ----------------------------------------------- - is_truncated :: boolean(), + %% The actual response ----------------------------------------------- + is_truncated :: boolean(), - contents :: list(list_objects_key_content()), + contents :: list(list_objects_key_content() | list_object_versions_key_content()), + + common_prefixes :: list_objects_common_prefixes(), + + resp_type :: list_objects_req_type() + }). - common_prefixes :: list_objects_common_prefixes()}). -type list_object_response() :: #list_objects_response_v1{}. -define(LORESP, #list_objects_response_v1). --record(list_objects_key_content_v1, { - key :: binary(), - last_modified :: term(), - etag :: binary(), - size :: non_neg_integer(), - owner :: list_objects_owner(), - storage_class :: binary()}). +-record(list_objects_key_content_v1, + { + key :: binary(), + last_modified :: term(), + etag :: binary(), + size :: non_neg_integer(), + owner :: list_objects_owner(), + storage_class :: binary() + }). -type list_objects_key_content() :: #list_objects_key_content_v1{}. -define(LOKC, #list_objects_key_content_v1). +-record(list_object_versions_key_content_v1, + { + key :: binary(), + last_modified :: term(), + etag :: binary(), + is_latest :: boolean(), + version_id :: binary(), + size :: non_neg_integer(), + owner :: list_objects_owner(), + storage_class :: binary() + }). +-type list_object_versions_key_content() :: #list_object_versions_key_content_v1{}. +-define(LOVKC, #list_object_versions_key_content_v1). + -record(list_objects_owner_v1, { id :: binary(), display_name :: binary()}). diff --git a/apps/riak_cs/src/riak_cs_api.erl b/apps/riak_cs/src/riak_cs_api.erl index d7ec6ca6b..aebaccfa7 100644 --- a/apps/riak_cs/src/riak_cs_api.erl +++ b/apps/riak_cs/src/riak_cs_api.erl @@ -22,7 +22,7 @@ -module(riak_cs_api). -export([list_buckets/1, - list_objects/5]). + list_objects/6]). -include("riak_cs.hrl"). -include("riak_cs_api.hrl"). @@ -36,25 +36,26 @@ list_buckets(User=?RCS_USER{buckets=Buckets}) -> Bucket?RCS_BUCKET.last_action /= deleted]}. -type options() :: [{atom(), 'undefined' | binary()}]. --spec list_objects([string()], binary(), non_neg_integer(), options(), riak_client()) -> +-spec list_objects(list_objects_req_type(), [string()], binary(), non_neg_integer(), options(), riak_client()) -> {ok, ?LORESP{}} | {error, term()}. -list_objects([], _, _, _, _) -> +list_objects(_, [], _, _, _, _) -> {error, no_such_bucket}; -list_objects(_UserBuckets, _Bucket, {error, _}=Error, _Options, _RcPid) -> +list_objects(_, _UserBuckets, _Bucket, {error, _}=Error, _Options, _RcPid) -> Error; -list_objects(_UserBuckets, Bucket, MaxKeys, Options, RcPid) -> - ListKeysRequest = riak_cs_list_objects:new_request(Bucket, - MaxKeys, - Options), +list_objects(ReqType, _UserBuckets, Bucket, MaxKeys, Options, RcPid) -> + Request = riak_cs_list_objects:new_request(ReqType, + Bucket, + MaxKeys, + Options), BinPid = riak_cs_utils:pid_to_binary(self()), CacheKey = << BinPid/binary, <<":">>/binary, Bucket/binary >>, UseCache = riak_cs_list_objects_ets_cache:cache_enabled(), - list_objects(RcPid, ListKeysRequest, CacheKey, UseCache). + list_objects(RcPid, Request, CacheKey, UseCache). -list_objects(RcPid, ListKeysRequest, CacheKey, UseCache) -> +list_objects(RcPid, Request, CacheKey, UseCache) -> case riak_cs_list_objects_utils:start_link(RcPid, self(), - ListKeysRequest, + Request, CacheKey, UseCache) of {ok, ListFSMPid} -> diff --git a/apps/riak_cs/src/riak_cs_list_objects.erl b/apps/riak_cs/src/riak_cs_list_objects.erl index cc1dccd87..73724b4a6 100644 --- a/apps/riak_cs/src/riak_cs_list_objects.erl +++ b/apps/riak_cs/src/riak_cs_list_objects.erl @@ -27,10 +27,10 @@ -include("list_objects.hrl"). %% API --export([new_request/1, - new_request/3, +-export([new_request/2, + new_request/4, new_response/5, - manifest_to_keycontent/1]). + manifest_to_keycontent/2]). %%%=================================================================== %%% API @@ -39,14 +39,15 @@ %% Request %%-------------------------------------------------------------------- --spec new_request(binary()) -> list_object_request(). -new_request(Name) -> - new_request(Name, 1000, []). +-spec new_request(list_objects_req_type(), binary()) -> list_object_request(). +new_request(Type, Name) -> + new_request(Type, Name, 1000, []). --spec new_request(binary(), pos_integer(), list()) -> list_object_request(). -new_request(Name, MaxKeys, Options) -> - process_options(#list_objects_request_v1{name=Name, - max_keys=MaxKeys}, +-spec new_request(list_objects_req_type(), binary(), pos_integer(), list()) -> list_object_request(). +new_request(Type, Name, MaxKeys, Options) -> + process_options(#list_objects_request_v1{req_type = Type, + name = Name, + max_keys = MaxKeys}, Options). %% @private @@ -73,31 +74,35 @@ process_options_helper({marker, Val}, Req) -> CommonPrefixes :: list(list_objects_common_prefixes()), ObjectContents :: list(list_objects_key_content())) -> list_object_response(). -new_response(?LOREQ{name=Name, - max_keys=MaxKeys, - prefix=Prefix, - delimiter=Delimiter, - marker=Marker}, +new_response(?LOREQ{req_type = ReqType, + name = Name, + max_keys = MaxKeys, + prefix = Prefix, + delimiter = Delimiter, + marker = Marker + }, IsTruncated, NextMarker, CommonPrefixes, ObjectContents) -> - ?LORESP{name=Name, - max_keys=MaxKeys, - prefix=Prefix, - delimiter=Delimiter, - marker=Marker, - next_marker=NextMarker, - is_truncated=IsTruncated, - contents=ObjectContents, - common_prefixes=CommonPrefixes}. + ?LORESP{resp_type = ReqType, + name = Name, + max_keys = MaxKeys, + prefix = Prefix, + delimiter = Delimiter, + marker = Marker, + next_marker = NextMarker, + is_truncated = IsTruncated, + contents = ObjectContents, + common_prefixes = CommonPrefixes}. %% Rest %%-------------------------------------------------------------------- --spec manifest_to_keycontent(lfs_manifest()) -> list_objects_key_content(). -manifest_to_keycontent(?MANIFEST{bkey={_Bucket, Key}, - created=Created, - content_md5=ContentMd5, - content_length=ContentLength, - acl=ACL}) -> +-spec manifest_to_keycontent(list_objects_req_type(), lfs_manifest()) -> list_objects_key_content(). +manifest_to_keycontent(ReqType, ?MANIFEST{bkey = {_Bucket, Key}, + created = Created, + content_md5 = ContentMd5, + content_length = ContentLength, + metadata = Metadata, + acl = ACL}) -> LastModified = list_to_binary(riak_cs_wm_utils:to_iso_8601(Created)), @@ -110,12 +115,31 @@ manifest_to_keycontent(?MANIFEST{bkey={_Bucket, Key}, %% hardcoded since we don't support reduced redundancy or glacier StorageClass = <<"STANDARD">>, - #list_objects_key_content_v1{key=Key, - last_modified=LastModified, - etag=Etag, - size=Size, - owner=Owner, - storage_class=StorageClass}. + case ReqType of + versions -> + VersionId = + case orddict:find(version_id, Metadata) of + {ok, V} -> + V; + error -> + null + end, + ?LOVKC{key = Key, + last_modified = LastModified, + etag = Etag, + is_latest = true, + version_id = VersionId, + size = ContentLength, + owner = Owner, + storage_class = StorageClass}; + objects -> + ?LOKC{key = Key, + last_modified = LastModified, + etag = Etag, + size = Size, + owner = Owner, + storage_class = StorageClass} + end. %% ==================================================================== %% Internal functions diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl index 1c5fba309..58b2e935e 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl @@ -171,7 +171,7 @@ handle_sync_event(get_internal_state, _From, StateName, State) -> Reply = {StateName, State}, {reply, Reply, StateName, State}; handle_sync_event(Event, _From, StateName, State) -> - _ = lager:debug("got unknown event ~p in state ~p", [Event, StateName]), + _ = lager:warning("got unknown event ~p in state ~p", [Event, StateName]), Reply = ok, {reply, Reply, StateName, State}. @@ -181,8 +181,8 @@ handle_sync_event(Event, _From, StateName, State) -> handle_info(Info, waiting_object_list, State) -> waiting_object_list(Info, State); handle_info(Info, StateName, _State) -> - _ = lager:debug("Received unknown info message ~p" - "in state ~p", [Info, StateName]), + _ = lager:warning("Received unknown info message ~p" + "in state ~p", [Info, StateName]), ok. terminate(normal, _StateName, State) -> @@ -337,11 +337,11 @@ next_marker_from_element({manifest, ?MANIFEST{bkey={_Bucket, Key}}}) -> next_marker_from_element({manifest, {Key, ?MANIFEST{}}}) -> Key. -response_from_manifests_and_common_prefixes(Request, +response_from_manifests_and_common_prefixes(?LOREQ{req_type = ReqType} = Request, Truncated, NextMarker, {Manifests, CommonPrefixes}) -> - KeyContent = lists:map(fun riak_cs_list_objects:manifest_to_keycontent/1, + KeyContent = lists:map(fun(M) -> riak_cs_list_objects:manifest_to_keycontent(ReqType, M) end, Manifests), riak_cs_list_objects:new_response(Request, Truncated, NextMarker, CommonPrefixes, @@ -349,8 +349,8 @@ response_from_manifests_and_common_prefixes(Request, -spec make_2i_request(riak_client(), state()) -> {state(), {ok, reference()} | {error, term()}}. -make_2i_request(RcPid, State=#state{req=?LOREQ{name=BucketName,prefix=Prefix}, - fold_objects_batch_size=BatchSize}) -> +make_2i_request(RcPid, State=#state{req = ?LOREQ{name = BucketName, prefix = Prefix}, + fold_objects_batch_size = BatchSize}) -> ManifestBucket = riak_cs_utils:to_bucket_name(objects, BucketName), StartKey = make_start_key(State), EndKey = riak_cs_utils:big_end_key(Prefix), diff --git a/apps/riak_cs/src/riak_cs_oos_response.erl b/apps/riak_cs/src/riak_cs_oos_response.erl index d9ab13677..b9031a4c5 100644 --- a/apps/riak_cs/src/riak_cs_oos_response.erl +++ b/apps/riak_cs/src/riak_cs_oos_response.erl @@ -48,7 +48,7 @@ respond(?LBRESP{}=Response, RD, Ctx) -> "text/plain", RD), {BucketsDoc, UpdRD, Ctx}; -respond({ok, ?LORESP{}=Response}, RD, Ctx) -> +respond({ok, ?LORESP{resp_type = _RespType} = Response}, RD, Ctx) -> %% @TODO Expand to handle common prefixes UpdRD = wrq:set_resp_header("Content-Type", "text/plain", diff --git a/apps/riak_cs/src/riak_cs_stats.erl b/apps/riak_cs/src/riak_cs_stats.erl index 68a119bae..1d6e3f7c6 100644 --- a/apps/riak_cs/src/riak_cs_stats.erl +++ b/apps/riak_cs/src/riak_cs_stats.erl @@ -70,6 +70,7 @@ duration_metrics() -> [list_uploads, get], [multiple_delete, post], [list_objects, get], + [list_object_versions, get], [object, get], [object, put], diff --git a/apps/riak_cs/src/riak_cs_web.erl b/apps/riak_cs/src/riak_cs_web.erl index 78dc12a26..09b6bc661 100644 --- a/apps/riak_cs/src/riak_cs_web.erl +++ b/apps/riak_cs/src/riak_cs_web.erl @@ -77,7 +77,7 @@ base_resources() -> {["buckets", bucket, "versioning"], riak_cs_wm_common, props(riak_cs_wm_bucket_versioning)}, {["buckets", bucket, "requestPayment"], riak_cs_wm_common, props(riak_cs_wm_bucket_request_payment)}, %% NYI - {["buckets", bucket, "versions"], riak_cs_wm_common, props(riak_cs_wm_not_implemented)}, + {["buckets", bucket, "versions"], riak_cs_wm_common, props(riak_cs_wm_object_versions)}, {["buckets", bucket, "lifecycle"], riak_cs_wm_common, props(riak_cs_wm_not_implemented)}, %% Object resources {["buckets", bucket, "objects", object], riak_cs_wm_common, props(riak_cs_wm_object)}, diff --git a/apps/riak_cs/src/riak_cs_wm_object_versions.erl b/apps/riak_cs/src/riak_cs_wm_object_versions.erl new file mode 100644 index 000000000..0cf954945 --- /dev/null +++ b/apps/riak_cs/src/riak_cs_wm_object_versions.erl @@ -0,0 +1,96 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc WM resource for object version listing + +-module(riak_cs_wm_object_versions). + +-export([init/1, + stats_prefix/0, + allowed_methods/0, + api_request/2 + ]). + +-export([authorize/2]). + +-include("riak_cs.hrl"). +-include("riak_cs_api.hrl"). +-include("list_objects.hrl"). +-include_lib("webmachine/include/webmachine.hrl"). + +-define(RIAKCPOOL, bucket_list_pool). + +-spec init(#context{}) -> {ok, #context{}}. +init(Ctx) -> + {ok, Ctx#context{rc_pool = ?RIAKCPOOL}}. + +-spec stats_prefix() -> list_object_versions. +stats_prefix() -> list_object_versions. + +-spec allowed_methods() -> [atom()]. +allowed_methods() -> + ['GET']. + +-spec authorize(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. +authorize(RD, Ctx) -> + riak_cs_wm_utils:bucket_access_authorize_helper(bucket, false, RD, Ctx). + +-spec api_request(#wm_reqdata{}, #context{}) -> {ok, ?LORESP{}} | {error, term()}. +api_request(RD, Ctx = #context{bucket = Bucket, + riak_client = RcPid, + user = User}) -> + UserName = riak_cs_wm_utils:extract_name(User), + riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"list_key_versions">>, [], [UserName, Bucket]), + Res = riak_cs_api:list_objects( + versions, + [B || B <- riak_cs_bucket:get_buckets(User), + B?RCS_BUCKET.name =:= binary_to_list(Bucket)], + Ctx#context.bucket, + get_max_keys(RD), + get_options(RD), + RcPid), + riak_cs_dtrace:dt_bucket_return(?MODULE, <<"list_key_versions">>, [200], [UserName, Bucket]), + Res. + +-spec get_options(#wm_reqdata{}) -> [{atom(), 'undefined' | binary()}]. +get_options(RD) -> + [get_option(list_to_atom(Opt), wrq:get_qs_value(Opt, RD)) || + Opt <- ["delimiter", "marker", "prefix"]]. + +-spec get_option(atom(), 'undefined' | string()) -> {atom(), 'undefined' | binary()}. +get_option(Option, undefined) -> + {Option, undefined}; +get_option(Option, Value) -> + {Option, list_to_binary(Value)}. + +-spec get_max_keys(#wm_reqdata{}) -> non_neg_integer() | {error, 'invalid_argument'}. +get_max_keys(RD) -> + case wrq:get_qs_value("max-keys", RD) of + undefined -> + ?DEFAULT_LIST_OBJECTS_MAX_KEYS; + StringKeys -> + try + erlang:min(list_to_integer(StringKeys), + ?DEFAULT_LIST_OBJECTS_MAX_KEYS) + catch _:_ -> + {error, invalid_argument} + end + end. diff --git a/apps/riak_cs/src/riak_cs_wm_objects.erl b/apps/riak_cs/src/riak_cs_wm_objects.erl index 03f2046e0..4cc1e1710 100644 --- a/apps/riak_cs/src/riak_cs_wm_objects.erl +++ b/apps/riak_cs/src/riak_cs_wm_objects.erl @@ -63,6 +63,7 @@ api_request(RD, Ctx=#context{bucket=Bucket, UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"list_keys">>, [], [UserName, Bucket]), Res = riak_cs_api:list_objects( + objects, [B || B <- riak_cs_bucket:get_buckets(User), B?RCS_BUCKET.name =:= binary_to_list(Bucket)], Ctx#context.bucket, diff --git a/apps/riak_cs/src/riak_cs_xml.erl b/apps/riak_cs/src/riak_cs_xml.erl index c6259e324..eb73cfcc0 100644 --- a/apps/riak_cs/src/riak_cs_xml.erl +++ b/apps/riak_cs/src/riak_cs_xml.erl @@ -151,33 +151,81 @@ owner_content({OwnerName, OwnerId}) -> [make_external_node('ID', OwnerId), make_external_node('DisplayName', OwnerName)]. -list_objects_response_to_simple_form(Resp) -> - KeyContents = [{'Contents', key_content_to_simple_form(Content)} || - Content <- (Resp?LORESP.contents)], +list_objects_response_to_simple_form(?LORESP{resp_type = objects, + contents = Contents, + common_prefixes = CommonPrefixes, + name = Name, + prefix = Prefix, + marker = Marker, + next_marker = NextMarker, + max_keys = MaxKeys, + delimiter = Delimiter, + is_truncated = IsTruncated}) -> + KeyContents = [{'Contents', key_content_to_simple_form(objects, Content)} || + Content <- Contents], CommonPrefixes = [{'CommonPrefixes', [{'Prefix', [CommonPrefix]}]} || - CommonPrefix <- Resp?LORESP.common_prefixes], - Contents = [{'Name', [Resp?LORESP.name]}, - {'Prefix', [Resp?LORESP.prefix]}, - {'Marker', [Resp?LORESP.marker]}] ++ - %% use a list-comprehension trick to only include - %% the `NextMarker' element if it's not `undefined' - [{'NextMarker', [NextMarker]} || - NextMarker <- [Resp?LORESP.next_marker], - NextMarker =/= undefined, - Resp?LORESP.is_truncated] ++ - [{'MaxKeys', [Resp?LORESP.max_keys]}, - {'Delimiter', [Resp?LORESP.delimiter]}, - {'IsTruncated', [Resp?LORESP.is_truncated]}] ++ + CommonPrefix <- CommonPrefixes], + Body = [{'Name', [Name]}, + {'Prefix', [Prefix]}, + {'Marker', [Marker]}] ++ + %% use a list-comprehension trick to only include + %% the `NextMarker' element if it's not `undefined' + [{'NextMarker', [M]} || + M <- [NextMarker], + M =/= undefined, + IsTruncated] ++ + [{'MaxKeys', [MaxKeys]}, + {'Delimiter', [Delimiter]}, + {'IsTruncated', [IsTruncated]}] ++ KeyContents ++ CommonPrefixes, - [{'ListBucketResult', [{'xmlns', ?S3_XMLNS}], Contents}]. + [{'ListBucketResult', [{'xmlns', ?S3_XMLNS}], Body}]; + +list_objects_response_to_simple_form(?LORESP{resp_type = versions, + contents = Contents, + common_prefixes = CommonPrefixes, + name = Name, + prefix = Prefix, + marker = Marker, + next_marker = NextMarker, + max_keys = MaxKeys, + delimiter = Delimiter, + is_truncated = IsTruncated}) -> + KeyContents = [{'Version', key_content_to_simple_form(versions, Content)} || + Content <- Contents], + CommonPrefixes = [{'CommonPrefixes', [{'Prefix', [CommonPrefix]}]} || + CommonPrefix <- CommonPrefixes], + Body = [{'Name', [Name]}, + {'Prefix', [Prefix]}, + {'Marker', [Marker]}] ++ + [{'NextMarker', [M]} || + M <- [NextMarker], + M =/= undefined, + IsTruncated] ++ + [{'MaxKeys', [MaxKeys]}, + {'Delimiter', [Delimiter]}, + {'IsTruncated', [IsTruncated]}] ++ + KeyContents ++ CommonPrefixes, + [{'ListBucketResult', [{'xmlns', ?S3_XMLNS}], Body}]. -key_content_to_simple_form(KeyContent) -> +key_content_to_simple_form(objects, KeyContent) -> #list_objects_owner_v1{id=Id, display_name=Name} = KeyContent?LOKC.owner, [{'Key', [KeyContent?LOKC.key]}, {'LastModified', [KeyContent?LOKC.last_modified]}, {'ETag', [KeyContent?LOKC.etag]}, {'Size', [KeyContent?LOKC.size]}, {'StorageClass', [KeyContent?LOKC.storage_class]}, + {'Owner', [{'ID', [Id]}, + {'DisplayName', [Name]}]}]; + +key_content_to_simple_form(versions, KeyContent) -> + #list_objects_owner_v1{id=Id, display_name=Name} = KeyContent?LOVKC.owner, + [{'Key', [KeyContent?LOVKC.key]}, + {'LastModified', [KeyContent?LOVKC.last_modified]}, + {'ETag', [KeyContent?LOVKC.etag]}, + {'Size', [KeyContent?LOVKC.size]}, + {'StorageClass', [KeyContent?LOVKC.storage_class]}, + {'IsLatest', [KeyContent?LOVKC.is_latest]}, + {'VersionId', [KeyContent?LOVKC.version_id]}, {'Owner', [{'ID', [Id]}, {'DisplayName', [Name]}]}]. From 4085a6b5e79f5d591f3667c277db85546fc864ed Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 27 Jul 2021 19:27:42 +0300 Subject: [PATCH 176/831] Get/PutBucketVersioning --- apps/riak_cs/include/riak_cs.hrl | 4 +- apps/riak_cs/src/riak_cs_bucket.erl | 68 ++++++++++++++++- apps/riak_cs/src/riak_cs_stats.erl | 2 + .../src/riak_cs_wm_bucket_versioning.erl | 76 ++++++++++++++++++- apps/riak_cs/src/velvet.erl | 20 ++++- 5 files changed, 158 insertions(+), 12 deletions(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index f756f5ba0..8db568754 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -74,8 +74,9 @@ -type cs_bucket() :: #moss_bucket_v1{}. -type bucket_operation() :: create | delete | update_acl | update_policy - | delete_policy. + | delete_policy | update_versioning. -type bucket_action() :: created | deleted. +-type bucket_versioning_option() :: enabled | disabled. -record(context, {start_time :: undefined | erlang:timestamp(), auth_bypass :: atom(), @@ -406,6 +407,7 @@ -define(MD_BAG, <<"X-Rcs-Bag">>). -define(MD_ACL, <<"X-Moss-Acl">>). -define(MD_POLICY, <<"X-Rcs-Policy">>). +-define(MD_VERSIONING, <<"X-Rcs-Versioning">>). -define(EMAIL_INDEX, <<"email_bin">>). -define(ID_INDEX, <<"c_id_bin">>). -define(KEY_INDEX, <<"$key">>). diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index f50e342fe..58269051b 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -34,6 +34,8 @@ set_bucket_policy/5, delete_bucket_policy/4, get_bucket_acl_policy/3, + set_bucket_versioning/5, + get_bucket_versioning/2, maybe_log_bucket_owner_error/2, resolve_buckets/3, update_bucket_record/1, @@ -356,6 +358,42 @@ format_acl_policy_response({ok, Acl}, {error, policy_undefined}) -> format_acl_policy_response({ok, Acl}, {ok, Policy}) -> {Acl, Policy}. +-spec set_bucket_versioning(rcs_user(), riakc_obj:riakc_obj(), + binary(), bucket_versioning_option(), riak_client()) -> + ok | {error, term()}. +set_bucket_versioning(User, UserObj, Bucket, Option, RcPid) -> + serialized_bucket_op(Bucket, + Option, + User, + UserObj, + update_versioning, + [velvet, set_bucket_versioning], + RcPid). + +-spec get_bucket_versioning(binary(), riak_client()) -> + {ok, bucket_versioning_option()} | {error, term()}. +get_bucket_versioning(Bucket, RcPid) -> + case fetch_bucket_object(Bucket, RcPid) of + {ok, Obj} -> + MD = riakc_obj:get_metadata(Obj), + case dict:find(?MD_USERMETA, MD) of + {ok, UM} -> + case proplists:get_value(?MD_VERSIONING, UM) of + undefined -> + {ok, disabled}; + Defined -> + {ok, versioning_term_to_option(binary_to_term(Defined))} + end; + error -> + {ok, disabled} + end; + {error, _} = Error -> + Error + end. + +versioning_term_to_option(<<"enabled">>) -> enabled; +versioning_term_to_option(<<"disabled">>) -> disabled. + %% =================================================================== %% Internal functions @@ -379,6 +417,16 @@ bucket_policy_json(PolicyJson, KeyId) -> {<<"policy">>, PolicyJson}] }))). +%% @doc Generate a JSON document to use in setting bucket versioning option +-spec bucket_versioning_json(bucket_versioning_option(), string()) -> string(). +bucket_versioning_json(Option, KeyId) -> + binary_to_list( + iolist_to_binary( + mochijson2:encode({struct, [{<<"requester">>, list_to_binary(KeyId)}, + {<<"versioning">>, versioning_option_to_binary(Option)}] + }))). +versioning_option_to_binary(A) -> atom_to_binary(A, latin1). + %% @doc Check if a bucket is empty -spec bucket_empty(binary(), riak_client()) -> {ok, boolean()} | {error, term()}. bucket_empty(Bucket, RcPid) -> @@ -519,6 +567,18 @@ bucket_fun(update_policy, Bucket, _BagId, PolicyJson, KeyId, AdminCreds, Stanchi [{ssl, StanchionSSL}, {auth_creds, AdminCreds}]) end; +bucket_fun(update_versioning, Bucket, _BagId, VsnOption, KeyId, AdminCreds, StanchionData) -> + {StanchionIp, StanchionPort, StanchionSSL} = StanchionData, + Doc = bucket_versioning_json(VsnOption, KeyId), + fun() -> + velvet:set_bucket_versioning(StanchionIp, + StanchionPort, + Bucket, + "application/json", + Doc, + [{ssl, StanchionSSL}, + {auth_creds, AdminCreds}]) + end; bucket_fun(delete_policy, Bucket, _BagId, _, KeyId, AdminCreds, StanchionData) -> {StanchionIp, StanchionPort, StanchionSSL} = StanchionData, %% Generate the bucket JSON document for the ACL request @@ -658,7 +718,7 @@ resolve_buckets([HeadUserRec | RestUserRecs], Buckets, _KeepDeleted) -> %% @doc Shared code used when doing a bucket creation or deletion. -spec serialized_bucket_op(binary(), - [] | acl() | policy(), + [] | acl() | policy() | bucket_versioning_option(), rcs_user(), riakc_obj:riakc_obj(), bucket_operation(), @@ -673,7 +733,7 @@ serialized_bucket_op(Bucket, ACL, User, UserObj, BucketOp, StatKey, RcPid) -> %% @doc Shared code used when doing a bucket creation or deletion. -spec serialized_bucket_op(binary(), bag_id(), - [] | acl() | policy(), + [] | acl() | policy() | bucket_versioning_option(), rcs_user(), riakc_obj:riakc_obj(), bucket_operation(), @@ -681,7 +741,7 @@ serialized_bucket_op(Bucket, ACL, User, UserObj, BucketOp, StatKey, RcPid) -> riak_client()) -> ok | {error, term()}. -serialized_bucket_op(Bucket, BagId, ACL, User, UserObj, BucketOp, StatsKey, RcPid) -> +serialized_bucket_op(Bucket, BagId, Arg, User, UserObj, BucketOp, StatsKey, RcPid) -> StartTime = os:timestamp(), _ = riak_cs_stats:inflow(StatsKey), {ok, AdminCreds} = riak_cs_config:admin_creds(), @@ -689,7 +749,7 @@ serialized_bucket_op(Bucket, BagId, ACL, User, UserObj, BucketOp, StatsKey, RcPi BucketFun = bucket_fun(BucketOp, Bucket, BagId, - ACL, + Arg, User?RCS_USER.key_id, AdminCreds, riak_cs_utils:stanchion_data()), diff --git a/apps/riak_cs/src/riak_cs_stats.erl b/apps/riak_cs/src/riak_cs_stats.erl index 1d6e3f7c6..61f49562b 100644 --- a/apps/riak_cs/src/riak_cs_stats.erl +++ b/apps/riak_cs/src/riak_cs_stats.erl @@ -66,6 +66,7 @@ duration_metrics() -> [bucket_policy, delete], [bucket_location, get], [bucket_versioning, get], + [bucket_versioning, put], [bucket_request_payment, get], [list_uploads, get], [multiple_delete, post], @@ -94,6 +95,7 @@ duration_metrics() -> [velvet, set_bucket_acl], [velvet, set_bucket_policy], [velvet, delete_bucket_policy], + [velvet, set_bucket_versioning], %% Riak PB client, per key operations [riakc, ping], diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl index 206da4090..e6ae775dd 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl @@ -23,12 +23,15 @@ -export([stats_prefix/0, content_types_provided/2, + content_types_accepted/2, to_xml/2, + accept_body/2, allowed_methods/0]). -export([authorize/2]). -include("riak_cs.hrl"). +-include_lib("xmerl/include/xmerl.hrl"). -include_lib("webmachine/include/webmachine.hrl"). -spec stats_prefix() -> bucket_versioning. @@ -37,13 +40,23 @@ stats_prefix() -> bucket_versioning. %% @doc Get the list of methods this resource supports. -spec allowed_methods() -> [atom()]. allowed_methods() -> - %% TODO: PUT? - ['GET']. + ['GET', 'PUT']. -spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. content_types_provided(RD, Ctx) -> {[{"application/xml", to_xml}], RD, Ctx}. +-spec content_types_accepted(#wm_reqdata{}, #context{}) -> + {[{string(), atom()}], #wm_reqdata{}, #context{}}. +content_types_accepted(RD, Ctx) -> + case wrq:get_req_header("content-type", RD) of + undefined -> + {[{"application/octet-stream", add_acl_to_context_then_accept}], RD, Ctx}; + CType -> + {Media, _Params} = mochiweb_util:parse_header(CType), + {[{Media, add_acl_to_context_then_accept}], RD, Ctx} + end. + -spec authorize(#wm_reqdata{}, #context{}) -> {boolean() | {halt, term()}, #wm_reqdata{}, #context{}}. authorize(RD, Ctx) -> @@ -52,13 +65,68 @@ authorize(RD, Ctx) -> -spec to_xml(#wm_reqdata{}, #context{}) -> {binary() | {halt, term()}, #wm_reqdata{}, #context{}}. -to_xml(RD, Ctx=#context{user=User,bucket=Bucket}) -> +to_xml(RD, Ctx=#context{user = User, + bucket = Bucket, + riak_client = RcPid}) -> StrBucket = binary_to_list(Bucket), case [B || B <- riak_cs_bucket:get_buckets(User), B?RCS_BUCKET.name =:= StrBucket] of [] -> riak_cs_s3_response:api_error(no_such_bucket, RD, Ctx); [_BucketRecord] -> - {<<"">>, + {ok, VsnOption} = riak_cs_bucket:get_bucket_versioning(Bucket, RcPid), + {iolist_to_binary(["", + "", vsn_option_to_string(VsnOption), "" + ""]), RD, Ctx} end. + +vsn_option_to_string(enabled) -> "Enabled"; +vsn_option_to_string(disabled) -> "Disabled". + +-spec accept_body(#wm_reqdata{}, #context{}) -> {{halt, integer()}, #wm_reqdata{}, #context{}}. +accept_body(RD, Ctx = #context{user = User, + user_object=UserObj, + bucket=Bucket, + response_module=ResponseMod, + riak_client=RcPid}) -> + riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_put_versioning">>, + [], [riak_cs_wm_utils:extract_name(User), Bucket]), + case riak_cs_xml:scan(binary_to_list(wrq:req_body(RD))) of + {ok, #xmlElement{name = 'VersioningConfiguration', + content = CC}} -> + case lists:search(fun(#xmlElement{name = N}) -> N == 'Status' end, CC) of + {value, #xmlElement{content = [#xmlText{value = VsnOption}]}} + when VsnOption == "Enabled"; + VsnOption == "Disabled" -> + case riak_cs_bucket:set_bucket_versioning(User, + UserObj, + Bucket, + versioning_string_to_internal(VsnOption), + RcPid) of + ok -> + riak_cs_dtrace:dt_bucket_return(?MODULE, <<"bucket_put_versioning">>, + [200], [riak_cs_wm_utils:extract_name(User), Bucket]), + {{halt, 200}, RD, Ctx}; + {error, Reason} -> + Code = ResponseMod:status_code(Reason), + riak_cs_dtrace:dt_bucket_return(?MODULE, <<"bucket_put_versioning">>, + [Code], [riak_cs_wm_utils:extract_name(User), Bucket]), + ResponseMod:api_error(Reason, RD, Ctx) + end; + false -> + Reason = malformed_xml, + Code = ResponseMod:status_code(Reason), + riak_cs_dtrace:dt_bucket_return(?MODULE, <<"bucket_put_versioning">>, + [Code], [riak_cs_wm_utils:extract_name(User), Bucket]), + ResponseMod:api_error(Reason, RD, Ctx) + end; + {error, Reason} -> + Code = ResponseMod:status_code(Reason), + riak_cs_dtrace:dt_bucket_return(?MODULE, <<"bucket_put_versioning">>, + [Code], [riak_cs_wm_utils:extract_name(User), Bucket]), + ResponseMod:api_error(Reason, RD, Ctx) + end. + +versioning_string_to_internal("Enabled") -> enabled; +versioning_string_to_internal("Disabled") -> disabled. diff --git a/apps/riak_cs/src/velvet.erl b/apps/riak_cs/src/velvet.erl index 7b361ec5b..a77015a92 100644 --- a/apps/riak_cs/src/velvet.erl +++ b/apps/riak_cs/src/velvet.erl @@ -29,6 +29,7 @@ ping/3, set_bucket_acl/6, set_bucket_policy/6, + set_bucket_versioning/6, delete_bucket_policy/5, update_user/6 % @TODO: update_bucket/3 @@ -163,7 +164,7 @@ set_bucket_acl(Ip, Port, Bucket, ContentType, AclDoc, Options) -> Path = buckets_path(Bucket, acl), update_bucket(Ip, Port, Path, ContentType, AclDoc, Options, 204). -%% @doc Create a bucket for a requesting party. +%% @doc Set bucket policy -spec set_bucket_policy(string(), inet:port_number(), binary(), @@ -174,6 +175,17 @@ set_bucket_policy(Ip, Port, Bucket, ContentType, PolicyDoc, Options) -> Path = buckets_path(Bucket, policy), update_bucket(Ip, Port, Path, ContentType, PolicyDoc, Options, 204). +%% @doc Set bucket versioning +-spec set_bucket_versioning(string(), + inet:port_number(), + binary(), + string(), + string(), + proplists:proplist()) -> ok | {error, term()}. +set_bucket_versioning(Ip, Port, Bucket, ContentType, Doc, Options) -> + Path = buckets_path(Bucket, versioning), + update_bucket(Ip, Port, Path, ContentType, Doc, Options, 204). + %% @doc Delete a bucket. The bucket must be owned by %% the requesting party. -spec delete_bucket_policy(string(), @@ -300,11 +312,13 @@ buckets_path(Bucket) -> ["/" ++ binary_to_list(Bucket) || Bucket /= <<>>]]). %% @doc Assemble the path for a bucket request --spec buckets_path(binary(), acl|policy) -> string(). +-spec buckets_path(binary(), acl|policy|versioning) -> string(). buckets_path(Bucket, acl) -> stringy([buckets_path(Bucket), "/acl"]); buckets_path(Bucket, policy) -> - stringy([buckets_path(Bucket), "/policy"]). + stringy([buckets_path(Bucket), "/policy"]); +buckets_path(Bucket, versioning) -> + stringy([buckets_path(Bucket), "/versioning"]). %% @doc Assemble the URL for a buckets request -spec url(string(), pos_integer(), boolean(), [string()]) -> From 2d7da496a165a12efb9313d9de8854b5131f33ab Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 27 Jul 2021 21:30:23 +0300 Subject: [PATCH 177/831] dialyzer-assisted fixups --- apps/riak_cs/src/riak_cs_bucket.erl | 26 +++---------------- apps/riak_cs/src/riak_cs_list_objects_fsm.erl | 5 ++-- .../src/riak_cs_wm_bucket_versioning.erl | 8 +++--- 3 files changed, 10 insertions(+), 29 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index 58269051b..40704cb7a 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -525,7 +525,7 @@ bucket_exists(Buckets, CheckBucket) -> -spec bucket_fun(bucket_operation(), binary(), bag_id(), - [] | policy() | acl(), + [] | policy() | acl() | bucket_versioning_option(), string(), {string(), string()}, {string(), pos_integer(), boolean()}) -> function(). @@ -717,30 +717,10 @@ resolve_buckets([HeadUserRec | RestUserRecs], Buckets, _KeepDeleted) -> resolve_buckets(RestUserRecs, UpdBuckets, _KeepDeleted). %% @doc Shared code used when doing a bucket creation or deletion. --spec serialized_bucket_op(binary(), - [] | acl() | policy() | bucket_versioning_option(), - rcs_user(), - riakc_obj:riakc_obj(), - bucket_operation(), - riak_cs_stats:key(), - riak_client()) -> - ok | - {error, term()}. -serialized_bucket_op(Bucket, ACL, User, UserObj, BucketOp, StatKey, RcPid) -> - serialized_bucket_op(Bucket, undefined, ACL, User, UserObj, +serialized_bucket_op(Bucket, Arg, User, UserObj, BucketOp, StatKey, RcPid) -> + serialized_bucket_op(Bucket, undefined, Arg, User, UserObj, BucketOp, StatKey, RcPid). -%% @doc Shared code used when doing a bucket creation or deletion. --spec serialized_bucket_op(binary(), - bag_id(), - [] | acl() | policy() | bucket_versioning_option(), - rcs_user(), - riakc_obj:riakc_obj(), - bucket_operation(), - riak_cs_stats:key(), - riak_client()) -> - ok | - {error, term()}. serialized_bucket_op(Bucket, BagId, Arg, User, UserObj, BucketOp, StatsKey, RcPid) -> StartTime = os:timestamp(), _ = riak_cs_stats:inflow(StatsKey), diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl index f796a0666..58bffcdea 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl @@ -414,7 +414,8 @@ prepare_state_for_mapred(State=#state{req=Request, -spec make_response(list_object_request(), list(), list()) -> list_object_response(). -make_response(Request=?LOREQ{max_keys=NumKeysRequested}, +make_response(Request=?LOREQ{req_type = ReqType, + max_keys = NumKeysRequested}, ObjectBuffer, CommonPrefixes) -> ObjectPrefixTuple = {ObjectBuffer, CommonPrefixes}, NumObjects = @@ -425,7 +426,7 @@ make_response(Request=?LOREQ{max_keys=NumKeysRequested}, NumKeysRequested), {NewManis, NewPrefixes} = riak_cs_list_objects_utils:untagged_manifest_and_prefix(SlicedTaggedItems), - KeyContents = lists:map(fun riak_cs_list_objects:manifest_to_keycontent/1, + KeyContents = lists:map(fun(M) -> riak_cs_list_objects:manifest_to_keycontent(ReqType, M) end, NewManis), riak_cs_list_objects:new_response(Request, IsTruncated, undefined, NewPrefixes, KeyContents). diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl index e6ae775dd..2413651a1 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl @@ -86,10 +86,10 @@ vsn_option_to_string(disabled) -> "Disabled". -spec accept_body(#wm_reqdata{}, #context{}) -> {{halt, integer()}, #wm_reqdata{}, #context{}}. accept_body(RD, Ctx = #context{user = User, - user_object=UserObj, - bucket=Bucket, - response_module=ResponseMod, - riak_client=RcPid}) -> + user_object = UserObj, + bucket = Bucket, + response_module = ResponseMod, + riak_client = RcPid}) -> riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_put_versioning">>, [], [riak_cs_wm_utils:extract_name(User), Bucket]), case riak_cs_xml:scan(binary_to_list(wrq:req_body(RD))) of From 2e700bf3afdee168a7133972ba437ea6bcaf3b5c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 27 Jul 2021 22:15:15 +0300 Subject: [PATCH 178/831] eunit and riak_cs_test QA --- apps/riak_cs/src/riak_cs_xml.erl | 7 ++++--- .../test/prop_riak_cs_list_objects_fsm_v2.erl | 3 ++- .../riak_cs/test/riak_cs_list_objects_utils_test.erl | 12 ++++++------ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_xml.erl b/apps/riak_cs/src/riak_cs_xml.erl index eb73cfcc0..055adf439 100644 --- a/apps/riak_cs/src/riak_cs_xml.erl +++ b/apps/riak_cs/src/riak_cs_xml.erl @@ -163,7 +163,7 @@ list_objects_response_to_simple_form(?LORESP{resp_type = objects, is_truncated = IsTruncated}) -> KeyContents = [{'Contents', key_content_to_simple_form(objects, Content)} || Content <- Contents], - CommonPrefixes = [{'CommonPrefixes', [{'Prefix', [CommonPrefix]}]} || + CCPP = [{'CommonPrefixes', [{'Prefix', [CommonPrefix]}]} || CommonPrefix <- CommonPrefixes], Body = [{'Name', [Name]}, {'Prefix', [Prefix]}, @@ -177,7 +177,7 @@ list_objects_response_to_simple_form(?LORESP{resp_type = objects, [{'MaxKeys', [MaxKeys]}, {'Delimiter', [Delimiter]}, {'IsTruncated', [IsTruncated]}] ++ - KeyContents ++ CommonPrefixes, + KeyContents ++ CCPP, [{'ListBucketResult', [{'xmlns', ?S3_XMLNS}], Body}]; list_objects_response_to_simple_form(?LORESP{resp_type = versions, @@ -391,7 +391,8 @@ list_objects_response_to_xml_test() -> size = 54321, owner = Owner2, storage_class = <<"STANDARD">>}, - ListObjectsResponse = ?LORESP{name = <<"bucket">>, + ListObjectsResponse = ?LORESP{resp_type = objects, + name = <<"bucket">>, max_keys = 1000, prefix = undefined, delimiter = undefined, diff --git a/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl index 6c523909e..67b415735 100644 --- a/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl @@ -310,7 +310,8 @@ list_manifests_to_the_end(DummyRc, Opts, UserPage, BatchSize, CPrefixesAcc, Cont Bucket = <<"bucket">>, %% TODO: Generator? %% delimeter, marker and prefix should be generated? - ListKeysRequest = riak_cs_list_objects:new_request(Bucket, + ListKeysRequest = riak_cs_list_objects:new_request(objects, + Bucket, UserPage, Opts), {ok, FsmPid} = riak_cs_list_objects_fsm_v2:start_link(DummyRc, ListKeysRequest, BatchSize), diff --git a/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl b/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl index b44639a09..5c198e552 100644 --- a/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl +++ b/apps/riak_cs/test/riak_cs_list_objects_utils_test.erl @@ -34,24 +34,24 @@ filter_prefix_keys_test_() -> [ %% simple test - test_creator(riak_cs_list_objects:new_request(<<"bucket">>), + test_creator(riak_cs_list_objects:new_request(objects, <<"bucket">>), {manifests(), []}), %% simple prefix - test_creator(riak_cs_list_objects:new_request(<<"bucket">>, + test_creator(riak_cs_list_objects:new_request(objects, <<"bucket">>, 1000, [{prefix, <<"a">>}]), {manifests([<<"a">>]), []}), %% simple prefix 2 - test_creator(riak_cs_list_objects:new_request(<<"bucket">>, + test_creator(riak_cs_list_objects:new_request(objects, <<"bucket">>, 1000, [{prefix, <<"photos/">>}]), {lists:sublist(manifests(), 4, length(manifests())), []}), %% prefix and delimiter - test_creator(riak_cs_list_objects:new_request(<<"bucket">>, + test_creator(riak_cs_list_objects:new_request(objects, <<"bucket">>, 1000, [{prefix, <<"photos/">>}, {delimiter, <<"/">>}]), @@ -60,14 +60,14 @@ filter_prefix_keys_test_() -> %% prefix and delimiter 2 %% The only difference from the above test is %% in the `prefix', note the lack of `/' after `photos' - test_creator(riak_cs_list_objects:new_request(<<"bucket">>, + test_creator(riak_cs_list_objects:new_request(objects, <<"bucket">>, 1000, [{prefix, <<"photos">>}, {delimiter, <<"/">>}]), {[], [<<"photos/">>]}), %% prefix and delimiter - test_creator(riak_cs_list_objects:new_request(<<"bucket">>, + test_creator(riak_cs_list_objects:new_request(objects, <<"bucket">>, 1000, [{delimiter, <<"/">>}]), {manifests([<<"a">>, <<"b">>, <<"c">>]), From 29fec377aa2c9d37db553d9fc5632397b128fddc Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 29 Jul 2021 20:22:03 +0300 Subject: [PATCH 179/831] extended bucket properties for object versioning --- apps/riak_cs/include/riak_cs.hrl | 10 +- apps/riak_cs/src/riak_cs_bucket.erl | 42 +++++-- .../src/riak_cs_wm_bucket_versioning.erl | 117 +++++++++++++----- 3 files changed, 128 insertions(+), 41 deletions(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index 8db568754..3af9181e9 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -76,7 +76,15 @@ -type bucket_operation() :: create | delete | update_acl | update_policy | delete_policy | update_versioning. -type bucket_action() :: created | deleted. --type bucket_versioning_option() :: enabled | disabled. + +-record(bucket_versioning, {status = suspended :: enabled | suspended, + mfa_delete = disabled :: disabled | enabled, + %% Riak CS extensions + use_subversioning = false :: boolean(), + can_update_versions = false :: boolean(), + repl_siblings = true :: boolean() + }). +-type bucket_versioning() :: #bucket_versioning{}. -record(context, {start_time :: undefined | erlang:timestamp(), auth_bypass :: atom(), diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index 40704cb7a..7024f94dd 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -359,7 +359,7 @@ format_acl_policy_response({ok, Acl}, {ok, Policy}) -> {Acl, Policy}. -spec set_bucket_versioning(rcs_user(), riakc_obj:riakc_obj(), - binary(), bucket_versioning_option(), riak_client()) -> + binary(), bucket_versioning(), riak_client()) -> ok | {error, term()}. set_bucket_versioning(User, UserObj, Bucket, Option, RcPid) -> serialized_bucket_op(Bucket, @@ -371,7 +371,7 @@ set_bucket_versioning(User, UserObj, Bucket, Option, RcPid) -> RcPid). -spec get_bucket_versioning(binary(), riak_client()) -> - {ok, bucket_versioning_option()} | {error, term()}. + {ok, bucket_versioning()} | {error, term()}. get_bucket_versioning(Bucket, RcPid) -> case fetch_bucket_object(Bucket, RcPid) of {ok, Obj} -> @@ -380,19 +380,29 @@ get_bucket_versioning(Bucket, RcPid) -> {ok, UM} -> case proplists:get_value(?MD_VERSIONING, UM) of undefined -> - {ok, disabled}; + {ok, #bucket_versioning{status = suspended}}; Defined -> - {ok, versioning_term_to_option(binary_to_term(Defined))} + {ok, versioning_json_to_struct(binary_to_term(Defined))} end; error -> - {ok, disabled} + {ok, #bucket_versioning{status = suspended}} end; {error, _} = Error -> Error end. -versioning_term_to_option(<<"enabled">>) -> enabled; -versioning_term_to_option(<<"disabled">>) -> disabled. +versioning_json_to_struct({struct, Doc}) -> + lists:foldl( + fun({<<"Status">>, <<"enabled">>}, Acc) -> Acc#bucket_versioning{status = enabled}; + ({<<"Status">>, <<"suspended">>}, Acc) -> Acc#bucket_versioning{status = suspended}; + ({<<"MFADelete">>, <<"enabled">>}, Acc) -> Acc#bucket_versioning{mfa_delete = enabled}; + ({<<"MFADelete">>, <<"disabled">>}, Acc) -> Acc#bucket_versioning{mfa_delete = disabled}; + ({<<"CanUpdateVersions">>, V}, Acc) -> Acc#bucket_versioning{can_update_versions = V}; + ({<<"UseSubversioning">>, V}, Acc) -> Acc#bucket_versioning{use_subversioning = V}; + ({<<"ReplSiblings">>, V}, Acc) -> Acc#bucket_versioning{repl_siblings = V} + end, + #bucket_versioning{}, + Doc). %% =================================================================== @@ -418,14 +428,22 @@ bucket_policy_json(PolicyJson, KeyId) -> }))). %% @doc Generate a JSON document to use in setting bucket versioning option --spec bucket_versioning_json(bucket_versioning_option(), string()) -> string(). -bucket_versioning_json(Option, KeyId) -> +-spec bucket_versioning_json(bucket_versioning(), string()) -> string(). +bucket_versioning_json(#bucket_versioning{status = Status, + mfa_delete = MfaDelete, + can_update_versions = CanUpdateVersions, + use_subversioning = UseSubversioning, + repl_siblings = ReplSiblings}, KeyId) -> + lager:debug("MMMMMM ~p", [MfaDelete]), binary_to_list( iolist_to_binary( mochijson2:encode({struct, [{<<"requester">>, list_to_binary(KeyId)}, - {<<"versioning">>, versioning_option_to_binary(Option)}] + {<<"versioning">>, [{<<"Status">>, Status}, + {<<"MFADelete">>, MfaDelete}, + {<<"CanUpdateVersions">>, CanUpdateVersions}, + {<<"UseSubversioning">>, UseSubversioning}, + {<<"ReplSiblings">>, ReplSiblings}]}] }))). -versioning_option_to_binary(A) -> atom_to_binary(A, latin1). %% @doc Check if a bucket is empty -spec bucket_empty(binary(), riak_client()) -> {ok, boolean()} | {error, term()}. @@ -525,7 +543,7 @@ bucket_exists(Buckets, CheckBucket) -> -spec bucket_fun(bucket_operation(), binary(), bag_id(), - [] | policy() | acl() | bucket_versioning_option(), + [] | policy() | acl() | bucket_versioning(), string(), {string(), string()}, {string(), pos_integer(), boolean()}) -> function(). diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl index 2413651a1..35bc529b5 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl @@ -74,15 +74,28 @@ to_xml(RD, Ctx=#context{user = User, [] -> riak_cs_s3_response:api_error(no_such_bucket, RD, Ctx); [_BucketRecord] -> - {ok, VsnOption} = riak_cs_bucket:get_bucket_versioning(Bucket, RcPid), + {ok, #bucket_versioning{status = Status, + mfa_delete = MFADelete, + use_subversioning = UseSubVersioning, + can_update_versions = CanUpdateVersions, + repl_siblings = ReplSiblings}} = + riak_cs_bucket:get_bucket_versioning(Bucket, RcPid), {iolist_to_binary(["", - "", vsn_option_to_string(VsnOption), "" + "", to_string(status, Status), "", + "", to_string(mfa_delete, MFADelete), "", + "", to_string(bool, UseSubVersioning), "", + "", to_string(bool, CanUpdateVersions), "", + "", to_string(bool, ReplSiblings), "", ""]), RD, Ctx} end. -vsn_option_to_string(enabled) -> "Enabled"; -vsn_option_to_string(disabled) -> "Disabled". +to_string(status, enabled) -> "Enabled"; +to_string(status, suspended) -> "Suspended"; +to_string(mfa_delete, enabled) -> "Enabled"; +to_string(mfa_delete, disabled) -> "Disabled"; +to_string(bool, true) -> "True"; +to_string(bool, false) -> "False". -spec accept_body(#wm_reqdata{}, #context{}) -> {{halt, integer()}, #wm_reqdata{}, #context{}}. accept_body(RD, Ctx = #context{user = User, @@ -92,30 +105,23 @@ accept_body(RD, Ctx = #context{user = User, riak_client = RcPid}) -> riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_put_versioning">>, [], [riak_cs_wm_utils:extract_name(User), Bucket]), + {ok, OldV} = riak_cs_bucket:get_bucket_versioning(Bucket, RcPid), case riak_cs_xml:scan(binary_to_list(wrq:req_body(RD))) of - {ok, #xmlElement{name = 'VersioningConfiguration', - content = CC}} -> - case lists:search(fun(#xmlElement{name = N}) -> N == 'Status' end, CC) of - {value, #xmlElement{content = [#xmlText{value = VsnOption}]}} - when VsnOption == "Enabled"; - VsnOption == "Disabled" -> - case riak_cs_bucket:set_bucket_versioning(User, - UserObj, - Bucket, - versioning_string_to_internal(VsnOption), - RcPid) of - ok -> - riak_cs_dtrace:dt_bucket_return(?MODULE, <<"bucket_put_versioning">>, - [200], [riak_cs_wm_utils:extract_name(User), Bucket]), - {{halt, 200}, RD, Ctx}; - {error, Reason} -> - Code = ResponseMod:status_code(Reason), - riak_cs_dtrace:dt_bucket_return(?MODULE, <<"bucket_put_versioning">>, - [Code], [riak_cs_wm_utils:extract_name(User), Bucket]), - ResponseMod:api_error(Reason, RD, Ctx) - end; + {ok, Doc} -> + {NewV, IsUpdated} = + update_versioning_struct_from_xml(OldV, Doc), + case IsUpdated of + true -> + riak_cs_bucket:set_bucket_versioning( + User, UserObj, Bucket, NewV, RcPid), + riak_cs_dtrace:dt_bucket_return(?MODULE, <<"bucket_put_versioning">>, + [200], [riak_cs_wm_utils:extract_name(User), Bucket]), + {{halt, 200}, RD, Ctx}; false -> - Reason = malformed_xml, + riak_cs_dtrace:dt_bucket_return(?MODULE, <<"bucket_put_versioning">>, + [200], [riak_cs_wm_utils:extract_name(User), Bucket]), + {{halt, 200}, RD, Ctx}; + {error, Reason} -> Code = ResponseMod:status_code(Reason), riak_cs_dtrace:dt_bucket_return(?MODULE, <<"bucket_put_versioning">>, [Code], [riak_cs_wm_utils:extract_name(User), Bucket]), @@ -128,5 +134,60 @@ accept_body(RD, Ctx = #context{user = User, ResponseMod:api_error(Reason, RD, Ctx) end. -versioning_string_to_internal("Enabled") -> enabled; -versioning_string_to_internal("Disabled") -> disabled. +update_versioning_struct_from_xml(Old, #xmlElement{name = 'VersioningConfiguration', + content = Content}) -> + MaybeNew = + lists:foldl( + fun(#xmlElement{name = 'Status', content = C}, Acc) -> + Acc#bucket_versioning{status = from_xml_node_content(status, C, Old#bucket_versioning.status)}; + (#xmlElement{name = 'MFADelete', content = C}, Acc) -> + Acc#bucket_versioning{mfa_delete = from_xml_node_content(mfa_delete, C, Old#bucket_versioning.mfa_delete)}; + (#xmlElement{name = 'UseSubVersioning', content = C}, Acc) -> + Acc#bucket_versioning{use_subversioning = from_xml_node_content(use_subversioning, C, Old#bucket_versioning.use_subversioning)}; + (#xmlElement{name = 'CanUpdateVersions', content = C}, Acc) -> + Acc#bucket_versioning{can_update_versions = from_xml_node_content(can_update_versions, C, Old#bucket_versioning.can_update_versions)}; + (#xmlElement{name = 'ReplSiblings', content = C}, Acc) -> + Acc#bucket_versioning{repl_siblings = from_xml_node_content(repl_siblings, C, Old#bucket_versioning.repl_siblings)}; + (#xmlElement{}, Acc) -> + Acc + end, + Old, + Content), + case Old == MaybeNew of + true -> + {Old, false}; + false -> + {MaybeNew, true} + end; +update_versioning_struct_from_xml(Old, _) -> + {Old, {error, malformed_xml}}. + +from_xml_node_content(status, CC, Old) -> + case lists:search(fun(#xmlText{}) -> true; (_) -> false end, CC) of + {value, #xmlText{value = "Enabled"}} -> + enabled; + {value, #xmlText{value = "Suspended"}} -> + suspended; + _ -> + Old + end; +from_xml_node_content(mfa_delete, CC, Old) -> + case lists:search(fun(#xmlText{}) -> true; (_) -> false end, CC) of + {value, #xmlText{value = "Enabled"}} -> + enabled; + {value, #xmlText{value = "Disabled"}} -> + disabled; + _ -> + Old + end; +from_xml_node_content(_, CC, Old) -> + case lists:search(fun(#xmlText{}) -> true; (_) -> false end, CC) of + {value, #xmlText{value = V}} when V == "True"; + V == "true" -> + true; + {value, #xmlText{value = V}} when V == "False"; + V == "false" -> + false; + _ -> + Old + end. From c50771861de19b59c72638bc3a2a36013652b1d5 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 30 Jul 2021 19:51:18 +0300 Subject: [PATCH 180/831] mention newly added versioning API calls in s3_api.hrl --- apps/riak_cs/include/s3_api.hrl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/riak_cs/include/s3_api.hrl b/apps/riak_cs/include/s3_api.hrl index 108a5bbfe..168520176 100644 --- a/apps/riak_cs/include/s3_api.hrl +++ b/apps/riak_cs/include/s3_api.hrl @@ -31,6 +31,7 @@ | 's3:PutObject' | 's3:PutObjectAcl' | 's3:PutObjectVersionAcl' | 's3:DeleteObject' | 's3:DeleteObjectVersion' + | 's3:ListObjectVersions' | 's3:ListMultipartUploadParts' | 's3:AbortMultipartUpload' %| 's3:GetObjectTorrent' we never do this @@ -40,6 +41,7 @@ -define(SUPPORTED_OBJECT_ACTION, [ 's3:GetObject', 's3:GetObjectAcl', 's3:PutObject', 's3:PutObjectAcl', 's3:DeleteObject', + 's3:ListObjectVersions', 's3:ListMultipartUploadParts', 's3:AbortMultipartUpload' ]). -type s3_bucket_action() :: 's3:CreateBucket' @@ -62,6 +64,7 @@ [ 's3:CreateBucket', 's3:DeleteBucket', 's3:ListBucket', 's3:ListAllMyBuckets', 's3:GetBucketAcl', 's3:PutBucketAcl', 's3:GetBucketPolicy', 's3:DeleteBucketPolicy', 's3:PutBucketPolicy', + 's3:GetBucketVersioning', 's3:PutBucketVersioning', 's3:ListBucketMultipartUploads']). % one of string, numeric, date&time, boolean, IP address, ARN and existence of condition keys From 7a5193f30d070ff47f2ad3f484dd95bea1c76a5c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 30 Jul 2021 19:52:45 +0300 Subject: [PATCH 181/831] extract CS-specific extensions from PutBucketVersioning request headers --- apps/riak_cs/src/riak_cs_bucket.erl | 1 - .../src/riak_cs_wm_bucket_versioning.erl | 33 ++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index 7024f94dd..614e8ce9e 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -434,7 +434,6 @@ bucket_versioning_json(#bucket_versioning{status = Status, can_update_versions = CanUpdateVersions, use_subversioning = UseSubversioning, repl_siblings = ReplSiblings}, KeyId) -> - lager:debug("MMMMMM ~p", [MfaDelete]), binary_to_list( iolist_to_binary( mochijson2:encode({struct, [{<<"requester">>, list_to_binary(KeyId)}, diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl index 35bc529b5..978f6450c 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl @@ -109,7 +109,9 @@ accept_body(RD, Ctx = #context{user = User, case riak_cs_xml:scan(binary_to_list(wrq:req_body(RD))) of {ok, Doc} -> {NewV, IsUpdated} = - update_versioning_struct_from_xml(OldV, Doc), + update_versioning_struct_from_headers( + update_versioning_struct_from_xml(OldV, Doc), + RD), case IsUpdated of true -> riak_cs_bucket:set_bucket_versioning( @@ -191,3 +193,32 @@ from_xml_node_content(_, CC, Old) -> _ -> Old end. + +update_versioning_struct_from_headers({OldV, IsUpdated0}, RD) -> + MaybeNew = + lists:foldl(fun({H, F}, Q) -> maybe_set_field(F, to_bool(wrq:get_req_header(H, RD)), Q) end, + OldV, + [{"x-rcs-versioning-use_subversioning", #bucket_versioning.use_subversioning}, + {"x-rcs-versioning-can_update_versions", #bucket_versioning.can_update_versions}, + {"x-rcs-versioning-repl_siblings", #bucket_versioning.repl_siblings}]), + if MaybeNew == OldV -> + {OldV, IsUpdated0}; + el/=se -> + {MaybeNew, true} + end. +maybe_set_field(_, undefined, OldV) -> + OldV; +maybe_set_field(F, V, OldV) -> + if element(F, OldV) == V -> + OldV; + el/=se -> + setelement(F, OldV, V) + end. + +to_bool("True") -> true; +to_bool("true") -> true; +to_bool("1") -> true; +to_bool("False") -> false; +to_bool("false") -> false; +to_bool("0") -> false; +to_bool(_) -> undefined. From e34060ca6f22da323c5e5eaa84eb5bc94e2f691d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 4 Aug 2021 10:08:38 +0300 Subject: [PATCH 182/831] leftovers from eqc->proper transition --- apps/riak_cs/src/riak_cs_mp_utils.erl | 14 ++++---------- apps/riak_cs/src/riak_cs_wm_usage.erl | 10 +++------- apps/riak_cs/test/riak_cs_get_fsm_pulse.erl | 2 -- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 269afb3a8..fb9f05142 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -30,9 +30,7 @@ -ifdef(TEST). -compile(export_all). -compile(nowarn_export_all). --ifdef(EQC). --include_lib("eqc/include/eqc.hrl"). --endif. +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -endif. @@ -859,12 +857,10 @@ comb_parts_test() -> ok. --ifdef(EQC). - -eval_part_sizes_eqc_test() -> - true = eqc:quickcheck(eqc:numtests(500, prop_part_sizes())). +eval_part_sizes_eqc_test() -> + true = proper:quickcheck(numtests(500, prop_part_sizes())). -prop_part_sizes() -> +prop_part_sizes() -> Min = ?MIN_MP_PART_SIZE, Min_1 = Min - 1, MinMinus100 = Min - 100, @@ -875,6 +871,4 @@ prop_part_sizes() false == eval_part_sizes_wrapper(L ++ [Min_1] ++ L ++ [Either]) ). --endif. % EQC - -endif. diff --git a/apps/riak_cs/src/riak_cs_wm_usage.erl b/apps/riak_cs/src/riak_cs_wm_usage.erl index ec8f3e5ad..9fe1d12ca 100644 --- a/apps/riak_cs/src/riak_cs_wm_usage.erl +++ b/apps/riak_cs/src/riak_cs_wm_usage.erl @@ -119,10 +119,8 @@ -on_load(on_load/0). -ifdef(TEST). --ifdef(EQC). --compile([export_all]). --include_lib("eqc/include/eqc.hrl"). --endif. +-compile([export_all, nowarn_export_all]). +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -endif. @@ -494,11 +492,10 @@ too_many_periods(Start, End) -> ((Seconds div Access) > Limit) orelse ((Seconds div Storage) > Limit). -ifdef(TEST). --ifdef(EQC). datetime_test() -> - true = eqc:quickcheck(datetime_invalid_prop()). + true = proper:quickcheck(datetime_invalid_prop()). %% make sure that datetime correctly returns 'error' for invalid %% iso8601 date strings @@ -526,5 +523,4 @@ valid_iso8601(L) -> is_digit(C) -> C >= $0 andalso C =< $9. --endif. % EQC -endif. % TEST diff --git a/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl b/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl index 8872c88cf..5ece6f22b 100644 --- a/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl +++ b/apps/riak_cs/test/riak_cs_get_fsm_pulse.erl @@ -21,7 +21,6 @@ -module(riak_cs_get_fsm_pulse). --ifdef(EQC). -ifdef(PULSE). -include_lib("eqc/include/eqc.hrl"). @@ -167,4 +166,3 @@ test(Iterations) -> eqc:quickcheck(eqc:numtests(Iterations, prop_blocks_in_order())). -endif. %% PULSE --endif. %% EQC From fdf4ba6650dd3e3dc83df82e951c63f3a33d5ab7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 5 Aug 2021 22:00:35 +0300 Subject: [PATCH 183/831] groundwork for object versions --- apps/riak_cs/include/riak_cs.hrl | 86 +++- apps/riak_cs/src/riak_cs_bucket.erl | 2 +- apps/riak_cs/src/riak_cs_copy_object.erl | 37 +- apps/riak_cs/src/riak_cs_delete_fsm.erl | 159 ++++---- apps/riak_cs/src/riak_cs_gc.erl | 106 +++-- apps/riak_cs/src/riak_cs_get_fsm.erl | 131 +++--- apps/riak_cs/src/riak_cs_get_fsm_sup.erl | 8 +- apps/riak_cs/src/riak_cs_lfs_utils.erl | 62 ++- apps/riak_cs/src/riak_cs_list_objects.erl | 2 +- apps/riak_cs/src/riak_cs_manifest.erl | 217 ++++++++-- apps/riak_cs/src/riak_cs_manifest_fsm.erl | 206 +++++----- .../src/riak_cs_manifest_resolution.erl | 18 +- apps/riak_cs/src/riak_cs_manifest_utils.erl | 239 +++++++---- apps/riak_cs/src/riak_cs_mp_utils.erl | 380 +++++++++--------- apps/riak_cs/src/riak_cs_put_fsm.erl | 180 +++++---- apps/riak_cs/src/riak_cs_put_fsm_sup.erl | 2 +- apps/riak_cs/src/riak_cs_s3_response.erl | 10 +- apps/riak_cs/src/riak_cs_utils.erl | 19 +- apps/riak_cs/src/riak_cs_wm_bucket_delete.erl | 72 ++-- apps/riak_cs/src/riak_cs_wm_object.erl | 95 +++-- apps/riak_cs/src/riak_cs_wm_object_acl.erl | 33 +- apps/riak_cs/src/riak_cs_wm_object_upload.erl | 14 +- .../src/riak_cs_wm_object_upload_part.erl | 78 ++-- apps/riak_cs/src/riak_cs_wm_utils.erl | 36 +- .../test/prop_riak_cs_manifest_resolution.erl | 25 +- apps/riak_cs/test/riak_cs_dummy_reader.erl | 19 +- 26 files changed, 1301 insertions(+), 935 deletions(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index 3af9181e9..4d169e46c 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -19,16 +19,16 @@ %% %% --------------------------------------------------------------------- --define(MANIFEST, #lfs_manifest_v3). - +-define(MANIFEST, #lfs_manifest_v4). +-define(LFS_DEFAULT_OBJECT_VERSION, <<"null">>). -define(ACL, #acl_v2). -define(RCS_BUCKET, #moss_bucket_v1). -define(MOSS_USER, #rcs_user_v2). -define(RCS_USER, #rcs_user_v2). -define(MULTIPART_MANIFEST, #multipart_manifest_v1). -define(MULTIPART_MANIFEST_RECNAME, multipart_manifest_v1). --define(PART_MANIFEST, #part_manifest_v1). --define(PART_MANIFEST_RECNAME, part_manifest_v1). +-define(PART_MANIFEST, #part_manifest_v2). +-define(PART_MANIFEST_RECNAME, part_manifest_v2). -define(MULTIPART_DESCR, #multipart_descr_v1). -define(COMPRESS_TERMS, false). -define(PART_DESCR, #part_descr_v1). @@ -126,11 +126,14 @@ bucket :: undefined | binary(), bucket_object :: undefined | notfound | riakc_obj:riakc_obj(), key :: undefined | list(), + obj_vsn = ?LFS_DEFAULT_OBJECT_VERSION :: binary(), owner :: undefined | string(), size :: undefined | non_neg_integer(), content_md5 :: undefined | binary(), update_metadata = false :: boolean()}). +-type lfs_manifest_state() :: writing | active | + pending_delete | scheduled_delete | deleted. -type acl_perm() :: 'READ' | 'WRITE' | 'READ_ACP' | 'WRITE_ACP' | 'FULL_CONTROL'. -type acl_perms() :: [acl_perm()]. -type group_grant() :: 'AllUsers' | 'AuthUsers'. @@ -158,7 +161,7 @@ -type riak_client() :: pid(). -record(lfs_manifest_v2, { - version=2 :: integer(), + version = 2 :: 2, block_size :: integer(), bkey :: {binary(), binary()}, metadata :: orddict:orddict(), @@ -167,8 +170,7 @@ content_length :: non_neg_integer(), content_type :: binary(), content_md5 :: term(), - state=undefined :: undefined | writing | active | - pending_delete | scheduled_delete | deleted, + state=undefined :: undefined | lfs_manifest_state(), write_start_time :: term(), %% immutable last_block_written_time :: term(), write_blocks_remaining :: ordsets:ordset(integer()), @@ -181,6 +183,39 @@ }). -record(lfs_manifest_v3, { + version = 3 :: 3, + + block_size :: undefined | integer(), + + bkey :: {binary(), binary()}, + + metadata :: orddict:orddict(), + + created=riak_cs_wm_utils:iso_8601_datetime(), + uuid :: cs_uuid(), + + content_length :: non_neg_integer(), + content_type :: binary(), + content_md5 :: term(), + + state :: undefined | lfs_manifest_state(), + + write_start_time :: term(), %% immutable + last_block_written_time :: term(), + write_blocks_remaining :: undefined | ordsets:ordset(integer()), + delete_marked_time :: term(), + last_block_deleted_time :: term(), + delete_blocks_remaining :: undefined | ordsets:ordset(integer()), + scheduled_delete_time :: term(), %% new in v3 + + acl = no_acl_yet :: acl() | no_acl_yet, + + props = [] :: 'undefined' | proplists:proplist(), + + cluster_id :: cluster_id() + }). + +-record(lfs_manifest_v4, { %% "global" properties %% ----------------------------------------------------------------- @@ -190,7 +225,7 @@ %% but I figured it's worth keeping %% in case we change serialization %% formats in the future. - version=3 :: integer(), + version = 4 :: 4, %% the block_size setting when this manifest %% was written. Needed if the user @@ -201,6 +236,12 @@ %% identifying properties %% ----------------------------------------------------------------- bkey :: {binary(), binary()}, + %% added in v4: + %% there's always a primary version, which is head of a + %% double-linked list of all versions + object_version = ?LFS_DEFAULT_OBJECT_VERSION :: binary(), + next_object_version = eol :: eol | binary(), + prev_object_version = eol :: eol | binary(), %% user metadata that would normally %% be placed on the riak_object. We avoid @@ -215,7 +256,7 @@ %% resolution, but I suppose there's no %% reason we can't change created %% to have millisecond as well. - created=riak_cs_wm_utils:iso_8601_datetime(), + created = riak_cs_wm_utils:iso_8601_datetime(), uuid :: cs_uuid(), %% content properties @@ -226,8 +267,7 @@ %% state properties %% ----------------------------------------------------------------- - state=undefined :: undefined | writing | active | - pending_delete | scheduled_delete | deleted, + state :: undefined | lfs_manifest_state(), %% writing/active state %% ----------------------------------------------------------------- @@ -290,7 +330,7 @@ %% until sometime later. %% 'undefined' is for backward compatibility with v3 manifests %% written with Riak CS 1.2.2 or earlier. - props = [] :: 'undefined' | proplists:proplist(), + props = [] :: undefined | proplists:proplist(), %% cluster_id: A couple of uses, both short- and longer-term %% possibilities: @@ -310,13 +350,27 @@ %% fetch us the missing data. cluster_id :: cluster_id() }). --type lfs_manifest() :: #lfs_manifest_v3{}. +-type lfs_manifest() :: #lfs_manifest_v4{}. -type cs_uuid_and_manifest() :: {cs_uuid(), lfs_manifest()}. +-type wrapped_manifest() :: orddict:orddict(cs_uuid(), lfs_manifest()). -record(part_manifest_v1, { bucket :: binary(), key :: binary(), + start_time :: erlang:timestamp(), + part_number :: integer(), + part_id :: binary(), + content_length :: integer(), + content_md5 :: undefined | binary(), + block_size :: integer() +}). + +-record(part_manifest_v2, { + bucket :: binary(), + key :: binary(), + %% new in v2 + object_version = ?LFS_DEFAULT_OBJECT_VERSION :: binary(), %% used to judge races between concurrent uploads %% of the same part_number @@ -332,13 +386,13 @@ %% each individual part upload always has a content-length %% content_md5 is used for the part ETag, alas. content_length :: integer(), - content_md5 :: 'undefined' | binary(), + content_md5 :: undefined | binary(), %% block size just like in `lfs_manifest_v2'. Concievably, %% parts for the same upload id could have different block_sizes. block_size :: integer() }). --type part_manifest() :: #part_manifest_v1{}. +-type part_manifest() :: #part_manifest_v2{}. -record(multipart_manifest_v1, { upload_id :: binary(), @@ -398,6 +452,8 @@ size :: integer() }). +-type part_descr() :: #part_descr_v1{}. + -define(USER_BUCKET, <<"moss.users">>). -define(ACCESS_BUCKET, <<"moss.access">>). -define(STORAGE_BUCKET, <<"moss.storage">>). diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index 614e8ce9e..9e4191929 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -227,7 +227,7 @@ fold_delete_uploads(Bucket, RcPid, [D|Ds], Timestamp, Count)-> %% <<"2012-02-17T18:22:50.000Z">> < <<"2014-05-11-....">> => true andalso M?MANIFEST.created < Timestamp -> case riak_cs_gc:gc_specific_manifests( - [M?MANIFEST.uuid], Obj, Bucket, Key, RcPid) of + [M?MANIFEST.uuid], Obj, Bucket, RcPid) of {ok, _NewObj} -> fold_delete_uploads(Bucket, RcPid, Ds, Timestamp, Count+1); E -> diff --git a/apps/riak_cs/src/riak_cs_copy_object.erl b/apps/riak_cs/src/riak_cs_copy_object.erl index db884c44a..7a8b53cef 100644 --- a/apps/riak_cs/src/riak_cs_copy_object.erl +++ b/apps/riak_cs/src/riak_cs_copy_object.erl @@ -31,7 +31,7 @@ malformed_request/1, new_metadata/2, get_copy_source/1, - start_put_fsm/7, + start_put_fsm/8, copy/4, copy/5, copy_range/2]). @@ -131,13 +131,14 @@ new_metadata(SrcManifest, RD) -> orddict:to_list(SrcManifest?MANIFEST.metadata)} end. --spec start_put_fsm(binary(), binary(), non_neg_integer(), binary(), +-spec start_put_fsm(binary(), binary(), binary(), non_neg_integer(), binary(), proplists:proplist(), acl(), riak_client()) -> {ok, pid()}. -start_put_fsm(Bucket, Key, ContentLength, ContentType, Metadata, Acl, RcPid) -> +start_put_fsm(Bucket, Key, Vsn, ContentLength, ContentType, Metadata, Acl, RcPid) -> BlockSize = riak_cs_lfs_utils:block_size(), riak_cs_put_fsm_sup:start_put_fsm(node(), [{Bucket, Key, + Vsn, ContentLength, ContentType, Metadata, @@ -151,7 +152,7 @@ start_put_fsm(Bucket, Key, ContentLength, ContentType, Metadata, Acl, RcPid) -> %% @doc check "x-amz-copy-source" to know whether it requests copying %% from another object -spec get_copy_source(#wm_reqdata{}) -> undefined | - {binary(), binary()} | + {binary(), binary(), binary()} | {error, atom()}. get_copy_source(RD) -> %% for oos (TODO) @@ -167,22 +168,13 @@ handle_copy_source([$/|Path]) -> handle_copy_source(Path); handle_copy_source(Path0) when is_list(Path0) -> Path = mochiweb_util:unquote(Path0), - Length = length(Path), - case string:chr(Path, $/) of - 0 -> - {error, bad_request}; - Length -> - {error, bad_request}; - Offset -> - Bucket = string:substr(Path, 1, Offset-1), - SplitKey = string:substr(Path, Offset+1), - case SplitKey of - [] -> - {error, bad_request}; - _ -> - {iolist_to_binary(Bucket), - iolist_to_binary(SplitKey)} - end + case re:split(Path, "/+", [{return, binary}]) of + [Bucket, Key] when size(Key) > 0 -> + {Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION}; + [Bucket, Key, VId] when size(VId) > 0 -> + {Bucket, Key, VId}; + _ -> + {error, bad_request} end. %% @doc runs copy @@ -254,13 +246,14 @@ get_and_put(GetPid, PutPid, MD5, ContFun) -> end. -spec start_get_fsm(lfs_manifest(), riak_client()) -> {ok, pid()}. -start_get_fsm(SrcManifest, ReadRcPid) -> - {Bucket, Key} = SrcManifest?MANIFEST.bkey, +start_get_fsm(?MANIFEST{bkey = {Bucket, Key}, + object_version = Vsn}, ReadRcPid) -> FetchConcurrency = riak_cs_lfs_utils:fetch_concurrency(), BufferFactor = riak_cs_lfs_utils:get_fsm_buffer_size_factor(), riak_cs_get_fsm_sup:start_get_fsm(node(), Bucket, Key, + Vsn, self(), ReadRcPid, FetchConcurrency, diff --git a/apps/riak_cs/src/riak_cs_delete_fsm.erl b/apps/riak_cs/src/riak_cs_delete_fsm.erl index c18958528..437490ef6 100644 --- a/apps/riak_cs/src/riak_cs_delete_fsm.erl +++ b/apps/riak_cs/src/riak_cs_delete_fsm.erl @@ -60,7 +60,7 @@ %% Set only once at init and unchanged. Used only for logs. gc_key :: binary(), delete_blocks_remaining :: undefined | ordsets:ordset({binary(), integer()}), - unacked_deletes=ordsets:new() :: ordsets:ordset(integer()), + unacked_deletes = ordsets:new() :: ordsets:ordset(integer()), all_delete_workers=[] :: list(pid()), free_deleters = ordsets:new() :: ordsets:ordset(pid()), deleted_blocks = 0 :: non_neg_integer(), @@ -94,21 +94,20 @@ block_deleted(Pid, Response) -> %% gen_fsm callbacks %% ==================================================================== -init([BagId, {UUID, Manifest}, FinishedCallback, GCKey, Options]) -> - {Bucket, Key} = Manifest?MANIFEST.bkey, +init([BagId, {UUID, Manifest = ?MANIFEST{bkey = {Bucket, Key}}}, FinishedCallback, GCKey, Options]) -> {ok, RcPid} = riak_cs_riak_client:checkout(), ok = riak_cs_riak_client:set_manifest_bag(RcPid, BagId), ok = riak_cs_riak_client:set_manifest(RcPid, Manifest), CleanupManifests = proplists:get_value(cleanup_manifests, Options, true), - State = #state{bucket=Bucket, - key=Key, - manifest=Manifest, - uuid=UUID, - riak_client=RcPid, - finished_callback=FinishedCallback, - gc_key=GCKey, - cleanup_manifests=CleanupManifests}, + State = #state{bucket = Bucket, + key = Key, + manifest = Manifest, + uuid = UUID, + riak_client = RcPid, + finished_callback = FinishedCallback, + gc_key = GCKey, + cleanup_manifests = CleanupManifests}, {ok, prepare, State}. %% @TODO Make sure we avoid any race conditions here @@ -117,15 +116,15 @@ prepare(delete, State) -> handle_receiving_manifest(State). prepare(delete, From, State) -> - handle_receiving_manifest(State#state{caller=From}). + handle_receiving_manifest(State#state{caller = From}). deleting({block_deleted, {ok, BlockID}, DeleterPid}, - State=#state{deleted_blocks=DeletedBlocks}) -> + State = #state{deleted_blocks = DeletedBlocks}) -> UpdState = deleting_state_update(BlockID, DeleterPid, DeletedBlocks+1, State), ManifestState = UpdState#state.manifest?MANIFEST.state, deleting_state_result(ManifestState, UpdState); deleting({block_deleted, {error, {unsatisfied_constraint, _, BlockID}}, DeleterPid}, - State=#state{deleted_blocks=DeletedBlocks}) -> + State = #state{deleted_blocks = DeletedBlocks}) -> UpdState = deleting_state_update(BlockID, DeleterPid, DeletedBlocks, State), ManifestState = UpdState#state.manifest?MANIFEST.state, deleting_state_result(ManifestState, UpdState); @@ -142,15 +141,15 @@ handle_info(_Info, StateName, State) -> {next_state, StateName, State}. terminate(Reason, _StateName, - #state{all_delete_workers=AllDeleteWorkers, - manifest=?MANIFEST{state=ManifestState}, - bucket=Bucket, - key=Key, - uuid=UUID, - riak_client=RcPid, - cleanup_manifests=CleanupManifests} = State) -> + #state{all_delete_workers = AllDeleteWorkers, + manifest = ?MANIFEST{state = ManifestState, object_version = ObjVsn}, + bucket = Bucket, + key = Key, + uuid = UUID, + riak_client = RcPid, + cleanup_manifests = CleanupManifests} = State) -> if CleanupManifests -> - manifest_cleanup(ManifestState, Bucket, Key, UUID, RcPid); + manifest_cleanup(ManifestState, Bucket, Key, ObjVsn, UUID, RcPid); true -> noop end, @@ -168,20 +167,20 @@ code_change(_OldVsn, StateName, State, _Extra) -> %% @doc Update the state record following notification of the %% completion of a block deletion. -spec deleting_state_update(pos_integer(), pid(), non_neg_integer(), #state{}) -> - #state{}. + #state{}. deleting_state_update(BlockID, DeleterPid, DeletedBlocks, - State=#state{manifest=Manifest, - free_deleters=FreeDeleters, - unacked_deletes=UnackedDeletes}) -> + State = #state{manifest = Manifest, + free_deleters = FreeDeleters, + unacked_deletes = UnackedDeletes}) -> NewManifest = riak_cs_lfs_utils:remove_delete_block(Manifest, BlockID), - State#state{free_deleters=ordsets:add_element(DeleterPid, - FreeDeleters), - unacked_deletes=ordsets:del_element(BlockID, - UnackedDeletes), - manifest=NewManifest, - deleted_blocks=DeletedBlocks}. + State#state{free_deleters = ordsets:add_element(DeleterPid, + FreeDeleters), + unacked_deletes = ordsets:del_element(BlockID, + UnackedDeletes), + manifest = NewManifest, + deleted_blocks = DeletedBlocks}. %% @doc Determine the appropriate `deleting' state %% fsm callback result based on the given manifest state. @@ -194,20 +193,21 @@ deleting_state_result(_, State) -> -spec handle_receiving_manifest(state()) -> {next_state, atom(), state()} | {stop, normal, state()}. -handle_receiving_manifest(State=#state{manifest=Manifest, - gc_key=GCKey}) -> +handle_receiving_manifest(State = #state{manifest = Manifest, + gc_key = GCKey}) -> case blocks_to_delete_from_manifest(Manifest) of {ok, {NewManifest, BlocksToDelete}} -> BlockCount = ordsets:size(BlocksToDelete), - NewState = State#state{manifest=NewManifest, - delete_blocks_remaining=BlocksToDelete, - total_blocks=BlockCount}, + NewState = State#state{manifest = NewManifest, + delete_blocks_remaining = BlocksToDelete, + total_blocks = BlockCount}, start_block_servers(NewState); {error, invalid_state} -> {Bucket, Key} = Manifest?MANIFEST.bkey, + ObjVsn = Manifest?MANIFEST.object_version, _ = lager:warning("Invalid state manifest in GC bucket at ~p, " - "bucket=~p key=~p: ~p", - [GCKey, Bucket, Key, Manifest]), + "b/k:v = ~s/~s:~s: ~p", + [GCKey, Bucket, Key, ObjVsn, Manifest]), %% If total blocks and deleted blocks are the same, %% gc worker attempt to delete the manifest in fileset. %% Then manifests and blocks becomes orphan. @@ -215,14 +215,14 @@ handle_receiving_manifest(State=#state{manifest=Manifest, %% For now delete FSM stops with pseudo-normal termination to %% let other valid manifests be collected, as the root cause %% of #827 is still unidentified. - {stop, normal, State#state{total_blocks=1}} + {stop, normal, State#state{total_blocks = 1}} end. -spec start_block_servers(state()) -> {next_state, atom(), state()} | {stop, normal, state()}. -start_block_servers(#state{riak_client=RcPid, - manifest=Manifest, - delete_blocks_remaining=BlocksToDelete} = State) -> +start_block_servers(#state{riak_client = RcPid, + manifest = Manifest, + delete_blocks_remaining = BlocksToDelete} = State) -> %% Handle the case where there are 0 blocks to delete, %% i.e. content length of 0, %% and can not check-out any workers. @@ -237,8 +237,8 @@ start_block_servers(#state{riak_client=RcPid, {stop, normal, State}; _ -> FreeDeleters = ordsets:from_list(AllDeleteWorkers), - NewState = State#state{all_delete_workers=AllDeleteWorkers, - free_deleters=FreeDeleters}, + NewState = State#state{all_delete_workers = AllDeleteWorkers, + free_deleters = FreeDeleters}, StateAfterDeleteStart = maybe_delete_blocks(NewState), {next_state, deleting, StateAfterDeleteStart} end; @@ -246,62 +246,61 @@ start_block_servers(#state{riak_client=RcPid, {stop, normal, State} end. -maybe_delete_blocks(State=#state{free_deleters=[]}) -> +maybe_delete_blocks(State = #state{free_deleters = []}) -> State; -maybe_delete_blocks(State=#state{delete_blocks_remaining=[]}) -> +maybe_delete_blocks(State = #state{delete_blocks_remaining = []}) -> State; -maybe_delete_blocks(State=#state{bucket=Bucket, - key=Key, - free_deleters=FreeDeleters=[DeleterPid | _Rest], - unacked_deletes=UnackedDeletes, - delete_blocks_remaining=DeleteBlocksRemaining= - [BlockID | _RestBlocks]}) -> +maybe_delete_blocks(State = #state{bucket = Bucket, + key = Key, + manifest = ?MANIFEST{object_version = ObjVsn}, + free_deleters = FreeDeleters = [DeleterPid | _Rest], + unacked_deletes = UnackedDeletes, + delete_blocks_remaining = DeleteBlocksRemaining = [BlockID | _RestBlocks]}) -> NewUnackedDeletes = ordsets:add_element(BlockID, UnackedDeletes), NewDeleteBlocksRemaining = ordsets:del_element(BlockID, DeleteBlocksRemaining), {UUID, Seq} = BlockID, - _ = lager:debug("Deleting block: ~p ~p ~p ~p", [Bucket, Key, UUID, Seq]), + lager:debug("Deleting block #~b (~s) of ~s/~s:~s", [Seq, UUID, Bucket, Key, ObjVsn]), riak_cs_block_server:delete_block(DeleterPid, Bucket, Key, UUID, Seq), NewFreeDeleters = ordsets:del_element(DeleterPid, FreeDeleters), - maybe_delete_blocks(State#state{unacked_deletes=NewUnackedDeletes, - free_deleters=NewFreeDeleters, - delete_blocks_remaining=NewDeleteBlocksRemaining}). + maybe_delete_blocks(State#state{unacked_deletes = NewUnackedDeletes, + free_deleters = NewFreeDeleters, + delete_blocks_remaining = NewDeleteBlocksRemaining}). -reply_or_callback(Reason, #state{caller=Caller}=State) when Caller =/= undefined -> +reply_or_callback(Reason, #state{caller = Caller} = State) when Caller =/= undefined -> gen_fsm:reply(Caller, notification_msg(Reason, State)); -reply_or_callback(Reason, #state{finished_callback=Callback}=State) -> +reply_or_callback(Reason, #state{finished_callback = Callback} = State) -> Callback(notification_msg(Reason, State)). --spec notification_msg(term(), state()) -> {pid(), - {ok, {non_neg_integer(), non_neg_integer()}} | - {error, term()}}. -notification_msg(normal, #state{ - bucket=Bucket, - key=Key, - uuid=UUID, - deleted_blocks = DeletedBlocks, - total_blocks = TotalBlocks}) -> - Reply = {ok, {Bucket, Key, UUID, DeletedBlocks, TotalBlocks}}, +-spec notification_msg(term(), state()) -> + {pid(), {ok, {non_neg_integer(), non_neg_integer()}} | {error, term()}}. +notification_msg(normal, #state{bucket = Bucket, + key = Key, + manifest = ?MANIFEST{object_version = ObjVsn}, + uuid = UUID, + deleted_blocks = DeletedBlocks, + total_blocks = TotalBlocks}) -> + Reply = {ok, {Bucket, Key, ObjVsn, UUID, DeletedBlocks, TotalBlocks}}, {self(), Reply}; notification_msg(Reason, _State) -> {self(), {error, Reason}}. --spec manifest_cleanup(atom(), binary(), binary(), binary(), riak_client()) -> ok. -manifest_cleanup(deleted, Bucket, Key, UUID, RcPid) -> - {ok, ManiFsmPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, RcPid), +-spec manifest_cleanup(atom(), binary(), binary(), binary(), binary(), riak_client()) -> ok. +manifest_cleanup(deleted, Bucket, Key, ObjVsn, UUID, RcPid) -> + {ok, ManiFsmPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, ObjVsn, RcPid), _ = try _ = riak_cs_manifest_fsm:delete_specific_manifest(ManiFsmPid, UUID) after _ = riak_cs_manifest_fsm:stop(ManiFsmPid) end, ok; -manifest_cleanup(_, _, _, _, _) -> +manifest_cleanup(_, _, _, _, _, _) -> ok. -spec blocks_to_delete_from_manifest(lfs_manifest()) -> - {ok, {lfs_manifest(), ordsets:ordset(integer())}} | - {error, term()}. -blocks_to_delete_from_manifest(Manifest=?MANIFEST{state=State, - delete_blocks_remaining=undefined}) + {ok, {lfs_manifest(), ordsets:ordset(integer())}} | + {error, term()}. +blocks_to_delete_from_manifest(Manifest = ?MANIFEST{state = State, + delete_blocks_remaining = undefined}) when State =:= pending_delete;State =:= writing; State =:= scheduled_delete -> {UpdState, Blocks} = case riak_cs_lfs_utils:block_sequences_for_manifest(Manifest) of @@ -311,10 +310,10 @@ blocks_to_delete_from_manifest(Manifest=?MANIFEST{state=State, {State, BlockSequence} end, - UpdManifest = Manifest?MANIFEST{delete_blocks_remaining=Blocks, - state=UpdState}, + UpdManifest = Manifest?MANIFEST{delete_blocks_remaining = Blocks, + state = UpdState}, {ok, {UpdManifest, Blocks}}; -blocks_to_delete_from_manifest(?MANIFEST{delete_blocks_remaining=undefined}) -> +blocks_to_delete_from_manifest(?MANIFEST{delete_blocks_remaining = undefined}) -> {error, invalid_state}; blocks_to_delete_from_manifest(Manifest) -> {ok, {Manifest, Manifest?MANIFEST.delete_blocks_remaining}}. diff --git a/apps/riak_cs/src/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl index a9221266a..6caf4e47d 100644 --- a/apps/riak_cs/src/riak_cs_gc.erl +++ b/apps/riak_cs/src/riak_cs_gc.erl @@ -37,8 +37,8 @@ initial_gc_delay/0, gc_retry_interval/0, gc_max_workers/0, - gc_active_manifests/3, - gc_specific_manifests/5, + gc_active_manifests/4, + gc_specific_manifests/4, epoch_start/0, leeway_seconds/0, set_leeway_seconds/1, @@ -48,7 +48,7 @@ default_batch_end/2]). %% export for repl debugging and testing --export([get_active_manifests/3]). +-export([get_active_manifests/4]). %%%=================================================================== %%% Public API @@ -63,25 +63,25 @@ %% Note that any error is irrespective of the current position of the GC states. %% Some manifests may have been GC'd and then an error occurs. In this case the %% client will only get the error response. --spec gc_active_manifests(binary(), binary(), riak_client()) -> +-spec gc_active_manifests(binary(), binary(), binary(), riak_client()) -> {ok, [binary()]} | {error, term()}. -gc_active_manifests(Bucket, Key, RcPid) -> - gc_active_manifests(Bucket, Key, RcPid, []). +gc_active_manifests(Bucket, Key, ObjVsn, RcPid) -> + gc_active_manifests(Bucket, Key, ObjVsn, RcPid, []). %% @private --spec gc_active_manifests(binary(), binary(), riak_client(), [binary]) -> +-spec gc_active_manifests(binary(), binary(), binary(), riak_client(), [binary()]) -> {ok, [binary()]} | {error, term()}. -gc_active_manifests(Bucket, Key, RcPid, UUIDs) -> - case get_active_manifests(Bucket, Key, RcPid) of +gc_active_manifests(Bucket, Key, ObjVsn, RcPid, UUIDs) -> + case get_active_manifests(Bucket, Key, ObjVsn, RcPid) of {ok, _RiakObject, []} -> {ok, UUIDs}; {ok, RiakObject, Manifests} -> UnchangedManifests = clean_manifests(Manifests, RcPid), - case gc_manifests(UnchangedManifests, RiakObject, Bucket, Key, RcPid) of + case gc_manifests(UnchangedManifests, RiakObject, Bucket, RcPid) of {error, _}=Error -> Error; NewUUIDs -> - gc_active_manifests(Bucket, Key, RcPid, UUIDs ++ NewUUIDs) + gc_active_manifests(Bucket, Key, ObjVsn, RcPid, UUIDs ++ NewUUIDs) end; {error, notfound} -> {ok, UUIDs}; @@ -89,10 +89,11 @@ gc_active_manifests(Bucket, Key, RcPid, UUIDs) -> Error end. --spec get_active_manifests(binary(), binary(), riak_client()) -> +-spec get_active_manifests(binary(), binary(), binary(), riak_client()) -> {ok, riakc_obj:riakc_obj(), [lfs_manifest()]} | {error, term()}. -get_active_manifests(Bucket, Key, RcPid) -> - active_manifests(riak_cs_manifest:get_manifests(RcPid, Bucket, Key)). +get_active_manifests(Bucket, Key, ObjVsn, RcPid) -> + active_manifests( + riak_cs_manifest:get_manifests(RcPid, Bucket, Key, ObjVsn)). -spec active_manifests({ok, riakc_obj:riakc_obj(), [lfs_manifest()]}) -> {ok, riakc_obj:riakc_obj(), [lfs_manifest()]}; @@ -119,27 +120,25 @@ is_multipart_clean(updated) -> -spec gc_manifests(Manifests :: [lfs_manifest()], RiakObject :: riakc_obj:riakc_obj(), Bucket :: binary(), - Key :: binary(), RcPid :: riak_client()) -> [binary()] | {error, term()}. -gc_manifests(Manifests, RiakObject, Bucket, Key, RcPid) -> - F = fun(_M, {error, _}=Error) -> +gc_manifests(Manifests, RiakObject, Bucket, RcPid) -> + F = fun(_M, {error, _} = Error) -> Error; (M, UUIDs) -> - gc_manifest(M, RiakObject, Bucket, Key, RcPid, UUIDs) + gc_manifest(M, RiakObject, Bucket, RcPid, UUIDs) end, lists:foldl(F, [], Manifests). -spec gc_manifest(M :: lfs_manifest(), RiakObject :: riakc_obj:riakc_obj(), Bucket :: binary(), - Key :: binary(), RcPid :: riak_client(), UUIDs :: [binary()]) -> [binary()] | no_return(). -gc_manifest(M, RiakObject, Bucket, Key, RcPid, UUIDs) -> +gc_manifest(M, RiakObject, Bucket, RcPid, UUIDs) -> UUID = M?MANIFEST.uuid, - check(gc_specific_manifests_to_delete([UUID], RiakObject, Bucket, Key, RcPid), [UUID | UUIDs]). + check(gc_specific_manifests_to_delete([UUID], RiakObject, Bucket, RcPid), [UUID | UUIDs]). check({ok, _}, Val) -> Val; @@ -149,39 +148,36 @@ check({error, _}=Error, _Val) -> -spec gc_specific_manifests_to_delete(UUIDsToMark :: [binary()], RiakObject :: riakc_obj:riakc_obj(), Bucket :: binary(), - Key :: binary(), RcPid :: riak_client()) -> {error, term()} | {ok, riakc_obj:riakc_obj()}. -gc_specific_manifests_to_delete(UUIDsToMark, RiakObject, Bucket, Key, RcPid) -> - MarkedResult = mark_as_deleted(UUIDsToMark, RiakObject, Bucket, Key, RcPid), - handle_mark_as_pending_delete(MarkedResult, Bucket, Key, UUIDsToMark, RcPid). +gc_specific_manifests_to_delete(UUIDsToMark, RiakObject, Bucket, RcPid) -> + MarkedResult = mark_as_deleted(UUIDsToMark, RiakObject, Bucket, RcPid), + handle_mark_as_pending_delete(MarkedResult, Bucket, UUIDsToMark, RcPid). %% @private -spec gc_specific_manifests(UUIDsToMark :: [binary()], - RiakObject :: riakc_obj:riakc_obj(), - Bucket :: binary(), - Key :: binary(), - RcPid :: riak_client()) -> + RiakObject :: riakc_obj:riakc_obj(), + Bucket :: binary(), + RcPid :: riak_client()) -> {error, term()} | {ok, riakc_obj:riakc_obj()}. -gc_specific_manifests([], RiakObject, _Bucket, _Key, _RcPid) -> +gc_specific_manifests([], RiakObject, _Bucket, _RcPid) -> {ok, RiakObject}; -gc_specific_manifests(UUIDsToMark, RiakObject, Bucket, Key, RcPid) -> +gc_specific_manifests(UUIDsToMark, RiakObject, Bucket, RcPid) -> MarkedResult = mark_as_pending_delete(UUIDsToMark, RiakObject, - Bucket, Key, + Bucket, RcPid), - handle_mark_as_pending_delete(MarkedResult, Bucket, Key, UUIDsToMark, RcPid). + handle_mark_as_pending_delete(MarkedResult, Bucket, UUIDsToMark, RcPid). %% @private -spec handle_mark_as_pending_delete({ok, riakc_obj:riakc_obj()}, - binary(), binary(), + binary(), [binary()], riak_client()) -> - {error, term()} | {ok, riakc_obj:riakc_obj()}; - - ({error, term()}, binary(), binary(), [binary()], riak_client()) -> - {error, term()} | {ok, riakc_obj:riakc_obj()}. -handle_mark_as_pending_delete({ok, RiakObject}, Bucket, Key, UUIDsToMark, RcPid) -> + {error, term()} | {ok, riakc_obj:riakc_obj()}; + ({error, term()}, binary(), [binary()], riak_client()) -> + {error, term()} | {ok, riakc_obj:riakc_obj()}. +handle_mark_as_pending_delete({ok, RiakObject}, Bucket, UUIDsToMark, RcPid) -> Manifests = riak_cs_manifest:manifests_from_riak_object(RiakObject), PDManifests0 = riak_cs_manifest_utils:manifests_to_gc(UUIDsToMark, Manifests), {ToGC, DeletedUUIDs} = @@ -214,13 +210,13 @@ handle_mark_as_pending_delete({ok, RiakObject}, Bucket, Key, UUIDsToMark, RcPid) case move_manifests_to_gc_bucket(ToGC, RcPid) of ok -> PDUUIDs = [UUID || {UUID, _} <- ToGC], - mark_as_scheduled_delete(PDUUIDs ++ DeletedUUIDs, RiakObject, Bucket, Key, RcPid); + mark_as_scheduled_delete(PDUUIDs ++ DeletedUUIDs, RiakObject, Bucket, RcPid); {error, _} = Error -> Error end; -handle_mark_as_pending_delete({error, _Error}=Error, _Bucket, _Key, _UUIDsToMark, _RcPid) -> - _ = lager:warning("Failed to mark as pending_delete, reason: ~p", [Error]), +handle_mark_as_pending_delete({error, _Error}=Error, _Bucket, _UUIDsToMark, _RcPid) -> + lager:warning("Failed to mark as pending_delete, reason: ~p", [Error]), Error. %% @doc Return the number of seconds to wait after finishing garbage @@ -338,44 +334,42 @@ default_batch_end(BatchStart, Leeway) -> %% @doc Mark a list of manifests as `pending_delete' based upon the %% UUIDs specified, and also add {deleted, true} to the props member %% to signify an actual delete, and not an overwrite. --spec mark_as_deleted([binary()], riakc_obj:riakc_obj(), binary(), binary(), riak_client()) -> +-spec mark_as_deleted([binary()], riakc_obj:riakc_obj(), binary(), riak_client()) -> {ok, riakc_obj:riakc_obj()} | {error, term()}. -mark_as_deleted(UUIDsToMark, RiakObject, Bucket, Key, RcPid) -> - mark_manifests(RiakObject, Bucket, Key, UUIDsToMark, +mark_as_deleted(UUIDsToMark, RiakObject, Bucket, RcPid) -> + mark_manifests(RiakObject, Bucket, UUIDsToMark, fun riak_cs_manifest_utils:mark_deleted/2, RcPid). %% @doc Mark a list of manifests as `pending_delete' based upon the %% UUIDs specified. --spec mark_as_pending_delete([binary()], riakc_obj:riakc_obj(), binary(), binary(), riak_client()) -> - {ok, riakc_obj:riakc_obj()} | {error, term()}. -mark_as_pending_delete(UUIDsToMark, RiakObject, Bucket, Key, RcPid) -> - mark_manifests(RiakObject, Bucket, Key, UUIDsToMark, +mark_as_pending_delete(UUIDsToMark, RiakObject, Bucket, RcPid) -> + mark_manifests(RiakObject, Bucket, UUIDsToMark, fun riak_cs_manifest_utils:mark_pending_delete/2, RcPid). %% @doc Mark a list of manifests as `scheduled_delete' based upon the %% UUIDs specified. --spec mark_as_scheduled_delete([cs_uuid()], riakc_obj:riakc_obj(), binary(), binary(), riak_client()) -> +-spec mark_as_scheduled_delete([cs_uuid()], riakc_obj:riakc_obj(), binary(), riak_client()) -> {ok, riakc_obj:riakc_obj()} | {error, term()}. -mark_as_scheduled_delete(UUIDsToMark, RiakObject, Bucket, Key, RcPid) -> - mark_manifests(RiakObject, Bucket, Key, UUIDsToMark, +mark_as_scheduled_delete(UUIDsToMark, RiakObject, Bucket, RcPid) -> + mark_manifests(RiakObject, Bucket, UUIDsToMark, fun riak_cs_manifest_utils:mark_scheduled_delete/2, - RcPid). + RcPid). %% @doc Call a `riak_cs_manifest_utils' function on a set of manifests %% to update the state of the manifests specified by `UUIDsToMark' %% and then write the updated values to riak. --spec mark_manifests(riakc_obj:riakc_obj(), binary(), binary(), [binary()], fun(), riak_client()) -> +-spec mark_manifests(riakc_obj:riakc_obj(), binary(), [binary()], fun(), riak_client()) -> {ok, riakc_obj:riakc_obj()} | {error, term()}. -mark_manifests(RiakObject, Bucket, Key, UUIDsToMark, ManiFunction, RcPid) -> +mark_manifests(RiakObject, Bucket, UUIDsToMark, ManiFunction, RcPid) -> Manifests = riak_cs_manifest:manifests_from_riak_object(RiakObject), Marked = ManiFunction(Manifests, UUIDsToMark), UpdObj0 = riak_cs_utils:update_obj_value(RiakObject, riak_cs_utils:encode_term(Marked)), UpdObj = riak_cs_manifest_fsm:update_md_with_multipart_2i( - UpdObj0, Marked, Bucket, Key), + UpdObj0, Marked, Bucket), %% use [returnbody] so that we get back the object %% with vector clock. This allows us to do a PUT diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl index cee01eadd..56d872aca 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm.erl @@ -42,7 +42,7 @@ -include("riak_cs.hrl"). %% API --export([start_link/6, +-export([start_link/7, stop/1, continue/2, manifest/2, @@ -76,6 +76,7 @@ bucket :: term(), caller :: reference(), key :: term(), + obj_vsn :: binary(), fetch_concurrency :: pos_integer(), buffer_factor :: pos_integer(), got_blocks=orddict:new() :: orddict:orddict(), @@ -97,11 +98,10 @@ %% Public API %% =================================================================== --spec start_link(binary(), binary(), pid(), riak_client(), pos_integer(), +-spec start_link(binary(), binary(), binary(), pid(), riak_client(), pos_integer(), pos_integer()) -> {ok, pid()} | {error, term()}. - -start_link(Bucket, Key, Caller, RcPid, FetchConcurrency, BufferFactor) -> - gen_fsm:start_link(?MODULE, [Bucket, Key, Caller, RcPid, +start_link(Bucket, Key, ObjVsn, Caller, RcPid, FetchConcurrency, BufferFactor) -> + gen_fsm:start_link(?MODULE, [Bucket, Key, ObjVsn, Caller, RcPid, FetchConcurrency, BufferFactor], []). stop(Pid) -> @@ -126,7 +126,7 @@ chunk(Pid, ChunkSeq, ChunkValue) -> %% gen_fsm callbacks %% ==================================================================== -init([Bucket, Key, Caller, RcPid, FetchConcurrency, BufferFactor]) +init([Bucket, Key, ObjVsn, Caller, RcPid, FetchConcurrency, BufferFactor]) when is_binary(Bucket), is_binary(Key), is_pid(Caller), is_pid(RcPid), FetchConcurrency > 0, BufferFactor > 0 -> @@ -149,16 +149,17 @@ init([Bucket, Key, Caller, RcPid, FetchConcurrency, BufferFactor]) %% an exit Reason of `noproc` process_flag(trap_exit, true), - State = #state{bucket=Bucket, - caller=CallerRef, - key=Key, - riak_client=RcPid, - buffer_factor=BufferFactor, - fetch_concurrency=FetchConcurrency}, + State = #state{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + caller = CallerRef, + riak_client = RcPid, + buffer_factor = BufferFactor, + fetch_concurrency = FetchConcurrency}, {ok, prepare, State, 0}; -init([test, Bucket, Key, Caller, ContentLength, BlockSize, FetchConcurrency, - BufferFactor]) -> - {ok, prepare, State1, 0} = init([Bucket, Key, Caller, self(), +init([test, Bucket, Key, Caller, ContentLength, + BlockSize, FetchConcurrency, BufferFactor]) -> + {ok, prepare, State1, 0} = init([Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION, Caller, self(), FetchConcurrency, BufferFactor]), %% purposely have the timeout happen @@ -208,19 +209,20 @@ waiting_continue_or_stop(timeout, State) -> {stop, normal, State}; waiting_continue_or_stop(stop, State) -> {stop, normal, State}; -waiting_continue_or_stop({continue, Range}, #state{manifest=Manifest, - bucket=BucketName, - key=Key, - fetch_concurrency=FetchConcurrency, - free_readers=Readers, - riak_client=RcPid}=State) -> +waiting_continue_or_stop({continue, Range}, #state{manifest = Manifest, + bucket = BucketName, + key = Key, + obj_vsn = ObjVsn, + fetch_concurrency = FetchConcurrency, + free_readers = Readers, + riak_client = RcPid} = State) -> {BlocksOrder, SkipInitial, KeepFinal} = riak_cs_lfs_utils:block_sequences_for_manifest(Manifest, Range), case BlocksOrder of [] -> %% We should never get here because empty %% files are handled by the wm resource. - _ = lager:warning("~p:~p has no blocks", [BucketName, Key]), + _ = lager:warning("~p/~p:~p has no blocks", [BucketName, Key, ObjVsn]), {stop, normal, State}; [InitialBlock|_] -> TotalBlocks = length(BlocksOrder), @@ -236,13 +238,13 @@ waiting_continue_or_stop({continue, Range}, #state{manifest=Manifest, FreeReaders = Readers end, %% start retrieving the first set of blocks - UpdState = State#state{blocks_order=BlocksOrder, - total_blocks=TotalBlocks, - initial_block=InitialBlock, - final_block=lists:last(BlocksOrder), - skip_bytes_initial=SkipInitial, - keep_bytes_final=KeepFinal, - free_readers=FreeReaders}, + UpdState = State#state{blocks_order = BlocksOrder, + total_blocks = TotalBlocks, + initial_block = InitialBlock, + final_block = lists:last(BlocksOrder), + skip_bytes_initial = SkipInitial, + keep_bytes_final = KeepFinal, + free_readers = FreeReaders}, {next_state, waiting_chunks, read_blocks(UpdState)} end. @@ -251,14 +253,14 @@ waiting_continue_or_stop(Event, From, State) -> [self(), Event, From]), {next_state, waiting_continue_or_stop, State}. -waiting_chunks(get_next_chunk, From, State=#state{num_sent=TotalNumBlocks, - total_blocks=TotalNumBlocks}) -> +waiting_chunks(get_next_chunk, From, State=#state{num_sent = TotalNumBlocks, + total_blocks = TotalNumBlocks}) -> _ = gen_fsm:reply(From, {done, <<>>}), {stop, normal, State}; waiting_chunks(get_next_chunk, From, State) -> case perhaps_send_to_user(From, State) of done -> - UpdState = State#state{from=From}, + UpdState = State#state{from = From}, {next_state, waiting_chunks, read_blocks(UpdState)}; {sent, UpdState} -> Got = UpdState#state.got_blocks, @@ -273,9 +275,9 @@ waiting_chunks(get_next_chunk, From, State) -> {next_state, waiting_chunks, read_blocks(UpdState)} end. -perhaps_send_to_user(From, #state{got_blocks=Got, - num_sent=NumSent, - blocks_intransit=Intransit}=State) -> +perhaps_send_to_user(From, #state{got_blocks = Got, + num_sent = NumSent, + blocks_intransit = Intransit} = State) -> case queue:out(Intransit) of {empty, _} -> done; @@ -286,9 +288,9 @@ perhaps_send_to_user(From, #state{got_blocks=Got, %% Must use gen_fsm:reply/2 here! We are shared %% with an async event func and must return next_state. gen_fsm:reply(From, {chunk, Block}), - {sent, State#state{got_blocks=orddict:erase(NextBlock, Got), - num_sent=NumSent+1, - blocks_intransit=UpdIntransit}}; + {sent, State#state{got_blocks = orddict:erase(NextBlock, Got), + num_sent = NumSent+1, + blocks_intransit = UpdIntransit}}; error -> {not_sent, State#state{from=From}} end @@ -303,20 +305,20 @@ waiting_chunks(timeout, State = #state{got_blocks = Got}) -> {next_state, waiting_chunks, UpdState}; waiting_chunks({chunk, Pid, {NextBlock, BlockReturnValue}}, - #state{from=From, - got_blocks=Got, - free_readers=FreeReaders, - initial_block=InitialBlock, - final_block=FinalBlock, - skip_bytes_initial=SkipInitial, - keep_bytes_final=KeepFinal - }=State) -> + #state{from = From, + got_blocks = Got, + free_readers = FreeReaders, + initial_block = InitialBlock, + final_block = FinalBlock, + skip_bytes_initial = SkipInitial, + keep_bytes_final = KeepFinal + } = State) -> _ = lager:debug("Retrieved block ~p", [NextBlock]), case BlockReturnValue of {error, _} = ErrorRes -> - #state{bucket=Bucket, key=Key} = State, - _ = lager:error("~p: Cannot get S3 ~p ~p block# ~p: ~p\n", - [?MODULE, Bucket, Key, NextBlock, ErrorRes]), + #state{bucket = Bucket, key = Key, obj_vsn = ObjVsn} = State, + _ = lager:error("Cannot get S3 ~s/~s:~s block# ~p: ~p", + [Bucket, Key, ObjVsn, NextBlock, ErrorRes]), %% Our terminate() will explicitly stop dependent processes, %% we don't need an abnormal exit to kill them for us. exit(normal); @@ -344,7 +346,7 @@ waiting_chunks({chunk, Pid, {NextBlock, BlockReturnValue}}, true -> case perhaps_send_to_user(From, UpdState) of {sent, Upd2State} -> - {next_state, waiting_chunks, Upd2State#state{from=undefined}}; + {next_state, waiting_chunks, Upd2State#state{from = undefined}}; {not_sent, Upd2State} -> {next_state, waiting_chunks, Upd2State} end @@ -370,11 +372,11 @@ handle_info(request_timeout, StateName, StateData) -> %% we have no reason to stick around %% %% @TODO Also handle reader pid death -handle_info({'EXIT', ManiPid, _Reason}, _StateName, StateData=#state{mani_fsm_pid=ManiPid}) -> +handle_info({'EXIT', ManiPid, _Reason}, _StateName, StateData = #state{mani_fsm_pid = ManiPid}) -> {stop, normal, StateData}; handle_info({'DOWN', CallerRef, process, _Pid, Reason}, _StateName, - State=#state{caller=CallerRef}) -> + State = #state{caller = CallerRef}) -> {stop, Reason, State}; handle_info({'EXIT', _Pid, normal}, StateName, StateData) -> %% TODO: who is _Pid when clean_multipart_unused_parts returns updated? @@ -383,9 +385,9 @@ handle_info(_Info, _StateName, StateData) -> {stop, {badmsg, _Info}, StateData}. %% @private -terminate(_Reason, _StateName, #state{test=false, - all_reader_pids=BlockServerPids, - mani_fsm_pid=ManiPid}) -> +terminate(_Reason, _StateName, #state{test = false, + all_reader_pids = BlockServerPids, + mani_fsm_pid = ManiPid}) -> riak_cs_manifest_fsm:maybe_stop_manifest_fsm(ManiPid), riak_cs_block_server:maybe_stop_block_servers(BlockServerPids), ok; @@ -400,26 +402,27 @@ code_change(_OldVsn, StateName, State, _Extra) -> {ok, StateName, State}. %% =================================================================== -spec prepare(#state{}) -> #state{}. -prepare(#state{bucket=Bucket, - key=Key, - riak_client=RcPid}=State) -> +prepare(#state{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + riak_client = RcPid} = State) -> %% start the process that will %% fetch the value, be it manifest %% or regular object - {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, RcPid), + {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, ObjVsn, RcPid), case riak_cs_manifest_fsm:get_active_manifest(ManiPid) of {ok, Manifest} -> - _ = lager:debug("Manifest: ~p", [Manifest]), + lager:debug("Manifest: ~p", [Manifest]), case riak_cs_mp_utils:clean_multipart_unused_parts(Manifest, RcPid) of same -> - State#state{manifest=Manifest, - mani_fsm_pid=ManiPid}; + State#state{manifest = Manifest, + mani_fsm_pid = ManiPid}; updated -> riak_cs_manifest_fsm:stop(ManiPid), prepare(State) end; {error, notfound} -> - State#state{mani_fsm_pid=ManiPid} + State#state{mani_fsm_pid = ManiPid} end. -spec read_blocks(state()) -> state(). @@ -436,6 +439,8 @@ read_blocks(#state{manifest=Manifest, blocks_intransit=Intransit} = State) -> ClusterID = cluster_id_or_default(Manifest?MANIFEST.cluster_id), {UUID, Seq} = NextBlock, + %% no need to thread ObjVsnName to block server as it forms its + %% keys from uuids (in turn from corresponding version manifests) riak_cs_block_server:get_block(ReaderPid, Bucket, Key, ClusterID, UUID, Seq), read_blocks(State#state{free_readers=RestFreeReaders, blocks_order=BlocksOrder, diff --git a/apps/riak_cs/src/riak_cs_get_fsm_sup.erl b/apps/riak_cs/src/riak_cs_get_fsm_sup.erl index 44ec644ad..139149dd6 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm_sup.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm_sup.erl @@ -26,7 +26,7 @@ -behaviour(supervisor). %% API --export([start_get_fsm/7]). +-export([start_get_fsm/8]). -export([start_link/0]). %% Supervisor callbacks @@ -44,12 +44,12 @@ start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). %% @doc Start a `riak_cs_get_fsm' child process. --spec start_get_fsm(node(), binary(), binary(), pid(), riak_client(), pos_integer(), +-spec start_get_fsm(node(), binary(), binary(), binary(), pid(), riak_client(), pos_integer(), pos_integer()) -> {ok, pid()} | {error, term()}. %% SLF: R14B04's supervisor:startchild_ret() is broken? -start_get_fsm(Node, Bucket, Key, Caller, RcPid, +start_get_fsm(Node, Bucket, Key, ObjVsn, Caller, RcPid, FetchConcurrency, BufferFactor) -> - supervisor:start_child({?MODULE, Node}, [Bucket, Key, Caller, RcPid, + supervisor:start_child({?MODULE, Node}, [Bucket, Key, ObjVsn, Caller, RcPid, FetchConcurrency, BufferFactor]). %% =================================================================== diff --git a/apps/riak_cs/src/riak_cs_lfs_utils.erl b/apps/riak_cs/src/riak_cs_lfs_utils.erl index 499f76e1a..b59b6aa6a 100644 --- a/apps/riak_cs/src/riak_cs_lfs_utils.erl +++ b/apps/riak_cs/src/riak_cs_lfs_utils.erl @@ -269,34 +269,32 @@ get_fsm_buffer_size_factor() -> end. %% @doc Initialize a new file manifest --spec new_manifest(binary(), - binary(), - binary(), - non_neg_integer(), - binary(), - term(), - term(), - pos_integer(), - acl() | no_acl_yet, - proplists:proplist(), - cluster_id(), - bag_id()) -> lfs_manifest(). -new_manifest(Bucket, FileName, UUID, ContentLength, ContentType, ContentMd5, - MetaData, BlockSize, Acl, Props, ClusterID, BagId) -> +-spec new_manifest(binary(), binary(), cs_uuid(), + non_neg_integer(), binary(), term(), + orddict:orddict(), pos_integer(), acl() | no_acl_yet, + proplists:proplist(), cluster_id(), bag_id()) -> lfs_manifest(). +new_manifest(Bucket, FileName, UUID, + ContentLength, ContentType, ContentMd5, + MetaData, BlockSize, Acl, + Props, ClusterID, BagId) -> Blocks = ordsets:from_list(initial_blocks(ContentLength, BlockSize)), - Manifest = ?MANIFEST{bkey={Bucket, FileName}, - uuid=UUID, - state=writing, - content_length=ContentLength, - content_type=ContentType, - content_md5=ContentMd5, - block_size=BlockSize, - write_blocks_remaining=Blocks, - metadata=MetaData, - acl=Acl, - props=Props, - cluster_id=ClusterID}, + Manifest = ?MANIFEST{bkey = {Bucket, FileName}, + uuid = UUID, + state = writing, + content_length = ContentLength, + content_type = ContentType, + content_md5 = ContentMd5, + block_size = BlockSize, + write_blocks_remaining = Blocks, + metadata = MetaData, + acl = Acl, + props = Props, + cluster_id = ClusterID}, set_bag_id(BagId, Manifest). +%% it's intentional that new manifests cannot be created for file +%% versions as that involves updating manifests for its neighbours in +%% the chain. Use link_version for that. + -spec set_bag_id(bag_id(), lfs_manifest()) -> lfs_manifest(). set_bag_id(BagId, Manifest) -> @@ -313,9 +311,9 @@ remove_write_block(Manifest, Chunk) -> _ -> writing end, - Manifest?MANIFEST{write_blocks_remaining=Updated, - state=ManiState, - last_block_written_time=os:timestamp()}. + Manifest?MANIFEST{write_blocks_remaining = Updated, + state = ManiState, + last_block_written_time = os:timestamp()}. %% @doc Remove a chunk from the `delete_blocks_remaining' %% field of `Manifest' @@ -328,6 +326,6 @@ remove_delete_block(Manifest, Chunk) -> _ -> scheduled_delete end, - Manifest?MANIFEST{delete_blocks_remaining=Updated, - state=ManiState, - last_block_deleted_time=os:timestamp()}. + Manifest?MANIFEST{delete_blocks_remaining = Updated, + state = ManiState, + last_block_deleted_time = os:timestamp()}. diff --git a/apps/riak_cs/src/riak_cs_list_objects.erl b/apps/riak_cs/src/riak_cs_list_objects.erl index 73724b4a6..d92c2dc84 100644 --- a/apps/riak_cs/src/riak_cs_list_objects.erl +++ b/apps/riak_cs/src/riak_cs_list_objects.erl @@ -122,7 +122,7 @@ manifest_to_keycontent(ReqType, ?MANIFEST{bkey = {_Bucket, Key}, {ok, V} -> V; error -> - null + ?LFS_DEFAULT_OBJECT_VERSION end, ?LOVKC{key = Key, last_modified = LastModified, diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl index d0793b52f..b3edd6e0a 100644 --- a/apps/riak_cs/src/riak_cs_manifest.erl +++ b/apps/riak_cs/src/riak_cs_manifest.erl @@ -21,38 +21,204 @@ -module(riak_cs_manifest). --export([fetch/3, - get_manifests/3, +-export([fetch/4, + get_manifests/4, + get_manifests_of_all_versions/3, manifests_from_riak_object/1, + versioned_key/2, + link_version/5, + unlink_version/4, etag/1, etag_no_quotes/1, object_acl/1]). -include("riak_cs.hrl"). --spec fetch(pid(), binary(), binary()) -> {ok, lfs_manifest()} | {error, term()}. -fetch(RcPid, Bucket, Key) -> - case riak_cs_manifest:get_manifests(RcPid, Bucket, Key) of +-spec fetch(pid(), binary(), binary(), binary()) -> {ok, lfs_manifest()} | {error, term()}. +fetch(RcPid, Bucket, Key, ObjVsn) -> + case get_manifests(RcPid, Bucket, Key, ObjVsn) of {ok, _, Manifests} -> riak_cs_manifest_utils:active_manifest(orddict:from_list(Manifests)); Error -> Error end. --spec get_manifests(riak_client(), binary(), binary()) -> - {ok, term(), term()} | {error, term()}. -get_manifests(RcPid, Bucket, Key) -> - case get_manifests_raw(RcPid, Bucket, Key) of +-spec get_manifests(riak_client(), binary(), binary(), binary()) -> + {ok, riakc_obj:riakc_obj(), wrapped_manifest()} | {error, term()}. +get_manifests(RcPid, Bucket, Key, ObjVsn) -> + case get_manifests_raw(RcPid, Bucket, Key, ObjVsn) of {ok, Object} -> Manifests = manifests_from_riak_object(Object), maybe_warn_bloated_manifests(Bucket, Key, Object, Manifests), - _ = gc_deleted_while_writing_manifests(Object, Manifests, Bucket, Key, RcPid), + _ = gc_deleted_while_writing_manifests(Object, Manifests, Bucket, RcPid), {ok, Object, Manifests}; - {error, _Reason}=Error -> + {error, _Reason} = Error -> Error end. --spec manifests_from_riak_object(riakc_obj:riakc_obj()) -> orddict:orddict(). + +-spec get_manifests_of_all_versions(riak_client(), binary(), binary()) -> + {ok, orddict:orddict(UUID::binary(), [{ObjVsn::binary(), wrapped_manifest()}])} | {error, term()}. +get_manifests_of_all_versions(RcPid, Bucket, Key) -> + case get_manifests(RcPid, Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION) of + {ok, _, PrimaryM} -> + try + {ok, orddict:map(fun(_, M) -> get_descendants(RcPid, Bucket, Key, M) end, PrimaryM)} + catch + throw:manifest_retrieval_error -> + {error, manifest_retrieval_error} + end; + ER -> + ER + end. + +get_descendants(Rc, B, K, M) -> + lists:reverse( + get_descendants(Rc, B, K, M, [])). +get_descendants(_, _, _, ThisM = ?MANIFEST{object_version = ThisOV, + next_object_version = eol}, Q) -> + [{ThisOV, ThisM} | Q]; +get_descendants(Rc, B, K, ThisM = ?MANIFEST{object_version = ThisOV, + next_object_version = NextOV}, Q) -> + case get_manifests(Rc, B, K, NextOV) of + {ok, _, NextM} -> + get_descendants(Rc, B, K, NextM, [{ThisOV, ThisM} | Q]); + ER -> + lager:warning("failed to get manifests for version ~s of ~s/~s (~p)", [NextOV, B, K, ER]), + throw(manifest_retrieval_error) + end. + + +-spec unlink_version(riak_client(), binary(), binary(), lfs_manifest()) -> ok. +unlink_version(RcPid, Bucket, Key, ErasedM) -> + orddict:map(fun(_UUID, M) -> unlink_version2(RcPid, Bucket, Key, M) end, ErasedM), + ok. + +unlink_version2(RcPid, Bucket, Key, ?MANIFEST{next_object_version = NextOV, + prev_object_version = PrevOV}) -> + if PrevOV /= eol -> + {ok, ManiPid1} = riak_cs_manifest_fsm:start_link(Bucket, Key, PrevOV, RcPid), + {ok, _, PrevM} = get_manifests(RcPid, Bucket, Key, PrevOV), + riak_cs_manifest_fsm:update_manifests( + ManiPid1, + ordsets:map(fun(_, M) -> M?MANIFEST{next_object_version = NextOV} end, PrevM)), + riak_cs_manifest_fsm:stop(ManiPid1); + el/=se -> + nop + end, + if NextOV /= eol -> + {ok, ManiPid2} = riak_cs_manifest_fsm:start_link(Bucket, Key, NextOV, RcPid), + {ok, _, NextM} = get_manifests(RcPid, Bucket, Key, NextOV), + riak_cs_manifest_fsm:update_manifests( + ManiPid2, + ordsets:map(fun(_, M) -> M?MANIFEST{next_object_version = PrevOV} end, NextM)), + riak_cs_manifest_fsm:stop(ManiPid2); + el/=se -> + nop + end, + ok. + +-spec link_version(nopid | riak_client(), binary(), binary(), lfs_manifest(), binary()) -> + {sole | new | existing, lfs_manifest()}. +link_version(nopid, Bucket, Key, InsertedM, ObjVsn) -> + {ok, RcPid} = riak_cs_riak_client:checkout(), + Res = link_version(RcPid, Bucket, Key, InsertedM, ObjVsn), + riak_cs_riak_client:checkin(RcPid), + Res; + +link_version(RcPid, Bucket, Key, InsertedM, ObjVsn) -> + case get_manifests_of_all_versions(RcPid, Bucket, Key) of + {ok, UUVVMM} -> + case find_version(ObjVsn, UUVVMM) of + {found, _M} -> + %% found a matching version: don't bother + %% changing prev or next links. It will be resolved, later, I suppose? + {existing, InsertedM}; + not_found -> + %% insert the supplied manifest + {new, link_version2(InsertedM, ObjVsn, UUVVMM, RcPid)} + end; + {error, notfound} -> + {sole, InsertedM?MANIFEST{object_version = ObjVsn}} + end. + +find_version(V, UUVVMM) -> + orddict:fold( + fun(_, _, {found, _} = Found) -> + Found; + (_UUID, VVMM, _) -> + case lists:keyfind(V, 1, VVMM) of + false -> + continue_captain; + {_, M} -> + {found, M} + end + end, + not_found, + UUVVMM). + +link_version2(M0 = ?MANIFEST{bkey = {Bucket, Key}}, ObjVsn, UUVVMM, RcPid) -> + + LastBefore = find_adjoining(ObjVsn, UUVVMM, {'<', fun(L) -> L end}), + FirstAfter = find_adjoining(ObjVsn, UUVVMM, {'>', fun lists:reverse/1}), + + M1 = + if FirstAfter /= eol -> + {ok, MPid1} = riak_cs_manifest_fsm:start_link(Bucket, Key, FirstAfter, RcPid), + riak_cs_manifest_fsm:update_manifests( + MPid1, + ordsets:map(fun(_, M) -> M?MANIFEST{prev_object_version = ObjVsn} end, FirstAfter)), + riak_cs_manifest_fsm:stop(MPid1), + M0?MANIFEST{next_object_version = FirstAfter?MANIFEST.object_version}; + el/=se -> + M0?MANIFEST{next_object_version = eol} + end, + + M2 = + if LastBefore /= eol -> + {ok, MPid2} = riak_cs_manifest_fsm:start_link(Bucket, Key, LastBefore, RcPid), + riak_cs_manifest_fsm:update_manifests( + MPid2, + ordsets:map(fun(_, M) -> M?MANIFEST{next_object_version = ObjVsn} end, LastBefore)), + riak_cs_manifest_fsm:stop(MPid2), + M1?MANIFEST{prev_object_version = LastBefore?MANIFEST.object_version}; + el/=se -> + M1?MANIFEST{prev_object_version = eol} + end, + + M2?MANIFEST{object_version = ObjVsn}. + +find_adjoining(V, UUVVMM, {Operand, Fun}) -> + orddict:fold( + fun(_UUID, VVMM, eol) -> + case lists:search(fun({Vi, _}) -> Operand(V, Vi) end, Fun(VVMM)) of + false -> + eol; + {value, {_, M}} -> + M + end; + (_, _, Found) -> + Found + end, + eol, + UUVVMM). + + + +%% -spec versioned_key(binary()) -> binary(). +%% versioned_key(Key) -> +%% Key. + +-spec versioned_key(binary(), binary()) -> binary(). +versioned_key(Key, ?LFS_DEFAULT_OBJECT_VERSION) -> +%% old keys written without a version should continue to be accessible +%% for reads with the default version + Key; +versioned_key(Key, Vsn) -> + <>. + + +-spec manifests_from_riak_object(riakc_obj:riakc_obj()) -> wrapped_manifest(). manifests_from_riak_object(RiakObject) -> %% For example, riak_cs_manifest_fsm:get_and_update/4 may wish to %% update the #riakc_obj without a roundtrip to Riak first. So we @@ -67,7 +233,7 @@ manifests_from_riak_object(RiakObject) -> riakc_obj:get_contents(RiakObject) end, DecodedSiblings = [binary_to_term(V) || - {_, V}=Content <- Contents, + {_, V} = Content <- Contents, not riak_cs_utils:has_tombstone(Content)], %% Upgrade the manifests to be the latest erlang @@ -81,19 +247,19 @@ manifests_from_riak_object(RiakObject) -> riak_cs_manifest_utils:prune(Resolved). -spec etag(lfs_manifest()) -> string(). -etag(?MANIFEST{content_md5={MD5, Suffix}}) -> +etag(?MANIFEST{content_md5 = {MD5, Suffix}}) -> riak_cs_utils:etag_from_binary(MD5, Suffix); -etag(?MANIFEST{content_md5=MD5}) -> +etag(?MANIFEST{content_md5 = MD5}) -> riak_cs_utils:etag_from_binary(MD5). -spec etag_no_quotes(lfs_manifest()) -> string(). -etag_no_quotes(?MANIFEST{content_md5=ContentMD5}) -> +etag_no_quotes(?MANIFEST{content_md5 = ContentMD5}) -> riak_cs_utils:etag_from_binary_no_quotes(ContentMD5). --spec object_acl(notfound|lfs_manifest()) -> undefined|acl(). +-spec object_acl(notfound | lfs_manifest()) -> undefined | acl(). object_acl(notfound) -> undefined; -object_acl(?MANIFEST{acl=Acl}) -> +object_acl(?MANIFEST{acl = Acl}) -> Acl. @@ -101,16 +267,15 @@ object_acl(?MANIFEST{acl=Acl}) -> %% Internal functions %% =================================================================== -%% Retrieve the riak object at a bucket/key --spec get_manifests_raw(riak_client(), binary(), binary()) -> - {ok, riakc_obj:riakc_obj()} | {error, term()}. -get_manifests_raw(RcPid, Bucket, Key) -> +%% Retrieve the riak object at a bucket/key/version +get_manifests_raw(RcPid, Bucket, Key, ObjVsn) -> ManifestBucket = riak_cs_utils:to_bucket_name(objects, Bucket), ok = riak_cs_riak_client:set_bucket_name(RcPid, Bucket), {ok, ManifestPbc} = riak_cs_riak_client:manifest_pbc(RcPid), Timeout = riak_cs_config:get_manifest_timeout(), - case riakc_pb_socket:get(ManifestPbc, ManifestBucket, Key, Timeout) of - {ok, _} = Result -> Result; + case riakc_pb_socket:get(ManifestPbc, ManifestBucket, versioned_key(Key, ObjVsn), Timeout) of + {ok, _} = Result -> + Result; {error, disconnected} -> riak_cs_pbc:check_connection_status(ManifestPbc, get_manifests_raw), {error, disconnected}; @@ -118,9 +283,9 @@ get_manifests_raw(RcPid, Bucket, Key) -> Error end. -gc_deleted_while_writing_manifests(Object, Manifests, Bucket, Key, RcPid) -> +gc_deleted_while_writing_manifests(Object, Manifests, Bucket, RcPid) -> UUIDs = riak_cs_manifest_utils:deleted_while_writing(Manifests), - riak_cs_gc:gc_specific_manifests(UUIDs, Object, Bucket, Key, RcPid). + riak_cs_gc:gc_specific_manifests(UUIDs, Object, Bucket, RcPid). -spec maybe_warn_bloated_manifests(binary(), binary(), riakc_obj:riakc_obj(), [term()]) -> ok. maybe_warn_bloated_manifests(Bucket, Key, Object, Manifests) -> diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl index 800f43a21..d73b65097 100644 --- a/apps/riak_cs/src/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/riak_cs_manifest_fsm.erl @@ -34,7 +34,7 @@ -endif. %% API --export([start_link/3, +-export([start_link/4, get_all_manifests/1, get_active_manifest/1, get_specific_manifest/2, @@ -47,7 +47,7 @@ update_manifests_with_confirmation/2, maybe_stop_manifest_fsm/1, stop/1]). --export([update_md_with_multipart_2i/4]). +-export([update_md_with_multipart_2i/3]). %% gen_fsm callbacks -export([init/1, @@ -71,6 +71,7 @@ -record(state, {bucket :: binary(), key :: binary(), + obj_vsn :: binary(), riak_object :: term(), manifests :: term(), % an orddict mapping UUID -> Manifest riak_client :: riak_client() @@ -88,8 +89,8 @@ %% %% @end %%-------------------------------------------------------------------- -start_link(Bucket, Key, RcPid) -> - gen_fsm:start_link(?MODULE, [Bucket, Key, RcPid], []). +start_link(Bucket, Key, ObjVsn, RcPid) -> + gen_fsm:start_link(?MODULE, [Bucket, Key, ObjVsn, RcPid], []). get_all_manifests(Pid) -> gen_fsm:sync_send_event(Pid, get_manifests, infinity). @@ -102,12 +103,12 @@ get_specific_manifest(Pid, UUID) -> case gen_fsm:sync_send_event(Pid, get_manifests, infinity) of {ok, Manifests} -> case orddict:fetch(UUID, Manifests) of - {ok, _}=Result -> + {ok, _} = Result -> Result; error -> {error, notfound} end; - {error, notfound}=NotFound -> + {error, notfound} = NotFound -> NotFound end. @@ -115,9 +116,11 @@ add_new_manifest(Pid, Manifest) -> Dict = riak_cs_manifest_utils:new_dict(Manifest?MANIFEST.uuid, Manifest), gen_fsm:send_event(Pid, {add_new_dict, Dict}). +-spec update_manifests(pid(), wrapped_manifest()) -> ok. update_manifests(Pid, Manifests) -> gen_fsm:send_event(Pid, {update_manifests, Manifests}). +-spec update_manifest(pid(), lfs_manifest()) -> ok. update_manifest(Pid, Manifest) -> Dict = riak_cs_manifest_utils:new_dict(Manifest?MANIFEST.uuid, Manifest), update_manifests(Pid, Dict). @@ -161,16 +164,20 @@ stop(Pid) -> %%% gen_fsm callbacks %%%=================================================================== -init([Bucket, Key, RcPid]) -> +init([Bucket, Key, ObjVsn, RcPid]) -> process_flag(trap_exit, true), - {ok, waiting_command, #state{bucket=Bucket, - key=Key, - riak_client=RcPid}}; + {ok, waiting_command, #state{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + riak_client = RcPid}}; init([test, Bucket, Key]) -> %% creating the "mock" riakc_pb_socket %% gen_server here {ok, FakePbc} = riakc_pb_socket_fake:start_link(), - {ok, waiting_command, #state{bucket=Bucket, key=Key, riak_client=FakePbc}}. + {ok, waiting_command, #state{bucket = Bucket, + key = Key, + obj_vsn = ?LFS_DEFAULT_OBJECT_VERSION, + riak_client = FakePbc}}. %% This clause is for adding a new %% manifest that doesn't exist yet. @@ -178,47 +185,50 @@ init([test, Bucket, Key]) -> %% with a particular UUID, update_manifest %% should be used from then on out. waiting_command({add_new_dict, WrappedManifest}, - State=#state{riak_client=RcPid, - bucket=Bucket, - key=Key}) -> - {_, RiakObj, Manifests} = get_and_update(RcPid, WrappedManifest, Bucket, Key), - UpdState = State#state{riak_object=RiakObj, manifests=Manifests}, + State = #state{riak_client = RcPid, + bucket = Bucket, + key = Key, + obj_vsn = ObjVsn}) -> + {_, RiakObj, Manifests} = get_and_update(RcPid, WrappedManifest, Bucket, Key, ObjVsn), + UpdState = State#state{riak_object = RiakObj, manifests = Manifests}, {next_state, waiting_update_command, UpdState}. waiting_update_command({update_manifests, WrappedManifests}, - State=#state{riak_client=RcPid, - bucket=Bucket, - key=Key, - riak_object=undefined, - manifests=undefined}) -> - _Res = get_and_update(RcPid, WrappedManifests, Bucket, Key), + State = #state{riak_client = RcPid, + bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + riak_object = undefined, + manifests = undefined}) -> + _Res = get_and_update(RcPid, WrappedManifests, Bucket, Key, ObjVsn), {next_state, waiting_update_command, State}; waiting_update_command({update_manifests, WrappedManifests}, - State=#state{riak_client=RcPid, - bucket=Bucket, - key=Key, - riak_object=PreviousRiakObject, - manifests=PreviousManifests}) -> + State = #state{riak_client = RcPid, + bucket = Bucket, + riak_object = PreviousRiakObject, + manifests = PreviousManifests}) -> _ = update_from_previous_read(RcPid, PreviousRiakObject, - Bucket, Key, + Bucket, PreviousManifests, WrappedManifests), - {next_state, waiting_update_command, State#state{riak_object=undefined, manifests=undefined}}. + {next_state, waiting_update_command, State#state{riak_object = undefined, + manifests = undefined}}. waiting_command(get_manifests, _From, State) -> {Reply, NewState} = handle_get_manifests(State), {reply, Reply, waiting_update_command, NewState}; waiting_command({delete_manifest, UUID}, - _From, - State=#state{riak_client=RcPid, - bucket=Bucket, - key=Key, - riak_object=undefined, - manifests=undefined}) -> - Reply = get_and_delete(RcPid, UUID, Bucket, Key), + _From, + State = #state{riak_client = RcPid, + bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + riak_object = undefined, + manifests = undefined}) -> + Reply = get_and_delete(RcPid, UUID, Bucket, Key, ObjVsn), {reply, Reply, waiting_update_command, State}; -waiting_command({update_manifests_with_confirmation, _}=Cmd, From, State) -> +waiting_command({update_manifests_with_confirmation, _} = Cmd, From, State) -> %% Used by multipart commit: this FSM was just started a moment %% ago, and we don't need this FSM to re-do work that multipart %% commit has already done. @@ -226,54 +236,50 @@ waiting_command({update_manifests_with_confirmation, _}=Cmd, From, State) -> waiting_update_command({update_manifests_with_confirmation, WrappedManifests}, _From, - State=#state{riak_client=RcPid, - bucket=Bucket, - key=Key, - riak_object=undefined, - manifests=undefined}) -> - {Reply, _, _} = get_and_update(RcPid, WrappedManifests, Bucket, Key), + State = #state{riak_client = RcPid, + bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + riak_object = undefined, + manifests = undefined}) -> + {Reply, _, _} = get_and_update(RcPid, WrappedManifests, Bucket, Key, ObjVsn), {reply, Reply, waiting_update_command, State}; waiting_update_command({update_manifests_with_confirmation, WrappedManifests}, _From, - State=#state{riak_client=RcPid, - bucket=Bucket, - key=Key, - riak_object=PreviousRiakObject, - manifests=PreviousManifests}) -> + State = #state{riak_client = RcPid, + bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + riak_object = PreviousRiakObject, + manifests = PreviousManifests}) -> Reply = case riak_cs_config:read_before_last_manifest_write() of true -> - {R, _, _} = get_and_update(RcPid, WrappedManifests, Bucket, Key), + {R, _, _} = get_and_update(RcPid, WrappedManifests, Bucket, Key, ObjVsn), R; false -> - update_from_previous_read(RcPid, - PreviousRiakObject, - Bucket, - Key, - PreviousManifests, - WrappedManifests) + update_from_previous_read( + RcPid, PreviousRiakObject, Bucket, + PreviousManifests, WrappedManifests) end, - {reply, Reply, waiting_update_command, State#state{riak_object=undefined, - manifests=undefined}}; + {reply, Reply, waiting_update_command, State#state{riak_object = undefined, + manifests = undefined}}; waiting_update_command({gc_specific_manifest, UUID}, _From, - #state{ - riak_object = RiakObj0, - bucket = Bucket, - key = Key, - riak_client = RcPid - } = State) -> + State = #state{riak_object = RiakObj0, + bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + riak_client = RcPid}) -> %% put_fsm has issued delete_manifest caused by force_stop Res = case RiakObj0 of undefined -> - case riak_cs_manifest:get_manifests(RcPid, Bucket, Key) of + case riak_cs_manifest:get_manifests(RcPid, Bucket, Key, ObjVsn) of {ok, RiakObj, _} -> - riak_cs_gc:gc_specific_manifests([UUID], RiakObj, - Bucket, Key, RcPid); + riak_cs_gc:gc_specific_manifests([UUID], RiakObj, Bucket, RcPid); Error -> Error end; RiakObj -> - riak_cs_gc:gc_specific_manifests([UUID], RiakObj, - Bucket, Key, RcPid) + riak_cs_gc:gc_specific_manifests([UUID], RiakObj, Bucket, RcPid) end, {stop, normal, Res, State}. @@ -300,15 +306,17 @@ code_change(_OldVsn, StateName, State, _Extra) -> %% @doc Return all (resolved) manifests, or notfound -spec handle_get_manifests(#state{}) -> {{ok, [lfs_manifest()]}, #state{}} | {{error, notfound}, #state{}}. -handle_get_manifests(State=#state{riak_client=RcPid, - bucket=Bucket, - key=Key}) -> - case riak_cs_manifest:get_manifests(RcPid, Bucket, Key) of +handle_get_manifests(State = #state{riak_client = RcPid, + bucket = Bucket, + key = Key, + obj_vsn = ObjVsn}) -> + case riak_cs_manifest:get_manifests(RcPid, Bucket, Key, ObjVsn) of {ok, RiakObject, Resolved} -> Reply = {ok, Resolved}, - NewState = State#state{riak_object=RiakObject, manifests=Resolved}, + NewState = State#state{riak_object = RiakObject, + manifests = Resolved}, {Reply, NewState}; - {error, notfound}=NotFound -> + {error, notfound} = NotFound -> {NotFound, State} end. @@ -316,13 +324,10 @@ handle_get_manifests(State=#state{riak_client=RcPid, %% delete the manifest corresponding to `UUID', and then %% write the value back to Riak or delete the manifest value %% if there are no manifests remaining. --spec get_and_delete(riak_client(), binary(), binary(), binary()) -> ok | - {error, term()}. -get_and_delete(RcPid, UUID, Bucket, Key) -> - case riak_cs_manifest:get_manifests(RcPid, Bucket, Key) of +get_and_delete(RcPid, UUID, Bucket, Key, ObjVsn) -> + case riak_cs_manifest:get_manifests(RcPid, Bucket, Key, ObjVsn) of {ok, RiakObject, Manifests} -> - ResolvedManifests = riak_cs_manifest_resolution:resolve([Manifests]), - UpdatedManifests = orddict:erase(UUID, ResolvedManifests), + UpdatedManifests = orddict:erase(UUID, Manifests), case UpdatedManifests of [] -> DeleteTimeout = riak_cs_config:delete_manifest_timeout(), @@ -333,7 +338,7 @@ get_and_delete(RcPid, UUID, Bucket, Key) -> riak_cs_utils:update_obj_value( RiakObject, riak_cs_utils:encode_term(UpdatedManifests)), ObjectToWrite = update_md_with_multipart_2i( - ObjectToWrite0, UpdatedManifests, Bucket, Key), + ObjectToWrite0, UpdatedManifests, Bucket), PutTimeout = riak_cs_config:put_manifest_timeout(), riak_cs_pbc:put(manifest_pbc(RcPid), ObjectToWrite, PutTimeout, [riakc, put_manifest]) @@ -342,13 +347,11 @@ get_and_delete(RcPid, UUID, Bucket, Key) -> ok end. --spec get_and_update(riak_client(), orddict:orddict(), binary(), binary()) -> - {ok | error, undefined | riakc_obj:riakc_obj(), - undefined | orddict:orddict()}. -get_and_update(RcPid, WrappedManifests, Bucket, Key) -> - case riak_cs_manifest:get_manifests(RcPid, Bucket, Key) of + +get_and_update(RcPid, WrappedManifests, Bucket, Key, ObjVsn) -> + case riak_cs_manifest:get_manifests(RcPid, Bucket, Key, ObjVsn) of {ok, RiakObject, Manifests} -> - case update(RcPid, Manifests, RiakObject, WrappedManifests, Bucket, Key) of + case update(RcPid, Manifests, RiakObject, WrappedManifests, Bucket) of {ok, _, _} = Res -> case maybe_backpressure_sleep(riakc_obj:value_count(RiakObject)) of true -> @@ -364,9 +367,11 @@ get_and_update(RcPid, WrappedManifests, Bucket, Key) -> end; {error, notfound} -> ManifestBucket = riak_cs_utils:to_bucket_name(objects, Bucket), - ObjectToWrite0 = riakc_obj:new(ManifestBucket, Key, riak_cs_utils:encode_term(WrappedManifests)), + ObjectToWrite0 = riakc_obj:new(ManifestBucket, + riak_cs_manifest:versioned_key(Key, ObjVsn), + riak_cs_utils:encode_term(WrappedManifests)), ObjectToWrite = update_md_with_multipart_2i( - ObjectToWrite0, WrappedManifests, Bucket, Key), + ObjectToWrite0, WrappedManifests, Bucket), Timeout = riak_cs_config:put_manifest_timeout(), PutResult = riak_cs_pbc:put(manifest_pbc(RcPid), ObjectToWrite, Timeout, [riakc, put_manifest]), @@ -396,7 +401,7 @@ maybe_backpressure_sleep(Siblings, _BackpressureThreshold) -> ok = timer:sleep(SleepMS), true. -update(RcPid, OldManifests, OldRiakObject, WrappedManifests, Bucket, Key) -> +update(RcPid, OldManifests, OldRiakObject, WrappedManifests, Bucket) -> NewManiAdded = riak_cs_manifest_resolution:resolve([WrappedManifests, OldManifests]), %% Update the object here so that if there are any %% overwritten UUIDs, then gc_specific_manifests() will @@ -405,7 +410,7 @@ update(RcPid, OldManifests, OldRiakObject, WrappedManifests, Bucket, Key) -> ObjectToWrite0 = riak_cs_utils:update_obj_value( OldRiakObject, riak_cs_utils:encode_term(NewManiAdded)), ObjectToWrite = update_md_with_multipart_2i( - ObjectToWrite0, NewManiAdded, Bucket, Key), + ObjectToWrite0, NewManiAdded, Bucket), {Result, NewRiakObject} = case riak_cs_manifest_utils:overwritten_UUIDs(NewManiAdded) of [] -> @@ -415,7 +420,7 @@ update(RcPid, OldManifests, OldRiakObject, WrappedManifests, Bucket, Key) -> OverwrittenUUIDs -> riak_cs_gc:gc_specific_manifests(OverwrittenUUIDs, ObjectToWrite, - Bucket, Key, + Bucket, RcPid) end, UpdatedManifests = riak_cs_manifest:manifests_from_riak_object(NewRiakObject), @@ -425,18 +430,11 @@ manifest_pbc(RcPid) -> {ok, ManifestPbc} = riak_cs_riak_client:manifest_pbc(RcPid), ManifestPbc. --spec update_from_previous_read(riak_client(), riakc_obj:riakc_obj(), - binary(), binary(), - orddict:orddict(), orddict:orddict()) -> - ok | {error, term()}. -update_from_previous_read(RcPid, RiakObject, Bucket, Key, - PreviousManifests, NewManifests) -> - Resolved = riak_cs_manifest_resolution:resolve([PreviousManifests, - NewManifests]), +update_from_previous_read(RcPid, RiakObject, Bucket, PreviousManifests, NewManifests) -> + Resolved = riak_cs_manifest_resolution:resolve([PreviousManifests, NewManifests]), NewRiakObject0 = riak_cs_utils:update_obj_value(RiakObject, riak_cs_utils:encode_term(Resolved)), - NewRiakObject = update_md_with_multipart_2i(NewRiakObject0, Resolved, - Bucket, Key), + NewRiakObject = update_md_with_multipart_2i(NewRiakObject0, Resolved, Bucket), %% TODO: %% currently we don't do %% anything to make sure @@ -445,7 +443,7 @@ update_from_previous_read(RcPid, RiakObject, Bucket, Key, riak_cs_pbc:put(manifest_pbc(RcPid), NewRiakObject, [], Timeout, [riakc, put_manifest]). -update_md_with_multipart_2i(RiakObject, WrappedManifests, Bucket, Key) -> +update_md_with_multipart_2i(RiakObject, WrappedManifests, Bucket) -> %% During testing, it's handy to delete Riak keys in the %% S3 bucket, e.g., cleaning up from a previous test. %% Let's not trip over tombstones here. @@ -457,7 +455,7 @@ update_md_with_multipart_2i(RiakObject, WrappedManifests, Bucket, Key) -> merge_dicts(MDs) end, {K_i, V_i} = riak_cs_mp_utils:calc_multipart_2i_dict( - [M || {_, M} <- WrappedManifests], Bucket, Key), + [M || {_, M} <- WrappedManifests], Bucket), MD = dict:store(K_i, V_i, MD0), riakc_obj:update_metadata(RiakObject, MD). diff --git a/apps/riak_cs/src/riak_cs_manifest_resolution.erl b/apps/riak_cs/src/riak_cs_manifest_resolution.erl index d5669a250..9cefe000d 100644 --- a/apps/riak_cs/src/riak_cs_manifest_resolution.erl +++ b/apps/riak_cs/src/riak_cs_manifest_resolution.erl @@ -38,7 +38,7 @@ %% and values are dictionaries whose %% keys are UUIDs and whose values %% are manifests. --spec resolve(list()) -> term(). +-spec resolve([wrapped_manifest()]) -> wrapped_manifest(). resolve(Siblings) -> lists:foldl(fun resolve_dicts/2, orddict:new(), Siblings). @@ -49,14 +49,12 @@ resolve(Siblings) -> %% @doc Take two dictionaries %% of manifests and resolve them. %% @private --spec resolve_dicts(term(), term()) -> term(). resolve_dicts(A, B) -> orddict:merge(fun resolve_manifests/3, A, B). %% @doc Take two manifests with %% the same UUID and resolve them %% @private --spec resolve_manifests(term(), term(), term()) -> term(). resolve_manifests(_Key, A, B) -> AState = state_to_stage_number(A?MANIFEST.state), BState = state_to_stage_number(B?MANIFEST.state), @@ -73,8 +71,6 @@ state_to_stage_number(scheduled_delete) -> 40. %% The third and fourth args, A, B, are the %% manifests themselves. %% @private --spec resolve_manifests(integer(), integer(), term(), term()) -> term(). - resolve_manifests(StageA, StageB, A, _B) when StageA > StageB -> A; resolve_manifests(StageA, StageB, _A, B) when StageB > StageA -> @@ -87,8 +83,8 @@ resolve_manifests(_, _, WriteBlocksRemaining = resolve_written_blocks(A, B), LastBlockWrittenTime = resolve_last_written_time(A, B), Props = resolve_props(A, B), - A?MANIFEST{write_blocks_remaining=WriteBlocksRemaining, - last_block_written_time=LastBlockWrittenTime, + A?MANIFEST{write_blocks_remaining = WriteBlocksRemaining, + last_block_written_time = LastBlockWrittenTime, props = Props}; resolve_manifests(_, _, @@ -107,16 +103,16 @@ resolve_manifests(_, _, ?MANIFEST{state = pending_delete} = B) -> BlocksLeftToDelete = resolve_deleted_blocks(A, B), LastDeletedTime = resolve_last_deleted_time(A, B), - A?MANIFEST{delete_blocks_remaining=BlocksLeftToDelete, - last_block_deleted_time=LastDeletedTime}; + A?MANIFEST{delete_blocks_remaining = BlocksLeftToDelete, + last_block_deleted_time = LastDeletedTime}; resolve_manifests(_, _, ?MANIFEST{state = scheduled_delete} = A, ?MANIFEST{state = scheduled_delete} = B) -> BlocksLeftToDelete = resolve_deleted_blocks(A, B), LastDeletedTime = resolve_last_deleted_time(A, B), - A?MANIFEST{delete_blocks_remaining=BlocksLeftToDelete, - last_block_deleted_time=LastDeletedTime}. + A?MANIFEST{delete_blocks_remaining = BlocksLeftToDelete, + last_block_deleted_time = LastDeletedTime}. resolve_written_blocks(A, B) -> AWritten = A?MANIFEST.write_blocks_remaining, diff --git a/apps/riak_cs/src/riak_cs_manifest_utils.erl b/apps/riak_cs/src/riak_cs_manifest_utils.erl index 866c09237..209ddd8e7 100644 --- a/apps/riak_cs/src/riak_cs_manifest_utils.erl +++ b/apps/riak_cs/src/riak_cs_manifest_utils.erl @@ -114,9 +114,9 @@ overwritten_UUIDs_active_fold_helper(Active) -> [binary()]. update_acc(_UUID, _Manifest, Acc, true) -> Acc; -update_acc(UUID, ?MANIFEST{state=active}, Acc, false) -> +update_acc(UUID, ?MANIFEST{state = active}, Acc, false) -> [UUID | Acc]; -update_acc(UUID, Manifest=?MANIFEST{state=writing}, Acc, _) -> +update_acc(UUID, Manifest=?MANIFEST{state = writing}, Acc, _) -> LBWT = Manifest?MANIFEST.last_block_written_time, WST = Manifest?MANIFEST.write_start_time, acc_leeway_helper(UUID, Acc, LBWT, WST); @@ -153,8 +153,8 @@ mark_deleted(Dict, UUIDsToMark) -> MapFun = fun(K, V) -> case lists:member(K, UUIDsToMark) of true -> - V?MANIFEST{state=pending_delete, - delete_marked_time=os:timestamp(), + V?MANIFEST{state = pending_delete, + delete_marked_time = os:timestamp(), props=[{deleted, true} | V?MANIFEST.props]}; false -> V @@ -171,8 +171,8 @@ mark_pending_delete(Dict, UUIDsToMark) -> MapFun = fun(K, V) -> case lists:member(K, UUIDsToMark) of true -> - V?MANIFEST{state=pending_delete, - delete_marked_time=os:timestamp()}; + V?MANIFEST{state = pending_delete, + delete_marked_time = os:timestamp()}; false -> V end @@ -189,7 +189,7 @@ mark_scheduled_delete(Dict, UUIDsToMark) -> case lists:member(K, UUIDsToMark) of true -> V?MANIFEST{state=scheduled_delete, - scheduled_delete_time=os:timestamp()}; + scheduled_delete_time = os:timestamp()}; false -> V end @@ -221,8 +221,8 @@ pending_delete_helper(UUIDs) -> %% Return true if this manifest should be retried %% moving to the GC bucket -spec retry_manifest(lfs_manifest()) -> boolean(). -retry_manifest(?MANIFEST{state=pending_delete, - delete_marked_time=MarkedTime}) -> +retry_manifest(?MANIFEST{state = pending_delete, + delete_marked_time = MarkedTime}) -> retry_from_marked_time(MarkedTime, os:timestamp()); retry_manifest(_Manifest) -> false. @@ -272,7 +272,7 @@ prune_count(Manifests, MaxCount) -> Manifests end. --spec upgrade_wrapped_manifests([orddict:orddict()]) -> [orddict:orddict()]. +-spec upgrade_wrapped_manifests([wrapped_manifest()]) -> [wrapped_manifest()]. upgrade_wrapped_manifests(ListofOrdDicts) -> DictMapFun = fun(_Key, Value) -> upgrade_manifest(Value) end, MapFun = fun(Value) -> orddict:map(DictMapFun, Value) end, @@ -282,54 +282,130 @@ upgrade_wrapped_manifests(ListofOrdDicts) -> %% version of the manifest record. This is so that %% _most_ of the codebase only has to deal with %% the most recent version of the record. --spec upgrade_manifest(lfs_manifest() | #lfs_manifest_v2{}) -> lfs_manifest(). -upgrade_manifest(#lfs_manifest_v2{block_size=BlockSize, - bkey=Bkey, - metadata=Metadata, - created=Created, - uuid=UUID, - content_length=ContentLength, - content_type=ContentType, - content_md5=ContentMd5, - state=State, - write_start_time=WriteStartTime, - last_block_written_time=LastBlockWrittenTime, - write_blocks_remaining=WriteBlocksRemaining, - delete_marked_time=DeleteMarkedTime, - last_block_deleted_time=LastBlockDeletedTime, - delete_blocks_remaining=DeleteBlocksRemaining, - acl=Acl, - props=Properties, - cluster_id=ClusterID}) -> - - upgrade_manifest(?MANIFEST{block_size=BlockSize, - bkey=Bkey, - metadata=Metadata, - created=Created, - uuid=UUID, - content_length=ContentLength, - content_type=ContentType, - content_md5=ContentMd5, - state=State, - write_start_time=WriteStartTime, - last_block_written_time=LastBlockWrittenTime, - write_blocks_remaining=WriteBlocksRemaining, - delete_marked_time=DeleteMarkedTime, - last_block_deleted_time=LastBlockDeletedTime, - delete_blocks_remaining=DeleteBlocksRemaining, - acl=Acl, - props=Properties, - cluster_id=ClusterID}); - -upgrade_manifest(?MANIFEST{props=Props}=M) -> - M?MANIFEST{props=fixup_props(Props)}. - --spec fixup_props(undefined | list()) -> list(). +-spec upgrade_manifest(#lfs_manifest_v2{} | #lfs_manifest_v3{} | #lfs_manifest_v4{}) -> lfs_manifest(). +upgrade_manifest(#lfs_manifest_v2{block_size = BlockSize, + bkey = Bkey, + metadata = Metadata, + created = Created, + uuid = UUID, + content_length = ContentLength, + content_type = ContentType, + content_md5 = ContentMd5, + state = State, + write_start_time = WriteStartTime, + last_block_written_time = LastBlockWrittenTime, + write_blocks_remaining = WriteBlocksRemaining, + delete_marked_time = DeleteMarkedTime, + last_block_deleted_time = LastBlockDeletedTime, + delete_blocks_remaining = DeleteBlocksRemaining, + acl = Acl, + props = Props, + cluster_id = ClusterID}) -> + + upgrade_manifest(#lfs_manifest_v3{block_size = BlockSize, + bkey = Bkey, + metadata = Metadata, + created = Created, + uuid = UUID, + content_length = ContentLength, + content_type = ContentType, + content_md5 = ContentMd5, + state = State, + write_start_time = WriteStartTime, + last_block_written_time = LastBlockWrittenTime, + write_blocks_remaining = WriteBlocksRemaining, + delete_marked_time = DeleteMarkedTime, + last_block_deleted_time = LastBlockDeletedTime, + delete_blocks_remaining = DeleteBlocksRemaining, + acl = Acl, + props = fixup_props(Props), + cluster_id = ClusterID}); + +upgrade_manifest(#lfs_manifest_v3{block_size = BlockSize, + bkey = Bkey, + metadata = Metadata, + created = Created, + uuid = UUID, + content_length = ContentLength, + content_type = ContentType, + content_md5 = ContentMd5, + state = State, + write_start_time = WriteStartTime, + last_block_written_time = LastBlockWrittenTime, + write_blocks_remaining = WriteBlocksRemaining, + delete_marked_time = DeleteMarkedTime, + last_block_deleted_time = LastBlockDeletedTime, + delete_blocks_remaining = DeleteBlocksRemaining, + scheduled_delete_time = ScheduledDeleteTime, + acl = Acl, + props = Props, + cluster_id = ClusterID}) -> + + upgrade_manifest(#lfs_manifest_v4{block_size = BlockSize, + bkey = Bkey, + object_version = ?LFS_DEFAULT_OBJECT_VERSION, + metadata = Metadata, + created = Created, + uuid = UUID, + content_length = ContentLength, + content_type = ContentType, + content_md5 = ContentMd5, + state = State, + write_start_time = WriteStartTime, + last_block_written_time = LastBlockWrittenTime, + write_blocks_remaining = WriteBlocksRemaining, + delete_marked_time = DeleteMarkedTime, + last_block_deleted_time = LastBlockDeletedTime, + delete_blocks_remaining = DeleteBlocksRemaining, + scheduled_delete_time = ScheduledDeleteTime, + acl = Acl, + props = fixup_multipart_manifests_in_props(Props), + cluster_id = ClusterID}); +upgrade_manifest(M = #lfs_manifest_v4{}) -> + M. + + fixup_props(undefined) -> []; fixup_props(Props) when is_list(Props) -> Props. +fixup_multipart_manifests_in_props(Props) -> + fixup_multipart_manifest( + proplists:get_value(multipart, Props), Props). + +fixup_multipart_manifest(undefined, Props) -> + Props; +fixup_multipart_manifest(MPM0 = ?MULTIPART_MANIFEST{parts = Parts0, + cleanup_parts = CleanupParts0}, Props) -> + F = fun(PM, Q) -> ordsets:add_element(upgrade_part_manifest(PM), Q) end, + MPM9 = MPM0?MULTIPART_MANIFEST{parts = ordsets:fold(F, ordsets:new(), Parts0), + cleanup_parts = ordsets:fold(F, ordsets:new(), CleanupParts0)}, + lists:keyreplace(multipart, 1, Props, MPM9). + +upgrade_part_manifest(#part_manifest_v1{bucket = Bucket, + key = Key, + start_time = StartTime, + part_number = PartNumber, + part_id = PartId, + content_length = ContentLength, + content_md5 = ContentMd5, + block_size = BlockSize}) -> + #part_manifest_v2{bucket = Bucket, + key = Key, + object_version = ?LFS_DEFAULT_OBJECT_VERSION, + start_time = StartTime, + part_number = PartNumber, + part_id = PartId, + content_length = ContentLength, + content_md5 = ContentMd5, + block_size = BlockSize}; +upgrade_part_manifest(M) -> + M. + + + + %%%=================================================================== %%% Internal functions %%%=================================================================== @@ -339,7 +415,7 @@ fixup_props(Props) when is_list(Props) -> -spec filter_manifests_by_state(orddict:orddict(), [atom()]) -> orddict:orddict(). filter_manifests_by_state(Dict, AcceptedStates) -> AcceptManifest = - fun(_, ?MANIFEST{state=State}) -> + fun(_, ?MANIFEST{state = State}) -> lists:member(State, AcceptedStates) end, orddict:filter(AcceptManifest, Dict). @@ -354,7 +430,7 @@ leeway_elapsed(Timestamp) -> orddict_values(OrdDict) -> [V || {_K, V} <- orddict:to_list(OrdDict)]. -manifest_is_active(?MANIFEST{state=active}) -> true; +manifest_is_active(?MANIFEST{state = active}) -> true; manifest_is_active(_Manifest) -> false. -spec delete_time(lfs_manifest()) -> erlang:timestamp() | undefined. @@ -411,41 +487,41 @@ later(DeleteTime1, DeleteTime2) -> -spec most_recent_active_manifest(lfs_manifest(), { no_active_manifest | lfs_manifest(), undefined | erlang:timestamp()}) -> {no_active_manifest | lfs_manifest(), erlang:timestamp() | undefined}. -most_recent_active_manifest(Manifest=?MANIFEST{state=scheduled_delete}, +most_recent_active_manifest(Manifest = ?MANIFEST{state = scheduled_delete}, {MostRecent, undefined}) -> {MostRecent, delete_time(Manifest)}; -most_recent_active_manifest(Manifest=?MANIFEST{state=scheduled_delete}, +most_recent_active_manifest(Manifest = ?MANIFEST{state = scheduled_delete}, {MostRecent, DeleteTime}) -> - Dt=delete_time(Manifest), + Dt = delete_time(Manifest), {MostRecent, later(Dt, DeleteTime)}; -most_recent_active_manifest(Manifest=?MANIFEST{state=pending_delete}, +most_recent_active_manifest(Manifest = ?MANIFEST{state = pending_delete}, {MostRecent, undefined}) -> {MostRecent, delete_time(Manifest)}; -most_recent_active_manifest(Manifest=?MANIFEST{state=pending_delete}, +most_recent_active_manifest(Manifest = ?MANIFEST{state = pending_delete}, {MostRecent, DeleteTime}) -> - Dt=delete_time(Manifest), + Dt = delete_time(Manifest), {MostRecent, later(Dt, DeleteTime)}; -most_recent_active_manifest(Manifest=?MANIFEST{state=active}, +most_recent_active_manifest(Manifest = ?MANIFEST{state = active}, {no_active_manifest, undefined}) -> {Manifest, undefined}; -most_recent_active_manifest(Man1=?MANIFEST{state=active}, - {Man2=?MANIFEST{state=active}, DeleteTime}) +most_recent_active_manifest(Man1 = ?MANIFEST{state = active}, + {Man2 = ?MANIFEST{state = active}, DeleteTime}) when Man1?MANIFEST.write_start_time > Man2?MANIFEST.write_start_time -> {Man1, DeleteTime}; -most_recent_active_manifest(_Man1=?MANIFEST{state=active}, - {Man2=?MANIFEST{state=active}, DeleteTime}) -> +most_recent_active_manifest(_Man1 = ?MANIFEST{state = active}, + {Man2 = ?MANIFEST{state = active}, DeleteTime}) -> {Man2, DeleteTime}; -most_recent_active_manifest(Man1=?MANIFEST{state=active}, +most_recent_active_manifest(Man1 = ?MANIFEST{state = active}, {no_active_manifest, DeleteTime}) -> {Man1, DeleteTime}; -most_recent_active_manifest(_Man1, {Man2=?MANIFEST{state=active}, DeleteTime}) -> +most_recent_active_manifest(_Man1, {Man2 = ?MANIFEST{state = active}, DeleteTime}) -> {Man2, DeleteTime}; most_recent_active_manifest(_Manifest, {MostRecent, DeleteTime}) -> {MostRecent, DeleteTime}. -spec needs_pruning(lfs_manifest(), erlang:timestamp()) -> boolean(). -needs_pruning(?MANIFEST{state=scheduled_delete, - scheduled_delete_time=ScheduledDeleteTime}, Time) -> +needs_pruning(?MANIFEST{state = scheduled_delete, + scheduled_delete_time = ScheduledDeleteTime}, Time) -> seconds_diff(Time, ScheduledDeleteTime) > riak_cs_gc:leeway_seconds(); needs_pruning(_Manifest, _Time) -> false. @@ -461,18 +537,17 @@ seconds_diff(T2, T1) -> -ifdef(TEST). new_mani_helper() -> - riak_cs_lfs_utils:new_manifest(<<"bucket">>, - <<"key">>, - <<"uuid">>, - 100, %% content-length - <<"ctype">>, - undefined, %% md5 - orddict:new(), - 10, - undefined, - [], - undefined, - undefined). + riak_cs_lfs_utils:new_manifest( + <<"bucket">>, <<"key">>, <<"1.0">>, <<"uuid">>, + 100, %% content-length + <<"ctype">>, + undefined, %% md5 + orddict:new(), + 10, + undefined, + [], + undefined, + undefined). manifest_test_() -> {setup, diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 269afb3a8..0ee5f485e 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -30,9 +30,7 @@ -ifdef(TEST). -compile(export_all). -compile(nowarn_export_all). --ifdef(EQC). --include_lib("eqc/include/eqc.hrl"). --endif. +-include_lib("proper/include/proper.hrl"). -include_lib("eunit/include/eunit.hrl"). -endif. @@ -42,28 +40,29 @@ %% export Public API -export([ - abort_multipart_upload/4, abort_multipart_upload/5, - calc_multipart_2i_dict/3, + abort_multipart_upload/6, + calc_multipart_2i_dict/2, clean_multipart_unused_parts/2, - complete_multipart_upload/5, complete_multipart_upload/6, - initiate_multipart_upload/5, initiate_multipart_upload/6, + complete_multipart_upload/7, + get_mp_manifest/1, + initiate_multipart_upload/7, + is_multipart_manifest/1, list_all_multipart_uploads/3, - list_multipart_uploads/3, list_multipart_uploads/4, - list_parts/5, list_parts/6, + list_multipart_uploads/4, + list_parts/7, make_content_types_accepted/2, make_content_types_accepted/3, - upload_part/6, upload_part/7, + upload_part/8, upload_part_1blob/2, - upload_part_finished/7, upload_part_finished/8, - is_multipart_manifest/1 - ]). --export([get_mp_manifest/1]). + upload_part_finished/9]). %%%=================================================================== %%% API %%%=================================================================== -calc_multipart_2i_dict(Ms, Bucket, _Key) when is_list(Ms) -> +-spec calc_multipart_2i_dict([lfs_manifest()], binary()) -> + {string(), [{binary(), binary()}]}. +calc_multipart_2i_dict(Ms, Bucket) when is_list(Ms) -> %% According to API Version 2006-03-01, page 139-140, bucket %% owners have some privileges for multipart uploads performed by %% other users, i.e, see those MP uploads via list multipart uploads, @@ -82,13 +81,18 @@ calc_multipart_2i_dict(Ms, Bucket, _Key) when is_list(Ms) -> M?MANIFEST.state == writing], {?MD_INDEX, lists:usort(lists:append(L_2i))}. -abort_multipart_upload(Bucket, Key, UploadId, Caller) -> - abort_multipart_upload(Bucket, Key, UploadId, Caller, nopid). -abort_multipart_upload(Bucket, Key, UploadId, Caller, RcPidUnW) -> - do_part_common(abort, Bucket, Key, UploadId, Caller, [], RcPidUnW). +-spec abort_multipart_upload(binary(), binary(), binary(), + binary(), acl_owner3(), nopid | pid()) -> + ok | {error, term()}. +abort_multipart_upload(Bucket, Key, ObjVsn, UploadId, Caller, RcPidUnW) -> + do_part_common(abort, Bucket, Key, ObjVsn, UploadId, Caller, [], RcPidUnW). -clean_multipart_unused_parts(?MANIFEST{bkey=BKey, props=Props} = Manifest, RcPid) -> +-spec clean_multipart_unused_parts(lfs_manifest(), nopid | pid()) -> + same | updated. +clean_multipart_unused_parts(?MANIFEST{bkey = {Bucket, Key}, + object_version = ObjVsn, + props = Props} = Manifest, RcPid) -> case get_mp_manifest(Manifest) of undefined -> same; @@ -99,16 +103,15 @@ clean_multipart_unused_parts(?MANIFEST{bkey=BKey, props=Props} = Manifest, RcPid same; {false, PartsToDelete} -> _ = try - {Bucket, Key} = BKey, BagId = riak_cs_mb_helper:bag_id_from_manifest(Manifest), - ok = move_dead_parts_to_gc(Bucket, Key, BagId, + ok = move_dead_parts_to_gc(Bucket, Key, ObjVsn, BagId, PartsToDelete, RcPid), - UpdManifest = Manifest?MANIFEST{props=[multipart_clean|Props]}, + UpdManifest = Manifest?MANIFEST{props = [multipart_clean|Props]}, ok = update_manifest_with_confirmation(RcPid, UpdManifest) catch X:Y:ST -> lager:debug("clean_multipart_unused_parts: " - "bkey ~p: ~p ~p @ ~p\n", - [BKey, X, Y, ST]) + "b/key:vsn ~s/~s:~s : ~p ~p @ ~p\n", + [Bucket, Key, ObjVsn, X, Y, ST]) end, %% Return same value to caller, regardless of ok/catch updated; @@ -117,60 +120,27 @@ clean_multipart_unused_parts(?MANIFEST{bkey=BKey, props=Props} = Manifest, RcPid end end. -complete_multipart_upload(Bucket, Key, UploadId, PartETags, Caller) -> - complete_multipart_upload(Bucket, Key, UploadId, PartETags, Caller, nopid). -complete_multipart_upload(Bucket, Key, UploadId, PartETags, Caller, RcPidUnW) -> +-spec complete_multipart_upload(binary(), binary(), binary(), + binary(), binary(), string(), nopid | pid()) -> + {ok, lfs_manifest()} | {error, atom()}. +complete_multipart_upload(Bucket, Key, ObjVsn, UploadId, PartETags, Caller, RcPidUnW) -> Extra = {PartETags}, - do_part_common(complete, Bucket, Key, UploadId, Caller, [{complete, Extra}], + do_part_common(complete, Bucket, Key, ObjVsn, UploadId, Caller, [{complete, Extra}], RcPidUnW). -initiate_multipart_upload(Bucket, Key, ContentType, Owner, Opts) -> - initiate_multipart_upload(Bucket, Key, ContentType, Owner, Opts, nopid). -initiate_multipart_upload(Bucket, Key, ContentType, {_,_,_} = Owner, +-spec initiate_multipart_upload(binary(), binary(), binary(), + binary(), acl_owner3(), proplists:proplist(), nopid | pid()) -> + {ok, binary()} | {error, term()}. +initiate_multipart_upload(Bucket, Key, ObjVsn, ContentType, {_,_,_} = Owner, Opts, RcPidUnW) -> - write_new_manifest(new_manifest(Bucket, Key, ContentType, Owner, Opts), + write_new_manifest(new_manifest(Bucket, Key, ObjVsn, ContentType, Owner, Opts), Opts, RcPidUnW). -make_content_types_accepted(RD, Ctx) -> - make_content_types_accepted(RD, Ctx, unused_callback). - -make_content_types_accepted(RD, Ctx, Callback) -> - make_content_types_accepted(wrq:get_req_header("Content-Type", RD), - RD, - Ctx, - Callback). - -make_content_types_accepted(CT, RD, Ctx, Callback) - when CT =:= undefined; - CT =:= [] -> - make_content_types_accepted("application/octet-stream", RD, Ctx, Callback); -make_content_types_accepted(CT, RD, Ctx=#context{local_context=LocalCtx0}, Callback) -> - %% This was shamelessly ripped out of - %% https://github.com/basho/riak_kv/blob/0d91ca641a309f2962a216daa0cee869c82ffe26/src/riak_kv_wm_object.erl#L492 - {Media, _Params} = mochiweb_util:parse_header(CT), - case string:tokens(Media, "/") of - [_Type, _Subtype] -> - %% accept whatever the user says - LocalCtx = LocalCtx0#key_context{putctype=Media}, - {[{Media, Callback}], RD, Ctx#context{local_context=LocalCtx}}; - _ -> - {[], - wrq:set_resp_header( - "Content-Type", - "text/plain", - wrq:set_resp_body( - ["\"", Media, "\"" - " is not a valid media type" - " for the Content-type header.\n"], - RD)), - Ctx} - end. - -list_multipart_uploads(Bucket, Caller, Opts) -> - list_multipart_uploads(Bucket, Caller, Opts, nopid). +-spec list_multipart_uploads(binary(), acl_owner3(), proplists:proplist(), nopid | pid()) -> + {[lfs_manifest()], [ordsets:ordset()]} | {error, term()}. list_multipart_uploads(Bucket, {_Display, _Canon, CallerKeyId} = Caller, Opts, RcPidUnW) -> case wrap_riak_client(RcPidUnW) of @@ -206,61 +176,39 @@ list_multipart_uploads_with_2ikey(Bucket, Opts, RcPid, Key2i) -> case riak_cs_pbc:get_index_eq(ManifestPbc, HashBucket, Key2i, <<"1">>, [{timeout, Timeout}], [riakc, get_uploads_by_index]) of - {ok, ?INDEX_RESULTS{keys=Names}} -> + {ok, ?INDEX_RESULTS{keys = Names}} -> {ok, list_multipart_uploads2(Bucket, RcPid, Names, Opts)}; Else2 -> Else2 end. -list_parts(Bucket, Key, UploadId, Caller, Opts) -> - list_parts(Bucket, Key, UploadId, Caller, Opts, nopid). -list_parts(Bucket, Key, UploadId, Caller, Opts, RcPidUnW) -> +-spec list_parts(binary(), binary(), binary(), + binary(), acl_owner3(), proplists:proplist(), nopid | pid()) -> + {ok, [part_descr()]} | {error, term()}. +list_parts(Bucket, Key, ObjVsn, UploadId, Caller, Opts, RcPidUnW) -> Extra = {Opts}, - do_part_common(list, Bucket, Key, UploadId, Caller, [{list, Extra}], RcPidUnW). + do_part_common(list, Bucket, Key, ObjVsn, UploadId, Caller, [{list, Extra}], RcPidUnW). -%% @doc --spec new_manifest(binary(), binary(), binary(), acl_owner(), list()) -> lfs_manifest(). -new_manifest(Bucket, Key, ContentType, {_, _, _} = Owner, Opts) -> - UUID = uuid:get_v4(), - %% TODO: add object metadata here, e.g. content-disposition et al. - MetaData = case proplists:get_value(meta_data, Opts) of - undefined -> []; - AsIsHdrs -> AsIsHdrs - end, - M = riak_cs_lfs_utils:new_manifest(Bucket, - Key, - UUID, - 0, - ContentType, - %% we won't know the md5 of a multipart - undefined, - MetaData, - riak_cs_lfs_utils:block_size(), - %% ACL: needs Riak client pid, so we wait - no_acl_yet, - [], - %% Cluster ID and Bag ID are added later - undefined, - undefined), - MpM = ?MULTIPART_MANIFEST{upload_id = UUID, - owner = Owner}, - M?MANIFEST{props = replace_mp_manifest(MpM, M?MANIFEST.props)}. -upload_part(Bucket, Key, UploadId, PartNumber, Size, Caller) -> - upload_part(Bucket, Key, UploadId, PartNumber, Size, Caller, nopid). - -upload_part(Bucket, Key, UploadId, PartNumber, Size, Caller, RcPidUnW) -> - Extra = {Bucket, Key, UploadId, Caller, PartNumber, Size}, - do_part_common(upload_part, Bucket, Key, UploadId, Caller, +-spec upload_part(binary(), binary(), binary(), + binary(), non_neg_integer(), non_neg_integer(), acl_owner3(), pid()) -> + {upload_part_ready, binary(), pid()} | {error, riak_unavailable}. +upload_part(Bucket, Key, ObjVsn, UploadId, PartNumber, Size, Caller, RcPidUnW) -> + Extra = {Bucket, Key, ObjVsn, UploadId, Caller, PartNumber, Size}, + do_part_common(upload_part, Bucket, Key, ObjVsn, UploadId, Caller, [{upload_part, Extra}], RcPidUnW). + +-spec upload_part_1blob(pid(), binary()) -> + {ok, lfs_manifest()}. upload_part_1blob(PutPid, Blob) -> ok = riak_cs_put_fsm:augment_data(PutPid, Blob), {ok, M} = riak_cs_put_fsm:finalize(PutPid, undefined), {ok, M?MANIFEST.content_md5}. + %% Once upon a time, in a naive land far away, I thought that it would %% be sufficient to use each part's UUID as the ETag when the part %% upload was finished, and thus the client would use that UUID to @@ -270,17 +218,71 @@ upload_part_1blob(PutPid, Blob) -> %% must thread the MD5 value through upload_part_finished and update %% the ?MULTIPART_MANIFEST in a mergeable way. {sigh} -upload_part_finished(Bucket, Key, UploadId, _PartNumber, PartUUID, MD5, Caller) -> - upload_part_finished(Bucket, Key, UploadId, _PartNumber, PartUUID, MD5, - Caller, nopid). - -upload_part_finished(Bucket, Key, UploadId, _PartNumber, PartUUID, MD5, +-spec upload_part_finished(binary(), binary(), binary(), + binary(), non_neg_integer(), binary(), term(), acl_owner3(), pid()) -> + {ok, lfs_manifest()} | {error, any()}. +upload_part_finished(Bucket, Key, ObjVsn, + UploadId, _PartNumber, PartUUID, MD5, Caller, RcPidUnW) -> Extra = {PartUUID, MD5}, - do_part_common(upload_part_finished, Bucket, Key, UploadId, + do_part_common(upload_part_finished, Bucket, Key, ObjVsn, UploadId, Caller, [{upload_part_finished, Extra}], RcPidUnW). -write_new_manifest(?MANIFEST{bkey={Bucket, Key}, uuid=UUID}=M, Opts, RcPidUnW) -> + + +-spec is_multipart_manifest(?MANIFEST{}) -> boolean(). +is_multipart_manifest(?MANIFEST{props = Props}) -> + case proplists:get_value(multipart, Props) of + undefined -> + false; + _ -> + true + end. + + +make_content_types_accepted(RD, Ctx) -> + make_content_types_accepted(RD, Ctx, unused_callback). + +make_content_types_accepted(RD, Ctx, Callback) -> + make_content_types_accepted(wrq:get_req_header("Content-Type", RD), + RD, + Ctx, + Callback). + +make_content_types_accepted(CT, RD, Ctx, Callback) + when CT =:= undefined; + CT =:= [] -> + make_content_types_accepted("application/octet-stream", RD, Ctx, Callback); +make_content_types_accepted(CT, RD, Ctx = #context{local_context = LocalCtx0}, Callback) -> + %% This was shamelessly ripped out of + %% https://github.com/basho/riak_kv/blob/0d91ca641a309f2962a216daa0cee869c82ffe26/src/riak_kv_wm_object.erl#L492 + {Media, _Params} = mochiweb_util:parse_header(CT), + case string:tokens(Media, "/") of + [_Type, _Subtype] -> + %% accept whatever the user says + LocalCtx = LocalCtx0#key_context{putctype = Media}, + {[{Media, Callback}], RD, Ctx#context{local_context = LocalCtx}}; + _ -> + {[], + wrq:set_resp_header( + "Content-Type", + "text/plain", + wrq:set_resp_body( + ["\"", Media, "\"" + " is not a valid media type" + " for the Content-type header.\n"], + RD)), + Ctx} + end. + + +%%%=================================================================== +%%% Internal functions +%%%=================================================================== + +write_new_manifest(?MANIFEST{bkey = {Bucket, Key}, + object_version = ObjVsn, + uuid = UUID} = M, Opts, RcPidUnW) -> MpM = get_mp_manifest(M), Owner = MpM?MULTIPART_MANIFEST.owner, case wrap_riak_client(RcPidUnW) of @@ -296,9 +298,9 @@ write_new_manifest(?MANIFEST{bkey={Bucket, Key}, uuid=UUID}=M, Opts, RcPidUnW) - M2 = riak_cs_lfs_utils:set_bag_id(BagId, M), ClusterId = riak_cs_mb_helper:cluster_id(BagId), M3 = M2?MANIFEST{acl = Acl, - cluster_id=ClusterId, - write_start_time=os:timestamp()}, - {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, + cluster_id = ClusterId, + write_start_time = os:timestamp()}, + {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, ObjVsn, ?PID(RcPid)), try ok = riak_cs_manifest_fsm:add_new_manifest(ManiPid, M3), @@ -313,15 +315,44 @@ write_new_manifest(?MANIFEST{bkey={Bucket, Key}, uuid=UUID}=M, Opts, RcPidUnW) - Else end. -%%%=================================================================== -%%% Internal functions -%%%=================================================================== +new_manifest(Bucket, Key, ObjVsn, ContentType, {_, _, _} = Owner, Opts) -> + UUID = uuid:get_v4(), + %% TODO: add object metadata here, e.g. content-disposition et al. + MetaData = case proplists:get_value(meta_data, Opts) of + undefined -> []; + AsIsHdrs -> AsIsHdrs + end, + M = riak_cs_lfs_utils:new_manifest( + Bucket, Key, UUID, + 0, + ContentType, + %% we won't know the md5 of a multipart + undefined, + MetaData, + riak_cs_lfs_utils:block_size(), + %% ACL: needs Riak client pid, so we wait + no_acl_yet, + [], + %% Cluster ID and Bag ID are added later + undefined, + undefined), + MpM = ?MULTIPART_MANIFEST{upload_id = UUID, + owner = Owner}, + {VsnType, M9} = + riak_cs_manifest:link_version( + nopid, Bucket, Key, + M?MANIFEST{props = replace_mp_manifest(MpM, M?MANIFEST.props)}, + ObjVsn), + lager:debug("created mp manifest for ~p version of ~s/~s:~s", [VsnType, Bucket, Key, ObjVsn]), -do_part_common(Op, Bucket, Key, UploadId, {_,_,CallerKeyId} = _Caller, Props, RcPidUnW) -> + M9. + + +do_part_common(Op, Bucket, Key, ObjVsn, UploadId, {_,_,CallerKeyId} = _Caller, Props, RcPidUnW) -> case wrap_riak_client(RcPidUnW) of {ok, RcPid} -> try - case riak_cs_manifest:get_manifests(?PID(RcPid), Bucket, Key) of + case riak_cs_manifest:get_manifests(?PID(RcPid), Bucket, Key, ObjVsn) of {ok, Obj, Manifests} -> case find_manifest_with_uploadid(UploadId, Manifests) of false -> @@ -353,17 +384,20 @@ do_part_common(Op, Bucket, Key, UploadId, {_,_,CallerKeyId} = _Caller, Props, Rc Else end. -do_part_common2(abort, RcPid, M, Obj, _Mpm, _Props) -> - {Bucket, Key} = M?MANIFEST.bkey, +do_part_common2(abort, RcPid, ?MANIFEST{uuid = UUID, + bkey = {Bucket, _Key}}, Obj, _Mpm, _Props) -> case riak_cs_gc:gc_specific_manifests( - [M?MANIFEST.uuid], Obj, Bucket, Key, RcPid) of + [UUID], Obj, Bucket, RcPid) of {ok, _NewObj} -> ok; - Else3 -> - Else3 + Else -> + Else end; do_part_common2(complete, RcPid, - ?MANIFEST{uuid = _UUID, props = MProps} = Manifest, + ?MANIFEST{uuid = _UUID, + bkey = {Bucket, Key}, + object_version = ObjVsn, + props = MProps} = Manifest, _Obj, MpM, Props) -> %% The content_md5 is used by WM to create the ETags header. %% However/fortunately/sigh-of-relief, Amazon's S3 doesn't use @@ -378,8 +412,7 @@ do_part_common2(complete, RcPid, %% BogoMD5 = iolist_to_binary([UUID, "-1"]), {PartETags} = proplists:get_value(complete, Props), try - {Bucket, Key} = Manifest?MANIFEST.bkey, - {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, RcPid), + {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, ObjVsn, RcPid), try {Bytes, OverAllMD5, PartsToKeep, PartsToDelete} = comb_parts(MpM, PartETags), true = enforce_part_size(PartsToKeep), @@ -409,7 +442,7 @@ do_part_common2(complete, RcPid, %% then pass them to the GC monster for immediate %% deletion. BagId = riak_cs_mb_helper:bag_id_from_manifest(NewManifest), - ok = move_dead_parts_to_gc(Bucket, Key, BagId, + ok = move_dead_parts_to_gc(Bucket, Key, ObjVsn, BagId, PartsToDelete, RcPid), MProps3 = [multipart_clean|MProps2], New2Manifest = NewManifest?MANIFEST{props = MProps3}, @@ -450,12 +483,12 @@ do_part_common2(list, _RcPid, _M, _Obj, MpM, Props) -> {ETag, P} <- ETagPs], {ok, Ds}; do_part_common2(upload_part, RcPid, M, _Obj, MpM, Props) -> - {Bucket, Key, _UploadId, _Caller, PartNumber, Size} = + {Bucket, Key, ObjVsn, _UploadId, _Caller, PartNumber, Size} = proplists:get_value(upload_part, Props), BlockSize = riak_cs_lfs_utils:block_size(), BagId = riak_cs_mb_helper:bag_id_from_manifest(M), {ok, PutPid} = riak_cs_put_fsm:start_link( - {Bucket, Key, Size, <<"x-riak/multipart-part">>, + {Bucket, Key, ObjVsn, Size, <<"x-riak/multipart-part">>, orddict:new(), BlockSize, M?MANIFEST.acl, infinity, self(), RcPid}, false, BagId), @@ -466,6 +499,7 @@ do_part_common2(upload_part, RcPid, M, _Obj, MpM, Props) -> PartUUID = riak_cs_put_fsm:get_uuid(PutPid), PM = ?PART_MANIFEST{bucket = Bucket, key = Key, + object_version = ObjVsn, start_time = os:timestamp(), part_number = PartNumber, part_id = PartUUID, @@ -481,6 +515,7 @@ do_part_common2(upload_part, RcPid, M, _Obj, MpM, Props) -> riak_cs_put_fsm:force_stop(PutPid), {error, riak_unavailable} end; + do_part_common2(upload_part_finished, RcPid, M, _Obj, MpM, Props) -> {PartUUID, MD5} = proplists:get_value(upload_part_finished, Props), try @@ -505,40 +540,39 @@ do_part_common2(upload_part_finished, RcPid, M, _Obj, MpM, Props) -> {error, riak_unavailable} end. -update_manifest_with_confirmation(RcPid, Manifest) -> - {Bucket, Key} = Manifest?MANIFEST.bkey, - {m_umwc, {ok, ManiPid}} = {m_umwc, - riak_cs_manifest_fsm:start_link(Bucket, Key, - RcPid)}, + +update_manifest_with_confirmation(RcPid, M = ?MANIFEST{bkey = {Bucket, Key}, + object_version = ObjVsn}) -> + {ok, ManiPid} = + riak_cs_manifest_fsm:start_link(Bucket, Key, ObjVsn, RcPid), try - ok = riak_cs_manifest_fsm:update_manifest_with_confirmation(ManiPid, - Manifest) + ok = riak_cs_manifest_fsm:update_manifest_with_confirmation(ManiPid, M) after ok = riak_cs_manifest_fsm:stop(ManiPid) end. --spec make_2i_key(binary()) -> binary(). + make_2i_key(Bucket) -> make_2i_key2(Bucket, ""). --spec make_2i_key(binary(), acl_owner()) -> binary(). make_2i_key(Bucket, {_, _, OwnerStr}) -> make_2i_key2(Bucket, OwnerStr). --spec make_2i_key2(binary(), string()) -> binary(). make_2i_key2(Bucket, OwnerStr) -> iolist_to_binary(["rcs@", OwnerStr, "@", Bucket, "_bin"]). + +%% TODO: fix wrt object versions list_multipart_uploads2(Bucket, RcPid, Names, Opts) -> FilterFun = fun(K, Acc) -> - filter_uploads_list(Bucket, K, Opts, RcPid, Acc) + filter_uploads_list(Bucket, K, ?LFS_DEFAULT_OBJECT_VERSION, Opts, RcPid, Acc) end, {Manifests, Prefixes} = lists:foldl(FilterFun, {[], ordsets:new()}, Names), {lists:sort(Manifests), ordsets:to_list(Prefixes)}. -filter_uploads_list(Bucket, Key, Opts, RcPid, Acc) -> - multipart_manifests_for_key(Bucket, Key, Opts, Acc, RcPid). +filter_uploads_list(Bucket, Key, Vsn, Opts, RcPid, Acc) -> + multipart_manifests_for_key(Bucket, Key, Vsn, Opts, Acc, RcPid). parameter_filter(M, Acc, _, _, KeyMarker, _) when M?MULTIPART_DESCR.key =< KeyMarker-> @@ -560,7 +594,7 @@ parameter_filter(M, {Manifests, Prefixes}, Prefix, undefined, _, _) -> _ -> {Manifests, Prefixes} end; -parameter_filter(M, {Manifests, Prefixes}=Acc, Prefix, Delimiter, _, _) -> +parameter_filter(M, {Manifests, Prefixes} = Acc, Prefix, Delimiter, _, _) -> PrefixLen = byte_size(Prefix), case M?MULTIPART_DESCR.key of << Prefix:PrefixLen/binary, Rest/binary >> -> @@ -584,10 +618,10 @@ update_keys_and_prefixes({Keys, Prefixes}, _, Prefix, PrefixLen, Group) -> NewPrefix = << Prefix:PrefixLen/binary, Group/binary >>, {Keys, ordsets:add_element(NewPrefix, Prefixes)}. -multipart_manifests_for_key(Bucket, Key, Opts, Acc, RcPid) -> +multipart_manifests_for_key(Bucket, Key, Vsn, Opts, Acc, RcPid) -> ParameterFilter = build_parameter_filter(Opts), Manifests = handle_get_manifests_result( - riak_cs_manifest:get_manifests(RcPid, Bucket, Key)), + riak_cs_manifest:get_manifests(RcPid, Bucket, Key, Vsn)), lists:foldl(ParameterFilter, Acc, Manifests). build_parameter_filter(Opts) -> @@ -607,28 +641,22 @@ handle_get_manifests_result({ok, _Obj, Manifests}) -> [multipart_description(M) || {_, M} <- Manifests, M?MANIFEST.state == writing, - is_multipart_manifest(M)]; -handle_get_manifests_result(_) -> - []. + is_multipart_manifest(M)]. --spec is_multipart_manifest(?MANIFEST{}) -> boolean(). -is_multipart_manifest(?MANIFEST{props=Props}) -> - case proplists:get_value(multipart, Props) of - undefined -> - false; - _ -> - true - end. -spec multipart_description(?MANIFEST{}) -> ?MULTIPART_DESCR{}. -multipart_description(Manifest) -> - MpM = proplists:get_value(multipart, Manifest?MANIFEST.props), +multipart_description(?MANIFEST{bkey = {_, Key}, + uuid = UUID, + props = Props, + created = Created}) -> + ?MULTIPART_MANIFEST{owner = {OwnerDisplay, _, OwnerKeyId}} = + proplists:get_value(multipart, Props), ?MULTIPART_DESCR{ - key = element(2, Manifest?MANIFEST.bkey), - upload_id = Manifest?MANIFEST.uuid, - owner_key_id = element(3, MpM?MULTIPART_MANIFEST.owner), - owner_display = element(1, MpM?MULTIPART_MANIFEST.owner), - initiated = Manifest?MANIFEST.created}. + key = Key, + upload_id = UUID, + owner_key_id = OwnerKeyId, + owner_display = OwnerDisplay, + initiated = Created}. %% @doc Will cause error:{badmatch, {m_ibco, _}} if CallerKeyId does not exist @@ -707,12 +735,10 @@ comb_parts_fold({PartNum, ETag} = K, throw(bad_etag) end. -move_dead_parts_to_gc(Bucket, Key, BagId, PartsToDelete, RcPid) -> +move_dead_parts_to_gc(Bucket, Key, ObjVsn, BagId, PartsToDelete, RcPid) -> PartDelMs = [{P_UUID, riak_cs_lfs_utils:new_manifest( - Bucket, - Key, - P_UUID, + Bucket, Key, ObjVsn, P_UUID, ContentLength, <<"x-delete/now">>, undefined, @@ -859,12 +885,10 @@ comb_parts_test() -> ok. --ifdef(EQC). - -eval_part_sizes_eqc_test() -> - true = eqc:quickcheck(eqc:numtests(500, prop_part_sizes())). +eval_part_sizes_eqc_test() -> + true = proper:quickcheck(numtests(500, prop_part_sizes())). -prop_part_sizes() -> +prop_part_sizes() -> Min = ?MIN_MP_PART_SIZE, Min_1 = Min - 1, MinMinus100 = Min - 100, @@ -875,6 +899,4 @@ prop_part_sizes() false == eval_part_sizes_wrapper(L ++ [Min_1] ++ L ++ [Either]) ). --endif. % EQC - -endif. diff --git a/apps/riak_cs/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl index 4bc0da899..90381b450 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm.erl @@ -69,6 +69,7 @@ timer_ref :: undefined | reference(), bucket :: binary(), key :: binary(), + obj_vsn :: binary(), metadata :: term(), acl :: acl(), manifest :: undefined | lfs_manifest(), @@ -88,18 +89,19 @@ %%% API %%%=================================================================== --spec start_link({binary(), binary(), non_neg_integer(), binary(), +-spec start_link({binary(), binary(), binary(), non_neg_integer(), binary(), term(), pos_integer(), acl(), timeout(), pid(), riak_client()}) -> {ok, pid()} | {error, term()}. start_link(Tuple) when is_tuple(Tuple) -> start_link(Tuple, true, undefined). --spec start_link({binary(), binary(), non_neg_integer(), binary(), +-spec start_link({binary(), binary(), binary(), non_neg_integer(), binary(), term(), pos_integer(), acl(), timeout(), pid(), riak_client()}, boolean(), bag_id()) -> {ok, pid()} | {error, term()}. start_link({_Bucket, _Key, + _OVN, _ContentLength, _ContentType, _Metadata, @@ -107,7 +109,7 @@ start_link({_Bucket, _Acl, _Timeout, _Caller, - _RcPid}=Arg1, + _RcPid} = Arg1, MakeNewManifestP, BagId) -> gen_fsm:start_link(?MODULE, {Arg1, MakeNewManifestP, BagId}, []). @@ -142,11 +144,11 @@ block_written(Pid, BlockID) -> %% so that I can be thinking about how it %% might be implemented. Does it actually %% make things more confusing? --spec init({{binary(), binary(), non_neg_integer(), binary(), +-spec init({{binary(), binary(), binary(), non_neg_integer(), binary(), term(), pos_integer(), acl(), timeout(), pid(), riak_client()}, boolean(), bag_id()}) -> {ok, prepare, #state{}, timeout()}. -init({{Bucket, Key, ContentLength, ContentType, +init({{Bucket, Key, ObjVsn, ContentLength, ContentType, Metadata, BlockSize, Acl, Timeout, Caller, RcPid}, MakeNewManifestP, BagId0}) -> %% We need to do this (the monitor) for two reasons @@ -167,54 +169,55 @@ init({{Bucket, Key, ContentLength, ContentType, _ -> BagId0 end, - {ok, prepare, #state{bucket=Bucket, - key=Key, - md5=Md5, - block_size=BlockSize, - caller=CallerRef, - uuid=UUID, - metadata=Metadata, - acl=Acl, - content_length=ContentLength, - content_type=ContentType, - riak_client=RcPid, - make_new_manifest_p=MakeNewManifestP, - bag_id=BagId, - timeout=Timeout}, + {ok, prepare, #state{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + md5 = Md5, + block_size = BlockSize, + caller = CallerRef, + uuid = UUID, + metadata = Metadata, + acl = Acl, + content_length = ContentLength, + content_type = ContentType, + riak_client = RcPid, + make_new_manifest_p = MakeNewManifestP, + bag_id = BagId, + timeout = Timeout}, 0}. %%-------------------------------------------------------------------- %% %%-------------------------------------------------------------------- -prepare(timeout, State=#state{content_length=0}) -> +prepare(timeout, State = #state{content_length = 0}) -> NewState = prepare(State), Md5 = riak_cs_utils:md5_final(NewState#state.md5), - NewManifest = NewState#state.manifest?MANIFEST{content_md5=Md5, - state=active, - last_block_written_time=os:timestamp()}, - {next_state, done, NewState#state{md5=Md5, manifest=NewManifest}}; + NewManifest = NewState#state.manifest?MANIFEST{content_md5 = Md5, + state = active, + last_block_written_time = os:timestamp()}, + {next_state, done, NewState#state{md5 = Md5, manifest = NewManifest}}; prepare(timeout, State) -> NewState = prepare(State), {next_state, not_full, NewState}. -prepare({finalize, ContentMD5}, From, State=#state{content_length=0}) -> +prepare({finalize, ContentMD5}, From, State = #state{content_length = 0}) -> NewState = prepare(State), Md5 = riak_cs_utils:md5_final(NewState#state.md5), - NewManifest = NewState#state.manifest?MANIFEST{content_md5=Md5, - state=active, - last_block_written_time=os:timestamp()}, - done(finalize, From, NewState#state{md5=Md5, - manifest=NewManifest, - reported_md5=ContentMD5}); + NewManifest = NewState#state.manifest?MANIFEST{content_md5 = Md5, + state = active, + last_block_written_time = os:timestamp()}, + done(finalize, From, NewState#state{md5 = Md5, + manifest = NewManifest, + reported_md5 = ContentMD5}); prepare({get_uuid}, _From, State) -> {reply, State#state.uuid, prepare, State}; prepare({augment_data, NewData}, From, State) -> - #state{content_length=CLength, - num_bytes_received=NumBytesReceived, - current_buffer_size=CurrentBufferSize, - max_buffer_size=MaxBufferSize} = NewState = prepare(State), + #state{content_length = CLength, + num_bytes_received = NumBytesReceived, + current_buffer_size = CurrentBufferSize, + max_buffer_size = MaxBufferSize} = NewState = prepare(State), case handle_chunk(CLength, NumBytesReceived, size(NewData), CurrentBufferSize, MaxBufferSize) of accept -> @@ -232,7 +235,7 @@ not_full({block_written, BlockID, WriterPid}, State) -> NewState = state_from_block_written(BlockID, WriterPid, State), {next_state, not_full, NewState}. -full({block_written, BlockID, WriterPid}, State=#state{reply_pid=Waiter}) -> +full({block_written, BlockID, WriterPid}, State = #state{reply_pid = Waiter}) -> NewState = state_from_block_written(BlockID, WriterPid, State), gen_fsm:reply(Waiter, ok), {next_state, not_full, NewState#state{reply_pid=undefined}}. @@ -241,8 +244,8 @@ all_received({augment_data, <<>>}, State) -> {next_state, all_received, State}; all_received({block_written, BlockID, WriterPid}, State) -> NewState = state_from_block_written(BlockID, WriterPid, State), - Manifest = NewState#state.manifest?MANIFEST{state=active}, - NewState2 = NewState#state{manifest=Manifest}, + Manifest = NewState#state.manifest?MANIFEST{state = active}, + NewState2 = NewState#state{manifest = Manifest}, case ordsets:size(NewState#state.unacked_writes) of 0 -> case State#state.reply_pid of @@ -269,10 +272,10 @@ not_full({get_uuid}, _From, State) -> {reply, State#state.uuid, not_full, State}; not_full({augment_data, NewData}, From, - State=#state{content_length=CLength, - num_bytes_received=NumBytesReceived, - current_buffer_size=CurrentBufferSize, - max_buffer_size=MaxBufferSize}) -> + State = #state{content_length = CLength, + num_bytes_received = NumBytesReceived, + current_buffer_size = CurrentBufferSize, + max_buffer_size = MaxBufferSize}) -> case handle_chunk(CLength, NumBytesReceived, size(NewData), CurrentBufferSize, MaxBufferSize) of @@ -290,13 +293,13 @@ all_received({finalize, ContentMD5}, From, State) -> %% 1. stash the From pid into our %% state so that we know to reply %% later with the finished manifest - {next_state, all_received, State#state{reply_pid=From, - reported_md5=ContentMD5}}. + {next_state, all_received, State#state{reply_pid = From, + reported_md5 = ContentMD5}}. -done({finalize, ReportedMD5}, _From, State=#state{md5=MD5}) -> +done({finalize, ReportedMD5}, _From, State = #state{md5 = MD5}) -> done(finalize, is_digest_valid(MD5, ReportedMD5), _From, State); -done(finalize, _From, State=#state{md5=MD5, - reported_md5=ReportedMD5}) -> +done(finalize, _From, State = #state{md5 = MD5, + reported_md5 = ReportedMD5}) -> done(finalize, is_digest_valid(MD5, ReportedMD5), _From, State). @@ -351,8 +354,8 @@ handle_event(_Event, StateName, State) -> handle_sync_event(current_state, _From, StateName, State) -> Reply = {StateName, State}, {reply, Reply, StateName, State}; -handle_sync_event(force_stop, _From, _StateName, State = #state{mani_pid=ManiPid, - uuid=UUID}) -> +handle_sync_event(force_stop, _From, _StateName, State = #state{mani_pid = ManiPid, + uuid = UUID}) -> Res = riak_cs_manifest_fsm:gc_specific_manifest(ManiPid, UUID), lager:debug("Manifest collection on upload failure: ~p", [Res]), {stop, normal, Res, State}; @@ -363,8 +366,8 @@ handle_sync_event(_Event, _From, StateName, State) -> %%-------------------------------------------------------------------- %% %%-------------------------------------------------------------------- -handle_info(save_manifest, StateName, State=#state{mani_pid=ManiPid, - manifest=Manifest}) -> +handle_info(save_manifest, StateName, State=#state{mani_pid = ManiPid, + manifest = Manifest}) -> %% 1. save the manifest maybe_update_manifest(ManiPid, Manifest), TRef = erlang:send_after(60000, self(), save_manifest), @@ -372,14 +375,14 @@ handle_info(save_manifest, StateName, State=#state{mani_pid=ManiPid, %% TODO: %% add a clause for handling down %% messages from the blocks gen_servers -handle_info({'DOWN', CallerRef, process, _Pid, Reason}, _StateName, State=#state{caller=CallerRef}) -> +handle_info({'DOWN', CallerRef, process, _Pid, Reason}, _StateName, State = #state{caller = CallerRef}) -> {stop, Reason, State}. %%-------------------------------------------------------------------- %% %%-------------------------------------------------------------------- -terminate(_Reason, _StateName, #state{mani_pid=ManiPid, - all_writer_pids=BlockServerPids}) -> +terminate(_Reason, _StateName, #state{mani_pid = ManiPid, + all_writer_pids = BlockServerPids}) -> riak_cs_manifest_fsm:maybe_stop_manifest_fsm(ManiPid), riak_cs_block_server:maybe_stop_block_servers(BlockServerPids), ok. @@ -396,36 +399,35 @@ code_change(_OldVsn, StateName, State, _Extra) -> %% @doc Handle expensive initialization operations required for the put_fsm. -spec prepare(#state{}) -> #state{}. -prepare(State=#state{bucket=Bucket, - key=Key, - block_size=BlockSize, - uuid=UUID, - content_length=ContentLength, - content_type=ContentType, - metadata=Metadata, - acl=Acl, - riak_client=RcPid, - make_new_manifest_p=MakeNewManifestP, - bag_id=BagId}) +prepare(State=#state{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + block_size = BlockSize, + uuid = UUID, + content_length = ContentLength, + content_type = ContentType, + metadata = Metadata, + acl = Acl, + riak_client = RcPid, + make_new_manifest_p = MakeNewManifestP, + bag_id = BagId}) when is_integer(ContentLength), ContentLength >= 0 -> %% 1. start the manifest_fsm proc {ok, ManiPid} = maybe_riak_cs_manifest_fsm_start_link( - MakeNewManifestP, Bucket, Key, RcPid), + MakeNewManifestP, Bucket, Key, ObjVsn, RcPid), ClusterID = riak_cs_mb_helper:cluster_id(BagId), - Manifest = riak_cs_lfs_utils:new_manifest(Bucket, - Key, - UUID, - ContentLength, - ContentType, - %% we don't know the md5 yet - undefined, - Metadata, - BlockSize, - Acl, - [], - ClusterID, - BagId), - NewManifest = Manifest?MANIFEST{write_start_time=os:timestamp()}, + + {VsnType, Manifest} = + riak_cs_manifest:link_version( + RcPid, Bucket, Key, + riak_cs_lfs_utils:new_manifest( + Bucket, Key, UUID, + ContentLength, ContentType, undefined, %% we don't know the md5 yet + Metadata, BlockSize, Acl, [], ClusterID, BagId), + ObjVsn), + lager:debug("created manifest for ~p version of ~s/~s:~s", [VsnType, Bucket, Key, ObjVsn]), + + NewManifest = Manifest?MANIFEST{write_start_time = os:timestamp()}, WriterPids = case ContentLength of 0 -> @@ -449,12 +451,12 @@ prepare(State=#state{bucket=Bucket, %% it be? TRef = erlang:send_after(60000, self(), save_manifest), ok = maybe_add_new_manifest(ManiPid, NewManifest), - State#state{manifest=NewManifest, - timer_ref=TRef, - mani_pid=ManiPid, - max_buffer_size=MaxBufferSize, - all_writer_pids=WriterPids, - free_writers=FreeWriters}. + State#state{manifest = NewManifest, + timer_ref = TRef, + mani_pid = ManiPid, + max_buffer_size = MaxBufferSize, + all_writer_pids = WriterPids, + free_writers = FreeWriters}. handle_chunk(ContentLength, NumBytesReceived, NewDataSize, CurrentBufferSize, MaxBufferSize) -> if @@ -644,10 +646,10 @@ handle_receiving_last_chunk(NewData, State=#state{buffer_queue=BufferQueue, Reply = ok, {reply, Reply, all_received, NewStateData}. -maybe_riak_cs_manifest_fsm_start_link(false, _Bucket, _Key, _RcPid) -> +maybe_riak_cs_manifest_fsm_start_link(false, _Bucket, _Key, _ObjVsn, _RcPid) -> {ok, undefined}; -maybe_riak_cs_manifest_fsm_start_link(true, Bucket, Key, RcPid) -> - riak_cs_manifest_fsm:start_link(Bucket, Key, RcPid). +maybe_riak_cs_manifest_fsm_start_link(true, Bucket, Key, ObjVsn, RcPid) -> + riak_cs_manifest_fsm:start_link(Bucket, Key, ObjVsn, RcPid). maybe_add_new_manifest(undefined, _NewManifest) -> ok; diff --git a/apps/riak_cs/src/riak_cs_put_fsm_sup.erl b/apps/riak_cs/src/riak_cs_put_fsm_sup.erl index f76953d2d..ed8da4c1a 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm_sup.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm_sup.erl @@ -46,7 +46,7 @@ start_link() -> %% @doc Start a `riak_cs_put_fsm' child process. -spec start_put_fsm(node(), - [{binary(), binary(), non_neg_integer(), binary(), + [{binary(), binary(), binary(), non_neg_integer(), binary(), term(), pos_integer(), acl(), timeout(), pid(), pid()}])-> {ok, pid()} | {error, term()}. start_put_fsm(Node, ArgList) -> diff --git a/apps/riak_cs/src/riak_cs_s3_response.erl b/apps/riak_cs/src/riak_cs_s3_response.erl index dd4466d89..073b15eb5 100644 --- a/apps/riak_cs/src/riak_cs_s3_response.erl +++ b/apps/riak_cs/src/riak_cs_s3_response.erl @@ -287,8 +287,14 @@ error_response(ErrorTag, StatusCode, Code, Message, RD, Ctx) -> error_resource(Tag, RD) when Tag =:= no_copy_source_key; Tag =:= copy_source_access_denied-> - {B, K} = riak_cs_copy_object:get_copy_source(RD), - <<$/, B/binary, $/, K/binary>>; + {B, K, V} = riak_cs_copy_object:get_copy_source(RD), + case V of + ?LFS_DEFAULT_OBJECT_VERSION -> + <<$/, B/binary, $/, K/binary>>; + _ -> + <<$/, B/binary, $/, K/binary, $/, V/binary>> + end; + error_resource(_Tag, RD) -> {OrigResource, _} = riak_cs_s3_rewrite:original_resource(RD), OrigResource. diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index b6660c227..e856b9c8e 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -29,7 +29,7 @@ etag_from_binary_no_quotes/1, close_riak_connection/1, close_riak_connection/2, - delete_object/3, + delete_object/4, encode_term/1, has_tombstone/1, map_keys_and_manifests/3, @@ -54,7 +54,7 @@ riak_connection/1, safe_base64url_decode/1, safe_list_to_integer/1, - set_object_acl/5, + set_object_acl/6, second_resolution_timestamp/1, timestamp_to_seconds/1, timestamp_to_milliseconds/1, @@ -160,10 +160,10 @@ close_riak_connection(Pool, Pid) -> %% Garbage collection. Otherwise returns an error. Note, %% {error, notfound} counts as success in this case, %% with the list of UUIDs being []. --spec delete_object(binary(), binary(), riak_client()) -> +-spec delete_object(binary(), binary(), binary(), riak_client()) -> {ok, [binary()]} | {error, term()}. -delete_object(Bucket, Key, RcPid) -> - riak_cs_gc:gc_active_manifests(Bucket, Key, RcPid). +delete_object(Bucket, Key, ObjVsn, RcPid) -> + riak_cs_gc:gc_active_manifests(Bucket, Key, ObjVsn, RcPid). -spec encode_term(term()) -> binary(). encode_term(Term) -> @@ -375,10 +375,10 @@ riak_connection(Pool) -> %% @doc Set the ACL for an object. Existing ACLs are only %% replaced, they cannot be updated. --spec set_object_acl(binary(), binary(), lfs_manifest(), acl(), riak_client()) -> +-spec set_object_acl(binary(), binary(), binary(), lfs_manifest(), acl(), riak_client()) -> ok | {error, term()}. -set_object_acl(Bucket, Key, Manifest, Acl, RcPid) -> - {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, RcPid), +set_object_acl(Bucket, Key, Vsn, Manifest, Acl, RcPid) -> + {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, Vsn, RcPid), try _ActiveMfst = riak_cs_manifest_fsm:get_active_manifest(ManiPid), UpdManifest = Manifest?MANIFEST{acl=Acl}, @@ -430,7 +430,8 @@ update_obj_value(Obj, Value) when is_binary(Value) -> %% we'll take care of calling `to_bucket_name' -spec key_exists(riak_client(), binary(), binary()) -> boolean(). key_exists(RcPid, Bucket, Key) -> - key_exists_handle_get_manifests(riak_cs_manifest:get_manifests(RcPid, Bucket, Key)). + key_exists_handle_get_manifests( + riak_cs_manifest:get_manifests(RcPid, Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION)). -spec big_end_key() -> binary(). diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl index 7a054615c..7588ad05f 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl @@ -70,7 +70,6 @@ process_post(RD, Ctx=#context{bucket=Bucket, UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"multiple_delete">>, [], [UserName, Bucket]), - handle_with_bucket_obj(riak_cs_bucket:fetch_bucket_object(Bucket, RcPid), RD, Ctx). handle_with_bucket_obj({error, notfound}, RD, @@ -91,11 +90,11 @@ handle_with_bucket_obj({ok, BucketObj}, case parse_body(binary_to_list(wrq:req_body(RD))) of {error, _} = Error -> ResponseMod:api_error(Error, RD, Ctx); - {ok, BinKeys} when length(BinKeys) > 1000 -> + {ok, Keys} when length(Keys) > 1000 -> %% Delete Multiple Objects accepts a request to delete up to 1000 Objects. ResponseMod:api_error(malformed_xml, RD, Ctx); - {ok, BinKeys} -> - lager:debug("deleting keys at ~p: ~p", [Bucket, BinKeys]), + {ok, Keys} -> + lager:debug("deleting keys at ~p: ~p", [Bucket, Keys]), Policy = riak_cs_wm_utils:translate_bucket_policy(PolicyMod, BucketObj), CanonicalId = riak_cs_wm_utils:extract_canonical_id(User), @@ -103,12 +102,12 @@ handle_with_bucket_obj({ok, BucketObj}, %% map: keys => delete_results => xmlElements Results = - lists:map(fun(BinKey) -> - handle_key(RcPid, Bucket, BinKey, + lists:map(fun({Key, Vsn} = VKey) -> + handle_key(RcPid, Bucket, VKey, check_permission( - RcPid, Bucket, BinKey, + RcPid, Bucket, Key, Vsn, Access0, CanonicalId, Policy, PolicyMod, BucketObj)) - end, BinKeys), + end, Keys), %% xmlDoc => return body. Xml = riak_cs_xml:to_xml([{'DeleteResult', [{'xmlns', ?S3_XMLNS}], Results}]), @@ -118,12 +117,12 @@ handle_with_bucket_obj({ok, BucketObj}, {true, RD2, Ctx} end. --spec check_permission(riak_client(), binary(), binary(), +-spec check_permission(riak_client(), binary(), binary(), binary(), access(), string(), policy()|undefined, atom(), riakc_obj:riakc_obj()) -> ok | {error, access_denied|notfound|no_active_manifest}. -check_permission(RcPid, Bucket, Key, +check_permission(RcPid, Bucket, Key, Vsn, Access0, CanonicalId, Policy, PolicyMod, BucketObj) -> - case riak_cs_manifest:fetch(RcPid, Bucket, Key) of + case riak_cs_manifest:fetch(RcPid, Bucket, Key, Vsn) of {ok, Manifest} -> ObjectAcl = riak_cs_manifest:object_acl(Manifest), Access = Access0#access_v1{key=Key, method='DELETE', target=object}, @@ -139,46 +138,57 @@ check_permission(RcPid, Bucket, Key, end. %% bucket/key => delete => xml indicating each result --spec handle_key(riak_client(), binary(), binary(), +-spec handle_key(riak_client(), binary(), {binary(), binary()}, ok | {error, access_denied|notfound|no_active_manifest}) -> {'Deleted', list(tuple())} | {'Error', list(tuple())}. -handle_key(_RcPid, _Bucket, Key, {error, notfound}) -> - %% delete is RESTful, thus this is success - {'Deleted', [{'Key', [Key]}]}; -handle_key(_RcPid, _Bucket, Key, {error, no_active_manifest}) -> +handle_key(_RcPid, _Bucket, {Key, Vsn}, {error, notfound}) -> %% delete is RESTful, thus this is success - {'Deleted', [{'Key', [Key]}]}; -handle_key(_RcPid, _Bucket, Key, {error, Error}) -> + {'Deleted', [{'Key', [Key]}, {'VersionId', [Vsn]}]}; +handle_key(_RcPid, _Bucket, {Key, Vsn}, {error, no_active_manifest}) -> + {'Deleted', [{'Key', [Key]}, {'VersionId', [Vsn]}]}; +handle_key(_RcPid, _Bucket, {Key, Vsn}, {error, Error}) -> {'Error', [{'Key', [Key]}, + {'VersionId', [Vsn]}, {'Code', [riak_cs_s3_response:error_code(Error)]}, {'Message', [riak_cs_s3_response:error_message(Error)]}]}; -handle_key(RcPid, Bucket, Key, ok) -> - case riak_cs_utils:delete_object(Bucket, Key, RcPid) of +handle_key(RcPid, Bucket, {Key, Vsn}, ok) -> + case riak_cs_utils:delete_object(Bucket, Key, Vsn, RcPid) of {ok, _UUIDsMarkedforDelete} -> - {'Deleted', [{'Key', [Key]}]}; + {'Deleted', [{'Key', [Key]}, {'VersionId', [Vsn]}]}; Error -> - handle_key(RcPid, Bucket, Key, Error) + handle_key(RcPid, Bucket, {Key, Vsn}, Error) end. --spec parse_body(string()) -> {ok, [binary()]} | {error, malformed_xml}. parse_body(Body) -> case riak_cs_xml:scan(Body) of {ok, #xmlElement{name='Delete'} = ParsedData} -> - Keys = [ unicode:characters_to_binary( - [ T#xmlText.value || T <- xmerl_xpath:string("//Key/text()", Node)] - ) || Node <- xmerl_xpath:string("//Delete/Object/node()", ParsedData), - is_record(Node, xmlElement) ], - %% TODO: handle version id - %% VersionIds = [riak_cs_utils:hexlist_to_binary(string:strip(T#xmlText.value, both, $")) || - %% T <- xmerl_xpath:string("//Delete/Object/VersionId/text()", ParsedData)], - {ok, Keys}; + KKVV = [ key_and_version_from_xml_node(Node) + || Node <- xmerl_xpath:string("//Delete/Object", ParsedData), + is_record(Node, xmlElement) ], + case lists:member(malformed_xml, KKVV) of + true -> + {error, malformed_xml}; + false -> + {ok, KKVV} + end; {ok, _ParsedData} -> {error, malformed_xml}; Error -> Error end. +key_and_version_from_xml_node(Node) -> + case {xmerl_xpath:string("//Key/text()", Node), + xmerl_xpath:string("//VersionId/text()", Node)} of + {[#xmlText{value = K}], [#xmlText{value = V}]} -> + {unicode:characters_to_binary(K), unicode:characters_to_binary(V)}; + {[#xmlText{value = K}], _} -> + {unicode:characters_to_binary(K), ?LFS_DEFAULT_OBJECT_VERSION}; + _ -> + malformed_xml + end. + -ifdef(TEST). parse_body_test() -> diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index 69b98bedc..cb65a4f5a 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -169,10 +169,13 @@ produce_body(RD, Ctx=#context{rc_pool=RcPool, start_time=StartTime, user=User}, {Start, End}, RespRange) -> - #key_context{get_fsm_pid=GetFsmPid, manifest=Mfst} = LocalCtx, - {Bucket, File} = Mfst?MANIFEST.bkey, - ResourceLength = Mfst?MANIFEST.content_length, - BFile_str = [Bucket, $,, File], + #key_context{get_fsm_pid = GetFsmPid, + manifest = ?MANIFEST{bkey = {Bucket, File}, + created = Created, + content_length = ResourceLength, + object_version = ObjVsn, + metadata = Metadata} = Mfst} = LocalCtx, + BFile_str = bfile_str(Bucket, File, ObjVsn), UserName = riak_cs_wm_utils:extract_name(User), Method = wrq:method(RD), Func = case Method of @@ -180,13 +183,13 @@ produce_body(RD, Ctx=#context{rc_pool=RcPool, _ -> <<"object_get">> end, riak_cs_dtrace:dt_object_entry(?MODULE, Func, [], [UserName, BFile_str]), - LastModified = riak_cs_wm_utils:to_rfc_1123(Mfst?MANIFEST.created), + LastModified = riak_cs_wm_utils:to_rfc_1123(Created), ETag = riak_cs_manifest:etag(Mfst), NewRQ1 = lists:foldl(fun({K, V}, Rq) -> wrq:set_resp_header(K, V, Rq) end, RD, [{"ETag", ETag}, {"Last-Modified", LastModified} - ] ++ Mfst?MANIFEST.metadata), + ] ++ Metadata), NewRQ2 = wrq:set_resp_range(RespRange, NewRQ1), NoBody = Method =:= 'HEAD' orelse ResourceLength =:= 0, {NewCtx, StreamBody} = @@ -233,15 +236,15 @@ parse_range(RD, ResourceLength) -> -spec delete_resource(#wm_reqdata{}, #context{}) -> {true, #wm_reqdata{}, #context{}}. delete_resource(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> #key_context{bucket=Bucket, - key=Key, - get_fsm_pid=GetFsmPid} = LocalCtx, - BFile_str = [Bucket, $,, Key], + key = Key, + obj_vsn = ObjVsn, + get_fsm_pid = GetFsmPid} = LocalCtx, + BFile_str = bfile_str(Bucket, Key, ObjVsn), UserName = riak_cs_wm_utils:extract_name(Ctx#context.user), riak_cs_dtrace:dt_object_entry(?MODULE, <<"object_delete">>, [], [UserName, BFile_str]), riak_cs_get_fsm:stop(GetFsmPid), - BinKey = list_to_binary(Key), - DeleteObjectResponse = riak_cs_utils:delete_object(Bucket, BinKey, RcPid), + DeleteObjectResponse = riak_cs_utils:delete_object(Bucket, Key, ObjVsn, RcPid), handle_delete_object(DeleteObjectResponse, UserName, BFile_str, RD, Ctx). %% @private @@ -295,11 +298,11 @@ accept_body(RD, Ctx=#context{riak_client=RcPid, response_module=ResponseMod}) when LocalCtx#key_context.update_metadata == true -> %% zero-body put copy - just updating metadata - #key_context{bucket=Bucket, key=KeyStr, manifest=Mfst} = LocalCtx, + #key_context{bucket=Bucket, key=Key, obj_vsn = ObjVsn, manifest=Mfst} = LocalCtx, Acl = Mfst?MANIFEST.acl, NewAcl = Acl?ACL{creation_time = erlang:timestamp()}, {ContentType, Metadata} = riak_cs_copy_object:new_metadata(Mfst, RD), - case riak_cs_utils:set_object_acl(Bucket, list_to_binary(KeyStr), + case riak_cs_utils:set_object_acl(Bucket, Key, ObjVsn, Mfst?MANIFEST{metadata=Metadata, content_type=ContentType}, NewAcl, RcPid) of ok -> @@ -315,9 +318,9 @@ accept_body(RD, #context{response_module=ResponseMod} = Ctx) -> handle_normal_put(RD, Ctx); {error, _} = Err -> ResponseMod:api_error(Err, RD, Ctx); - {SrcBucket, SrcKey} -> + {SrcBucket, SrcKey, SrcObjVsn} -> handle_copy_put(RD, Ctx#context{stats_key=[object, put_copy]}, - SrcBucket, SrcKey) + SrcBucket, SrcKey, SrcObjVsn) end. -spec handle_normal_put(#wm_reqdata{}, #context{}) -> @@ -327,13 +330,14 @@ handle_normal_put(RD, Ctx) -> user=User, acl=ACL, riak_client=RcPid} = Ctx, - #key_context{bucket=Bucket, - key=Key, - putctype=ContentType, - size=Size, - get_fsm_pid=GetFsmPid} = LocalCtx, - - BFile_str = [Bucket, $,, Key], + #key_context{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + putctype = ContentType, + size = Size, + get_fsm_pid = GetFsmPid} = LocalCtx, + + BFile_str = bfile_str(Bucket, Key, ObjVsn), UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_object_entry(?MODULE, <<"object_put">>, [], [UserName, BFile_str]), @@ -341,7 +345,7 @@ handle_normal_put(RD, Ctx) -> Metadata = riak_cs_wm_utils:extract_user_metadata(RD), BlockSize = riak_cs_lfs_utils:block_size(), - Args = [{Bucket, list_to_binary(Key), Size, list_to_binary(ContentType), + Args = [{Bucket, Key, ObjVsn, Size, list_to_binary(ContentType), Metadata, BlockSize, ACL, timer:seconds(60), self(), RcPid}], {ok, Pid} = riak_cs_put_fsm_sup:start_put_fsm(node(), Args), try @@ -358,16 +362,16 @@ handle_normal_put(RD, Ctx) -> end. %% @doc the head is PUT copy path --spec handle_copy_put(#wm_reqdata{}, #context{}, binary(), binary()) -> +-spec handle_copy_put(#wm_reqdata{}, #context{}, binary(), binary(), binary()) -> {boolean()|{halt, integer()}, #wm_reqdata{}, #context{}}. -handle_copy_put(RD, Ctx, SrcBucket, SrcKey) -> +handle_copy_put(RD, Ctx, SrcBucket, SrcKey, SrcObjVsn) -> #context{local_context=LocalCtx, response_module=ResponseMod, acl=Acl, riak_client=RcPid} = Ctx, %% manifest is always notfound|undefined here - #key_context{bucket=Bucket, key=KeyStr, get_fsm_pid=GetFsmPid} = LocalCtx, - Key = list_to_binary(KeyStr), + #key_context{bucket = Bucket, key = Key, obj_vsn = ObjVsn, + get_fsm_pid = GetFsmPid} = LocalCtx, {ok, ReadRcPid} = riak_cs_riak_client:checkout(), try @@ -375,7 +379,7 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey) -> %% You'll also need permission to access source object, but RD and %% Ctx is of target object. Then access permission to source %% object has to be checked here. First of all, get manifest. - case riak_cs_manifest:fetch(ReadRcPid, SrcBucket, SrcKey) of + case riak_cs_manifest:fetch(ReadRcPid, SrcBucket, SrcKey, SrcObjVsn) of {ok, SrcManifest} -> EntityTooLarge = SrcManifest?MANIFEST.content_length > riak_cs_lfs_utils:max_content_len(), @@ -388,14 +392,14 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey) -> {false, _, _} -> %% start copying - _ = lager:debug("copying! > ~s ~s => ~s ~s via ~p", - [SrcBucket, SrcKey, Bucket, Key, ReadRcPid]), + _ = lager:debug("copying! > ~s/~s/~s => ~s/~s/~s via ~p", + [SrcBucket, SrcKey, SrcObjVsn, Bucket, Key, ObjVsn, ReadRcPid]), {ContentType, Metadata} = riak_cs_copy_object:new_metadata(SrcManifest, RD), NewAcl = Acl?ACL{creation_time=os:timestamp()}, {ok, PutFsmPid} = riak_cs_copy_object:start_put_fsm( - Bucket, Key, SrcManifest?MANIFEST.content_length, + Bucket, Key, ObjVsn, SrcManifest?MANIFEST.content_length, ContentType, Metadata, NewAcl, RcPid), %% Prepare for connection loss or client close @@ -444,9 +448,10 @@ accept_streambody(RD, user=User}, Pid, {Data, Next}) -> - #key_context{bucket=Bucket, - key=Key} = LocalCtx, - BFile_str = [Bucket, $,, Key], + #key_context{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn} = LocalCtx, + BFile_str = bfile_str(Bucket, Key, ObjVsn), UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_wm_entry(?MODULE, <<"accept_streambody">>, [size(Data)], [UserName, BFile_str]), riak_cs_put_fsm:augment_data(Pid, Data), @@ -461,14 +466,16 @@ accept_streambody(RD, %% for the user who is doing this PUT -spec finalize_request(#wm_reqdata{}, #context{}, pid()) -> {{halt, 200}, #wm_reqdata{}, #context{}}. finalize_request(RD, - Ctx=#context{local_context=LocalCtx, - response_module=ResponseMod, - user=User}, + Ctx=#context{local_context = LocalCtx, + response_module = ResponseMod, + user = User, + riak_client = _RcPid}, Pid) -> - #key_context{bucket=Bucket, - key=Key, - size=S} = LocalCtx, - BFile_str = [Bucket, $,, Key], + #key_context{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + size = S} = LocalCtx, + BFile_str = bfile_str(Bucket, Key, ObjVsn), UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_wm_entry(?MODULE, <<"finalize_request">>, [S], [UserName, BFile_str]), ContentMD5 = wrq:get_req_header("content-md5", RD), @@ -485,6 +492,7 @@ finalize_request(RD, {error, Reason} -> ResponseMod:api_error(Reason, RD, Ctx) end, + riak_cs_dtrace:dt_wm_return(?MODULE, <<"finalize_request">>, [S], [UserName, BFile_str]), riak_cs_dtrace:dt_object_return(?MODULE, <<"object_put">>, [S], [UserName, BFile_str]), Response. @@ -519,3 +527,8 @@ zero_length_metadata_update_p(0, RD) -> end; zero_length_metadata_update_p(_, _) -> false. + +bfile_str(B, K, ?LFS_DEFAULT_OBJECT_VERSION) -> + [B, $,, K]; +bfile_str(B, K, V) -> + [B, $,, K, $,, V]. diff --git a/apps/riak_cs/src/riak_cs_wm_object_acl.erl b/apps/riak_cs/src/riak_cs_wm_object_acl.erl index c74007b71..bfd38b2d1 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_acl.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_acl.erl @@ -166,18 +166,19 @@ produce_body(RD, Ctx=#context{local_context=LocalCtx, -spec accept_body(term(), term()) -> {boolean() | {halt, term()}, term(), term()}. -accept_body(RD, Ctx=#context{local_context=#key_context{get_fsm_pid=GetFsmPid, - manifest=Mfst, - key=KeyStr, - bucket=Bucket}, - user=User, - acl=AclFromHeadersOrDefault, - requested_perm='WRITE_ACP', - riak_client=RcPid}) when Bucket /= undefined, - KeyStr /= undefined, - Mfst /= undefined, - RcPid /= undefined -> - BFile_str = [Bucket, $,, KeyStr], +accept_body(RD, Ctx = #context{local_context = #key_context{get_fsm_pid = GetFsmPid, + manifest = Mfst, + key = Key, + obj_vsn = Vsn, + bucket = Bucket}, + user = User, + acl = AclFromHeadersOrDefault, + requested_perm = 'WRITE_ACP', + riak_client = RcPid}) when Bucket /= undefined, + Key /= undefined, + Mfst /= undefined, + RcPid /= undefined -> + BFile_str = bfile_str(Bucket, Key, Vsn), UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_object_entry(?MODULE, <<"object_put_acl">>, [], [UserName, BFile_str]), @@ -197,8 +198,7 @@ accept_body(RD, Ctx=#context{local_context=#key_context{get_fsm_pid=GetFsmPid, case AclRes of {ok, Acl} -> %% Write new ACL to active manifest - Key = list_to_binary(KeyStr), - case riak_cs_utils:set_object_acl(Bucket, Key, Mfst, Acl, RcPid) of + case riak_cs_utils:set_object_acl(Bucket, Key, Vsn, Mfst, Acl, RcPid) of ok -> riak_cs_dtrace:dt_object_return(?MODULE, <<"object_acl_put">>, [200], [UserName, BFile_str]), @@ -215,3 +215,8 @@ accept_body(RD, Ctx=#context{local_context=#key_context{get_fsm_pid=GetFsmPid, [Code], [UserName, BFile_str]), riak_cs_s3_response:api_error(Reason2, RD, Ctx) end. + +bfile_str(B, K, ?LFS_DEFAULT_OBJECT_VERSION) -> + [B, $,, K]; +bfile_str(B, K, V) -> + [B, $,, K, $,, V]. diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload.erl b/apps/riak_cs/src/riak_cs_wm_object_upload.erl index 5c85bec81..020a8bdec 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_upload.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_upload.erl @@ -92,8 +92,11 @@ process_post(RD, Ctx) -> HaltResponse end. -process_post_helper(RD, Ctx=#context{riak_client=RcPid, local_context=LocalCtx, acl=ACL}) -> - #key_context{bucket=Bucket, key=Key} = LocalCtx, +process_post_helper(RD, Ctx = #context{riak_client = RcPid, + local_context = #key_context{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn}, + acl = ACL}) -> ContentType = try list_to_binary(wrq:get_req_header("Content-Type", RD)) catch error:badarg -> @@ -104,9 +107,10 @@ process_post_helper(RD, Ctx=#context{riak_client=RcPid, local_context=LocalCtx, Metadata = riak_cs_wm_utils:extract_user_metadata(RD), Opts = [{acl, ACL}, {meta_data, Metadata}], - case riak_cs_mp_utils:initiate_multipart_upload(Bucket, list_to_binary(Key), - ContentType, User, Opts, - RcPid) of + case riak_cs_mp_utils:initiate_multipart_upload( + Bucket, Key, ObjVsn, + ContentType, User, Opts, + RcPid) of {ok, UploadId} -> XmlDoc = {'InitiateMultipartUploadResult', [{'xmlns', "http://s3.amazonaws.com/doc/2006-03-01/"}], diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl index 3e94ecec5..55f40bb2a 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl @@ -110,8 +110,10 @@ allowed_methods() -> post_is_create(RD, Ctx) -> {false, RD, Ctx}. -process_post(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> - #key_context{bucket=Bucket, key=Key} = LocalCtx, +process_post(RD, Ctx = #context{riak_client = RcPid, + local_context = #key_context{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn}}) -> User = riak_cs_user:to_3tuple(Ctx#context.user), UploadId64 = re:replace(wrq:path(RD), ".*/uploads/", "", [{return, binary}]), Body = binary_to_list(wrq:req_body(RD)), @@ -125,7 +127,7 @@ process_post(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> riak_cs_s3_response:api_error(malformed_xml, RD, Ctx); {PartETags, UploadId} -> case riak_cs_mp_utils:complete_multipart_upload( - Bucket, list_to_binary(Key), UploadId, PartETags, User, + Bucket, Key, ObjVsn, UploadId, PartETags, User, RcPid) of {ok, NewManifest} -> ETag = riak_cs_manifest:etag(NewManifest), @@ -167,11 +169,13 @@ delete_resource(RD, Ctx=#context{local_context=LocalCtx, {'EXIT', _Reason} -> riak_cs_s3_response:no_such_upload_response({raw, ReqUploadId}, RD, Ctx); UploadId -> - #key_context{bucket=Bucket, key=KeyStr} = LocalCtx, - Key = list_to_binary(KeyStr), + #key_context{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn} = LocalCtx, User = riak_cs_user:to_3tuple(Ctx#context.user), - case riak_cs_mp_utils:abort_multipart_upload(Bucket, Key, UploadId, - User, RcPid) of + case riak_cs_mp_utils:abort_multipart_upload( + Bucket, Key, ObjVsn, UploadId, + User, RcPid) of ok -> {true, RD, Ctx}; {error, notfound} -> @@ -244,10 +248,10 @@ validate_copy_header(RD, #context{response_module=ResponseMod, undefined -> validate_part_size(RD, Ctx, LocalCtx#key_context.size, undefined, undefined); - {SrcBucket, SrcKey} -> + {SrcBucket, SrcKey, SrcVsn} -> {ok, ReadRcPid} = riak_cs_riak_client:checkout(), try - case riak_cs_manifest:fetch(ReadRcPid, SrcBucket, SrcKey) of + case riak_cs_manifest:fetch(ReadRcPid, SrcBucket, SrcKey, SrcVsn) of {error, notfound} -> ResponseMod:api_error(no_copy_source_key, RD, Ctx); {ok, SrcManifest} -> @@ -271,21 +275,21 @@ validate_part_size(RD, #context{response_module=ResponseMod} = Ctx, prepare_part_upload(RD, Ctx, ExactSize, SrcManifest, ReadRcPid) end. -prepare_part_upload(RD, #context{riak_client=RcPid, - local_context=LocalCtx0} = Ctx0, +prepare_part_upload(RD, #context{riak_client = RcPid, + local_context = LocalCtx0} = Ctx0, ExactSize, SrcManifest, ReadRcPid) -> - #key_context{bucket=DstBucket, key=Key, - upload_id=UploadId, part_number=PartNumber} = LocalCtx0, + #key_context{bucket = DstBucket, key = Key, obj_vsn = ObjVsn, + upload_id = UploadId, part_number = PartNumber} = LocalCtx0, Caller = riak_cs_user:to_3tuple(Ctx0#context.user), - case riak_cs_mp_utils:upload_part(DstBucket, Key, UploadId, PartNumber, + case riak_cs_mp_utils:upload_part(DstBucket, Key, ObjVsn, UploadId, PartNumber, ExactSize, Caller, RcPid) of {error, notfound} -> riak_cs_s3_response:no_such_upload_response(UploadId, RD, Ctx0); {error, Reason} -> riak_cs_s3_response:api_error(Reason, RD, Ctx0); {upload_part_ready, PartUUID, PutPid} -> - LocalCtx = LocalCtx0#key_context{part_uuid=PartUUID}, - Ctx = Ctx0#context{local_context=LocalCtx}, + LocalCtx = LocalCtx0#key_context{part_uuid = PartUUID}, + Ctx = Ctx0#context{local_context = LocalCtx}, case SrcManifest of undefined -> BlockSize = riak_cs_lfs_utils:block_size(), @@ -322,14 +326,13 @@ accept_streambody(RD, finalize_request(RD, Ctx, Pid) end. -to_xml(RD, Ctx=#context{local_context=LocalCtx, - riak_client=RcPid}) -> - #key_context{bucket=Bucket, key=Key} = LocalCtx, +to_xml(RD, Ctx = #context{local_context = #key_context{bucket = Bucket, key = Key, obj_vsn = Vsn}, + riak_client = RcPid}) -> UploadId = base64url:decode(re:replace(wrq:path(RD), ".*/uploads/", "", [{return, binary}])), {UserDisplay, _Canon, UserKeyId} = User = riak_cs_user:to_3tuple(Ctx#context.user), - case riak_cs_mp_utils:list_parts(Bucket, Key, UploadId, User, [], RcPid) of + case riak_cs_mp_utils:list_parts(Bucket, Key, Vsn, UploadId, User, [], RcPid) of {ok, Ps} -> Us = [{'Part', [ @@ -377,17 +380,18 @@ to_xml(RD, Ctx=#context{local_context=LocalCtx, finalize_request(RD, Ctx=#context{local_context=LocalCtx, response_module=ResponseMod, riak_client=RcPid}, PutPid) -> - #key_context{bucket=Bucket, - key=Key, - upload_id=UploadId, - part_number=PartNumber, - part_uuid=PartUUID} = LocalCtx, + #key_context{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + upload_id = UploadId, + part_number = PartNumber, + part_uuid = PartUUID} = LocalCtx, Caller = riak_cs_user:to_3tuple(Ctx#context.user), ContentMD5 = wrq:get_req_header("content-md5", RD), case riak_cs_put_fsm:finalize(PutPid, ContentMD5) of {ok, M} -> case riak_cs_mp_utils:upload_part_finished( - Bucket, Key, UploadId, PartNumber, PartUUID, + Bucket, Key, ObjVsn, UploadId, PartNumber, PartUUID, M?MANIFEST.content_md5, Caller, RcPid) of ok -> ETag = riak_cs_manifest:etag(M), @@ -406,22 +410,24 @@ finalize_request(RD, Ctx=#context{local_context=LocalCtx, #wm_reqdata{}, #context{}) -> {{halt, integer()}, #wm_reqdata{}, #context{}}. maybe_copy_part(PutPid, - ?MANIFEST{bkey={SrcBucket, SrcKey}} = SrcManifest, + ?MANIFEST{bkey={SrcBucket, SrcKey}, + object_version = SrcVsn} = SrcManifest, ReadRcPid, RD, #context{riak_client=RcPid, local_context=LocalCtx, user=User} = Ctx) -> - #key_context{bucket=DstBucket, key=Key, - upload_id=UploadId, - part_number=PartNumber, - part_uuid=PartUUID} = LocalCtx, - DstKey = list_to_binary(Key), + #key_context{bucket = DstBucket, + key = DstKey, + obj_vsn = DstVsn, + upload_id = UploadId, + part_number = PartNumber, + part_uuid = PartUUID} = LocalCtx, Caller = riak_cs_user:to_3tuple(User), case riak_cs_copy_object:test_condition_and_permission(ReadRcPid, SrcManifest, RD, Ctx) of {false, _, _} -> - _ = lager:debug("Start copying! > ~s ~s => ~s ~s via ~p", - [SrcBucket, SrcKey, DstBucket, DstKey, ReadRcPid]), + lager:debug("Start copying! > ~s/~s:~s => ~s/~s:~s via ~p", + [SrcBucket, SrcKey, SrcVsn, DstBucket, DstKey, DstVsn, ReadRcPid]), %% Prepare for connection loss or client close FDWatcher = riak_cs_copy_object:connection_checker((RD#wm_reqdata.wm_state)#wm_reqstate.socket), @@ -432,7 +438,7 @@ maybe_copy_part(PutPid, case riak_cs_copy_object:copy(PutPid, SrcManifest, ReadRcPid, FDWatcher, Range) of {ok, DstManifest} -> case riak_cs_mp_utils:upload_part_finished( - DstBucket, DstKey, UploadId, PartNumber, PartUUID, + DstBucket, DstKey, DstVsn, UploadId, PartNumber, PartUUID, DstManifest?MANIFEST.content_md5, Caller, RcPid) of ok -> ETag = riak_cs_manifest:etag(DstManifest), @@ -449,7 +455,7 @@ maybe_copy_part(PutPid, {true, _RD, _OtherCtx} -> %% access to source object not authorized %% TODO: check the return value - _ = lager:debug("access to source object denied (~s, ~s)", [SrcBucket, SrcKey]), + _ = lager:debug("access to source object denied (~s/~s:~s)", [SrcBucket, SrcKey, SrcVsn]), {{halt, 403}, RD, Ctx}; Error -> _ = lager:debug("unknown error: ~p", [Error]), diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index 9b46c609a..f9b9fb633 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -76,6 +76,7 @@ -define(QS_KEYID, "AWSAccessKeyId"). -define(QS_SIGNATURE, "Signature"). +-define(QS_VERSION_ID, "versionId"). -type acl_or_error() :: {ok, #acl_v2{}} | {error, 'invalid_argument'} | @@ -278,13 +279,13 @@ ensure_doc(KeyCtx=#key_context{bucket_object=undefined, ensure_doc(KeyCtx, _) -> KeyCtx. -setup_manifest(KeyCtx=#key_context{bucket=Bucket, - key=Key}, RcPid) -> +setup_manifest(KeyCtx = #key_context{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn}, RcPid) -> %% start the get_fsm - BinKey = list_to_binary(Key), FetchConcurrency = riak_cs_lfs_utils:fetch_concurrency(), BufferFactor = riak_cs_lfs_utils:get_fsm_buffer_size_factor(), - {ok, FsmPid} = riak_cs_get_fsm_sup:start_get_fsm(node(), Bucket, BinKey, + {ok, FsmPid} = riak_cs_get_fsm_sup:start_get_fsm(node(), Bucket, Key, ObjVsn, self(), RcPid, FetchConcurrency, BufferFactor), @@ -425,21 +426,38 @@ iso_8601_to_erl_date(Date) -> %% object have been inserted. It also does key length check. TODO: do %% we check if the key is valid Unicode string or not? -spec extract_key(#wm_reqdata{}, #context{}) -> - {ok, #context{}} | {error, {key_too_long, pos_integer()}}. -extract_key(RD,Ctx=#context{local_context=LocalCtx0}) -> + {ok, #context{}} | + {error, {key_too_long, pos_integer()} | {vsn_too_long, pos_integer()}}. +extract_key(RD, Ctx = #context{local_context = LocalCtx0}) -> Bucket = list_to_binary(wrq:path_info(bucket, RD)), %% need to unquote twice since we re-urlencode the string during rewrite in %% order to trick webmachine dispatching MaxKeyLen = riak_cs_config:max_key_length(), case mochiweb_util:unquote(mochiweb_util:unquote(wrq:path_info(object, RD))) of Key when length(Key) =< MaxKeyLen -> - LocalCtx = LocalCtx0#key_context{bucket=Bucket, key=Key}, - {ok, Ctx#context{bucket=Bucket, - local_context=LocalCtx}}; + LocalCtx = LocalCtx0#key_context{bucket = Bucket, key = list_to_binary(Key)}, + extract_version_id(RD, Ctx#context{bucket = Bucket, + local_context = LocalCtx}); Key -> {error, {key_too_long, length(Key)}} end. +extract_version_id(RD, Ctx = #context{local_context = LocalCtx0}) -> + VsnId = + case wrq:get_qs_value(?QS_VERSION_ID, RD) of + undefined -> + ?LFS_DEFAULT_OBJECT_VERSION; + V -> + V + end, + case size(VsnId) =< riak_cs_config:max_key_length() of + true -> + LocalCtx = LocalCtx0#key_context{obj_vsn = VsnId}, + {ok, Ctx#context{local_context = LocalCtx}}; + _ -> + {error, {key_too_long, length(VsnId)}} + end. + extract_name(User) when is_list(User) -> User; extract_name(?RCS_USER{name=Name}) -> diff --git a/apps/riak_cs/test/prop_riak_cs_manifest_resolution.erl b/apps/riak_cs/test/prop_riak_cs_manifest_resolution.erl index b62628731..9c568d008 100644 --- a/apps/riak_cs/test/prop_riak_cs_manifest_resolution.erl +++ b/apps/riak_cs/test/prop_riak_cs_manifest_resolution.erl @@ -83,9 +83,10 @@ prop_resolution_commutative() -> %%==================================================================== raw_manifest() -> - ?MANIFEST{uuid=riak_cs_gen:bounded_uuid(), - bkey={<<"bucket">>, <<"key">>}, - state=riak_cs_gen:manifest_state()}. + ?MANIFEST{uuid = riak_cs_gen:bounded_uuid(), + bkey = {<<"bucket">>, <<"key">>}, + object_version = <<"a">>, + state = riak_cs_gen:manifest_state()}. manifest() -> ?LET(Manifest, raw_manifest(), process_manifest(Manifest)). @@ -93,21 +94,21 @@ manifest() -> process_manifest(Manifest=?MANIFEST{state=State}) -> case State of writing -> - Manifest?MANIFEST{last_block_written_time=erlang:timestamp(), - write_blocks_remaining=blocks_set()}; + Manifest?MANIFEST{last_block_written_time = erlang:timestamp(), + write_blocks_remaining = blocks_set()}; active -> %% this clause isn't %% needed but it makes %% things more clear imho - Manifest?MANIFEST{last_block_deleted_time=erlang:timestamp()}; + Manifest?MANIFEST{last_block_deleted_time = erlang:timestamp()}; pending_delete -> - Manifest?MANIFEST{last_block_deleted_time=erlang:timestamp(), - delete_blocks_remaining=blocks_set()}; + Manifest?MANIFEST{last_block_deleted_time = erlang:timestamp(), + delete_blocks_remaining = blocks_set()}; scheduled_delete -> - Manifest?MANIFEST{last_block_deleted_time=erlang:timestamp(), - delete_blocks_remaining=blocks_set()}; + Manifest?MANIFEST{last_block_deleted_time = erlang:timestamp(), + delete_blocks_remaining = blocks_set()}; deleted -> - Manifest?MANIFEST{last_block_deleted_time=erlang:timestamp()} + Manifest?MANIFEST{last_block_deleted_time = erlang:timestamp()} end. manifests() -> @@ -134,7 +135,7 @@ only_one_active_helper(?MANIFEST{state=active}, {found, List}) -> {found, List}; only_one_active_helper(Manifest, {found, List}) -> {found, [Manifest | List]}; -only_one_active_helper(Manifest=?MANIFEST{state=active}, {not_found, List}) -> +only_one_active_helper(Manifest=?MANIFEST{state = active}, {not_found, List}) -> {found, [Manifest | List]}; only_one_active_helper(Manifest, {not_found, List}) -> {not_found, [Manifest | List]}. diff --git a/apps/riak_cs/test/riak_cs_dummy_reader.erl b/apps/riak_cs/test/riak_cs_dummy_reader.erl index f58d9056a..0c1197092 100644 --- a/apps/riak_cs/test/riak_cs_dummy_reader.erl +++ b/apps/riak_cs/test/riak_cs_dummy_reader.erl @@ -80,24 +80,23 @@ get_manifest(Pid) -> %% =================================================================== %% @doc Initialize the server. --spec init([pid()] | {test, [pid()]}) -> {ok, state()} | {stop, term()}. init([CallerPid, Bucket, Key, ContentLength, BlockSize]) -> process_flag(trap_exit, true), %% Get a connection to riak rand:seed(exsss, erlang:timestamp()), - {ok, #state{content_length=ContentLength, - remaining=ContentLength, - bucket=Bucket, - key=Key, - block_size=BlockSize, - caller_pid=CallerPid}}. + {ok, #state{content_length = ContentLength, + remaining = ContentLength, + bucket = Bucket, + key = Key, + block_size = BlockSize, + caller_pid = CallerPid}}. %% @doc Unused -spec handle_call(term(), {pid(), term()}, state()) -> {reply, ok, state()}. -handle_call(get_manifest, _From, #state{bucket=Bucket, - key=Key, - content_length=ContentLength}=State) -> +handle_call(get_manifest, _From, #state{bucket = Bucket, + key = Key, + content_length = ContentLength} = State) -> Manifest = riak_cs_lfs_utils:new_manifest( Bucket, Key, From d579865e9df62475671c83d62930ba2938edf122 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 14 Aug 2021 02:40:09 +0300 Subject: [PATCH 184/831] move some common code to rcs_common --- apps/riak_cs/include/riak_cs.hrl | 401 +----------------- apps/riak_cs/src/riak_cs.app.src | 1 + apps/riak_cs/src/riak_cs_bucket.erl | 15 +- apps/riak_cs/src/riak_cs_console.erl | 4 +- apps/riak_cs/src/riak_cs_delete_fsm.erl | 4 +- apps/riak_cs/src/riak_cs_diags.erl | 43 +- apps/riak_cs/src/riak_cs_gc.erl | 20 +- apps/riak_cs/src/riak_cs_gc_batch.erl | 28 +- apps/riak_cs/src/riak_cs_gc_worker.erl | 4 +- apps/riak_cs/src/riak_cs_get_fsm.erl | 8 +- apps/riak_cs/src/riak_cs_lfs_utils.erl | 1 + .../src/riak_cs_list_objects_fsm_v2.erl | 2 +- apps/riak_cs/src/riak_cs_manifest.erl | 36 +- apps/riak_cs/src/riak_cs_manifest_fsm.erl | 17 +- .../src/riak_cs_manifest_resolution.erl | 216 ---------- apps/riak_cs/src/riak_cs_manifest_utils.erl | 382 +---------------- apps/riak_cs/src/riak_cs_mp_utils.erl | 38 +- apps/riak_cs/src/riak_cs_storage_mr.erl | 4 +- apps/riak_cs/src/riak_cs_utils.erl | 8 +- .../src/riak_cs_yessir_riak_client.erl | 4 +- apps/riak_cs/test/riak_cs_dummy_reader.erl | 5 +- rebar.config | 1 + rebar.lock | 4 + rel/tools/repair_gc_bucket.erl | 2 +- 24 files changed, 132 insertions(+), 1116 deletions(-) delete mode 100644 apps/riak_cs/src/riak_cs_manifest_resolution.erl diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index 4d169e46c..7101b8c39 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -19,72 +19,10 @@ %% %% --------------------------------------------------------------------- --define(MANIFEST, #lfs_manifest_v4). --define(LFS_DEFAULT_OBJECT_VERSION, <<"null">>). --define(ACL, #acl_v2). --define(RCS_BUCKET, #moss_bucket_v1). --define(MOSS_USER, #rcs_user_v2). --define(RCS_USER, #rcs_user_v2). --define(MULTIPART_MANIFEST, #multipart_manifest_v1). --define(MULTIPART_MANIFEST_RECNAME, multipart_manifest_v1). --define(PART_MANIFEST, #part_manifest_v2). --define(PART_MANIFEST_RECNAME, part_manifest_v2). --define(MULTIPART_DESCR, #multipart_descr_v1). --define(COMPRESS_TERMS, false). --define(PART_DESCR, #part_descr_v1). - --record(moss_user, { - name :: string(), - key_id :: string(), - key_secret :: string(), - buckets = []}). - --record(moss_user_v1, { - name :: string(), - display_name :: string(), - email :: string(), - key_id :: string(), - key_secret :: string(), - canonical_id :: string(), - buckets=[] :: [cs_bucket()]}). - --record(rcs_user_v2, { - name :: string(), - display_name :: string(), - email :: string(), - key_id :: string(), - key_secret :: string(), - canonical_id :: string(), - buckets=[] :: [cs_bucket()], - status=enabled :: enabled | disabled}). --type moss_user() :: #rcs_user_v2{} | #moss_user_v1{}. --type rcs_user() :: #rcs_user_v2{} | #moss_user_v1{}. +-include_lib("rcs_common/include/rcs_common_manifest.hrl"). +-include_lib("rcs_common/include/rcs_common_moss.hrl"). --record(moss_bucket, { - name :: string(), - creation_date :: term(), - acl :: acl()}). - --record(moss_bucket_v1, { - name :: string() | binary(), - last_action :: undefined | created | deleted, - creation_date :: undefined | string(), - modification_time :: undefined | erlang:timestamp(), - acl :: undefined | acl()}). - --type cs_bucket() :: #moss_bucket_v1{}. --type bucket_operation() :: create | delete | update_acl | update_policy - | delete_policy | update_versioning. --type bucket_action() :: created | deleted. - --record(bucket_versioning, {status = suspended :: enabled | suspended, - mfa_delete = disabled :: disabled | enabled, - %% Riak CS extensions - use_subversioning = false :: boolean(), - can_update_versions = false :: boolean(), - repl_siblings = true :: boolean() - }). --type bucket_versioning() :: #bucket_versioning{}. +-type riak_client() :: pid(). -record(context, {start_time :: undefined | erlang:timestamp(), auth_bypass :: atom(), @@ -132,334 +70,7 @@ content_md5 :: undefined | binary(), update_metadata = false :: boolean()}). --type lfs_manifest_state() :: writing | active | - pending_delete | scheduled_delete | deleted. --type acl_perm() :: 'READ' | 'WRITE' | 'READ_ACP' | 'WRITE_ACP' | 'FULL_CONTROL'. --type acl_perms() :: [acl_perm()]. --type group_grant() :: 'AllUsers' | 'AuthUsers'. --type acl_grantee() :: {DisplayName :: string(), - CanonicalID :: string()} | - group_grant(). --type acl_grant() :: {acl_grantee(), acl_perms()}. -%% acl_v1 owner fields: {DisplayName, CanonicalId} --type acl_owner2() :: {string(), string()}. -%% acl_owner3: {display name, canonical id, key id} --type acl_owner3() :: {string(), string(), string()}. --type acl_owner() :: acl_owner2() | acl_owner3(). --record(acl_v1, {owner={"", ""} :: acl_owner(), - grants=[] :: [acl_grant()], - creation_time = erlang:timestamp() :: erlang:timestamp()}). -%% acl_v2 owner fields: {DisplayName, CanonicalId, KeyId} --record(acl_v2, {owner={"", "", ""} :: acl_owner(), - grants=[] :: [acl_grant()], - creation_time = erlang:timestamp() :: erlang:timestamp()}). --type acl() :: #acl_v1{} | #acl_v2{}. - --type cluster_id() :: undefined | binary(). %% flattened string as binary --type cs_uuid() :: binary(). --type bag_id() :: undefined | binary(). --type riak_client() :: pid(). - --record(lfs_manifest_v2, { - version = 2 :: 2, - block_size :: integer(), - bkey :: {binary(), binary()}, - metadata :: orddict:orddict(), - created=riak_cs_wm_utils:iso_8601_datetime(), - uuid :: cs_uuid(), - content_length :: non_neg_integer(), - content_type :: binary(), - content_md5 :: term(), - state=undefined :: undefined | lfs_manifest_state(), - write_start_time :: term(), %% immutable - last_block_written_time :: term(), - write_blocks_remaining :: ordsets:ordset(integer()), - delete_marked_time :: term(), - last_block_deleted_time :: term(), - delete_blocks_remaining :: ordsets:ordset(integer()), - acl :: acl(), - props = [] :: proplists:proplist(), - cluster_id :: cluster_id() - }). - --record(lfs_manifest_v3, { - version = 3 :: 3, - - block_size :: undefined | integer(), - - bkey :: {binary(), binary()}, - - metadata :: orddict:orddict(), - - created=riak_cs_wm_utils:iso_8601_datetime(), - uuid :: cs_uuid(), - - content_length :: non_neg_integer(), - content_type :: binary(), - content_md5 :: term(), - - state :: undefined | lfs_manifest_state(), - - write_start_time :: term(), %% immutable - last_block_written_time :: term(), - write_blocks_remaining :: undefined | ordsets:ordset(integer()), - delete_marked_time :: term(), - last_block_deleted_time :: term(), - delete_blocks_remaining :: undefined | ordsets:ordset(integer()), - scheduled_delete_time :: term(), %% new in v3 - - acl = no_acl_yet :: acl() | no_acl_yet, - - props = [] :: 'undefined' | proplists:proplist(), - - cluster_id :: cluster_id() - }). - --record(lfs_manifest_v4, { - %% "global" properties - %% ----------------------------------------------------------------- - - %% this isn't as important anymore - %% since we're naming the record - %% to include the version number, - %% but I figured it's worth keeping - %% in case we change serialization - %% formats in the future. - version = 4 :: 4, - - %% the block_size setting when this manifest - %% was written. Needed if the user - %% ever changes the block size after writing - %% data - block_size :: undefined | integer(), - - %% identifying properties - %% ----------------------------------------------------------------- - bkey :: {binary(), binary()}, - %% added in v4: - %% there's always a primary version, which is head of a - %% double-linked list of all versions - object_version = ?LFS_DEFAULT_OBJECT_VERSION :: binary(), - next_object_version = eol :: eol | binary(), - prev_object_version = eol :: eol | binary(), - - %% user metadata that would normally - %% be placed on the riak_object. We avoid - %% putting it on the riak_object so that - %% we can use that metadata ourselves - metadata :: orddict:orddict(), - - %% the date the manifest was created. - %% not sure if we need both this and - %% write_start_time. My thought was that - %% write_start_time would have millisecond - %% resolution, but I suppose there's no - %% reason we can't change created - %% to have millisecond as well. - created = riak_cs_wm_utils:iso_8601_datetime(), - uuid :: cs_uuid(), - - %% content properties - %% ----------------------------------------------------------------- - content_length :: non_neg_integer(), - content_type :: binary(), - content_md5 :: term(), - - %% state properties - %% ----------------------------------------------------------------- - state :: undefined | lfs_manifest_state(), - - %% writing/active state - %% ----------------------------------------------------------------- - write_start_time :: term(), %% immutable - %% used for two purposes - %% 1. to mark when a file has finished uploading - %% 2. to decide if a write crashed before completing - %% and needs to be garbage collected - last_block_written_time :: term(), - - %% a shrink-only (during resolution) - %% set to denote which blocks still - %% need to be written. We use a shrinking - %% (rather than growing) set to that the - %% set is empty after the write has completed, - %% which should be most of the lifespan on disk - write_blocks_remaining :: undefined | ordsets:ordset(integer()), - - %% pending_delete/deleted state - %% ----------------------------------------------------------------- - %% set to the current time - %% when a manifest is marked as deleted - %% and enters the pending_delete state - delete_marked_time :: term(), - - %% the timestamp serves a similar - %% purpose to last_block_written_time, - %% in that it's used for figuring out - %% when delete processes have died - %% and garbage collection needs to - %% pick up where they left off. - last_block_deleted_time :: term(), - - %% a shrink-only (during resolution) - %% set to denote which blocks - %% still need to be deleted. - %% See write_blocks_remaining for - %% an explanation of why we chose - %% a shrinking set - delete_blocks_remaining :: undefined | ordsets:ordset(integer()), - - %% the time the manifest was put - %% into the scheduled_delete - %% state - scheduled_delete_time :: term(), - - %% The ACL for the version of the object represented - %% by this manifest. - acl = no_acl_yet :: acl() | no_acl_yet, - - %% There are a couple of cases where we want to add record - %% member'ish data without adding new members to the record, - %% e.g. - %% 1. Data for which the common value is 'undefined' or not - %% used/set for this particular manifest - %% 2. Cases where we do want to change the structure of the - %% record but don't want to go through the full code - %% refactoring and backward-compatibility tap dance - %% until sometime later. - %% 'undefined' is for backward compatibility with v3 manifests - %% written with Riak CS 1.2.2 or earlier. - props = [] :: undefined | proplists:proplist(), - - %% cluster_id: A couple of uses, both short- and longer-term - %% possibilities: - %% - %% 1. We don't have a good story in early 2012 for how to - %% build a stable 2,000 node Riak cluster. If MOSS can - %% talk to multiple Riak clusters, then each individual - %% cluster can be a size that we're comfortable - %% supporting. - %% - %% 2. We may soon have Riak EE's replication have full - %% plumbing to make it feasible to forward arbitrary - %% traffic between clusters. Then if a slave cluster is - %% missing a data block, and read-repair cannot - %% automagically fix the 'not_found' problem, then perhaps - %% forwarding a get request to the source Riak cluster can - %% fetch us the missing data. - cluster_id :: cluster_id() - }). --type lfs_manifest() :: #lfs_manifest_v4{}. - --type cs_uuid_and_manifest() :: {cs_uuid(), lfs_manifest()}. --type wrapped_manifest() :: orddict:orddict(cs_uuid(), lfs_manifest()). - --record(part_manifest_v1, { - bucket :: binary(), - key :: binary(), - start_time :: erlang:timestamp(), - part_number :: integer(), - part_id :: binary(), - content_length :: integer(), - content_md5 :: undefined | binary(), - block_size :: integer() -}). - --record(part_manifest_v2, { - bucket :: binary(), - key :: binary(), - %% new in v2 - object_version = ?LFS_DEFAULT_OBJECT_VERSION :: binary(), - - %% used to judge races between concurrent uploads - %% of the same part_number - start_time :: erlang:timestamp(), - - %% one-of 1-10000, inclusive - part_number :: integer(), - - %% a UUID to prevent conflicts with concurrent - %% uploads of the same {upload_id, part_number}. - part_id :: binary(), - - %% each individual part upload always has a content-length - %% content_md5 is used for the part ETag, alas. - content_length :: integer(), - content_md5 :: undefined | binary(), - - %% block size just like in `lfs_manifest_v2'. Concievably, - %% parts for the same upload id could have different block_sizes. - block_size :: integer() -}). --type part_manifest() :: #part_manifest_v2{}. - --record(multipart_manifest_v1, { - upload_id :: binary(), - owner :: acl_owner3(), - - %% since we don't have any point of strong - %% consistency (other than stanchion), we - %% can get concurrent `complete' and `abort' - %% requests. There are still some details to - %% work out, but what we observe here will - %% affect whether we accept future `complete' - %% or `abort' requests. - - %% Stores references to all of the parts uploaded - %% with this `upload_id' so far. A part - %% can be uploaded more than once with the same - %% part number. type = #part_manifest_vX - parts = ordsets:new() :: ordsets:ordset(?PART_MANIFEST{}), - %% List of UUIDs for parts that are done uploading. - %% The part number is redundant, so we only store - %% {UUID::binary(), PartETag::binary()} here. - done_parts = ordsets:new() :: ordsets:ordset({binary(), binary()}), - %% type = #part_manifest_vX - cleanup_parts = ordsets:new() :: ordsets:ordset(?PART_MANIFEST{}), - - %% a place to stuff future information - %% without having to change - %% the record format - props = [] :: proplists:proplist() -}). --type multipart_manifest() :: #multipart_manifest_v1{}. - -%% Basis of list multipart uploads output --record(multipart_descr_v1, { - %% Object key for the multipart upload - key :: binary(), - - %% UUID of the multipart upload - upload_id :: binary(), - - %% User that initiated the upload - owner_display :: string(), - owner_key_id :: string(), - - %% storage class: no real options here - storage_class = standard, - - %% Time that the upload was initiated - initiated :: string() %% conflict of func vs. type: riak_cs_wm_utils:iso_8601_datetime() -}). - -%% Basis of multipart list parts output --record(part_descr_v1, { - part_number :: integer(), - last_modified :: string(), % TODO ?? - etag :: binary(), - size :: integer() -}). - --type part_descr() :: #part_descr_v1{}. - --define(USER_BUCKET, <<"moss.users">>). --define(ACCESS_BUCKET, <<"moss.access">>). --define(STORAGE_BUCKET, <<"moss.storage">>). --define(BUCKETS_BUCKET, <<"moss.buckets">>). --define(GC_BUCKET, <<"riak-cs-gc">>). --define(FREE_BUCKET_MARKER, <<"0">>). -define(DEFAULT_MAX_BUCKETS_PER_USER, 100). -define(DEFAULT_MAX_CONTENT_LENGTH, 5368709120). %% 5 GB -define(DEFAULT_LFS_BLOCK_SIZE, 1048576).%% 1 MB @@ -468,10 +79,6 @@ -define(DEFAULT_STANCHION_IP, "127.0.0.1"). -define(DEFAULT_STANCHION_PORT, 8085). -define(DEFAULT_STANCHION_SSL, true). --define(MD_BAG, <<"X-Rcs-Bag">>). --define(MD_ACL, <<"X-Moss-Acl">>). --define(MD_POLICY, <<"X-Rcs-Policy">>). --define(MD_VERSIONING, <<"X-Rcs-Versioning">>). -define(EMAIL_INDEX, <<"email_bin">>). -define(ID_INDEX, <<"c_id_bin">>). -define(KEY_INDEX, <<"$key">>). @@ -498,6 +105,8 @@ -define(S3_RESPONSE_MOD, riak_cs_s3_response). -define(OOS_RESPONSE_MOD, riak_cs_oos_response). +-define(COMPRESS_TERMS, false). + %% Major categories of Erlang-triggered DTrace probes %% %% The main R15B01 USDT probe that can be triggered by Erlang code is defined diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index c51d8a44e..87bcc959f 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -40,6 +40,7 @@ exometer_core, lager, riakc, + rcs_common, riak_repl_pb_api, riak_cs_multibag ]}, diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index 9e4191929..860e1e128 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -211,13 +211,12 @@ delete_old_uploads(Bucket, RcPid, Timestamp) when is_binary(Timestamp) -> fold_delete_uploads(Bucket, RcPid, Ds, Timestamp, 0). fold_delete_uploads(_Bucket, _RcPid, [], _Timestamp, Count) -> {ok, Count}; -fold_delete_uploads(Bucket, RcPid, [D|Ds], Timestamp, Count)-> - Key = D?MULTIPART_DESCR.key, - +fold_delete_uploads(Bucket, RcPid, [?MULTIPART_DESCR{key = VKey, + upload_id = UploadId} | Ds], + Timestamp, Count) -> %% cannot fail here - {ok, Obj, Manifests} = riak_cs_manifest:get_manifests(RcPid, Bucket, Key), - - UploadId = D?MULTIPART_DESCR.upload_id, + {Key, Vsn} = rcs_common_manifest:decompose_versioned_key(VKey), + {ok, Obj, Manifests} = riak_cs_manifest:get_manifests(RcPid, Bucket, Key, Vsn), %% find_manifest_with_uploadid case lists:keyfind(UploadId, 1, Manifests) of @@ -231,8 +230,8 @@ fold_delete_uploads(Bucket, RcPid, [D|Ds], Timestamp, Count)-> {ok, _NewObj} -> fold_delete_uploads(Bucket, RcPid, Ds, Timestamp, Count+1); E -> - lager:debug("cannot delete multipart manifest: ~p ~p (~p)", - [{Bucket, Key}, M?MANIFEST.uuid, E]), + lager:debug("cannot delete multipart manifest: ~s (~s/~s:~s): ~p", + [M?MANIFEST.uuid, Bucket, Key, Vsn, E]), E end; _E -> diff --git a/apps/riak_cs/src/riak_cs_console.erl b/apps/riak_cs/src/riak_cs_console.erl index 6e4a3eb80..3a4156edb 100644 --- a/apps/riak_cs/src/riak_cs_console.erl +++ b/apps/riak_cs/src/riak_cs_console.erl @@ -303,8 +303,8 @@ resolve_ro_siblings(RiakObject, <<"0o:", _/binary>>, _RawKey) -> ObjectToWrite0 = riak_cs_utils:update_obj_value( RiakObject, riak_cs_utils:encode_term(Manifests)), - {B, K} = Manifest?MANIFEST.bkey, - RO = riak_cs_manifest_fsm:update_md_with_multipart_2i(ObjectToWrite0, Manifests, B, K), + {B, _K} = Manifest?MANIFEST.bkey, + RO = riak_cs_manifest_fsm:update_md_with_multipart_2i(ObjectToWrite0, Manifests, B), {ok, RO}. -spec maybe_cleanup_csbucket(riak_client(), diff --git a/apps/riak_cs/src/riak_cs_delete_fsm.erl b/apps/riak_cs/src/riak_cs_delete_fsm.erl index 437490ef6..4ac0f1e48 100644 --- a/apps/riak_cs/src/riak_cs_delete_fsm.erl +++ b/apps/riak_cs/src/riak_cs_delete_fsm.erl @@ -206,7 +206,7 @@ handle_receiving_manifest(State = #state{manifest = Manifest, {Bucket, Key} = Manifest?MANIFEST.bkey, ObjVsn = Manifest?MANIFEST.object_version, _ = lager:warning("Invalid state manifest in GC bucket at ~p, " - "b/k:v = ~s/~s:~s: ~p", + "b/k:v \"~s/~s:~s\": ~p", [GCKey, Bucket, Key, ObjVsn, Manifest]), %% If total blocks and deleted blocks are the same, %% gc worker attempt to delete the manifest in fileset. @@ -259,7 +259,7 @@ maybe_delete_blocks(State = #state{bucket = Bucket, NewUnackedDeletes = ordsets:add_element(BlockID, UnackedDeletes), NewDeleteBlocksRemaining = ordsets:del_element(BlockID, DeleteBlocksRemaining), {UUID, Seq} = BlockID, - lager:debug("Deleting block #~b (~s) of ~s/~s:~s", [Seq, UUID, Bucket, Key, ObjVsn]), + lager:debug("Deleting block #~b (~p) of \"~s/~s:~s\"", [Seq, UUID, Bucket, Key, ObjVsn]), riak_cs_block_server:delete_block(DeleterPid, Bucket, Key, UUID, Seq), NewFreeDeleters = ordsets:del_element(DeleterPid, FreeDeleters), maybe_delete_blocks(State#state{unacked_deletes = NewUnackedDeletes, diff --git a/apps/riak_cs/src/riak_cs_diags.erl b/apps/riak_cs/src/riak_cs_diags.erl index c0f0e37a7..5b4ac145e 100644 --- a/apps/riak_cs/src/riak_cs_diags.erl +++ b/apps/riak_cs/src/riak_cs_diags.erl @@ -34,8 +34,8 @@ %% API -export([start_link/0, - print_manifests/2, - print_manifest/3]). + print_manifests/3, + print_manifest/4]). -define(INDENT_LEVEL, 4). @@ -49,21 +49,21 @@ start_link() -> gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). --spec print_manifests(binary() | string(), binary() | string()) -> ok. -print_manifests(Bucket, Key) when is_list(Bucket), is_list(Key) -> - print_manifests(list_to_binary(Bucket), list_to_binary(Key)); -print_manifests(Bucket, Key) -> - Manifests = gen_server:call(?MODULE, {get_manifests, Bucket, Key}), +-spec print_manifests(binary() | string(), binary() | string(), binary() | string()) -> ok. +print_manifests(Bucket, Key, Vsn) when is_list(Bucket) -> + print_manifests(list_to_binary(Bucket), list_to_binary(Key), list_to_binary(Vsn)); +print_manifests(Bucket, Key, Vsn) -> + Manifests = gen_server:call(?MODULE, {get_manifests, Bucket, Key, Vsn}), Rows = manifest_rows(orddict_values(Manifests)), table:print(manifest_table_spec(), Rows). --spec print_manifest(binary() | string(), binary() | string(), binary() | string()) -> ok. -print_manifest(Bucket, Key, Uuid) when is_list(Bucket), is_list(Key) -> - print_manifest(list_to_binary(Bucket), list_to_binary(Key), Uuid); -print_manifest(Bucket, Key, Uuid) when is_list(Uuid) -> - print_manifest(Bucket, Key, mochihex:to_bin(Uuid)); -print_manifest(Bucket, Key, Uuid) -> - Manifests = gen_server:call(?MODULE, {get_manifests, Bucket, Key}), +-spec print_manifest(binary() | string(), binary() | string(), binary() | string(), binary() | string()) -> ok. +print_manifest(Bucket, Key, Vsn, Uuid) when is_list(Bucket) -> + print_manifest(list_to_binary(Bucket), list_to_binary(Key), list_to_binary(Vsn), Uuid); +print_manifest(Bucket, Key, Vsn, Uuid) when is_list(Uuid) -> + print_manifest(Bucket, Key, Vsn, mochihex:to_bin(Uuid)); +print_manifest(Bucket, Key, Vsn, Uuid) -> + Manifests = gen_server:call(?MODULE, {get_manifests, Bucket, Key, Vsn}), {ok, Manifest} = orddict:find(Uuid, Manifests), io:format("\n~s", [pr(Manifest)]). @@ -95,10 +95,10 @@ print_field({part_id, Value}, Indent) when is_binary(Value) -> print_field({acl, Value}, Indent) -> io_lib:format("~s~s = ~s\n\n", [spaces(Indent), acl, pr(Value, Indent + 1)]); print_field({props, Props}, Indent) -> - io_lib:format("~s~s = ~s\n\n", [spaces(Indent), multipart, + io_lib:format("~s~s = ~s\n\n", [spaces(Indent), multipart, print_multipart_manifest(Props, Indent)]); print_field({parts, Parts}, Indent) -> - io_lib:format("~s~s = ~s\n\n", [spaces(Indent), parts, + io_lib:format("~s~s = ~s\n\n", [spaces(Indent), parts, [pr(P, Indent + 1) || P <- Parts]]); print_field({Key, Value}, Indent) -> io_lib:format("~s~s = ~p\n", [spaces(Indent), Key, Value]). @@ -113,18 +113,18 @@ spaces(Num) -> %% Table Specifications and Record to Row conversions %% ==================================================================== manifest_table_spec() -> - [{state, 20}, {deleted, 8}, {mp, 6}, {created, 28}, {uuid, 36}, + [{state, 20}, {deleted, 8}, {mp, 6}, {created, 28}, {uuid, 36}, {write_start_time, 23}, {delete_marked_time, 23}]. manifest_rows(Manifests) -> [ [M?MANIFEST.state, deleted(M?MANIFEST.props), - riak_cs_mp_utils:is_multipart_manifest(M), + riak_cs_mp_utils:is_multipart_manifest(M), M?MANIFEST.created, mochihex:to_hex(M?MANIFEST.uuid), M?MANIFEST.write_start_time, M?MANIFEST.delete_marked_time] || M <- Manifests]. print_multipart_manifest(Props, Indent) -> case lists:keyfind(multipart, 1, Props) of - {multipart, MpManifest} -> + {multipart, MpManifest} -> pr(MpManifest, Indent + 1); _ -> "" @@ -140,10 +140,10 @@ deleted(Props) -> init([]) -> {ok, #state{}}. -handle_call({get_manifests, Bucket, Key}, _From, State) -> +handle_call({get_manifests, Bucket, Key, Vsn}, _From, State) -> {ok, Pid} = riak_cs_utils:riak_connection(), try - {ok, _, Manifests} = riak_cs_manifest:get_manifests(Pid, Bucket, Key), + {ok, _, Manifests} = riak_cs_manifest:get_manifests(Pid, Bucket, Key, Vsn), {reply, Manifests, State} catch _:_=E -> {reply, {error, E}, State} @@ -162,4 +162,3 @@ terminate(_Reason, _State) -> code_change(_OldVsn, State, _Extra) -> {ok, State}. - diff --git a/apps/riak_cs/src/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl index 6caf4e47d..de5c781b8 100644 --- a/apps/riak_cs/src/riak_cs_gc.erl +++ b/apps/riak_cs/src/riak_cs_gc.erl @@ -91,17 +91,17 @@ gc_active_manifests(Bucket, Key, ObjVsn, RcPid, UUIDs) -> -spec get_active_manifests(binary(), binary(), binary(), riak_client()) -> {ok, riakc_obj:riakc_obj(), [lfs_manifest()]} | {error, term()}. -get_active_manifests(Bucket, Key, ObjVsn, RcPid) -> +get_active_manifests(Bucket, Key, Vsn, RcPid) -> active_manifests( - riak_cs_manifest:get_manifests(RcPid, Bucket, Key, ObjVsn)). + riak_cs_manifest:get_manifests(RcPid, Bucket, Key, Vsn)). -spec active_manifests({ok, riakc_obj:riakc_obj(), [lfs_manifest()]}) -> {ok, riakc_obj:riakc_obj(), [lfs_manifest()]}; ({error, term()}) -> {error, term()}. active_manifests({ok, RiakObject, Manifests}) -> - {ok, RiakObject, riak_cs_manifest_utils:active_manifests(Manifests)}; -active_manifests({error, _}=Error) -> + {ok, RiakObject, rcs_common_manifest_utils:active_manifests(Manifests)}; +active_manifests({error, _} = Error) -> Error. -spec clean_manifests([lfs_manifest()], riak_client()) -> [lfs_manifest()]. @@ -338,14 +338,14 @@ default_batch_end(BatchStart, Leeway) -> {ok, riakc_obj:riakc_obj()} | {error, term()}. mark_as_deleted(UUIDsToMark, RiakObject, Bucket, RcPid) -> mark_manifests(RiakObject, Bucket, UUIDsToMark, - fun riak_cs_manifest_utils:mark_deleted/2, + fun rcs_common_manifest_utils:mark_deleted/2, RcPid). %% @doc Mark a list of manifests as `pending_delete' based upon the %% UUIDs specified. mark_as_pending_delete(UUIDsToMark, RiakObject, Bucket, RcPid) -> mark_manifests(RiakObject, Bucket, UUIDsToMark, - fun riak_cs_manifest_utils:mark_pending_delete/2, + fun rcs_common_manifest_utils:mark_pending_delete/2, RcPid). %% @doc Mark a list of manifests as `scheduled_delete' based upon the @@ -354,7 +354,7 @@ mark_as_pending_delete(UUIDsToMark, RiakObject, Bucket, RcPid) -> {ok, riakc_obj:riakc_obj()} | {error, term()}. mark_as_scheduled_delete(UUIDsToMark, RiakObject, Bucket, RcPid) -> mark_manifests(RiakObject, Bucket, UUIDsToMark, - fun riak_cs_manifest_utils:mark_scheduled_delete/2, + fun rcs_common_manifest_utils:mark_scheduled_delete/2, RcPid). @@ -413,11 +413,11 @@ try_delete_blocks(BagId, {UUID, _} = UUIDManifest) -> [{cleanup_manifests, false}]], {ok, Pid} = riak_cs_delete_fsm_sup:start_delete_fsm(node(), Args), case riak_cs_delete_fsm:sync_delete(Pid) of - {Pid, {ok, {_, _, _, TotalBlocks, TotalBlocks}}} -> + {Pid, {ok, {_, _, _, _, TotalBlocks, TotalBlocks}}} -> %% all the blocks are successfully deleted _ = lager:debug("Active deletion of ~p succeeded", [UUID]), ok; - {Pid, {ok, {_, _, _, NumDeleted, TotalBlocks}}} -> + {Pid, {ok, {_, _, _, _, NumDeleted, TotalBlocks}}} -> _ = lager:debug("Only ~p/~p blocks of ~p deleted", [NumDeleted, TotalBlocks, UUID]), {error, partially_deleted}; @@ -459,7 +459,7 @@ move_manifests_to_gc_bucket(Manifests, RcPid) -> end, %% Create a set from the list of manifests - _ = lager:debug("Manifests scheduled for deletion: ~p", [ManifestSet]), + lager:debug("Manifests scheduled for deletion: ~p", [ManifestSet]), Timeout1 = riak_cs_config:put_gckey_timeout(), riak_cs_pbc:put(ManifestPbc, ObjectToWrite, [], Timeout1, [riakc, put_gc_manifest_set]). diff --git a/apps/riak_cs/src/riak_cs_gc_batch.erl b/apps/riak_cs/src/riak_cs_gc_batch.erl index 94dc04b1f..d32d6d606 100644 --- a/apps/riak_cs/src/riak_cs_gc_batch.erl +++ b/apps/riak_cs/src/riak_cs_gc_batch.erl @@ -178,20 +178,20 @@ handle_info(_Info, StateName, State) -> %% @doc TODO: log warnings if this fsm is asked to terminate in the %% middle of running a gc batch terminate(normal, _StateName, State) -> - _ = lager:info("Finished garbage collection: " - "~b seconds, ~p batch_count, ~p batch_skips, " - "~p manif_count, ~p block_count\n", - [elapsed(State?STATE.batch_start), State?STATE.batch_count, - State?STATE.batch_skips, State?STATE.manif_count, - State?STATE.block_count]), + lager:info("Finished garbage collection: " + "~b seconds, ~p batch_count, ~p batch_skips, " + "~p manif_count, ~p block_count", + [elapsed(State?STATE.batch_start), State?STATE.batch_count, + State?STATE.batch_skips, State?STATE.manif_count, + State?STATE.block_count]), riak_cs_gc_manager:finished(State); terminate(cancel, _StateName, State) -> - _ = lager:warning("Garbage collection has been canceled: " - "~b seconds, ~p batch_count, ~p batch_skips, " - "~p manif_count, ~p block_count\n", - [elapsed(State?STATE.batch_start), State?STATE.batch_count, - State?STATE.batch_skips, State?STATE.manif_count, - State?STATE.block_count]), + lager:warning("Garbage collection has been canceled: " + "~b seconds, ~p batch_count, ~p batch_skips, " + "~p manif_count, ~p block_count\n", + [elapsed(State?STATE.batch_start), State?STATE.batch_count, + State?STATE.batch_skips, State?STATE.manif_count, + State?STATE.block_count]), ok; terminate(_Reason, _StateName, _State) -> ok. @@ -306,7 +306,7 @@ maybe_start_workers(?STATE{max_workers=MaxWorkers, %% Fetch the next set of manifests for deletion {KeyListRes, UpdKeyListState} = riak_cs_gc_key_list:next(KeyListState), #gc_key_list_result{bag_id=BagId, batch=Batch} = KeyListRes, - _ = lager:debug("Next batch keys: ~p", [Batch]), + lager:debug("Next batch keys: ~p", [Batch]), State2 = State?STATE{batch=Batch, key_list_state=UpdKeyListState, bag_id=BagId}, @@ -318,7 +318,7 @@ maybe_start_workers(?STATE{max_workers=MaxWorkers, worker_pids=WorkerPids, batch=Batch} = State) when MaxWorkers > length(WorkerPids) -> - _ = lager:debug("Batch: ~p", [Batch, WorkerPids]), + lager:debug("Batch: ~p, WorkerPids: ~p", [Batch, WorkerPids]), State2 = start_worker(State), maybe_start_workers(State2). diff --git a/apps/riak_cs/src/riak_cs_gc_worker.erl b/apps/riak_cs/src/riak_cs_gc_worker.erl index 392912533..2c33fd03d 100644 --- a/apps/riak_cs/src/riak_cs_gc_worker.erl +++ b/apps/riak_cs/src/riak_cs_gc_worker.erl @@ -273,7 +273,7 @@ ok_reply(NextState, NextStateData) -> %% Refactor TODO: %% 1. delete_fsm_pid=undefined is desirable in both ok & error cases? %% 2. It's correct to *not* change pause_state? -handle_delete_fsm_reply({ok, {_, _, _, TotalBlocks, TotalBlocks}}, +handle_delete_fsm_reply({ok, {_, _, _, _, TotalBlocks, TotalBlocks}}, ?STATE{current_files=[CurrentManifest | RestManifests], current_fileset=FileSet, block_count=BlockCount} = State) -> @@ -283,7 +283,7 @@ handle_delete_fsm_reply({ok, {_, _, _, TotalBlocks, TotalBlocks}}, current_fileset=UpdFileSet, current_files=RestManifests, block_count=BlockCount+TotalBlocks}; -handle_delete_fsm_reply({ok, {_, _, _, NumDeleted, _TotalBlocks}}, +handle_delete_fsm_reply({ok, {_, _, _, _, NumDeleted, _TotalBlocks}}, ?STATE{current_files=[_CurrentManifest | RestManifests], block_count=BlockCount} = State) -> ok = continue(), diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl index 56d872aca..3c3813e04 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm.erl @@ -92,7 +92,6 @@ keep_bytes_final = 0 :: non_neg_integer(), free_readers :: undefined | [pid()], all_reader_pids :: undefined | [pid()]}). --type state() :: #state{}. %% =================================================================== %% Public API @@ -401,15 +400,14 @@ code_change(_OldVsn, StateName, State, _Extra) -> {ok, StateName, State}. %% Internal functions %% =================================================================== --spec prepare(#state{}) -> #state{}. prepare(#state{bucket = Bucket, key = Key, - obj_vsn = ObjVsn, + obj_vsn = Vsn, riak_client = RcPid} = State) -> %% start the process that will %% fetch the value, be it manifest %% or regular object - {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, ObjVsn, RcPid), + {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, Vsn, RcPid), case riak_cs_manifest_fsm:get_active_manifest(ManiPid) of {ok, Manifest} -> lager:debug("Manifest: ~p", [Manifest]), @@ -425,8 +423,6 @@ prepare(#state{bucket = Bucket, State#state{mani_fsm_pid = ManiPid} end. --spec read_blocks(state()) -> state(). - read_blocks(#state{free_readers=[]} = State) -> State; read_blocks(#state{blocks_order=[]} = State) -> diff --git a/apps/riak_cs/src/riak_cs_lfs_utils.erl b/apps/riak_cs/src/riak_cs_lfs_utils.erl index b59b6aa6a..705d34772 100644 --- a/apps/riak_cs/src/riak_cs_lfs_utils.erl +++ b/apps/riak_cs/src/riak_cs_lfs_utils.erl @@ -280,6 +280,7 @@ new_manifest(Bucket, FileName, UUID, Blocks = ordsets:from_list(initial_blocks(ContentLength, BlockSize)), Manifest = ?MANIFEST{bkey = {Bucket, FileName}, uuid = UUID, + created = riak_cs_wm_utils:iso_8601_datetime(), state = writing, content_length = ContentLength, content_type = ContentType, diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl index 58b2e935e..b57781416 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl @@ -477,7 +477,7 @@ make_start_key_from_marker_and_prefix(?LOREQ{marker=Marker, -spec map_active_manifests([orddict:orddict()]) -> list(lfs_manifest()). map_active_manifests(Manifests) -> - ActiveTuples = [riak_cs_manifest_utils:active_manifest(M) || + ActiveTuples = [rcs_common_manifest_utils:active_manifest(M) || M <- Manifests], [A || {ok, A} <- ActiveTuples]. diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl index b3edd6e0a..1c2e5a5ea 100644 --- a/apps/riak_cs/src/riak_cs_manifest.erl +++ b/apps/riak_cs/src/riak_cs_manifest.erl @@ -25,7 +25,6 @@ get_manifests/4, get_manifests_of_all_versions/3, manifests_from_riak_object/1, - versioned_key/2, link_version/5, unlink_version/4, etag/1, @@ -38,7 +37,7 @@ fetch(RcPid, Bucket, Key, ObjVsn) -> case get_manifests(RcPid, Bucket, Key, ObjVsn) of {ok, _, Manifests} -> - riak_cs_manifest_utils:active_manifest(orddict:from_list(Manifests)); + rcs_common_manifest_utils:active_manifest(orddict:from_list(Manifests)); Error -> Error end. @@ -101,7 +100,7 @@ unlink_version2(RcPid, Bucket, Key, ?MANIFEST{next_object_version = NextOV, {ok, _, PrevM} = get_manifests(RcPid, Bucket, Key, PrevOV), riak_cs_manifest_fsm:update_manifests( ManiPid1, - ordsets:map(fun(_, M) -> M?MANIFEST{next_object_version = NextOV} end, PrevM)), + orddict:map(fun(_, M) -> M?MANIFEST{next_object_version = NextOV} end, PrevM)), riak_cs_manifest_fsm:stop(ManiPid1); el/=se -> nop @@ -111,7 +110,7 @@ unlink_version2(RcPid, Bucket, Key, ?MANIFEST{next_object_version = NextOV, {ok, _, NextM} = get_manifests(RcPid, Bucket, Key, NextOV), riak_cs_manifest_fsm:update_manifests( ManiPid2, - ordsets:map(fun(_, M) -> M?MANIFEST{next_object_version = PrevOV} end, NextM)), + orddict:map(fun(_, M) -> M?MANIFEST{next_object_version = PrevOV} end, NextM)), riak_cs_manifest_fsm:stop(ManiPid2); el/=se -> nop @@ -167,7 +166,7 @@ link_version2(M0 = ?MANIFEST{bkey = {Bucket, Key}}, ObjVsn, UUVVMM, RcPid) -> {ok, MPid1} = riak_cs_manifest_fsm:start_link(Bucket, Key, FirstAfter, RcPid), riak_cs_manifest_fsm:update_manifests( MPid1, - ordsets:map(fun(_, M) -> M?MANIFEST{prev_object_version = ObjVsn} end, FirstAfter)), + orddict:map(fun(_, M) -> M?MANIFEST{prev_object_version = ObjVsn} end, FirstAfter)), riak_cs_manifest_fsm:stop(MPid1), M0?MANIFEST{next_object_version = FirstAfter?MANIFEST.object_version}; el/=se -> @@ -179,7 +178,7 @@ link_version2(M0 = ?MANIFEST{bkey = {Bucket, Key}}, ObjVsn, UUVVMM, RcPid) -> {ok, MPid2} = riak_cs_manifest_fsm:start_link(Bucket, Key, LastBefore, RcPid), riak_cs_manifest_fsm:update_manifests( MPid2, - ordsets:map(fun(_, M) -> M?MANIFEST{next_object_version = ObjVsn} end, LastBefore)), + orddict:map(fun(_, M) -> M?MANIFEST{next_object_version = ObjVsn} end, LastBefore)), riak_cs_manifest_fsm:stop(MPid2), M1?MANIFEST{prev_object_version = LastBefore?MANIFEST.object_version}; el/=se -> @@ -204,20 +203,6 @@ find_adjoining(V, UUVVMM, {Operand, Fun}) -> UUVVMM). - -%% -spec versioned_key(binary()) -> binary(). -%% versioned_key(Key) -> -%% Key. - --spec versioned_key(binary(), binary()) -> binary(). -versioned_key(Key, ?LFS_DEFAULT_OBJECT_VERSION) -> -%% old keys written without a version should continue to be accessible -%% for reads with the default version - Key; -versioned_key(Key, Vsn) -> - <>. - - -spec manifests_from_riak_object(riakc_obj:riakc_obj()) -> wrapped_manifest(). manifests_from_riak_object(RiakObject) -> %% For example, riak_cs_manifest_fsm:get_and_update/4 may wish to @@ -238,10 +223,10 @@ manifests_from_riak_object(RiakObject) -> %% Upgrade the manifests to be the latest erlang %% record version - Upgraded = riak_cs_manifest_utils:upgrade_wrapped_manifests(DecodedSiblings), + Upgraded = rcs_common_manifest_utils:upgrade_wrapped_manifests(DecodedSiblings), %% resolve the siblings - Resolved = riak_cs_manifest_resolution:resolve(Upgraded), + Resolved = rcs_common_manifest_resolution:resolve(Upgraded), %% prune old scheduled_delete manifests riak_cs_manifest_utils:prune(Resolved). @@ -268,12 +253,13 @@ object_acl(?MANIFEST{acl = Acl}) -> %% =================================================================== %% Retrieve the riak object at a bucket/key/version -get_manifests_raw(RcPid, Bucket, Key, ObjVsn) -> +get_manifests_raw(RcPid, Bucket, Key, Vsn) -> ManifestBucket = riak_cs_utils:to_bucket_name(objects, Bucket), ok = riak_cs_riak_client:set_bucket_name(RcPid, Bucket), {ok, ManifestPbc} = riak_cs_riak_client:manifest_pbc(RcPid), Timeout = riak_cs_config:get_manifest_timeout(), - case riakc_pb_socket:get(ManifestPbc, ManifestBucket, versioned_key(Key, ObjVsn), Timeout) of + case riakc_pb_socket:get(ManifestPbc, ManifestBucket, + rcs_common_manifest:make_versioned_key(Key, Vsn), Timeout) of {ok, _} = Result -> Result; {error, disconnected} -> @@ -284,7 +270,7 @@ get_manifests_raw(RcPid, Bucket, Key, ObjVsn) -> end. gc_deleted_while_writing_manifests(Object, Manifests, Bucket, RcPid) -> - UUIDs = riak_cs_manifest_utils:deleted_while_writing(Manifests), + UUIDs = rcs_common_manifest_utils:deleted_while_writing(Manifests), riak_cs_gc:gc_specific_manifests(UUIDs, Object, Bucket, RcPid). -spec maybe_warn_bloated_manifests(binary(), binary(), riakc_obj:riakc_obj(), [term()]) -> ok. diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl index d73b65097..6e1ba7a23 100644 --- a/apps/riak_cs/src/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/riak_cs_manifest_fsm.erl @@ -113,7 +113,7 @@ get_specific_manifest(Pid, UUID) -> end. add_new_manifest(Pid, Manifest) -> - Dict = riak_cs_manifest_utils:new_dict(Manifest?MANIFEST.uuid, Manifest), + Dict = rcs_common_manifest_utils:new_dict(Manifest?MANIFEST.uuid, Manifest), gen_fsm:send_event(Pid, {add_new_dict, Dict}). -spec update_manifests(pid(), wrapped_manifest()) -> ok. @@ -122,7 +122,7 @@ update_manifests(Pid, Manifests) -> -spec update_manifest(pid(), lfs_manifest()) -> ok. update_manifest(Pid, Manifest) -> - Dict = riak_cs_manifest_utils:new_dict(Manifest?MANIFEST.uuid, Manifest), + Dict = rcs_common_manifest_utils:new_dict(Manifest?MANIFEST.uuid, Manifest), update_manifests(Pid, Dict). %% @doc Delete a specific manifest version from a manifest and @@ -147,7 +147,7 @@ update_manifests_with_confirmation(Pid, Manifests) -> -spec update_manifest_with_confirmation(pid(), lfs_manifest()) -> ok | {error, term()}. update_manifest_with_confirmation(Pid, Manifest) -> - Dict = riak_cs_manifest_utils:new_dict(Manifest?MANIFEST.uuid, Manifest), + Dict = rcs_common_manifest_utils:new_dict(Manifest?MANIFEST.uuid, Manifest), update_manifests_with_confirmation(Pid, Dict). -spec maybe_stop_manifest_fsm(undefined | pid()) -> ok. @@ -324,9 +324,10 @@ handle_get_manifests(State = #state{riak_client = RcPid, %% delete the manifest corresponding to `UUID', and then %% write the value back to Riak or delete the manifest value %% if there are no manifests remaining. -get_and_delete(RcPid, UUID, Bucket, Key, ObjVsn) -> - case riak_cs_manifest:get_manifests(RcPid, Bucket, Key, ObjVsn) of +get_and_delete(RcPid, UUID, Bucket, Key, Vsn) -> + case riak_cs_manifest:get_manifests(RcPid, Bucket, Key, Vsn) of {ok, RiakObject, Manifests} -> + ok = riak_cs_manifest:unlink_version(RcPid, Bucket, Key, Manifests), UpdatedManifests = orddict:erase(UUID, Manifests), case UpdatedManifests of [] -> @@ -368,7 +369,7 @@ get_and_update(RcPid, WrappedManifests, Bucket, Key, ObjVsn) -> {error, notfound} -> ManifestBucket = riak_cs_utils:to_bucket_name(objects, Bucket), ObjectToWrite0 = riakc_obj:new(ManifestBucket, - riak_cs_manifest:versioned_key(Key, ObjVsn), + rcs_common_manifest:make_versioned_key(Key, ObjVsn), riak_cs_utils:encode_term(WrappedManifests)), ObjectToWrite = update_md_with_multipart_2i( ObjectToWrite0, WrappedManifests, Bucket), @@ -402,7 +403,7 @@ maybe_backpressure_sleep(Siblings, _BackpressureThreshold) -> true. update(RcPid, OldManifests, OldRiakObject, WrappedManifests, Bucket) -> - NewManiAdded = riak_cs_manifest_resolution:resolve([WrappedManifests, OldManifests]), + NewManiAdded = rcs_common_manifest_resolution:resolve([WrappedManifests, OldManifests]), %% Update the object here so that if there are any %% overwritten UUIDs, then gc_specific_manifests() will %% operate on NewManiAdded and save it to Riak when it is @@ -431,7 +432,7 @@ manifest_pbc(RcPid) -> ManifestPbc. update_from_previous_read(RcPid, RiakObject, Bucket, PreviousManifests, NewManifests) -> - Resolved = riak_cs_manifest_resolution:resolve([PreviousManifests, NewManifests]), + Resolved = rcs_common_manifest_resolution:resolve([PreviousManifests, NewManifests]), NewRiakObject0 = riak_cs_utils:update_obj_value(RiakObject, riak_cs_utils:encode_term(Resolved)), NewRiakObject = update_md_with_multipart_2i(NewRiakObject0, Resolved, Bucket), diff --git a/apps/riak_cs/src/riak_cs_manifest_resolution.erl b/apps/riak_cs/src/riak_cs_manifest_resolution.erl deleted file mode 100644 index 9cefe000d..000000000 --- a/apps/riak_cs/src/riak_cs_manifest_resolution.erl +++ /dev/null @@ -1,216 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - -%% @doc Module to resolve siblings with manifest records - --module(riak_cs_manifest_resolution). - --include("riak_cs.hrl"). - -%% export Public API --export([resolve/1]). - -%% =================================================================== -%% Public API -%% =================================================================== - -%% @doc Take a list of siblings -%% and resolve them to a single -%% value. In this case, siblings -%% and values are dictionaries whose -%% keys are UUIDs and whose values -%% are manifests. --spec resolve([wrapped_manifest()]) -> wrapped_manifest(). -resolve(Siblings) -> - lists:foldl(fun resolve_dicts/2, orddict:new(), Siblings). - -%% ==================================================================== -%% Internal functions -%% ==================================================================== - -%% @doc Take two dictionaries -%% of manifests and resolve them. -%% @private -resolve_dicts(A, B) -> - orddict:merge(fun resolve_manifests/3, A, B). - -%% @doc Take two manifests with -%% the same UUID and resolve them -%% @private -resolve_manifests(_Key, A, B) -> - AState = state_to_stage_number(A?MANIFEST.state), - BState = state_to_stage_number(B?MANIFEST.state), - resolve_manifests(AState, BState, A, B). - -state_to_stage_number(writing) -> 10; -state_to_stage_number(active) -> 20; -state_to_stage_number(pending_delete) -> 30; -state_to_stage_number(scheduled_delete) -> 40. - -%% @doc Return a new, resolved manifest. -%% The first two args are the state that -%% manifest A and B are in, respectively. -%% The third and fourth args, A, B, are the -%% manifests themselves. -%% @private -resolve_manifests(StageA, StageB, A, _B) when StageA > StageB -> - A; -resolve_manifests(StageA, StageB, _A, B) when StageB > StageA -> - B; -resolve_manifests(StageX, StageX, A, A) -> - A; -resolve_manifests(_, _, - ?MANIFEST{state = writing} = A, - ?MANIFEST{state = writing} = B) -> - WriteBlocksRemaining = resolve_written_blocks(A, B), - LastBlockWrittenTime = resolve_last_written_time(A, B), - Props = resolve_props(A, B), - A?MANIFEST{write_blocks_remaining = WriteBlocksRemaining, - last_block_written_time = LastBlockWrittenTime, - props = Props}; - -resolve_manifests(_, _, - ?MANIFEST{state = active,acl=A1Acl} = A, - ?MANIFEST{state = active,acl=A2Acl} = B) -> - Props = resolve_props(A, B), - case A1Acl?ACL.creation_time >= A2Acl?ACL.creation_time of - true -> - A?MANIFEST{props = Props}; - false -> - B?MANIFEST{props = Props} - end; - -resolve_manifests(_, _, - ?MANIFEST{state = pending_delete} = A, - ?MANIFEST{state = pending_delete} = B) -> - BlocksLeftToDelete = resolve_deleted_blocks(A, B), - LastDeletedTime = resolve_last_deleted_time(A, B), - A?MANIFEST{delete_blocks_remaining = BlocksLeftToDelete, - last_block_deleted_time = LastDeletedTime}; - -resolve_manifests(_, _, - ?MANIFEST{state = scheduled_delete} = A, - ?MANIFEST{state = scheduled_delete} = B) -> - BlocksLeftToDelete = resolve_deleted_blocks(A, B), - LastDeletedTime = resolve_last_deleted_time(A, B), - A?MANIFEST{delete_blocks_remaining = BlocksLeftToDelete, - last_block_deleted_time = LastDeletedTime}. - -resolve_written_blocks(A, B) -> - AWritten = A?MANIFEST.write_blocks_remaining, - BWritten = B?MANIFEST.write_blocks_remaining, - ordsets:intersection(AWritten, BWritten). - -resolve_deleted_blocks(A, B) -> - ADeleted = A?MANIFEST.delete_blocks_remaining, - BDeleted = B?MANIFEST.delete_blocks_remaining, - safe_intersection(ADeleted, BDeleted). - -resolve_props(A, B) -> - Ps_A = A?MANIFEST.props, - Ps_B = B?MANIFEST.props, - {_, _, New} = lists:foldl(fun resolve_a_prop/2, - {Ps_A, Ps_B, []}, - [fun resolve_prop_multipart/2, - fun resolve_prop_multipart_cleanup/2, - fun resolve_prop_block_bag/2]), - New. - -resolve_a_prop(Resolver, {Ps_A, Ps_B, Ps_merged}) -> - {_, _, New} = Resolver(Ps_A, Ps_B), - {Ps_A, Ps_B, New ++ Ps_merged}. - -resolve_prop_multipart(Ps_A, Ps_B) -> - case {proplists:get_value(multipart, Ps_A), - proplists:get_value(multipart, Ps_B)} of - {undefined, undefined} -> - {Ps_A, Ps_B, []}; - {undefined, B} -> - {Ps_A, Ps_B, [{multipart, B}]}; - {A, undefined} -> - {Ps_A, Ps_B, [{multipart, A}]}; - {A, B} -> - Parts = ordsets:union(A?MULTIPART_MANIFEST.parts, - B?MULTIPART_MANIFEST.parts), - DParts = ordsets:union(A?MULTIPART_MANIFEST.done_parts, - B?MULTIPART_MANIFEST.done_parts), - CParts = ordsets:union(A?MULTIPART_MANIFEST.cleanup_parts, - B?MULTIPART_MANIFEST.cleanup_parts), - MM = A?MULTIPART_MANIFEST{parts = Parts, done_parts = DParts, - cleanup_parts = CParts}, - {Ps_A, Ps_B, [{multipart, MM}]} - end. - -resolve_prop_multipart_cleanup(Ps_A, Ps_B) -> - case proplists:get_value(multipart_clean, Ps_A, false) orelse - proplists:get_value(multipart_clean, Ps_B, false) of - true -> - {Ps_A, Ps_B, [multipart_clean]}; - false -> - {Ps_A, Ps_B, []} - end. - -resolve_prop_block_bag(Ps_A, Ps_B) -> - case {proplists:get_value(block_bag, Ps_A), - proplists:get_value(block_bag, Ps_B)} of - {undefined, undefined} -> - {Ps_A, Ps_B, []}; - {BagId, BagId} when BagId =/= undefined -> - %% BagId is set at the start and not modified. - {Ps_A, Ps_B, [{block_bag, BagId}]} - end. - - -%% NOTE: -%% There was a bit of a gaff -%% and delete_blocks_remaining -%% was not set to an ordset -%% when the state was set to -%% pending_delete, so we have -%% to account for it being -%% `undefined` -safe_intersection(undefined, undefined) -> - %% if these are both - %% undefined, then - %% neither have ever had - %% delete_blocks_remaining set - %% as something meaningful, - %% so don't just change it - %% to they empty set. - undefined; -safe_intersection(A, undefined) -> - safe_intersection(A, []); -safe_intersection(undefined, B) -> - safe_intersection([], B); -safe_intersection(A, B) -> - ordsets:intersection(A, B). - -resolve_last_written_time(A, B) -> - ALastWritten = A?MANIFEST.last_block_written_time, - BLastWritten = B?MANIFEST.last_block_written_time, - latest_date(ALastWritten, BLastWritten). - -resolve_last_deleted_time(A, B) -> - ALastDeleted = A?MANIFEST.last_block_deleted_time, - BLastDeleted = B?MANIFEST.last_block_deleted_time, - latest_date(ALastDeleted, BLastDeleted). - -latest_date(A, B) -> erlang:max(A, B). diff --git a/apps/riak_cs/src/riak_cs_manifest_utils.erl b/apps/riak_cs/src/riak_cs_manifest_utils.erl index 209ddd8e7..ee97c5241 100644 --- a/apps/riak_cs/src/riak_cs_manifest_utils.erl +++ b/apps/riak_cs/src/riak_cs_manifest_utils.erl @@ -31,70 +31,19 @@ -endif. %% export Public API --export([new_dict/2, - active_manifest/1, - active_manifests/1, - active_and_writing_manifests/1, - overwritten_UUIDs/1, - deleted_while_writing/1, - mark_pending_delete/2, - mark_deleted/2, - mark_scheduled_delete/2, +-export([overwritten_UUIDs/1, manifests_to_gc/2, - prune/1, - prune/3, - upgrade_wrapped_manifests/1, - upgrade_manifest/1]). + prune/1]). %%%=================================================================== %%% API %%%=================================================================== -%% @doc Return a new orddict of manifest (only -%% one in this case). Used when storing something -%% in Riak when the previous GET returned notfound, -%% so we're (maybe) creating a new object. --spec new_dict(binary(), lfs_manifest()) -> orddict:orddict(). -new_dict(UUID, Manifest) -> - orddict:store(UUID, Manifest, orddict:new()). - -%% @doc Return the current active manifest -%% from an orddict of manifests. --spec active_manifest(orddict:orddict()) -> {ok, lfs_manifest()} | {error, no_active_manifest}. -active_manifest(Dict) -> - live_manifest(lists:foldl(fun most_recent_active_manifest/2, - {no_active_manifest, undefined}, orddict_values(Dict))). - -%% @doc Ensure the manifest hasn't been deleted during upload. --spec live_manifest(tuple()) -> {ok, lfs_manifest()} | {error, no_active_manifest}. -live_manifest({no_active_manifest, _}) -> - {error, no_active_manifest}; -live_manifest({Manifest, undefined}) -> - {ok, Manifest}; -live_manifest({Manifest, DeleteTime}) -> - case DeleteTime > Manifest?MANIFEST.write_start_time of - true -> - {error, no_active_manifest}; - false -> - {ok, Manifest} - end. - -%% @doc Return all active manifests --spec active_manifests(orddict:orddict()) -> [lfs_manifest()] | []. -active_manifests(Dict) -> - lists:filter(fun manifest_is_active/1, orddict_values(Dict)). - -%% @doc Return a list of all manifests in the -%% `active' or `writing' state --spec active_and_writing_manifests(orddict:orddict()) -> [{binary(), lfs_manifest()}]. -active_and_writing_manifests(Dict) -> - orddict:to_list(filter_manifests_by_state(Dict, [active, writing])). - %% @doc Extract all manifests that are not "the most active" %% and not actively writing (within the leeway period). -spec overwritten_UUIDs(orddict:orddict()) -> term(). overwritten_UUIDs(Dict) -> - case active_manifest(Dict) of + case rcs_common_manifest_utils:active_manifest(Dict) of {error, no_active_manifest} -> []; {ok, Active} -> @@ -144,58 +93,6 @@ handle_leeway_elaped_time(true, UUID, Acc) -> handle_leeway_elaped_time(false, _UUID, Acc) -> Acc. -%% @doc Return `Dict' with the manifests in -%% `UUIDsToMark' with their state changed to -%% `pending_delete' and {deleted, true} added to props. --spec mark_deleted(orddict:orddict(), list(binary())) -> - orddict:orddict(). -mark_deleted(Dict, UUIDsToMark) -> - MapFun = fun(K, V) -> - case lists:member(K, UUIDsToMark) of - true -> - V?MANIFEST{state = pending_delete, - delete_marked_time = os:timestamp(), - props=[{deleted, true} | V?MANIFEST.props]}; - false -> - V - end - end, - orddict:map(MapFun, Dict). - -%% @doc Return `Dict' with the manifests in -%% `UUIDsToMark' with their state changed to -%% `pending_delete' --spec mark_pending_delete(orddict:orddict(), list(binary())) -> - orddict:orddict(). -mark_pending_delete(Dict, UUIDsToMark) -> - MapFun = fun(K, V) -> - case lists:member(K, UUIDsToMark) of - true -> - V?MANIFEST{state = pending_delete, - delete_marked_time = os:timestamp()}; - false -> - V - end - end, - orddict:map(MapFun, Dict). - -%% @doc Return `Dict' with the manifests in -%% `UUIDsToMark' with their state changed to -%% `scheduled_delete' --spec mark_scheduled_delete(orddict:orddict(), list(cs_uuid())) -> - orddict:orddict(). -mark_scheduled_delete(Dict, UUIDsToMark) -> - MapFun = fun(K, V) -> - case lists:member(K, UUIDsToMark) of - true -> - V?MANIFEST{state=scheduled_delete, - scheduled_delete_time = os:timestamp()}; - false -> - V - end - end, - orddict:map(MapFun, Dict). - %% @doc Return a list of manifests that are either %% in `PendingDeleteUUIDs' or are in the `pending_delete' %% state and have been there for longer than the retry @@ -243,182 +140,13 @@ retry_from_marked_time(MarkedTime, Now) -> -spec prune(orddict:orddict()) -> orddict:orddict(). prune(Dict) -> MaxCount = riak_cs_gc:max_scheduled_delete_manifests(), - prune(Dict, erlang:timestamp(), MaxCount). - --spec prune(orddict:orddict(), - erlang:timestamp(), - unlimited | non_neg_integer()) -> orddict:orddict(). -prune(Dict, Time, MaxCount) -> - Filtered = orddict:filter(fun (_Key, Value) -> not needs_pruning(Value, Time) end, - Dict), - prune_count(Filtered, MaxCount). - --spec prune_count(orddict:orddict(), unlimited | non_neg_integer()) -> - orddict:orddict(). -prune_count(Manifests, unlimited) -> - Manifests; -prune_count(Manifests, MaxCount) -> - ScheduledDelete = filter_manifests_by_state(Manifests, [scheduled_delete]), - UUIDAndTime = [{M?MANIFEST.uuid, M?MANIFEST.scheduled_delete_time} || - {_UUID, M} <- ScheduledDelete], - case length(UUIDAndTime) > MaxCount of - true -> - SortedByTimeRecentFirst = lists:keysort(2, UUIDAndTime), - UUIDsToPrune = sets:from_list([UUID || {UUID, _ScheduledDeleteTime} <- - lists:nthtail(MaxCount, SortedByTimeRecentFirst)]), - orddict:filter(fun (UUID, _Value) -> not sets:is_element(UUID, UUIDsToPrune) end, - Manifests); - false -> - Manifests - end. - --spec upgrade_wrapped_manifests([wrapped_manifest()]) -> [wrapped_manifest()]. -upgrade_wrapped_manifests(ListofOrdDicts) -> - DictMapFun = fun(_Key, Value) -> upgrade_manifest(Value) end, - MapFun = fun(Value) -> orddict:map(DictMapFun, Value) end, - lists:map(MapFun, ListofOrdDicts). - -%% @doc Upgrade the manifest to the most recent -%% version of the manifest record. This is so that -%% _most_ of the codebase only has to deal with -%% the most recent version of the record. --spec upgrade_manifest(#lfs_manifest_v2{} | #lfs_manifest_v3{} | #lfs_manifest_v4{}) -> lfs_manifest(). -upgrade_manifest(#lfs_manifest_v2{block_size = BlockSize, - bkey = Bkey, - metadata = Metadata, - created = Created, - uuid = UUID, - content_length = ContentLength, - content_type = ContentType, - content_md5 = ContentMd5, - state = State, - write_start_time = WriteStartTime, - last_block_written_time = LastBlockWrittenTime, - write_blocks_remaining = WriteBlocksRemaining, - delete_marked_time = DeleteMarkedTime, - last_block_deleted_time = LastBlockDeletedTime, - delete_blocks_remaining = DeleteBlocksRemaining, - acl = Acl, - props = Props, - cluster_id = ClusterID}) -> - - upgrade_manifest(#lfs_manifest_v3{block_size = BlockSize, - bkey = Bkey, - metadata = Metadata, - created = Created, - uuid = UUID, - content_length = ContentLength, - content_type = ContentType, - content_md5 = ContentMd5, - state = State, - write_start_time = WriteStartTime, - last_block_written_time = LastBlockWrittenTime, - write_blocks_remaining = WriteBlocksRemaining, - delete_marked_time = DeleteMarkedTime, - last_block_deleted_time = LastBlockDeletedTime, - delete_blocks_remaining = DeleteBlocksRemaining, - acl = Acl, - props = fixup_props(Props), - cluster_id = ClusterID}); - -upgrade_manifest(#lfs_manifest_v3{block_size = BlockSize, - bkey = Bkey, - metadata = Metadata, - created = Created, - uuid = UUID, - content_length = ContentLength, - content_type = ContentType, - content_md5 = ContentMd5, - state = State, - write_start_time = WriteStartTime, - last_block_written_time = LastBlockWrittenTime, - write_blocks_remaining = WriteBlocksRemaining, - delete_marked_time = DeleteMarkedTime, - last_block_deleted_time = LastBlockDeletedTime, - delete_blocks_remaining = DeleteBlocksRemaining, - scheduled_delete_time = ScheduledDeleteTime, - acl = Acl, - props = Props, - cluster_id = ClusterID}) -> - - upgrade_manifest(#lfs_manifest_v4{block_size = BlockSize, - bkey = Bkey, - object_version = ?LFS_DEFAULT_OBJECT_VERSION, - metadata = Metadata, - created = Created, - uuid = UUID, - content_length = ContentLength, - content_type = ContentType, - content_md5 = ContentMd5, - state = State, - write_start_time = WriteStartTime, - last_block_written_time = LastBlockWrittenTime, - write_blocks_remaining = WriteBlocksRemaining, - delete_marked_time = DeleteMarkedTime, - last_block_deleted_time = LastBlockDeletedTime, - delete_blocks_remaining = DeleteBlocksRemaining, - scheduled_delete_time = ScheduledDeleteTime, - acl = Acl, - props = fixup_multipart_manifests_in_props(Props), - cluster_id = ClusterID}); -upgrade_manifest(M = #lfs_manifest_v4{}) -> - M. - - -fixup_props(undefined) -> - []; -fixup_props(Props) when is_list(Props) -> - Props. - -fixup_multipart_manifests_in_props(Props) -> - fixup_multipart_manifest( - proplists:get_value(multipart, Props), Props). - -fixup_multipart_manifest(undefined, Props) -> - Props; -fixup_multipart_manifest(MPM0 = ?MULTIPART_MANIFEST{parts = Parts0, - cleanup_parts = CleanupParts0}, Props) -> - F = fun(PM, Q) -> ordsets:add_element(upgrade_part_manifest(PM), Q) end, - MPM9 = MPM0?MULTIPART_MANIFEST{parts = ordsets:fold(F, ordsets:new(), Parts0), - cleanup_parts = ordsets:fold(F, ordsets:new(), CleanupParts0)}, - lists:keyreplace(multipart, 1, Props, MPM9). - -upgrade_part_manifest(#part_manifest_v1{bucket = Bucket, - key = Key, - start_time = StartTime, - part_number = PartNumber, - part_id = PartId, - content_length = ContentLength, - content_md5 = ContentMd5, - block_size = BlockSize}) -> - #part_manifest_v2{bucket = Bucket, - key = Key, - object_version = ?LFS_DEFAULT_OBJECT_VERSION, - start_time = StartTime, - part_number = PartNumber, - part_id = PartId, - content_length = ContentLength, - content_md5 = ContentMd5, - block_size = BlockSize}; -upgrade_part_manifest(M) -> - M. - - + rcs_common_manifest_utils:prune(Dict, erlang:timestamp(), MaxCount, riak_cs_gc:leeway_seconds()). %%%=================================================================== %%% Internal functions %%%=================================================================== -%% @doc Filter an orddict manifests and accept only manifests whose -%% current state is specified in the `AcceptedStates' list. --spec filter_manifests_by_state(orddict:orddict(), [atom()]) -> orddict:orddict(). -filter_manifests_by_state(Dict, AcceptedStates) -> - AcceptManifest = - fun(_, ?MANIFEST{state = State}) -> - lists:member(State, AcceptedStates) - end, - orddict:filter(AcceptManifest, Dict). -spec leeway_elapsed(undefined | erlang:timestamp()) -> boolean(). leeway_elapsed(undefined) -> @@ -427,109 +155,7 @@ leeway_elapsed(Timestamp) -> Now = riak_cs_utils:second_resolution_timestamp(os:timestamp()), Now > (riak_cs_utils:second_resolution_timestamp(Timestamp) + riak_cs_gc:leeway_seconds()). -orddict_values(OrdDict) -> - [V || {_K, V} <- orddict:to_list(OrdDict)]. - -manifest_is_active(?MANIFEST{state = active}) -> true; -manifest_is_active(_Manifest) -> false. - --spec delete_time(lfs_manifest()) -> erlang:timestamp() | undefined. -delete_time(Manifest) -> - case proplists:is_defined(deleted, Manifest?MANIFEST.props) of - true -> - Manifest?MANIFEST.delete_marked_time; - false -> - undefined - end. - -%% @doc Return all active manifests that have timestamps before the latest deletion -%% This happens when a manifest is still uploading while it is deleted. The upload -%% is allowed to complete, but is not visible afterwards. --spec deleted_while_writing(orddict:orddict()) -> [binary()]. -deleted_while_writing(Manifests) -> - ManifestList = orddict_values(Manifests), - DeleteTime = latest_delete_time(ManifestList), - find_deleted_active_manifests(ManifestList, DeleteTime). - --spec find_deleted_active_manifests([lfs_manifest()], term()) -> [cs_uuid()]. -find_deleted_active_manifests(_Manifests, undefined) -> - []; -find_deleted_active_manifests(Manifests, DeleteTime) -> - [M?MANIFEST.uuid || M <- Manifests, M?MANIFEST.state =:= active, - M?MANIFEST.write_start_time < DeleteTime]. - --spec latest_delete_time([lfs_manifest()]) -> term() | undefined. -latest_delete_time(Manifests) -> - lists:foldl(fun(M, Acc) -> - DeleteTime = delete_time(M), - later(DeleteTime, Acc) - end, undefined, Manifests). - -%% @doc Return the later of two times, accounting for undefined --spec later(undefined | erlang:timestamp(), undefined | erlang:timestamp()) -> - undefined | erlang:timestamp(). -later(undefined, undefined) -> - undefined; -later(undefined, DeleteTime2) -> - DeleteTime2; -later(DeleteTime1, undefined) -> - DeleteTime1; -later(DeleteTime1, DeleteTime2) -> - case DeleteTime1 > DeleteTime2 of - true -> - DeleteTime1; - false -> - DeleteTime2 - end. - -%% NOTE: This is a foldl function, initial acc = {no_active_manifest, undefined} -%% Return the most recent active manifest as well as the most recent manifest delete time --spec most_recent_active_manifest(lfs_manifest(), { - no_active_manifest | lfs_manifest(), undefined | erlang:timestamp()}) -> - {no_active_manifest | lfs_manifest(), erlang:timestamp() | undefined}. -most_recent_active_manifest(Manifest = ?MANIFEST{state = scheduled_delete}, - {MostRecent, undefined}) -> - {MostRecent, delete_time(Manifest)}; -most_recent_active_manifest(Manifest = ?MANIFEST{state = scheduled_delete}, - {MostRecent, DeleteTime}) -> - Dt = delete_time(Manifest), - {MostRecent, later(Dt, DeleteTime)}; -most_recent_active_manifest(Manifest = ?MANIFEST{state = pending_delete}, - {MostRecent, undefined}) -> - {MostRecent, delete_time(Manifest)}; -most_recent_active_manifest(Manifest = ?MANIFEST{state = pending_delete}, - {MostRecent, DeleteTime}) -> - Dt = delete_time(Manifest), - {MostRecent, later(Dt, DeleteTime)}; -most_recent_active_manifest(Manifest = ?MANIFEST{state = active}, - {no_active_manifest, undefined}) -> - {Manifest, undefined}; -most_recent_active_manifest(Man1 = ?MANIFEST{state = active}, - {Man2 = ?MANIFEST{state = active}, DeleteTime}) - when Man1?MANIFEST.write_start_time > Man2?MANIFEST.write_start_time -> - {Man1, DeleteTime}; -most_recent_active_manifest(_Man1 = ?MANIFEST{state = active}, - {Man2 = ?MANIFEST{state = active}, DeleteTime}) -> - {Man2, DeleteTime}; -most_recent_active_manifest(Man1 = ?MANIFEST{state = active}, - {no_active_manifest, DeleteTime}) -> - {Man1, DeleteTime}; -most_recent_active_manifest(_Man1, {Man2 = ?MANIFEST{state = active}, DeleteTime}) -> - {Man2, DeleteTime}; -most_recent_active_manifest(_Manifest, {MostRecent, DeleteTime}) -> - {MostRecent, DeleteTime}. - --spec needs_pruning(lfs_manifest(), erlang:timestamp()) -> boolean(). -needs_pruning(?MANIFEST{state = scheduled_delete, - scheduled_delete_time = ScheduledDeleteTime}, Time) -> - seconds_diff(Time, ScheduledDeleteTime) > riak_cs_gc:leeway_seconds(); -needs_pruning(_Manifest, _Time) -> - false. -seconds_diff(T2, T1) -> - TimeDiffMicrosends = timer:now_diff(T2, T1), - SecondsTime = TimeDiffMicrosends / (1000 * 1000), - erlang:trunc(SecondsTime). %% =================================================================== %% EUnit tests diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 0ee5f485e..04bda81c0 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -562,11 +562,11 @@ make_2i_key2(Bucket, OwnerStr) -> iolist_to_binary(["rcs@", OwnerStr, "@", Bucket, "_bin"]). -%% TODO: fix wrt object versions list_multipart_uploads2(Bucket, RcPid, Names, Opts) -> FilterFun = - fun(K, Acc) -> - filter_uploads_list(Bucket, K, ?LFS_DEFAULT_OBJECT_VERSION, Opts, RcPid, Acc) + fun(VK, Acc) -> + {Key, Vsn} = rcs_common_manifest:decompose_versioned_key(VK), + filter_uploads_list(Bucket, Key, Vsn, Opts, RcPid, Acc) end, {Manifests, Prefixes} = lists:foldl(FilterFun, {[], ordsets:new()}, Names), {lists:sort(Manifests), ordsets:to_list(Prefixes)}. @@ -646,13 +646,14 @@ handle_get_manifests_result({ok, _Obj, Manifests}) -> -spec multipart_description(?MANIFEST{}) -> ?MULTIPART_DESCR{}. multipart_description(?MANIFEST{bkey = {_, Key}, + object_version = Vsn, uuid = UUID, props = Props, created = Created}) -> ?MULTIPART_MANIFEST{owner = {OwnerDisplay, _, OwnerKeyId}} = proplists:get_value(multipart, Props), ?MULTIPART_DESCR{ - key = Key, + key = rcs_common_manifest:make_versioned_key(Key, Vsn), upload_id = UUID, owner_key_id = OwnerKeyId, owner_display = OwnerDisplay, @@ -735,19 +736,24 @@ comb_parts_fold({PartNum, ETag} = K, throw(bad_etag) end. -move_dead_parts_to_gc(Bucket, Key, ObjVsn, BagId, PartsToDelete, RcPid) -> +move_dead_parts_to_gc(Bucket, Key, Vsn, BagId, PartsToDelete, RcPid) -> PartDelMs = [{P_UUID, - riak_cs_lfs_utils:new_manifest( - Bucket, Key, ObjVsn, P_UUID, - ContentLength, - <<"x-delete/now">>, - undefined, - [], - P_BlockSize, - no_acl_yet, - [], - undefined, - BagId)} || + begin + M = riak_cs_lfs_utils:new_manifest( + Bucket, Key, P_UUID, + ContentLength, + <<"x-delete/now">>, + undefined, + [], + P_BlockSize, + no_acl_yet, + [], + undefined, + BagId), + %% this manifest is incomplete, but that's + %% sufficient for GC to do its job, right? + M?MANIFEST{object_version = Vsn} + end} || ?PART_MANIFEST{part_id=P_UUID, content_length=ContentLength, block_size=P_BlockSize} <- PartsToDelete], diff --git a/apps/riak_cs/src/riak_cs_storage_mr.erl b/apps/riak_cs/src/riak_cs_storage_mr.erl index b64dee7f1..31e1afebd 100644 --- a/apps/riak_cs/src/riak_cs_storage_mr.erl +++ b/apps/riak_cs/src/riak_cs_storage_mr.erl @@ -94,7 +94,7 @@ object_size_reduce(Sizes, _) -> -spec sum_objs(erlang:timestamp(), [cs_uuid_and_manifest()]) -> sum(). sum_objs(LeewayEdge, History) -> - case riak_cs_manifest_utils:active_manifest(History) of + case rcs_common_manifest_utils:active_manifest(History) of {ok, Active} -> {_, _, OBB} = objs_bytes_and_blocks(Active), Sum0 = add_to(#sum{}, #sum.user, OBB), @@ -236,7 +236,7 @@ summary_to_list([F|Fields], [{C, By, Bl}|Triples], Acc) -> object_size(Resolved) -> {MPparts, MPbytes} = count_multipart_parts(Resolved), - case riak_cs_manifest_utils:active_manifest(Resolved) of + case rcs_common_manifest_utils:active_manifest(Resolved) of {ok, ?MANIFEST{content_length=Length}} -> [{1 + MPparts, Length + MPbytes}]; _ -> diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index e856b9c8e..b88150064 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -180,7 +180,7 @@ map_keys_and_manifests({error, notfound}, _, _) -> []; map_keys_and_manifests(Object, _, _) -> Handler = fun(Resolved) -> - case riak_cs_manifest_utils:active_manifest(Resolved) of + case rcs_common_manifest_utils:active_manifest(Resolved) of {ok, Manifest} -> [{riak_object:key(Object), {ok, Manifest}}]; _ -> @@ -194,8 +194,8 @@ maybe_process_resolved(Object, ResolvedManifestsHandler, ErrorReturn) -> AllManifests = [ binary_to_term(V) || {_, V} = Content <- riak_object:get_contents(Object), not has_tombstone(Content) ], - Upgraded = riak_cs_manifest_utils:upgrade_wrapped_manifests(AllManifests), - Resolved = riak_cs_manifest_resolution:resolve(Upgraded), + Upgraded = rcs_common_manifest_utils:upgrade_wrapped_manifests(AllManifests), + Resolved = rcs_common_manifest_resolution:resolve(Upgraded), ResolvedManifestsHandler(Resolved) catch Type:Reason:StackTrace -> lager:error("Riak CS object mapreduce failed for ~p:~p with reason ~p:~p at ~p", @@ -241,7 +241,7 @@ md5_final(Ctx) -> crypto:hash_final(Ctx). {error, notfound}) -> {ok, lfs_manifest()} | {error, notfound}. active_manifest_from_response({ok, Manifests}) -> - handle_active_manifests(riak_cs_manifest_utils:active_manifest(Manifests)); + handle_active_manifests(rcs_common_manifest_utils:active_manifest(Manifests)); active_manifest_from_response({error, notfound}=NotFound) -> NotFound. diff --git a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl index a371090f8..795513c6b 100644 --- a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl +++ b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl @@ -201,7 +201,7 @@ default_acl(DisplayName, CannicalId, KeyId) -> new_manifest_ro(BucketName, RiakBucket, Key, Acl) -> ContentLength = 10, M = new_manifest(BucketName, Key, ContentLength, Acl), - Dict = riak_cs_manifest_utils:new_dict(M?MANIFEST.uuid, M), + Dict = rcs_common_manifest_utils:new_dict(M?MANIFEST.uuid, M), ValueBin = riak_cs_utils:encode_term(Dict), RObj = riakc_obj:new_obj(RiakBucket, Key, <<"vclock">>, [{dict:new(), ValueBin}]), @@ -229,7 +229,7 @@ manifests_to_robjs(Manifests) -> [manifest_to_robj(M) || M <- Manifests]. manifest_to_robj(?MANIFEST{bkey={Bucket, Key}, uuid=UUID}=M) -> - Dict = riak_cs_manifest_utils:new_dict(UUID, M), + Dict = rcs_common_manifest_utils:new_dict(UUID, M), ManifestBucket = riak_cs_utils:to_bucket_name(objects, Bucket), riakc_obj:new(ManifestBucket, Key, riak_cs_utils:encode_term(Dict)). diff --git a/apps/riak_cs/test/riak_cs_dummy_reader.erl b/apps/riak_cs/test/riak_cs_dummy_reader.erl index 0c1197092..df5d86050 100644 --- a/apps/riak_cs/test/riak_cs_dummy_reader.erl +++ b/apps/riak_cs/test/riak_cs_dummy_reader.erl @@ -55,6 +55,7 @@ block_size :: integer(), bucket :: binary(), key :: binary(), + obj_vsn :: binary(), caller_pid :: pid()}). -type state() :: #state{}. @@ -80,7 +81,7 @@ get_manifest(Pid) -> %% =================================================================== %% @doc Initialize the server. -init([CallerPid, Bucket, Key, ContentLength, BlockSize]) -> +init([CallerPid, Bucket, Key, Vsn, ContentLength, BlockSize]) -> process_flag(trap_exit, true), %% Get a connection to riak rand:seed(exsss, erlang:timestamp()), @@ -88,6 +89,7 @@ init([CallerPid, Bucket, Key, ContentLength, BlockSize]) -> remaining = ContentLength, bucket = Bucket, key = Key, + obj_vsn = Vsn, block_size = BlockSize, caller_pid = CallerPid}}. @@ -96,6 +98,7 @@ init([CallerPid, Bucket, Key, ContentLength, BlockSize]) -> {reply, ok, state()}. handle_call(get_manifest, _From, #state{bucket = Bucket, key = Key, + obj_vsn = Vsn, content_length = ContentLength} = State) -> Manifest = riak_cs_lfs_utils:new_manifest( Bucket, diff --git a/rebar.config b/rebar.config index 40051eab0..945645675 100644 --- a/rebar.config +++ b/rebar.config @@ -32,6 +32,7 @@ , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} + , {rcs_common, {git, "git://github.com/hmmr/rcs_common.git", {tag, "3.0.0"}}} ] }. diff --git a/rebar.lock b/rebar.lock index 22d5a74c9..5e75da650 100644 --- a/rebar.lock +++ b/rebar.lock @@ -35,6 +35,10 @@ {git,"https://github.com/okeuday/quickrand.git", {ref,"c80077162f32c10002219f70e0afadb71e05f88c"}}, 1}, + {<<"rcs_common">>, + {git,"git://github.com/hmmr/rcs_common.git", + {ref,"c62f9eea806dc75ceaafbf00f874119958559dba"}}, + 0}, {<<"riak_cs_multibag">>, {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {ref,"0e3cac45f8e138b1ac8eee1519d2f3da7b5273f6"}}, diff --git a/rel/tools/repair_gc_bucket.erl b/rel/tools/repair_gc_bucket.erl index 22d4e3e0b..a0cb7a9ca 100644 --- a/rel/tools/repair_gc_bucket.erl +++ b/rel/tools/repair_gc_bucket.erl @@ -275,7 +275,7 @@ get_actual_manifest_state(Pbc, Bucket, Key, UUID)-> case riakc_pb_socket:get(Pbc, RiakBucket, RiakKey, []) of {ok, RiakObj} -> ManifestDict = riak_cs_manifest:manifests_from_riak_object(RiakObj), - case riak_cs_manifest_utils:active_manifest(ManifestDict) of + case rcs_common_manifest_utils:active_manifest(ManifestDict) of {ok, ?MANIFEST{uuid=UUID}=M} -> {ok, M?MANIFEST.state}; {ok, ?MANIFEST{}} -> {ok, notfound}; {error, no_active_manifest} -> {ok, notfound} From 7d5b8ba135bb383586e6d962069b2ac5ce9ecd99 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 16 Aug 2021 15:15:38 +0300 Subject: [PATCH 185/831] append version when linking, don't assume versions are sorted --- apps/riak_cs/src/riak_cs_manifest.erl | 132 +++++++--------------- apps/riak_cs/src/riak_cs_manifest_fsm.erl | 4 +- apps/riak_cs/src/riak_cs_mp_utils.erl | 9 +- apps/riak_cs/src/riak_cs_put_fsm.erl | 27 +++-- 4 files changed, 61 insertions(+), 111 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl index 1c2e5a5ea..695978f57 100644 --- a/apps/riak_cs/src/riak_cs_manifest.erl +++ b/apps/riak_cs/src/riak_cs_manifest.erl @@ -25,8 +25,8 @@ get_manifests/4, get_manifests_of_all_versions/3, manifests_from_riak_object/1, - link_version/5, - unlink_version/4, + link_version/2, + unlink_version/2, etag/1, etag_no_quotes/1, object_acl/1]). @@ -57,12 +57,13 @@ get_manifests(RcPid, Bucket, Key, ObjVsn) -> -spec get_manifests_of_all_versions(riak_client(), binary(), binary()) -> - {ok, orddict:orddict(UUID::binary(), [{ObjVsn::binary(), wrapped_manifest()}])} | {error, term()}. + {ok, [{Vsn::binary(), lfs_manifest()}]} | {error, term()}. get_manifests_of_all_versions(RcPid, Bucket, Key) -> case get_manifests(RcPid, Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION) of - {ok, _, PrimaryM} -> + {ok, _, [{_, PrimaryM}|_]} -> try - {ok, orddict:map(fun(_, M) -> get_descendants(RcPid, Bucket, Key, M) end, PrimaryM)} + DD = get_descendants(RcPid, Bucket, Key, PrimaryM), + {ok, [{V, M} || M = ?MANIFEST{object_version = V} <- DD]} catch throw:manifest_retrieval_error -> {error, manifest_retrieval_error} @@ -74,27 +75,22 @@ get_manifests_of_all_versions(RcPid, Bucket, Key) -> get_descendants(Rc, B, K, M) -> lists:reverse( get_descendants(Rc, B, K, M, [])). -get_descendants(_, _, _, ThisM = ?MANIFEST{object_version = ThisOV, - next_object_version = eol}, Q) -> - [{ThisOV, ThisM} | Q]; -get_descendants(Rc, B, K, ThisM = ?MANIFEST{object_version = ThisOV, - next_object_version = NextOV}, Q) -> +get_descendants(_, _, _, ThisM = ?MANIFEST{next_object_version = eol}, Q) -> + [ThisM | Q]; +get_descendants(Rc, B, K, ThisM = ?MANIFEST{next_object_version = NextOV}, Q) -> case get_manifests(Rc, B, K, NextOV) of - {ok, _, NextM} -> - get_descendants(Rc, B, K, NextM, [{ThisOV, ThisM} | Q]); + {ok, _, [{_, NextM}|_]} -> + get_descendants(Rc, B, K, NextM, [ThisM | Q]); ER -> lager:warning("failed to get manifests for version ~s of ~s/~s (~p)", [NextOV, B, K, ER]), throw(manifest_retrieval_error) end. --spec unlink_version(riak_client(), binary(), binary(), lfs_manifest()) -> ok. -unlink_version(RcPid, Bucket, Key, ErasedM) -> - orddict:map(fun(_UUID, M) -> unlink_version2(RcPid, Bucket, Key, M) end, ErasedM), - ok. - -unlink_version2(RcPid, Bucket, Key, ?MANIFEST{next_object_version = NextOV, - prev_object_version = PrevOV}) -> +-spec unlink_version(riak_client(), lfs_manifest()) -> ok. +unlink_version(RcPid, ?MANIFEST{bkey = {Bucket, Key}, + next_object_version = NextOV, + prev_object_version = PrevOV}) -> if PrevOV /= eol -> {ok, ManiPid1} = riak_cs_manifest_fsm:start_link(Bucket, Key, PrevOV, RcPid), {ok, _, PrevM} = get_manifests(RcPid, Bucket, Key, PrevOV), @@ -117,90 +113,46 @@ unlink_version2(RcPid, Bucket, Key, ?MANIFEST{next_object_version = NextOV, end, ok. --spec link_version(nopid | riak_client(), binary(), binary(), lfs_manifest(), binary()) -> + +-spec link_version(nopid | riak_client(), lfs_manifest()) -> {sole | new | existing, lfs_manifest()}. -link_version(nopid, Bucket, Key, InsertedM, ObjVsn) -> +link_version(nopid, InsertedM) -> {ok, RcPid} = riak_cs_riak_client:checkout(), - Res = link_version(RcPid, Bucket, Key, InsertedM, ObjVsn), + Res = link_version(RcPid, InsertedM), riak_cs_riak_client:checkin(RcPid), Res; -link_version(RcPid, Bucket, Key, InsertedM, ObjVsn) -> +link_version(RcPid, InsertedM = ?MANIFEST{bkey = {Bucket, Key}, + object_version = Vsn}) -> case get_manifests_of_all_versions(RcPid, Bucket, Key) of - {ok, UUVVMM} -> - case find_version(ObjVsn, UUVVMM) of - {found, _M} -> + {ok, VVMM} -> + case orddict:find(Vsn, VVMM) of + {ok, _M} -> %% found a matching version: don't bother %% changing prev or next links. It will be resolved, later, I suppose? {existing, InsertedM}; - not_found -> - %% insert the supplied manifest - {new, link_version2(InsertedM, ObjVsn, UUVVMM, RcPid)} + error -> + {new, link_at_end(InsertedM, VVMM, RcPid)} end; {error, notfound} -> - {sole, InsertedM?MANIFEST{object_version = ObjVsn}} + {sole, InsertedM?MANIFEST{object_version = Vsn}} end. -find_version(V, UUVVMM) -> - orddict:fold( - fun(_, _, {found, _} = Found) -> - Found; - (_UUID, VVMM, _) -> - case lists:keyfind(V, 1, VVMM) of - false -> - continue_captain; - {_, M} -> - {found, M} - end - end, - not_found, - UUVVMM). - -link_version2(M0 = ?MANIFEST{bkey = {Bucket, Key}}, ObjVsn, UUVVMM, RcPid) -> - - LastBefore = find_adjoining(ObjVsn, UUVVMM, {'<', fun(L) -> L end}), - FirstAfter = find_adjoining(ObjVsn, UUVVMM, {'>', fun lists:reverse/1}), - - M1 = - if FirstAfter /= eol -> - {ok, MPid1} = riak_cs_manifest_fsm:start_link(Bucket, Key, FirstAfter, RcPid), - riak_cs_manifest_fsm:update_manifests( - MPid1, - orddict:map(fun(_, M) -> M?MANIFEST{prev_object_version = ObjVsn} end, FirstAfter)), - riak_cs_manifest_fsm:stop(MPid1), - M0?MANIFEST{next_object_version = FirstAfter?MANIFEST.object_version}; - el/=se -> - M0?MANIFEST{next_object_version = eol} - end, - - M2 = - if LastBefore /= eol -> - {ok, MPid2} = riak_cs_manifest_fsm:start_link(Bucket, Key, LastBefore, RcPid), - riak_cs_manifest_fsm:update_manifests( - MPid2, - orddict:map(fun(_, M) -> M?MANIFEST{next_object_version = ObjVsn} end, LastBefore)), - riak_cs_manifest_fsm:stop(MPid2), - M1?MANIFEST{prev_object_version = LastBefore?MANIFEST.object_version}; - el/=se -> - M1?MANIFEST{prev_object_version = eol} - end, - - M2?MANIFEST{object_version = ObjVsn}. - -find_adjoining(V, UUVVMM, {Operand, Fun}) -> - orddict:fold( - fun(_UUID, VVMM, eol) -> - case lists:search(fun({Vi, _}) -> Operand(V, Vi) end, Fun(VVMM)) of - false -> - eol; - {value, {_, M}} -> - M - end; - (_, _, Found) -> - Found - end, - eol, - UUVVMM). +link_at_end(M, [], _RcPid) -> + M; +link_at_end(M0 = ?MANIFEST{bkey = {Bucket, Key}, + object_version = Vsn}, VVMM, RcPid) -> + + {LastV, LastM = ?MANIFEST{uuid = LastUUID}} = lists:last(VVMM), + + {ok, MPid1} = riak_cs_manifest_fsm:start_link(Bucket, Key, LastV, RcPid), + riak_cs_manifest_fsm:update_manifests( + MPid1, + [{LastUUID, LastM?MANIFEST{next_object_version = Vsn}}]), + riak_cs_manifest_fsm:stop(MPid1), + + M0?MANIFEST{prev_object_version = LastV}. + -spec manifests_from_riak_object(riakc_obj:riakc_obj()) -> wrapped_manifest(). diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl index 6e1ba7a23..6c78466f0 100644 --- a/apps/riak_cs/src/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/riak_cs_manifest_fsm.erl @@ -326,8 +326,8 @@ handle_get_manifests(State = #state{riak_client = RcPid, %% if there are no manifests remaining. get_and_delete(RcPid, UUID, Bucket, Key, Vsn) -> case riak_cs_manifest:get_manifests(RcPid, Bucket, Key, Vsn) of - {ok, RiakObject, Manifests} -> - ok = riak_cs_manifest:unlink_version(RcPid, Bucket, Key, Manifests), + {ok, RiakObject, [{_, M0}|_] = Manifests} -> + ok = riak_cs_manifest:unlink_version(RcPid, M0), UpdatedManifests = orddict:erase(UUID, Manifests), case UpdatedManifests of [] -> diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 04bda81c0..543a0b139 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -315,7 +315,7 @@ write_new_manifest(?MANIFEST{bkey = {Bucket, Key}, Else end. -new_manifest(Bucket, Key, ObjVsn, ContentType, {_, _, _} = Owner, Opts) -> +new_manifest(Bucket, Key, Vsn, ContentType, {_, _, _} = Owner, Opts) -> UUID = uuid:get_v4(), %% TODO: add object metadata here, e.g. content-disposition et al. MetaData = case proplists:get_value(meta_data, Opts) of @@ -340,10 +340,9 @@ new_manifest(Bucket, Key, ObjVsn, ContentType, {_, _, _} = Owner, Opts) -> owner = Owner}, {VsnType, M9} = riak_cs_manifest:link_version( - nopid, Bucket, Key, - M?MANIFEST{props = replace_mp_manifest(MpM, M?MANIFEST.props)}, - ObjVsn), - lager:debug("created mp manifest for ~p version of ~s/~s:~s", [VsnType, Bucket, Key, ObjVsn]), + nopid, M?MANIFEST{props = replace_mp_manifest(MpM, M?MANIFEST.props), + object_version = Vsn}), + lager:debug("created mp manifest for ~p version of ~s/~s:~s", [VsnType, Bucket, Key, Vsn]), M9. diff --git a/apps/riak_cs/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl index 90381b450..d6678c857 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm.erl @@ -401,7 +401,7 @@ code_change(_OldVsn, StateName, State, _Extra) -> -spec prepare(#state{}) -> #state{}. prepare(State=#state{bucket = Bucket, key = Key, - obj_vsn = ObjVsn, + obj_vsn = Vsn, block_size = BlockSize, uuid = UUID, content_length = ContentLength, @@ -414,20 +414,19 @@ prepare(State=#state{bucket = Bucket, when is_integer(ContentLength), ContentLength >= 0 -> %% 1. start the manifest_fsm proc {ok, ManiPid} = maybe_riak_cs_manifest_fsm_start_link( - MakeNewManifestP, Bucket, Key, ObjVsn, RcPid), + MakeNewManifestP, Bucket, Key, Vsn, RcPid), ClusterID = riak_cs_mb_helper:cluster_id(BagId), - {VsnType, Manifest} = + Manifest0 = riak_cs_lfs_utils:new_manifest( + Bucket, Key, UUID, + ContentLength, ContentType, undefined, %% we don't know the md5 yet + Metadata, BlockSize, Acl, [], ClusterID, BagId), + {VsnType, Manifest1} = riak_cs_manifest:link_version( - RcPid, Bucket, Key, - riak_cs_lfs_utils:new_manifest( - Bucket, Key, UUID, - ContentLength, ContentType, undefined, %% we don't know the md5 yet - Metadata, BlockSize, Acl, [], ClusterID, BagId), - ObjVsn), - lager:debug("created manifest for ~p version of ~s/~s:~s", [VsnType, Bucket, Key, ObjVsn]), + RcPid, Manifest0?MANIFEST{object_version = Vsn}), + lager:debug("created manifest for ~p version of ~s/~s:~s", [VsnType, Bucket, Key, Vsn]), - NewManifest = Manifest?MANIFEST{write_start_time = os:timestamp()}, + Manifest2 = Manifest1?MANIFEST{write_start_time = os:timestamp()}, WriterPids = case ContentLength of 0 -> @@ -437,7 +436,7 @@ prepare(State=#state{bucket = Bucket, []; _ -> riak_cs_block_server:start_block_servers( - NewManifest, + Manifest2, RcPid, riak_cs_lfs_utils:put_concurrency()) end, @@ -450,8 +449,8 @@ prepare(State=#state{bucket = Bucket, %% and if it is, what should %% it be? TRef = erlang:send_after(60000, self(), save_manifest), - ok = maybe_add_new_manifest(ManiPid, NewManifest), - State#state{manifest = NewManifest, + ok = maybe_add_new_manifest(ManiPid, Manifest2), + State#state{manifest = Manifest2, timer_ref = TRef, mani_pid = ManiPid, max_buffer_size = MaxBufferSize, From 9b7bbc556df83d9405514ae322aa6382f9a7d53d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 16 Aug 2021 15:17:47 +0300 Subject: [PATCH 186/831] assorted dialyzer-assisted fixups --- apps/riak_cs/include/riak_cs.hrl | 2 +- apps/riak_cs/src/riak_cs_copy_object.erl | 8 ++++---- apps/riak_cs/src/riak_cs_mp_utils.erl | 8 ++++---- apps/riak_cs/src/riak_cs_wm_object_upload_part.erl | 3 +-- apps/riak_cs/src/riak_cs_wm_utils.erl | 8 ++++---- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index 7101b8c39..11d42cea8 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -63,7 +63,7 @@ putctype :: undefined | string(), bucket :: undefined | binary(), bucket_object :: undefined | notfound | riakc_obj:riakc_obj(), - key :: undefined | list(), + key :: undefined | binary(), obj_vsn = ?LFS_DEFAULT_OBJECT_VERSION :: binary(), owner :: undefined | string(), size :: undefined | non_neg_integer(), diff --git a/apps/riak_cs/src/riak_cs_copy_object.erl b/apps/riak_cs/src/riak_cs_copy_object.erl index 7a8b53cef..f9148dc5f 100644 --- a/apps/riak_cs/src/riak_cs_copy_object.erl +++ b/apps/riak_cs/src/riak_cs_copy_object.erl @@ -80,10 +80,10 @@ authorize_on_src(RcPid, SrcManifest, RD, _ = lager:debug("UserKey: ~p / ~p", [UserKey, User]), %% Build fake context for checking read access to the src object - OtherLocalCtx = LocalCtx#key_context{bucket=SrcBucket, - key=binary_to_list(SrcKey), - bucket_object=SrcBucketObj, - manifest=SrcManifest}, + OtherLocalCtx = LocalCtx#key_context{bucket = SrcBucket, + key = SrcKey, + bucket_object = SrcBucketObj, + manifest = SrcManifest}, OtherCtx = Ctx#context{local_context=OtherLocalCtx, acl=SrcBucketAcl, user=User, user_object=UserObj}, diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 543a0b139..8cec50124 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -61,7 +61,7 @@ %%%=================================================================== -spec calc_multipart_2i_dict([lfs_manifest()], binary()) -> - {string(), [{binary(), binary()}]}. + {binary(), [{binary(), binary()}]}. calc_multipart_2i_dict(Ms, Bucket) when is_list(Ms) -> %% According to API Version 2006-03-01, page 139-140, bucket %% owners have some privileges for multipart uploads performed by @@ -140,7 +140,7 @@ initiate_multipart_upload(Bucket, Key, ObjVsn, ContentType, {_,_,_} = Owner, -spec list_multipart_uploads(binary(), acl_owner3(), proplists:proplist(), nopid | pid()) -> - {[lfs_manifest()], [ordsets:ordset()]} | {error, term()}. + {ok, {[lfs_manifest()], [ordsets:ordset()]}} | {error, term()}. list_multipart_uploads(Bucket, {_Display, _Canon, CallerKeyId} = Caller, Opts, RcPidUnW) -> case wrap_riak_client(RcPidUnW) of @@ -194,7 +194,7 @@ list_parts(Bucket, Key, ObjVsn, UploadId, Caller, Opts, RcPidUnW) -> -spec upload_part(binary(), binary(), binary(), binary(), non_neg_integer(), non_neg_integer(), acl_owner3(), pid()) -> - {upload_part_ready, binary(), pid()} | {error, riak_unavailable}. + {upload_part_ready, binary(), pid()} | {error, riak_unavailable | notfound}. upload_part(Bucket, Key, ObjVsn, UploadId, PartNumber, Size, Caller, RcPidUnW) -> Extra = {Bucket, Key, ObjVsn, UploadId, Caller, PartNumber, Size}, do_part_common(upload_part, Bucket, Key, ObjVsn, UploadId, Caller, @@ -220,7 +220,7 @@ upload_part_1blob(PutPid, Blob) -> -spec upload_part_finished(binary(), binary(), binary(), binary(), non_neg_integer(), binary(), term(), acl_owner3(), pid()) -> - {ok, lfs_manifest()} | {error, any()}. + ok | {error, any()}. upload_part_finished(Bucket, Key, ObjVsn, UploadId, _PartNumber, PartUUID, MD5, Caller, RcPidUnW) -> diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl index 55f40bb2a..071833887 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl @@ -152,8 +152,7 @@ process_post(RD, Ctx = #context{riak_client = RcPid, end. response_location(Bucket, Key) -> - lists:append(["http://", - binary:bin_to_list(Bucket), ".", riak_cs_config:root_host(), "/", Key]). + iolist_to_binary(["http://", Bucket, ".", riak_cs_config:root_host(), "/", Key]). -spec valid_entity_length(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. valid_entity_length(RD, Ctx) -> diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index f9b9fb633..42d942934 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -281,11 +281,11 @@ ensure_doc(KeyCtx, _) -> setup_manifest(KeyCtx = #key_context{bucket = Bucket, key = Key, - obj_vsn = ObjVsn}, RcPid) -> + obj_vsn = Vsn}, RcPid) -> %% start the get_fsm FetchConcurrency = riak_cs_lfs_utils:fetch_concurrency(), BufferFactor = riak_cs_lfs_utils:get_fsm_buffer_size_factor(), - {ok, FsmPid} = riak_cs_get_fsm_sup:start_get_fsm(node(), Bucket, Key, ObjVsn, + {ok, FsmPid} = riak_cs_get_fsm_sup:start_get_fsm(node(), Bucket, Key, Vsn, self(), RcPid, FetchConcurrency, BufferFactor), @@ -448,14 +448,14 @@ extract_version_id(RD, Ctx = #context{local_context = LocalCtx0}) -> undefined -> ?LFS_DEFAULT_OBJECT_VERSION; V -> - V + list_to_binary(V) end, case size(VsnId) =< riak_cs_config:max_key_length() of true -> LocalCtx = LocalCtx0#key_context{obj_vsn = VsnId}, {ok, Ctx#context{local_context = LocalCtx}}; _ -> - {error, {key_too_long, length(VsnId)}} + {error, {key_too_long, size(VsnId)}} end. extract_name(User) when is_list(User) -> From e91cc09646b88f5ac605b126621f8d16932b8e65 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 16 Aug 2021 15:21:19 +0300 Subject: [PATCH 187/831] random touchups --- apps/riak_cs/src/riak_cs_copy_object.erl | 6 +++--- apps/riak_cs/src/riak_cs_mp_utils.erl | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_copy_object.erl b/apps/riak_cs/src/riak_cs_copy_object.erl index f9148dc5f..d060c7d9f 100644 --- a/apps/riak_cs/src/riak_cs_copy_object.erl +++ b/apps/riak_cs/src/riak_cs_copy_object.erl @@ -77,7 +77,7 @@ authorize_on_src(RcPid, SrcManifest, RD, {undefined, undefined} end, - _ = lager:debug("UserKey: ~p / ~p", [UserKey, User]), + lager:debug("UserKey: ~p / ~p", [UserKey, User]), %% Build fake context for checking read access to the src object OtherLocalCtx = LocalCtx#key_context{bucket = SrcBucket, @@ -101,8 +101,8 @@ authorize_on_src(RcPid, SrcManifest, RD, wrq:app_root(RD), wrq:disp_path(RD), OtherRD0), %% check the permission on ACL and Policy - _ = riak_cs_wm_utils:object_access_authorize_helper(object, false, - OtherRD, OtherCtx). + riak_cs_wm_utils:object_access_authorize_helper(object, false, + OtherRD, OtherCtx). -spec malformed_request(#wm_reqdata{}) -> false | diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 8cec50124..46d3c0508 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -124,9 +124,9 @@ clean_multipart_unused_parts(?MANIFEST{bkey = {Bucket, Key}, -spec complete_multipart_upload(binary(), binary(), binary(), binary(), binary(), string(), nopid | pid()) -> {ok, lfs_manifest()} | {error, atom()}. -complete_multipart_upload(Bucket, Key, ObjVsn, UploadId, PartETags, Caller, RcPidUnW) -> +complete_multipart_upload(Bucket, Key, Vsn, UploadId, PartETags, Caller, RcPidUnW) -> Extra = {PartETags}, - do_part_common(complete, Bucket, Key, ObjVsn, UploadId, Caller, [{complete, Extra}], + do_part_common(complete, Bucket, Key, Vsn, UploadId, Caller, [{complete, Extra}], RcPidUnW). From 2fe6fed7e5c5862ae50925e49584b08f0385798c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 16 Aug 2021 16:43:34 +0300 Subject: [PATCH 188/831] don't expect manifest props to ever be undefined --- apps/riak_cs/src/riak_cs_lfs_utils.erl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_lfs_utils.erl b/apps/riak_cs/src/riak_cs_lfs_utils.erl index 705d34772..20a0ed939 100644 --- a/apps/riak_cs/src/riak_cs_lfs_utils.erl +++ b/apps/riak_cs/src/riak_cs_lfs_utils.erl @@ -128,8 +128,6 @@ range_blocks(Start, End, SafeBlockSize, UUID) -> -spec block_sequences_for_manifest(lfs_manifest()) -> ordsets:ordset({binary(), integer()}). -block_sequences_for_manifest(?MANIFEST{props=undefined}=Manifest) -> - block_sequences_for_manifest(Manifest?MANIFEST{props=[]}); block_sequences_for_manifest(?MANIFEST{uuid=UUID, content_length=ContentLength}=Manifest)-> SafeBlockSize = safe_block_size_from_manifest(Manifest), @@ -145,8 +143,6 @@ block_sequences_for_manifest(?MANIFEST{uuid=UUID, -spec block_sequences_for_manifest(lfs_manifest(), {integer(), integer()}) -> {[{binary(), integer()}], integer(), integer()}. -block_sequences_for_manifest(?MANIFEST{props=undefined}=Manifest, {Start, End}) -> - block_sequences_for_manifest(Manifest?MANIFEST{props=[]}, {Start, End}); block_sequences_for_manifest(?MANIFEST{uuid=UUID}=Manifest, {Start, End})-> SafeBlockSize = safe_block_size_from_manifest(Manifest), From ec7df2ad3b5cc3c80b52a000c12f9eb45f6b9e25 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 16 Aug 2021 16:45:13 +0300 Subject: [PATCH 189/831] deal with notfound in get_manifests_of_all_versions --- apps/riak_cs/src/riak_cs_manifest.erl | 9 ++++++++- apps/riak_cs/src/riak_cs_manifest_fsm.erl | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl index 695978f57..a80b422d4 100644 --- a/apps/riak_cs/src/riak_cs_manifest.erl +++ b/apps/riak_cs/src/riak_cs_manifest.erl @@ -60,6 +60,8 @@ get_manifests(RcPid, Bucket, Key, ObjVsn) -> {ok, [{Vsn::binary(), lfs_manifest()}]} | {error, term()}. get_manifests_of_all_versions(RcPid, Bucket, Key) -> case get_manifests(RcPid, Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION) of + {ok, _, []} -> + {error, notfound}; {ok, _, [{_, PrimaryM}|_]} -> try DD = get_descendants(RcPid, Bucket, Key, PrimaryM), @@ -87,7 +89,12 @@ get_descendants(Rc, B, K, ThisM = ?MANIFEST{next_object_version = NextOV}, Q) -> end. --spec unlink_version(riak_client(), lfs_manifest()) -> ok. +-spec unlink_version(riak_client(), wrapped_manifest() | lfs_manifest()) -> ok. +unlink_version(_RcPid, []) -> + ok; +unlink_version(RcPid, [{_, M}|_]) -> + unlink_version(RcPid, M); + unlink_version(RcPid, ?MANIFEST{bkey = {Bucket, Key}, next_object_version = NextOV, prev_object_version = PrevOV}) -> diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl index 6c78466f0..05e4e4006 100644 --- a/apps/riak_cs/src/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/riak_cs_manifest_fsm.erl @@ -326,8 +326,8 @@ handle_get_manifests(State = #state{riak_client = RcPid, %% if there are no manifests remaining. get_and_delete(RcPid, UUID, Bucket, Key, Vsn) -> case riak_cs_manifest:get_manifests(RcPid, Bucket, Key, Vsn) of - {ok, RiakObject, [{_, M0}|_] = Manifests} -> - ok = riak_cs_manifest:unlink_version(RcPid, M0), + {ok, RiakObject, Manifests} -> + ok = riak_cs_manifest:unlink_version(RcPid, Manifests), UpdatedManifests = orddict:erase(UUID, Manifests), case UpdatedManifests of [] -> From 024684eb12a80003ba589860c4221f6cd4a107b8 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 16 Aug 2021 16:45:42 +0300 Subject: [PATCH 190/831] another spec error spotted by dialyzer --- apps/riak_cs/src/riak_cs_mp_utils.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 46d3c0508..e90b8405a 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -140,7 +140,7 @@ initiate_multipart_upload(Bucket, Key, ObjVsn, ContentType, {_,_,_} = Owner, -spec list_multipart_uploads(binary(), acl_owner3(), proplists:proplist(), nopid | pid()) -> - {ok, {[lfs_manifest()], [ordsets:ordset()]}} | {error, term()}. + {ok, {[multipart_descr()], [ordsets:ordset()]}} | {error, term()}. list_multipart_uploads(Bucket, {_Display, _Canon, CallerKeyId} = Caller, Opts, RcPidUnW) -> case wrap_riak_client(RcPidUnW) of From 7128bf9995d43842bc8f502f03bb799942a6da64 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 16 Aug 2021 16:46:12 +0300 Subject: [PATCH 191/831] correct rcs_common sha in rebar.lock --- rebar.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.lock b/rebar.lock index 5e75da650..bccc04bdd 100644 --- a/rebar.lock +++ b/rebar.lock @@ -37,7 +37,7 @@ 1}, {<<"rcs_common">>, {git,"git://github.com/hmmr/rcs_common.git", - {ref,"c62f9eea806dc75ceaafbf00f874119958559dba"}}, + {ref,"f9b6d6080792fa25699e6b4694332c5ff09beb95"}}, 0}, {<<"riak_cs_multibag">>, {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", From 2fd791f75616c949aabdbd9051aba62f4f5c6f19 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 16 Aug 2021 22:15:47 +0300 Subject: [PATCH 192/831] correctly thread object version from manifest in ListObjectVersions flow --- apps/riak_cs/src/riak_cs_list_objects.erl | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_list_objects.erl b/apps/riak_cs/src/riak_cs_list_objects.erl index d92c2dc84..dcba8cdfd 100644 --- a/apps/riak_cs/src/riak_cs_list_objects.erl +++ b/apps/riak_cs/src/riak_cs_list_objects.erl @@ -101,7 +101,7 @@ manifest_to_keycontent(ReqType, ?MANIFEST{bkey = {_Bucket, Key}, created = Created, content_md5 = ContentMd5, content_length = ContentLength, - metadata = Metadata, + object_version = Vsn, acl = ACL}) -> LastModified = list_to_binary(riak_cs_wm_utils:to_iso_8601(Created)), @@ -117,13 +117,7 @@ manifest_to_keycontent(ReqType, ?MANIFEST{bkey = {_Bucket, Key}, case ReqType of versions -> - VersionId = - case orddict:find(version_id, Metadata) of - {ok, V} -> - V; - error -> - ?LFS_DEFAULT_OBJECT_VERSION - end, + VersionId = Vsn, ?LOVKC{key = Key, last_modified = LastModified, etag = Etag, From cf52ba236f715b06c81696545a435196f9c43856 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 16 Aug 2021 22:17:16 +0300 Subject: [PATCH 193/831] fix linking versions for sole new manifests --- apps/riak_cs/src/riak_cs_manifest.erl | 12 ++++++------ apps/riak_cs/src/riak_cs_put_fsm.erl | 19 ++++++++++++------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl index a80b422d4..8548a1ba9 100644 --- a/apps/riak_cs/src/riak_cs_manifest.erl +++ b/apps/riak_cs/src/riak_cs_manifest.erl @@ -133,7 +133,7 @@ link_version(RcPid, InsertedM = ?MANIFEST{bkey = {Bucket, Key}, object_version = Vsn}) -> case get_manifests_of_all_versions(RcPid, Bucket, Key) of {ok, VVMM} -> - case orddict:find(Vsn, VVMM) of + case orddict:find(Vsn, orddict:from_list(VVMM)) of {ok, _M} -> %% found a matching version: don't bother %% changing prev or next links. It will be resolved, later, I suppose? @@ -142,7 +142,8 @@ link_version(RcPid, InsertedM = ?MANIFEST{bkey = {Bucket, Key}, {new, link_at_end(InsertedM, VVMM, RcPid)} end; {error, notfound} -> - {sole, InsertedM?MANIFEST{object_version = Vsn}} + lager:info("ignoring user-supplied object version ~p as this is the single version", [Vsn]), + {sole, InsertedM?MANIFEST{object_version = ?LFS_DEFAULT_OBJECT_VERSION}} end. link_at_end(M, [], _RcPid) -> @@ -150,12 +151,11 @@ link_at_end(M, [], _RcPid) -> link_at_end(M0 = ?MANIFEST{bkey = {Bucket, Key}, object_version = Vsn}, VVMM, RcPid) -> - {LastV, LastM = ?MANIFEST{uuid = LastUUID}} = lists:last(VVMM), + {LastV, LastM} = lists:last(VVMM), {ok, MPid1} = riak_cs_manifest_fsm:start_link(Bucket, Key, LastV, RcPid), - riak_cs_manifest_fsm:update_manifests( - MPid1, - [{LastUUID, LastM?MANIFEST{next_object_version = Vsn}}]), + ok = riak_cs_manifest_fsm:update_manifest_with_confirmation( + MPid1, LastM?MANIFEST{next_object_version = Vsn}), riak_cs_manifest_fsm:stop(MPid1), M0?MANIFEST{prev_object_version = LastV}. diff --git a/apps/riak_cs/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl index d6678c857..42b734413 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm.erl @@ -401,7 +401,7 @@ code_change(_OldVsn, StateName, State, _Extra) -> -spec prepare(#state{}) -> #state{}. prepare(State=#state{bucket = Bucket, key = Key, - obj_vsn = Vsn, + obj_vsn = Vsn0, block_size = BlockSize, uuid = UUID, content_length = ContentLength, @@ -412,19 +412,21 @@ prepare(State=#state{bucket = Bucket, make_new_manifest_p = MakeNewManifestP, bag_id = BagId}) when is_integer(ContentLength), ContentLength >= 0 -> - %% 1. start the manifest_fsm proc - {ok, ManiPid} = maybe_riak_cs_manifest_fsm_start_link( - MakeNewManifestP, Bucket, Key, Vsn, RcPid), ClusterID = riak_cs_mb_helper:cluster_id(BagId), + %% 0. prepare manifest Manifest0 = riak_cs_lfs_utils:new_manifest( Bucket, Key, UUID, ContentLength, ContentType, undefined, %% we don't know the md5 yet Metadata, BlockSize, Acl, [], ClusterID, BagId), - {VsnType, Manifest1} = + {VsnType, Manifest1 = ?MANIFEST{object_version = Vsn1}} = riak_cs_manifest:link_version( - RcPid, Manifest0?MANIFEST{object_version = Vsn}), - lager:debug("created manifest for ~p version of ~s/~s:~s", [VsnType, Bucket, Key, Vsn]), + RcPid, Manifest0?MANIFEST{object_version = Vsn0}), + lager:debug("created manifest for ~p version of ~s/~s:~s", [VsnType, Bucket, Key, Vsn1]), + + %% 1. start the manifest_fsm proc + {ok, ManiPid} = maybe_riak_cs_manifest_fsm_start_link( + MakeNewManifestP, Bucket, Key, Vsn1, RcPid), Manifest2 = Manifest1?MANIFEST{write_start_time = os:timestamp()}, @@ -451,6 +453,9 @@ prepare(State=#state{bucket = Bucket, TRef = erlang:send_after(60000, self(), save_manifest), ok = maybe_add_new_manifest(ManiPid, Manifest2), State#state{manifest = Manifest2, + %% possibly null, ignoring user-supplied Vsn0 unless a + %% primary version already exists + obj_vsn = Vsn1, timer_ref = TRef, mani_pid = ManiPid, max_buffer_size = MaxBufferSize, From e679430425b6835c2683cfb6dd35b17f4fd92714 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 16 Aug 2021 22:21:14 +0300 Subject: [PATCH 194/831] make PutObject versionId aware --- apps/riak_cs/src/riak_cs_wm_object.erl | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index cb65a4f5a..a105f520d 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -332,12 +332,14 @@ handle_normal_put(RD, Ctx) -> riak_client=RcPid} = Ctx, #key_context{bucket = Bucket, key = Key, - obj_vsn = ObjVsn, + obj_vsn = SuppliedVsn, putctype = ContentType, size = Size, get_fsm_pid = GetFsmPid} = LocalCtx, - BFile_str = bfile_str(Bucket, Key, ObjVsn), + Vsn = determine_object_version(SuppliedVsn, Bucket, Key, RcPid), + + BFile_str = bfile_str(Bucket, Key, Vsn), UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_object_entry(?MODULE, <<"object_put">>, [], [UserName, BFile_str]), @@ -345,7 +347,7 @@ handle_normal_put(RD, Ctx) -> Metadata = riak_cs_wm_utils:extract_user_metadata(RD), BlockSize = riak_cs_lfs_utils:block_size(), - Args = [{Bucket, Key, ObjVsn, Size, list_to_binary(ContentType), + Args = [{Bucket, Key, Vsn, Size, list_to_binary(ContentType), Metadata, BlockSize, ACL, timer:seconds(60), self(), RcPid}], {ok, Pid} = riak_cs_put_fsm_sup:start_put_fsm(node(), Args), try @@ -361,6 +363,23 @@ handle_normal_put(RD, Ctx) -> error({Type, Error}) end. +determine_object_version(Vsn0, Bucket, Key, RcPid) -> + case {Vsn0, riak_cs_bucket:get_bucket_versioning(Bucket, RcPid)} of + {?LFS_DEFAULT_OBJECT_VERSION, {ok, #bucket_versioning{status = enabled}}} -> + Vsn1 = list_to_binary(riak_cs_utils:binary_to_hexlist(uuid:get_v4())), + lager:info("bucket \"~s\" has object versioning enabled," + " autogenerating version ~p for key ~p", [Bucket, Vsn1, Key]), + Vsn1; + {_, {ok, #bucket_versioning{status = enabled}}} -> + lager:info("bucket \"~s\" has object versioning enabled" + " but using ~p as supplied in request for key ~p", [Bucket, Vsn0, Key]), + Vsn0; + {Vsn3, {ok, #bucket_versioning{status = suspended}}} -> + lager:warning("ignoring object version ~p in request for key ~p in bucket \"~s\"" + " as the bucket has object versioning suspended", [Vsn3, Key, Bucket]), + Vsn0 + end. + %% @doc the head is PUT copy path -spec handle_copy_put(#wm_reqdata{}, #context{}, binary(), binary(), binary()) -> {boolean()|{halt, integer()}, #wm_reqdata{}, #context{}}. From b3741886d0de6d981f80747e405807d3e5ec5b2b Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 17 Aug 2021 12:16:27 +0300 Subject: [PATCH 195/831] repoint rcs_common dep to TI-Tokyo repo --- rebar.config | 2 +- rebar.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index 945645675..20352dce3 100644 --- a/rebar.config +++ b/rebar.config @@ -32,7 +32,7 @@ , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} - , {rcs_common, {git, "git://github.com/hmmr/rcs_common.git", {tag, "3.0.0"}}} + , {rcs_common, {git, "git://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.0"}}} ] }. diff --git a/rebar.lock b/rebar.lock index bccc04bdd..b567916f5 100644 --- a/rebar.lock +++ b/rebar.lock @@ -36,7 +36,7 @@ {ref,"c80077162f32c10002219f70e0afadb71e05f88c"}}, 1}, {<<"rcs_common">>, - {git,"git://github.com/hmmr/rcs_common.git", + {git,"git://github.com/TI-Tokyo/rcs_common.git", {ref,"f9b6d6080792fa25699e6b4694332c5ff09beb95"}}, 0}, {<<"riak_cs_multibag">>, From c8c1776c55a7d27ae972724986786df8aed1e2d7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 18 Aug 2021 13:45:32 +0300 Subject: [PATCH 196/831] extend s3_rewrite to work with versions --- apps/riak_cs/src/riak_cs_s3_rewrite.erl | 38 +++++++++++++++++++------ apps/riak_cs/src/riak_cs_web.erl | 8 ++++-- apps/riak_cs/src/riak_cs_wm_utils.erl | 4 +-- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/riak_cs_s3_rewrite.erl index 35d524cae..80a789e13 100644 --- a/apps/riak_cs/src/riak_cs_s3_rewrite.erl +++ b/apps/riak_cs/src/riak_cs_s3_rewrite.erl @@ -213,26 +213,46 @@ format_bucket_qs(_Method, QueryParams, SubResources) -> %% rewrite rules. -spec format_object_qs({subresources(), query_params()}) -> string(). format_object_qs({SubResources, QueryParams}) -> + HaveAcl = (proplists:get_value("acl", SubResources) /= undefined), + HaveUploads = (proplists:get_value("uploads", SubResources) /= undefined), UploadId = proplists:get_value("uploadId", SubResources, []), PartNum = proplists:get_value("partNumber", SubResources, []), - format_object_qs(SubResources, QueryParams, UploadId, PartNum). + VersionId = proplists:get_value("versionId", SubResources, binary_to_list(?LFS_DEFAULT_OBJECT_VERSION)), + format_object_qs(SubResources, QueryParams, #{have_acl => HaveAcl, + have_uploads => HaveUploads, + version_id => VersionId, + upload_id => UploadId, + part_num => PartNum}). %% @doc Format an object operation query string to conform the the %% rewrite rules. --spec format_object_qs(subresources(), query_params(), string(), string()) -> string(). -format_object_qs(SubResources, QueryParams, [], []) -> - [format_subresources(SubResources), format_query_params(QueryParams)]; -format_object_qs(_SubResources, QueryParams, UploadId, []) -> - ["/uploads/", UploadId, format_query_params(QueryParams)]; -format_object_qs(_SubResources, QueryParams, UploadId, PartNum) -> - ["/uploads/", UploadId, format_query_params([{"partNumber", PartNum} | QueryParams])]. +format_object_qs(_SubResources, QueryParams, #{have_acl := true}) -> + ["/acl", format_query_params(QueryParams)]; +format_object_qs(_SubResources, QueryParams, #{have_uploads := true, + version_id := VersionId}) -> + ["/versions/", VersionId, "/uploads", format_query_params(QueryParams)]; + +format_object_qs(SubResources, QueryParams, #{version_id := VersionId, + upload_id := [], + part_num := []}) -> + ["/versions/", VersionId, format_subresources(SubResources), format_query_params(QueryParams)]; +format_object_qs(_SubResources, QueryParams, #{version_id := VersionId, + upload_id := UploadId, + part_num := []}) -> + ["/versions/", VersionId, "/uploads/", UploadId, format_query_params(QueryParams)]; +format_object_qs(_SubResources, QueryParams, #{version_id := VersionId, + upload_id := UploadId, + part_num := PartNum}) -> + ["/versions/", VersionId, "/uploads/", UploadId, format_query_params([{"partNumber", PartNum} | QueryParams])]. %% @doc Format a string that expresses the subresource request %% that can be appended to the URL. -spec format_subresources(subresources()) -> string(). format_subresources([]) -> []; -format_subresources([{Key, []} | _]) -> +format_subresources([{"versionId", _}]) -> + []; +format_subresources([{Key, []}]) -> ["/", Key]. %% @doc Format a proplist of query parameters into a string diff --git a/apps/riak_cs/src/riak_cs_web.erl b/apps/riak_cs/src/riak_cs_web.erl index 09b6bc661..caf4ce587 100644 --- a/apps/riak_cs/src/riak_cs_web.erl +++ b/apps/riak_cs/src/riak_cs_web.erl @@ -73,14 +73,16 @@ base_resources() -> {["buckets", bucket, "delete"], riak_cs_wm_common, props(riak_cs_wm_bucket_delete)}, {["buckets", bucket, "acl"], riak_cs_wm_common, props(riak_cs_wm_bucket_acl)}, {["buckets", bucket, "location"], riak_cs_wm_common, props(riak_cs_wm_bucket_location)}, - %% No dynamic contents, almost stub {["buckets", bucket, "versioning"], riak_cs_wm_common, props(riak_cs_wm_bucket_versioning)}, + {["buckets", bucket, "versions"], riak_cs_wm_common, props(riak_cs_wm_object_versions)}, + %% No dynamic contents, almost stub {["buckets", bucket, "requestPayment"], riak_cs_wm_common, props(riak_cs_wm_bucket_request_payment)}, %% NYI - {["buckets", bucket, "versions"], riak_cs_wm_common, props(riak_cs_wm_object_versions)}, {["buckets", bucket, "lifecycle"], riak_cs_wm_common, props(riak_cs_wm_not_implemented)}, %% Object resources - {["buckets", bucket, "objects", object], riak_cs_wm_common, props(riak_cs_wm_object)}, + {["buckets", bucket, "objects", object, "versions", versionId], riak_cs_wm_common, props(riak_cs_wm_object)}, + {["buckets", bucket, "objects", object, "versions", versionId, "uploads", uploadId], riak_cs_wm_common, props(riak_cs_wm_object_upload_part)}, + {["buckets", bucket, "objects", object, "versions", versionId, "uploads"], riak_cs_wm_common, props(riak_cs_wm_object_upload)}, {["buckets", bucket, "objects", object, "acl"], riak_cs_wm_common, props(riak_cs_wm_object_acl)} ]. diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index 42d942934..1d9ad336b 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -444,11 +444,11 @@ extract_key(RD, Ctx = #context{local_context = LocalCtx0}) -> extract_version_id(RD, Ctx = #context{local_context = LocalCtx0}) -> VsnId = - case wrq:get_qs_value(?QS_VERSION_ID, RD) of + case wrq:path_info(versionId, RD) of undefined -> ?LFS_DEFAULT_OBJECT_VERSION; V -> - list_to_binary(V) + list_to_binary(mochiweb_util:unquote(mochiweb_util:unquote(V))) end, case size(VsnId) =< riak_cs_config:max_key_length() of true -> From 1d934280a21df604fcc8384a50e63876c90eea8a Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 18 Aug 2021 13:48:12 +0300 Subject: [PATCH 197/831] fix wm_object_acl handler to work with versions --- apps/riak_cs/src/riak_cs_wm_object_acl.erl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_wm_object_acl.erl b/apps/riak_cs/src/riak_cs_wm_object_acl.erl index bfd38b2d1..65da743d4 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_acl.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_acl.erl @@ -148,14 +148,15 @@ content_types_accepted(RD, Ctx=#context{local_context=LocalCtx0}) -> produce_body(RD, Ctx=#context{local_context=LocalCtx, requested_perm='READ_ACP', user=User}) -> - #key_context{get_fsm_pid=GetFsmPid, manifest=Mfst} = LocalCtx, - {Bucket, File} = Mfst?MANIFEST.bkey, - BFile_str = [Bucket, $,, File], + #key_context{get_fsm_pid = GetFsmPid, + manifest = ?MANIFEST{bkey = {Bucket, File}, + object_version = Vsn, + acl = Acl}} = LocalCtx, + BFile_str = bfile_str(Bucket, File, Vsn), UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_object_entry(?MODULE, <<"object_acl_get">>, [], [UserName, BFile_str]), riak_cs_get_fsm:stop(GetFsmPid), - Acl = Mfst?MANIFEST.acl, {AclXml, DtraceTag} = case Acl of no_acl_yet -> {riak_cs_acl_utils:empty_acl_xml(), -1}; _ -> {riak_cs_xml:to_xml(Acl), -2} From a7fe79015df0b50ddd04ba9ee2f4acc2468d41a1 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 19 Aug 2021 23:27:34 +0300 Subject: [PATCH 198/831] provisional fix for deletion of version manifests --- apps/riak_cs/src/riak_cs_gc.erl | 1 + apps/riak_cs/src/riak_cs_manifest.erl | 29 ++++++++++++----------- apps/riak_cs/src/riak_cs_manifest_fsm.erl | 2 +- rebar.config | 2 +- rebar.lock | 2 +- 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl index de5c781b8..993a04057 100644 --- a/apps/riak_cs/src/riak_cs_gc.erl +++ b/apps/riak_cs/src/riak_cs_gc.erl @@ -460,6 +460,7 @@ move_manifests_to_gc_bucket(Manifests, RcPid) -> %% Create a set from the list of manifests lager:debug("Manifests scheduled for deletion: ~p", [ManifestSet]), + ok = riak_cs_manifest:unlink_version(RcPid, Manifests), Timeout1 = riak_cs_config:put_gckey_timeout(), riak_cs_pbc:put(ManifestPbc, ObjectToWrite, [], Timeout1, [riakc, put_gc_manifest_set]). diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl index 8548a1ba9..f7735895a 100644 --- a/apps/riak_cs/src/riak_cs_manifest.erl +++ b/apps/riak_cs/src/riak_cs_manifest.erl @@ -96,24 +96,25 @@ unlink_version(RcPid, [{_, M}|_]) -> unlink_version(RcPid, M); unlink_version(RcPid, ?MANIFEST{bkey = {Bucket, Key}, - next_object_version = NextOV, - prev_object_version = PrevOV}) -> - if PrevOV /= eol -> - {ok, ManiPid1} = riak_cs_manifest_fsm:start_link(Bucket, Key, PrevOV, RcPid), - {ok, _, PrevM} = get_manifests(RcPid, Bucket, Key, PrevOV), - riak_cs_manifest_fsm:update_manifests( - ManiPid1, - orddict:map(fun(_, M) -> M?MANIFEST{next_object_version = NextOV} end, PrevM)), + next_object_version = NextV, + prev_object_version = PrevV}) -> + if PrevV /= eol -> + {ok, ManiPid1} = riak_cs_manifest_fsm:start_link(Bucket, Key, PrevV, RcPid), + {ok, _, [{_, PrevM}|_]} = get_manifests(RcPid, Bucket, Key, PrevV), + ok = riak_cs_manifest_fsm:update_manifest_with_confirmation( + ManiPid1, + PrevM?MANIFEST{next_object_version = NextV}), riak_cs_manifest_fsm:stop(ManiPid1); el/=se -> nop end, - if NextOV /= eol -> - {ok, ManiPid2} = riak_cs_manifest_fsm:start_link(Bucket, Key, NextOV, RcPid), - {ok, _, NextM} = get_manifests(RcPid, Bucket, Key, NextOV), - riak_cs_manifest_fsm:update_manifests( - ManiPid2, - orddict:map(fun(_, M) -> M?MANIFEST{next_object_version = PrevOV} end, NextM)), + + if NextV /= eol -> + {ok, ManiPid2} = riak_cs_manifest_fsm:start_link(Bucket, Key, NextV, RcPid), + {ok, _, [{_, NextM}|_]} = get_manifests(RcPid, Bucket, Key, NextV), + ok = riak_cs_manifest_fsm:update_manifest_with_confirmation( + ManiPid2, + NextM?MANIFEST{prev_object_version = PrevV}), riak_cs_manifest_fsm:stop(ManiPid2); el/=se -> nop diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl index 05e4e4006..fa0d7664b 100644 --- a/apps/riak_cs/src/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/riak_cs_manifest_fsm.erl @@ -403,7 +403,7 @@ maybe_backpressure_sleep(Siblings, _BackpressureThreshold) -> true. update(RcPid, OldManifests, OldRiakObject, WrappedManifests, Bucket) -> - NewManiAdded = rcs_common_manifest_resolution:resolve([WrappedManifests, OldManifests]), + NewManiAdded = rcs_common_manifest_resolution:resolve([OldManifests, WrappedManifests]), %% Update the object here so that if there are any %% overwritten UUIDs, then gc_specific_manifests() will %% operate on NewManiAdded and save it to Riak when it is diff --git a/rebar.config b/rebar.config index 20352dce3..74e553c6e 100644 --- a/rebar.config +++ b/rebar.config @@ -32,7 +32,7 @@ , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} - , {rcs_common, {git, "git://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.0"}}} + , {rcs_common, {git, "git://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.1"}}} ] }. diff --git a/rebar.lock b/rebar.lock index b567916f5..8ba4d37ed 100644 --- a/rebar.lock +++ b/rebar.lock @@ -37,7 +37,7 @@ 1}, {<<"rcs_common">>, {git,"git://github.com/TI-Tokyo/rcs_common.git", - {ref,"f9b6d6080792fa25699e6b4694332c5ff09beb95"}}, + {ref,"28968bb2c843a9283cdcf38b918f4316d992e5fa"}}, 0}, {<<"riak_cs_multibag">>, {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", From f039fdd0dac4e6a35c293086224acc3c3e508af5 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 20 Aug 2021 13:48:30 +0300 Subject: [PATCH 199/831] scrap manifest version linking altogether --- apps/riak_cs/src/riak_cs_copy_object.erl | 2 +- apps/riak_cs/src/riak_cs_delete_fsm.erl | 8 +- apps/riak_cs/src/riak_cs_gc.erl | 3 +- apps/riak_cs/src/riak_cs_lfs_utils.erl | 14 +-- apps/riak_cs/src/riak_cs_list_objects.erl | 2 +- apps/riak_cs/src/riak_cs_manifest.erl | 110 ------------------ apps/riak_cs/src/riak_cs_manifest_fsm.erl | 1 - apps/riak_cs/src/riak_cs_mp_utils.erl | 41 +++---- apps/riak_cs/src/riak_cs_put_fsm.erl | 14 +-- apps/riak_cs/src/riak_cs_wm_object.erl | 2 +- apps/riak_cs/src/riak_cs_wm_object_acl.erl | 2 +- .../src/riak_cs_wm_object_upload_part.erl | 2 +- .../src/riak_cs_yessir_riak_client.erl | 62 +++++----- apps/riak_cs/test/prop_riak_cs_lfs_utils.erl | 1 + apps/riak_cs/test/riak_cs_delete_deadlock.erl | 3 +- apps/riak_cs/test/riak_cs_gen.erl | 4 + rebar.config | 2 +- rebar.lock | 2 +- 18 files changed, 79 insertions(+), 196 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_copy_object.erl b/apps/riak_cs/src/riak_cs_copy_object.erl index d060c7d9f..db725744f 100644 --- a/apps/riak_cs/src/riak_cs_copy_object.erl +++ b/apps/riak_cs/src/riak_cs_copy_object.erl @@ -247,7 +247,7 @@ get_and_put(GetPid, PutPid, MD5, ContFun) -> -spec start_get_fsm(lfs_manifest(), riak_client()) -> {ok, pid()}. start_get_fsm(?MANIFEST{bkey = {Bucket, Key}, - object_version = Vsn}, ReadRcPid) -> + vsn = Vsn}, ReadRcPid) -> FetchConcurrency = riak_cs_lfs_utils:fetch_concurrency(), BufferFactor = riak_cs_lfs_utils:get_fsm_buffer_size_factor(), riak_cs_get_fsm_sup:start_get_fsm(node(), diff --git a/apps/riak_cs/src/riak_cs_delete_fsm.erl b/apps/riak_cs/src/riak_cs_delete_fsm.erl index 4ac0f1e48..d2968c435 100644 --- a/apps/riak_cs/src/riak_cs_delete_fsm.erl +++ b/apps/riak_cs/src/riak_cs_delete_fsm.erl @@ -142,7 +142,7 @@ handle_info(_Info, StateName, State) -> terminate(Reason, _StateName, #state{all_delete_workers = AllDeleteWorkers, - manifest = ?MANIFEST{state = ManifestState, object_version = ObjVsn}, + manifest = ?MANIFEST{state = ManifestState, vsn = ObjVsn}, bucket = Bucket, key = Key, uuid = UUID, @@ -204,7 +204,7 @@ handle_receiving_manifest(State = #state{manifest = Manifest, start_block_servers(NewState); {error, invalid_state} -> {Bucket, Key} = Manifest?MANIFEST.bkey, - ObjVsn = Manifest?MANIFEST.object_version, + ObjVsn = Manifest?MANIFEST.vsn, _ = lager:warning("Invalid state manifest in GC bucket at ~p, " "b/k:v \"~s/~s:~s\": ~p", [GCKey, Bucket, Key, ObjVsn, Manifest]), @@ -252,7 +252,7 @@ maybe_delete_blocks(State = #state{delete_blocks_remaining = []}) -> State; maybe_delete_blocks(State = #state{bucket = Bucket, key = Key, - manifest = ?MANIFEST{object_version = ObjVsn}, + manifest = ?MANIFEST{vsn = ObjVsn}, free_deleters = FreeDeleters = [DeleterPid | _Rest], unacked_deletes = UnackedDeletes, delete_blocks_remaining = DeleteBlocksRemaining = [BlockID | _RestBlocks]}) -> @@ -275,7 +275,7 @@ reply_or_callback(Reason, #state{finished_callback = Callback} = State) -> {pid(), {ok, {non_neg_integer(), non_neg_integer()}} | {error, term()}}. notification_msg(normal, #state{bucket = Bucket, key = Key, - manifest = ?MANIFEST{object_version = ObjVsn}, + manifest = ?MANIFEST{vsn = ObjVsn}, uuid = UUID, deleted_blocks = DeletedBlocks, total_blocks = TotalBlocks}) -> diff --git a/apps/riak_cs/src/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl index 993a04057..3a22bf8ea 100644 --- a/apps/riak_cs/src/riak_cs_gc.erl +++ b/apps/riak_cs/src/riak_cs_gc.erl @@ -459,8 +459,7 @@ move_manifests_to_gc_bucket(Manifests, RcPid) -> end, %% Create a set from the list of manifests - lager:debug("Manifests scheduled for deletion: ~p", [ManifestSet]), - ok = riak_cs_manifest:unlink_version(RcPid, Manifests), + lager:debug("Manifests scheduled for deletion: ~p", [Manifests]), Timeout1 = riak_cs_config:put_gckey_timeout(), riak_cs_pbc:put(ManifestPbc, ObjectToWrite, [], Timeout1, [riakc, put_gc_manifest_set]). diff --git a/apps/riak_cs/src/riak_cs_lfs_utils.erl b/apps/riak_cs/src/riak_cs_lfs_utils.erl index 20a0ed939..56e4677c4 100644 --- a/apps/riak_cs/src/riak_cs_lfs_utils.erl +++ b/apps/riak_cs/src/riak_cs_lfs_utils.erl @@ -38,7 +38,7 @@ initial_blocks/2, block_sequences_for_manifest/1, block_sequences_for_manifest/2, - new_manifest/12, + new_manifest/13, set_bag_id/2, remove_write_block/2, remove_delete_block/2]). @@ -265,16 +265,17 @@ get_fsm_buffer_size_factor() -> end. %% @doc Initialize a new file manifest --spec new_manifest(binary(), binary(), cs_uuid(), +-spec new_manifest(binary(), binary(), binary(), cs_uuid(), non_neg_integer(), binary(), term(), orddict:orddict(), pos_integer(), acl() | no_acl_yet, proplists:proplist(), cluster_id(), bag_id()) -> lfs_manifest(). -new_manifest(Bucket, FileName, UUID, +new_manifest(Bucket, FileName, Vsn, UUID, ContentLength, ContentType, ContentMd5, MetaData, BlockSize, Acl, Props, ClusterID, BagId) -> Blocks = ordsets:from_list(initial_blocks(ContentLength, BlockSize)), Manifest = ?MANIFEST{bkey = {Bucket, FileName}, + vsn = Vsn, uuid = UUID, created = riak_cs_wm_utils:iso_8601_datetime(), state = writing, @@ -288,9 +289,6 @@ new_manifest(Bucket, FileName, UUID, props = Props, cluster_id = ClusterID}, set_bag_id(BagId, Manifest). -%% it's intentional that new manifests cannot be created for file -%% versions as that involves updating manifests for its neighbours in -%% the chain. Use link_version for that. -spec set_bag_id(bag_id(), lfs_manifest()) -> lfs_manifest(). @@ -309,8 +307,8 @@ remove_write_block(Manifest, Chunk) -> writing end, Manifest?MANIFEST{write_blocks_remaining = Updated, - state = ManiState, - last_block_written_time = os:timestamp()}. + state = ManiState, + last_block_written_time = os:timestamp()}. %% @doc Remove a chunk from the `delete_blocks_remaining' %% field of `Manifest' diff --git a/apps/riak_cs/src/riak_cs_list_objects.erl b/apps/riak_cs/src/riak_cs_list_objects.erl index dcba8cdfd..0d4fb4241 100644 --- a/apps/riak_cs/src/riak_cs_list_objects.erl +++ b/apps/riak_cs/src/riak_cs_list_objects.erl @@ -101,7 +101,7 @@ manifest_to_keycontent(ReqType, ?MANIFEST{bkey = {_Bucket, Key}, created = Created, content_md5 = ContentMd5, content_length = ContentLength, - object_version = Vsn, + vsn = Vsn, acl = ACL}) -> LastModified = list_to_binary(riak_cs_wm_utils:to_iso_8601(Created)), diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl index f7735895a..54d487da0 100644 --- a/apps/riak_cs/src/riak_cs_manifest.erl +++ b/apps/riak_cs/src/riak_cs_manifest.erl @@ -23,10 +23,7 @@ -export([fetch/4, get_manifests/4, - get_manifests_of_all_versions/3, manifests_from_riak_object/1, - link_version/2, - unlink_version/2, etag/1, etag_no_quotes/1, object_acl/1]). @@ -56,113 +53,6 @@ get_manifests(RcPid, Bucket, Key, ObjVsn) -> end. --spec get_manifests_of_all_versions(riak_client(), binary(), binary()) -> - {ok, [{Vsn::binary(), lfs_manifest()}]} | {error, term()}. -get_manifests_of_all_versions(RcPid, Bucket, Key) -> - case get_manifests(RcPid, Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION) of - {ok, _, []} -> - {error, notfound}; - {ok, _, [{_, PrimaryM}|_]} -> - try - DD = get_descendants(RcPid, Bucket, Key, PrimaryM), - {ok, [{V, M} || M = ?MANIFEST{object_version = V} <- DD]} - catch - throw:manifest_retrieval_error -> - {error, manifest_retrieval_error} - end; - ER -> - ER - end. - -get_descendants(Rc, B, K, M) -> - lists:reverse( - get_descendants(Rc, B, K, M, [])). -get_descendants(_, _, _, ThisM = ?MANIFEST{next_object_version = eol}, Q) -> - [ThisM | Q]; -get_descendants(Rc, B, K, ThisM = ?MANIFEST{next_object_version = NextOV}, Q) -> - case get_manifests(Rc, B, K, NextOV) of - {ok, _, [{_, NextM}|_]} -> - get_descendants(Rc, B, K, NextM, [ThisM | Q]); - ER -> - lager:warning("failed to get manifests for version ~s of ~s/~s (~p)", [NextOV, B, K, ER]), - throw(manifest_retrieval_error) - end. - - --spec unlink_version(riak_client(), wrapped_manifest() | lfs_manifest()) -> ok. -unlink_version(_RcPid, []) -> - ok; -unlink_version(RcPid, [{_, M}|_]) -> - unlink_version(RcPid, M); - -unlink_version(RcPid, ?MANIFEST{bkey = {Bucket, Key}, - next_object_version = NextV, - prev_object_version = PrevV}) -> - if PrevV /= eol -> - {ok, ManiPid1} = riak_cs_manifest_fsm:start_link(Bucket, Key, PrevV, RcPid), - {ok, _, [{_, PrevM}|_]} = get_manifests(RcPid, Bucket, Key, PrevV), - ok = riak_cs_manifest_fsm:update_manifest_with_confirmation( - ManiPid1, - PrevM?MANIFEST{next_object_version = NextV}), - riak_cs_manifest_fsm:stop(ManiPid1); - el/=se -> - nop - end, - - if NextV /= eol -> - {ok, ManiPid2} = riak_cs_manifest_fsm:start_link(Bucket, Key, NextV, RcPid), - {ok, _, [{_, NextM}|_]} = get_manifests(RcPid, Bucket, Key, NextV), - ok = riak_cs_manifest_fsm:update_manifest_with_confirmation( - ManiPid2, - NextM?MANIFEST{prev_object_version = PrevV}), - riak_cs_manifest_fsm:stop(ManiPid2); - el/=se -> - nop - end, - ok. - - --spec link_version(nopid | riak_client(), lfs_manifest()) -> - {sole | new | existing, lfs_manifest()}. -link_version(nopid, InsertedM) -> - {ok, RcPid} = riak_cs_riak_client:checkout(), - Res = link_version(RcPid, InsertedM), - riak_cs_riak_client:checkin(RcPid), - Res; - -link_version(RcPid, InsertedM = ?MANIFEST{bkey = {Bucket, Key}, - object_version = Vsn}) -> - case get_manifests_of_all_versions(RcPid, Bucket, Key) of - {ok, VVMM} -> - case orddict:find(Vsn, orddict:from_list(VVMM)) of - {ok, _M} -> - %% found a matching version: don't bother - %% changing prev or next links. It will be resolved, later, I suppose? - {existing, InsertedM}; - error -> - {new, link_at_end(InsertedM, VVMM, RcPid)} - end; - {error, notfound} -> - lager:info("ignoring user-supplied object version ~p as this is the single version", [Vsn]), - {sole, InsertedM?MANIFEST{object_version = ?LFS_DEFAULT_OBJECT_VERSION}} - end. - -link_at_end(M, [], _RcPid) -> - M; -link_at_end(M0 = ?MANIFEST{bkey = {Bucket, Key}, - object_version = Vsn}, VVMM, RcPid) -> - - {LastV, LastM} = lists:last(VVMM), - - {ok, MPid1} = riak_cs_manifest_fsm:start_link(Bucket, Key, LastV, RcPid), - ok = riak_cs_manifest_fsm:update_manifest_with_confirmation( - MPid1, LastM?MANIFEST{next_object_version = Vsn}), - riak_cs_manifest_fsm:stop(MPid1), - - M0?MANIFEST{prev_object_version = LastV}. - - - -spec manifests_from_riak_object(riakc_obj:riakc_obj()) -> wrapped_manifest(). manifests_from_riak_object(RiakObject) -> %% For example, riak_cs_manifest_fsm:get_and_update/4 may wish to diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl index fa0d7664b..a023c1468 100644 --- a/apps/riak_cs/src/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/riak_cs_manifest_fsm.erl @@ -327,7 +327,6 @@ handle_get_manifests(State = #state{riak_client = RcPid, get_and_delete(RcPid, UUID, Bucket, Key, Vsn) -> case riak_cs_manifest:get_manifests(RcPid, Bucket, Key, Vsn) of {ok, RiakObject, Manifests} -> - ok = riak_cs_manifest:unlink_version(RcPid, Manifests), UpdatedManifests = orddict:erase(UUID, Manifests), case UpdatedManifests of [] -> diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index e90b8405a..007390a4e 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -91,7 +91,7 @@ abort_multipart_upload(Bucket, Key, ObjVsn, UploadId, Caller, RcPidUnW) -> -spec clean_multipart_unused_parts(lfs_manifest(), nopid | pid()) -> same | updated. clean_multipart_unused_parts(?MANIFEST{bkey = {Bucket, Key}, - object_version = ObjVsn, + vsn = ObjVsn, props = Props} = Manifest, RcPid) -> case get_mp_manifest(Manifest) of undefined -> @@ -133,9 +133,9 @@ complete_multipart_upload(Bucket, Key, Vsn, UploadId, PartETags, Caller, RcPidUn -spec initiate_multipart_upload(binary(), binary(), binary(), binary(), acl_owner3(), proplists:proplist(), nopid | pid()) -> {ok, binary()} | {error, term()}. -initiate_multipart_upload(Bucket, Key, ObjVsn, ContentType, {_,_,_} = Owner, +initiate_multipart_upload(Bucket, Key, Vsn, ContentType, {_,_,_} = Owner, Opts, RcPidUnW) -> - write_new_manifest(new_manifest(Bucket, Key, ObjVsn, ContentType, Owner, Opts), + write_new_manifest(new_manifest(Bucket, Key, Vsn, ContentType, Owner, Opts), Opts, RcPidUnW). @@ -281,7 +281,7 @@ make_content_types_accepted(CT, RD, Ctx = #context{local_context = LocalCtx0}, C %%%=================================================================== write_new_manifest(?MANIFEST{bkey = {Bucket, Key}, - object_version = ObjVsn, + vsn = Vsn, uuid = UUID} = M, Opts, RcPidUnW) -> MpM = get_mp_manifest(M), Owner = MpM?MULTIPART_MANIFEST.owner, @@ -300,7 +300,7 @@ write_new_manifest(?MANIFEST{bkey = {Bucket, Key}, M3 = M2?MANIFEST{acl = Acl, cluster_id = ClusterId, write_start_time = os:timestamp()}, - {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, ObjVsn, + {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, Vsn, ?PID(RcPid)), try ok = riak_cs_manifest_fsm:add_new_manifest(ManiPid, M3), @@ -322,8 +322,8 @@ new_manifest(Bucket, Key, Vsn, ContentType, {_, _, _} = Owner, Opts) -> undefined -> []; AsIsHdrs -> AsIsHdrs end, - M = riak_cs_lfs_utils:new_manifest( - Bucket, Key, UUID, + M0 = riak_cs_lfs_utils:new_manifest( + Bucket, Key, Vsn, UUID, 0, ContentType, %% we won't know the md5 of a multipart @@ -338,11 +338,8 @@ new_manifest(Bucket, Key, Vsn, ContentType, {_, _, _} = Owner, Opts) -> undefined), MpM = ?MULTIPART_MANIFEST{upload_id = UUID, owner = Owner}, - {VsnType, M9} = - riak_cs_manifest:link_version( - nopid, M?MANIFEST{props = replace_mp_manifest(MpM, M?MANIFEST.props), - object_version = Vsn}), - lager:debug("created mp manifest for ~p version of ~s/~s:~s", [VsnType, Bucket, Key, Vsn]), + M9 = M0?MANIFEST{props = replace_mp_manifest(MpM, M0?MANIFEST.props)}, + lager:debug("created mp manifest for ~s/~s:~s", [Bucket, Key, Vsn]), M9. @@ -395,7 +392,7 @@ do_part_common2(abort, RcPid, ?MANIFEST{uuid = UUID, do_part_common2(complete, RcPid, ?MANIFEST{uuid = _UUID, bkey = {Bucket, Key}, - object_version = ObjVsn, + vsn = ObjVsn, props = MProps} = Manifest, _Obj, MpM, Props) -> %% The content_md5 is used by WM to create the ETags header. @@ -498,7 +495,7 @@ do_part_common2(upload_part, RcPid, M, _Obj, MpM, Props) -> PartUUID = riak_cs_put_fsm:get_uuid(PutPid), PM = ?PART_MANIFEST{bucket = Bucket, key = Key, - object_version = ObjVsn, + vsn = ObjVsn, start_time = os:timestamp(), part_number = PartNumber, part_id = PartUUID, @@ -541,7 +538,7 @@ do_part_common2(upload_part_finished, RcPid, M, _Obj, MpM, Props) -> update_manifest_with_confirmation(RcPid, M = ?MANIFEST{bkey = {Bucket, Key}, - object_version = ObjVsn}) -> + vsn = ObjVsn}) -> {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, ObjVsn, RcPid), try @@ -645,7 +642,7 @@ handle_get_manifests_result({ok, _Obj, Manifests}) -> -spec multipart_description(?MANIFEST{}) -> ?MULTIPART_DESCR{}. multipart_description(?MANIFEST{bkey = {_, Key}, - object_version = Vsn, + vsn = Vsn, uuid = UUID, props = Props, created = Created}) -> @@ -737,9 +734,8 @@ comb_parts_fold({PartNum, ETag} = K, move_dead_parts_to_gc(Bucket, Key, Vsn, BagId, PartsToDelete, RcPid) -> PartDelMs = [{P_UUID, - begin - M = riak_cs_lfs_utils:new_manifest( - Bucket, Key, P_UUID, + riak_cs_lfs_utils:new_manifest( + Bucket, Key, Vsn, P_UUID, ContentLength, <<"x-delete/now">>, undefined, @@ -748,11 +744,8 @@ move_dead_parts_to_gc(Bucket, Key, Vsn, BagId, PartsToDelete, RcPid) -> no_acl_yet, [], undefined, - BagId), - %% this manifest is incomplete, but that's - %% sufficient for GC to do its job, right? - M?MANIFEST{object_version = Vsn} - end} || + BagId) + } || ?PART_MANIFEST{part_id=P_UUID, content_length=ContentLength, block_size=P_BlockSize} <- PartsToDelete], diff --git a/apps/riak_cs/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl index 42b734413..4e83b3f07 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm.erl @@ -401,7 +401,7 @@ code_change(_OldVsn, StateName, State, _Extra) -> -spec prepare(#state{}) -> #state{}. prepare(State=#state{bucket = Bucket, key = Key, - obj_vsn = Vsn0, + obj_vsn = Vsn, block_size = BlockSize, uuid = UUID, content_length = ContentLength, @@ -415,18 +415,14 @@ prepare(State=#state{bucket = Bucket, ClusterID = riak_cs_mb_helper:cluster_id(BagId), %% 0. prepare manifest - Manifest0 = riak_cs_lfs_utils:new_manifest( - Bucket, Key, UUID, + Manifest1 = riak_cs_lfs_utils:new_manifest( + Bucket, Key, Vsn, UUID, ContentLength, ContentType, undefined, %% we don't know the md5 yet Metadata, BlockSize, Acl, [], ClusterID, BagId), - {VsnType, Manifest1 = ?MANIFEST{object_version = Vsn1}} = - riak_cs_manifest:link_version( - RcPid, Manifest0?MANIFEST{object_version = Vsn0}), - lager:debug("created manifest for ~p version of ~s/~s:~s", [VsnType, Bucket, Key, Vsn1]), %% 1. start the manifest_fsm proc {ok, ManiPid} = maybe_riak_cs_manifest_fsm_start_link( - MakeNewManifestP, Bucket, Key, Vsn1, RcPid), + MakeNewManifestP, Bucket, Key, Vsn, RcPid), Manifest2 = Manifest1?MANIFEST{write_start_time = os:timestamp()}, @@ -455,7 +451,7 @@ prepare(State=#state{bucket = Bucket, State#state{manifest = Manifest2, %% possibly null, ignoring user-supplied Vsn0 unless a %% primary version already exists - obj_vsn = Vsn1, + obj_vsn = Vsn, timer_ref = TRef, mani_pid = ManiPid, max_buffer_size = MaxBufferSize, diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index a105f520d..2649bd3ff 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -173,7 +173,7 @@ produce_body(RD, Ctx=#context{rc_pool=RcPool, manifest = ?MANIFEST{bkey = {Bucket, File}, created = Created, content_length = ResourceLength, - object_version = ObjVsn, + vsn = ObjVsn, metadata = Metadata} = Mfst} = LocalCtx, BFile_str = bfile_str(Bucket, File, ObjVsn), UserName = riak_cs_wm_utils:extract_name(User), diff --git a/apps/riak_cs/src/riak_cs_wm_object_acl.erl b/apps/riak_cs/src/riak_cs_wm_object_acl.erl index 65da743d4..8139eaa29 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_acl.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_acl.erl @@ -150,7 +150,7 @@ produce_body(RD, Ctx=#context{local_context=LocalCtx, user=User}) -> #key_context{get_fsm_pid = GetFsmPid, manifest = ?MANIFEST{bkey = {Bucket, File}, - object_version = Vsn, + vsn = Vsn, acl = Acl}} = LocalCtx, BFile_str = bfile_str(Bucket, File, Vsn), UserName = riak_cs_wm_utils:extract_name(User), diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl index 071833887..ccbe3378b 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl @@ -410,7 +410,7 @@ finalize_request(RD, Ctx=#context{local_context=LocalCtx, {{halt, integer()}, #wm_reqdata{}, #context{}}. maybe_copy_part(PutPid, ?MANIFEST{bkey={SrcBucket, SrcKey}, - object_version = SrcVsn} = SrcManifest, + vsn = SrcVsn} = SrcManifest, ReadRcPid, RD, #context{riak_client=RcPid, local_context=LocalCtx, diff --git a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl index 795513c6b..e3cf1ce8f 100644 --- a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl +++ b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl @@ -92,7 +92,7 @@ handle_call({req, #rpbcsbucketreq{max_results=_MaxResults, _Timeout, {ReqId, Caller}=_Ctx}, From, #state{bucket_name=BucketName, acl=Acl} = State) -> gen_server:reply(From, {ok, ReqId}), - RiakcObjs = manifests_to_robjs([new_manifest(BucketName, <<"yessir-key1">>, + RiakcObjs = manifests_to_robjs([new_manifest(BucketName, <<"yessir-key1">>, <<"1.0">>, 3141592, Acl)]), Caller ! {ReqId, {ok, RiakcObjs}}, Caller ! {ReqId, {done, continuation_ignored}}, @@ -143,34 +143,36 @@ code_change(_OldVsn, State, _Extra) -> %%% Internal functions -process_get_req(#rpbgetreq{bucket=RiakBucket, key=Key} = _RpbGetReq, - #state{bucket_name=BucketName, acl=Acl} = State) -> +process_get_req(#rpbgetreq{bucket = RiakBucket, key = VKey} = _RpbGetReq, + #state{bucket_name = BucketName, acl = Acl} = State) -> case which_bucket(RiakBucket) of objects -> - {M, RObj} = new_manifest_ro(BucketName, RiakBucket, Key, Acl), + {Key, Vsn} = rcs_common_maifest:decompose_versioned_key(VKey), + {M, RObj} = new_manifest_ro(BucketName, RiakBucket, Key, Vsn, Acl), {{ok, RObj}, State#state{manifest = M}}; blocks -> - UUIDSize = byte_size(Key) - 32 div 8, - <<_UUID:UUIDSize/binary, _BlockNumber:32>> = Key, - Obj = riakc_obj:new_obj(RiakBucket, Key, <<"vclock">>, + UUIDSize = byte_size(VKey) - 32 div 8, + <<_UUID:UUIDSize/binary, _BlockNumber:32>> = VKey, + Obj = riakc_obj:new_obj(RiakBucket, VKey, <<"vclock">>, [{dict:new(), binary:copy(<<"a">>, 10)}]), {{ok, Obj}, State}; Other -> lager:warning("Unknown #rpbgetreq{} for ~p, bucket=~p, key=~p~n", - [Other, RiakBucket, Key]), - error({not_implemented, {rpbgetreq, Other, RiakBucket, Key}}) + [Other, RiakBucket, VKey]), + error({not_implemented, {rpbgetreq, Other, RiakBucket, VKey}}) end. -process_put_req(#rpbputreq{bucket=RiakBucket, key=Key, return_body=1} = _RpbPutReq, - #state{bucket_name=BucketName, acl=Acl} = State) -> +process_put_req(#rpbputreq{bucket = RiakBucket, key = VKey, return_body = 1} = _RpbPutReq, + #state{bucket_name = BucketName, acl = Acl} = State) -> case which_bucket(RiakBucket) of objects -> - {M, RObj} = new_manifest_ro(BucketName, RiakBucket, Key, Acl), + {Key, Vsn} = rcs_common_maifest:decompose_versioned_key(VKey), + {M, RObj} = new_manifest_ro(BucketName, RiakBucket, Key, Vsn, Acl), {{ok, RObj}, State#state{manifest = M}}; Other -> lager:warning("Unknown #rpbgetreq{} with return_body for ~p," " bucket=~p, key=~p~n", - [Other, RiakBucket, Key]), - error({not_implemented, {rpbgetreq_with_return_body, Other, RiakBucket, Key}}) + [Other, RiakBucket, VKey]), + error({not_implemented, {rpbgetreq_with_return_body, Other, RiakBucket, VKey}}) end; process_put_req(_RpbPutReq, State) -> {ok, State}. @@ -198,32 +200,32 @@ user_to_robj(#rcs_user_v2{key_id=Key} = User) -> default_acl(DisplayName, CannicalId, KeyId) -> riak_cs_acl_utils:default_acl(DisplayName, CannicalId, KeyId). -new_manifest_ro(BucketName, RiakBucket, Key, Acl) -> +new_manifest_ro(BucketName, RiakBucket, Key, Vsn, Acl) -> ContentLength = 10, - M = new_manifest(BucketName, Key, ContentLength, Acl), + M = new_manifest(BucketName, Key, Vsn, ContentLength, Acl), Dict = rcs_common_manifest_utils:new_dict(M?MANIFEST.uuid, M), ValueBin = riak_cs_utils:encode_term(Dict), - RObj = riakc_obj:new_obj(RiakBucket, Key, <<"vclock">>, + RObj = riakc_obj:new_obj(RiakBucket, rcs_common_manifest:make_versioned_key(Key, Vsn), <<"vclock">>, [{dict:new(), ValueBin}]), {M, RObj}. -new_manifest(BucketName, Key, ContentLength, Acl) -> +new_manifest(BucketName, Key, Vsn, ContentLength, Acl) -> %% TODO: iteration is needed for large content length CMd5 = riak_cs_utils:md5(binary:copy(<<"a">>, ContentLength)), - ?MANIFEST{ - block_size = riak_cs_lfs_utils:block_size(), - bkey = {BucketName, Key}, - metadata = [], - created = riak_cs_wm_utils:iso_8601_datetime(), - uuid = uuid:get_v4(), + ?MANIFEST{block_size = riak_cs_lfs_utils:block_size(), + bkey = {BucketName, Key}, + vsn = Vsn, + metadata = [], + created = riak_cs_wm_utils:iso_8601_datetime(), + uuid = uuid:get_v4(), - content_length = ContentLength, - content_type = <<"application/octet-stream">>, - content_md5 = CMd5, - acl = Acl, + content_length = ContentLength, + content_type = <<"application/octet-stream">>, + content_md5 = CMd5, + acl = Acl, - state = active, - props = []}. + state = active, + props = []}. manifests_to_robjs(Manifests) -> [manifest_to_robj(M) || M <- Manifests]. diff --git a/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl b/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl index 525a09508..649ec734a 100644 --- a/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl +++ b/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl @@ -75,6 +75,7 @@ prop_manifest_manipulation() -> ?FORALL({Bucket, FileName, UUID, CLength, Md5, MD}, {riak_cs_gen:bucket(), riak_cs_gen:file_name(), + riak_cs_gen:vsn(), riak_cs_gen:uuid(), riak_cs_gen:content_length(), riak_cs_gen:md5(), diff --git a/apps/riak_cs/test/riak_cs_delete_deadlock.erl b/apps/riak_cs/test/riak_cs_delete_deadlock.erl index 9a4baa3f9..f613b0082 100644 --- a/apps/riak_cs/test/riak_cs_delete_deadlock.erl +++ b/apps/riak_cs/test/riak_cs_delete_deadlock.erl @@ -75,7 +75,8 @@ prop_delete_deadlock() -> BlockSize = riak_cs_lfs_utils:block_size(), Manifest = riak_cs_lfs_utils:new_manifest( <<"bucket">>, - "test_file", + <<"test_file">>, + ?LFS_DEFAULT_OBJECT_VERSION, UUID, ?CONTENT_LENGTH, <<"ctype">>, diff --git a/apps/riak_cs/test/riak_cs_gen.erl b/apps/riak_cs/test/riak_cs_gen.erl index da58ddd77..8f92566d3 100644 --- a/apps/riak_cs/test/riak_cs_gen.erl +++ b/apps/riak_cs/test/riak_cs_gen.erl @@ -33,6 +33,7 @@ bucket/0, bucket_or_blank/0, file_name/0, + vsn/0, block_size/0, content_length/0, bounded_content_length/0, @@ -74,6 +75,9 @@ bucket_or_blank() -> file_name() -> non_blank_string(). +vsn() -> + non_blank_string(). + block_size() -> elements([bs(El) || El <- [8, 16, 32]]). diff --git a/rebar.config b/rebar.config index 74e553c6e..f9e8a245d 100644 --- a/rebar.config +++ b/rebar.config @@ -32,7 +32,7 @@ , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} - , {rcs_common, {git, "git://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.1"}}} + , {rcs_common, {git, "git://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.2"}}} ] }. diff --git a/rebar.lock b/rebar.lock index 8ba4d37ed..edd7936c7 100644 --- a/rebar.lock +++ b/rebar.lock @@ -37,7 +37,7 @@ 1}, {<<"rcs_common">>, {git,"git://github.com/TI-Tokyo/rcs_common.git", - {ref,"28968bb2c843a9283cdcf38b918f4316d992e5fa"}}, + {ref,"5936595fc05bf13325590c88e7f3c561ff48a210"}}, 0}, {<<"riak_cs_multibag">>, {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", From e10441f4fd89d4725de0f53165ee92de7f71ec39 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 22 Aug 2021 13:59:36 +0300 Subject: [PATCH 200/831] return VersionId info in ListObjectVersions and PutObject --- apps/riak_cs/include/list_objects.hrl | 83 +++++++++++++------ apps/riak_cs/src/riak_cs_api.erl | 2 +- apps/riak_cs/src/riak_cs_list_objects.erl | 58 +++++++++---- apps/riak_cs/src/riak_cs_list_objects_fsm.erl | 16 ++-- .../src/riak_cs_list_objects_fsm_v2.erl | 36 ++++---- .../src/riak_cs_list_objects_utils.erl | 2 +- apps/riak_cs/src/riak_cs_oos_response.erl | 12 ++- apps/riak_cs/src/riak_cs_s3_response.erl | 8 +- apps/riak_cs/src/riak_cs_wm_object.erl | 20 +++-- .../src/riak_cs_wm_object_versions.erl | 2 +- apps/riak_cs/src/riak_cs_wm_utils.erl | 4 +- apps/riak_cs/src/riak_cs_xml.erl | 52 +++++++----- 12 files changed, 181 insertions(+), 114 deletions(-) diff --git a/apps/riak_cs/include/list_objects.hrl b/apps/riak_cs/include/list_objects.hrl index 9b79fd5a6..d88bf4037 100644 --- a/apps/riak_cs/include/list_objects.hrl +++ b/apps/riak_cs/include/list_objects.hrl @@ -25,9 +25,7 @@ -type list_objects_req_type() :: objects | versions. -%% This record actually does not need to be versioned, -%% as it's never persisted. --record(list_objects_request_v1, +-record(list_objects_request, { req_type :: list_objects_req_type(), @@ -43,17 +41,16 @@ %% a binary to group keys by delimiter :: binary() | undefined, - %% the key to start with - marker :: binary() | undefined + %% the key and version_id to start with + marker :: binary() | undefined, + version_id_marker :: binary() | undefined }). --type list_object_request() :: #list_objects_request_v1{}. --define(LOREQ, #list_objects_request_v1). +-type list_object_request() :: #list_objects_request{}. +-define(LOREQ, #list_objects_request). -type next_marker() :: 'undefined' | binary(). -%% This record actually does not need to be versioned, -%% as it's never persisted. --record(list_objects_response_v1, +-record(list_objects_response, { %% Params just echoed back from the request -------------------------- @@ -72,25 +69,23 @@ %% the marker used in the _request_ marker :: binary() | undefined, - %% the (optional) marker to use for pagination %% in the _next_ request next_marker :: next_marker(), + %% (marker and next_marker not used in ListObjectsV2) %% The actual response ----------------------------------------------- is_truncated :: boolean(), - contents :: list(list_objects_key_content() | list_object_versions_key_content()), + contents :: [list_objects_key_content()], - common_prefixes :: list_objects_common_prefixes(), - - resp_type :: list_objects_req_type() + common_prefixes :: list_objects_common_prefixes() }). --type list_object_response() :: #list_objects_response_v1{}. --define(LORESP, #list_objects_response_v1). +-type list_objects_response() :: #list_objects_response{}. +-define(LORESP, #list_objects_response). --record(list_objects_key_content_v1, +-record(list_objects_key_content, { key :: binary(), last_modified :: term(), @@ -99,10 +94,48 @@ owner :: list_objects_owner(), storage_class :: binary() }). --type list_objects_key_content() :: #list_objects_key_content_v1{}. --define(LOKC, #list_objects_key_content_v1). +-type list_objects_key_content() :: #list_objects_key_content{}. +-define(LOKC, #list_objects_key_content). + + +-record(list_object_versions_response, + { + %% Params just echoed back from the request -------------------------- + + %% the name of the bucket + name :: binary(), + + %% how many keys were requested to be + %% returned in the response + max_keys :: non_neg_integer(), + + %% a 'starts-with' parameter + prefix :: binary() | undefined, + + %% a binary to group keys by + delimiter :: binary() | undefined, + + %% the marker used in the _request_ + key_marker :: binary() | undefined, + version_id_marker :: binary() | undefined, + + %% the (optional) marker to use for pagination + %% in the _next_ request + next_key_marker :: next_marker(), + next_version_id_marker :: next_marker(), + + %% The actual response ----------------------------------------------- + is_truncated :: boolean(), + + contents :: [list_object_versions_key_content()], + + common_prefixes :: list_objects_common_prefixes() + }). + +-type list_object_versions_response() :: #list_object_versions_response{}. +-define(LOVRESP, #list_object_versions_response). --record(list_object_versions_key_content_v1, +-record(list_object_versions_key_content, { key :: binary(), last_modified :: term(), @@ -113,13 +146,13 @@ owner :: list_objects_owner(), storage_class :: binary() }). --type list_object_versions_key_content() :: #list_object_versions_key_content_v1{}. --define(LOVKC, #list_object_versions_key_content_v1). +-type list_object_versions_key_content() :: #list_object_versions_key_content{}. +-define(LOVKC, #list_object_versions_key_content). --record(list_objects_owner_v1, { +-record(list_objects_owner, { id :: binary(), display_name :: binary()}). --type list_objects_owner() :: #list_objects_owner_v1{}. +-type list_objects_owner() :: #list_objects_owner{}. -type list_objects_common_prefixes() :: list(binary()). diff --git a/apps/riak_cs/src/riak_cs_api.erl b/apps/riak_cs/src/riak_cs_api.erl index aebaccfa7..1e0d75c7c 100644 --- a/apps/riak_cs/src/riak_cs_api.erl +++ b/apps/riak_cs/src/riak_cs_api.erl @@ -37,7 +37,7 @@ list_buckets(User=?RCS_USER{buckets=Buckets}) -> -type options() :: [{atom(), 'undefined' | binary()}]. -spec list_objects(list_objects_req_type(), [string()], binary(), non_neg_integer(), options(), riak_client()) -> - {ok, ?LORESP{}} | {error, term()}. + {ok, list_objects_response() | list_object_versions_response()} | {error, term()}. list_objects(_, [], _, _, _, _) -> {error, no_such_bucket}; list_objects(_, _UserBuckets, _Bucket, {error, _}=Error, _Options, _RcPid) -> diff --git a/apps/riak_cs/src/riak_cs_list_objects.erl b/apps/riak_cs/src/riak_cs_list_objects.erl index 0d4fb4241..1515a71fa 100644 --- a/apps/riak_cs/src/riak_cs_list_objects.erl +++ b/apps/riak_cs/src/riak_cs_list_objects.erl @@ -45,9 +45,9 @@ new_request(Type, Name) -> -spec new_request(list_objects_req_type(), binary(), pos_integer(), list()) -> list_object_request(). new_request(Type, Name, MaxKeys, Options) -> - process_options(#list_objects_request_v1{req_type = Type, - name = Name, - max_keys = MaxKeys}, + process_options(#list_objects_request{req_type = Type, + name = Name, + max_keys = MaxKeys}, Options). %% @private @@ -59,11 +59,11 @@ process_options(Request, Options) -> Options). process_options_helper({prefix, Val}, Req) -> - Req#list_objects_request_v1{prefix=Val}; + Req#list_objects_request{prefix = Val}; process_options_helper({delimiter, Val}, Req) -> - Req#list_objects_request_v1{delimiter=Val}; + Req#list_objects_request{delimiter = Val}; process_options_helper({marker, Val}, Req) -> - Req#list_objects_request_v1{marker=Val}. + Req#list_objects_request{marker = Val}. %% Response %%-------------------------------------------------------------------- @@ -73,17 +73,15 @@ process_options_helper({marker, Val}, Req) -> NextMarker :: next_marker(), CommonPrefixes :: list(list_objects_common_prefixes()), ObjectContents :: list(list_objects_key_content())) -> - list_object_response(). -new_response(?LOREQ{req_type = ReqType, + list_objects_response() | list_object_versions_response(). +new_response(?LOREQ{req_type = objects, name = Name, max_keys = MaxKeys, prefix = Prefix, delimiter = Delimiter, - marker = Marker - }, + marker = Marker}, IsTruncated, NextMarker, CommonPrefixes, ObjectContents) -> - ?LORESP{resp_type = ReqType, - name = Name, + ?LORESP{name = Name, max_keys = MaxKeys, prefix = Prefix, delimiter = Delimiter, @@ -91,12 +89,37 @@ new_response(?LOREQ{req_type = ReqType, next_marker = NextMarker, is_truncated = IsTruncated, contents = ObjectContents, - common_prefixes = CommonPrefixes}. + common_prefixes = CommonPrefixes}; + +new_response(?LOREQ{req_type = versions, + name = Name, + max_keys = MaxKeys, + prefix = Prefix, + delimiter = Delimiter, + marker = Marker}, + IsTruncated, NextMarker, CommonPrefixes, ObjectContents) -> + {KeyMarker, VersionIdMarker} = safe_decompose_key(Marker), + {NextKeyMarker, NextVersionIdMarker} = safe_decompose_key(NextMarker), + ?LOVRESP{name = Name, + max_keys = MaxKeys, + prefix = Prefix, + delimiter = Delimiter, + key_marker = KeyMarker, + version_id_marker = VersionIdMarker, + next_key_marker = NextKeyMarker, + next_version_id_marker = NextVersionIdMarker, + is_truncated = IsTruncated, + contents = ObjectContents, + common_prefixes = CommonPrefixes}. + +safe_decompose_key(undefined) -> {undefined, undefined}; +safe_decompose_key(K) -> rcs_common_manifest:decompose_versioned_key(K). %% Rest %%-------------------------------------------------------------------- --spec manifest_to_keycontent(list_objects_req_type(), lfs_manifest()) -> list_objects_key_content(). +-spec manifest_to_keycontent(list_objects_req_type(), lfs_manifest()) -> + list_objects_key_content() | list_object_versions_key_content(). manifest_to_keycontent(ReqType, ?MANIFEST{bkey = {_Bucket, Key}, created = Created, content_md5 = ContentMd5, @@ -117,12 +140,11 @@ manifest_to_keycontent(ReqType, ?MANIFEST{bkey = {_Bucket, Key}, case ReqType of versions -> - VersionId = Vsn, ?LOVKC{key = Key, last_modified = LastModified, etag = Etag, is_latest = true, - version_id = VersionId, + version_id = Vsn, size = ContentLength, owner = Owner, storage_class = StorageClass}; @@ -144,5 +166,5 @@ acl_to_owner(?ACL{owner=Owner}) -> {DisplayName, CanonicalId, _KeyId} = Owner, CanonicalIdBinary = list_to_binary(CanonicalId), DisplayNameBinary = list_to_binary(DisplayName), - #list_objects_owner_v1{id=CanonicalIdBinary, - display_name=DisplayNameBinary}. + #list_objects_owner{id = CanonicalIdBinary, + display_name = DisplayNameBinary}. diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl index 58bffcdea..8e86b1997 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl @@ -82,8 +82,8 @@ %% list keys ---- list_keys_req_id :: undefined | non_neg_integer(), - key_buffer=[] :: undefined | list(), - keys=[] :: undefined | list(), + key_buffer = [] :: undefined | list(), + keys = [] :: undefined | list(), %% we cache the number of keys because %% `length/1' is linear time num_keys :: undefined | non_neg_integer(), @@ -113,11 +113,11 @@ %% this field will change, it represents %% the current outstanding m/r request map_red_req_id :: undefined | non_neg_integer(), - mr_requests=[] :: [{StartIdx :: non_neg_integer(), - EndIdx :: non_neg_integer()}], - object_buffer=[] :: list(), + mr_requests = [] :: [{StartIdx :: non_neg_integer(), + EndIdx :: non_neg_integer()}], + object_buffer = [] :: list(), - response :: undefined | list_object_response(), + response :: undefined | list_objects_response(), req_profiles=#profiling{} :: profiling(), @@ -125,7 +125,7 @@ use_cache :: boolean(), %% Key to use to check for cached results from key listing cache_key :: term(), - common_prefixes=ordsets:new() :: list_objects_common_prefixes()}). + common_prefixes = ordsets:new() :: list_objects_common_prefixes()}). %% some useful shared types @@ -413,7 +413,7 @@ prepare_state_for_mapred(State=#state{req=Request, State#state{mr_requests=PrevRequests ++ [NewReq]}. -spec make_response(list_object_request(), list(), list()) -> - list_object_response(). + list_objects_response(). make_response(Request=?LOREQ{req_type = ReqType, max_keys = NumKeysRequested}, ObjectBuffer, CommonPrefixes) -> diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl index b57781416..3cf9d6391 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl @@ -86,7 +86,7 @@ object_list_ranges=[] :: object_list_ranges(), profiling=#profiling{} :: profiling(), response :: undefined | - {ok, list_object_response()} | + {ok, list_objects_response() | list_object_versions_response()} | {error, term()}, common_prefixes=ordsets:new() :: list_objects_common_prefixes()}). @@ -522,15 +522,10 @@ next_byte(<>=Byte) when Integer == 255 -> next_byte(<>) -> <<(Integer+1):8/integer>>. --spec try_reply({ok, list_object_response()} | {error, term()}, - state()) -> - fsm_state_return(). try_reply(Response, State) -> NewStateData = State#state{response=Response}, reply_or_wait(Response, NewStateData). --spec reply_or_wait({ok, list_object_response()} | {error, term()}, state()) -> - fsm_state_return(). reply_or_wait(_Response, State=#state{reply_ref=undefined}) -> {next_state, waiting_req, State}; reply_or_wait(Response, State=#state{reply_ref=Ref}) -> @@ -538,8 +533,6 @@ reply_or_wait(Response, State=#state{reply_ref=Ref}) -> Reason = make_reason(Response), {stop, Reason, State}. --spec make_reason({ok, list_object_response()} | {error, term()}) -> - normal | term(). make_reason({ok, _Response}) -> normal; make_reason({error, Reason}) -> @@ -601,28 +594,27 @@ extract_timing({_Range, NumKeysReturned, {StartTime, EndTime}}) -> riak_cs_utils:timestamp_to_milliseconds(StartTime), {MillisecondDiff, NumKeysReturned}. --spec format_profiling_from_state(state()) -> string(). -format_profiling_from_state(#state{req=Request, - response={ok, Response}, - profiling=Profiling}) -> +format_profiling_from_state(#state{req = Request, + response = {ok, Response}, + profiling = Profiling}) -> format_profiling(Request, Response, Profiling, self()). --spec format_profiling(list_object_request(), - list_object_response(), - profiling(), - pid()) -> string(). -format_profiling(?LOREQ{max_keys=MaxKeys}, - ?LORESP{contents=Contents, common_prefixes=CommonPrefixes}, - #profiling{fold_objects_requests=Requests}, +format_profiling(Request, ?LORESP{contents = Contents, common_prefixes = CommonPrefixes}, + Profiling, Pid) -> + format_profiling(Request, Contents, CommonPrefixes, Profiling, Pid); +format_profiling(Request, ?LOVRESP{contents = Contents, common_prefixes = CommonPrefixes}, + Profiling, Pid) -> + format_profiling(Request, Contents, CommonPrefixes, Profiling, Pid). + +format_profiling(?LOREQ{max_keys = MaxKeys}, + Contents, CommonPrefixes, + #profiling{fold_objects_requests = Requests}, Pid) -> string:join([io_lib:format("~p: User requested ~p keys", [Pid, MaxKeys]), - io_lib:format("~p: We returned ~p objects", [Pid, length(Contents)]), - io_lib:format("~p: We returned ~p common prefixes", [Pid, ordsets:size(CommonPrefixes)]), - io_lib:format("~p: With fold objects timings: {Millis, NumObjects}: ~p", %% We reverse the Requests in here because they %% were cons'd as they happened. diff --git a/apps/riak_cs/src/riak_cs_list_objects_utils.erl b/apps/riak_cs/src/riak_cs_list_objects_utils.erl index b3824646b..54ac18a68 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_utils.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_utils.erl @@ -88,7 +88,7 @@ start_link(RcPid, CallerPid, ListKeysRequest, CacheKey, UseCache) -> end. -spec get_object_list(pid()) -> - {ok, list_object_response()} | + {ok, list_objects_response() | list_object_versions_response()} | {error, term()}. get_object_list(FSMPid) -> gen_fsm:sync_send_all_state_event(FSMPid, get_object_list, infinity). diff --git a/apps/riak_cs/src/riak_cs_oos_response.erl b/apps/riak_cs/src/riak_cs_oos_response.erl index b9031a4c5..b5677cbc2 100644 --- a/apps/riak_cs/src/riak_cs_oos_response.erl +++ b/apps/riak_cs/src/riak_cs_oos_response.erl @@ -48,7 +48,7 @@ respond(?LBRESP{}=Response, RD, Ctx) -> "text/plain", RD), {BucketsDoc, UpdRD, Ctx}; -respond({ok, ?LORESP{resp_type = _RespType} = Response}, RD, Ctx) -> +respond({ok, ?LORESP{} = Response}, RD, Ctx) -> %% @TODO Expand to handle common prefixes UpdRD = wrq:set_resp_header("Content-Type", "text/plain", @@ -57,6 +57,16 @@ respond({ok, ?LORESP{resp_type = _RespType} = Response}, RD, Ctx) -> KeyContent <- Response?LORESP.contents, KeyContent /= undefined], {ResponseBody, UpdRD, Ctx}; +respond({ok, ?LOVRESP{} = Response}, RD, Ctx) -> + %% @TODO Expand to handle common prefixes + UpdRD = wrq:set_resp_header("Content-Type", + "text/plain", + RD), + ResponseBody = [binary_to_list(KeyContent?LOVKC.key) ++ ":" ++ + binary_to_list(KeyContent?LOVKC.version_id) ++ "\n" || + KeyContent <- Response?LOVRESP.contents, + KeyContent /= undefined], + {ResponseBody, UpdRD, Ctx}; respond({error, _}=Error, RD, Ctx) -> api_error(Error, RD, Ctx). diff --git a/apps/riak_cs/src/riak_cs_s3_response.erl b/apps/riak_cs/src/riak_cs_s3_response.erl index 073b15eb5..23cd59f4e 100644 --- a/apps/riak_cs/src/riak_cs_s3_response.erl +++ b/apps/riak_cs/src/riak_cs_s3_response.erl @@ -229,11 +229,13 @@ status_code(ErrorName) -> -spec respond(term(), #wm_reqdata{}, #context{}) -> {binary(), #wm_reqdata{}, #context{}}. -respond(?LBRESP{}=Response, RD, Ctx) -> +respond(?LBRESP{} = Response, RD, Ctx) -> {riak_cs_xml:to_xml(Response), RD, Ctx}; -respond({ok, ?LORESP{}=Response}, RD, Ctx) -> +respond({ok, ?LORESP{} = Response}, RD, Ctx) -> {riak_cs_xml:to_xml(Response), RD, Ctx}; -respond({error, _}=Error, RD, Ctx) -> +respond({ok, ?LOVRESP{} = Response}, RD, Ctx) -> + {riak_cs_xml:to_xml(Response), RD, Ctx}; +respond({error, _} = Error, RD, Ctx) -> api_error(Error, RD, Ctx). respond(404 = _StatusCode, Body, ReqData, Ctx) -> diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index 2649bd3ff..13cc2c43c 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -325,11 +325,11 @@ accept_body(RD, #context{response_module=ResponseMod} = Ctx) -> -spec handle_normal_put(#wm_reqdata{}, #context{}) -> {{halt, integer()}, #wm_reqdata{}, #context{}}. -handle_normal_put(RD, Ctx) -> +handle_normal_put(RD, Ctx0) -> #context{local_context=LocalCtx, user=User, acl=ACL, - riak_client=RcPid} = Ctx, + riak_client=RcPid} = Ctx0, #key_context{bucket = Bucket, key = Key, obj_vsn = SuppliedVsn, @@ -337,9 +337,10 @@ handle_normal_put(RD, Ctx) -> size = Size, get_fsm_pid = GetFsmPid} = LocalCtx, - Vsn = determine_object_version(SuppliedVsn, Bucket, Key, RcPid), + EventualVsn = determine_object_version(SuppliedVsn, Bucket, Key, RcPid), + Ctx1 = Ctx0#context{local_context = LocalCtx#key_context{obj_vsn = EventualVsn}}, - BFile_str = bfile_str(Bucket, Key, Vsn), + BFile_str = bfile_str(Bucket, Key, EventualVsn), UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_object_entry(?MODULE, <<"object_put">>, [], [UserName, BFile_str]), @@ -347,11 +348,11 @@ handle_normal_put(RD, Ctx) -> Metadata = riak_cs_wm_utils:extract_user_metadata(RD), BlockSize = riak_cs_lfs_utils:block_size(), - Args = [{Bucket, Key, Vsn, Size, list_to_binary(ContentType), + Args = [{Bucket, Key, EventualVsn, Size, list_to_binary(ContentType), Metadata, BlockSize, ACL, timer:seconds(60), self(), RcPid}], {ok, Pid} = riak_cs_put_fsm_sup:start_put_fsm(node(), Args), try - accept_streambody(RD, Ctx, Pid, + accept_streambody(RD, Ctx1, Pid, wrq:stream_req_body(RD, riak_cs_lfs_utils:block_size())) catch Type:Error -> @@ -492,9 +493,9 @@ finalize_request(RD, Pid) -> #key_context{bucket = Bucket, key = Key, - obj_vsn = ObjVsn, + obj_vsn = Vsn, size = S} = LocalCtx, - BFile_str = bfile_str(Bucket, Key, ObjVsn), + BFile_str = bfile_str(Bucket, Key, Vsn), UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_wm_entry(?MODULE, <<"finalize_request">>, [S], [UserName, BFile_str]), ContentMD5 = wrq:get_req_header("content-md5", RD), @@ -505,7 +506,8 @@ finalize_request(RD, %% TODO: probably want something that counts actual bytes uploaded %% instead, to record partial/aborted uploads AccessRD = riak_cs_access_log_handler:set_bytes_in(S, RD), - {{halt, 200}, wrq:set_resp_header("ETag", ETag, AccessRD), Ctx}; + {{halt, 200}, wrq:set_resp_headers([{"ETag", ETag}, + {"x-amz-version-id", Vsn}], AccessRD), Ctx}; {error, invalid_digest} -> ResponseMod:invalid_digest_response(ContentMD5, RD, Ctx); {error, Reason} -> diff --git a/apps/riak_cs/src/riak_cs_wm_object_versions.erl b/apps/riak_cs/src/riak_cs_wm_object_versions.erl index 0cf954945..e0f613d71 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_versions.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_versions.erl @@ -53,7 +53,7 @@ allowed_methods() -> authorize(RD, Ctx) -> riak_cs_wm_utils:bucket_access_authorize_helper(bucket, false, RD, Ctx). --spec api_request(#wm_reqdata{}, #context{}) -> {ok, ?LORESP{}} | {error, term()}. +-spec api_request(#wm_reqdata{}, #context{}) -> {ok, ?LOVRESP{}} | {error, term()}. api_request(RD, Ctx = #context{bucket = Bucket, riak_client = RcPid, user = User}) -> diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index 1d9ad336b..9199dddf4 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -290,8 +290,8 @@ setup_manifest(KeyCtx = #key_context{bucket = Bucket, FetchConcurrency, BufferFactor), Manifest = riak_cs_get_fsm:get_manifest(FsmPid), - KeyCtx#key_context{get_fsm_pid=FsmPid, - manifest=Manifest}. + KeyCtx#key_context{get_fsm_pid = FsmPid, + manifest = Manifest}. %% @doc Produce an api error by using response_module. respond_api_error(RD, Ctx, ErrorAtom) -> diff --git a/apps/riak_cs/src/riak_cs_xml.erl b/apps/riak_cs/src/riak_cs_xml.erl index 055adf439..c78d5f9ec 100644 --- a/apps/riak_cs/src/riak_cs_xml.erl +++ b/apps/riak_cs/src/riak_cs_xml.erl @@ -94,8 +94,9 @@ to_xml(#acl_v1{}=Acl) -> acl_to_xml(Acl); to_xml(?LBRESP{}=ListBucketsResp) -> list_buckets_response_to_xml(ListBucketsResp); -to_xml(?LORESP{}=ListObjsResp) -> - SimpleForm = list_objects_response_to_simple_form(ListObjsResp), +to_xml(Resp) when is_record(Resp, list_objects_response); + is_record(Resp, list_object_versions_response) -> + SimpleForm = list_objects_response_to_simple_form(Resp), to_xml(SimpleForm); to_xml(?RCS_USER{}=User) -> user_record_to_xml(User); @@ -151,8 +152,7 @@ owner_content({OwnerName, OwnerId}) -> [make_external_node('ID', OwnerId), make_external_node('DisplayName', OwnerName)]. -list_objects_response_to_simple_form(?LORESP{resp_type = objects, - contents = Contents, +list_objects_response_to_simple_form(?LORESP{contents = Contents, common_prefixes = CommonPrefixes, name = Name, prefix = Prefix, @@ -180,25 +180,31 @@ list_objects_response_to_simple_form(?LORESP{resp_type = objects, KeyContents ++ CCPP, [{'ListBucketResult', [{'xmlns', ?S3_XMLNS}], Body}]; -list_objects_response_to_simple_form(?LORESP{resp_type = versions, - contents = Contents, - common_prefixes = CommonPrefixes, - name = Name, - prefix = Prefix, - marker = Marker, - next_marker = NextMarker, - max_keys = MaxKeys, - delimiter = Delimiter, - is_truncated = IsTruncated}) -> +list_objects_response_to_simple_form(?LOVRESP{contents = Contents, + common_prefixes = CommonPrefixes, + name = Name, + prefix = Prefix, + key_marker = KeyMarker, + version_id_marker = VersionIdMarker, + next_key_marker = NextKeyMarker, + next_version_id_marker = NextVersionIdMarker, + max_keys = MaxKeys, + delimiter = Delimiter, + is_truncated = IsTruncated}) -> KeyContents = [{'Version', key_content_to_simple_form(versions, Content)} || Content <- Contents], CommonPrefixes = [{'CommonPrefixes', [{'Prefix', [CommonPrefix]}]} || CommonPrefix <- CommonPrefixes], - Body = [{'Name', [Name]}, - {'Prefix', [Prefix]}, - {'Marker', [Marker]}] ++ - [{'NextMarker', [M]} || - M <- [NextMarker], + Body = [{'Name', [Name]}, + {'Prefix', [Prefix]}, + {'KeyMarker', [KeyMarker]}, + {'VersionIdMarker', [VersionIdMarker]}] ++ + [{'NextKeyMarker', [M]} || + M <- [NextKeyMarker], + M =/= undefined, + IsTruncated] ++ + [{'NextVersionIdMarker', [M]} || + M <- [NextVersionIdMarker], M =/= undefined, IsTruncated] ++ [{'MaxKeys', [MaxKeys]}, @@ -208,7 +214,7 @@ list_objects_response_to_simple_form(?LORESP{resp_type = versions, [{'ListBucketResult', [{'xmlns', ?S3_XMLNS}], Body}]. key_content_to_simple_form(objects, KeyContent) -> - #list_objects_owner_v1{id=Id, display_name=Name} = KeyContent?LOKC.owner, + #list_objects_owner{id=Id, display_name=Name} = KeyContent?LOKC.owner, [{'Key', [KeyContent?LOKC.key]}, {'LastModified', [KeyContent?LOKC.last_modified]}, {'ETag', [KeyContent?LOKC.etag]}, @@ -218,7 +224,7 @@ key_content_to_simple_form(objects, KeyContent) -> {'DisplayName', [Name]}]}]; key_content_to_simple_form(versions, KeyContent) -> - #list_objects_owner_v1{id=Id, display_name=Name} = KeyContent?LOVKC.owner, + #list_objects_owner{id=Id, display_name=Name} = KeyContent?LOVKC.owner, [{'Key', [KeyContent?LOVKC.key]}, {'LastModified', [KeyContent?LOVKC.last_modified]}, {'ETag', [KeyContent?LOVKC.etag]}, @@ -377,8 +383,8 @@ acl_to_xml_test() -> list_objects_response_to_xml_test() -> Xml = <<"bucket1000falsetestkey12012-11-29T17:50:30.000Z\"fba9dede6af29711d7271245a35813428\"12345STANDARDTESTID1tester1testkey22012-11-29T17:52:30.000Z\"43433281b2f27731ccf53597645a3985\"54321STANDARDTESTID2tester2">>, - Owner1 = #list_objects_owner_v1{id = <<"TESTID1">>, display_name = <<"tester1">>}, - Owner2 = #list_objects_owner_v1{id = <<"TESTID2">>, display_name = <<"tester2">>}, + Owner1 = #list_objects_owner{id = <<"TESTID1">>, display_name = <<"tester1">>}, + Owner2 = #list_objects_owner{id = <<"TESTID2">>, display_name = <<"tester2">>}, Content1 = ?LOKC{key = <<"testkey1">>, last_modified = riak_cs_wm_utils:to_iso_8601("Thu, 29 Nov 2012 17:50:30 GMT"), etag = <<"\"fba9dede6af29711d7271245a35813428\"">>, From 15be7c002cbc62e4d79c89720e29f614f8fb2a75 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 25 Aug 2021 13:02:06 +0300 Subject: [PATCH 201/831] don't warn when PutObject arrives with null version and versioning is off --- apps/riak_cs/src/riak_cs_wm_object.erl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index 13cc2c43c..a5d8e17b7 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -375,6 +375,8 @@ determine_object_version(Vsn0, Bucket, Key, RcPid) -> lager:info("bucket \"~s\" has object versioning enabled" " but using ~p as supplied in request for key ~p", [Bucket, Vsn0, Key]), Vsn0; + {?LFS_DEFAULT_OBJECT_VERSION, {ok, #bucket_versioning{status = suspended}}} -> + Vsn0; {Vsn3, {ok, #bucket_versioning{status = suspended}}} -> lager:warning("ignoring object version ~p in request for key ~p in bucket \"~s\"" " as the bucket has object versioning suspended", [Vsn3, Key, Bucket]), From 2639b2f076dbdbb294c9dccab75e2d8438adfce7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 1 Sep 2021 01:30:29 +0300 Subject: [PATCH 202/831] unbreak Get-/PutObjectAcl on versioned objects --- apps/riak_cs/src/riak_cs_s3_rewrite.erl | 5 +++-- apps/riak_cs/src/riak_cs_web.erl | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/riak_cs_s3_rewrite.erl index 80a789e13..464e8bbf6 100644 --- a/apps/riak_cs/src/riak_cs_s3_rewrite.erl +++ b/apps/riak_cs/src/riak_cs_s3_rewrite.erl @@ -226,8 +226,9 @@ format_object_qs({SubResources, QueryParams}) -> %% @doc Format an object operation query string to conform the the %% rewrite rules. -format_object_qs(_SubResources, QueryParams, #{have_acl := true}) -> - ["/acl", format_query_params(QueryParams)]; +format_object_qs(_SubResources, QueryParams, #{version_id := VersionId, + have_acl := true}) -> + ["/versions/", VersionId, "/acl", format_query_params(QueryParams)]; format_object_qs(_SubResources, QueryParams, #{have_uploads := true, version_id := VersionId}) -> ["/versions/", VersionId, "/uploads", format_query_params(QueryParams)]; diff --git a/apps/riak_cs/src/riak_cs_web.erl b/apps/riak_cs/src/riak_cs_web.erl index caf4ce587..ba7cab58f 100644 --- a/apps/riak_cs/src/riak_cs_web.erl +++ b/apps/riak_cs/src/riak_cs_web.erl @@ -83,7 +83,7 @@ base_resources() -> {["buckets", bucket, "objects", object, "versions", versionId], riak_cs_wm_common, props(riak_cs_wm_object)}, {["buckets", bucket, "objects", object, "versions", versionId, "uploads", uploadId], riak_cs_wm_common, props(riak_cs_wm_object_upload_part)}, {["buckets", bucket, "objects", object, "versions", versionId, "uploads"], riak_cs_wm_common, props(riak_cs_wm_object_upload)}, - {["buckets", bucket, "objects", object, "acl"], riak_cs_wm_common, props(riak_cs_wm_object_acl)} + {["buckets", bucket, "objects", object, "versions", versionId, "acl"], riak_cs_wm_common, props(riak_cs_wm_object_acl)} ]. -spec one_three_resources(undefined | pos_integer()) -> [dispatch_rule()]. From cf70e61c6a47b46a0af813b4d8df685457612a61 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 1 Sep 2021 01:32:26 +0300 Subject: [PATCH 203/831] extract object version from x-rcs-versionid header. for PutObject --- apps/riak_cs/src/riak_cs_wm_utils.erl | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index 9199dddf4..320a38469 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -76,7 +76,6 @@ -define(QS_KEYID, "AWSAccessKeyId"). -define(QS_SIGNATURE, "Signature"). --define(QS_VERSION_ID, "versionId"). -type acl_or_error() :: {ok, #acl_v2{}} | {error, 'invalid_argument'} | @@ -444,10 +443,17 @@ extract_key(RD, Ctx = #context{local_context = LocalCtx0}) -> extract_version_id(RD, Ctx = #context{local_context = LocalCtx0}) -> VsnId = - case wrq:path_info(versionId, RD) of - undefined -> + case {wrq:path_info(versionId, RD), rcs_version_id_from_headers(RD)} of + {undefined, undefined} -> ?LFS_DEFAULT_OBJECT_VERSION; - V -> + {"null", Defined} when is_list(Defined) -> + %% emulating a versionId resource, if given, as a Riak + %% CS extension, for PutObject should probably be + %% better done in s3_rewrite, but doing so will be too + %% disruptive for the tidy rewriting flow + lager:debug("are we PutObject on a version? ~p", [Defined]), + list_to_binary(Defined); + {V, _} -> list_to_binary(mochiweb_util:unquote(mochiweb_util:unquote(V))) end, case size(VsnId) =< riak_cs_config:max_key_length() of @@ -458,6 +464,9 @@ extract_version_id(RD, Ctx = #context{local_context = LocalCtx0}) -> {error, {key_too_long, size(VsnId)}} end. +rcs_version_id_from_headers(RD) -> + wrq:get_req_header("x-rcs-versionid", RD). + extract_name(User) when is_list(User) -> User; extract_name(?RCS_USER{name=Name}) -> From 1ffb85a231057b71d753a8f9002733a858b32518 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 11 Sep 2021 00:12:12 +0300 Subject: [PATCH 204/831] spellcheck module names in parse_auth_header/2 --- apps/riak_cs/src/riak_cs_wm_utils.erl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index 320a38469..59523e15c 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -104,7 +104,7 @@ service_available(Pool, RD, Ctx) -> string() | undefined, string() | undefined}. parse_auth_header(KeyId, true) when KeyId =/= undefined -> - {riak_cs_passthru_auth, KeyId, undefined}; + {riak_cs_s3_passthru_auth, KeyId, undefined}; parse_auth_header("AWS " ++ Key, _) -> case string:tokens(Key, ":") of [KeyId, KeyData] -> @@ -122,9 +122,9 @@ parse_auth_header(_, _) -> string() | undefined, string() | undefined}. parse_auth_params(KeyId, _, true) when KeyId =/= undefined -> - {riak_cs_passthru_auth, KeyId, undefined}; + {riak_cs_s3_passthru_auth, KeyId, undefined}; parse_auth_params(undefined, _, true) -> - {riak_cs_passthru_auth, undefined, undefined}; + {riak_cs_s3_passthru_auth, undefined, undefined}; parse_auth_params(undefined, _, false) -> {riak_cs_blockall_auth, undefined, undefined}; parse_auth_params(_, undefined, _) -> From cf99d882810dd5654c4edad9426db36e578d59b0 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 11 Sep 2021 00:13:20 +0300 Subject: [PATCH 205/831] fix searched paths when making stage --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index f561322c6..ce18a76a5 100644 --- a/Makefile +++ b/Makefile @@ -89,8 +89,8 @@ devclean: clean rm -rf dev stage : rel - $(foreach app,$(wildcard apps/*), rm -rf rel/riak-cs/lib/$(shell basename $(app))* && ln -sf $(abspath $(app)) rel/riak-cs/lib;) - $(foreach dep,$(wildcard deps/*), rm -rf rel/riak-cs/lib/$(shell basename $(dep))* && ln -sf $(abspath $(dep)) rel/riak-cs/lib;) + $(foreach app,$(wildcard apps/*), rm -rf rel/riak-cs/lib/$(shell basename $(app))* && ln -sf $(abspath $(app)) rel/riak-cs/lib;) + $(foreach dep,$(wildcard _build/default/lib/*), rm -rf rel/riak-cs/lib/$(shell basename $(dep))* && ln -sf $(abspath $(dep)) rel/riak-cs/lib;) DIALYZER_APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools crypto inets \ From a4f58eda1af81e90797cee4e33bca13ce6716a64 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 11 Sep 2021 00:14:14 +0300 Subject: [PATCH 206/831] add {mode, prod} in relx entry for rel profile --- rebar.config | 1 + 1 file changed, 1 insertion(+) diff --git a/rebar.config b/rebar.config index f9e8a245d..4802ff540 100644 --- a/rebar.config +++ b/rebar.config @@ -69,6 +69,7 @@ {profiles, [ {rel, [ {relx, [ {overlay_vars, "rel/vars.config"} ] } + , {mode, prod} ] } , {dev, [ {relx, [ {dev_mode, true} From 32bcc4726e8d71415991a89770cb920b8eac5dd6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 11 Sep 2021 23:23:27 +0300 Subject: [PATCH 207/831] add riak_cs_control to bundle; spruce up docker scaffolding --- Dockerfile | 2 +- misc/bundle/Makefile | 14 ++++-- misc/bundle/docker-compose.yml | 18 +++++++- misc/bundle/riak/Dockerfile | 9 ++-- misc/bundle/riak_cs/Dockerfile | 47 +++++++++++++++------ misc/bundle/riak_cs_control/Dockerfile | 41 ++++++++++++++++++ misc/bundle/stanchion/Dockerfile | 34 ++++++++------- rebar.config | 11 ++--- rel/docker/{vars.config => vars.config.src} | 2 + 9 files changed, 133 insertions(+), 45 deletions(-) create mode 100644 misc/bundle/riak_cs_control/Dockerfile rename rel/docker/{vars.config => vars.config.src} (98%) diff --git a/Dockerfile b/Dockerfile index cfb67c817..9bbbb31bc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ ARG stanchion_host=127.0.0.1 \ admin_host=127.0.0.1 \ admin_port=8000 -EXPOSE $stanchion_port +EXPOSE $cs_port WORKDIR /usr/src/riak_cs COPY . /usr/src/riak_cs diff --git a/misc/bundle/Makefile b/misc/bundle/Makefile index 8d5d24f19..00d0bcc5e 100644 --- a/misc/bundle/Makefile +++ b/misc/bundle/Makefile @@ -1,8 +1,9 @@ .PHONY: ensure-dirs up down clean -RIAK_VSN ?= 3.0.4 -RIAK_CS_VSN ?= 3.0.0 -STANCHION_VSN ?= 3.0.0 +RIAK_VSN ?= 3.0.7 +RIAK_CS_VSN ?= 3.0.0 +STANCHION_VSN ?= 3.0.0 +RIAK_CS_CONTROL_VSN ?= 3.0.0 RIAK_DATA ?= $(shell pwd)/data/riak RIAK_CS_DATA ?= $(shell pwd)/data/riak_cs @@ -12,12 +13,17 @@ build: @docker-compose build \ --build-arg RIAK_VSN=$(RIAK_VSN) \ --build-arg RIAK_CS_VSN=$(RIAK_CS_VSN) \ - --build-arg STANCHION_VSN=$(STANCHION_VSN) + --build-arg STANCHION_VSN=$(STANCHION_VSN) \ + --build-arg RIAK_CS_CONTROL_VSN=$(RIAK_CS_CONTROL_VSN) up: ensure-dirs build @RIAK_DATA=$(RIAK_DATA) RIAK_CS_DATA=$(RIAK_CS_DATA) STANCHION_DATA=$(STANCHION_DATA) \ docker-compose up --detach +dev-up: ensure-dirs build + @RIAK_DATA=$(RIAK_DATA) RIAK_CS_DATA=$(RIAK_CS_DATA) STANCHION_DATA=$(STANCHION_DATA) \ + docker-compose up + down: @RIAK_DATA=$(RIAK_DATA) RIAK_CS_DATA=$(RIAK_CS_DATA) STANCHION_DATA=$(STANCHION_DATA) \ docker-compose down diff --git a/misc/bundle/docker-compose.yml b/misc/bundle/docker-compose.yml index 37342e0f0..f6e9209b6 100644 --- a/misc/bundle/docker-compose.yml +++ b/misc/bundle/docker-compose.yml @@ -6,7 +6,7 @@ services: net0: aliases: - riak - ipv4_address: 172.18.0.3 + ipv4_address: 172.18.0.2 ports: - "8087:8087" - "8098:8098" @@ -25,7 +25,7 @@ services: net0: aliases: - stanchion - ipv4_address: 172.18.0.2 + ipv4_address: 172.18.0.3 ports: - "8085:8085" build: @@ -56,6 +56,20 @@ services: source: ${RIAK_CS_DATA:-./data/riak_cs} target: /var/lib/riak_cs + riak_cs_control: + depends_on: + - riak_cs + networks: + net0: + aliases: + - riak_cs_control + ipv4_address: 172.18.0.5 + ports: + - "8090:8090" + build: + dockerfile: riak_cs_control/Dockerfile + context: . + networks: net0: ipam: diff --git a/misc/bundle/riak/Dockerfile b/misc/bundle/riak/Dockerfile index 7cf15e2e2..6fd014905 100644 --- a/misc/bundle/riak/Dockerfile +++ b/misc/bundle/riak/Dockerfile @@ -1,7 +1,7 @@ FROM debian:buster -ARG RIAK_VSN=3.0.6 \ - listener_ip=172.18.0.3 \ +ARG RIAK_VSN=3.0.7 \ + listener_ip=172.18.0.2 \ listener_pb_port=8087 \ listener_http_port=8098 @@ -34,10 +34,11 @@ RUN sed -i \ ].|" \ /etc/riak/advanced.config -EXPOSE ${listener_pb_port} ${listener_http_port} +EXPOSE $listener_pb_port $listener_http_port -RUN chown riak:riak /var/lib/riak +RUN chown -R riak:riak /var/lib/riak RUN echo "riak soft nofile 65536" >>/etc/security/limits.conf RUN echo "riak hard nofile 65536" >>/etc/security/limits.conf +USER riak CMD riak foreground diff --git a/misc/bundle/riak_cs/Dockerfile b/misc/bundle/riak_cs/Dockerfile index a785abebc..356b97445 100644 --- a/misc/bundle/riak_cs/Dockerfile +++ b/misc/bundle/riak_cs/Dockerfile @@ -1,24 +1,35 @@ -FROM erlang:22.3.4.10 AS compile-image - ARG RIAK_CS_VSN=3.0.0 \ cs_host=172.18.0.4 \ cs_port=8080 \ admin_host=172.18.0.4 \ admin_port=8000 \ - stanchion_host=172.18.0.2 \ + stanchion_host=172.18.0.3 \ stanchion_port=8085 \ - riak_host=172.18.0.3 \ + riak_host=172.18.0.2 \ riak_http_port=8098 \ riak_pb_port=8087 -WORKDIR /usr/src/riak_cs +FROM erlang:22.3.4.10 AS compile-image +ARG RIAK_CS_VSN \ + cs_host \ + cs_port \ + admin_host \ + admin_port \ + stanchion_host \ + stanchion_port \ + riak_host \ + riak_http_port \ + riak_pb_port + +WORKDIR /usr/src ADD https://github.com/TI-Tokyo/riak_cs/archive/refs/tags/${RIAK_CS_VSN}.tar.gz source.tar.gz RUN tar xzf source.tar.gz -WORKDIR riak_cs-${RIAK_CS_VSN} +RUN mv riak_cs-${RIAK_CS_VSN} rcs +WORKDIR rcs EXPOSE $cs_port $admin_port -RUN sed -i \ +RUN sed \ -e "s/@cs_ip@/$cs_host/" \ -e "s/@cs_port@/$cs_port/" \ -e "s/@admin_ip@/$admin_host/" \ @@ -27,23 +38,31 @@ RUN sed -i \ -e "s/@stanchion_port@/$stanchion_port/" \ -e "s/@riak_ip@/$riak_host/" \ -e "s/@riak_pb_port@/$riak_pb_port/" \ - rel/docker/vars.config + rel/docker/vars.config.src >rel/docker/vars.config RUN ./rebar3 as docker release -RUN mv _build/docker/rel/riak-cs ../rel -RUN echo "riak:${riak_http_port}/ping" >/tmp/riak_host FROM debian:buster AS runtime-image +ARG cs_host \ + cs_port \ + admin_host \ + admin_port \ + stanchion_host \ + stanchion_port \ + riak_host \ + riak_http_port \ + riak_pb_port RUN apt-get update && apt-get -y install libssl1.1 curl -COPY --from=compile-image /usr/src/riak_cs/rel /opt/riak-cs -COPY --from=compile-image /tmp/riak_host /tmp/riak_host +COPY --from=compile-image /usr/src/rcs/_build/docker/rel/riak-cs /opt/riak-cs -RUN mkdir -p /etc/riak-cs /var/lib/riak-cs /var/lib/riak-cs/data +RUN mkdir -p /etc/riak-cs /var/lib/riak_cs /var/lib/riak_cs/data RUN mv /opt/riak-cs/etc/riak-cs.conf /etc/riak-cs RUN echo "anonymous_user_creation = on" >>/etc/riak-cs/riak-cs.conf -CMD while ! curl -s $(cat /tmp/riak_host); do sleep 1; done && /opt/riak-cs/bin/riak-cs foreground +# whatever works +RUN echo "$riak_host:$riak_http_port/ping" >/tmp/curlop +CMD while ! curl -s $(cat /tmp/curlop) >/dev/null; do sleep 1; done && /opt/riak-cs/bin/riak-cs foreground diff --git a/misc/bundle/riak_cs_control/Dockerfile b/misc/bundle/riak_cs_control/Dockerfile new file mode 100644 index 000000000..3b6abcf41 --- /dev/null +++ b/misc/bundle/riak_cs_control/Dockerfile @@ -0,0 +1,41 @@ +ARG RIAK_CS_CONTROL_VSN=3.0.0 \ + CS_HOST="172.18.0.4" \ + CS_PORT=8080 \ + CS_PROTO="http" \ + CS_CONTROL_PORT=8090 \ + CS_ADMIN_KEY="admin-key" \ + CS_ADMIN_SECRET="admin-secret" + +FROM erlang:22.3.4.10 AS compile-image +ARG RIAK_CS_CONTROL_VSN + +EXPOSE $cs_control_port + +WORKDIR /usr/src +ADD https://github.com/TI-Tokyo/riak_cs_control/archive/refs/tags/${RIAK_CS_CONTROL_VSN}.tar.gz source.tar.gz +RUN tar xzf source.tar.gz +RUN mv riak_cs_control-${RIAK_CS_CONTROL_VSN} rcc +WORKDIR rcc + +RUN ./rebar3 as rel release + +FROM debian:buster AS runtime-image +ARG CS_HOST \ + CS_PORT \ + CS_PROTO \ + CS_CONTROL_PORT \ + CS_ADMIN_KEY \ + CS_ADMIN_SECRET + +ENV CS_HOST=${CS_HOST:-127.0.0.1} \ + CS_PORT=${CS_PORT:-8080} \ + CS_PROTO=${CS_PROTO:-http} \ + CS_CONTROL_PORT=${CS_CONTROL_PORT:-8090} \ + CS_ADMIN_KEY=${CS_ADMIN_KEY:-"admin-key"} \ + CS_ADMIN_SECRET=${CS_ADMIN_SECRET:-"admin-secret"} + +RUN apt-get update && apt-get -y install libssl1.1 curl + +COPY --from=compile-image /usr/src/rcc/_build/rel/rel/riak_cs_control /opt/riak_cs_control + +CMD /opt/riak_cs_control/bin/riak_cs_control foreground diff --git a/misc/bundle/stanchion/Dockerfile b/misc/bundle/stanchion/Dockerfile index 726e165c3..ccd5209db 100644 --- a/misc/bundle/stanchion/Dockerfile +++ b/misc/bundle/stanchion/Dockerfile @@ -1,18 +1,25 @@ -FROM erlang:22.3.4.10 AS compile-image - ARG STANCHION_VSN=3.0.0 \ - riak_host=172.18.0.3 \ + riak_host=172.18.0.2 \ riak_pb_port=8087 \ riak_http_port=8098 \ - stanchion_host=172.18.0.2 \ + stanchion_host=172.18.0.3 \ stanchion_port=8085 +FROM erlang:22.3.4.10 AS compile-image +ARG STANCHION_VSN \ + riak_host \ + riak_pb_port \ + riak_http_port \ + stanchion_host \ + stanchion_port + EXPOSE $stanchion_port -WORKDIR /usr/src/stanchion +WORKDIR /usr/src ADD https://github.com/TI-Tokyo/stanchion/archive/refs/tags/${STANCHION_VSN}.tar.gz source.tar.gz RUN tar xzf source.tar.gz -WORKDIR stanchion-${STANCHION_VSN} +RUN mv stanchion-${STANCHION_VSN} s +WORKDIR s RUN sed -i \ -e "s/@stanchion_ip@/$stanchion_host/" \ @@ -22,22 +29,19 @@ RUN sed -i \ rel/docker/vars.config RUN ./rebar3 as docker release -RUN mv _build/docker/rel/stanchion ../rel - -# relying on depends_on: in the docker-copose.yml is not sufficient, -# so let's ensure riak is actually up and responding before starting -# ourselves (also, variables don't seem to survive the FROM barrier): -RUN echo "riak:${riak_http_port}/ping" >/tmp/riak_host FROM debian:buster AS runtime-image +ARG riak_host \ + riak_http_port RUN apt-get update && apt-get -y install libssl1.1 curl -COPY --from=compile-image /usr/src/stanchion/rel /opt/stanchion -COPY --from=compile-image /tmp/riak_host /tmp/riak_host +COPY --from=compile-image /usr/src/s/_build/docker/rel/stanchion /opt/stanchion RUN mkdir -p /etc/stanchion /var/lib/stanchion /var/lib/stanchion/data RUN mv /opt/stanchion/etc/stanchion.conf /etc/stanchion -CMD while ! curl -s $(cat /tmp/riak_host); do sleep 1; done && /opt/stanchion/bin/stanchion foreground +# whatever works +RUN echo "$riak_host:$riak_http_port/ping" >/tmp/curlop +CMD while ! curl -s $(cat /tmp/curlop) >/dev/null; do sleep 1; done && /opt/stanchion/bin/stanchion foreground diff --git a/rebar.config b/rebar.config index 4802ff540..782f0ddb4 100644 --- a/rebar.config +++ b/rebar.config @@ -67,9 +67,9 @@ }. {profiles, [ {rel, [ {relx, [ {overlay_vars, "rel/vars.config"} + , {mode, prod} ] } - , {mode, prod} ] } , {dev, [ {relx, [ {dev_mode, true} @@ -80,13 +80,14 @@ , {test, [ {deps, [ {proper, "1.4.0"} , {erlcloud, ".*", {git, "git://github.com/TI-Tokyo/erlcloud.git", {tag, "0.4.7"}}} ] - } - ] + } + ] } , {docker, [ {relx, [ {overlay_vars, "rel/docker/vars.config"} + , {mode, prod} ] - } - ] + } + ] } , {rpm, [ {relx, [ {overlay_vars, "rel/pkg/rpm/vars.config"}, {overlay, [ {template, "rel/pkg/rpm/init.script", "etc/init.d/init.script"} diff --git a/rel/docker/vars.config b/rel/docker/vars.config.src similarity index 98% rename from rel/docker/vars.config rename to rel/docker/vars.config.src index 1c4031886..b4de997cb 100644 --- a/rel/docker/vars.config +++ b/rel/docker/vars.config.src @@ -1,5 +1,7 @@ %% -*- erlang -*- +{rel_vsn, "3.0"}. + {platform_bin_dir, "/opt/riak-cs/bin"}. {platform_data_dir, "/var/lib/riak-cs/data"}. {platform_etc_dir, "/etc/riak-cs"}. From 5be518b9dae16a125f0f8ffde67466ff109e2594 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 14 Sep 2021 23:58:34 +0300 Subject: [PATCH 208/831] scalable dockerized tussle WIP --- misc/bundle/Makefile | 48 +++++++++++----- misc/bundle/docker-compose-scalable-build.yml | 39 +++++++++++++ misc/bundle/docker-compose-scalable-run.yml | 56 +++++++++++++++++++ ...-compose.yml => docker-compose-single.yml} | 2 +- misc/bundle/make_riak_cluster.py | 39 +++++++++++++ misc/bundle/riak/Dockerfile | 3 +- misc/bundle/riak_cs/Dockerfile | 8 +-- misc/bundle/riak_cs_control/Dockerfile | 2 +- misc/bundle/stanchion/Dockerfile | 4 +- 9 files changed, 178 insertions(+), 23 deletions(-) create mode 100644 misc/bundle/docker-compose-scalable-build.yml create mode 100644 misc/bundle/docker-compose-scalable-run.yml rename misc/bundle/{docker-compose.yml => docker-compose-single.yml} (98%) create mode 100755 misc/bundle/make_riak_cluster.py diff --git a/misc/bundle/Makefile b/misc/bundle/Makefile index 00d0bcc5e..f65be1335 100644 --- a/misc/bundle/Makefile +++ b/misc/bundle/Makefile @@ -1,33 +1,55 @@ -.PHONY: ensure-dirs up down clean +.PHONY: ensure-dirs build-single build-scalable up-single up-scalable down-single down scalable clean RIAK_VSN ?= 3.0.7 -RIAK_CS_VSN ?= 3.0.0 -STANCHION_VSN ?= 3.0.0 -RIAK_CS_CONTROL_VSN ?= 3.0.0 +RIAK_CS_VSN ?= 3.0.0pre8 +STANCHION_VSN ?= 3.0.0pre6 +RIAK_CS_CONTROL_VSN ?= 3.0.0pre3 RIAK_DATA ?= $(shell pwd)/data/riak RIAK_CS_DATA ?= $(shell pwd)/data/riak_cs STANCHION_DATA ?= $(shell pwd)/data/stanchion -build: - @docker-compose build \ +RIAK_NODES ?= 3 + +DOCKER_SERVICE_NAME ?= rcs-tussle-one + +build-single: + @COMPOSE_FILE=docker-compose-single.yml \ + docker-compose build \ + --build-arg RIAK_VSN=$(RIAK_VSN) \ + --build-arg RIAK_CS_VSN=$(RIAK_CS_VSN) \ + --build-arg STANCHION_VSN=$(STANCHION_VSN) \ + --build-arg RIAK_CS_CONTROL_VSN=$(RIAK_CS_CONTROL_VSN) +build-scalable: + @COMPOSE_FILE=docker-compose-scalable-build.yml \ + docker-compose build \ --build-arg RIAK_VSN=$(RIAK_VSN) \ --build-arg RIAK_CS_VSN=$(RIAK_CS_VSN) \ --build-arg STANCHION_VSN=$(STANCHION_VSN) \ --build-arg RIAK_CS_CONTROL_VSN=$(RIAK_CS_CONTROL_VSN) -up: ensure-dirs build - @RIAK_DATA=$(RIAK_DATA) RIAK_CS_DATA=$(RIAK_CS_DATA) STANCHION_DATA=$(STANCHION_DATA) \ +up-single: ensure-dirs build-single + @COMPOSE_FILE=docker-compose-single.yml \ + RIAK_DATA=$(RIAK_DATA) \ + RIAK_CS_DATA=$(RIAK_CS_DATA) \ + STANCHION_DATA=$(STANCHION_DATA) \ docker-compose up --detach -dev-up: ensure-dirs build - @RIAK_DATA=$(RIAK_DATA) RIAK_CS_DATA=$(RIAK_CS_DATA) STANCHION_DATA=$(STANCHION_DATA) \ - docker-compose up +up-scalable: build-scalable + @docker swarm init >/dev/null || : + @COMPOSE_FILE=docker-compose-scalable-run.yml \ + RIAK_NODES=$(RIAK_NODES) \ + docker stack deploy -c docker-compose-scalable-run.yml $(DOCKER_SERVICE_NAME) \ + && ./make_riak_cluster.py $(DOCKER_SERVICE_NAME) -down: - @RIAK_DATA=$(RIAK_DATA) RIAK_CS_DATA=$(RIAK_CS_DATA) STANCHION_DATA=$(STANCHION_DATA) \ +down-single: + @COMPOSE_FILE=docker-compose-single.yml \ docker-compose down +down-scalable: + @COMPOSE_FILE=docker-compose-scalable-run.yml \ + docker stack service rm $(DOCKER_SERVICE_NAME) + ensure-dirs: @mkdir -p $(RIAK_DATA) $(RIAK_CS_DATA) $(STANCHION_DATA) diff --git a/misc/bundle/docker-compose-scalable-build.yml b/misc/bundle/docker-compose-scalable-build.yml new file mode 100644 index 000000000..fdb5d50a0 --- /dev/null +++ b/misc/bundle/docker-compose-scalable-build.yml @@ -0,0 +1,39 @@ +version: "3.8" +services: + + riak: + ports: + - "8087:8087" + - "8098:8098" + build: + dockerfile: riak/Dockerfile + context: . + + stanchion: + depends_on: + - riak + ports: + - "8085:8085" + build: + dockerfile: stanchion/Dockerfile + context: . + + riak_cs: + depends_on: + - riak + - stanchion + ports: + - "8080:8080" + - "8000:8000" + build: + dockerfile: riak_cs/Dockerfile + context: . + + riak_cs_control: + depends_on: + - riak_cs + ports: + - "8090:8090" + build: + dockerfile: riak_cs_control/Dockerfile + context: . diff --git a/misc/bundle/docker-compose-scalable-run.yml b/misc/bundle/docker-compose-scalable-run.yml new file mode 100644 index 000000000..01fc352fe --- /dev/null +++ b/misc/bundle/docker-compose-scalable-run.yml @@ -0,0 +1,56 @@ +version: "3.9" +services: + + riak: + networks: + net0: + aliases: + - riak + ports: + - "8087:8087" + - "8098:8098" + image: bundle_riak + deploy: + replicas: ${RIAK_NODES:-3} + + stanchion: + depends_on: + - riak + networks: + net0: + aliases: + - stanchion + ports: + - "8085:8085" + image: bundle_stanchion + deploy: + replicas: 1 + + riak_cs: + depends_on: + - riak + - stanchion + networks: + net0: + aliases: + - riak_cs + ports: + - "8080:8080" + - "8000:8000" + image: bundle_riak_cs + deploy: + replicas: 3 + + riak_cs_control: + depends_on: + - riak_cs + networks: + net0: + aliases: + - riak_cs_control + ports: + - "8090:8090" + image: bundle_riak_cs_control + +networks: + net0: diff --git a/misc/bundle/docker-compose.yml b/misc/bundle/docker-compose-single.yml similarity index 98% rename from misc/bundle/docker-compose.yml rename to misc/bundle/docker-compose-single.yml index f6e9209b6..04ed9bc38 100644 --- a/misc/bundle/docker-compose.yml +++ b/misc/bundle/docker-compose-single.yml @@ -1,4 +1,4 @@ -version: "3.8" +version: "3.9" services: riak: diff --git a/misc/bundle/make_riak_cluster.py b/misc/bundle/make_riak_cluster.py new file mode 100755 index 000000000..83fbb0f5e --- /dev/null +++ b/misc/bundle/make_riak_cluster.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python + +import json, sys, subprocess + + +def discover_riak_nodes(tussle_name): + network = "%s_net0" % (tussle_name) + args = ["docker", "network", "inspect", network] + p = subprocess.run(args, + capture_output = True, + encoding = "utf8") + if p.returncode != 0: + sys.exit("Failed to discover riak nodes in %s_net0: %s\n%s" % (tussle_name, p.stdout, p.stderr)) + res = [{"ip": e["IPv4Address"].split("/")[0], + "container": e["Name"]} + for e in json.loads(p.stdout)[0]["Containers"].values() + if tussle_name + "_riak." in e["Name"]] + return res + +def join_nodes(nodes): + first = nodes[0] + rest = nodes[1:] + print("Joining nodes %s to %s" % ([n["ip"] for n in rest], first["ip"])) + for n in rest: + p = subprocess.run(args = ["docker", "exec", "-it", first["container"], + "riak", "admin", "cluster", "join", "riak@" + first["ip"]], + capture_output = True, + encoding = "utf8") + if p.returncode != 0: + sys.exit("Failed to execute a join command on node %s (%s): %s%s" % (n["container"], n["ip"], p.stdout, p.stderr)) + print(p.stdout) + +def main(): + riak_nodes = discover_riak_nodes(sys.argv[1]) + join_nodes(riak_nodes) + + +if __name__ == "__main__": + main() diff --git a/misc/bundle/riak/Dockerfile b/misc/bundle/riak/Dockerfile index 6fd014905..972e63c95 100644 --- a/misc/bundle/riak/Dockerfile +++ b/misc/bundle/riak/Dockerfile @@ -1,7 +1,6 @@ FROM debian:buster ARG RIAK_VSN=3.0.7 \ - listener_ip=172.18.0.2 \ listener_pb_port=8087 \ listener_http_port=8098 @@ -40,5 +39,5 @@ RUN chown -R riak:riak /var/lib/riak RUN echo "riak soft nofile 65536" >>/etc/security/limits.conf RUN echo "riak hard nofile 65536" >>/etc/security/limits.conf -USER riak +#USER riak CMD riak foreground diff --git a/misc/bundle/riak_cs/Dockerfile b/misc/bundle/riak_cs/Dockerfile index 356b97445..0e81bfc69 100644 --- a/misc/bundle/riak_cs/Dockerfile +++ b/misc/bundle/riak_cs/Dockerfile @@ -1,11 +1,11 @@ ARG RIAK_CS_VSN=3.0.0 \ - cs_host=172.18.0.4 \ + cs_host=riak_cs \ cs_port=8080 \ - admin_host=172.18.0.4 \ + admin_host=riak_cs \ admin_port=8000 \ - stanchion_host=172.18.0.3 \ + stanchion_host=stanchion \ stanchion_port=8085 \ - riak_host=172.18.0.2 \ + riak_host=riak \ riak_http_port=8098 \ riak_pb_port=8087 diff --git a/misc/bundle/riak_cs_control/Dockerfile b/misc/bundle/riak_cs_control/Dockerfile index 3b6abcf41..3a5906e6b 100644 --- a/misc/bundle/riak_cs_control/Dockerfile +++ b/misc/bundle/riak_cs_control/Dockerfile @@ -1,5 +1,5 @@ ARG RIAK_CS_CONTROL_VSN=3.0.0 \ - CS_HOST="172.18.0.4" \ + CS_HOST=riak_cs \ CS_PORT=8080 \ CS_PROTO="http" \ CS_CONTROL_PORT=8090 \ diff --git a/misc/bundle/stanchion/Dockerfile b/misc/bundle/stanchion/Dockerfile index ccd5209db..3e5a0f2e6 100644 --- a/misc/bundle/stanchion/Dockerfile +++ b/misc/bundle/stanchion/Dockerfile @@ -1,8 +1,8 @@ ARG STANCHION_VSN=3.0.0 \ - riak_host=172.18.0.2 \ + riak_host=riak \ riak_pb_port=8087 \ riak_http_port=8098 \ - stanchion_host=172.18.0.3 \ + stanchion_host=stanchion \ stanchion_port=8085 FROM erlang:22.3.4.10 AS compile-image From 1f13bb585a8d6b9971deb5344f9a7d3585485a43 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 16 Sep 2021 04:59:04 +0300 Subject: [PATCH 209/831] WIP tussle ready --- Dockerfile | 4 +- misc/bundle/Makefile | 12 +- misc/bundle/docker-compose-scalable-build.yml | 1 + misc/bundle/docker-compose-scalable-run.yml | 5 +- misc/bundle/make_riak_cluster.py | 158 +++++++++++++++--- misc/bundle/riak/Dockerfile | 20 ++- misc/bundle/riak_cs/Dockerfile | 71 +++----- misc/bundle/stanchion/Dockerfile | 49 +++--- 8 files changed, 203 insertions(+), 117 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9bbbb31bc..6ee7c653d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ EXPOSE $cs_port WORKDIR /usr/src/riak_cs COPY . /usr/src/riak_cs -RUN sed -i \ +RUN sed \ -e "s/@cs_ip@/$cs_host/" \ -e "s/@cs_port@/$cs_port/" \ -e "s/@admin_ip@/$admin_host/" \ @@ -23,7 +23,7 @@ RUN sed -i \ -e "s/@stanchion_port@/$stanchion_port/" \ -e "s/@riak_ip@/$riak_host/" \ -e "s/@riak_pb_port@/$riak_pb_port/" \ - rel/docker/vars.config + rel/docker/vars.config.src >rel/docker/vars.config RUN ./rebar3 as docker release FROM debian:buster AS runtime-image diff --git a/misc/bundle/Makefile b/misc/bundle/Makefile index f65be1335..738e7c752 100644 --- a/misc/bundle/Makefile +++ b/misc/bundle/Makefile @@ -2,14 +2,15 @@ RIAK_VSN ?= 3.0.7 RIAK_CS_VSN ?= 3.0.0pre8 -STANCHION_VSN ?= 3.0.0pre6 +STANCHION_VSN ?= 3.0.0pre8 RIAK_CS_CONTROL_VSN ?= 3.0.0pre3 RIAK_DATA ?= $(shell pwd)/data/riak RIAK_CS_DATA ?= $(shell pwd)/data/riak_cs STANCHION_DATA ?= $(shell pwd)/data/stanchion -RIAK_NODES ?= 3 +N_RIAK_NODES ?= 3 +N_RCS_NODES ?= 2 DOCKER_SERVICE_NAME ?= rcs-tussle-one @@ -38,9 +39,10 @@ up-single: ensure-dirs build-single up-scalable: build-scalable @docker swarm init >/dev/null || : @COMPOSE_FILE=docker-compose-scalable-run.yml \ - RIAK_NODES=$(RIAK_NODES) \ + N_RIAK_NODES=$(N_RIAK_NODES) \ + N_RCS_NODES=$(N_RCS_NODES) \ docker stack deploy -c docker-compose-scalable-run.yml $(DOCKER_SERVICE_NAME) \ - && ./make_riak_cluster.py $(DOCKER_SERVICE_NAME) + && ./make_riak_cluster.py $(DOCKER_SERVICE_NAME) $(N_RIAK_NODES) $(N_RCS_NODES) down-single: @COMPOSE_FILE=docker-compose-single.yml \ @@ -48,7 +50,7 @@ down-single: down-scalable: @COMPOSE_FILE=docker-compose-scalable-run.yml \ - docker stack service rm $(DOCKER_SERVICE_NAME) + docker stack rm $(DOCKER_SERVICE_NAME) ensure-dirs: @mkdir -p $(RIAK_DATA) $(RIAK_CS_DATA) $(STANCHION_DATA) diff --git a/misc/bundle/docker-compose-scalable-build.yml b/misc/bundle/docker-compose-scalable-build.yml index fdb5d50a0..60a1f3b67 100644 --- a/misc/bundle/docker-compose-scalable-build.yml +++ b/misc/bundle/docker-compose-scalable-build.yml @@ -5,6 +5,7 @@ services: ports: - "8087:8087" - "8098:8098" + - "9080:9080" build: dockerfile: riak/Dockerfile context: . diff --git a/misc/bundle/docker-compose-scalable-run.yml b/misc/bundle/docker-compose-scalable-run.yml index 01fc352fe..aa88fc31a 100644 --- a/misc/bundle/docker-compose-scalable-run.yml +++ b/misc/bundle/docker-compose-scalable-run.yml @@ -9,9 +9,10 @@ services: ports: - "8087:8087" - "8098:8098" + - "9080:9080" image: bundle_riak deploy: - replicas: ${RIAK_NODES:-3} + replicas: ${N_RIAK_NODES:-3} stanchion: depends_on: @@ -39,7 +40,7 @@ services: - "8000:8000" image: bundle_riak_cs deploy: - replicas: 3 + replicas: ${N_RCS_NODES:-2} riak_cs_control: depends_on: diff --git a/misc/bundle/make_riak_cluster.py b/misc/bundle/make_riak_cluster.py index 83fbb0f5e..d83bfe4ff 100755 --- a/misc/bundle/make_riak_cluster.py +++ b/misc/bundle/make_riak_cluster.py @@ -1,38 +1,156 @@ #!/usr/bin/env python -import json, sys, subprocess +import json, sys, time, subprocess -def discover_riak_nodes(tussle_name): +def discover_nodes(tussle_name, pattern, required_nodes): network = "%s_net0" % (tussle_name) args = ["docker", "network", "inspect", network] - p = subprocess.run(args, - capture_output = True, - encoding = "utf8") - if p.returncode != 0: - sys.exit("Failed to discover riak nodes in %s_net0: %s\n%s" % (tussle_name, p.stdout, p.stderr)) - res = [{"ip": e["IPv4Address"].split("/")[0], - "container": e["Name"]} - for e in json.loads(p.stdout)[0]["Containers"].values() - if tussle_name + "_riak." in e["Name"]] - return res - -def join_nodes(nodes): + while True: + p = subprocess.run(args, + capture_output = True, + encoding = "utf8") + if p.returncode != 0: + sys.exit("Failed to discover riak nodes in %s_net0: %s\n%s" % (tussle_name, p.stdout, p.stderr)) + res = [{"ip": e["IPv4Address"].split("/")[0], + "container": e["Name"]} + for e in json.loads(p.stdout)[0]["Containers"].values() + if tussle_name + "_" + pattern + "." in e["Name"]] + if len(res) != required_nodes: + time.sleep(1) + else: + print("Discovered these", pattern, "nodes:", [n["ip"] for n in res]) + return res + +def start_riak_nodes(nodes): + for n in nodes: + print("Starting Riak at node", n["ip"]) + p = docker_exec_proc(n, ["riak", "start"]) + if p.returncode != 0: + sys.exit("Failed to start riak node at %s: %s%s" % (n["ip"], p.stdout, p.stderr)) + for n in nodes: + nodename = "riak@" + n["ip"] + print("Waiting for service riak_kv on node", n["ip"]) + repeat = 10 + while repeat > 0: + p = docker_exec_proc(n, ["riak", "admin", "wait-for-service", "riak_kv"]) + if p.stdout == "riak_kv is up\n": + break + else: + time.sleep(1) + repeat = repeat-1 + repeat = 10 + while repeat > 0: + p = docker_exec_proc(n, ["riak", "admin", "ringready"]) + if p.returncode == 0: + break + else: + time.sleep(1) + repeat = repeat-1 + +def configure_riak_nodes(nodes): + for n in nodes: + nodename = "riak@" + n["ip"] + print("Setting riak nodename at node", n["ip"], "to", nodename) + p = docker_exec_proc(n, ["sed", "-i", "-E", + "-e", "s|nodename = riak@127.0.0.1|nodename = %s|" % nodename, + "-e", "s|listener.http.internal = .+|listener.http.internal = 0.0.0.0:8098|", + "-e", "s|listener.protobuf.internal = .+|listener.protobuf.internal = 0.0.0.0:8087|", + "/etc/riak/riak.conf"]) + if p.returncode != 0: + sys.exit("Failed to set nodename on riak node at %s: %s%s" % (n["ip"], p.stdout, p.stderr)) + + +def join_riak_nodes(nodes): first = nodes[0] rest = nodes[1:] print("Joining nodes %s to %s" % ([n["ip"] for n in rest], first["ip"])) for n in rest: - p = subprocess.run(args = ["docker", "exec", "-it", first["container"], - "riak", "admin", "cluster", "join", "riak@" + first["ip"]], - capture_output = True, - encoding = "utf8") + p = docker_exec_proc(n, ["riak", "admin", "cluster", "join", "riak@" + first["ip"]]) + if p.returncode != 0: + sys.exit("Failed to execute a join command on node %s (%s): %s%s" % + (n["container"], n["ip"], p.stdout, p.stderr)) + print(p.stdout) + print("Below are the cluster changes to be committed:") + for n in nodes: + p = docker_exec_proc(n, ["riak", "admin", "cluster", "plan"]) + if p.returncode != 0: + sys.exit("Failed to execute a join command on node %s (%s): %s%s" % (n["container"], n["ip"], p.stdout, p.stderr)) + print(p.stdout) + print("Committing changes now") + for n in rest: + p = docker_exec_proc(n, ["riak", "admin", "cluster", "commit"]) if p.returncode != 0: sys.exit("Failed to execute a join command on node %s (%s): %s%s" % (n["container"], n["ip"], p.stdout, p.stderr)) print(p.stdout) + +def configure_rcs_nodes(rcs_nodes, riak_nodes, stanchion_node): + n = 0 + m = 0 + for rn in rcs_nodes: + nodename = "riak_cs@" + rn["ip"] + print("Setting riak_cs nodename at node", rn["ip"], "to", nodename) + p = docker_exec_proc(rn, ["sed", "-i", "-E", + "-e", "s|nodename = riak@127.0.0.1|nodename = %s|" % nodename, + "-e", "s|riak_host = .+|riak_host = %s:8087|" % riak_nodes[m]["ip"], + "-e", "s|stanchion_host = .+|stanchion_host = %s:8085|" % stanchion_node["ip"], + "/opt/riak-cs/etc/riak-cs.conf"]) + if p.returncode != 0: + sys.exit("Failed to modify riak-cs.conf node at %s: %s%s" % (rn["ip"], p.stdout, p.stderr)) + n = n + 1 + m = m + 1 + if m > len(riak_nodes): + m = 0 + +def configure_stanchion_node(stanchion_node, riak_nodes): + nodename = "stanchion@" + stanchion_node["ip"] + print("Setting stanchion nodename at node", stanchion_node["ip"], "to", nodename) + p = docker_exec_proc(stanchion_node, ["sed", "-i", "-E", + "-e", "s|listener = 127.0.0.1:8085|listener = 0.0.0.0:8085|", + "-e", "s|nodename = riak@127.0.0.1|nodename = %s|" % nodename, + "-e", "s|riak_host = .+|riak_host = %s:8087|" % riak_nodes[0]["ip"], + "/opt/stanchion/etc/stanchion.conf"]) + if p.returncode != 0: + sys.exit("Failed to modify stanchion.conf node at %s: %s%s" % (stanchion_node["ip"], p.stdout, p.stderr)) + + +def start_stanchion_node(node): + print("Starting Stanchion at node", node["ip"]) + p = docker_exec_proc(node, ["/opt/stanchion/bin/stanchion", "start"]) + if p.returncode != 0: + sys.exit("Failed to start Stanchion at %s: %s%s" % (node["ip"], p.stdout, p.stderr)) + +def start_rcs_nodes(nodes): + for n in nodes: + print("Starting Riak CS at node", n["ip"]) + p = docker_exec_proc(n, ["/opt/riak-cs/bin/riak-cs", "start"]) + if p.returncode != 0: + sys.exit("Failed to start Riak CS at %s: %s%s" % (n["ip"], p.stdout, p.stderr)) + + + +def docker_exec_proc(n, cmd): + return subprocess.run(args = ["docker", "exec", "-it", n["container"]] + cmd, + capture_output = True, + encoding = "utf8") + def main(): - riak_nodes = discover_riak_nodes(sys.argv[1]) - join_nodes(riak_nodes) + tussle_name = sys.argv[1] + required_riak_nodes = int(sys.argv[2]) + required_rcs_nodes = int(sys.argv[3]) + riak_nodes = discover_nodes(tussle_name, "riak", required_riak_nodes) + configure_riak_nodes(riak_nodes) + start_riak_nodes(riak_nodes) + if len(riak_nodes) > 1: + join_riak_nodes(riak_nodes) + + rcs_nodes = discover_nodes(tussle_name, "riak_cs", required_rcs_nodes) + stanchion_nodes = discover_nodes(tussle_name, "stanchion", 1) + configure_stanchion_node(stanchion_nodes[0], riak_nodes) + configure_rcs_nodes(rcs_nodes, riak_nodes, stanchion_nodes[0]) + start_stanchion_node(stanchion_nodes[0]) + start_rcs_nodes(rcs_nodes) if __name__ == "__main__": diff --git a/misc/bundle/riak/Dockerfile b/misc/bundle/riak/Dockerfile index 972e63c95..644ca221c 100644 --- a/misc/bundle/riak/Dockerfile +++ b/misc/bundle/riak/Dockerfile @@ -1,8 +1,6 @@ FROM debian:buster -ARG RIAK_VSN=3.0.7 \ - listener_pb_port=8087 \ - listener_http_port=8098 +ARG RIAK_VSN=3.0.7 ENV PKG=riak_${RIAK_VSN}-OTP22.3_amd64.deb @@ -11,8 +9,6 @@ RUN wget -q https://files.tiot.jp/riak/kv/3.0/${RIAK_VSN}/debian/10/${PKG} RUN dpkg -i ${PKG} && rm ${PKG} RUN sed -i \ - -e "s|listener.protobuf.internal = 127.0.0.1:8087|listener.protobuf.internal = 0.0.0.0:${listener_pb_port}|" \ - -e "s|listener.http.internal = 127.0.0.1:8098|listener.http.internal = 0.0.0.0:${listener_http_port}|" \ -e "s|storage_backend = bitcask|storage_backend = multi|" \ /etc/riak/riak.conf RUN echo "buckets.default.allow_mult = true" >>/etc/riak/riak.conf @@ -33,11 +29,21 @@ RUN sed -i \ ].|" \ /etc/riak/advanced.config -EXPOSE $listener_pb_port $listener_http_port +EXPOSE 8087 8098 9080 RUN chown -R riak:riak /var/lib/riak RUN echo "riak soft nofile 65536" >>/etc/security/limits.conf RUN echo "riak hard nofile 65536" >>/etc/security/limits.conf #USER riak -CMD riak foreground + +# We can't start riak it in CMD because at this moment as we don't yet +# know other riak nodes' addresses -- those are to be allocated by +# docker stack and need to be discovered after that. All we can do is +# prepare the container, for a script run after docker stack deploy to +# do orchestration aid in the form of sed'ding the right values into +# riak.conf. It is unfortunate we have to plug a sleep loop for the +# process being monitored by docker, but that's one practical solution +# I have in mind now. + +CMD while :; do sleep 1m; done diff --git a/misc/bundle/riak_cs/Dockerfile b/misc/bundle/riak_cs/Dockerfile index 0e81bfc69..b42f58411 100644 --- a/misc/bundle/riak_cs/Dockerfile +++ b/misc/bundle/riak_cs/Dockerfile @@ -1,25 +1,7 @@ -ARG RIAK_CS_VSN=3.0.0 \ - cs_host=riak_cs \ - cs_port=8080 \ - admin_host=riak_cs \ - admin_port=8000 \ - stanchion_host=stanchion \ - stanchion_port=8085 \ - riak_host=riak \ - riak_http_port=8098 \ - riak_pb_port=8087 +ARG RIAK_CS_VSN=3.0.0 FROM erlang:22.3.4.10 AS compile-image -ARG RIAK_CS_VSN \ - cs_host \ - cs_port \ - admin_host \ - admin_port \ - stanchion_host \ - stanchion_port \ - riak_host \ - riak_http_port \ - riak_pb_port +ARG RIAK_CS_VSN WORKDIR /usr/src ADD https://github.com/TI-Tokyo/riak_cs/archive/refs/tags/${RIAK_CS_VSN}.tar.gz source.tar.gz @@ -27,42 +9,29 @@ RUN tar xzf source.tar.gz RUN mv riak_cs-${RIAK_CS_VSN} rcs WORKDIR rcs -EXPOSE $cs_port $admin_port - -RUN sed \ - -e "s/@cs_ip@/$cs_host/" \ - -e "s/@cs_port@/$cs_port/" \ - -e "s/@admin_ip@/$admin_host/" \ - -e "s/@admin_port@/$admin_port/" \ - -e "s/@stanchion_ip@/$stanchion_host/" \ - -e "s/@stanchion_port@/$stanchion_port/" \ - -e "s/@riak_ip@/$riak_host/" \ - -e "s/@riak_pb_port@/$riak_pb_port/" \ - rel/docker/vars.config.src >rel/docker/vars.config - -RUN ./rebar3 as docker release +EXPOSE 8080 8000 8087 +RUN ./rebar3 as rel release FROM debian:buster AS runtime-image -ARG cs_host \ - cs_port \ - admin_host \ - admin_port \ - stanchion_host \ - stanchion_port \ - riak_host \ - riak_http_port \ - riak_pb_port -RUN apt-get update && apt-get -y install libssl1.1 curl +RUN apt-get update && apt-get -y install libssl1.1 #curl + +COPY --from=compile-image /usr/src/rcs/_build/rel/rel/riak-cs /opt/riak-cs -COPY --from=compile-image /usr/src/rcs/_build/docker/rel/riak-cs /opt/riak-cs +RUN echo "anonymous_user_creation = on" >>/opt/riak-cs/etc/riak-cs.conf -RUN mkdir -p /etc/riak-cs /var/lib/riak_cs /var/lib/riak_cs/data -RUN mv /opt/riak-cs/etc/riak-cs.conf /etc/riak-cs +## whatever works +#RUN echo "$riak_host:$riak_http_port/ping" >/tmp/curlop +#CMD while ! curl -s $(cat /tmp/curlop) >/dev/null; do sleep 1; done && /opt/riak-cs/bin/riak-cs foreground -RUN echo "anonymous_user_creation = on" >>/etc/riak-cs/riak-cs.conf +# We can't start riak-cs it in CMD because at this moment as we don't +# yet know riak's addresses -- those are to be allocated by docker +# stack and need to be discovered after that. All we can do is +# prepare the container, for a script run after docker stack deploy to +# do orchestration aid in the form of sed'ding the right values into +# riak-cs.conf. It is unfortunate we have to plug a sleep loop for +# the process being monitored by docker, but that's one practical +# solution I have in mind now. -# whatever works -RUN echo "$riak_host:$riak_http_port/ping" >/tmp/curlop -CMD while ! curl -s $(cat /tmp/curlop) >/dev/null; do sleep 1; done && /opt/riak-cs/bin/riak-cs foreground +CMD while :; do sleep 1m; done diff --git a/misc/bundle/stanchion/Dockerfile b/misc/bundle/stanchion/Dockerfile index 3e5a0f2e6..4d1af3a54 100644 --- a/misc/bundle/stanchion/Dockerfile +++ b/misc/bundle/stanchion/Dockerfile @@ -1,19 +1,9 @@ -ARG STANCHION_VSN=3.0.0 \ - riak_host=riak \ - riak_pb_port=8087 \ - riak_http_port=8098 \ - stanchion_host=stanchion \ - stanchion_port=8085 +ARG STANCHION_VSN=3.0.0 FROM erlang:22.3.4.10 AS compile-image -ARG STANCHION_VSN \ - riak_host \ - riak_pb_port \ - riak_http_port \ - stanchion_host \ - stanchion_port +ARG STANCHION_VSN -EXPOSE $stanchion_port +EXPOSE 8085 WORKDIR /usr/src ADD https://github.com/TI-Tokyo/stanchion/archive/refs/tags/${STANCHION_VSN}.tar.gz source.tar.gz @@ -21,27 +11,26 @@ RUN tar xzf source.tar.gz RUN mv stanchion-${STANCHION_VSN} s WORKDIR s -RUN sed -i \ - -e "s/@stanchion_ip@/$stanchion_host/" \ - -e "s/@stanchion_port@/$stanchion_port/" \ - -e "s/@riak_ip@/$riak_host/" \ - -e "s/@riak_pb_port@/$riak_pb_port/" \ - rel/docker/vars.config - -RUN ./rebar3 as docker release +RUN ./rebar3 as rel release FROM debian:buster AS runtime-image -ARG riak_host \ - riak_http_port -RUN apt-get update && apt-get -y install libssl1.1 curl +RUN apt-get update && apt-get -y install libssl1.1 #curl + +COPY --from=compile-image /usr/src/s/_build/rel/rel/stanchion /opt/stanchion -COPY --from=compile-image /usr/src/s/_build/docker/rel/stanchion /opt/stanchion +## whatever works +#RUN echo "$riak_host:$riak_http_port/ping" >/tmp/curlop +#CMD while ! curl -s $(cat /tmp/curlop) >/dev/null; do sleep 1; done && /opt/stanchion/bin/stanchion foreground -RUN mkdir -p /etc/stanchion /var/lib/stanchion /var/lib/stanchion/data -RUN mv /opt/stanchion/etc/stanchion.conf /etc/stanchion +# We can't start riak-cs it in CMD because at this moment as we don't +# yet know riak's addresses -- those are to be allocated by docker +# stack and need to be discovered after that. All we can do is +# prepare the container, for a script run after docker stack deploy to +# do orchestration aid in the form of sed'ding the right values into +# riak-cs.conf. It is unfortunate we have to plug a sleep loop for +# the process being monitored by docker, but that's one practical +# solution I have in mind now. -# whatever works -RUN echo "$riak_host:$riak_http_port/ping" >/tmp/curlop -CMD while ! curl -s $(cat /tmp/curlop) >/dev/null; do sleep 1; done && /opt/stanchion/bin/stanchion foreground +CMD while :; do sleep 1m; done From 780c05e46d60f53a43973183302e963446cdb964 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 17 Sep 2021 02:51:36 +0300 Subject: [PATCH 210/831] ready for s3-benchmark --- misc/bundle/Makefile | 7 ++- misc/bundle/docker-compose-scalable-build.yml | 7 --- misc/bundle/docker-compose-scalable-run.yml | 1 + misc/bundle/make_riak_cluster.py | 54 ++++++++++++++++--- misc/bundle/riak_cs/Dockerfile | 2 +- 5 files changed, 56 insertions(+), 15 deletions(-) diff --git a/misc/bundle/Makefile b/misc/bundle/Makefile index 738e7c752..2ca57151f 100644 --- a/misc/bundle/Makefile +++ b/misc/bundle/Makefile @@ -11,6 +11,7 @@ STANCHION_DATA ?= $(shell pwd)/data/stanchion N_RIAK_NODES ?= 3 N_RCS_NODES ?= 2 +RCS_AUTH_V4 ?= on DOCKER_SERVICE_NAME ?= rcs-tussle-one @@ -42,7 +43,11 @@ up-scalable: build-scalable N_RIAK_NODES=$(N_RIAK_NODES) \ N_RCS_NODES=$(N_RCS_NODES) \ docker stack deploy -c docker-compose-scalable-run.yml $(DOCKER_SERVICE_NAME) \ - && ./make_riak_cluster.py $(DOCKER_SERVICE_NAME) $(N_RIAK_NODES) $(N_RCS_NODES) + && ./make_riak_cluster.py \ + $(DOCKER_SERVICE_NAME) \ + $(N_RIAK_NODES) \ + $(N_RCS_NODES) \ + $(RCS_AUTH_V4) down-single: @COMPOSE_FILE=docker-compose-single.yml \ diff --git a/misc/bundle/docker-compose-scalable-build.yml b/misc/bundle/docker-compose-scalable-build.yml index 60a1f3b67..d229199f9 100644 --- a/misc/bundle/docker-compose-scalable-build.yml +++ b/misc/bundle/docker-compose-scalable-build.yml @@ -11,8 +11,6 @@ services: context: . stanchion: - depends_on: - - riak ports: - "8085:8085" build: @@ -20,9 +18,6 @@ services: context: . riak_cs: - depends_on: - - riak - - stanchion ports: - "8080:8080" - "8000:8000" @@ -31,8 +26,6 @@ services: context: . riak_cs_control: - depends_on: - - riak_cs ports: - "8090:8090" build: diff --git a/misc/bundle/docker-compose-scalable-run.yml b/misc/bundle/docker-compose-scalable-run.yml index aa88fc31a..637c3f5d4 100644 --- a/misc/bundle/docker-compose-scalable-run.yml +++ b/misc/bundle/docker-compose-scalable-run.yml @@ -55,3 +55,4 @@ services: networks: net0: + attachable: true diff --git a/misc/bundle/make_riak_cluster.py b/misc/bundle/make_riak_cluster.py index d83bfe4ff..ab1ab1f6d 100755 --- a/misc/bundle/make_riak_cluster.py +++ b/misc/bundle/make_riak_cluster.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -import json, sys, time, subprocess +import json, sys, time, subprocess, httplib2 def discover_nodes(tussle_name, pattern, required_nodes): @@ -85,14 +85,16 @@ def join_riak_nodes(nodes): print(p.stdout) -def configure_rcs_nodes(rcs_nodes, riak_nodes, stanchion_node): +def configure_rcs_nodes(rcs_nodes, riak_nodes, stanchion_node, auth_v4): n = 0 m = 0 + print("Configuring Riak CS nodes") for rn in rcs_nodes: nodename = "riak_cs@" + rn["ip"] - print("Setting riak_cs nodename at node", rn["ip"], "to", nodename) p = docker_exec_proc(rn, ["sed", "-i", "-E", - "-e", "s|nodename = riak@127.0.0.1|nodename = %s|" % nodename, + "-e", "s|nodename = .+|nodename = %s|" % nodename, + "-e", "s|listener = .+|listener = 0.0.0.0:8080|", + "-e", "s|auth_v4 = .+|auth_v4 = %s|" % auth_v4, "-e", "s|riak_host = .+|riak_host = %s:8087|" % riak_nodes[m]["ip"], "-e", "s|stanchion_host = .+|stanchion_host = %s:8085|" % stanchion_node["ip"], "/opt/riak-cs/etc/riak-cs.conf"]) @@ -105,7 +107,7 @@ def configure_rcs_nodes(rcs_nodes, riak_nodes, stanchion_node): def configure_stanchion_node(stanchion_node, riak_nodes): nodename = "stanchion@" + stanchion_node["ip"] - print("Setting stanchion nodename at node", stanchion_node["ip"], "to", nodename) + print("Configuring Stanchion node") p = docker_exec_proc(stanchion_node, ["sed", "-i", "-E", "-e", "s|listener = 127.0.0.1:8085|listener = 0.0.0.0:8085|", "-e", "s|nodename = riak@127.0.0.1|nodename = %s|" % nodename, @@ -115,6 +117,7 @@ def configure_stanchion_node(stanchion_node, riak_nodes): sys.exit("Failed to modify stanchion.conf node at %s: %s%s" % (stanchion_node["ip"], p.stdout, p.stderr)) + def start_stanchion_node(node): print("Starting Stanchion at node", node["ip"]) p = docker_exec_proc(node, ["/opt/stanchion/bin/stanchion", "start"]) @@ -129,16 +132,43 @@ def start_rcs_nodes(nodes): sys.exit("Failed to start Riak CS at %s: %s%s" % (n["ip"], p.stdout, p.stderr)) +def find_external_ips(container): + p = subprocess.run(args = ["docker", "container", "inspect", container], + capture_output = True, + encoding = 'utf8') + cid = json.loads(p.stdout)[0]["Id"] + p = subprocess.run(args = ["docker", "network", "inspect", "docker_gwbridge"], + capture_output = True, + encoding = 'utf8') + ip = json.loads(p.stdout)[0]["Containers"][cid]["IPv4Address"].split("/")[0] + return ip + def docker_exec_proc(n, cmd): return subprocess.run(args = ["docker", "exec", "-it", n["container"]] + cmd, capture_output = True, encoding = "utf8") +def create_user(host, name, email): + url = 'http://%s:%d/riak-cs/user' % (host, 8080) + conn = httplib2.Http() + retries = 10 + while retries > 0: + try: + resp, content = conn.request(url, "POST", + headers = {"Content-Type": "application/json"}, + body = json.dumps({"email": email, "name": name})) + conn.close() + return json.loads(content) + except ConnectionRefusedError: + time.sleep(2) + def main(): tussle_name = sys.argv[1] required_riak_nodes = int(sys.argv[2]) required_rcs_nodes = int(sys.argv[3]) + auth_v4 = sys.argv[4] + riak_nodes = discover_nodes(tussle_name, "riak", required_riak_nodes) configure_riak_nodes(riak_nodes) start_riak_nodes(riak_nodes) @@ -148,10 +178,22 @@ def main(): rcs_nodes = discover_nodes(tussle_name, "riak_cs", required_rcs_nodes) stanchion_nodes = discover_nodes(tussle_name, "stanchion", 1) configure_stanchion_node(stanchion_nodes[0], riak_nodes) - configure_rcs_nodes(rcs_nodes, riak_nodes, stanchion_nodes[0]) + configure_rcs_nodes(rcs_nodes, riak_nodes, stanchion_nodes[0], auth_v4) start_stanchion_node(stanchion_nodes[0]) start_rcs_nodes(rcs_nodes) + rcs_ext_ips = [find_external_ips(c["container"]) for c in rcs_nodes] + print("Riak CS external addresses are:") + for ip in rcs_ext_ips: + print(" %s" % ip) + + admin_email = "admin@fafa.org" + admin_name = "admin" + u = create_user(rcs_ext_ips[0], admin_name, admin_email) + print("Admin user (%s <%s>) creds:\n key_id: %s\n key_secret: %s\n id: %s\n" + % (admin_name, admin_email, + u["key_id"], u["key_secret"], u["id"])) + if __name__ == "__main__": main() diff --git a/misc/bundle/riak_cs/Dockerfile b/misc/bundle/riak_cs/Dockerfile index b42f58411..11c3c4deb 100644 --- a/misc/bundle/riak_cs/Dockerfile +++ b/misc/bundle/riak_cs/Dockerfile @@ -9,7 +9,7 @@ RUN tar xzf source.tar.gz RUN mv riak_cs-${RIAK_CS_VSN} rcs WORKDIR rcs -EXPOSE 8080 8000 8087 +EXPOSE 8080 8000 RUN ./rebar3 as rel release From d139a72a2bbc4ddda637d072c9fbfc248cf5fdc7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 17 Sep 2021 23:11:53 +0300 Subject: [PATCH 211/831] move misc/bundle into a separate repo --- misc/bundle/.dockerignore | 1 - misc/bundle/.gitignore | 1 - misc/bundle/Makefile | 64 ------ misc/bundle/README.md | 37 ---- misc/bundle/docker-compose-scalable-build.yml | 33 --- misc/bundle/docker-compose-scalable-run.yml | 58 ----- misc/bundle/docker-compose-single.yml | 77 ------- misc/bundle/make_riak_cluster.py | 199 ------------------ misc/bundle/riak/Dockerfile | 49 ----- misc/bundle/riak/Dockerfile.centos | 41 ---- misc/bundle/riak_cs/Dockerfile | 37 ---- misc/bundle/riak_cs_control/Dockerfile | 41 ---- misc/bundle/stanchion/Dockerfile | 36 ---- 13 files changed, 674 deletions(-) delete mode 100644 misc/bundle/.dockerignore delete mode 100644 misc/bundle/.gitignore delete mode 100644 misc/bundle/Makefile delete mode 100644 misc/bundle/README.md delete mode 100644 misc/bundle/docker-compose-scalable-build.yml delete mode 100644 misc/bundle/docker-compose-scalable-run.yml delete mode 100644 misc/bundle/docker-compose-single.yml delete mode 100755 misc/bundle/make_riak_cluster.py delete mode 100644 misc/bundle/riak/Dockerfile delete mode 100644 misc/bundle/riak/Dockerfile.centos delete mode 100644 misc/bundle/riak_cs/Dockerfile delete mode 100644 misc/bundle/riak_cs_control/Dockerfile delete mode 100644 misc/bundle/stanchion/Dockerfile diff --git a/misc/bundle/.dockerignore b/misc/bundle/.dockerignore deleted file mode 100644 index 8fce60300..000000000 --- a/misc/bundle/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -data/ diff --git a/misc/bundle/.gitignore b/misc/bundle/.gitignore deleted file mode 100644 index bbd79eaeb..000000000 --- a/misc/bundle/.gitignore +++ /dev/null @@ -1 +0,0 @@ -dtata/ diff --git a/misc/bundle/Makefile b/misc/bundle/Makefile deleted file mode 100644 index 2ca57151f..000000000 --- a/misc/bundle/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -.PHONY: ensure-dirs build-single build-scalable up-single up-scalable down-single down scalable clean - -RIAK_VSN ?= 3.0.7 -RIAK_CS_VSN ?= 3.0.0pre8 -STANCHION_VSN ?= 3.0.0pre8 -RIAK_CS_CONTROL_VSN ?= 3.0.0pre3 - -RIAK_DATA ?= $(shell pwd)/data/riak -RIAK_CS_DATA ?= $(shell pwd)/data/riak_cs -STANCHION_DATA ?= $(shell pwd)/data/stanchion - -N_RIAK_NODES ?= 3 -N_RCS_NODES ?= 2 -RCS_AUTH_V4 ?= on - -DOCKER_SERVICE_NAME ?= rcs-tussle-one - -build-single: - @COMPOSE_FILE=docker-compose-single.yml \ - docker-compose build \ - --build-arg RIAK_VSN=$(RIAK_VSN) \ - --build-arg RIAK_CS_VSN=$(RIAK_CS_VSN) \ - --build-arg STANCHION_VSN=$(STANCHION_VSN) \ - --build-arg RIAK_CS_CONTROL_VSN=$(RIAK_CS_CONTROL_VSN) -build-scalable: - @COMPOSE_FILE=docker-compose-scalable-build.yml \ - docker-compose build \ - --build-arg RIAK_VSN=$(RIAK_VSN) \ - --build-arg RIAK_CS_VSN=$(RIAK_CS_VSN) \ - --build-arg STANCHION_VSN=$(STANCHION_VSN) \ - --build-arg RIAK_CS_CONTROL_VSN=$(RIAK_CS_CONTROL_VSN) - -up-single: ensure-dirs build-single - @COMPOSE_FILE=docker-compose-single.yml \ - RIAK_DATA=$(RIAK_DATA) \ - RIAK_CS_DATA=$(RIAK_CS_DATA) \ - STANCHION_DATA=$(STANCHION_DATA) \ - docker-compose up --detach - -up-scalable: build-scalable - @docker swarm init >/dev/null || : - @COMPOSE_FILE=docker-compose-scalable-run.yml \ - N_RIAK_NODES=$(N_RIAK_NODES) \ - N_RCS_NODES=$(N_RCS_NODES) \ - docker stack deploy -c docker-compose-scalable-run.yml $(DOCKER_SERVICE_NAME) \ - && ./make_riak_cluster.py \ - $(DOCKER_SERVICE_NAME) \ - $(N_RIAK_NODES) \ - $(N_RCS_NODES) \ - $(RCS_AUTH_V4) - -down-single: - @COMPOSE_FILE=docker-compose-single.yml \ - docker-compose down - -down-scalable: - @COMPOSE_FILE=docker-compose-scalable-run.yml \ - docker stack rm $(DOCKER_SERVICE_NAME) - -ensure-dirs: - @mkdir -p $(RIAK_DATA) $(RIAK_CS_DATA) $(STANCHION_DATA) - -clean: - @rm -rf $(RIAK_DATA) $(RIAK_CS_DATA) $(STANCHION_DATA) diff --git a/misc/bundle/README.md b/misc/bundle/README.md deleted file mode 100644 index b9accb841..000000000 --- a/misc/bundle/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Riak_cs bundle in a docker container - -This is an example of dockerized riak_cs, riak and stanchion, running -in a docker-composed bundle. - -## Building and running - -With `docker-compose up` (or `make up`), you will get riak\_cs, -stanchion and riak images created and their containers started. -Applications versions are defined as build args `RIAK_VSN`, -`RIAK_CS_VSN` and `STANCHION_VSN` for `docker build` (with 3.0.6, -3.0.0, 3.0.0, respectively, as defaults). - -Riak CS is reachable at 172.18.0.4. An admin user can be then -created with - -``` -$ curl -sX POST 172.18.0.4:8080/riak-cs/user \ - -H 'Content-Type: application/json' \ - --data '{"name": "fafa", "email": "keke@fa.fa"}' -``` - -Images for riak_cs and stanchion are built from source, pulled from -repos at github.com/TI-Tokyo, while riak is installed from a deb package. - -Containers can be stopped with `docker-compose down` (or `make down`). - -If you want to inspect logs, run `docker-compose up` manually, without -a `--detach` option. - -## Persisting state - -Within containers, application data are bind-mounted to local -filesystem at locations `RIAK_DATA`, `RIAK_CS_DATA` and -`STANCHION_DATA`. Unless explicitly set, these directories will be -created in "./data". - diff --git a/misc/bundle/docker-compose-scalable-build.yml b/misc/bundle/docker-compose-scalable-build.yml deleted file mode 100644 index d229199f9..000000000 --- a/misc/bundle/docker-compose-scalable-build.yml +++ /dev/null @@ -1,33 +0,0 @@ -version: "3.8" -services: - - riak: - ports: - - "8087:8087" - - "8098:8098" - - "9080:9080" - build: - dockerfile: riak/Dockerfile - context: . - - stanchion: - ports: - - "8085:8085" - build: - dockerfile: stanchion/Dockerfile - context: . - - riak_cs: - ports: - - "8080:8080" - - "8000:8000" - build: - dockerfile: riak_cs/Dockerfile - context: . - - riak_cs_control: - ports: - - "8090:8090" - build: - dockerfile: riak_cs_control/Dockerfile - context: . diff --git a/misc/bundle/docker-compose-scalable-run.yml b/misc/bundle/docker-compose-scalable-run.yml deleted file mode 100644 index 637c3f5d4..000000000 --- a/misc/bundle/docker-compose-scalable-run.yml +++ /dev/null @@ -1,58 +0,0 @@ -version: "3.9" -services: - - riak: - networks: - net0: - aliases: - - riak - ports: - - "8087:8087" - - "8098:8098" - - "9080:9080" - image: bundle_riak - deploy: - replicas: ${N_RIAK_NODES:-3} - - stanchion: - depends_on: - - riak - networks: - net0: - aliases: - - stanchion - ports: - - "8085:8085" - image: bundle_stanchion - deploy: - replicas: 1 - - riak_cs: - depends_on: - - riak - - stanchion - networks: - net0: - aliases: - - riak_cs - ports: - - "8080:8080" - - "8000:8000" - image: bundle_riak_cs - deploy: - replicas: ${N_RCS_NODES:-2} - - riak_cs_control: - depends_on: - - riak_cs - networks: - net0: - aliases: - - riak_cs_control - ports: - - "8090:8090" - image: bundle_riak_cs_control - -networks: - net0: - attachable: true diff --git a/misc/bundle/docker-compose-single.yml b/misc/bundle/docker-compose-single.yml deleted file mode 100644 index 04ed9bc38..000000000 --- a/misc/bundle/docker-compose-single.yml +++ /dev/null @@ -1,77 +0,0 @@ -version: "3.9" -services: - - riak: - networks: - net0: - aliases: - - riak - ipv4_address: 172.18.0.2 - ports: - - "8087:8087" - - "8098:8098" - build: - dockerfile: riak/Dockerfile - context: . - volumes: - - type: bind - source: ${RIAK_DATA:-./data/riak} - target: /var/lib/riak - - stanchion: - depends_on: - - riak - networks: - net0: - aliases: - - stanchion - ipv4_address: 172.18.0.3 - ports: - - "8085:8085" - build: - dockerfile: stanchion/Dockerfile - context: . - volumes: - - type: bind - source: ${STANCHION_DATA:-./data/stanchion} - target: /var/lib/stanchion - - riak_cs: - depends_on: - - riak - - stanchion - networks: - net0: - aliases: - - riak_cs - ipv4_address: 172.18.0.4 - ports: - - "8080:8080" - - "8000:8000" - build: - dockerfile: riak_cs/Dockerfile - context: . - volumes: - - type: bind - source: ${RIAK_CS_DATA:-./data/riak_cs} - target: /var/lib/riak_cs - - riak_cs_control: - depends_on: - - riak_cs - networks: - net0: - aliases: - - riak_cs_control - ipv4_address: 172.18.0.5 - ports: - - "8090:8090" - build: - dockerfile: riak_cs_control/Dockerfile - context: . - -networks: - net0: - ipam: - config: - - subnet: "172.18.0.0/24" diff --git a/misc/bundle/make_riak_cluster.py b/misc/bundle/make_riak_cluster.py deleted file mode 100755 index ab1ab1f6d..000000000 --- a/misc/bundle/make_riak_cluster.py +++ /dev/null @@ -1,199 +0,0 @@ -#!/usr/bin/env python - -import json, sys, time, subprocess, httplib2 - - -def discover_nodes(tussle_name, pattern, required_nodes): - network = "%s_net0" % (tussle_name) - args = ["docker", "network", "inspect", network] - while True: - p = subprocess.run(args, - capture_output = True, - encoding = "utf8") - if p.returncode != 0: - sys.exit("Failed to discover riak nodes in %s_net0: %s\n%s" % (tussle_name, p.stdout, p.stderr)) - res = [{"ip": e["IPv4Address"].split("/")[0], - "container": e["Name"]} - for e in json.loads(p.stdout)[0]["Containers"].values() - if tussle_name + "_" + pattern + "." in e["Name"]] - if len(res) != required_nodes: - time.sleep(1) - else: - print("Discovered these", pattern, "nodes:", [n["ip"] for n in res]) - return res - -def start_riak_nodes(nodes): - for n in nodes: - print("Starting Riak at node", n["ip"]) - p = docker_exec_proc(n, ["riak", "start"]) - if p.returncode != 0: - sys.exit("Failed to start riak node at %s: %s%s" % (n["ip"], p.stdout, p.stderr)) - for n in nodes: - nodename = "riak@" + n["ip"] - print("Waiting for service riak_kv on node", n["ip"]) - repeat = 10 - while repeat > 0: - p = docker_exec_proc(n, ["riak", "admin", "wait-for-service", "riak_kv"]) - if p.stdout == "riak_kv is up\n": - break - else: - time.sleep(1) - repeat = repeat-1 - repeat = 10 - while repeat > 0: - p = docker_exec_proc(n, ["riak", "admin", "ringready"]) - if p.returncode == 0: - break - else: - time.sleep(1) - repeat = repeat-1 - -def configure_riak_nodes(nodes): - for n in nodes: - nodename = "riak@" + n["ip"] - print("Setting riak nodename at node", n["ip"], "to", nodename) - p = docker_exec_proc(n, ["sed", "-i", "-E", - "-e", "s|nodename = riak@127.0.0.1|nodename = %s|" % nodename, - "-e", "s|listener.http.internal = .+|listener.http.internal = 0.0.0.0:8098|", - "-e", "s|listener.protobuf.internal = .+|listener.protobuf.internal = 0.0.0.0:8087|", - "/etc/riak/riak.conf"]) - if p.returncode != 0: - sys.exit("Failed to set nodename on riak node at %s: %s%s" % (n["ip"], p.stdout, p.stderr)) - - -def join_riak_nodes(nodes): - first = nodes[0] - rest = nodes[1:] - print("Joining nodes %s to %s" % ([n["ip"] for n in rest], first["ip"])) - for n in rest: - p = docker_exec_proc(n, ["riak", "admin", "cluster", "join", "riak@" + first["ip"]]) - if p.returncode != 0: - sys.exit("Failed to execute a join command on node %s (%s): %s%s" % - (n["container"], n["ip"], p.stdout, p.stderr)) - print(p.stdout) - print("Below are the cluster changes to be committed:") - for n in nodes: - p = docker_exec_proc(n, ["riak", "admin", "cluster", "plan"]) - if p.returncode != 0: - sys.exit("Failed to execute a join command on node %s (%s): %s%s" % (n["container"], n["ip"], p.stdout, p.stderr)) - print(p.stdout) - print("Committing changes now") - for n in rest: - p = docker_exec_proc(n, ["riak", "admin", "cluster", "commit"]) - if p.returncode != 0: - sys.exit("Failed to execute a join command on node %s (%s): %s%s" % (n["container"], n["ip"], p.stdout, p.stderr)) - print(p.stdout) - - -def configure_rcs_nodes(rcs_nodes, riak_nodes, stanchion_node, auth_v4): - n = 0 - m = 0 - print("Configuring Riak CS nodes") - for rn in rcs_nodes: - nodename = "riak_cs@" + rn["ip"] - p = docker_exec_proc(rn, ["sed", "-i", "-E", - "-e", "s|nodename = .+|nodename = %s|" % nodename, - "-e", "s|listener = .+|listener = 0.0.0.0:8080|", - "-e", "s|auth_v4 = .+|auth_v4 = %s|" % auth_v4, - "-e", "s|riak_host = .+|riak_host = %s:8087|" % riak_nodes[m]["ip"], - "-e", "s|stanchion_host = .+|stanchion_host = %s:8085|" % stanchion_node["ip"], - "/opt/riak-cs/etc/riak-cs.conf"]) - if p.returncode != 0: - sys.exit("Failed to modify riak-cs.conf node at %s: %s%s" % (rn["ip"], p.stdout, p.stderr)) - n = n + 1 - m = m + 1 - if m > len(riak_nodes): - m = 0 - -def configure_stanchion_node(stanchion_node, riak_nodes): - nodename = "stanchion@" + stanchion_node["ip"] - print("Configuring Stanchion node") - p = docker_exec_proc(stanchion_node, ["sed", "-i", "-E", - "-e", "s|listener = 127.0.0.1:8085|listener = 0.0.0.0:8085|", - "-e", "s|nodename = riak@127.0.0.1|nodename = %s|" % nodename, - "-e", "s|riak_host = .+|riak_host = %s:8087|" % riak_nodes[0]["ip"], - "/opt/stanchion/etc/stanchion.conf"]) - if p.returncode != 0: - sys.exit("Failed to modify stanchion.conf node at %s: %s%s" % (stanchion_node["ip"], p.stdout, p.stderr)) - - - -def start_stanchion_node(node): - print("Starting Stanchion at node", node["ip"]) - p = docker_exec_proc(node, ["/opt/stanchion/bin/stanchion", "start"]) - if p.returncode != 0: - sys.exit("Failed to start Stanchion at %s: %s%s" % (node["ip"], p.stdout, p.stderr)) - -def start_rcs_nodes(nodes): - for n in nodes: - print("Starting Riak CS at node", n["ip"]) - p = docker_exec_proc(n, ["/opt/riak-cs/bin/riak-cs", "start"]) - if p.returncode != 0: - sys.exit("Failed to start Riak CS at %s: %s%s" % (n["ip"], p.stdout, p.stderr)) - - -def find_external_ips(container): - p = subprocess.run(args = ["docker", "container", "inspect", container], - capture_output = True, - encoding = 'utf8') - cid = json.loads(p.stdout)[0]["Id"] - p = subprocess.run(args = ["docker", "network", "inspect", "docker_gwbridge"], - capture_output = True, - encoding = 'utf8') - ip = json.loads(p.stdout)[0]["Containers"][cid]["IPv4Address"].split("/")[0] - return ip - - -def docker_exec_proc(n, cmd): - return subprocess.run(args = ["docker", "exec", "-it", n["container"]] + cmd, - capture_output = True, - encoding = "utf8") - -def create_user(host, name, email): - url = 'http://%s:%d/riak-cs/user' % (host, 8080) - conn = httplib2.Http() - retries = 10 - while retries > 0: - try: - resp, content = conn.request(url, "POST", - headers = {"Content-Type": "application/json"}, - body = json.dumps({"email": email, "name": name})) - conn.close() - return json.loads(content) - except ConnectionRefusedError: - time.sleep(2) - -def main(): - tussle_name = sys.argv[1] - required_riak_nodes = int(sys.argv[2]) - required_rcs_nodes = int(sys.argv[3]) - auth_v4 = sys.argv[4] - - riak_nodes = discover_nodes(tussle_name, "riak", required_riak_nodes) - configure_riak_nodes(riak_nodes) - start_riak_nodes(riak_nodes) - if len(riak_nodes) > 1: - join_riak_nodes(riak_nodes) - - rcs_nodes = discover_nodes(tussle_name, "riak_cs", required_rcs_nodes) - stanchion_nodes = discover_nodes(tussle_name, "stanchion", 1) - configure_stanchion_node(stanchion_nodes[0], riak_nodes) - configure_rcs_nodes(rcs_nodes, riak_nodes, stanchion_nodes[0], auth_v4) - start_stanchion_node(stanchion_nodes[0]) - start_rcs_nodes(rcs_nodes) - - rcs_ext_ips = [find_external_ips(c["container"]) for c in rcs_nodes] - print("Riak CS external addresses are:") - for ip in rcs_ext_ips: - print(" %s" % ip) - - admin_email = "admin@fafa.org" - admin_name = "admin" - u = create_user(rcs_ext_ips[0], admin_name, admin_email) - print("Admin user (%s <%s>) creds:\n key_id: %s\n key_secret: %s\n id: %s\n" - % (admin_name, admin_email, - u["key_id"], u["key_secret"], u["id"])) - - -if __name__ == "__main__": - main() diff --git a/misc/bundle/riak/Dockerfile b/misc/bundle/riak/Dockerfile deleted file mode 100644 index 644ca221c..000000000 --- a/misc/bundle/riak/Dockerfile +++ /dev/null @@ -1,49 +0,0 @@ -FROM debian:buster - -ARG RIAK_VSN=3.0.7 - -ENV PKG=riak_${RIAK_VSN}-OTP22.3_amd64.deb - -RUN apt-get update && apt-get install -y wget logrotate sudo -RUN wget -q https://files.tiot.jp/riak/kv/3.0/${RIAK_VSN}/debian/10/${PKG} -RUN dpkg -i ${PKG} && rm ${PKG} - -RUN sed -i \ - -e "s|storage_backend = bitcask|storage_backend = multi|" \ - /etc/riak/riak.conf -RUN echo "buckets.default.allow_mult = true" >>/etc/riak/riak.conf -RUN echo "buckets.default.merge_strategy = 2" >>/etc/riak/riak.conf - -RUN sed -i \ - -e "s|]\\.|, \ - {riak_kv, [ \ - {multi_backend, \ - [{be_default,riak_kv_eleveldb_backend, \ - [{max_open_files,20}]}, \ - {be_blocks,riak_kv_bitcask_backend, \ - []}]}, \ - {multi_backend_default,be_default}, \ - {multi_backend_prefix_list,[{<<\"0b:\">>,be_blocks}]}, \ - {storage_backend,riak_kv_multi_backend} \ - ]} \ - ].|" \ - /etc/riak/advanced.config - -EXPOSE 8087 8098 9080 - -RUN chown -R riak:riak /var/lib/riak -RUN echo "riak soft nofile 65536" >>/etc/security/limits.conf -RUN echo "riak hard nofile 65536" >>/etc/security/limits.conf - -#USER riak - -# We can't start riak it in CMD because at this moment as we don't yet -# know other riak nodes' addresses -- those are to be allocated by -# docker stack and need to be discovered after that. All we can do is -# prepare the container, for a script run after docker stack deploy to -# do orchestration aid in the form of sed'ding the right values into -# riak.conf. It is unfortunate we have to plug a sleep loop for the -# process being monitored by docker, but that's one practical solution -# I have in mind now. - -CMD while :; do sleep 1m; done diff --git a/misc/bundle/riak/Dockerfile.centos b/misc/bundle/riak/Dockerfile.centos deleted file mode 100644 index 13936379b..000000000 --- a/misc/bundle/riak/Dockerfile.centos +++ /dev/null @@ -1,41 +0,0 @@ -FROM centos:7 - -ARG RIAK_VSN=3.0.6 \ - listener_ip=172.18.0.3 \ - listener_pb_port=8087 \ - listener_http_port=8098 - -ENV PKG=riak-${RIAK_VSN}.OTP22.3-1.el7x86_64.rpm - -RUN yum update -y && yum install -y logrotate sudo -RUN yum install -y https://files.tiot.jp/riak/kv/3.0/${RIAK_VSN}/rhel/7/${PKG} - -RUN sed -i \ - -e "s|listener.protobuf.internal = 127.0.0.1:8087|listener.protobuf.internal = 0.0.0.0:${listener_pb_port}|" \ - -e "s|listener.http.internal = 127.0.0.1:8098|listener.http.internal = 0.0.0.0:${listener_http_port}|" \ - -e "s|storage_backend = bitcask|storage_backend = multi|" \ - /etc/riak/riak.conf -RUN echo "buckets.default.allow_mult = true" >>/etc/riak/riak.conf -RUN echo "buckets.default.merge_strategy = 2" >>/etc/riak/riak.conf - -RUN sed -i \ - -e "s|]\\.|, \ - {riak_kv, [ \ - {multi_backend, \ - [{be_default,riak_kv_eleveldb_backend, \ - [{max_open_files,20}]}, \ - {be_blocks,riak_kv_bitcask_backend, \ - []}]}, \ - {multi_backend_default,be_default}, \ - {multi_backend_prefix_list,[{<<\"0b:\">>,be_blocks}]}, \ - {storage_backend,riak_kv_multi_backend} \ - ]} \ - ].|" \ - /etc/riak/advanced.config - -EXPOSE ${listener_pb_port} ${listener_http_port} - -RUN echo "riak soft nofile 65536" >>/etc/security/limits.conf -RUN echo "riak hard nofile 65536" >>/etc/security/limits.conf - -CMD /usr/lib64/riak/bin/riak foreground diff --git a/misc/bundle/riak_cs/Dockerfile b/misc/bundle/riak_cs/Dockerfile deleted file mode 100644 index 11c3c4deb..000000000 --- a/misc/bundle/riak_cs/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -ARG RIAK_CS_VSN=3.0.0 - -FROM erlang:22.3.4.10 AS compile-image -ARG RIAK_CS_VSN - -WORKDIR /usr/src -ADD https://github.com/TI-Tokyo/riak_cs/archive/refs/tags/${RIAK_CS_VSN}.tar.gz source.tar.gz -RUN tar xzf source.tar.gz -RUN mv riak_cs-${RIAK_CS_VSN} rcs -WORKDIR rcs - -EXPOSE 8080 8000 - -RUN ./rebar3 as rel release - -FROM debian:buster AS runtime-image - -RUN apt-get update && apt-get -y install libssl1.1 #curl - -COPY --from=compile-image /usr/src/rcs/_build/rel/rel/riak-cs /opt/riak-cs - -RUN echo "anonymous_user_creation = on" >>/opt/riak-cs/etc/riak-cs.conf - -## whatever works -#RUN echo "$riak_host:$riak_http_port/ping" >/tmp/curlop -#CMD while ! curl -s $(cat /tmp/curlop) >/dev/null; do sleep 1; done && /opt/riak-cs/bin/riak-cs foreground - -# We can't start riak-cs it in CMD because at this moment as we don't -# yet know riak's addresses -- those are to be allocated by docker -# stack and need to be discovered after that. All we can do is -# prepare the container, for a script run after docker stack deploy to -# do orchestration aid in the form of sed'ding the right values into -# riak-cs.conf. It is unfortunate we have to plug a sleep loop for -# the process being monitored by docker, but that's one practical -# solution I have in mind now. - -CMD while :; do sleep 1m; done diff --git a/misc/bundle/riak_cs_control/Dockerfile b/misc/bundle/riak_cs_control/Dockerfile deleted file mode 100644 index 3a5906e6b..000000000 --- a/misc/bundle/riak_cs_control/Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -ARG RIAK_CS_CONTROL_VSN=3.0.0 \ - CS_HOST=riak_cs \ - CS_PORT=8080 \ - CS_PROTO="http" \ - CS_CONTROL_PORT=8090 \ - CS_ADMIN_KEY="admin-key" \ - CS_ADMIN_SECRET="admin-secret" - -FROM erlang:22.3.4.10 AS compile-image -ARG RIAK_CS_CONTROL_VSN - -EXPOSE $cs_control_port - -WORKDIR /usr/src -ADD https://github.com/TI-Tokyo/riak_cs_control/archive/refs/tags/${RIAK_CS_CONTROL_VSN}.tar.gz source.tar.gz -RUN tar xzf source.tar.gz -RUN mv riak_cs_control-${RIAK_CS_CONTROL_VSN} rcc -WORKDIR rcc - -RUN ./rebar3 as rel release - -FROM debian:buster AS runtime-image -ARG CS_HOST \ - CS_PORT \ - CS_PROTO \ - CS_CONTROL_PORT \ - CS_ADMIN_KEY \ - CS_ADMIN_SECRET - -ENV CS_HOST=${CS_HOST:-127.0.0.1} \ - CS_PORT=${CS_PORT:-8080} \ - CS_PROTO=${CS_PROTO:-http} \ - CS_CONTROL_PORT=${CS_CONTROL_PORT:-8090} \ - CS_ADMIN_KEY=${CS_ADMIN_KEY:-"admin-key"} \ - CS_ADMIN_SECRET=${CS_ADMIN_SECRET:-"admin-secret"} - -RUN apt-get update && apt-get -y install libssl1.1 curl - -COPY --from=compile-image /usr/src/rcc/_build/rel/rel/riak_cs_control /opt/riak_cs_control - -CMD /opt/riak_cs_control/bin/riak_cs_control foreground diff --git a/misc/bundle/stanchion/Dockerfile b/misc/bundle/stanchion/Dockerfile deleted file mode 100644 index 4d1af3a54..000000000 --- a/misc/bundle/stanchion/Dockerfile +++ /dev/null @@ -1,36 +0,0 @@ -ARG STANCHION_VSN=3.0.0 - -FROM erlang:22.3.4.10 AS compile-image -ARG STANCHION_VSN - -EXPOSE 8085 - -WORKDIR /usr/src -ADD https://github.com/TI-Tokyo/stanchion/archive/refs/tags/${STANCHION_VSN}.tar.gz source.tar.gz -RUN tar xzf source.tar.gz -RUN mv stanchion-${STANCHION_VSN} s -WORKDIR s - -RUN ./rebar3 as rel release - - -FROM debian:buster AS runtime-image - -RUN apt-get update && apt-get -y install libssl1.1 #curl - -COPY --from=compile-image /usr/src/s/_build/rel/rel/stanchion /opt/stanchion - -## whatever works -#RUN echo "$riak_host:$riak_http_port/ping" >/tmp/curlop -#CMD while ! curl -s $(cat /tmp/curlop) >/dev/null; do sleep 1; done && /opt/stanchion/bin/stanchion foreground - -# We can't start riak-cs it in CMD because at this moment as we don't -# yet know riak's addresses -- those are to be allocated by docker -# stack and need to be discovered after that. All we can do is -# prepare the container, for a script run after docker stack deploy to -# do orchestration aid in the form of sed'ding the right values into -# riak-cs.conf. It is unfortunate we have to plug a sleep loop for -# the process being monitored by docker, but that's one practical -# solution I have in mind now. - -CMD while :; do sleep 1m; done From d47515f61431216acb6838bb1cb66181c83a7ef7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Apr 2021 19:57:36 +0300 Subject: [PATCH 212/831] fix signaure calculation for auth v2 --- src/riak_cs_s3_auth.erl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/riak_cs_s3_auth.erl b/src/riak_cs_s3_auth.erl index 073c8d7f4..0f1e3cb84 100644 --- a/src/riak_cs_s3_auth.erl +++ b/src/riak_cs_s3_auth.erl @@ -161,16 +161,16 @@ calculate_signature_v2(KeyData, RD) -> OriginalResource = riak_cs_s3_rewrite:original_resource(RD), Resource = case OriginalResource of undefined -> []; %% TODO: get noisy here? - {Path,QS} -> [Path, canonicalize_qs(v2, QS)] + {Path, QS} -> [Path, canonicalize_qs(v2, QS)] end, Date = case wrq:get_qs_value("Expires", RD) of undefined -> - case proplists:is_defined("x-amz-date", Headers) of - true -> "\n"; - false -> [wrq:get_req_header("date", RD), "\n"] + case wrq:get_req_header("x-amz-date", RD) of + undefined -> wrq:get_req_header("date", RD); + XAmzDate -> XAmzDate end; Expires -> - Expires ++ "\n" + Expires end, CMD5 = case wrq:get_req_header("content-md5", RD) of undefined -> []; @@ -186,6 +186,7 @@ calculate_signature_v2(KeyData, RD) -> ContentType, "\n", Date, + "\n", AmazonHeaders, Resource], _ = lager:debug("STS: ~p", [STS]), From 48780f63d49acd3f7e5daec4fd973b722676f961 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 14 Oct 2021 15:56:34 +0300 Subject: [PATCH 213/831] never type your identifiers, always copy --- apps/riak_cs/src/riak_cs_yessir_riak_client.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl index e3cf1ce8f..480f1e2a2 100644 --- a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl +++ b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl @@ -147,7 +147,7 @@ process_get_req(#rpbgetreq{bucket = RiakBucket, key = VKey} = _RpbGetReq, #state{bucket_name = BucketName, acl = Acl} = State) -> case which_bucket(RiakBucket) of objects -> - {Key, Vsn} = rcs_common_maifest:decompose_versioned_key(VKey), + {Key, Vsn} = rcs_common_manifest:decompose_versioned_key(VKey), {M, RObj} = new_manifest_ro(BucketName, RiakBucket, Key, Vsn, Acl), {{ok, RObj}, State#state{manifest = M}}; blocks -> @@ -166,7 +166,7 @@ process_put_req(#rpbputreq{bucket = RiakBucket, key = VKey, return_body = 1} = _ #state{bucket_name = BucketName, acl = Acl} = State) -> case which_bucket(RiakBucket) of objects -> - {Key, Vsn} = rcs_common_maifest:decompose_versioned_key(VKey), + {Key, Vsn} = rcs_common_manifest:decompose_versioned_key(VKey), {M, RObj} = new_manifest_ro(BucketName, RiakBucket, Key, Vsn, Acl), {{ok, RObj}, State#state{manifest = M}}; Other -> From e15c929454b530e0d5e9c768ff5ad1aaae6e6305 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 20 Oct 2021 15:06:11 +0300 Subject: [PATCH 214/831] deb and rpm packaging --- .gitignore | 8 +- Makefile | 83 ++++++---- rebar.config | 9 +- rel/files/riak-cs_not_running | 8 + rel/pkg/Makefile | 2 +- rel/pkg/deb/Makefile | 4 +- rel/pkg/deb/debian/compat | 2 +- rel/pkg/deb/debian/control | 18 +-- rel/pkg/deb/debian/copyright | 9 +- rel/pkg/deb/debian/dirs | 3 +- rel/pkg/deb/debian/install | 14 +- rel/pkg/deb/debian/postinst | 18 +-- rel/pkg/deb/debian/postrm | 30 ++-- .../{riak.manpages => riak-cs.manpages} | 0 .../{riak.riak.init => riak-cs.riak-cs.init} | 18 +-- rel/pkg/deb/debian/riak-cs.riak-cs.service | 14 ++ rel/pkg/deb/debian/riak.riak.service | 14 -- rel/pkg/deb/debian/rules | 9 +- rel/pkg/deb/debian/vars.config | 81 +++++----- rel/pkg/pkg.vars.config | 23 --- rel/pkg/rpm/Makefile | 2 +- rel/pkg/rpm/init.script | 149 ------------------ rel/pkg/rpm/riak-cs | 4 +- rel/pkg/rpm/riak-cs.service | 14 ++ rel/pkg/rpm/specfile | 52 +++--- rel/pkg/rpm/vars.config | 62 ++++---- 26 files changed, 265 insertions(+), 385 deletions(-) create mode 100644 rel/files/riak-cs_not_running rename rel/pkg/deb/debian/{riak.manpages => riak-cs.manpages} (100%) rename rel/pkg/deb/debian/{riak.riak.init => riak-cs.riak-cs.init} (92%) create mode 100644 rel/pkg/deb/debian/riak-cs.riak-cs.service delete mode 100644 rel/pkg/deb/debian/riak.riak.service delete mode 100644 rel/pkg/pkg.vars.config delete mode 100755 rel/pkg/rpm/init.script create mode 100644 rel/pkg/rpm/riak-cs.service diff --git a/.gitignore b/.gitignore index 8ac9c51d4..96af2e25e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,12 +3,8 @@ _build/ rel/riak-cs rel/vars/*_vars.config dev/ -log/ -misc/bundle/data +package/ +distdir/ *-riak-cs-debug.tar.gz current_counterexample.eqc -.client_test/ .local_dialyzer_plt -dialyzer.ignore-warnings -dialyzer_warnings -dialyzer_unhandled_warnings diff --git a/Makefile b/Makefile index ce18a76a5..fd1e3c988 100644 --- a/Makefile +++ b/Makefile @@ -2,17 +2,17 @@ REPO ?= riak_cs HEAD_REVISION ?= $(shell git describe --tags --exact-match HEAD 2>/dev/null) PKG_REVISION ?= $(shell git describe --tags 2>/dev/null) PKG_VERSION ?= $(shell git describe --tags | tr - .) -PKG_ID = riak-cs-$(PKG_VERSION) +PKG_ID = riak_cs-$(PKG_VERSION) PKG_BUILD = 1 BASE_DIR = $(shell pwd) ERLANG_BIN = $(shell dirname $(shell which erl 2>/dev/null) 2>/dev/null) -OTP_VER = $(shell echo $(ERLANG_BIN) | rev | cut -d "/" -f 2 | rev) +OTP_VER = $(shell erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell) REBAR ?= $(BASE_DIR)/rebar3 REL_DIR ?= _build/default/rel CS_HTTP_PORT ?= 8080 PULSE_TESTS = riak_cs_get_fsm_pulse -.PHONY: rel stagedevrel deps test depgraph graphviz all compile +.PHONY: rel stagedevrel deps test depgraph graphviz all compile package pkg-clean all: compile @@ -111,33 +111,62 @@ pulse: all @rm -rf $(BASE_DIR)/.eunit @ERLOPTS="-D PULSE" $(REBAR) eunit --module=$(PULSE_TESTS) + + +## +## Version and naming variables for distribution and packaging +## + +# Tag from git with style -- +# Ex: When on a tag: riak-1.0.3 (no commits since tag) +# For most normal Commits: riak-1.1.0pre1-27-g1170096 +# Last tag: riak-1.1.0pre1 +# Commits since tag: 27 +# Hash of commit: g1170096 +REPO_TAG := $(shell git describe --tags) + +# Split off repo name +# Changes to 1.0.3 or 1.1.0pre1-27-g1170096 from example above +REVISION = $(shell echo $(REPO_TAG) | sed -e 's/^$(REPO)-//') + +# Primary version identifier, strip off commmit information +# Changes to 1.0.3 or 1.1.0pre1 from example above +MAJOR_VERSION ?= $(shell echo $(REVISION) | sed -e 's/\([0-9.]*\)-.*/\1/') + +# Name resulting directory & tar file based on current status of the git tag +# If it is a tagged release (PKG_VERSION == MAJOR_VERSION), use the toplevel +# tag as the package name, otherwise generate a unique hash of all the +# dependencies revisions to make the package name unique. +# This enables the toplevel repository package to change names +# when underlying dependencies change. +NAME_HASH = $(shell git hash-object distdir/$(CLONEDIR)/$(MANIFEST_FILE) 2>/dev/null | cut -c 1-8) +PKG_ID := "$(REPO_TAG)-OTP$(OTP_VER)" + ## ## Packaging targets ## + +# Yes another variable, this one is repo-- +PKG_VERSION = $(shell echo $(PKG_ID) | sed -e 's/^$(REPO)-//') + +package: + mkdir rel/pkg/out/riak_cs-$(PKG_ID) + git archive --format=tar HEAD | gzip >rel/pkg/out/$(PKG_ID).tar.gz + $(MAKE) -f rel/pkg/Makefile + +packageclean: + rm -rf rel/pkg/out/* + + .PHONY: package export PKG_VERSION PKG_ID PKG_BUILD BASE_DIR ERLANG_BIN REBAR OVERLAY_VARS RELEASE -package.src: deps - mkdir -p package - rm -rf package/$(PKG_ID) - git archive --format=tar --prefix=$(PKG_ID)/ $(PKG_REVISION)| (cd package && tar -xf -) - cp pkg.vars.config package/$(PKG_ID) - ${MAKE} -C package/$(PKG_ID) deps - mkdir -p package/$(PKG_ID)/priv - git --git-dir=.git describe --tags >package/$(PKG_ID)/priv/vsn.git - for dep in package/$(PKG_ID)/deps/*; do \ - echo "Processing dep: $${dep}"; \ - mkdir -p $${dep}/priv; \ - git --git-dir=$${dep}/.git describe --tags >$${dep}/priv/vsn.git; \ - done - find package/$(PKG_ID) -depth -name ".git" -exec rm -rf {} \; - tar -C package -czf package/$(PKG_ID).tar.gz $(PKG_ID) - -dist: package.src - cp package/$(PKG_ID).tar.gz . - -package: package.src - ${MAKE} -C package -f $(PKG_ID)/deps/node_package/Makefile - -pkgclean: distclean - rm -rf package +# Package up a devrel to save time later rebuilding it +pkg-devrel: devrel + echo -n $(PKG_REVISION) > VERSION + tar -czf $(PKG_ID)-devrel.tar.gz dev/ VERSION + rm -rf VERSION + +pkg-rel: rel + tar -czf $(PKG_ID)-rel.tar.gz -C rel/ . diff --git a/rebar.config b/rebar.config index 782f0ddb4..bce4a9a2c 100644 --- a/rebar.config +++ b/rebar.config @@ -93,13 +93,18 @@ {overlay, [ {template, "rel/pkg/rpm/init.script", "etc/init.d/init.script"} ] } + , {mode, prod} ] } ] } , {deb, [ {relx, [ {overlay_vars, "debian/vars.config"} - , {overlay, [ {template, "rel/files/riak_cs", "usr/bin/riak_cs"} - ] + , {mode, prod} + , {extended_start_script_hooks, + [ {pre_start, [{custom, "hooks/riak-cs_not_running"}]}, + {post_start, [ wait_for_vm_start, {pid, "/run/riak-cs/riak-cs.pid"} + , {wait_for_process, riak_cs_web}]} + ] } ] } diff --git a/rel/files/riak-cs_not_running b/rel/files/riak-cs_not_running new file mode 100644 index 000000000..b63ca8278 --- /dev/null +++ b/rel/files/riak-cs_not_running @@ -0,0 +1,8 @@ +#!/bin/sh +# -*- tab-width:4;indent-tabs-mode:nil -*- +# ex: ts=4 sw=4 et + +if relx_nodetool "ping" > /dev/null; then + echo "Node is already running!" + exit 1 +fi diff --git a/rel/pkg/Makefile b/rel/pkg/Makefile index 95658db8d..5bef39d3b 100644 --- a/rel/pkg/Makefile +++ b/rel/pkg/Makefile @@ -83,7 +83,7 @@ PKG_BUILD ?= 1 ## Call platform dependent makefile ostype: varcheck $(if $(PKGERDIR),,$(error "Operating system '$(OS)' not supported by node_package")) - $(MAKE) -C $(BASE_DIR)/rel/pkg/out/riak-$(PKG_ID) -f $(BASE_DIR)/rel/pkg/$(PKGERDIR)/Makefile + $(MAKE) -C $(BASE_DIR)/rel/pkg/out/riak_cs-$(PKG_ID) -f $(BASE_DIR)/rel/pkg/$(PKGERDIR)/Makefile ## Check required settings before continuing varcheck: diff --git a/rel/pkg/deb/Makefile b/rel/pkg/deb/Makefile index 780de4a9a..e300df4ad 100644 --- a/rel/pkg/deb/Makefile +++ b/rel/pkg/deb/Makefile @@ -11,14 +11,14 @@ default: cd $(BASE_DIR)/rel/pkg/out/$(PKG_ID)/; \ echo $(shell pwd); \ - dch --create --package riak -v "$(PKG_VERSION)" \ + dch --create --package riak-cs -v "$(PKG_VERSION)" \ "Build from $(PKG_ID)";\ debuild --prepend-path=$(ERLANG_BIN) \ -e REVISION=$(PKG_VERSION) \ -e RELEASE=$(PKG_BUILD) \ -e REBAR=$(REBAR) \ -i -uc -us -b - + mkdir -p $(BASE_DIR)/rel/pkg/packages cd $(BASE_DIR)/rel/pkg/out && mv *.deb ../packages cd $(BASE_DIR)/rel/pkg/packages && \ diff --git a/rel/pkg/deb/debian/compat b/rel/pkg/deb/debian/compat index 7f8f011eb..ec635144f 100644 --- a/rel/pkg/deb/debian/compat +++ b/rel/pkg/deb/debian/compat @@ -1 +1 @@ -7 +9 diff --git a/rel/pkg/deb/debian/control b/rel/pkg/deb/debian/control index 49244e1be..8413b32b2 100644 --- a/rel/pkg/deb/debian/control +++ b/rel/pkg/deb/debian/control @@ -1,13 +1,13 @@ -Source: riak +Source: riak-cs Section: net -Priority: extra -Maintainer: packaging +Priority: optional +Maintainer: Andrei Zavada Build-Depends: debhelper (>= 7) -Standards-Version: 3.9.3 -Homepage: riak.com +Standards-Version: 4.6.0.1 +Homepage: https://tiot.jp -Package: riak +Package: riak-cs Architecture: any -Depends: ${misc:Depends}, ${shlibs:Depends}, adduser, logrotate, sudo -Homepage: riak.com -Description: Riak KV Database +Depends: ${misc:Depends}, ${shlibs:Depends}, adduser, logrotate, erlang-base +Homepage: https://tiot.jp +Description: Riak CS Database diff --git a/rel/pkg/deb/debian/copyright b/rel/pkg/deb/debian/copyright index 28d10fb6d..747043a40 100644 --- a/rel/pkg/deb/debian/copyright +++ b/rel/pkg/deb/debian/copyright @@ -1,4 +1,7 @@ -Format: http://dep.debian.net/deps/dep5 -Upstream-Name: riak -Upstream-Contact: packaging@riak.com +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: riak-cs +Upstream-Contact: Andrei Zavada +Files: * +Copyright: 2012-16 Basho Technologies, Inc; 2021 TI Tokyo +License: Apache-2.0 diff --git a/rel/pkg/deb/debian/dirs b/rel/pkg/deb/debian/dirs index 588cf1aa7..e801954c3 100644 --- a/rel/pkg/deb/debian/dirs +++ b/rel/pkg/deb/debian/dirs @@ -1,2 +1,3 @@ etc/logrotate.d -var/log/riak +var/lib/riak-cs +var/log/riak-cs diff --git a/rel/pkg/deb/debian/install b/rel/pkg/deb/debian/install index 18904d00f..f50b0aaa1 100644 --- a/rel/pkg/deb/debian/install +++ b/rel/pkg/deb/debian/install @@ -1,8 +1,6 @@ -rel/riak/lib usr/lib/riak -rel/riak/share usr/lib/riak -rel/riak/erts* usr/lib/riak -rel/riak/releases usr/lib/riak -rel/riak/bin usr/lib/riak -rel/riak/etc/* etc/riak -rel/riak/data/* var/lib/riak -rel/riak/usr/bin/* usr/sbin +rel/riak-cs/lib usr/lib/riak-cs +rel/riak-cs/share usr/lib/riak-cs +rel/riak-cs/erts* usr/lib/riak-cs +rel/riak-cs/releases usr/lib/riak-cs +rel/riak-cs/bin usr/lib/riak-cs +rel/riak-cs/etc/* etc/riak-cs diff --git a/rel/pkg/deb/debian/postinst b/rel/pkg/deb/debian/postinst index 35d487a9f..79ce6de00 100755 --- a/rel/pkg/deb/debian/postinst +++ b/rel/pkg/deb/debian/postinst @@ -1,27 +1,25 @@ #!/bin/sh -# postinst script for Riak +# postinst script for riak-cs # # see: dh_installdeb(1) set -e # create group -if ! getent group riak >/dev/null; then - addgroup --system riak +if ! getent group riak_cs >/dev/null; then + addgroup --system riak_cs fi # create user -if ! getent passwd riak >/dev/null; then - adduser --ingroup riak \ - --home /var/lib/riak \ +if ! getent passwd riak_cs >/dev/null; then + adduser --ingroup riak_cs \ + --home /var/lib/riak-cs \ --disabled-password \ --system --shell /bin/bash --no-create-home \ - --gecos "Riak KV Database" riak + --gecos "Riak CS Database" riak_cs fi -for i in lib log; do - chown -R riak:riak /var/$i/riak -done +chown riak_cs:riak_cs /var/log/riak-cs case "$1" in configure) diff --git a/rel/pkg/deb/debian/postrm b/rel/pkg/deb/debian/postrm index 2fc8de5b5..3577bbc1f 100755 --- a/rel/pkg/deb/debian/postrm +++ b/rel/pkg/deb/debian/postrm @@ -1,5 +1,5 @@ #!/bin/sh -# postrm script for Riak +# postrm script for riak_cs # # see: dh_installdeb(1) @@ -21,26 +21,26 @@ set -e case "$1" in purge) - rm -f /etc/default/riak - if [ -d /var/log/riak ]; then - rm -r /var/log/riak + rm -f /etc/default/riak-cs + if [ -d /var/log/riak-cs ]; then + rm -r /var/log/riak-cs fi - if [ -d /var/run/riak ]; then - rm -r /var/run/riak + if [ -d /var/run/riak-cs ]; then + rm -r /var/run/riak-cs fi - if [ -d /etc/riak ]; then - rm -r /etc/riak + if [ -d /etc/riak-cs ]; then + rm -r /etc/riak-cs fi - if [ -e /etc/init.d/riak ]; then - rm /etc/init.d/riak + if [ -e /etc/init.d/riak-cs ]; then + rm /etc/init.d/riak-cs fi # Remove User & Group, killing any process owned by them - if getent passwd riak >/dev/null; then - pkill -u riak || true - deluser --quiet --system riak + if getent passwd riak_cs >/dev/null; then + pkill -u riak_cs || true + deluser --quiet --system riak_cs fi - if getent group riak >/dev/null; then - delgroup --quiet --system --only-if-empty riak || true + if getent group riak_cs >/dev/null; then + delgroup --quiet --system --only-if-empty riak_cs || true fi ;; diff --git a/rel/pkg/deb/debian/riak.manpages b/rel/pkg/deb/debian/riak-cs.manpages similarity index 100% rename from rel/pkg/deb/debian/riak.manpages rename to rel/pkg/deb/debian/riak-cs.manpages diff --git a/rel/pkg/deb/debian/riak.riak.init b/rel/pkg/deb/debian/riak-cs.riak-cs.init similarity index 92% rename from rel/pkg/deb/debian/riak.riak.init rename to rel/pkg/deb/debian/riak-cs.riak-cs.init index 3405ea0e6..7d807dcad 100755 --- a/rel/pkg/deb/debian/riak.riak.init +++ b/rel/pkg/deb/debian/riak-cs.riak-cs.init @@ -1,16 +1,16 @@ #! /bin/bash ### BEGIN INIT INFO -# Provides: riak +# Provides: riak-cs # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 -# Short-Description: Riak KV Database -# Description: Riak KV Database +# Short-Description: Riak CS Database +# Description: Riak CS Database ### END INIT INFO -NAME=riak -DAEMON=/usr/sbin/$NAME +NAME=riak-cs +DAEMON=/usr/lib/riak-cs/bin/$NAME SCRIPTNAME=/etc/init.d/$NAME RUNDIR=/var/run/$NAME @@ -25,7 +25,7 @@ RUNDIR=/var/run/$NAME # if no HOME was set in /etc/default/$NAME then set one here # to the data directory for erlexec's sake if [ -z "$HOME" ]; then - export HOME="/var/lib/riak" + export HOME="/var/lib/riak-cs" fi # @@ -35,7 +35,7 @@ do_start() { if [ ! -d $RUNDIR ]; then mkdir $RUNDIR - chown riak:riak $RUNDIR + chown riak_cs:riak_cs $RUNDIR fi # Return # 0 if daemon has been started @@ -44,8 +44,8 @@ do_start() # Startup with the appropriate user start-stop-daemon --start \ - --name riak \ - --user riak \ + --name riak-cs \ + --user riak_cs \ --exec $DAEMON -- start \ || return 2 } diff --git a/rel/pkg/deb/debian/riak-cs.riak-cs.service b/rel/pkg/deb/debian/riak-cs.riak-cs.service new file mode 100644 index 000000000..780686c62 --- /dev/null +++ b/rel/pkg/deb/debian/riak-cs.riak-cs.service @@ -0,0 +1,14 @@ +[Unit] +Description=Riak CS Database + +[Service] +User=riak_cs +ExecStart=/usr/lib/riak-cs/bin/riak-cs start +ExecStop=/usr/lib/riak-cs/bin/riak-cs stop +Type=forking +PIDFile=/run/riak-cs/riak-cs.pid +EnvironmentFile=-/etc/default/riak-cs +RuntimeDirectory=riak-cs + +[Install] +WantedBy=multi-user.target diff --git a/rel/pkg/deb/debian/riak.riak.service b/rel/pkg/deb/debian/riak.riak.service deleted file mode 100644 index 4fa022264..000000000 --- a/rel/pkg/deb/debian/riak.riak.service +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Riak KV Database - -[Service] -User=riak -ExecStart=/usr/sbin/riak start -ExecStop=/usr/sbin/riak stop -Type=forking -PIDFile=/run/riak/riak.pid -EnvironmentFile=-/etc/default/riak -RuntimeDirectory=riak - -[Install] -WantedBy=multi-user.target diff --git a/rel/pkg/deb/debian/rules b/rel/pkg/deb/debian/rules index 082a39c12..cb6b0c2c8 100755 --- a/rel/pkg/deb/debian/rules +++ b/rel/pkg/deb/debian/rules @@ -11,7 +11,7 @@ # Uncomment this to turn on verbose mode. export DH_VERBOSE=1 -ROOTDIR := debian/riak +ROOTDIR := debian/riak-cs ## Clear variables that may confound our build of sub-projects; also ## note that it is necessary to use overlay_vars relative to .. as @@ -28,7 +28,7 @@ clean: ## dh_shlibdeps was added to figure out the dependencies on shared libraries ## and will populate the ${shlibs:Depends} callout in the control file -install: LIBDIR := $(ROOTDIR)/usr/lib/riak +install: LIBDIR := $(ROOTDIR)/usr/lib/riak-cs install: build dh_testdir dh_testroot @@ -36,11 +36,8 @@ install: build dh_installdirs dh_install dh_installman - dh_installinit --name=riak --no-start + dh_installinit --name=riak-cs --no-start dh_fixperms - chmod 0755 $(ROOTDIR)/etc/riak - chmod -R a+rX $(ROOTDIR)/etc/riak - chmod -R go+rX debian/riak/usr/lib/riak/lib/ dh_shlibdeps # We have nothing to do by default. diff --git a/rel/pkg/deb/debian/vars.config b/rel/pkg/deb/debian/vars.config index 8f8fa0827..097589193 100644 --- a/rel/pkg/deb/debian/vars.config +++ b/rel/pkg/deb/debian/vars.config @@ -1,55 +1,60 @@ %% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ft=erlang ts=4 sw=4 et +{rel_vsn, "3.0"}. + %% Platform-specific installation paths -{platform_bin_dir, "/usr/lib/riak/bin"}. -{platform_data_dir, "/var/lib/riak"}. -{platform_etc_dir, "/etc/riak"}. -{platform_base_dir, "/usr/lib/riak"}. -{platform_lib_dir, "/usr/lib/riak/lib"}. -{platform_log_dir, "/var/log/riak"}. -{platform_gen_dir, "/var/lib/riak"}. - -{runner_script_dir, "/usr/lib/riak/bin"}. -{runner_base_dir, "/usr/lib/riak"}. -{runner_etc_dir, "/etc/riak"}. -{runner_log_dir, "/var/log/riak"}. -{runner_user, "riak"}. -{runner_lib_dir, "/usr/lib/riak/lib"}. -{runner_patch_dir, "/usr/lib/riak/lib/patches"}. -{pipe_dir, "/tmp/riak/"}. -{pid_dir, "/run/riak/"}. -{package_replacement_line, ""}. -{package_conflicts_line, ""}. +{platform_bin_dir, "/usr/lib/riak-cs/bin"}. +{platform_data_dir, "/var/lib/riak-cs"}. +{platform_etc_dir, "/etc/riak-cs"}. +{platform_base_dir, "/usr/lib/riak-cs"}. +{platform_lib_dir, "/usr/lib/riak-cs/lib"}. +{platform_log_dir, "/var/log/riak-cs"}. +{platform_gen_dir, "/var/lib/riak-cs"}. -{cluster_manager_ip, "127.0.0.1"}. -{cluster_manager_port, 9080}. +%% +%% riak-cs.conf +%% +{cs_ip, "127.0.0.1"}. +{cs_port, 8080}. +{admin_ip, "127.0.0.1"}. +{admin_port, 8000}. +{riak_ip, "127.0.0.1"}. +{riak_pb_port, 8087}. +{auth_bypass, false}. +{admin_key, "admin-key"}. +{stanchion_ip, "127.0.0.1"}. +{stanchion_port, 8085}. +{stanchion_ssl, off}. +{cs_version, 030000}. +{rewrite_module, riak_cs_s3_rewrite}. +{auth_module, riak_cs_s3_auth}. -{web_ip, "127.0.0.1"}. -{web_port, 8098}. -{handoff_ip, "0.0.0.0"}. -{handoff_port, 8099}. -{pb_ip, "127.0.0.1"}. -{pb_port, 8087}. +{node, "riak-cs@127.0.0.1"}. +{crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{storage_backend, "bitcask"}. +{runner_script_dir, "/usr/lib/riak-cs/bin"}. +{runner_base_dir, "/usr/lib/riak-cs"}. +{runner_etc_dir, "/etc/riak-cs"}. +{runner_log_dir, "/var/log/riak-cs"}. +{runner_user, "riak_cs"}. +{runner_lib_dir, "/usr/lib/riak-cs/lib"}. +{runner_patch_dir, "/usr/lib/riak-cs/lib/patches"}. +{pipe_dir, "/tmp/riak-cs/"}. +{pid_dir, "/run/riak-cs/"}. +{package_replacement_line, ""}. +{package_conflicts_line, ""}. {sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. {sasl_log_dir, "{{platform_log_dir}}/sasl"}. -{repl_data_root, "{{platform_data_dir}}/riak_repl/"}. -{crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. + +{runner_wait_process, "riak_cs_put_fsm_sup"}. %% %% cuttlefish %% {cuttlefish, "on"}. -{cuttlefish_conf, "riak.conf"}. - -%% -%% yokozuna -%% -{yz_solr_port, 8093}. -{yz_solr_jmx_port, 8985}. +{cuttlefish_conf, "riak-cs.conf"}. %% lager {console_log_default, file}. @@ -57,4 +62,4 @@ %% %% etc/vm.args %% -{node, "riak@127.0.0.1"}. +{node, "riak_cs@127.0.0.1"}. diff --git a/rel/pkg/pkg.vars.config b/rel/pkg/pkg.vars.config deleted file mode 100644 index 9e922e8b8..000000000 --- a/rel/pkg/pkg.vars.config +++ /dev/null @@ -1,23 +0,0 @@ -%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- - -%% -%% Packaging -%% -{package_name, "riak-cs"}. -{package_install_name, "riak-cs"}. -{package_install_user, "riakcs"}. -{package_install_group, "riak"}. -{package_install_user_desc, "Riak CS user"}. -{package_commands, {list, [[{name, "riak-cs"}], [{name, "riak-cs-access"}], [{name, "riak-cs-gc"}], [{name, "riak-cs-storage"}], [{name, "riak-cs-stanchion"}], [{name, "riak-cs-debug"}], [{name, "riak-cs-admin"}], [{name, "riak-cs-supercluster"}], [{name, "riak-cs-multibag"}]]}}. -{package_shortdesc, "Riak CS"}. -{package_patch_dir, "basho-patches"}. -{package_desc, "Riak CS"}. -{bin_or_sbin, "sbin"}. -{license_type, "Apache License, Version 2.0"}. -{copyright, "2013 Basho Technologies, Inc"}. -{vendor_name, "Basho Technologies, Inc"}. -{vendor_url, "http://basho.com"}. -{vendor_contact_name, "Basho Package Maintainer"}. -{vendor_contact_email, "packaging@basho.com"}. -{license_full_text, "This software is provided under license from Basho Technologies."}. -{solaris_pkgname, "BASHOriak-cs"}. \ No newline at end of file diff --git a/rel/pkg/rpm/Makefile b/rel/pkg/rpm/Makefile index fed36bf7a..da19ab270 100644 --- a/rel/pkg/rpm/Makefile +++ b/rel/pkg/rpm/Makefile @@ -6,7 +6,7 @@ PWD = $(shell pwd) PKG_VERSION_NO_H ?= $(shell echo $(PKG_VERSION) | tr - .) default: - rpmbuild --define "_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}$(DISTRO)%%{ARCH}.rpm" \ + rpmbuild --define "_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}$(DISTRO).%%{ARCH}.rpm" \ --define '_topdir $(BASE_DIR)/rel/pkg/out/' \ --define '_sourcedir $(BASE_DIR)/rel/pkg/out/' \ --define '_specdir $(BASE_DIR)/rel/pkg/out/' \ diff --git a/rel/pkg/rpm/init.script b/rel/pkg/rpm/init.script deleted file mode 100755 index 4fe9a8933..000000000 --- a/rel/pkg/rpm/init.script +++ /dev/null @@ -1,149 +0,0 @@ -#!/bin/sh -# -# riak -# -# chkconfig: 2345 80 30 -# description: Riak KV Database -# processname: beam -# - -# Source function library. -. /etc/rc.d/init.d/functions - -RETVAL=0 -PATH=/sbin:/usr/sbin:/bin:/usr/bin -DESC="Riak CS Database" -NAME=riak-cs -DAEMON=/usr/sbin/$NAME -lockfile=/var/lock/subsys/$NAME -pidfile=/var/run/$NAME/$NAME.pid - -# Check for script, config and data dirs -[ -x /usr/sbin/$NAME ] || exit 0 -[ -d /etc/$NAME ] || exit 0 -[ -d /var/lib/$NAME ] || exit 0 - -# Read configuration variable file if it is present and readable -[ -r /etc/sysconfig/$NAME ] && . /etc/sysconfig/$NAME - -# `service` strips all environmental VARS so -# if no HOME was set in /etc/sysconfig/$NAME then set one here -# to the data directory for erlexec's sake -if [ -z "$HOME" ]; then - export HOME={{platform_data_dir}} -fi - -status -p $pidfile -l $(basename $lockfile) $NAME >/dev/null 2>&1 -running=$? - -check_pid_status() { - pid=$(ps ax | grep beam.smp | grep "\-progname $NAME " | awk '{print $1}') - if [ "$pid" = "" ]; then - # prog not running? - return 1 - else - # running - return 0 - fi -} - -start() { - # Start daemons. - echo -n $"Starting riak-cs: " - $DAEMON start - RETVAL=$? - if [ $RETVAL -eq 0 ]; then - touch $lockfile - success - else - failure $"$NAME start" - fi - echo - return $RETVAL -} - -stop() { - # Stop daemon. - echo -n $"Shutting down riak-cs: " - $DAEMON stop 2>/dev/null - for n in $(seq 1 10); do - sleep 1 - check_pid_status - RETVAL=$? - if [ $RETVAL -eq 1 ]; then - break - fi - done - if [ $RETVAL -eq 1 ]; then - rm -f $lockfile $pidfile - success - echo && return 0 - else - failure $"$NAME stop" - echo && return 1 - fi -} - -hardstop() { - echo -n $"Shutting down $NAME: " - su - riak -c "ps -ef | grep beam.smp | grep '\-progname $NAME ' | grep -v grep | awk '{print \$2}' | xargs kill -9" - for n in $(seq 1 10); do - sleep 1 - check_pid_status - RETVAL=$? - if [ $RETVAL -eq 1 ]; then - break - fi - done - if [ $RETVAL -eq 1 ]; then - rm -f $lockfile $pidfile - success - echo && return 0 - else - failure $"$NAME hardstop" - echo && return 1 - fi -} - -# See how we were called. -case "$1" in - start) - [ $running -eq 0 ] && exit 0 - start - ;; - stop) - if [ $running -eq 0 ]; then - stop - else - check_pid_status - RETVAL=$? - if [ $RETVAL -eq 1 ]; then - rm -f $lockfile $pidfile - fi - exit 0 - fi - ;; - restart|force-reload) - [ $running -eq 0 ] && stop - start - ;; - hardstop) - [ $running -eq 0 ] || exit 0 - hardstop - ;; - condrestart|try-restart) - [ $running -eq 0 ] || exit 0 - restart - ;; - status) - status -p $pidfile -l $(basename $lockfile) $NAME - ;; - ping) - $DAEMON ping || exit $? - ;; - *) - echo $"Usage: $0 {start|stop|restart|force-reload|hardstop|condrestart|try-restart|status|ping}" - exit 1 -esac - -exit $? diff --git a/rel/pkg/rpm/riak-cs b/rel/pkg/rpm/riak-cs index c3090048f..22d6e41da 100755 --- a/rel/pkg/rpm/riak-cs +++ b/rel/pkg/rpm/riak-cs @@ -9,9 +9,9 @@ fi case "$1" in start|console|foreground) - su - riak-cs -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches" + su - riak -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches" ;; *) - su - riak-cs -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*}" + su - riak -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*}" ;; esac diff --git a/rel/pkg/rpm/riak-cs.service b/rel/pkg/rpm/riak-cs.service new file mode 100644 index 000000000..780686c62 --- /dev/null +++ b/rel/pkg/rpm/riak-cs.service @@ -0,0 +1,14 @@ +[Unit] +Description=Riak CS Database + +[Service] +User=riak_cs +ExecStart=/usr/lib/riak-cs/bin/riak-cs start +ExecStop=/usr/lib/riak-cs/bin/riak-cs stop +Type=forking +PIDFile=/run/riak-cs/riak-cs.pid +EnvironmentFile=-/etc/default/riak-cs +RuntimeDirectory=riak-cs + +[Install] +WantedBy=multi-user.target diff --git a/rel/pkg/rpm/specfile b/rel/pkg/rpm/specfile index dc5bb4bf5..b70a9cf3b 100644 --- a/rel/pkg/rpm/specfile +++ b/rel/pkg/rpm/specfile @@ -1,6 +1,6 @@ ## ------------------------------------------------------------------- ## -## Copyright (c) 2014 Basho Technologies, Inc. +## Copyright (c) 2014 Basho Technologies, Inc.; 2021 TI Tokyo ## ## This file is provided to you under the Apache License, ## Version 2.0 (the "License"); you may not use this file @@ -21,30 +21,29 @@ Name: riak-cs Version: %{_version} Release: %{_release}%{?dist} -License: "Apache 2.0" +License: "Apacke 2.0" Group: Development/Libraries Source: %{_tarname} -URL: "https://riak.com" +URL: "https://tiot.jp" Vendor: "Riak" -Packager: "Riak Package Maint" <"packaging@riak.com"> +Packager: "Riak Package Maint" <"andriy.zavada@tiot.jp"> BuildRoot: %{_tmppath}/%{name}-%{_revision}-%{release}-root -Summary: "Riak is a distributed data store" +Summary: "Riak CS is a Riak-backed S3 emulator" +Obsoletes: riak-cs +BuildRequires: systemd-rpm-macros %description -"Riak is a distributed data store" +"Riak CS is a Riak-backed S3 emulator" -%define init_script %{_sysconfdir}/init.d/riak-cs %define debug_package %{nil} %define __prelink_undo_cmd /bin/cat prelink library -%define platform_data_dir %{_localstatedir}/lib/riak-cs %define platform_etc_dir %{_sysconfdir}/riak-cs %define platform_base_dir %{_libdir}/riak-cs %define platform_bin_dir %{platform_base_dir}/bin %define platform_lib_dir %{platform_base_dir}/lib %define platform_log_dir %{_localstatedir}/log/riak-cs - %prep %setup -q -n %{_tarname_base} -c %{_tarname_base} @@ -52,7 +51,6 @@ Summary: "Riak is a distributed data store" cat > rpm.vars.config </dev/null 2>&1; then - groupadd -r riak-cs +if ! getent group riak_cs >/dev/null 2>&1; then + groupadd -r riak_cs fi -if getent passwd riak-cs >/dev/null 2>&1; then - usermod -d %{_localstatedir}/lib/riak-cs riak-cs || true +if getent passwd riak_cs >/dev/null 2>&1; then + usermod -d %{_localstatedir}/lib/riak-cs riak_cs || true else - useradd -r -g riak-cs \ + useradd -r -g riak_cs \ --home %{_localstatedir}/lib/riak-cs \ - --comment "Riak User" \ + --comment "Riak CS User" \ --shell /bin/bash \ - riak-cs + riak_cs fi %post -# Post Installation Script # For distros with SELinux (RHEL/Fedora) if [ `which selinuxenabled > /dev/null 2>&1` ] ; then # Fixup perms for SELinux (if it is enabled) selinuxenabled && find %{_localstatedir}/lib/riak-cs -name "*.so" -exec chcon -t textrel_shlib_t {} \; fi +%systemd_post riak-cs.service %preun -# Pre-uninstall script +%systemd_preun riak-cs.service # Only on uninstall, not upgrades if [ "$1" = 0 ] ; then - /sbin/service riak-cs stop > /dev/null 2>&1 + systemctl stop riak-cs fi exit 0 # Man pages are optional and might be missing, read from file %files -%defattr(-,riak-cs,riak-cs) +%defattr(-,riak_cs,riak_cs) %{_localstatedir}/lib/riak-cs %{_localstatedir}/log/riak-cs %{_libdir}/* %defattr(-,root,root) -%{_sysconfdir}/init.d/riak-cs %dir %{_sysconfdir}/riak-cs -/usr/sbin/* %config(noreplace) %{_sysconfdir}/riak-cs/* %clean diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index 117fe4f16..097589193 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -1,27 +1,20 @@ %% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ft=erlang ts=4 sw=4 et +{rel_vsn, "3.0"}. + %% Platform-specific installation paths -{platform_bin_dir, "/usr/lib64/riak-cs/bin"}. +{platform_bin_dir, "/usr/lib/riak-cs/bin"}. {platform_data_dir, "/var/lib/riak-cs"}. {platform_etc_dir, "/etc/riak-cs"}. -{platform_base_dir, "/usr/lib64/riak-cs"}. -{platform_lib_dir, "/usr/lib64/riak-cs/lib"}. +{platform_base_dir, "/usr/lib/riak-cs"}. +{platform_lib_dir, "/usr/lib/riak-cs/lib"}. {platform_log_dir, "/var/log/riak-cs"}. {platform_gen_dir, "/var/lib/riak-cs"}. -{runner_script_dir, "/usr/lib64/riak-cs/bin"}. -{runner_base_dir, "/usr/lib64/riak-cs"}. -{runner_etc_dir, "/etc/riak-cs"}. -{runner_log_dir, "/var/log/riak-cs"}. -{runner_user, "riak-cs"}. -{runner_lib_dir, "/usr/lib64/riak-cs/lib"}. -{runner_patch_dir, "/usr/lib64/riak-cs/lib/patches"}. -{pipe_dir, "/tmp/riak-cs/"}. -{pid_dir, "/var/run/riak-cs"}. -{package_replacement_line, ""}. -{package_conflicts_line, ""}. - +%% +%% riak-cs.conf +%% {cs_ip, "127.0.0.1"}. {cs_port, 8080}. {admin_ip, "127.0.0.1"}. @@ -37,21 +30,36 @@ {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. -{cuttlefish, "on"}. -{cuttlefish_conf, "riak-cs.conf"}. +{node, "riak-cs@127.0.0.1"}. +{crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. +{runner_script_dir, "/usr/lib/riak-cs/bin"}. +{runner_base_dir, "/usr/lib/riak-cs"}. +{runner_etc_dir, "/etc/riak-cs"}. +{runner_log_dir, "/var/log/riak-cs"}. +{runner_user, "riak_cs"}. +{runner_lib_dir, "/usr/lib/riak-cs/lib"}. +{runner_patch_dir, "/usr/lib/riak-cs/lib/patches"}. +{pipe_dir, "/tmp/riak-cs/"}. +{pid_dir, "/run/riak-cs/"}. +{package_replacement_line, ""}. +{package_conflicts_line, ""}. + +{sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. +{sasl_log_dir, "{{platform_log_dir}}/sasl"}. -{data_dir, "{{platform_data_dir}}/data"}. -{runner_script_dir, "\$(cd \\`dirname $0\\` && /bin/pwd)"}. -{runner_base_dir, "{{runner_script_dir}}/.."}. -{runner_etc_dir, "$RUNNER_BASE_DIR/etc"}. -{runner_log_dir, "$RUNNER_BASE_DIR/log"}. -{runner_lib_dir, "$RUNNER_BASE_DIR/lib"}. -{runner_patch_dir, "$RUNNER_BASE_DIR/lib/patches"}. -{pipe_dir, "/tmp/$RUNNER_BASE_DIR/"}. -{runner_user, ""}. {runner_wait_process, "riak_cs_put_fsm_sup"}. +%% +%% cuttlefish +%% +{cuttlefish, "on"}. +{cuttlefish_conf, "riak-cs.conf"}. + +%% lager {console_log_default, file}. -{node, "riak-cs@127.0.0.1"}. +%% +%% etc/vm.args +%% +{node, "riak_cs@127.0.0.1"}. From 54afa0f197c6556db0f25c1074a15f4404490fb8 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 28 Oct 2021 20:45:51 +0300 Subject: [PATCH 215/831] don't be too spcific with erlang:22 version in Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 6ee7c653d..cd7e4567f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM erlang:22.3.4.10 AS compile-image +FROM erlang:22 AS compile-image ARG stanchion_host=127.0.0.1 \ stanchion_port=8085 \ From 1e7a5307bbd09e4d818ff5b9c06a383882ecd391 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 27 Oct 2021 11:41:40 -0400 Subject: [PATCH 216/831] complete rpm part --- rebar.config | 27 ++++---- rel/files/riak-cs | 68 +++++++++++++++++++ rel/files/riak-cs-admin | 23 +++++++ rel/files/riak-cs-debug | 7 +- rel/files/riak-cs-supercluster | 23 +++++++ .../{riak-cs.riak-cs.init => riak-cs.init} | 0 ...iak-cs.riak-cs.service => riak-cs.service} | 0 rel/pkg/rpm/riak-cs | 17 ----- rel/pkg/rpm/riak-cs.service | 6 +- rel/pkg/rpm/specfile | 62 ++++++++++------- rel/pkg/rpm/vars.config | 14 ++-- 11 files changed, 179 insertions(+), 68 deletions(-) create mode 100755 rel/files/riak-cs rename rel/pkg/deb/debian/{riak-cs.riak-cs.init => riak-cs.init} (100%) rename rel/pkg/deb/debian/{riak-cs.riak-cs.service => riak-cs.service} (100%) delete mode 100755 rel/pkg/rpm/riak-cs diff --git a/rebar.config b/rebar.config index bce4a9a2c..3ff3c34f9 100644 --- a/rebar.config +++ b/rebar.config @@ -25,14 +25,14 @@ , {webmachine, "1.11.1"} , {mochiweb, "v2.20.1"} , {exometer_core, "v1.5.7"} - , {uuid, ".*", {git, "git://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} - , {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client", {tag, "3.0.7"}}} - , {poolboy, "0.8.*", {git, "git://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} - , {cluster_info, ".*", {git, "git://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {riak_repl_pb_api,".*", {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} - , {riak_cs_multibag,".*", {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} - , {lager_syslog, {git, "git://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} - , {rcs_common, {git, "git://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.2"}}} + , {uuid, ".*", {git, "https://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} + , {riakc, ".*", {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.7"}}} + , {poolboy, "0.8.*", {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} + , {cluster_info, ".*", {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} + , {riak_repl_pb_api,".*", {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} + , {riak_cs_multibag,".*", {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} + , {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} + , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.2"}}} ] }. @@ -44,9 +44,10 @@ } , {dev_mode, false} , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} - , {template, "rel/files/riak-cs-admin", "bin/riak-cs-admin"} - , {template, "rel/files/riak-cs-debug", "bin/riak-cs-debug"} - , {template, "rel/files/riak-cs-supercluster", "bin/riak-cs-supercluster"} + , {template, "rel/files/riak-cs", "usr/sbin/riak-cs"} + , {template, "rel/files/riak-cs-admin", "usr/sbin/riak-cs-admin"} + , {template, "rel/files/riak-cs-debug", "usr/sbin/riak-cs-debug"} + , {template, "rel/files/riak-cs-supercluster", "usr/sbin/riak-cs-supercluster"} , {copy, "rel/files/cert.pem", "etc/cert.pem"} , {copy, "rel/files/key.pem", "etc/key.pem"} , {copy, "rel/files/app_epath.sh", "lib/app_epath.sh"} @@ -78,7 +79,7 @@ ] } , {test, [ {deps, [ {proper, "1.4.0"} - , {erlcloud, ".*", {git, "git://github.com/TI-Tokyo/erlcloud.git", {tag, "0.4.7"}}} + , {erlcloud, ".*", {git, "https://github.com/TI-Tokyo/erlcloud.git", {tag, "0.4.7"}}} ] } ] @@ -90,7 +91,7 @@ ] } , {rpm, [ {relx, [ {overlay_vars, "rel/pkg/rpm/vars.config"}, - {overlay, [ {template, "rel/pkg/rpm/init.script", "etc/init.d/init.script"} + {overlay, [ {template, "rel/files/riak-cs", "usr/sbin/riak-cs"} ] } , {mode, prod} diff --git a/rel/files/riak-cs b/rel/files/riak-cs new file mode 100755 index 000000000..80388c41d --- /dev/null +++ b/rel/files/riak-cs @@ -0,0 +1,68 @@ +#!/bin/sh + +## ------------------------------------------------------------------- +## +## riak-cs: Riak CS launcher +## +## Copyright (c) 2014 Basho Technologies, Inc., +## 2021 TI Tokyo. All Rights Reserved. +## +## This file is provided to you under the Apache License, +## Version 2.0 (the "License"); you may not use this file +## except in compliance with the License. You may obtain +## a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, +## software distributed under the License is distributed on an +## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +## KIND, either express or implied. See the License for the +## specific language governing permissions and limitations +## under the License. +## +## ------------------------------------------------------------------- + +RCS_USER=riak_cs +RUNNER_GEN_DIR="${RUNNER_GEN_DIR:-{{ platform_gen_dir }}}" +RELEASE_ROOT_DIR="${RELEASE_ROOT_DIR:-{{ runner_base_dir }}}" +PID_DIR={{pid_dir}} +COMMAND={{platform_bin_dir}}/riak-cs +DEBUG_COMMAND={{platform_bin_dir}}/riak-cs-debug +RUNNER_LOG_DIR={{platform_log_dir}} + +# When running as a service, running as riak-cs not as root, and systemd has created PID folder +if [[ $EUID -ne 0 ]]; then + case "$1" in + start|console|foreground) + RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches + ;; + *) + RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} + ;; + esac +else + # In this case we're running sudo riak_cs - so have root access, but cannot rely + # systemd having created the PID dir, and need to sudo to the riak_cs user + if [ ! -d $PID_DIR ]; then + mkdir $PID_DIR + chown $RCS_USER:$RCS_USER $PID_DIR + fi + case "$1" in + start|console|foreground) + su - $RCS_USER -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches" + ;; + debug) + # Drop the "debug" from the args as we're going to directly call riak-cs-debug now + shift + # Debug may fail if run via relx script due to use of relative start location, and also need for root access + NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${DEBUG_COMMAND} ${*} + ;; + *) + ESCAPED_ARGS=`echo "$@" | sed -e 's/\([\\\(\\\){}"\x27]\)/\\\\\1/g'` + su - $RCS_USER -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${ESCAPED_ARGS}" + ;; + esac +fi + + diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index 68f3a0af6..4e6b37384 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -1,5 +1,28 @@ #!/bin/sh +## ------------------------------------------------------------------- +## +## riak-cs-admin: Administrative tasks on Riak CS +## +## Copyright (c) 2014 Basho Technologies, Inc., +## 2021 TI Tokyo. All Rights Reserved. +## +## This file is provided to you under the Apache License, +## Version 2.0 (the "License"); you may not use this file +## except in compliance with the License. You may obtain +## a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, +## software distributed under the License is distributed on an +## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +## KIND, either express or implied. See the License for the +## specific language governing permissions and limitations +## under the License. +## +## ------------------------------------------------------------------- + SCRIPT=$(readlink $0 || true) if [ -z $SCRIPT ]; then SCRIPT=$0 diff --git a/rel/files/riak-cs-debug b/rel/files/riak-cs-debug index e22981534..fb20f9f46 100755 --- a/rel/files/riak-cs-debug +++ b/rel/files/riak-cs-debug @@ -4,7 +4,8 @@ ## ## riak-cs-debug: Gather info from a node for troubleshooting. ## -## Copyright (c) 2014 Basho Technologies, Inc. All Rights Reserved. +## Copyright (c) 2014 Basho Technologies, Inc., +## 2021 TI Tokyo. All Rights Reserved. ## ## This file is provided to you under the Apache License, ## Version 2.0 (the "License"); you may not use this file @@ -135,7 +136,7 @@ exit RUNNER_BASE_DIR=$(cd `dirname $0` && /bin/pwd -P)/.. cs_base_dir=$RUNNER_BASE_DIR cs_bin_dir=$RUNNER_BASE_DIR/bin -cs_etc_dir=$RUNNER_BASE_DIR/etc +cs_etc_dir={{platform_etc_dir}} cs_log_dir=$RUNNER_BASE_DIR/log if [ -d {{platform_data_dir}}/generated.configs ]; then @@ -257,7 +258,7 @@ if [ 0 -ne $(( $get_cfgs + $get_logs + $get_riakcmds + $get_extracmds )) ]; then if [ -n "$APP_EPATH" ]; then epath_file="$APP_EPATH" else - epath_file="${cs_base_dir}/lib/app_epath.sh" + epath_file="${cs_base_dir}/lib64/app_epath.sh" fi if [ ! -f "$epath_file" ]; then diff --git a/rel/files/riak-cs-supercluster b/rel/files/riak-cs-supercluster index acd20e381..82078fdb0 100755 --- a/rel/files/riak-cs-supercluster +++ b/rel/files/riak-cs-supercluster @@ -1,5 +1,28 @@ #!/bin/sh +## ------------------------------------------------------------------- +## +## riak-cs-supercluster: Riak CS supercluster management +## +## Copyright (c) 2014 Basho Technologies, Inc., +## 2021 TI Tokyo. All Rights Reserved. +## +## This file is provided to you under the Apache License, +## Version 2.0 (the "License"); you may not use this file +## except in compliance with the License. You may obtain +## a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, +## software distributed under the License is distributed on an +## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +## KIND, either express or implied. See the License for the +## specific language governing permissions and limitations +## under the License. +## +## ------------------------------------------------------------------- + SCRIPT=$(readlink $0 || true) if [ -z $SCRIPT ]; then SCRIPT=$0 diff --git a/rel/pkg/deb/debian/riak-cs.riak-cs.init b/rel/pkg/deb/debian/riak-cs.init similarity index 100% rename from rel/pkg/deb/debian/riak-cs.riak-cs.init rename to rel/pkg/deb/debian/riak-cs.init diff --git a/rel/pkg/deb/debian/riak-cs.riak-cs.service b/rel/pkg/deb/debian/riak-cs.service similarity index 100% rename from rel/pkg/deb/debian/riak-cs.riak-cs.service rename to rel/pkg/deb/debian/riak-cs.service diff --git a/rel/pkg/rpm/riak-cs b/rel/pkg/rpm/riak-cs deleted file mode 100755 index 22d6e41da..000000000 --- a/rel/pkg/rpm/riak-cs +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -COMMAND={{platform_bin_dir}}/riak-cs - -if [[ $EUID -ne 0 ]]; then - echo "You need to be root or use sudo to run this command." - exit 1 -fi - -case "$1" in - start|console|foreground) - su - riak -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches" - ;; - *) - su - riak -c "PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*}" - ;; -esac diff --git a/rel/pkg/rpm/riak-cs.service b/rel/pkg/rpm/riak-cs.service index 780686c62..48120a579 100644 --- a/rel/pkg/rpm/riak-cs.service +++ b/rel/pkg/rpm/riak-cs.service @@ -3,9 +3,9 @@ Description=Riak CS Database [Service] User=riak_cs -ExecStart=/usr/lib/riak-cs/bin/riak-cs start -ExecStop=/usr/lib/riak-cs/bin/riak-cs stop -Type=forking +ExecStart=/usr/lib64/riak-cs/bin/riak-cs foreground +ExecStop=/usr/lib64/riak-cs/bin/riak-cs stop +Type=exec PIDFile=/run/riak-cs/riak-cs.pid EnvironmentFile=-/etc/default/riak-cs RuntimeDirectory=riak-cs diff --git a/rel/pkg/rpm/specfile b/rel/pkg/rpm/specfile index b70a9cf3b..0d88a1885 100644 --- a/rel/pkg/rpm/specfile +++ b/rel/pkg/rpm/specfile @@ -21,7 +21,7 @@ Name: riak-cs Version: %{_version} Release: %{_release}%{?dist} -License: "Apacke 2.0" +License: "Apache 2.0" Group: Development/Libraries Source: %{_tarname} URL: "https://tiot.jp" @@ -29,11 +29,14 @@ Vendor: "Riak" Packager: "Riak Package Maint" <"andriy.zavada@tiot.jp"> BuildRoot: %{_tmppath}/%{name}-%{_revision}-%{release}-root Summary: "Riak CS is a Riak-backed S3 emulator" -Obsoletes: riak-cs -BuildRequires: systemd-rpm-macros +BuildRequires: systemd systemd-rpm-macros +Requires: logrotate +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd %description -"Riak CS is a Riak-backed S3 emulator" +"Riak CS is a Riak-backed AWS S3 drop-in replacement" %define debug_package %{nil} %define __prelink_undo_cmd /bin/cat prelink library @@ -57,27 +60,35 @@ cat > rpm.vars.config < /dev/null 2>&1` ] ; then # Fixup perms for SELinux (if it is enabled) selinuxenabled && find %{_localstatedir}/lib/riak-cs -name "*.so" -exec chcon -t textrel_shlib_t {} \; fi -%systemd_post riak-cs.service -%preun -%systemd_preun riak-cs.service +%systemd_post %{name}.service -# Only on uninstall, not upgrades -if [ "$1" = 0 ] ; then - systemctl stop riak-cs -fi -exit 0 +%preun +%systemd_preun %{name}.service +%postun +%systemd_postun %{name}.service -# Man pages are optional and might be missing, read from file %files +%defattr(-,root,root) +%dir %{_sysconfdir}/riak-cs +%{_libdir}/* +%{_unitdir}/%{name}.service +%{_sbindir}/* + %defattr(-,riak_cs,riak_cs) %{_localstatedir}/lib/riak-cs %{_localstatedir}/log/riak-cs -%{_libdir}/* -%defattr(-,root,root) -%dir %{_sysconfdir}/riak-cs %config(noreplace) %{_sysconfdir}/riak-cs/* %clean diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index 097589193..fa91b09c5 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -4,11 +4,11 @@ {rel_vsn, "3.0"}. %% Platform-specific installation paths -{platform_bin_dir, "/usr/lib/riak-cs/bin"}. +{platform_bin_dir, "/usr/lib64/riak-cs/bin"}. {platform_data_dir, "/var/lib/riak-cs"}. {platform_etc_dir, "/etc/riak-cs"}. -{platform_base_dir, "/usr/lib/riak-cs"}. -{platform_lib_dir, "/usr/lib/riak-cs/lib"}. +{platform_base_dir, "/usr/lib64/riak-cs"}. +{platform_lib_dir, "/usr/lib64/riak-cs/lib"}. {platform_log_dir, "/var/log/riak-cs"}. {platform_gen_dir, "/var/lib/riak-cs"}. @@ -33,13 +33,13 @@ {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{runner_script_dir, "/usr/lib/riak-cs/bin"}. -{runner_base_dir, "/usr/lib/riak-cs"}. +{runner_script_dir, "/usr/lib64/riak-cs/bin"}. +{runner_base_dir, "/usr/lib64/riak-cs"}. {runner_etc_dir, "/etc/riak-cs"}. {runner_log_dir, "/var/log/riak-cs"}. {runner_user, "riak_cs"}. -{runner_lib_dir, "/usr/lib/riak-cs/lib"}. -{runner_patch_dir, "/usr/lib/riak-cs/lib/patches"}. +{runner_lib_dir, "/usr/lib64/riak-cs/lib"}. +{runner_patch_dir, "/usr/lib64/riak-cs/lib/patches"}. {pipe_dir, "/tmp/riak-cs/"}. {pid_dir, "/run/riak-cs/"}. {package_replacement_line, ""}. From 1031c51a67b56693616238e1ea0fb5795b2eaa17 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 30 Oct 2021 06:40:25 +0300 Subject: [PATCH 217/831] update rebar.lock --- rebar.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/rebar.lock b/rebar.lock index edd7936c7..2938eaa08 100644 --- a/rebar.lock +++ b/rebar.lock @@ -1,7 +1,7 @@ {"1.2.0", [{<<"bear">>,{pkg,<<"bear">>,<<"0.8.7">>},2}, {<<"cluster_info">>, - {git,"git://github.com/basho/cluster_info", + {git,"https://github.com/basho/cluster_info", {ref,"389d43af7ac1550b3c01cd55b8147bcc0e20022f"}}, 0}, {<<"exometer_core">>,{pkg,<<"exometer_core">>,<<"1.5.7">>},0}, @@ -14,7 +14,7 @@ {ref,"22e62f28e5afabe90a6f31bcde367a2b5799fc94"}}, 1}, {<<"lager_syslog">>, - {git,"git://github.com/basho/lager_syslog.git", + {git,"https://github.com/basho/lager_syslog.git", {ref,"152bb8eb254c225ebd8c579f9603f44b50df44ec"}}, 0}, {<<"meck">>, @@ -24,7 +24,7 @@ {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"2.20.1">>},0}, {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.0">>},0}, {<<"poolboy">>, - {git,"git://github.com/basho/poolboy", + {git,"https://github.com/basho/poolboy", {ref,"032ea3186fda78b4913deb8932af318ebb9b1258"}}, 0}, {<<"protobuffs">>, @@ -36,11 +36,11 @@ {ref,"c80077162f32c10002219f70e0afadb71e05f88c"}}, 1}, {<<"rcs_common">>, - {git,"git://github.com/TI-Tokyo/rcs_common.git", + {git,"https://github.com/TI-Tokyo/rcs_common.git", {ref,"5936595fc05bf13325590c88e7f3c561ff48a210"}}, 0}, {<<"riak_cs_multibag">>, - {git,"git://github.com/TI-Tokyo/riak_cs_multibag.git", + {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {ref,"0e3cac45f8e138b1ac8eee1519d2f3da7b5273f6"}}, 0}, {<<"riak_pb">>, @@ -48,11 +48,11 @@ {ref,"3129374435d67086e05f97a92482ef7f280aa7c7"}}, 1}, {<<"riak_repl_pb_api">>, - {git,"git://github.com/TI-Tokyo/riak_repl_pb_api.git", + {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {ref,"64476172209242af64ed78db7dd705d07189316a"}}, 0}, {<<"riakc">>, - {git,"git://github.com/basho/riak-erlang-client", + {git,"https://github.com/basho/riak-erlang-client", {ref,"07c9582c9fd97f8252e0a3e488d6ebc08a9a4172"}}, 0}, {<<"setup">>,{pkg,<<"setup">>,<<"2.0.2">>},1}, @@ -61,7 +61,7 @@ {ref,"4a6c6f2c996483e86c1320e9553f91d337bcb6aa"}}, 1}, {<<"uuid">>, - {git,"git://github.com/okeuday/uuid.git", + {git,"https://github.com/okeuday/uuid.git", {ref,"9312cc158a94c76e40c82ca45fd5056fb191c889"}}, 0}, {<<"webmachine">>,{pkg,<<"webmachine">>,<<"1.11.1">>},0}]}. From edfdff54bc6a1983632c0a1fca991e8ea09824a4 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 5 Nov 2021 19:06:52 +0200 Subject: [PATCH 218/831] update rebar3 to latest (3.17) --- rebar3 | Bin 942316 -> 949556 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rebar3 b/rebar3 index 9bb538c0b9df2b218bbac9bef1d97f8c5a12c04b..7a1056780cc08cc30fa9539fc39d6d7a94933c0b 100755 GIT binary patch delta 826620 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

    &b#BonZKqXDx4hg(yzz#{NfOC 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

    ^U?vbPvrPFh$CNO@I#e>_6&kM2>u7 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

    =l<1ibMYfp%)%JU`pzf&8)vQ(d~-EUvz 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

    E7;MP7zsMsPiI)!v+_f%@d-b2DWXO(W=nhQN z4P7>~(qZP$5>&|~281Q~o~M9=X}%DfY_Zztfu`u8Cb<_&!mDwg?<;&5Jm{fd-2jrO z&v$nphKBDrFPq&+U4CG7E7;rocQc47=U`kCw5cgGlnNzybTt9GCD&m>FWRxgWsL7a-eM@rVy2~@yYqPfB9f^Nj|apjJ>ew{_VDj zWB+TH?^c|nLPwye@xqyt2)i-O2i6IQc%8!l7g8+DOI15_U7 zAF>jm>!+{y4lq<;7e2!b^rT>d>@VbaLMO!M$9yTsoKQMhT$|4q{>?XDs)86wHlRZw zAj{(A+BEUYXMv208w1%OpbkgdD#`?C zwP&LC!c;MFz75@k@J>cA@8u$UWnkA1t^Av!miLVN369FNc}wUW`=p#x-iYk5xO~;Q zEmAU@{>WT1|1t2b5=t5|gYUB!LEJ;SmFMqZ&EF8xoI4 zxbdJrMS)EFbfbnX!s3KX8>NVWHlo^7_$W$d|F{xD`-qSEl$<#J0T?o`|!Mn)Zvc?3L)(*#%8>A@jY7<$#QIA!CgrlShg%)ii%X34!uM`e)C6 zmm5K9lj8KIJ7q-#+_yT7j*DAFI3PzasT4CrgHM&aL(!jq{}5&=L5x>&?NYD98)8E5 zR$@r@%^d)Cw(3+_0T8`mwO4lOjWI_Z_K!?s!UH8>$XmiQqRLZ(0_&4k`Mm~&mK z`dy(6x$_M&44jVO)49#;i4Wm>Ki270hV*t7FjtS?!)OZt0R6>tn>NRnP2_|2AACzA z`*+2ZCAgW!;(vz6BD$8olRbtFqHm;hZ}kqVz335MjuV~85niDa;w)#ef40#{#=o(5 zlA+{`)}jDnt32?FeBb=|;^Tj7o;6rO!ce&n-$XK^?uQs?XmvDfzb#9?)pGl|*~%>8 z6=10>RPeV!N;UeqI;JkqxW(|6t|a^@muB*;>ga{@iHG|r>*#R(Ze{uI(-3~L1x0q! z5fTUTxg*bq04)pT+~fIS)vKVRE0~|j18Fl_h^FspM5CLLxPi@^aOlaW&en@C^UEvW zoTOv~GhrJt_jbZ%^9U5@8Imbl*Uz>)2Y}VlXTAmlp6x-~-oU(?{PcGUu`hI*e`Ygm zizEC?s?`p1r?)i5)abzU=)goz34ce~CJAzmB@1%a7iw?|nI3@85T&P*Nru4TH_R+V zgIOg*X^@_VO=j7Uu0W-`k!^uc&^6>FF-{@9*pS~zv4^B=V9e9C%@h zeyIaY>B;C1-@ z)Q=AH04I$m*e7CfHRxCJGZ*?-wcoYQ@0@B&cQuV^HIHdE^t^KK=PDs>H4Rk>Xj4(I zyNas3=SV6SBh!jfr}n*WB~oHMQh*pQa1(2;V@TaD;${;o(0)k04hElG+Dp!%i5nI$ z{p&p>fL1NIzQodNMSE$*b7=)P&&n6JMATqK%UA%8n%_wps&fZUbtR_*UE3B_JatA= z;fU1SbX|tkf4dIFQ>v#zT#1DI;8JE+r5xXe2q_SG1Q}qF4#1Ve(+l2m0QSo+nK117 zBT(Mwq3?U4oQ@8`J9gguw0A)+TyXDw5^^G|0?Ym-5kz9P zU1nsC;&k80920-#D&FJ*G_oEC!V?;NjyAv48dPlj2KI_Po#!gND~g;qf(W`w(YGSn zbV&(VLeU%4r6@l3hp60`fnHYjk260aHM>|tmv1Dkg$SE*?DCK(9voqs6s>H2IWJpf zG2`$2r@quOJG0K=8*m$jazg0V&s73QchL#|a%sD+*%O`M4#aT++;wUES}|JLE-YZ9 z|3r5N8Fm?dret*jzt~vw%w*_vrrX1#1Nk|>zmubac&lEpe)*8m1Ac{aC53V!g>oI1 zit|Rl*dUVS0^{B#+1Q9@Q20W+5y0KGXgVjLu3h)_5ZZNWL-}Ldg=@Enm#^f{-LTHx z>T1hGuwHdwKB^Wyl7IWMqrB>1yz;_*5cvB>3v~yBc}F8%^9O;yQ#IaGtrYoEORHh{ zj^0yMzZ3S2UMU?s0kDy8z4W&qCWu`%Ezu?GN0lE+h1k(4(3XCT`G=sQcOX+g{%Od* znnzED1E>F$bwv@kj``o)??qGB*$WzYLANnN9ujzWF^Jp2Fzdpb%iSr7xQNq>q?TvM zwGSbOv!upn$aZIXoLbomTG_GIue1p=**B+OkxE}FWxy|>gy-<~gfZ_frTOV9qjPIF zO{DlH`deP!;8*5WW<+@)Rjt6T%%l-(2eDPrW++uesUfdGQU_WWb@3?RCE3zXNxuxiP2{>vo1@}Ot^@l4wE zC|=uJ-9hx78$y%%E1jn@V@=aF`i4Ktyb}BEEn*FW6lZtp9u3o+X@)kQ7?YQ;FV4HXQV z2qi8>)V{n$%WC5kqg-_TOtsOHMpNz7HvF5*mfKlCW8-4m`w@9x{G->`Tldw+J$LI- zme*vfS^JT0vCr#)__e!%o#Jd3FJ%2oI&1vOaUt5Ztt@zC=H4+2k3VSR59T#8PSy(Ia zbfIE4he<6Zgefv)4o&eC}5ne4$xFJG1OVZvb^06k?I_jGV!~NgJnT zUaQ)_qVX=6lFV1C=c*@VnhQ!_My6v6l&Kh1*WBSyENrZq)b|M$D`twyV|i6|JBR2R z(8f3`Vmd45oBrNDVm*I6x^WKC5Y(@&^Xg-ho7dBC{+NnVXX4oIWfvHYE0ZG~2 z9Yu%~s_<_KcB!=v^9`{ft2df?Zxe_EGLdg(QBcXE`9dLeK2EhFwuCKVI}@gD012gh zV#@Thzi_pR6{L0KN(nV9cj`Tc5kNIYZ=j+AhNd(jfk9Zw$g$dbPhRMe;P0|+%i?1F{~a*Hi<(r6N_ynx;#8-F}C(5SALRGxjlU< z-jM2yt|2lZxnahmzInxBRbN#?^cd#0gz4lK%d)9rilmlV5~o;LLM}r#bhofb!X5HyqEa3ukEqa$qoPP~96+)TN@^~4>_3M^?C3yS zbRtu_VRjjTBq5N|kZ(!dYjPm50Qo>U=>M< zOC45j`Ut7a2k09{Y@tD-jy7HQ&+imiN0WB#S0j0R^bW(54lQL7t?HZ%iE^Bsih2RX zcN8UVg2yA}(txF(#s)e4Fp`A5pa#Dx7-;~Y*d zEYL$AOrnoLLMm*q2y1$Yg^VNYDtd09+Do`B?3e3>j}6ro6hP{Xhb=Y)p7SbXy`u^? z*~kFD3>do@Lm2K^lJwfz6(k#xG` zOG=3)-%)~_giCYSPB}2r3Fad2Tzb1vB7_Qv^+3&Z7R(qU;ekb_P^=oQ2P$Blt4Acp z^nN0LA6i?}fiiZ$+F2#e?o;ZTzrlz5Kd2IkR9{t!U~$SUBa`VE2il6}=%r6^x@UJ2J^6)owimH-Exu>W2weVDl zqHn^IkYbe9D-z9Igz=to-tpPqu&yKQcjw421DsUi zbK%EQHXsVa1FC-;N~?)kDo;6!eBg_>Wmt^Pq#;<73AMynr|l ztXL~D!<;#^pcs$o8SDYa_9Pw}Wa(=dKti)CF$5fPB`3#kf5ov2k}azFfQR5fTlR5i zhAaf)jXCUtWsk@ph_fdFB#}l;e5y&+oD4-!iNO37MklUiUFtpv=NgF^dOPgEUa55q zTNHJeOmKIV^k*2ZLPQ>9S!uE#F~Ifo1KO}31nQFCFeg!8{|aQ%gIGO>h*JL-lmhI$ z!0!w^c+MIWDsM(k_ydAES~xQ38PvUD;yibd+Dg`<030eY_}O8bms5l}0d;|9LPqx% zJbY1229M2|;*2nu~1Wd6KWGx`&I1E{nW(HGLO1}`U;j}^o>X)=Z88li@yFt)jDPyo$ z$X%FiM$J&#l%&7&5G9#I)?{`5>XZ6G11f{dT4HGXY|y*k4Z9Ze?ojqP6D*?HNZc@;wME%r&-5}%`a7c8!CXGpL{=2P$faS zhll3P_veASbVyO{b+)GEMC^q9OlI%l;N*nT(I?c>5)k;7iccuLxOzoN#RGC-7w5gq z+c1$2G10eOYt~&0g9Kb^1kk|X$i?rnh5MWFlZsM6j|Rq0&kZCr{*K-hsNv_)w`P~A z%*gO-%GRf0IJOtU_oNREz2xAj`8GcIdHi>yc@!jHm^Nnz#2Z8$B%%)z1QBEsL?}uY ztOax%FLU=8rg-hz%drL1k3IMe#CiLf8|>MEBhSq;klVq%oEGRE0LffCMzXHAOJ=*T zvN_)1!1GVQH38Y+e2bOk3>F6yX^xHDaUKN!VSg{;mt}Jf_1sYFnnkn1wEt0 zNdPIp)r@(|8@M+DF}!R12D*7$ao|-#J8_IUSlI@GfN^L5h~GDo0~c|ur{3h#FYzwHwnuN87kOWu zj*VuB3E3U*ckrgnZ8L}X8L!}uDDu>tjA%MD#&Qc)C;)N#z2{#UTUg>|oUbslRf)Qz zGY>qM5svq9z#;TZJ&S1#_8VN2wobjXwr|r(MMRsYfk>Ra)DK^bC(9=f%Q%DUNUWas9hBL3@f;}!H;&-H30o2RAK?KQ$b67=%J z%kElR7vMXrw}ZnyVm)uWK8>rj+ltv)$UoA-!E@{UT9Xd<^>WA?z+*POe7ZtG^$j^r z_^7y4jde%9V?vsBYdo_e}Qdnix&D$cT^XA>`R-GNp z{T1tcApJQ1x3W|XOiC4(Ql0ViI(FA(5ZZo((6wQP`882gC9U>n+}h@iJS{-o_lJT9hudVj+bpd zF)g${RAu#IS)Ij}t)AFZnG^|owO=LOKojdy)8y)+>YAsemaxs4DM<4YgP(O&)T<1f zTDlL2r^7*3Z>GZi5J(7z2D@#;2L6a?J@VkTVjPEq0e(!$swnOvu0$J z=qaNN89i}_lo?_)eD$IXUwZ3iB194a{LMjF|f>Lc?;?CPPjzp zOPDC{LtpoLa#)rstWuQ~EDlvQMt!~FsJ~O$_nSudz$KC(wdu7N^lEk*0Bz>l+UKsW zoLV}BEH3W;V7wXPf8x{PqRc%}``gG5RBU?fucQ=;%bs?%qIgT;w(p(nw#(9-<%_4N zeijY4G8^xcYckdyO^TNZrzKab9r1hXG;vk;J+9Rbj+SFKMV-{VKDX&1@|MitjUlA+ zRd!n4=l)hWYT#C#KWlRa+~?n(Ui0;Ic<`BB_O|c3--_Z6j*ZRY;P9>_5f`u+6F`EjQC@*jG z^4sEY*)z)9J}Z+u_;S{UqqqsV)5HlWRM`MGk1{t()>cZ2Wipd&yS?bmNEKAs1snH{ zv&lZc$xyc^uS*`yy0_E1U#H_h7;AurZ<*?2-7jqZ=p2z<50WF7pD(U}t$&DDw^ zsS~n%mTEVK_RGr=%Fo;~k-cW*z%H3Cj+Z9!)-rx=slH_FhW~n>`y?bghU^h`arueZv24>#< z0Dw{N=6Ou(VaayEjAu%P&#r7CD~W|5+u?7qsk>5<-tB-#$Rs8dZ^b9CAX|2 zmj;cLFLi6$%hm56fl?)2wj!6>4C?2YMr(O2S0k5$KsqF+i6h zldRpBU~}3oCSH6La^z!9cfbI0z(CV3Zt%lRr;yZBaiSYSv=MHf@F@WxJ{J4 z32B7$_ZuzNowIy&zreu5&n1^+M42ppkN4fdv)ueE_xr35{of=Gk4WtCJjE01hx#3N za~n=s;=J`8(K>iJ4#&#vW@|r+hkz#}I@YJx`|Gvb=uK1JSJKyV*XY}ig_qBd?v899 z?ic-l*FRfR`GZT3X7v1NO_igHDaN!H%8nckDiRa-80^_Nzh73tEQVsXp5R}pOFFjq zT!cSkeD3}MI$T$YHrxM(DBoBmFS zOp8w^_OIgIiEdT%dN#|BB@P>RNg)xgpFaF!Czwu;26sE#W4vY)Sd6~GM{4x#-^8|7 z3HVsTv2{}Mcy`Jd9nSHul<0?Wxq;>u*t2!O^T>(MVFFc8bzm~<4*=#4PIokHKlX=2(cw@L#cye?TS^TvAr^yrDWJy~nk@pT+B5@fIT zl2Jiyr9k9e@i5-2HCPa5^6GMb8fR^B^t1YW&YNqi^v|-o;+z=P0tVp_=?@~$6?i%g zWTZd+_XaM!3Ee(Sr@|6OP`wEtDx}H2j=!veCt{7J_NOW~TOH=g`?&3>43^c)xmr3* z5F*_&Di&PRUu%A0gt~+c6D(GjR#=Q+KjN{vzoqYzNT*eiQ_w#T3@N|L{!^MVdUQe; z&lgS3ew=siZ z!q1jz-8?dH&Z@T?$Iag)&7ONo-hPaKh_B~Q1>84gUc{$3AX|bvJL|A z?dC_5gW?LfwTi!7aLg$F5wgbm?K!8#lm5-9D%1teCzo`)xSlXK^ska0jn>>*X9R*X zomrv^;Ay3*dgFJMN>^3lx)t+Zw4=sQi4TGc1z)Qh%65Mb<$aZT6$C_>1!(K;Gps5e z`1o?vfF%~(^x7z$w(7BlQ|d)V^fMOpGexz~_o0;cq4`2S>GL5N)F`UREhCS22I5E* zmCme5t?a3>w?R)MpGq~;3b`%igHlx@M2ZVfpnYg=)95|YF}1ODNHV?mN?+s1V|}@l zfc{*WLGc1=*7Vnu78+TR=SZH+NWmf7@nGEgrhqia@|$YGSU2nqLW`EQe2Wc(a{~g{ zd6cLum3DBFhMYd69HoIA78=M!7#gv(rvxjnKZ`*zyJAx$kptEb9G%UOpQ|Meb}Z@* z0Hce>yLOJC)3YS)rzF{_WT1PF4!Lj6Wf>2^G$&-L+;($(G5=9q;vo08o77hS{*%gj zQ%UMt3F^*|4Q4YPEVf(#GI{!ot+?LOOS8P`{Ts9@uN-dq#YwNF7mk`%>hv94p2)?= z#$0N90SGb$eUD7rM*#@Cf{0(I-4E7&04-XEgCHI4F&+M9Ss4$hKy+-_tR~DXp~VcI z+Rs&kT5rEV_jHPgcll%@!RAgGvITpsUgKoby2i{&0o0a`w&$n%I|i9$xZpd6gX=h) zyqjzIyuZ$dRB990+=ih)V{04wTAj+thGmV3m4a6yj(hD#CZ7JnBW)?$@f|JH1siF@8l2Y(Tbt8%jGa-8-5k+Y5mB+KaR@4|r2)({ zgyxT|C2bP!*CP+KEHedn0&!x0;P&MnA9E}HL%3^WU>6X{zb4&VqWV&ADPNOC%6=)f zhd;g;?6E#d=5X(CDO|JFG;YezFTv=$p#8Hp@I*4QPO9I&$ z<6HFa_%e7KXId^VH9L-`VukkjAuG&}-Zkt;adJmeDZY*0LjU#y8I@)Ws5M$!R@75& z>QJ9&tX1~$cbAlOmrN_W9(R}DD?*)zE==K4uQBq0O%Et74gT@uCU5PUQnSK{&c>Y} z$sP6t#~n5UO6p2ps3T{4=}JAr%}B(Zn3Wkh+n`ywaMADDdGei0NY%%`VQznZa-7QL z=QWch1ATpkH?~Lww^dvKKr-))TO8C85Y*8d)B)zoo!PeG+K>LSUl@~ppvh=l^`(3tKb`jc zoXr!-(E#aZ3-8L0UlP*_JIjG%`q6a;(Z20a1-=q<3hd_cm^C;aUbWCVtrsIc$_RVe zj?&+m_;U>bFj9;_DD&F`qe*4IG2NgsU5wRE7K=yAn)890b28MGv8m2o*{zXYnLBGc z+w_8W=1JK^CVp0LV5n;0pTN%yoj(w;?NCU4XEs5FpFlCFTaD#5IEdrcMZO!ST~pl9 z6#H7Ioz&l(dSEz@pS+4srJGm|HrOn-23!1ukZTqT0gtcRDp^wqWKE>n$I|@+vT)C2 zyhS!r{-gVw5X+C6?PRtv4Qn&rio6QjzNg4OlJr20@j0hJ;Jo9F2d(#GdGJH(!nf1W zU)grWW&y8%v<4VWG~kypiIGRHo!j#QNn8O{HH9`$#h)HM2YK89NgW{x_ny$|o0d=t>dtE~M> z6!wMT^b8RMd_#nMC0ukv2Z(zs&tX6Qc>YW;7%o>T8ZHk|j4jhW2%jk5H;0q+3D3mJ z=`Fam@04}5&I3av{X(o4AQ<%Lso>$XhTq@m6(C6J#10h;Os%9W3wE+H;UrLSiq@}> zq6Ck^n&2Yok}GpbP)R0%wuAlQ;EB=kewV(!3@A|nB?A|%T{j+)RqfTWE!bK6RkYB% zTL^18dbjgZ%|iWgdWr)Kg&ifhF=hgI{Q2ZTP0!-!e&URN;^?a4G9cvr3nSIfGm&#M zzvAz&OS+DD2Mu@zrEXHV%E&EzeuV|cf?A2rm4?36<=wRRs*b_#_TIE>ZS0s=C^6__ z!{S;21usMQMl;nvo~oH_FLs|?E_cqx`<4cT&|UM}s6B}gA~;;n=+w!W3r*(RqNE4+ z{CMY=XU~-~3%2mG>$dQg5W9vPYNBb{qpZfD<>}(b#BY7R+dvPQSb7YvvhP3RHh94r zZKcdEvp+MQB7nhzJwSjzKuF>4?88#+if9r7br*-}L8vv7DbcMkHQ15tTc{q~q*~YP z9>ZJ4i=D9i^F0VuM-!#szKTp)ED-Pe30PV4V7@5O?*(z5xrU z>v-DZ1fMj-x!@dDyQ~Gto4g?sf3ax6$d>;ms=sBqSSr5rjf9yOI(@*l zu*Z02mUzVe(}R8S`Shy}Zg=Q(x}| z6Nuh1h1Q|>Of~ezk-AC2?AeFtAxj4!c*P=xT{8%Lfesu83LQ^TqfQy3PEp5CrgcAo z-@;oXF1RO&{H7i5HqH6aj1I#ap6;Im`dWPZ7}+DXUkDY2`5`V%T-WDG9&-T{2p(pq z8iX!tWX*BDU1o&Z*AS__2+7o0-`!7+NU^^QX$b zq!%HkO18`ZEFtOqEhT7wI|1viiyQ}~Q!~g)v?H=D4~f(WxgC3gJ$v0$7v1he=(hOr(=d6@)+D;-3I)Oe746z$HiYQP~XH%dhhXr)b*{l(l zVxw%#qs|uackxP5zS;28{m?B*l=>#E8=EB9gO|XvUK6qhhxHqMNvccAB50!}q;}RB zS9V5!1y($Ku+HrdQy?ADI$vyy4@nt{y;AIph@}7Dzcm*Ss-G01*LG(0oY_B+V`IbB8)T+-s1 zKqkR(e;$ANEllAekWTR2BsPX6uL6^b`G)NBC<5W8>kb7gm)56h-)mY3o+x~WDOHb7 z;@TQsg=XHHi`Pddj&Ylv{G`Tm$<$_}hm8Fb`$KB@mxJBD2>xEPYO7$VnK`fYvAuWt zAXa_3C{AG*u@rzlaTUfWg^vIJ?`t|}`Mr)qr6@`%QKCc^xwwooc5_Oam?X;p>#}fCo^*3hr1^L4$#FIOiwW!Q}n(yeu#*%+EH~y z^$e$iaNr{h`NCqKae#YUAomM`#{}ZU1P*Ew%quy^02iv$pQPBbU(0@iM=UyvEOk{T zXdg}(j0_t@4sC}6&iR;gE)#Pu^f3{e2M=HrrpI}v$6IiUliJr2A`JP)o1U+NzZkSF zmV-{;j)RoOP*SwI$``iHm>5~Y3yx@$vg$*;>W?k>NeiKUmD+Sn1TLuY8_OHk!Xj2_ zfW%OA;L`eh-8uzgaw7sGb>)OanEUhmX12kzoYCz#wpI9{^;dvjFcD)gF=H?md+?`D zK?KCZ(&I%N=@pz4q?03Rsi@PSG_#scyXEbmOL>(K+NVcEv{wPIp3HqHKP$&!Fzeb< zD%!f*nY~`-GrC*8Up&p}lLVa0Xi>I}A!?nfR^F01l{>=QCPnd=WLDY=H?R3(zbvtIV{-R=H zj49okvDTG`cLjjfk;1_x6E4B`|2HubWirV!JSy^k6iIRo1H{yc**EQ~T zD_q=la_@jtv(2p3%$-veyOFu9W%VR|6m3(D&rbF<`d3#9GnNRCSI7__ne8{Xn3pI{ zjOcCD79f9~2-dp`velpz@|mi#x-taV!srSJj$NW~HABx+pxF12LUpZkgX!=^SgR&( zaSB%7wCBNl?(0dPNK2wH>$GjQ=tEqiP4+AL>&$@tIC2BS84iwrd?3n=!1p{SRf}1g zq@^amYzP_PKTeeE*ytZbh!&%OR_8o*M=PUFZ6N0)o6LyXn8LO3*kYE`gf7$jURsNzD9*!Q4RBi>kBYY3iGM> za=lOzLYC_jpa|$Z=dhp8M50#E;*&aBHK7vGN|98oupOSUE%mqmB>QS&>ONSU#L&ei7%1Z@!kK`X8#^DLl|7Slf+lTNB&1 zC&t9i#I}<+wr$(CZQGgH$;8Pd`M3xUkRh1~M5$30UE*lBq~xTJy%)H)jDDi|E>0cSk{`9DlR|CNhZ`N? zLalCO|8t3Vx+Mn_`%vB->Mqaqb%AG-b0Mv&$JJ51^?e5Y(sX`!RsnzlwcKH7cK>3T zKHZwK>zJ~^$v?ga^-G~Rx`<0n+j)y@@*vm^qBwiu)MA=^7u6EKNvrES$ghXUaXb|L z`Y=C}s#EUrOlu?T=bC2sU|tf+15$gwT)l5x3E=OOl~AqgQ)lXd4J0m`xzw^!`LLQoM6q4(^Y0CJ1Wui&p zqE}h?@L;=ns&`&g{C-$D?-=SNk~%bE5t6B~H=)2zJXu@}t1^V-I=z2|Bf?=F16hL~ zf*{{xE6y4rg=sC}Nzp>$8*q$5`1i2@v->f>QKFl>te^qgF`pv?IKGik*-&Ve*JAJ3 z;m!n<2`}0E_iR)&t&DKk#}IuQ@;*?ev-(lIyR)F?*v_ir4rHAU)h*yl?MdVrn_ZDO zYj>b_`uDLu`jz(k({fXugwmhDYMjGF=&zaDpsP!ftE0YPt1OjoyBu{9O7SZ6I_gwO z%p%#CewDPZldW(9&U2BmIEa(qm1-a!In*bCYm?OE0D>En((HrNS5m% zUfn@6i_8a?A&y}y5OsOP#UHNif3Nt-Q~De`Ig5NH*7jl$O4G3n>yE4ctrIpVTL~@D z8V`9FT6(z!y1ouyBwhwR|0DLnLty+TZiE5(pXAV%v4yY) z4)MRC&mIE&|AlE$e-N(zcQMWT5W(sHw(k!S5J3NL5%d_L;s2u6V+7m(i>OWzZvHpl zfKpxE)Y5{0h=qfIko-@+NsC2AL`eI2ihu^_(L0=*1ymQg1v%RcIe7`-1dzx!%ZpRG zl9^IvJ@@S){G3Q+Fy9#hg(jfQw~(9R&vu_xvj1AlV%trk8%y|=faIFZWm59XY2$K% z9qF}^Zqbwp&B&hcPCwI;IJJweB{tyBO@yq|Fk8|VjRkl5H!bYp&r<3BA7rc{0HZO` zKvA$yi^-xDo?MPe5#a>|lAx5IC6q*vzAf81Zaj!}q-A1)?;w#(LZcUj2&t5B@;4zI z5_T|NBDsnr7S)m{>Mr5F1gh=|<}72F%Qt0|Fs>OVEfNYf@T>%Xo3xM?M&s1hf3sGz zoy@4;NGD?ij(u|g9Q_6azbQF!&!Qfn{7EZHYpQdJ(EKWhKrZo#RgNn)iixPg97WD5 zYtdxjhVEfTSh*BcIHeY zOppSMlSk&1dw&$ylD+Kas8*y_`p4wz1C%F;L2tj;Y22TcA#aRKzFhr!4Oe=t454}IBZ|iv%FDk4&L=P)+7Fc(h^W#N>#!GOdW-e1hp2g>ChJ` zYu}e6U41P*UtLjAQL$^^uwTx=ynQjx-_mb_u6__k$MGOs#^bgX%gQpzt6%S9)vXNe_$4d={c6K6ltuSPWCC0wXf z>-LK)5+UiVOzFGrA9GUxz2{8zCn(B;`JC6F1*xe=6}^rtfy}!F+0ETMML;#1oz$hM;7`SaN?1&xvB~w$CltsXZD_ zL`rt%e_>m}mPAP{lJ_F*f9_09D1>93fg}sEz*5M-7dI|1OQT8w@gGWMkQlBbs~EA^ z(#qBTcbxKrKFZ+upxiL^ar&73Fb$@T(Op(QP|Eq}m0J>7Cg$=Z(UC%;OCbk)6XTC- zz;}r};VDkGi+N%W{JAH;9zy(}Q;?(f7*Xhcohel0PrnqS{X~xA81L3krC%ZmMCUB& z5to)w7v+~R=Xdl4?7ajs-uvPtffr^ogZR-klwQif^$=!Uv9~Hx$Z|aG7+yT$z{p}K z=eT*{8)dLR*C?&T|E2Kzv5BXcE@V57rfUm45fp@X0N zu3@{^78a=INrk$iJ54Z1BP%k3Y3C@fD(eo6hiQV=(JCOtH9%V9hQ=a0eLy(EvoO`&W@$7_TvLe((``fiH%9PY9&u`Vg0ZuUBpf8@we_JYM}ncME3IEPtD|1TEqb_MwOz3pM z80q(=KcNAB=d$oiZ@i5gPWg~F+)nf0K>=Cyx$|pSCai#@VMLi_{*QrX$1wqD^EeC^ zfuBOMAGVXYK|qomcPI75)^%@s-fNz2PU=Z!0cRCvEd4$pW(*<17w9h%t#{(g;=3L` z^sp2Q7{<$~cN{jF^TQ5~B@MF|n>YlFIE`X?5)D zH&|Eu+I)kgC82z%(~B?d`ge$Nl6~BVq&lSwIMoP%EB>u1@!jcY3q9*{|2E&{n3e+N zBV^=-4M|Ek>=qAyT4!-LA{1oY`9g=aiC*KT4@`@))u&%EQEQ!wES)Tk`GQ zzh~1YUMN-G*lEV=dQ>9m*>_3y}3m9kodoq6DAc+TeZ4(hZ47+a)4u+wpg9xwh!|!| zSFSScX%R{v2k>tS@lnV51axqc5z5S(+`>->k0SQ${=HJFwj$_03b;#|elP0kx;&Tx z&(Kp8^g@nZ;_94`?Uvt=&sO6X7{xTImE!u4s7&X``Fyh(+riFWQX)jq@Jty3_MOKY zbZ}S)rVzRvEe57IcWs-WC`NfOs(qvXGKgw{4pZ--E<0Ql^qt&0=*`u6FRD0;G=0lm z@iyi!Pp`@dME(8PW;QVnAKzE9hj#p9g=V zKPw>kCiOG4V{%i>b%_7%X{311i+}`Fm4&JmV!5u#WT~<#l5YuUBo-_K`4GWN3=LE@ zVzdHExaAgJ3Xq#KbZVY|m)g$U2vjocCYMLJo1|>*wJZCFw`-F(ska0{Wmy&pju!hs z|Hs<-O3T)HNgC}d*MJ3vuz@tzvAuJX%rq9IdtWaWqIN|yvcKJ)naIJKncUMSvRojWN_o*2QRiax7CqSMu;b%ICNi zxfZWtB6Y_wDk-e=nMA8Q*)S&Csf@G>-)&eG39ZPx@KiV1$g?aVLNv1zU!g@MOe3YiP)32?`)p zI=W#=&nVE6?)a`(T%7>JbKp3Q_ir=K(VlmWhNj(3!+BeM>-f3LoId?}yE(5FJ!59H zx@`$g@}ta&6f@6DnH7tp%e+fMM!)T{H_w!loiWRD=GPQ3s7_~HZK_tM=4y}X;hx1H z1Z`$-KfbLw85CitaJq_|yqj78QPnXeH(fbv_+SXuMa_xzK+X>W*1zvJevX*`S_9IFv>t!}qLywFz2E%|5NEuyUKmKTLsAj=CU9kZk2H0jB5!rgDVegexKQ z7YWktq8A%r6d)TmrLB2}ZvSIMyUStZD-wVckLc--J0wuP86v9(?Fu*{&2w}v{Z)`o z*Udg(+Q66t8Qm(wnIjuQfhr1{#X(I=YD}jH=Qe~ozLt%m*+1Cee=s7KkY%V`EZ+a5 z0OH-s7_%!}-ta@M#WE+^XNJ(O4+^Q})rW({0#u;CXl! z0c8(BK*ls~RQzW^|7!SyAEeeJU%Zog;=Uz^L{=VxF)@vnA;K+=CsJgxM4uhY_wp8o5EPe|@`=u{nS_Li&C)w%+PC(|(wt2ip+D*RS98PVp z6+P-GQNNR;i}Aj&9;sZA&vQ#F1$O{&JYUkkO|vs+V~ijAMHL8(T#NFV*skvF;Pv=g z1{_-xyhyxE$H#UfSjrS8^ujVG(=vf%Qd}8>w@fSkuB^+Y&IOy9Fyzxn^tjzr+}H<( z4A(s`d(M0FogIvyLYj1fYdt@RdxF;TP`VY5=|k~-DN1wE^a*~d{fJt!Q4*yeLGa`QAyr{n0fSMwlW99nbrW8pxN{IW=%sEcD2GYHv{M z20vZd@w@vHQ7C(8#3NeN9RJajyA~9Xbi(v6la!uGHVA?PFJC`BDS$l?`>@T9q``OG z#4HABhI9H9lI-=4#?TK?m3OPXQF<8*`vrAXM)p$)y~69Qf3iX;6bi><5MEJ12BRnr zb8VY(I$>%aUMKp;QbYvz5v%=YdiI-DS{K-A8KBE+3^N|#+6MK zaE@MLShITYdr{R%VIG=$M42Vcg$PU$sKuqYP`B!pYjY!E%e(`TLk(^(x3|jd1%p6O z2xwyfrsNYUUX5$zc-o@45_C`N4}ICa+%?p!)Yv38(f#dk zVLl$zx~N4Z|4CPG!dlnL@iirXKOT6%2ycUz-?9TzW6#n5((#QK-A4-yqP#wA5v;<< zzpAp1HnfYhkJ4t2@Ddyc@171J6L!!(q4PYb_WO0e$}qH)cUeH@8!;`-ACdpu3L`@*v2FR~)u7!+EoLGt@Kr@gd>8adrtyR#sxsme3x2+S;jP7y{4D z4JV^!#;)PHF?A0)w*=1A>ZW6*w{+3gA;70KftZP z_u9Qie3MI9Fa|(vw^&l9cHv>u6GzB$2EvtCy&9#XLC=>`=ZNi5Yg)b^{KvPKjw@_^ zsrtHFg1$Um(Y~_j`E)~cwsHN7@zuBqh_w2IMqh4p+XG6vEB*>*qWg+8+2x41}cK8DS- znQ!`$70|A7Lc#9xy6qE*s*dlpkVpNH{(!I$LyQrJXb-gtd%VbM0cfi9*E7*@nQ)e( z++P<5_5We{NVft?@XA?!QHUqEz-w8u=v-%*(Wf~Hr1Dd1=T3FRVMY$Id#z_RWF~(( zl#-ow_yaq_eE0ifCA*@E$*CLR>T^~-4}PboHy(Z^?u&}lQv{^dW zv6Dqjdl|yYou(!4!3LjMbgg~MBQYIPH%TjBvj@9KHLHBuGibKXW!{y>oC1vUVWy3B z23c%dtE_T9(=Luah_w31zon45n-nIVG zi7ZAN`>tpHJJ{5qAQH(Qq`V~c&{P(i#oGr zx@z#bM90wPlJ`=ntenugW+RQt7~s3?kf^_+g~>9TatjwskfZ}e1kn&jw#g|;Kvq}j9=!z@hx#i=5bWsEV|kG^d)aF5fMWQw=h zS-A(j%DBnB$;~Y@K#Bgq=R)|0`SOF|Xg6pi1ikaJe8EH~W+3igXKRtEB3I`-A7$zd zSs}w$JVLG1e1t7VXt#IdUe)66pUX64q9X2J&h?fSewd9o6 zT-k5K{TbJ8Cu(zGS~7{#gPk?BCzP_e3Ehqeyi2GVGCZ7p%kB`2N+no%Gl{7!UESC( zw2z4^BUbydF^Z(;eR3~u@_QEB?Mi|kE_^Fu2xX$Xzu^bhomRbJ)=B{3F09#yGeAi+ z5`g{+|5E!Ctv^0@0mRnFdj!`@x^}PrnV{FMYV*p)ZOZRGf;*3t1oo9se9mS-wh>y) z1ma6?Y@H0(VSe=W3f;lM92extuzY9{z3H~E;j<>(JZ3g6D60;-%|2Qo>f9>|H*7}F z-C#1iyqa27QFF`u3gmSM(i&lI7jVzox5xhX8)423md<8pzon2gO#^!=fP)|h?E9MU zv0RZIgHh!bt9hFcXY1hJl=ypaB4T74{U6Uow$*`g_7zJ~oxs*XOBx+Xs^uD7Fk}=N zJlT27Rq_W#u-0!=so6#&g4Rd;LpSdSSN9LEGA`BBN9d!+{una2gyn3xIAG>Ht0>iT zfjCzzz6G$u8V?!!%+>U^TLzg;B@AWwwAEokv-PU?Tk2t;|Emvp2rx?xWyw1Z>9H%( zde3#@h;*+lJvF9^uQ`A60Qt_iM3G?xJDhaEDE}&cN?-Q!R4#5CoyGrl$zO2yf^UyB z;p^*vW9|n*5e|N0zWI98lAHcR&$EK z`o)yKOzQL-z;aIMJ051dZg?>C7NrFk>_I-6>Z<$|d;Zc$v#==U0wvri1wSezPxk+L zHj=p9x*V&|Z$Wmb31MTh;jKI>KmQ~GDDr+GFU17DVif=CX8SmdI{fbykg2&gc5(z% z?GxdfOoU|*1uFd%cACKSAJ-*$KNz47-H%Ik`-R>iak~a(OLHYdV0A{Ly?NR4BE8Xs z6om^KjX#pCKstjp4X6$0gVaMLvEWc#As)GqGqo!fKo9vJCv1?Kvw6Ic3kz4;{8V%> z7%p&u>N>R{di_9k?l$B+G&-&;Lk`Q(&($7tTq(lW%#SQXN)z>)ns=xRXAj*+bglp& zoW7s=0@7fsfbhO!unQ&#^RTrkc><;AJ)-3f^mV}3>)J!~;LAU_qto@B`<{8$;q`_ z)=-;a7qC+s4$WGhd~vbUb#-{jyEp_#gWZ}`;WJjGYhJais_`ofdR)LGm-Cpe){6Hu zHtZI%kGy$6l(L3Iw?{q|OC+9nZ3*?8S9yNmxcJ_Wt7(WAO;d04q)_u^o`@rb!z z{&{lZWA02VXpbiDo6(CYvI-APcjBj}^tK%RoeK#wuox`xW zgO8H3AAl5Ne6p-(XNHVpOjn1U3pVDVInLViMiVq<( z`ET;}?hpW?1@?+#-FBb588K)Z$gtl3svQP;L{93QaLpZWlP?qWFTqB$f*qdj_{xc8 zX%MWG3X&{Iqv|9Gg4@3p1ow#-vmqa@CBzm|oR&H98r4qvnB4Ey6wBOh@}H)C6T6a* z@Rt2OGg`h%y59pmbfAK4n5)yP`cm8l4KNWlprld`-fhzcc&;p&Z|j@V{dRVV9m>u{ z3Nx+3E?XVh5Aw9}Q^<;t%RZgm#VhgE%ks&U`$%iIm^e(S(4MU1O2DP>>E-8~qe^Mz z$XPxQ6$ME#i0Eyl@=MLY>q%O;Lx>!~hCHIM-z1{dE&mTETcA;agkhQzs!2`$2srKq zwDmdKu1b>8THvP2(Gig{i)!|jU=M97Exxh8_m@(XVV$=ghAJR{ApJC%@$~>=;mi7) zstaa7pa>%pGyor&-ayV7J@4)&Ct~59en;a)-N-U)vCGXs!PUDi(fCy~ogryo z6D}W=^!JhxS_=)M{}pR^5082)Y1`?>6%JLQ!y&2x$74A7Hfe66`08bYnE31;w{*L{ zKwDQEDyqu%vLFU!x9G)Q0e>Q)DOlXk(hdr1_I{taC!QgLzQo5D$c1up;O4XIL9Jt! zE9dWWJd~?MCe<@9Ax2R!nMa8eivo4@#c2E@qd?RkeK$+Q`FO2Z(hUTQXa>Q4QW$OE z_`g0uHtu0!l>;b>-RC>^hLtI%ZVPF~pwYC-x?y{a7&R$URJ$H8v&YQ!e-dfWz6%fG zp=tOZ9Vxt7BT5b)9$V|~fa926`#z)&^ZqECl1vX%to|LO6IM=qv^qys*o2OMgb-QkcO-)0=f2j0$Vf2y z?LsH!`Z6l45SB3X!~=cC0`5qaSe90v1%%SluLKfpht8L}Snm)w(i_&oE|{8e zC1^Y_gvD@#9q7)RQx3-vpvPgGzj`zPYCUD^5YAs1x;ckbps=)ZT~ znada-D&Z%`P8oMYtL?s?u0>xVhkuE3eLE(`^EK*KJ99UFw_!bP?am=He66BSN3EMR_D%Vd~N=QL&}%1V~;z3=aj4ig9IG7*kuG7~Nfjz%Zx zA#SmsAnXq}VKEFt@qOi%{%Fa3ORoJE{V${$+?Zo5s46cTxoCly2^#C|4TAxu+1Bg| zsHR^q^!vli<{t}|Fw|i}+VH)pPR~lWp8q~(?Na2tl;zhr?j}oy+myQD0o*mXdvnMy z^Aa=FIg}_CU5bpT{IHw;gg%>2W6;Txoe{PQd++qHObTO+d6tut8>QOv<=kh4Xb2^X zzzSdvfDey1q5RW-8BZfQdn!vrL#TTU$Pf*lY7w-fVuL<;HuHc@mxsR#BA-Z+Bb_FC zy%!HUF4`G z3wDXm_AzAMWsCP{*?N#llWr3b!DzvgxM)|&3ij18t#r~hljbMteroA2Zg)}f8idOh zn)BbqIwdSMP6Ou3wl1vKF=ex7W?npaxmt`kKYYwqh6NELjm;uDm(S0UWNF=i5FYKJ zDVxn7+AMP3ZFXo!kL5xD?;=gb5~di{n@_+e4GR8rIfZKEENJ@$QJ?5XBHR*!{4r4y zU$SvA?vpTe~u4iFpkSH=O)n{QRYP*#C&U#NwZ8l)<0n!_DLO(Ir=^vbktgx-s>4_b{xkcS--guexIHH0|!sc<|{j~!(4xdI5{9(DAB-bzI zDJ>8!<+IxRewO-A2sx8P9aD}y10*9S?2>{E&G|ZZ6SoPPth0rVBm8o1EM{3fva*-B>5UjB}CHsO-%my_i#){lOB~O%cc{ylh{R48~bVE8Wl>2+=1Nm4iYTfQPyT||N#Uv3>x1P{_DTnaCVYQ_pvfD;75Vn+O7&9)e zW8qi6CF?fX9+DK_2>kmArG1=#f!;rHgD-|YZ0%f=tUqL$hPsNhp(FR;PF@sU>?sEj zB}FJQ#mc(T2C}+javyZPI#a225rA!UbvoJEGmiFrk=VX@J0v6<(DgMekn=d!CJh%P zMW`hb+G9PP2oDtHyutb-F5?ODED7y_ED3@wQ!!l~u`c?thD|WtrwV*jkWu!ieF{qZ za+>U|1yvmE?GIEkEg~q?#pqJA4zvOu5zRAIPB-;&Mfdy0{GEi)GmbE^-x95R3lNr} z|2Q^-3GCUpPD)wl;>2cSU4#mZ%InIb4m86#f_8{3SFaknJOtM?j@Q9{Ajz)~#K&}) zagZ=8ftfe#(VV@(ENPkV2GkA|azn&{d{W55Nv&YI3~?Z`-!8qBvNPMNS+fD8<7(Fw z&=FM^S0vv#U~SP2v(L4NyLuke4@C0`|Fl)IbnU%c_UN8z7Zj@KsFg|{E4II`2Ze7; z#WD|+s$fyrd})o~-{c5o|6RkKK^0@w?Wq%zOtFY4IgTGiUN%d7H(ArMf zy9E7oB~nRKWYx=|sV09JsK1$L&?t5%eG+qOfl>&>jywFv336XuHaYY>NdQL)qRRU^ z3&UbHg;WV{t7}T=Y$n7ynQe@z2`*-xDDfxu|28>S)VAz4g;9J@=}KcUThw5%)zoyv ze~A(pW7?STDOa&;1Gr70YSC*uEi_gsz-@IwFUYy-hf?nP4x96dli9ZaWF5~TKZUh{ z|HsHvG%Rjb+R>zo@X{qVo{#M^0yt5aO#t^84nQfk)yXMk!h2_j6yK{Ujn)`W_G-uK zAbF#lZRhix4eHcEq)cMLxv*cP?r%|ll+S~62R%=?_54c{i23sdG3o<)o){?Sn_xDP zTL8C=(+;Iv>L~;1A94o<)~o$?PmpOH{%R}&sVi))uvWtzMRum2?FPr6INY-Cjv$l} zs2LP-?^1V(ykE(!+3inXVS@ToyJ;tZV+kA@&q7KsxO!T9-aJwt9NQ>>Ahlt8ERVBywUe@7F1tadh*W95mI@YXcgWAa3kgB$^U|9wo#7<=R3mL95Yc< z8;$bo(b7;u4g{7u%}IsU1Ss8MZnD9`np?~sHeDy!&2vSW-fZXn#Di}B;~(}WM&@=1 zE~7Z&U6=Na`SY&QnC+ezHK!mVZotS|4qGXb1xhO)jUR;(W~aXSSB-9Cy_2{y%A+3B zbZk;B@OhS(Kzk~s)c|El`HghTCbnqVXPKc+3g_d2k-{hQk6R1qsS$}Tqj6^tu4T|kC2KX4i!joPNZ5}qP;0`VP&ZSzHPo?z1|8VXcw_) zAxkqLrS`{XN!Zpu`SjD{D@c{jr|enFv$S9xiS{#pVf=P0#^C>Nkc|jCrM+o@2m+%1 zpFWoQf3&e}|7m0Y!yOx{c@Xd~)f-0MpT(`F_2XJt+e@earmacn#m9_K=YujsK2oJf znIKu{E>u+qAe(RNyF+JeUdO((!yUrL%smA{eR5>NYvri^)7+jtRtzSOP1J8^yt_+jib>{ty7tf9+W{!<>%IbIV!?#=4`Pho=i~?sB7qGsPat4WgF3#2V}b z!H|DYoJj*xk5mGRD^0zT=OKOziUb?Nm^C1T_kg(`iDc#)+;Q2uR*OC>u=vli58!(L zbu#1<>e(=I3Unjmy=--JoRY>Mg-nzF{xlEe?dDor+SoXL+E^Jme>+BcSmVccJ=R$a z)9WK8M@d*>$HZ}9qP{|hGNFq;$+|;jlx-jRZspXhFDHlE9ujJ|`OC4LN~u5Y!*@n+ zPW8+7cFzj|i}+^PaGP{#`#0y}J86;jft+)1UlNFBCqS1=wja*Cd&I+S{i*x=Q{~HNIF44!_wz!~4=OsWUEl)DOn4vq1}b11rOtUgM?A8gAXlk>-|q9^ z-wuXdajG?FfZ!1m>8%Cy++WzJLXs=x9&COl_^zTPt{x{una*}M;MbmkRn=&&5$H$z zd_1U>F7O~mHbMIzz^25z{A?9&Qm7`sx2jdD)*=Y)M!GucgH^#&6ALy35lr@&5ZlXR zO)RE=;~lli0O7KTkyw(b8dppxMQa2Te-|rbvi%7pyeRKd6vMHF9VRcmazUnT5~eqf zSotT!Ah?}Cey1FYqLM(V<>(X&F%yI&v9*pKHeic$ts8{JqNW*|6OdCQSEeW-$2H@1iZf?=e>}7x*rM0v#=h?X`YTEt-K!TLqXdUi`2k9;d8x*ZjW5;D$oQqnK3ENoqPfG?NgWX@KfsEH_Jmv>I>qVmT02ScvQXbqp)i z0~%3?>%xC|K9-g@%6Xe8F7rx-FEscN%29%{i%F2&aERx5A;g(1*j7AeN!5AtQPsJ5 zj<=UAwM#5X$S;OSHTas7*ce5~Q;Fwmz~}Kej@s0}t65<+Ur}ac^Z!8!J~kkB5(X;fZzIGHaDa z#0b=fJLS-j_-^f6zX`9~m< zu@q+)yChq=1n84nAa!+imI(6YMdXe`4yTlwW3ePF=|zw%{boiG_#WVYH9i?gcny9- zVq4W*zziJ3MiLfKQdBM0dtpZQ*^1KwN9(&AO;O!IJI;Q8V zEhMxLv)G*cwRFp|rw@$4Ln5b2%5dA0Jwpf84|V~ra#p4^!Q1d)?%szrFN`pi()zxi zb>a9vVyWNUaZn2kafmkJ*}SULnjV8nVEc9_O8#uu?)}YdHj5D2{dFtL-OS+U+X}mC zw)Y(ofw#o0W7YTobHd8L36$1oA*|^q+4uROi<_^X>l;sb##~15+{4X5oqr_Gwf4!6 zi$Bp?b=yhwsTVP!wK)3+NHGleGeTjtOgo}oF!PG03D(p@1={_rjSKm22|l2hy?(=? z;MVH8wYXezy1SiWy=ew`h!ni&Sc5lDy)jtsmzCCiA8A%kg=lm>A0g$-lgiZr^95nZ zb>qHBq%*e!0yrIx;=~k!yyf`Iw0nyW&S|}Ph*Y3tX(xDyOhBKNpI3U=SdmFer_9_l znZdzG8@#c7_aSY36yBGf%O5o7q{6pTV=py_K8G%h@%^v=tI$f+W$m}PQF<>m5MWRg zHu*1(D22lcFCpPf8sM>adT>Z_B3dJ~i%Aw^gX})G+(QeAQc{Ye-VGDjj-+O%x!96J z0=MzZ-QfUQTh98W*`P=L6P6tHi*-GNW7Hr|k{F9Say*QUBHp0-ONkv$}C)U#tNV2`$Y zS>b1yFmL=_9A}8Hi-(8rd`DqRE0lod4Q`>oABZ!IJe?T0v1gd z7#bJlgNvda-K!~MQKnH|R4ibl#&X=B@IPcn-d1^uB`t7V%$2$4pR__jJ1j++|Ngqf z0BHn9SD=v^sr{uqgNPLWDq_ZN95o;?I{!kfl_`|^59?qVu{6t%7LTtiNu0@RPnWS| zX1HmQm$-lR4-Oa9D(pTQ%FyEllLXr$xPgNj$pj|SWIB4z4Ce}+_e#fgvBO{5SLp{+ zw31K)=~DQ>C=r940eI7jvt}!v=s_oTLMj!|`xCz|TZNQ-gLso?@;vp8aIdIWUKGM| zf;p_t@u@9+DeCy|-0{wz+Yvp^vKXoBgLhC5rc)eDqKN_M>UPOV1F7#Q->8tHmUqEFen4e;smi%yb}>G4hW)eSlKI-Iz28>t=Sw$LU!;JX}M#lSWo zLyUSYJQ;c}vRbdZ&9Dn-hwlk8PIQ-oz_PLxb5i&E3IIkgeiHF&~Dhu>WLhJY<41E%*2S?Lv?7Q%22u|7)Mto*@_a;*GhdENW8R z7eB{GN`N#Jp3b~lHKBs>XNCDAKN2BuBtg_?zX>0CG@f31pDjr#m4<&mb$@;x$6!a0 zCrGAAx&4eAhvx~X%28d<2 zf&Uh}!kuON@|_)wMb=3H0ysF`s`XmbW8X6F254zH<9DF?o!0d)R>wzk zB)hfIBKJ;eXSAv{h^J6ntD5rshzCzZM-G7XFBnhE*vqveaK1}DJQK+V?Zp4&cn3S# zU^?Pf{p*49aQG-9Z#6eQL#{54Xqs)sTEH)pPNq6}&VBM*l;?ahcn}>M^~Wz%nXhP1 zaw7k*2`zq;9AJ|z-iflbAA=@Qh9&9;RuA(KK*6GsNeK)4mrB4$yfIk0MJwM3T%{sl z;)^UQ3o@m!Q6W~lI26b4c|qpHbShfM$^>52a0C$*wJ$W zV-JiqyZ(R+Ee;{Cfl6~16~D7!UxvIIY^&lH5zAR~ANUHGIO?t63Z{ra6>cdVf@P%O zHW!O0QGaCdicEIg-b}ZqJXacHJ6Ut1%!Hd66eY|YuK&+@V+SsjHUd+dB~mSO9?QwcR^6FXI7QA3`I_&dQATwb_vD!rwrcgl+`sJFJsbD zy6Q~$J`ntq#-wIpBu`bC{58eo2PJM;kEi^F@A@IH(^Cc|8|`mhg@BL>N>s5I;`&DO zRlGYCCtiu0lfxeq25D2JIoUM&nL}J`BgN_^9sgG3DGQ`qCaHGl6at-Wa^bpe>sRXC zRV$77%I^91fKl@X44+94Sjig4ozG=~Yxkk4B_QfXGDKj&_N5cp?bOnn6MDZ2~}PJLg!(bg$w5&jtdve;>edrKuLMP!?T?2w~a14X;!C@LJ1 z{F8OEJpxwk@)v`r`8jXJ`wDazEEs#Edk1xDyiBleJZQHhj;(YO_X^84$7+0l_LA_yNAKAYXoo4cN&lWM!g|6Ycy1xGffNRt0tkb2VF#8N?Y@7V(>!KUs7Os7J2gs_b4V=sQr;mI{Fquh+jdAK- zajUjWZ}nbE*FKUTj9Y>k@>ndbDgfg?XAsyf*!uklO_i0XoHOnWQpdHyV<^zE88ya$%Ir=z3ciZ<|- zJq5WCbc<`A9| zEtTG&wM;IndQ(@RGeyDE%#pY5(0WOwvnyU2Q7<6g5oeK(7W%{1d;)&*5LGj0`t+e* z6T*vV+UaNRH=-w`3QmI&*wmSt$5Was2()DZ{HF>ivg#KXmdh#4V}V)1yKfQd>V%V8 z3a&hB=!C0$Stz)@8(CcO43J37BriDrc4?P!la0t`3;GEOR;hxKJ3 zHeH9;b?%p3|4C9k4zN;b!S^c+zT#XyX(pjNOcz@F#&%%m$u$ZP2Z$i{BdxNjzO!r< z4lKZe9-!LjclxIect-HNfy9Sn&|B}Q@2vH7iFyd!HqHtgI@E47i>IYY$aZOg316G; zd*BkJM#}<&;0O@uje7V|e-FnJEVE-_aPSF-32jO9v@kQdfi3#o8BG9;Rj?D*$D3I+ zlL7c7zrs2d-UvHV#ye1k;OD#S} zvgi`YuFG?78+2@@wZ}IQSs0Ff7$y2kTp9L{fm&b=E7>lAYJVE}vMa%F*QInXlB4YF zyKp9LBc=@jSZn_vn$zu3-nc1{u0XJK%oT#!z!H`;obMB$o6GyN1IFgD+nR}LsydK$ zjrq&ipuJ}M-&H^PVjld@Vkl(^Blodpom1;pw~iJyTd5Cp4rrazPT~}|QmZ$5LRq{9 zfq~xPckb zuh}F4Snt^8~s<^HX>G6Ci;2tiI1JJT+#xM@KjQHYR(L2Nh&(htr!J`n)M!CL2FC-Q3|$GvrL< zL%Q2J0QT`yvo^jU5bQSAy@+{dbJhE}h9n*_fU=5!LhD45Zgh@l2=;MQF);9NmC_aF zn;o!{pMU`DnKU?2BSsAQPmM9};uwa)c5@U$#W?K>?A zASGj)?ni~Dj3oSrsuY}%9KYp>kMVI#pM!7*o<6bH(JW8p@r}#;;G3_r%wkMjsKye^ zORnQKg#(p~)kT3c zd78U^+iIo*qAYd3P5kkkK7*W>9`Ac}!xnDJ$=BBm4SiadyP2;o;A7m_s|kq^-&U0me0ptu% zPC{Dl8}t83@;~HVH@W_&;3MHEPZ}+BsiU6ZaZcS(r@mX0^|Ru`P#i?FLE8f%2lR|wQjykhB7s&kbqLQhk@ z_ZCZzky{3Ta=zukxlB~Ab4xmvV5U*kVA7F;=EhV;jq`EQ2v^ShQ-b3y)kn{WoBxd( z0Qn^1NL91hfY0UwsLm1- z?72O+i5l8T$ao`M7iO11To6Bk6D9<(N}(LpG|I)c*rJTGpTC46OHlYslcs`j(QGjf zVZH_k{%9)m{&r-MV)b&GdlQ2plOY_EauDAOOj(Tq?$yx&A7w&sDa|P7(1xL)$|-aq zYCSWOHSk^&B%)UwA%>8JlVp}#PwHQ$CYQl@M6qGAX^4hFI9fn6UH~F>58Xch+90== ztOe1waSB;_n%nj|e~!DDn_bjgCkC%mAEXu1X~<*yx`cVSmuVwtAg~^f#oG0F0Y+|3n$~imgHEdCJrNwu#k}IL(JOCB|T2Nl}z`nw2NrG>=`{Y;l4j0EPQT9%s`=OlsjVdi@*9c z1|d_~>P8qJ@{ck(2s_2LNr7T$!qoUzCb)9gcmrW)a8~{^VY)nP4`t3&e++w3LDi{k z!5asFL?^x4k70_t+oykt45NOZ5kWah!HkJTtk zYf5p&IuiL3c5JnnHOC5hxMe(WR+6_trFR?QtVn6W7176uFZx*SN=x@2_t#?3mO-w5RGfoQ9)A7|zhTHq|L>#Bc6iCR{u>F>A9+$C>kk`SF7=md*fyJv0`@1hiJU zns&qovHDU2Wc&Q&QRG3RIe@YdLQ0)BG-Nclx{9F?x(t`hw!_$TOPE{WDaJ@2(cTEi zqGOcU!8t6(zgzJln(Fnm`(-fO^yrZN&z_MGVs7M>Rn+{aW`#nJz*$Rv<-)vo5jJ9+ zJw0!D6IG)xht(VbS!-eKBjp}A;m?GsyE*eDARpx66-;HVgn1y3wxsQOuC*LT*AJ3DqcaCy0?#oi)cTy+xLlQ-7Eiwxz~uPOJLR zpN8AXD*ASi-AQO|Wq?9X-tysm;)3#u6G;>{{II`?*HjLD730@rmusM{rN$8QIhUL8 z5W#48_FI1Y&mmHb_bapLh%}Szgxn#i+!gS}Mx*(LTmX(U==rzn8S%2o%hWv}ecFE@ zXRu{}6JBgs8OPMGDj`}#)@doJnUH^n`#cNDf8gG8nNh7)PRs#4Ncd^g^9?Mc2yH`|IO;hsLS{{dYe`jgblrJ1+3i2dcG=nYy0E1) zC=wj>%y}0r>DKhOz0qNIiTeU;bnRhi_4W?ub?+(pw?b!s*sY~ceMdoWm*txZ79<{W zUpv_MZ4mTr9jnQ#>lSlPR4$1kI;C91?7OsM__3W3!=yS4vOb`>z3rtwtGf{W+II_D zc|9B!-V|1 zVp2Bj(FyD)|I+(E@A&u|_|H?}o~oDt&dFnX()vu6${BfnpSz$dpmjEl4&9W>ZQ%Gg z@q2C7oT_A-dAOBk6u8VTesi3(wAfvo>?UzQBXbzDbBGtDZ$5d!w{W=4zoq+n0cWL< z6>HRl`?V8YgprlY%fF^)ohDDup=^%?!QH9fK-Py9H?*`>o@A{G;}Bx}JIO`S+vm&p z`!PFxipgd1C2YT1BTZAv4Eoa7x@J#D!Q@h`0X`$Eq?_jH2T+wJ&%|Ez+;VD9%k8b& zkooJN^fwl6wrwi~DTvFY1D4pzgebTuh|~h)sw7j4c^RF2DPtGb#*rKwC-uMJjXdW4 z)%m1THot0S#o?!KRueCh*Q1prdP1ByPlwNIauQVYshLKaOXXYpsTqdVrxHC2e`<(>&{&E!_+2N=86;&d z%GnN^H2%CH(-W2G+;+{zYQ}Gr4mkDRKPp*s^`H(_tP4qlIg`vI%}LgfrB%yLIC3)8 zz+f*rUU$(G^Lw8Lf9j8PBO*05(W3Kyo%5>qURs_HV*)@?iAg4waSFSRxDaIc-t~TG zEDnlTNTunFzy$HWFo3_f1e?JTw@Na484nHpsfEp4MiQ7!7t>55thdgkPr(&OU=zjh z6L{TUJvt2c9DjWl&dd4oBa*O(KhL}eV-P%g_;|Dxkj_13uLkxJy-%+gM zUB?lWLV&3$6759%>>sIfg?$)&4?g5inEViBjA<#GZUafqY#}wKGb_3;E=z9)@5|ne zyvX+9ieUO>Yn8;BT9^^BfF|01IT+7*sOP%iC2OjBtRz&4S}0~PRe((-y7}6Or7NoG*gaV1#Ie+sS=_qi zA$db=**s5dTpMd;b%y^hute0!U}cX^**_gl_hcKPE8Y+@1nOCco4Doceh$lQ4{_Io zVf*Dnt9A-YQn=jE7IV|KixvXl4b-24d!7=!gw{E(H>NMGm-&~m+Qi&dLU)^WjzmTZ z34lqyNH}}x}3YY8-DtU z$zSbn=AuocO2aOF*HWL;dkP-6UU}dDjmcA@;;LFP=_5?z7c>3qK9e>4jgGypd9VUZ&W|1E>Zaif$b~*j9r|z^ry#;c;zR~E6 z7GY}uL4zR-vU$EW|BUE2FeQc&YAoMtlf~$WZ=zn9xcck&-Wdkv!GGXbz8{+Zc_ZfH z)TrmNwO#&1WUBVQOTvmZN6Lwe(*5n~fae`%$k>NDWb3<-|5Fq2SnfH7;0m=$Khesx zdE?}g9549DL^m3sZl%ht6bX)nFos|{bfL)K$-21^$wf;bDddvYfwic+O6tMt38nU5 zXL9LS?Ou7xRGDa{m3QalUUwFcsvNMo{8ApauT=a2zaw?_gaoSU99_0*B2FlhMPB0= z+WsCsU?b}zi_)7o>Mo#WIa4$xjxkCKI@mMpj@u;-~n`l<8)@O2oXJi=|B|$)fg?iji0~iOaj) zNr$$@lH2@-{D~1k)UmjbMd}BRXY0_Q*#3%iR(FJ&9N@CTv7j$hXSxmT#Xo;7D;d2j z*Qzpl{n(7WP15=P%XD-SZEV+CUV$_Jw4Jb2RP33X3pOk&zFIRk2Nc-bFG(~IcR2l9 z`}#wl6Bp*B-N9yyQAs?8&qYBSj@AGoKj>GF-*^Pv@eGp@&(|>9<}6QCx?RD-pLV8wZ9>ZNH&*)o5$Y@_zGlFAi$`eEWEvyOO1n z%}v}rEU|kW$_=?#YQwYfR9rdDAkpzw9mCfc?!DIfbdJSK(FdH|($7_%b$=nD85+*Z zm#_Vaj;4SRSjLqx~&`cAxBn~z$eW>DY{0?&|Tl^xMwi+h4!7+^o(uqOfDp4 z@)XaVwM-$6`Vh`w@WJld9-TQqGcOo7L{d3G`^PtJyX|+EsMW-i&m7OHbPK@+_>OWY^!da#FltNpaK?OFF>E1Q*;r_h z*8GurgiOIQA5e$bveSf)u#8%-Y0AY!3m%7#9YbVYRCb-7)t;W!DNGufXywv_$6gNy z_+R*nH{ zNBn4KLDO@Dr-+7xF3;p%DLv1h~R(NBa2RM=mOz2XbN+yVfE+-i_a7tR0Uq{-#x9nw_8R(*=&UGyv-Lkx(zQqnWqyTt*@(koGSiG%L3;pI1Kgv0qR?mI&pzweQ4duHPYsKWK6)6qa?H{TsM7%IOXvBBE)^ zPJbR78!+N2v4)|a)CiXuEhDgBHs>0ir|lCVwCtJoDtjt&U5{&)1k8#}YDm+_BH|T8^cZu2!=MOQ$b5OJof?pXW0^Z@&NTl5<_Sl>%k@-;v^9Yqysr>NOymAJ$iwZXGlUqG+N zJffK2@y76adF=;;rx3kqo3%YcmO7bU9VJ#4DB{((oULVZ%x2~lZse0*2@QJp{G?Rs z%8H2nv6HClu2_I*p>?wvvUa3ZMZ$LT!sNeTT3m~!Sp=7Sf-QqDRhAa!&Hm>s)A)BI zp7kFpftXu{48A7N0LcG)GjKWvdorj%Ks3^w)DU?9PmUb@_v@H>UAK9YrI2}fDfr^B zvmVdj0fbQmGE`1El;8-M`Jl5Nc+#J4^YRa967eJ<1m1mqmOU3Wu3vAtmbJEmzJ~9; zb?-ax-cPkM+uiQd^u8M;OF)d|hlE>C(kq^try?j#qg|9;JkG|Khj4yuL)?)gt`OjU1NbHTpN$~yPJ5uLBQ@eV> z1}8Lz3D^Kaa8HvD;AQJ&HLn3D1Ui&{YZn>_ZX5C1;3H9yfLRi5{UyL^kn&r~XJXYR zgne+H2%P$Hkk5;Rz`XY#Oh%cy z26_uC(B+9Dq*(A$m5KWc2n1S^J6nuX0Oax*NmZbq;#0--bmxF|glld-4eHDfO+WmJSCsOGnp`nrB zjzY_LDFpH$-Bl8Ty!Td(U047Gj;waIWF0uHQE349N&FgKIx<4V!4`^1yH>`bCB%+N zAxgnhpaA<~AA?psEI)|oCqse5L(#{;Nyw6vfGkEUd@C0~LEPJjhVsb&n{NgTw^aVJ z)y4uz$Uu?;mxDZ0IR}kA{}xvRjl})p`5Fqo5&`)|3T6Lry2qJd0PI+-lKh4m;iRb# z^hEq?JEsTkg&5Yid-@Z$!yB;-7-9L2HU4x3zT#Q)s=kH4&{q5VpeFl1etZS^{_gt* z-P!%{0`B*$Nm+oFs@1tCWlx}`x!JX$dC`@y$=ArSypWfrz*w1+17x1yY&mM>ig<1b z^Qdo;8w3>VygI`v)P>!mtiiG@ld=pPRKqSNY?bO~UYrzQJM^B7{@{sh2Jos$B0%|n z_M)HMm8)qBP=owgg?^lckc8YLnaV5JQpK+O#MHC+#KS!~DXR%|=>-hv->HcnsPoR= z%08{(u0g;m5=s(YgmcQVPqO~KqD$;Skhll&8|i;_A}N7TrIgpkr+?-%?MFU{dG*h? zt+sEWULW2|!%B33YlJ4!#580yR8yldT}DY1g*FOV856e@v*2AD#baT&x%ZO^33 z{t{dPC%+7ILizH<9|DTLAih@>4}t425ndmo+`VsijSph}-=B?S4|l^wg!|VZUEj>_ zm|uOKE`=9uM^GRYJRKw;AaNTkf*^aXNq|o+C)n6VYK+`Yvj!QMDG$ru+4wXf{G6av z7S-TS2P|amb}DYm_Ky=P(?j1nwd9)XJz0Jf&dl!ht!Z#lI^Y@HOtQ-tGT}JObI<8N zijZn@Zch7piMv8;n%zw*jCfV`+27u*zjgUYf&n}_0txjF$%s0KT7ebY0_ay#db6FpJDnGZDdrV) z{iZj+Jgu?`kfbz)N);o)YUQ?1R~E%gnVMcwJ8z!7tMF9pEIn!qUQYnO8;f|6H%Q@(jm|MpgMI2-^HsP4hvs$c~ zMq%mQd|=04UYBCZgiK$Nw591BvG-}UhS8z?4hSU8= z$u5eg8sF5?M9_4B6Jzy9emT8shRBU(7wWSA)yqsuU;M#t?lXNwM?*C83l(>eq8Cf) zwAe291E=L7VF_ib3<45Z;|TYyk_rQ zqc9nc6M45=>4HJuR)$F@!#~ID<14d?)-VxhGDwGVY;5T>tI90r_3kzfPu|N6ZZUc1u(l#~I3g=kQIch7Iqi&FA}RuvH9l@WJLQ4;9gMx(;@jMf7O0 zT+J9HdpI zE6M*eJy(3U>Vg4YPvtRgncvcrr=v1C2{^lZox1*;xvf4`hXt!?vRnJhvX;FuYQ^aE z)|GBEBbB-HyMN9*QbhG_uMmFN3x3zjR5@c`Ctc09b6w=0WS0dgK-EtVuuYE=`)-!O`OMrkrv}&Vx;1FQ9x3A;tF}Px<`U6BaqAbJ!}`7r;n) zltoWO*XPMcjZIzZofD?jhhTe6{q9{4YtK{-lNZ8s#gD_)1F;&aXco)?U~gWYhPqy z&kUCEwQK!NK5=3gLM@*f6HewX1jndt6(C1*JQgV<6F=&5`$u0!yRl0=gKd8nGC4p7 z4ZblMFU%OEol*{qVI;7MVagUet8fht^swLE*7I>JF4c_AQ zUmBGgYuD{98sfwxnq6kJ#&}fU*@4+1RKwU7O!2zyNCUJ zG+*v@t#zoN$mSAG69+YDIG^+`YSkms+z{*-<_ET!LWpC-~YwoW!rSt+4=P{ z@AG#4dwgyhA`&fP36IuT3{V7>@VNrrM>yq53qY^t480Ik^~_zTUP!cPr`rh7?nTwj zQ%;p|5I$a}?X>V%nh4#?6N_KP3OZ>-O!n2~)$Og#KEfxY$m9*>8j5ZEjRlIAi&3*f zf`kVRsTRIjZnG4s5unG^tG7dO+3qApGMlPw4HaCg5ZoPSS0d`*0vzJ=F4SurFqSGY z63XddT+EY~y1@!#oO(o4)FPyern3)mzC4tM{0)$@)m!#8Tz)Q#SbBH6CPIDKPWxG? zf71P_BT<;nm)xa(q}|ASJKoF!xva&tEJ^9x-bs(`+cq7&-e!1YSf4?(A?Q6$iA;)* zV{jEiEh-gu+Q#5E4NTpqjB(1>7X*Y6ZTsw?@FuFUycw5@I=XgQ@%4>qul_OVHS`g6 z?fv6td=WJ0LU}Frw;*+bK|3NpGi1Xs&`PvDbV0?cQ#?y}R6C6i|tpuU<04an3>wYw!tW zyXy_X9_o*zrqv)Y}kA1DNTO(l!p12uw6SGI+s7#UD+1)m-H0hddTm%n%n zlI+fUmvA}R0Ra^BQ?J5wR{neWG^g*0BKfmd%W}-e){)z3|A!-!JdHLPL7g1^ls!pL ztUJ1A7w`C`%rn$O8+SNTkv{X?ME!V87MGF!qsBVz_G_5C_RdhSq4ZpP*_!e#{ed_< zT8Q5}hhdbC`tM{rm}eC%8<4A5c#ZUKQ#5WF0M8n{Rrfb0|9X8x)9{QoF)qgB z{<4QcNA~i!AE>hUb^5Q#&R<8yT3h^L*?x44C#EZ&U$dQ>XL4C-`1krm79r+4E43y| zzBM8%mLNLnR{4}HCJS%-Bb96|?<@S1nKvJlrbF2_KncjmA3e4z!4xNTO{J;A79HFM_qF^&-Oq(tAF`FN$;VKOAy~oV;&L}uL_0$Z zngc}L8SJYK*VIL#&P|!Pox?RwB0kmttiqX^6;*+Yzr@%U?^u@@>efx{--zk6|I z20&@7nJ`C5w^(uPCb$a>X*z3$@jGgMW5dMSu9z|(ovr-8jkz!(QR4*jse3OGv-m_l~x$F8os z3iGb#RN>|7mWCc3KH`ZM42mO;@KEc>Ht|9zFgR$3dCU|p+4mXf?qivtY>TA<$bUyf z3hsA;5`Ci7weOKCxd;_l8smfpEE!U+_*uz0TkVX&x64VD=h>;#D|q*%`5a-yh}1oH zU-9%vO#V#w?D0r33Es%mO{G&>L_lB%zWm}l?LwY?aTBx#rbQ8`Cf@{xW5Q;Yp$;{ zWw3r1`98Pv^ULzs^ALN@@c)`_-ASoclQV>q62OD;a-C7mrH?a4`$<^Unui|lRtd>C zeY?#sepuCqQ?p(5A_I@G=O@v%QlMU~od3#bpN?U-xTZrJyO3^h zFxZ-KqkQ-r)ICZeI2&o>vZ$&BjS*TG+%;Uf{uDg!a&-LnY#1@Sw0po*D_zYQbS$kn z_F{Afy-DTKvc3#C@im^zxI8q*8+zPaf7tKDG-;BxQfeb{3ll%)MSG*D{WB+AygrWv znY+&tdnpIRhI0=Sy1Wt|fR$cg^frUL0g^s@@ViyG{P$ph_P?U2B3}bm(tLl~wu)2; zxcVtTWA>*B1kBgB(N!K!ODE=VqMh?v%6`m~M!E^CQ z|3@&;eg2(M`wXHODPJxrG_c%Z0dupBx@;nGr#+K#Vll45MPDTj^suIN&kLNw^Gf`+ zNV&VOu}C48`u7G2qrTp@`XBIV5xaTMjA9IHWNy@=Z!U_PveL{}8uQt~E-Ms?nO#8h zyhA(nHp+3x>(?5Fk{yh4Ll9qX zb>b){sKUQ&o3K|2=%z*7qoRBLXY%hTRwwP{sdW2g44t&_%c7)ay(h)+mohfU_%p29 zx`pH;zt`UA-W+cH;LOL6#4uXmYYQSPcd_K54U8I)B@_kkdm-3pe!-CS6Bjcm0t+q3DR>U-Y`;7s?R&l9k^NAQ>7{R&Y& z<&jH-{$m5#+30lAdj2w)B>b4vl<4SMw#`bOvGLT~_g>&;#jQ@F6C}VY_K$)H1?9RM z=eo6){b?aGjAx3cL!^?@T2?H}8bwx8us3Rc?rhxsQ)Jq0ADx{2wMDtq-+~$(C z_#lS~o^w z9fb{*xxX~WKDKN3li_-c-CbWaJ{3JG>vuf^`;c8SAXjWZu2GirTrCM$*$A@xchAY{ zDPag6H=$p_(wN{1auXFOu;2Z{Gqwls=oUJwcPIk|8+)MK9Rv6D?Vx_Yi__~r{d@w_X4dfM&RvV& z9_SGotY?()UVwq- z8t#y|)hpXI21@$h96vf)r2xbkFBK>JBmJsC7K-=yyc>A&A~uY7$<|d~xqv)IC0mNg- z=$vKxV=v1Qgjxb-Ze=$Fap!&6HFd$>;O@CndMQ3m3F&%f>aS*h=U zf&A;$DY}Hb?feW)nylY8Grup_;H;UROpY6boErMkLS&*Cj?cA){l4@r6Wd zCS#w4v0a>~pPhll!`p7i`oR=1nI^f`ogUSN|Ew3L+rx|?b$&p?myc&3HD1!pj6j6R z$~bSp`&cG8ur#mJ_$r;s|EF#NjD7_I1gQe=EOh(-$%PeN=r@zYbFgpX0*@pkyioWb zhOC?J(7d%l9`)%xBMj1t09?3RnGB9aISBIzN7o_N*0OLq_{=%u*55Fi@_Q3;HqhYT zMzZeVyCWWb+eysc6><}AWk#php>6Uexw}EZHNj@LgO|h%p1yxdtRRDQ1DkJvW?H_& z{@qtL4gJQ6`M19DCArwlt}VoJo`7b&T)~zXe=#h-5gojTh|4v&ZLKid?tJ#pJYiUa zDON>4%0579oxP`UTFqPx4Vx%M;~nbv2vpKRgJh1)A=BJ)62*upq2^{jqx zOIcS9QEK`=(a-8*(JljD^ z^@bkZx4%}PuAF}8ggz|br z6$!8X9%`us$-k9)V?(yJD7LG^pA9Elq9K+#!+Bt}$k@?bSnQj@h}8QHGSRK|LAhj@ zN3%$Y)31K2#b4tBg4aB<((O#M<`1fV)pZdSs`{nPG#N7ZDa;H3n(okFQ8cP?B)9Ml z%}T1eCidJ?+Z)bYQJ+qZae}e(+wtLg+foO0-lnT@%P2oQ5AfZPx(!oXGH8?7*G^P& z?OxYk*?9@gx;!|s^2^Mtkme?xT$q@0fzisZRuk>NVt+XSwSeV_iFTOMC>d%2d|yy+ zqa=Qh!bhG_`sz1y@qbG9PbU(EE6XM@*WzP-mzlG5qT#~)*FCrKIK42mP2lMQ8eH&o z1c^d4`6FRpm|@ETw3rCN%g4UzKl9GLWfDSMp)6?mv@a|%2`>HeV#Q2eu?mVBasO=c z#DFgCg?t+Tj^5)J-BkS+?;)iid!UF<<&OKlql!U8Sdsim_3VyIZ9aWVfVjm2Cz$A$ zhsuxYah^^rjAQonTQ(lVs_(M)~d7)=Mxe7i0j0) zFKG*c6?pf^WP3f z2QlTV*J&z! zp^_U}59o;eDh~Lt5Sv@&4OF#L$Gt{($ehATp}`&#png_3k&hKD%uvwlkNl{FS*{&F zlp0B`SqoZoXXm5;^BbcN57ICU54#E1i|`(J9dQUbV;kLTs)63|P^Bb=Z6mNv&~=0r z63|?5_GvM>T4vAlvsQL*@SAEJL2j5fRbsfn52cSf_Fd(x&PVsh&AyvNyT1KhP{yaw zKb0DY)bQbI{)xn3t2Cv4O@#ey+K!i?P^jxTu)C90(6nood6dg?2!~?0L@K?NitGU# zI>sYIYB=@ACM^DN-{JGq3Ic{vEnmsh3MTf{DLWDxWMY@XpiemJ&S=Mm4(v zym6gI3K4Y2?;KY47n%|$`_dcDyQYHV-Tm$61s)!Ln5X^=pQ1gcM~dHYfRV^lV0z5dTju<`5b$B8j;-KNVp)|D9cK0+PyYZs!mxs7}za1b)kOL;P` zelYfLs&Z2gyT5B54Z{`k?(&T@MI3jpx|x``IFYo*y-40mOhwiWbq`TiR{i|q&BHww z?Bb%s;>Is(4CuDcSHr@hzE*jCvY0<2#U;*(i+MSbHoko0imgE9M3#I%0kZLJoTqH6pPzUSC!~@;9?aMJUwQwi zzLZLb%}Sbl|BUD&s-%Do`U;f(&VT2)^3g_a(#_`YMm z>ghF?|ATT7b(XM3ch`2I4UxEE{V%gjW$soF#Cp$}<~BH1_jwd1-&E(x2h;SCwNS^d zP`2NZlT^&gRmlVQ&DjaE3$M@Zci^#y(KeXnvZYUa0sNk~iVNE?>_sd96nG<4;Wbt* zu7Nid8r0TXA77{6WnbcmE91oyh5~WkqmFTA8EVNI_{0KUbE!<&1WX=J(9jR1&q@K> zrqGd}10#`{M|sP}c`~V~Skd;<{X=sNqYr0fvh<2AaUTt>5e{{J;wKmOkF&Ah@VdQh zq+7EyXel0VA$%EmUtAc#r54ie+Gc*N`7f0=PyHo30X<>~A@#2xiR(s4qAz%LRWLgypE`y47u7QQCV6{u58kbIcqr!*5Sjq2uw@s&+i_X(YFH^RFREE~=%yw2)4-E zX{5JFF>s%P@~XIpQ~KbQ2v;@r-JQe8hyUo2k9VV}Sb2BLf10B*sCJ^HiO~mc4z~># zG353~`0OQWrwrQx>W%qaUe~-%VA_Ve&a(nqr!4*2oU}!DD8K9)C@Z1)$SRZys6+ayG zZP$&Ph+L)k(x0&*K)Hmv+$JY1J6qKEzIoDDsc&pu+ka$}ta!?%ZPZ2JIC zCb^=LVXh|P>y(6=+-GZBtQyrDgyPFp*hu!h+Sj+20gIapswTvAKM2zVjkxGUdFoyR zN{7V-AjXJQFPeI8=_e5FSaQf^^5vB*u^*B)*Y#NO`qzlOV&-Y zFRFj3B29dlf7{wr7|APbWin1~$Tg6XS~L0rFU-SG7nVd06-CP#|N-I0RD9s*HV^mI0jMN((4 zDFKT%$d}elRFdgFW@sx2>kR*>x%(Uv=1fDGRBwNvl}<_C$b&LH-zRx}`O|$&1mTcEk@B0)2cXBWU^KW z%&yKP13a7?J=!tK!JNk@F_O|74Yp!@D41MvC-kUbo6OnX)k+i`I>;Ta)U>H(P9`%L zs2s>P|58(5-jsx`R64+)Z`Tu!KAr<9|(^AiSSZH~2z{?RjfxN-41nJgnri2rv+ zb5eu;Tc|k$P9M8k5WpCbB7JE_vm8n@-HMtRRP~0ye9E%bgiWC76<6x>?& zaoFZZ9WSmeKI9`8m5F^Z-wIc2XXqbA<7{+sXl{$RX$+3+VY;mlEo6DBcU|MR>ZC=u z{HL`JO+M_MD8SViTzb2<;%a4B&#T%du1%94Tj`&Y4vn2614akZCPwp`eH8C#o7Ojh zbR73KYhqXgD;rys6rB;`F)0PIo zU9hPrP>(g~utW1Cq+kxA*fHU2zv&pP>e2$Ozn*$_!azACC1uw0xtK_bbup#uVA zX7=pOMBuPc{>p_KJam&uI z6{hx;9z;GqF=wY3KSZbp#Rk(Re5|C~cx~#Sjbbz&n6InRD%8}y*bK#&7v1v(m2UD< zm3z6EDNL->Wu2l+v-vYOl>9zsn*`4c?)c+}W*dd>mdDreR#yGhPXc&=b!`6|`i3=t z@;_ontQR8Z|8Iyp@eU$yI+`~k-v7lbvv?yu|F3aI6FIQVfd&L5EYt?5ZV8`1s&(q>*=CWe9hZ+e4MxvsE_JXbpe-aD? zq7wwG7hhrG&qJ12I0dZ@R(A4zQ0aDz!R)veniQ!nE z++VXBdXUK2@(`(ffH_tJ;oF?_QDk862?m2es_NtzN!l2-j)sf}$~xGEB*c`Z4yOs= zxKcU7!I?n0J^__pANV$v;%7gQL=?2k-SfD9BWjZg*(U60$C}tlh5L#pS%Hh}|E<1e zqI-xs@pKOLCfV1D zm>g!F{{Gnv|LxgSgf=L{PbAN(>TJwvOy>t+d0cx{rxGrVg2O|DXxv$Yfb^?;+!sN8 z_?z!LgCnzn*${9hq(x_eBq2eIQfi1S6}XwsL1V&!w8GJVhXm^tLM@7kx~U+7z)*WY zf?1%XKy3$uiMD|7fi=2uqAY1aQa}ZPox_kCQGtMBREZ)Eibhs~LcFOU!Wir&{S*f{ zhedck<)cP*z^xA}U_TZozj>LVfjqcBcqw@>L1y|tBPs?~VN9H?6j4M+9Z?_5kHUA! zzS3J@vB66i3#nd`kjlQK&A;2>@KSnV(B4bHf_|OBSQOx?pfDY>nY_2pgv-l`ed<=6 zbC(bJgDxPcp(o721)Ynyz6_qh$eaPU1!L17)}Evg6bKj~Fe!2GP0(8;TU@=6-A#Md z1q^dHSP6QeJMY;n2Qs(06vd#1CT0k9TT4knMjo<={kCNbH!NXB>Qih5yFR_v3*x4G@!7^4)~6iqxAb1J#oU>_$f#yhoizbyVCz; z7gSZEMLX+1wv#54>h^TSVugXQco;_#l1?VblRkmeZ_iEJv*W72c;pY&uf5uld_%|lJ#{F9@>_{*Q@~Cj{7VvUB z5()iE%#VY-Ae?g)zd{N9mt>3CJ?ReTUhcp0yUnAaEl>1O$9AB__%{Ii`$3z9x1Pdq z$22LnoD-o7yAL~HmY5e0i(7+x)wL`^l?qia?M?$7&*TO4!mPmD(ILKZ8EtM1G?>!C zQU*u1oQ1a)f=93m-Oz>k3rU5ah#b|>k*1=9y958dfxRx+q;L}Gqj;tR4{RBJIxu;E zJU%WhJzg>2Db*t>SODZuq34`i-#v4u0GHE|;4fvw)vu3}K;TW{F`WIQ^4-&sIUMzC zhB%_Tg$K+SB!L?1(KoOND&&g5^{xRr`&n2>ul@k-_sLO76mj`W&%*9kfjsd4@pVq^ zVMUADO&T<|ZQHhu#CEAI1|H+1d!i&Y6 zyA!>5hT5SHiY~!;x(Rx{3_EHTQ>~~oBy9ehzFPnSwaI|yu zW1qkhvL0S<>UO!B%Y_U{Ua_8!?xf~&?%O31X6e~7WBJ!BwEOYtSCiQ4z=dDQY9r8& z_sZRXmz7@#p7lb$F}L0|fx;ck)ZAz03|;#*fjS0!1ZxY(2wJO5*|;iQ#&A(x;!=Fe z>4YTnF~l^>sOvAz37@;q>FXBOLS#Qi-Ur_8bJVN#XAA-Y>g(X5RX}TV1El8+Hz(5j zZ-sH@I_b=To0k6N)G~aeU{6B}CcGk97e*ZL=)-g~zuD@(wzhH%@)2fj<1MBP^Vuv$ zrqTG-)o9GszgD%TBxf}0diYN1F%ssfunSdZ6!`RvA=~{uMtV}EQns6N*&u(I3=cXi zn6=Txhd>dp6g`|zhh1K~Vg8cR&IDd=jVK>&JDG^>T&rW-Ne+c#NMnB@X8RS zmgFNvz`LL!CTbQ#Abt}aAYL5{K8`9U)nfZ`yo(%4d9B#Cxr&Q9Rp zJ4E6}$m}Q?fcV(Rm5wjVW@cpS z=UBl++VuY4I!a!?S`NWRDMsHVddyUq%J?dq&JqNR{f=-@dQQhJqv-*;Zg%0)ZDmEf zg0X`1iLjSCv;dXx6S!Azn`u4q65b&Gv+owLC7?!r!>s)-uZCWNzonoqkGFsYt#=QV z8UhUq`w{8!YL!f`#t+vr$VWy~DGc~we_QhgbH=Z;)xVR`JwR6jTO#+zLDLKP;)Din z=`1^j#4Bcz3}ZGs3mnCTq*p{^$u_q7Jxdrd=DIko3qKBgpCix9>L08hhSPEpFO<2^ zodN-oYut$uh+FMFt(wl+m9fCq`oXkGyH~epo||(8g`cm;MJMYAT?+`3bKCNJYZO=%0xrBuK=`OXX@-@{Uwp~4lXEQMvDvOQ zi^8!4T@xt>$@M#D>jxrCY-|Bn8*PSqR?dFpPYoh=kFmZ$st1@6*Wg->jrD|HVGd@M zaWpYk-surKdizIn9`7fYdsK6Y2e1>*U#+qh-BA*4zSPiVKPrHFBUvo$yQ@(uu#E4- zM&;Zb#AOnxG*kX=dc4Vmc#3Z*YCP|Aq8bb3i|a7iSb2{dS4NB_Wu~JgoYxj6ndyc_ z9|ebTvzk3#|1yK&jb6rGB(F5+!<~DtVaE16qA(fCwiEtOpM4>mCtT{Qi#yprr^?Ea zp9me)`3Rd>YLo%}XEWxi*ddN#^RJ+$m(giz$RV_saGWvTmtJF4b!8WRDu(#g8GpT- zbk$WoLEUQzu_N>e?MbH(eYqYS^$YHG`HQ2eP9F6`nFmZGP22dF!4Q`rQSIcQ)rVtk zPB>F>h3U9f1M#w+2z4(X-IWb}euS07D4w~RvoN#u_er4Hq#%EOA!nSafY@g+i{Hsa zDsAiUL2kS$JkKWMCTjHN0h5_tI|HvI<;|;{%=Lx8LMg`AYPZF9aY^X8DeF{$?{JW0 zTFP>8G%%#k)F?QjsU<%~rT$_%R1@)V85Y;o;PL9rrJUFQ2F1%d^eP;z`ZGA`Xf*0h zPU;fJz#4Fu2ZYY_pN&NsDm1S5+b>ogA)dPV-CgFKM+)ku7t~wDUC?M3=*yQG>6OZI zVrz}jJ}b*a#5Gr=?xLx@GwSw7+RtoN6h>IQnjAzW8_?+zG97&<1~*veiq_=>n{b>( zFz|4S-`j!|jva}3`-0lcZATX}{#bjm4l%OS3Iko)W~}6{o^KH3Q=V(%VLn#fv^-Wg zC|6|By`xk-?g?2p$b#X5I9gMiYvb8PMg|xOo7&mj;$#=NQj&J1-s=FDKiOkfcgqnm zLrVj>YQyc;&4aB`L3v38KaE$u*3zDkMzT2{TSuDaQpeAoW;82dU*D6(Tqs&VbDDFrNH3G04;=zY;~nic2NEVO1^WZx((@~43$HH@ ze~A{?+gRl6ZjAm#1Jy5#dDqi7iDGBefe9n45T&v+h%7I=a$Q5J4*fXuM+<5hY9qY^ zW~_?{;e;40(s z8H=hfoSLEYh>Kc<>B}L8oa?}RMh{EAaz2-N>t~gXNU1Yhm#MFX$Dt4lu3Ur@#dj4l z`f&GB4%0nb!e1Lkpr5#i$83VLJuSVzvA*U0-rS&4z2;qXSl}wk>JnMGt|%fe(9K+t zlqlGZ`Bmt4A(E^9XtgJ1zCRZQsFhh!!n_IGo%OAO2`IN*@^U3+`6v%t;KeiuVmwt@ zcM5tx3?k-C=pfi8eUTB zPoCKE(`vOr&_rxDXUQW48JMho?2yZxppbu-_(Hr#rj%?jG8iw4nxU2h@4wBu{dRko z{16izC!teLG{hn|5E#Ew}E0G5vQp5cmO0V>YXnX%Am#S}# z+ho>*#oc$t=cp3zlP4Zv;*Nlt;+x;?CnhZ!7Dqs&3Zr-5dh?vx7iWXC9i~aZR>uroLf4_PvWxDm?`AFa~j;U)ccpgO&6EG%1r{kfTa zvr{3}`1P^*x|n#|*QRFxNi2ky2TfwQmC16iCEDd{6V6CYTB~}fm)?t}J-J0Q+HDyK zO|d0J&UW^r&W-D~5YuK$lqCpV^|{-4(2x*gK_yad_ksWlPU@R0Fqd)>)QcxmWADFf zPz$xyg>2QgHQX3BCh6Vd0c)_kG>!fciY%co{a$D#;;=6q`*rQbK7TxWb{zKs8Xgu$J(N%@mrBkZ|Bbn|uMTh|(#U@_8U_s(Y zCLD}aa#vr(#h85*fO^g8_`W8()l%k@b%7Gw){1i}A)FPfy2od_ML`wCuyvpd)iL_U)upt`asONA*asFHg{xZL&U8`?SauV$5jI>5-u*sSx@RP| z^qyX6#`pDtgg%04rpfnI+EcPgkDZe1Bl)S}<}gE8Z#_1g_z);?$t_UqbTZY}$7DHn zeMl7Uo^WRf&}bxmWm|~p57hF^vIqSA>nuLarpeA~{|i=SO3*)rIs0%^>9JURvgXV# zvP-S<%jESDbB!|3fda|td7mpN{38&frRS0@S?u^~t0BC8?S>FJqEag?5xIF(gPOt5 z_GLO$`zLw`O1RguPcE!o$z##OK}pGGC+2ECsk*HR0C3Kzs?|L~HkHWLeXO(C_0tES zh^sUR6Ial}a(0Sy`ndZ#9mBU=+!N4aU*ec8SPr0lXHdBwX`{)08<>k$r5MIJ8THV5 zy2KCdH;fvKRP{9_{p_6Y{d_yNtww48kd{q8e0UlCmpD_ee!9zi;DFb^oGB<3@YonK|y zZ3WaW3?#7Ycq{)31{@D+!Q<-GcX_9}kv1>hd#q&-5m1Xf&%;#o58FP0i*8r0Rh@8T z9oLt!tN5+nd11M|kPXx@+ZYhtz~x>8%VdsK$+1vgw^j@jo@0AhRQW&lB&)o1P;raW z;}`i%a%RI!qz&gnXWfwHL8ECNBXw!m_m#6^3*AU4c&u?@BkG6E!1?n$y5G__U#;`- zEQl*@q=_}ZPnYV3leP<1fMz9;AwIwU;Y~Q+>_Yj3>z~E-u>H=}le3UmeeIS5G}{P| zDEMjE9OWlQpCt*1j;;9Fe+T8JNAoOQ4DTFp5T;qTwoDwAb6 z8CtNpw0L?wj@DbfZJsE6)@?v+qi&X221do@gqDYgPOS9=Wn^z5^Ve)ly^5E;E^ut# zmwRzgqPqrK3!4kKNmFk(k=|fk$oI3X$bK{r3P_P;lH}0Dg^z<)V#2=w*g7k65#$fh z*KCq9uga!A(3|PIAUItKr$neD`RUg@!lNVYUQdM%5aM`khm0LvE*{Hj4B6h-5EoL% zitB65fthV%i{n<8?eh@QC2gWRT*Z1q{P?;DLx1`R+kOnVrKoEeiW-F zknQK1S89M;`K4-W9LnmNIs{inyt(KheEh`$zj&c$_l1~# zR=T^4iSTOiNsk&2pi@Y6VIKVL5r{sq9X!)(V2|u)L1iCgw!`3bs&`f6LAph%m5Pz4 zdT@EG?aWF;@fM@8ngK6Mied{a4=SZ*6oSZ?@z630GeFC^c0Dit6X5Wc&PfS8PUMs4 zb)jf=RY&42`0Ar*RhcWSVgFHYv7cMMY%ksGX6O(zO50HZR72p__hr%;-4faF9ul&A z=z>(coF*aA58sA@ro`11PV|@UHF*7fa{?$kEpLQ7zW?z(Tv2~*wj60T{V}{g^v*b2 zrG*jeUL(+2AJ)1?NE|vAM(8JeC&`T4)zs3{2$|tDqz4fVdz#qN* z))!nOF_B|tv?5fzbQIcatM4hmJL0t*|0weBE)L||E;2XA%JjfMJw-OKg)lR%YGnwI19Qec^M zy^mW0Nk_#p4l*_;4%Vzg3*02KjoZ<|#Z=o5R7YIFO3{}D`mv)HonP~OC7Em=8UDmQ zssyamGj*@v{|eT1O&wc2yw-14Id1~dO*PT<(&|FH7#$SQb|!yiFq*WO*d65FU^RY& zrFsx9cq(pB@IO&ey&Pur?C`Eulr4Py2@gjG{z!*4%pp5?U2Ri^kmuYzFE*j_Jw9h{ za95(?R9EJL#1u7_5nHIyTAoNP!~}*rcAd5MD;9ZC-=YtAZOzjgkBrI$C}6YLpYE;4 zl{khRkRMU>zF$9wJw%JP(_X{jYEIy?cTKcG;qucv`b+cB*>< z@Y)!osTHEZl{mXC^OkW?7>P-Tehbt53%I_VRC|vB<}RZTy%}6O5}$6rc$_UxM%QES z1fodQG>*FJ(>~!4fA*YNG--c3=s~Xu%OZgLZHO*r=^y=3n5?V6j=RDz$7;X=!nBvo%Jf=!x*u zuh+H*z~#9}cx}2kP;nbE-v0jfhqPb$P?z;-?=|2G_g#E@lfhDsb%6tGKAA-1d5;N&rVTu~Uw-fo2OQ zT@Y(?=>#dI zO#RA=X$OUnY%Zjaf4JE_paivb6g%lTIkx&ybk=SqDR^RB!+sK#QpiJRS>O1u>`zI3 zf8T6+vG;E^w$Go{ZQK#5k>c0eq7hz?t%)G(A8buhjtK3)Rc-K*eWC5g1$fV#-fN#( zm?ckU<@Zn5B!g4pBDYWoOQwI*9=>854Ex#Ki`FzI#O`y$X0)*cs5M{+(oBUMtRWF5 z*wM6};E{bsrdHCz-&P&lZM5`PGz(Fd3?ZUnG(5)rh>>^+&6R%i zx^-dThfoH~Snm0zFc#l7Tx%1$@j8K1MQYCs5)@E$&A!(%Yv(#?Q|}{Zqmvy%x<@mt z*m3;>K>5_HBkvpn`eQk;oX$2|&vRR@+bBpL$MPG+4*cdj=KfhT^I~B7wAM-bXUYjB z9#lC+<&dGqW2-RCT&f^MWMnAu5r4RwW-sm!Yo%=5=l`hGaq5zHts~{8h74DGinJ*# zR|7ZoFe_uvn1nVi*;zuErk}bqBOe6;5biOWdBgr6F_r{l^9Z|# zEuLRFvPN1=a?alQVEWLSR<>F zOJgnYii1)~6IoCtOmEeUOZA4gVaPM=PePYp*NX8JajR#}l1j}|h7ul9h~KF>eOnjb zM6WI(FwQ6wZUKrf&}pa9=Ae3JO%lAhQ=~0R74f)kBmy$l+;zER3e#z7BR%l6I)*{l z(W8Rfa_C}o%ayY)Tw4AkM?%iOGxnc0t@E|R!6k9Hlk?E^30n(A_Ht1wiqpwVdNTHj zd1g+^S3PFX^Ju1j*A6Us>%xB|qb1^jS8#U(;EM$kKecF!Vy~3Y!!k3+a zF+PUf9ofpc$rMf)L>9%@ZOS!o8F;m&errzx&7##OR|{?EWe>AegsttO#w;-I=0Hpz zdf{JXr#RTR&NXz{x896JQ4SOFx6W}+3Vf9FavZk-)zf^kelu`eb8end{JH7gd-8fN zl2hJ(gO&3A^K$#Oj8p*b`+TZ@b8HLXO@ElW zVZOqpf1m8d%%K0AEa1WW$=Bd;^ODvS;6eqy^za|x?-0*ZIc<)+dIs71aob_pv`Gow z{10Kpn(?%1^pmr>G<$2S|?g2vCruU4FXD?(&y{jL7h43nUtGs(K8<^Dyk4?$0Y^jNkAMLD>8Ql!Lf#k z4ML;6EO>^H2c{KKRAV|7x@sDt7{7tbhy;a#*yTvs~HobD+o5^6dvI45&C2rjEa z(+&%3UKVNg3s(ZJdqva}Fj_-WCaxPigK1F|XsHH^oR`wSQJF3TM}G``9O@?9$f6*v zxUc1T8^BGfI{c+jVIfFn;*HSzqlvg@g^?P+9S-yoNxtk#9;@+Yy%90?-uR4xhq3?6Pt;wwmZXd;5WbVjP5M=dR_RUNX1E?L$QCha zD#0>c^IIyBAh6jjO6|Aur4kv;-ZD+?>MhQgc}0PKgR`|gaGz{TRCG<`)L_i3ho zX&7K}Pu^b>vjJr?i4(?r&%3v%OWj(j44KNF-e(5?@1x?VRRGIiQy)0-+to2Wd`47O zmPTP^s+phBPxayVG};mkD=+g|O>zJoFW%n+B9DN2NfivwZ`wQ1 zNSo%xcwTk^S{dk@ASsxeOXlJ&Zqy|Plt8Hw{uCA8#3f!|(t`Aig*Yx~g5mjGuCcP6 z9!&@7?J%m>Yd9H%hCQS8-Czt=!hmZTela^Ww_NI+Q9BEMF)V(utaBPe)_|)SuUx7* z+tpl}b*gQ-o)$tPdFtIc-s;*i?P7ZU)8mTddDD`=a{xE@#2RRd#U-VM);l$H381<{ z3oV71P!8e9tRoO;o79mljyB$Gd5cYtoEWcC`)P>ZZ9l$k2!U#ooj9amgXDwRs! zt-$+ttFna`?tI|>AUN8N`jlASc(B$vE}A6Em%O)HvG2bq9|-akRxkJWU*3s#`sxf* zUL3Ib(%YP{^Vw5Om)v0DT%`P$(tseIk{oCA&r_*+@p+`iHgPLnoj>kyQF%H{At)vP9DBh)QJh<30J1eVWtLO8Vs$(-LZ#_+=!Ito&Zt zQjK_$O)e-0+&`Wfo}w-;L|6g5g%)z(~r1mt?K2tM7IJ5^nl{&W#+PS z3)E0y8xeZ>H!JUG_Kc~0?Tgb%*y%1I^HhIhrmJv=tPHfQ43&rji+qA*x4w7f_&2i7ok;nPomD%YZ4*di$SpMZP8BC%rzpvic4}M(-)Z<% zLw2iFu$D9mxA|I2Yaw$L8G*h2Abc0)d^ck*4tb6xUKLhCDAt5-6|EZcFUK1+oB89#-CnyO=Ge!m-+*s*C% z!yK<#B*$QIG+BylH?C9}{M5FMm(_94w{2YQPQp43&8we_zL0G9PX@r?T$3h;MyCFa zTW%0~B8T)lxvuh|k?bVJ7H>VSig@R;ribw42Eixr`o*Q$K-1EzEu~J1iFdaZZ1Knc zKKzJi5Y?3y#Q;R{b>`zb9azaO*5RPvIYf)Ya=3{#CKMHzJcyj9q!@@LaEmn-o_pQTXsX7q;CGf7-Zp* z*phEUC)q*5?QceSMj@&g7#?fnB2cYj`ty1uHK!CLe(O`pE)Js!XS&i@J!bm5ET$7> z>-x$40v%8(uI8(xmvz>jJuJx6juf(BK;q{eLQ5a#G`)Yx2HdWu{{SB4U%~`0w9ZtF ze0a(Kn=Y)%hbQ_kQ|M3T_&4aEjN20q1cdqjGlgh?mnNzOPRiDS>?-d>%8;9BOA65@1`f5;(3k?`P!;{x%8 zOU1Z>R`s$`OzH<~U{;R^W#dPG9gRDT_fqD zbrGGDtb>QqmdnX<3ArzQ*aj?QCLfGxDA{$(*d9FTwnIT)mIW1I_3#8H_G zFg0Rj;yc4acLmpyB8Opz8;*WEqF)cht@RWTZOQh#eA$7Q!9U$2M#VDBuhhu)sgEao{@2iQqx!OgUR(*^HOeAffH2}Ub%-e6(tyWJ_nMV%MmjY7+UBn(8rc4 zjS{rV7sNf*;Kekx_y^V#V`r1g)dSp2C#_QGk4SxFM_oo}9)T3z&%t@L0v+O=iSO5r zB(E$`_4U$>;N~zu8m-7v3s#3Y+)y-OVj&RJNd&4?kKFM*^kz-nrula7%dFV zCAKEh6pdvX_4$)!oe?Cq=F`3t1H>jQJDL((Qzw+3c`A}e)8CGgS~MsyA`gw3Q{41A ze~{=OvA(llzTj$fnbhc`^#4K0J4L-4W@llc9O4>z|J=GZvKx%)O_Q)S`;hM&wqV^1 zlXfu9%)!Z1j z)9AuJeUFBtgknKeHy2Ufplgc3?Ui3P-Q9Soq@&kRv}_AfA70#33FnBTO*l)Y;ns+u zCG$>>sZfz=`)Wr|+$*yV0JaU}%Tmf7oPEoU2d}Hsgi~0^*}SXZW`YX865kL1w#<)W zUMyor7Fo&M=;aR4_D(Qmw>+DUp9TH3v|WBUPL{=8UUuNgppOVxW%w;xU!lH8E^1itC>cBiFxj#@O-3`9ljT6eD&C4vBExmAU~AIpwTBX^c&OeupZX{Z@t^l?vq0JaPsds z)xitw{QN+*>_(*x4AAj;3HzNt^YL&IRFV@%j&2*W;3^B&n%0^&WF0ZUFrI*>Qgmr@9@Oud+!g1wm=Mzo0Z-b&+}IXx`Dj7KtN073t_al$d#F0b~B+oul? ztE*60D+7JXl#7b%J8wO*T=2_+*Y7sXvk02&9xIwJ8!O{?Su;(mPV~toY1>#WWL9DX zw--L+T+JtQ{q7puAI{iYc-adIs-XrQd_u855DyS2J2`SxInF=)Wc*ZS_$5--+VizI zzaHl3wg+cu0nTfl6Zc^5@k>zwPs^v%7uDC0v-%`%Tmy2*O?TVQ*3XBrfb>+=X=;;> z2)-dJYS4jc`6luOavy}M#)zYh1$4}Zrc8cRqK<^E)yK_h$?`?mx#}OsXQBx<8#v_0 zi2Pr?c*Xi0ioZ}i@3Gf2*R z%^-`x1P)?sb=N=nOCrhX!}gLxO6+erNRqn%L}^|a@EcconwuFKbJP3Gl`WZZjOPzeGXq?D z=Ke6TN3mD7tsE*36oodncGS#vbhe6%2|;-d0A}dpc@r*bGU15Ef`dSUHY?{}k%eej zWiXbQ@OOob=3q=mV>Y+v_>sk+X?cUz-P@hL5k>1Y*eSJ-ZiM%oZxdV4$I-Ccc1PRx z1n;4_Ux)}0n=SYByw47^p8O2dl^gJX+>2r~8lwYyIn`SEZ7m)T#fLXU$9Q`ms6^F2RnWAwSUUOTKi<$U0vN^0bQE6tCe$wy=KZYCeM##l0z9a(b{I48K)1{ zv~KiY?P`pijnASFp?Wzw&r88i+4^ z;`YDY^9=I}nPZn5cN4vJT|S}1G3-s1gm)j@N1m@YqXcm{<)=2SHdFz9$s8Ym+N0qK1?aIQFW*TE6a5jgsWy1bjjl^ume~FaP?^U z`6~543KGc6PNbixWXWWuQzGicXvp~z=!Sd{vyayuxVM0wveCoNZvb*{~(-WNZGxXOu;pb(}EmHbGgchQ_16%DBZrSD+@;#>RZF=V#Z9>UpB zAsCChxELmBHc0ZMVSHiO;$VqcLsLPRWX`!*8REA;(uI!G@M=Giq)5QOWQRl%5sOr* z;V1$re-1u?>XAtCA+wQ$%jLy~iRk=V0sR{+^*0_lt#64eT!u23Rml)z*B`tXF@E^Q zh?muH@&*d!H#Wf~fVwwA2L5-Ve~0W{8JjE~smBsXm@!w0g8Cvtfui^`NMh;#_eTOE zt1Il0c<>zl5iv$vQKVmksFgZUn(}p zj(9m4GAq>Bw*o^*)=UxDpMj3nmT1(Ok!T8!1rUyD>ERN}K&e=O0oQCO#yB{)?}u-x z|6ej1At<=-LTH$pcrVBwihsXAT1&~aL0FN>LDdphFThx7Tu~=)Zb@0CcfZ<=IgY>J zAwu#JMkkSKOEN&j+YPuh0|=u}8tT^k<>m;t#89H8iB+X`RlYXK49#sRUcMNxEV#&t z;>O18L9!UhfFvwovz7?F_UJB$zgU48OE4F-;Qd;lKIs&RkT( zqhNM)QNtHvqOS6;!Q!_(9K4TtTx19yU`Rt3effEwWC#OGpR<;w8PGVc(6L+!0dMwg zc;EF-KCtizU&cu)@}$cbHMWuipHE28{pw0q6TU3=5i>Mgqt7@5uq_ zVo2!z#R&@yE*7I7?2e9)6D9n+p(ioh1bhf~?}P~_QoASC&w#uGt!^g1Z$;`5HzZ%X z=qQ7Ed1g|0&ZNRW`K^s-xxu}Zu`Fj|2tfoP!JKuzfkY*P3=qLBPzW>erZO`@Nlk=f z_X-_9WCI|c`obXa!K7NJL|De)WsL#2ad2RfOY)x5XfVF?Htif|C6V%~NJlpOGMdQg$bi zic>(Fp@p=yH1^cLm6y+Chg6aN`2$7ghs%Z(-oKj|kMHodQ7>G5ADo-yT8@s)US>i- zS#$)a`Zu{WNz|!;f>vhx3u{h!ccedLqtUl&!nWUYJ<(PS=%kVYe%0<++T;1n3q!er zfPp9pA$@~fnYKsluyeG+(8YoahTtU|h#lE?GxDSxrH%dmurhno4g$;Y4U!F6#ISE1 z9JwColmbt~4CzW>0%5F44G^v0$=^r|l82>)B>olDZ+3fUnS`W|7!>&nK0!rv^cTEw z-_Sl6@hOv`sBrN_U|Bff;ot$NrJ*Vwk9-CFXFDH=J!UJ}DA_GyB3gzt z;zTtTU20a)Ldt!Q^r&4@`1gsy`ki(B;9N%_P7H@m13L2uQZLae|HerfTt^9r9DW{@ zke1`5vI1Eel#fe6P%m*uD?F!?i>fFUs1lX#?KTF@FHlZ2GYnk}G7ZS}g8H_}3@UD< zq8KHJTp1{K5Xj&Pd!bd>s^P5|+}}K~F%We$MC$v3veN}H{fC?Z)&Y_4iegjIS%GFi z4nN+v?;?$wju1#y5rO?qbgjmClnnUMTPh%W{1eGO9qw7>Y( zltoYM9)7%1Q5MQU4P9|^flQe9srBj~KW7rx4BZ3KnTh`qMyh!mS#5O>0MD7re^c`?2aO+}*huX%p2zlck z*0cLz=z>)$;L|M#8SZ}rd5;*nxBmHyz0HYVC-j${388hfR-~QzHs6Klc)&gfXUy)B z87QYIr=yEgQy(=v=^#Qc7TSgaNC0Fkhdbp@(D-)GM)db@;5v2?j(f-#U~T)`fEtsr zaBpQJky0zOK9ZrZZk&ly>sT@JhC%T~Rjbj+BxqdMq@%}E@FkLn1)$S%<*2XpBD4!4 z{?jiu@Z08`c(bdtQepGMWv-ONYr|!lpzErjE4R{5LDv}i$`3+57+?kc>(Aofo!N~& zqje|1aFr)?Dn45KLFm`7{3dn>puMQ!D@s_{_V(7^Z`Bu10j>C5U2l|B1G>ArTg+g) zuGhZ)`tqq8Q~@dnBeYDF>eppr{UYfjeJ3bYxenh2-;d@CoLnl0Q`?L=b%6_>IvwtD zTj&vW+i?1}MBkCWiLqGXg5jX307TXtZv&FH z{2qqsipICnPD*jfV9{{X$+jr){1qg{5(A7FRfuKFOFM ziQztF4is`p@Eg;KzcSmCON2sRfCI*jku(uAmMvKl3S8YROdfNSYvVUjQ7P?T#KgPW z$We~;5?sQxnFrUH)fI>P03m3%cw=vBi2--=tR;)baU2qkqgFjy~UD{tc%RLk?M{og}@86Yr$*ZND1BK4yV|1%{aI(lB zgV1yH<6@7b#f%dUjcy)#%m3bbS@!iZN&1i3hmNTDWRgn9E63}T0Y*#y@P5q08G(>? zBaCdQu72$Faeb|_FnTJGABxOt(qjd&CV?iBWD=cjv=mSWC6IG!a2J${?yQK;y+<#~DCIPIQ=(v>nqv>SoBE=NnYaZS`-_!toJB)4gg za9?N|HsJiOf3JcKSn!kS&pfRIMXCWNp~#{Xq8kawkCGDzUwC)+p8Tl1NUz2c&$9|L~l4W2cm@aSnGnMLY#lEa>dTCwm$_ar^*|K*lnhIicGr=6xwp!H=%|hWu zWykl{lDx^TE16&yo1?O4$R|RPY5G=-b#_YDsgn&2ELX&U_LFMr`i8=j|7ICdrn?1j zGgH_+B)(2?wmfrl(a-Xvjp>@o=2=TVa3>aGH5TjH zhBBC(*1{a}T)O24rygRd=KV9(v|2vwiBxa=Sk#Yz4YkNQy!K+9sw98*y$>^5^9Ti0 z*UC+z(!dc|r(OK;rp%qLS7@F=aHU^MY6Xc@B-MA4KFEJH@bc1-y^>PsDV&?OCB?$j z8(Xh{jtwDCC)hSxZ85AF()%nse80?S_)T6^U?v{rKv?9_Lo?We!?p!Tn}FCScnO9U zF@Gii0!&qtSEzjI_yn*zbhoxyNV306H|(7u-aY`e12#p~&WS)!(R__Lso48-&R}wc z87e(Y>EGabvlcKZn?VoP)Bro%B?`>1VyqwNsh#F40yZj>E;BIm(&K2d<8+t7(0h9k z+a7btt~RXH(c+WR^7p9WZ4j#aK8fs%#pS3OFDikrEMRFdrqkXl61`+LlEURocQTS-m?u7!J#EROA_Ubh zUbMaL{`)4>cWYNajlA_SgRTnaQEJIp15F_Gw$iKkpL7|zQz5g1L6F|V)Z@)#gKxTi z=hL8cjB7pFz!{>b+r>H=qNsM$wA_1PsM>}&mSUjGBWjSpWadp{spUBQ^wa*xqx9b$ zXm@2^Rbv>!Y{b;L|6W3o8%B(JSfMWNw5fzdSL^&I-%9PknySy_zQh`QdFOWKu`B>~ z_8yZo^l250u_{4NChy#%{@gZgSciy0{qQZXCZz=59#;AWYv+t?BGQ212!~F(>ua?1 zW_q=sh&Gd-d(HErS?$I%GXJtp&c%gh^>Tbu|2#9F=k@;d4~}kPNM~E9sj2V&7L;e% z9oy*?`xs^S(K~u9wo$CO&mK-JCm~Re=R^14SRZ*+q*{^kRx0$-tT(2kSRHcFK+C&S zytQn}7_5o-^urx_!t)o3*Y+ikgKy&m&Y=R&;x4^U*lEN@%ROX{vHFB{*m)6;!w&-v zp$^I_C{9*PXx=LIDIP=bpkDAKxpz!Vd9R@T+Hos8|F4Dy;n@{yXPKUrT5y1NUaK<~ z_Z~uhM>}ghn44=`1+_m_b~0UEZP#5!M&;wFMKewP2LA0j_GGQ?*}!t|cem?_-^>MA zhXSP4_T6M{-H6F6SmOL4(xQw*pnO7zE|+e(e!DjVY4c%1XmMa>y|KzG!#s=y!#S_b zYva$aD~p^*pSi|-1iA{BD*?cVRcB39CKbhR^i*K;s!qluvjHGcQD@DlT0<}= zFY_&(+Sp8^=7zI~_~vF2gM=*~|A>NKL!LQqcwV|+Y~6vOYTU9ws|?+@jlbOggo zn8;N#^XP&8`3>W?auyNWA()#RV{MA}IT<*$v0>-7m*E+iZASAO=iR^W@vPK zg8HLOF0G|$x@OB$+uvVOsXP#9p5tt`)KZwbI${Ce;nxJ>;uWjjcF(DnyC`2|X5OB2 zbJ0}IObtKBN9q&KRY??9?y`BoZOY!*Zo`y?GC+&}eb=HqtGlo>{va<7p*l^swC&tt zW+$WJ8SSmM7}$J2g_nmGNQ;=e=Nu?y5p9>AX?YaG#Q_(Wuox?lKTyY)-Cw_4o=^4c z$9hEX|L7`IHtYI0e~M(Lvn-fzocd9Q!XxZeCjh)_sq&C6fm&{0@3U$0`vb;V#S zV3CRDV@Lff*EyUO&0~UziIKd$XvWIzsBCJPC~;;899Zn;u&*=wSw>W!aNC;5`*FpH zyt7j6-CzLeCLiIKU?%;Wg1I`_%q6867VFkYR$rrkZ(|o+<@H+fa{H?^TTe6s24T1*2Zv*3C$+P6)az-A=Z^M|yBfO-kMhUGx zPtwD*O@VFSLtkXs{ZWsx#;RUi*Cn=Bt2LZ=E3UUb^iy4$d(9$9d^t8zaOhZF$E)~b zhJ_B1@xxRphJ#$w&^4>hsqo{qW4&MYc<(ez6u>fNWVgL6e@ak38%d395w+cVVYlS| zNNCblKuk)%9mMDEY>yVUZ2E&Axl9Liln?bBnJ{9P->S4D12s=eR}oP*P6*-xJcrRU z=H9*n68_zk93G5^3$iu)Q{&7ISHUHJ$A4AhK9}Kla1eKPS0yRvX>nf{HF-|wee`)J z08itubCSmrPE7@)iPEng(q;ubW(B4zZOWJR%4pOKxzd8C#>|<-1)Kg`TRNj(YE!8N z<%iLr^3m)u=q+;szUs6eRi;g6Yd)VGhbMu{Hu5iSeB5r5OM&)?(QUqwi1FtvdoC<3 zEq;NjjQCjGk5*q#%8ZL_=o7P;SAqoCfZ*1*|IuB0v#>OcUdtxB;4 z%#9_Lbj+hd0!Bj7>XLtn%fcAjeQ&L$KR0QRM(l{Z6QH~sKN4Df3dgh3*x_gfxG@Nf`_C0)k12;jwy^?YSEDiLXHu|~DI`dfwhOt^=m zI<GdT1-J!X9Y&N9OmZhR9Vle=&F-FvR>%&F^bAFTXVeSr*o1=#td z2mP?j^sAi?yho5Pg$j}xDcHw%KHZkBCN8x!y$q<>?tF(NeD7PeXxV0NA2raR`vrVc z$Okarzid6#Z!P8n?LxnuSAgleZP{6t|4G(~z@5jxyiC2a5*5X))IeJY2C9dWEPwaJ zl^q4f<-!!EyZS^wEz^ozv)M;<9D5K3XA1}#2oA+^_OmQFQm((-{|{g16dq=@YV z+qP}nwv#Vx8ryc#*tXr+wr!p6{U6+&tGS=&nX7r%TDV;CAE$~NXCZ-p)!x%jkxAws z2fZlj=c^ELN$S8QaB-e2E=9plZB$gFyt0bJD-~JleFef7Le?y~FZA!`M zp*4Zk!SYg%=fE_1k4(^fcx3pB8!MJ~H&Cm)ih{_@655Pcfs-7IF#yI z#Rvl8y{R?;Rv&|lw!5Y)jbMB(^=PJaJ~3aHoM|Z@6PBExm{&p<&uM3w3Y&SS=PJBw zUb77n3H85qRP?nujdS(Q{7x{w)~ULm1&WKTCIz7`ms8+daG-)O zL))4FTg_!MxhJr#4awSKxQ`TBXcA;E#wgOzoQN?WSOShc%0M^DJ6GPglAnH=9yZLk zREJ6#Eq-q*)sS67UFYw3Aval{?Ei{=v8DT3Y4eE;>=V^a?c{OK8En~!4{}(f>?W3? zQwBRYOIP&u$i{JyqlI#umYY{^8Oc(-PE9C)9aO70e|29BZfQM61A4#|fA+^tH;GT( zV-Lb;@DXGID;GL{TTD7KeU{y&u@sq%?kc&9{fptBb;wYa(r^tc3iC4e!InQql;)F0 zJ;G+{6i+GX@Tm>8LBb4@=eW3FLil7hfl;WmSI^1rNxS zPE`Ua8Gk+Qu!=TM@0WZ8`>>T$`@_?U5&+43c>FvH*Ns;@`+E&# zAAOgm9@&;dNeWx%iiG??%mSOxTrgXyf)$BlTpC@`A9n3uDNr!>jLhBtJQUyb;sn>6 z2{)<+jLp>QT5Cv)0%o$+jx5CISQ_oY+#|2G#@l3>ce^{oguCYn(R;5*KjakvnK(>u?lhwt@?e;?HzB-d@REWoF48lqAENHJyM|rPO+FE|Mcz36B zX$y^a%Tvr#FBH#y-?bN}j_h6HaucG_6Y5}-ZE%fl`bCn6h8^GTqMzQWDq6q`b{s89 zDx@R{E$9k?PT;(sp?%1T;BpfHe~f?XKMA)I#5}o$iN+5K+NQcoHjczwxY)!q?q#(C z{hRcDgAZCC>zL5;o0;2oUR0Jh{M~k>sGd?Wto#81@@f)!SC>{qtj*;4F)k*NOE3LV zgFA=AF}s%hi_4^!RUxCvVLANhX)~BL=|eF5+j1BfU;)4X?S%c4d`v)NU_tdvIXh*H%#K5wNLWT&;*+Q)J6OMd>Y7W>(2^ z_#lrI<7o9$ z+_5FTZe`rw$k`kvRc`$eYGRssV)Qv~ABR z2eW3pJ1IZo6o#01G(|byQ#qB?m_hoCkB?&2>UwXuc6&nU*B+go?Q+Znc4B98sA)O= z^z3X{s8Tat>$lyys)P2!1RYu|rzf>9EeaFbhG?97;ogSES1W*7(q^bMtCHK~% zs^urmwTy#~LK z4m~cjCfn8|*dEU&_@^G0$N5bG^1CAT3%3`Y`9@X;Qi&qZrc3m8ev(#nOQD}>2Rz?P z1QqGEjDdEKAT3ZZ*B*W3^l;xuA2wrK#yU;@5>93}l*Zv`F6*fTO%|E=R+9WtIl*c- zd6M0~o;`3?u!id8UHuy;*j26cC|n#-_o<_U=#C?50kz`UUAV}la%g`%!$-e$-4NL= zEy1%R^shc*@u7ZvJ!`nFJs+?A0Qo0N8~~|{${`q{(++rl3~0LCc6DB~^EuM+GjQ2- z&|b~W6CWDRN9+yDLcwjc^MxHcLk~9_eF^ps+jPKw zAsE#wGyzDZH_=8;>oJ7B(~bY)Wv*GXw>e?oilffeiKP3|);R!icyPFF!13#D94vXt zdJ6ktE=MeXy^470jhWLysQfYdaS`y#UU_=VY6sQSzS9m?A8o}Yz2QspSCmlwx9mVy zPr|fVJSRc5eD|5+4@2jo*uiIql@K}=wN8SR*knLN-LhH*Hf`Nl`|0&v8Fp*?U7j@W zUrf+hAE`v@G-IP^OmHi~P}7kVdtEaDhCf_3B4vNwDWiR@n4GM1Ymi@%3iB>o(-wi? z1`u84&`JBMA)7b2E3R9YWbw}X96t(JD_M#_;STSIP1toldvn|nSbX~WSLXd^ik(1X zJ_VS%Q}Ypzz}{cdw2#5(t+A<(AsT|ByIU>Gx*CfJ6e=xs1Tgpp*p0sDQEtuT)~y_q z=Dd}plEJPXeNy?Pr9=lXB4vD@DX#^$pX0DI^Rw#$d zfyA;N6@Y$yABdKUboH;Tx~8l6rdl%edakRnha9>Vn?<#dFB!pU_V9 zDK=UDs7;Yqqe4<~z)`!q^$^&aPs1xTS>B`EMGfc{ejon$9dIt|X^fZ)5f&PbS5Pj` zfFs~~zqLCw`N9mI7=ehG;q4e35+9mn!|4eW5&jN2w<3 zNNsd2tG|V$4_%mu(h;8xe1?;_%>~OpG^ot z`zJ*ugn^b*kZz2IqW-W#k7@^)r}+yJ6G9I0%wMXn;Ywv#y5icWLT*L& z^gg(rHs2+|&oKJw=^3uc2_u zgM4ax)pjS*KN=G}-VC@VJ&~KFU6>C(v%W zLB6t#g!sUOrpScsG}b1h12Zn{YX@I#&86xzr9xzRafDI8*y_b7G z!;x4U%^cJGX~b@dOJDQqtT%?{7uINHeAJc=ieWlAv;OI_C;^CPTnZ6)uu`AxLU(XU zdpZs#+H@n+EvC=5gD+x-&*9!s(M}RJc|@pnXe1q&i{qy;OLRo_(2=(NV%=C*glync zhT}mxA(4v;|JSe4lW$R?PNy`XaNCXJq<-l$7H>hJg?7W~Vp`G#cdHV^=@6zK$5_r2 zbupmy733+9NCaHz%zA&ePg$L5tt|W+&Y^}68}M$t9|oxdg>dFGU9f0P-p%w;Yd6T2 zFmk}h`qOWEWaZu1J`07aHxP}QukMC51^GTbkBNYkURzrZ#=3|T81ZC@d!Wj#6iM6H zK)+EzdN%&&-wt2+MU?V}Cb!>Pz3S{-Ye-kN@cL(miZuWpX0+j^fhb_2z2H>N1g=-d zT448fZvvyWp01jX_RpheU`s z?$!QS9UKORp+-@yvI2r zzL(+>hnIXRZ19t#taD%sCQS!~aH3%rro*C3_320#OjIXx(UXg1a1V9scR~~E-AwF-tu9RM< zl5w_rBRb7;dqiBLB0XBwlOsJkQlK_ETdG^t#3___4kr8pv;;IYbMJ9Zo8kGNVSESp zrx+i^-l2l-!VYL1H~Uqm8_c{@GbH-IiK7k4abL@VYqZPxvtMq8eVg*>laV1%-ajSn zLB_RGb&?8Ty2^ND=MRkkYZ%}7k70aF>pzBZ%epHnB3^G>N&DAX^EZ$3CB^gjHCX&% z>n1OhoNQ=7(KKyeDqJ};Ox7UHP$rZnm*`P z6cz0W&*B-qDVj8Jj5w*e->UcdmQy|IarXnW(CsIGb|G%~R$MgYIs`n#eyfJT!&Usf z(>8_eQ1I|_3N(%+>EC94iTEcNx2)xGb(3;fM7A{Y0OUK@lv2~tzRgKT zkuS*bL)tfn4)2X7mbQgs+OzU8@$#hj9fXl@%syJ$6)2ewFOKbBzwTj;*0x4spN!U4 zDMx_RFB&;p81ga7gm}7&em#n6WaCm2k5g3qUgimng!sXKuQgysI(QF%Sb%(PG1nHK zSVA2A4>%WR#lEpOk zWDg(`VI#*o`sc2csk$mPL~HW(>l0w_3i#HjB@UjASKabX%2#VLAEKB!pLB*`l$ z1mu|_gS9s9Rw{qS^Zy@l1l{?MI5IAK0U-QeopD!-WJF5?5j?2f~ z6NDDL71NHg_AV9@CL9sQBa%b0=9U^t16n$|yx_e-YV|{lRVT@h4X3%fxN^3be=OSU zNc*IBhNENs#e2y02Fmy;QE7L8SS>ROHHrh-{{CIvbo$$5;8)jhLleNC}>EonC5W~pDHB-y@tQx@DApI6T*U!^CThP z?_7{AIAo*ArMSJY^fPhUj}LcTrkt~@cVz5=V{%4(&nfZjJ2W{q{UUwv6ewEvWm_Bf zJIpeh(VP79p*h=(WNkQre}G#NiE2nOw*L=n0%kuCBOEv(3@CrGkYr4ChM+5h*AXfd zZh(_f4n?Gpn8EL_jAd}bUrJBWW%P)p^xHD{yR;ILqEckonZekZCWGR_!!Gj3$JyWa z;A?(8cTddLRglB5$PdB8N@hlqc!bFdhRN4H_g9?gvsEGc(^#Sd(6cm&kTmn-PE=z~ zR>;rFRwYtF^xsfTnK-&RX@BrUkyPor%ZmHhaHxbAeKZBi4Aa4(;^4n5MgVqKPM=(ilal#(#Ct4 z#C3_Im&^-|48A)6lCq&!jOIhaJQGO}f>6;itF@zGDqLC3ErrHVB)C#+#e{|U(upU- z$TIw}urAUH%cM%LwIb}abfdETCaY}~Hc)1!k>2fOrWQ-z?;jhw;{>@GC`8D^19(Ux z9xzW+4qXtBjHG8sq(!$h##ShtI&0ULFC})kAa$NzZ(pwg=Bs&j?q|a&Z>r(FSrYX5 zDpo`Oa^m%CNQ+vZL89@NYi1`LG~C(|;Y^+JIkmQ4yX&ov` zu-wv^oaTyv`mI(t)PYSe+;no^(#kdgPl|I*&eRT>ZQNulXomA3)|U>vX0$9d0b3cD z60|IJVxDCPX8JSw!fPxKAB|ovbgkKs*C}Yi#gSuS3NifxLD)Shz9st%V7MJ-c)B#XjPjNR#K-FL2)WQYxS2a$i?%DNP3@zw z+v36T+JAP|Xmf@dDGK?K93w?7fDQFIIvBROB45txr4s2%WVR5cr)~{~v!#-{cVn*W zq9{x_2A1np+&@Rm><#Ck=to-V(}2GO2U}U_z;?lzED@}*o?_w#+zNjys}QBKE|M{< zq*K-aGBPMDgjdfJ3*583?yLG2oX1>s&$F-hHR@2$%2$$dk-RfCVXiAspfy_|5 z*jLjD-2VX`AO-zPYO@X{WGfT0IzmYwrhNDpuvn)pu{bdC9R8GKvKzaGiuHC5P7O|) zR8r`-N-NM**wX>s@QGL!*AA{B^Za|j)fcXE=Vap6I&ywX6WS7Z;`$>;#i&)bw(vIm z_-7D9StJuZ8^2DRNrF;RY)RtrD9ix~7v!pq>1xd#`b6cA;^|6C zK=o5`=)6_-y4tp_w^o*wg9=nZ6bHvgS}hUzPz0sYjw)10-;W1neTM8?6n4vQ3*W{f zR3;L4yy#9$pefWPhtZ1ZZcwyH)lCDC(NH(SamBM3@X^6-^kWuw3O8hr#PUugU$wH9 z_m7sz&~eNUtk?0o<5(IFi=^n4%lV2wz=FXLnG^S?lj`07H+65 zpIC|Z^biv-);)r7Q|MtpD4&>}FqMq1a>P14b%_OyPv&f!Nb*Hoc}&DVUAFrm^a#c4 zq^v2M+WXZ4noX)u`@q8wu|FK19~jF>*Da8}sgvRTe%PgxRCRlB1b~xhjOCVkIR|~oiyvB8tL^kECP-+by`SAy*ZL$Y0 zN;WQ*kzPqmImM1E^jA9_Ya~y%K0Tyc=U+m{+?J#W^D-ZO0}FkMWpRCldtgS^2fwyJ zWFn*P?U+nfrzPyHK;t!o*2|jxsU*tLd^qlJa({jse&&VUA^5?ts0=K^%!ygTor~MA zFwclzQ?!v&h~&Mtuy;*?kKIwu2+{CM-y~Sd!R+Q-dTco)lq&7_8pYV8DmgU=dE@Az z_1;8n^+p>s;OP`GhHmAGujDp|&SlV@ z&6}d!{}A2EN$eK*cO-l_v2@r!p)g>vrHLZ zfnx!vo(9#?d>xzX=r4P_TEsQ3f)TotR|M~#-#RUX zymH|-C9-(3;|~a)YWX^2uIAoSNiWAQ=iXF^_xL2!OT{mhA4Wc$V%DpV`To`17Y8W~w+!*h z*}meFxUygSV3Ie@lP?NZej#@};TsR7tDbn1tD`HEJm&0Ioac$S&hAY|=W3o)c2P&? zY#5{2cP;0fG1NRq07d)G+A-(W6gH)Zq?>Z?OR#Esf~iC1uN;M+Pf&jJ>E0Zouo%Gd zh5W&_oD~G8XpWF)w$k`rqEvQ?Q{V91XsQ<%j`BaBwAqlCR)Q)|rN@pIW`eT7W4L+n zB_PJmlcV@LSU+;1`67$*&Fi0SS&oe*;yTI)^dW)k$j6?wJNz~-o z$S!~4>ZBuax0A#MYS8y1z9ZpTsm(ftzzPf0^^-GRigr@&HeYs(;rZX^nS|pS2Nikuqp!iD|fY1d;v*Jz0p<7DVfDIQb(*bLz*utalEPL|C5;no->Q?S=6`=a>fqH={w%F`Sr<5=+B^ATj{C1~F43{PDIpthLH|F-RS`}o)l^y8afXwd5(Gph z#di~q4sbJ9Nzko#6FQFd5B@8C+$kY0Af$W(39VE}CP08F0U}5#i04I5q-q&BD;PeD z_TvZY2?2$yg4fk=^5@&CE6(oelq72J%QW7liSrffOC4smPFRrNme!{hm{!m0YM>zg z|6mLOkjP=<^LGV~250}Q6z+$R{qr-)lVkq|XFzDjr&QsSk3yaY`%H4@?Bp`6^GGsO z+%WUT0z)2kb_yn>Pf`E)A`?d<3->Rk6+Z;*D?eFXH&H>Tus`u>x8amzSS>}Cj-uS9 zNWd6O=tE!b4W9=UMq&)^Oh1O`!C9CHXF(Ve!Pi;@=*3G4^7(;X=%dTf>We{`7889W z7_geKKJzU`DVA6~KeI*xl@mJD@!ExOIG0D)M@Nt&5n`j;>fu4qxTlH&=s>v4>_fU3 z{iLU^{rvjwB5K&7z`?_M1M2`UcLc?d{=(Ikm+2$pgUe_^?yKTY#|UFp-7W8SSqkDs zpBRceHV1(r@Xk98b{_V?iQ)K7kB@?64`}V}?;Rd}=#$|gcfaixqbVx~+e{h)i?|=m z{X`dc_rv@0B4d+@I0glYO+^&->H+vfk9%kPr2%kx!2C_h{TM-N=8%)-zh2Pf>GhSNSZ+MyMkNb zL9$RLGEri0vz#S@G73PC}c8Hr2t48*L&7{FrV1@T}* zh;nmf0+D$CJzs1{v%vnmT!LL9xLJ^}fHZ*~XXjac<^mo}x2}v4DDI_0tQlheM44NI zLm1k-)~46$WYYS*4iHNMQfgWq>|XJ3e9};1L{8yv%>c9+04AyIY!$ez zz{v135xWYCXmMynoF+!&8w8_q)5PRY0s>NRGSXVrc^(licq6!Vz^`>}S)R-vGYB7~ za9@WdGT zU&I%CcGCCInHIOfkI@D|7vHsmfb4|2#K6|beML_@_f9$@p|~iL_lvGei~Q9YnaAei zgY{+T0^QKa<+kMOTrPvR2)!BKDC>kOEVrAHZVPzShb(BtPr16^UTP`P6HIKH}{(cek@7f`H2pPV@GyEPE#S-?Z; ziQ!eqQSpFFD3NwBmqH#M-$Ii@omxB!N_7N;%tU%T@{nOp$sL7gcn(cUZgG7Ua7xk4 z7Wghqd`j3=#Zv&G|8DZjbnc_OK94txp-W;Oz+(NJjK7?l^M#T4it4C{|UXkDNUC^;ZdW11Ab2ZSsKaoC*fKN@3Ipj5$cQ z%Yf2V$JZUm3VKthwmr|VQ5_kgpUzIN|5orAwSAIs1<^#<-Hnf(s2a1BT)8kXK~C{I ztt_#7P&QffKFR5gTbc)dN=p3>rx*%YCmrGimpfaTO8GlFABfVgL-0STNqRCQVHbZ+w5u`OOW= zhFy_ypk*7RvO2!?in~0kY))Z1HELNi`9OO8Q1F7*`1yyzEIIr4(5XMhVNW)kRD4Cj2R!Yh^v~aZ7A3olIL(sWS{MAT3l6o3_X(T7pUBlVC-Ti>f8S$- zUrtp58!npR-cE*xoBaI14y!{8x!->2++!-G4QSIJcxllt*9GSjQ0`klm# zd~jZm;&uLhm4;bHX$Px4sjV&C@tv4XQfmJM26kR6dM#nE%}sizpKM7r&HdO+j3|J} z8_x+P+ZRx?`yJ~~gf1M8sUp*K^owsl0{uDgm?~x^2BXm-mBsJBFy4ZoWvJmKP5k;h z%DE`$-Z^&M5fQ+-L|8z@fiuYBq~rk@aX{Ps-=7< ztjgqTxW1z*v7FBLjUa?i;v@Wu{PnP9{;?(WqNcS$_b)a)a=s1) zqLrR{8^0`v3Xi^0MZV~qgy+iQ?`=p76>+ZXpz@0MJZf#6cNtJr@Nv^2F;?|dT^+Gl$OR;S`F)Q2sc-f`P+j6x^wMZEc zWerMu%aUeJmbl&wrbZ5f)0)dGtvmIMpVg`HZ6S7lm5VKo5ccLi8y5lfMViLzhE_;J z57Z?SS=Tjd>gTEo3+H2dHzNpQ6Mc!AI6>f$it5g$BQ`U(6Yt@u^mw=@s_g{SNEw&7fHuZEO~5jeqi4>lV3`U zdC|_uvP(Rdv@E2j2@L_gu@!BXFYcADqm*K`xdA?@j$ z`=~N_{1_CR1g(GDSo$|~p4iF?eoum1Stj1*Ax2{q+}epW=ZVoT8HsYz%;%6hc7svu zYt)Xg{)Nf1zlZZjUw?Jw&n_(PKmR^gu>5YFuQ?ivVdeyu_;3$kCxgunI?XHyy^mjM zb_q_rgfWV19s2p1plal5cIT%0Hk4fS2Sr0L_&Ty6gtmeUy8IoNHF zk=-4lNYqn?ZMN$r{*cwW11)G!*}^?zrnB`}gTA_m@qz_7Sz&ZNdmBeabagJ+r10i1 z3DvqpC6PwtsqE0v_9`U3sAL_fD*Gu@gKVTo_WvI9zUfU|ex3M9E8d>OWQcLISC*dY z#w2l%7<+%@bD%**G|0;bQ%(gxlrgH-7v|yZ93uR*U~N6(Zh4W?!xq;nxjQ7w2aidl zm`a==!2$qN4R5&-c8L~??G*e^CS#;?MTT?M_|M{MY9+!wW=5TS9J6!3tGR`#zvWt$ zHfNeM<)>i;o4Sp8;YF)QN_v!T*COnmNC!4mTqG0}Sg4ur)-J6cLEQEy$SDym$c$FI z{?Af`>BdY>z_K6tjr#b5&6b&Jf6P@fUjt)>iYEZKdQ*Bw!FF1`awL(7dZhfZScRK$ z#BpC`N;e=51!~u%!uc2aXN<*b*zZOt%4z64;>X|WuOSlKk&yfTH@~+@Zc`^Pzd8n( z=&5p@j~68wezy`$$hVc8sad|yt>DY!4p?>Zn6V(B`9 z1YQ7DHP2-&e``5BsAGmO=bdDgG;C4|*7yY_Gm1Jq*|xE7B?5M3dYOtAEH4LcrC-&v z`APJ1j`zD}ii2)PDx?8WtW)92H7pEW*qjP@)OHeR>b~sv_gVX)s+;F@iFRS} zfZiNT?J9XSFiTNs!=Ej!mh(e3>r?Xqv(LacQ~mt<+u^p8oX0sKdykE_QF*ftY5T98 z#PJ@8PZ8Kw>!nlqAMQRp#0}RIqCQ)&%ssE6fvZSj_^Fwtsc=S9EI+7Ilh}<9e(iJ7 zrizqY>0cIpqFAw=BBt--w4y~12|2sw*~#m`7X2C%#;l-jdl4Y85>g}JIes>Q4N)yKB=L; zX=^t!?!6aHi$3wda}k?(%;dE8c|bQjQ};)nf2IMXt3z+oIg*c((pR(kw z)H{e9ynUy2vWUfmob|T-)!v2Q77n0|b)l{p|HyjbWt9>yq(!6<7$jUG5{4DV_sk)XbQQhlL@eGD(FPcQWiX5*{ z8q20524W;f!+)%1%nh*pGTomrY9?uZ+{Iy2vpEzvtI_*_dA7)apELl3)a>{*TiUF5 zJyDr(lGjsldhsnJRvSD*rITJ7oH@Bnpq?m)I>pKb;;Y7|{gj;gD-P~TZl=BRe$K2> zOsUq&t$;&nd7CxD-}}NOXme$zZLEbaCZ{MI#u-QAdXb*Q&Zf^d{>iJselIaS^H6x2 zDir;_2UdJA`WrTGR#3nz^`1{}w5uq^RF`{JhO+@frGqh2yUl&2+)^j8i0?q5g|j`N z(A=dZKPW`KJJ$NKY2jYxA$}@?YVEucJ~7-COL$uxgC!t4ueV4j_5kKP;|&?vS9o#F znWtVtYxs8vk>*`~yfQ%>Xh$hU->@YreVUJ)rOITe#)o2?a0 zZl4AHNcwCh#vI6US9TxdMu5@z(hA)Pt8rbSR^#xOt|#WUMMR&pzU&cMHk_*KWavJ< zt2mbNUXugcLx#LALnkhhdeo>YTc}sy`n#klNeu(VJ&VA!#$Lj7^kmWocH=8{=1cGQ z+dtire;$0wX-Ii-{uz=fx<+*CSCl)_?z9c%y;HZZcMNcA+X1813%HQWjE~zw7mIPW zv2(zDLzhU>m(vONYeFM#E}K;47MoSJ=d%WDHoGO3maH?e`nD>1$v$qJ;lk9IQ)jkb z-6j>nNToMfwpk*k0eL0wL}hT=h@REx;%Q?bq-^{7Gs$O#Heo~34j1i&XT?N+0)?b1 zRvg=q7z2pBIxVcNA*g=)b(Dx;ktoqM???Q)+M)Y{HJMiNWmqgX*h-9!^9zB$Z`oxl zcC(aym7Np4*C~|QGL12%;d;=&A-Uv?QYdWzJRqJu+5RkhDQ0?~x(Jz#$4(CiYSrml z8Ix4fSZPt_CyYJAT4k(JBIOT0T?Qqq;)N~6MCyA99?F3& zD1shUCW;8hSt`KoU1(>5(7mUmZ@>=2hnJRotYO?H^(i5q@89M%CQ-`Rm0M^gI6tOW{V~ z#517(<+GPqw%65_H2HR5RTttqAn}wdb?iuIEyBQ^?+XWRXZgKSzOO6U(Z(71k-$_B z(RY>G-2MpKZdwyRZuyxo!%}7u#_1U|xOTRBnVtQ6e+EIM_*d#7KS+hcr0>I;=cRFn z{p`!*g4TFgD%xBD_&9j1s+v$-@D6y|r5Dhdd3A7GS?;f94ATnVWO=>*DjxQL0lg@n zMJiP+h@c$|iy`mdZtj#eM@j>~CG(wj*<=o0z#D?jalyr3H{4c`&Tf{A>$Io>kIPN~ zXK>q%XYdihjVnI8X13>r{ZGgm&uyi}escRGHI=SHe}I`A_5lSw(86 z;6)^L6$7#(AAV7bD)ogxb87iT8 z=h%FzGKnvULyuW)^XwrD7jPR@o8%)cQFIgA~{!o5bwK1&;E z+Wk#}=bGL_{xGjvM3nK6P~*4F_-PSR4~N5QYqCkcJ|c(SC$J_Ss4zr0HYpH#c`1ze-(L;>)<*DnTA> zm)-v*<&N(kZinhS#L2fD9sLS%DdY%ArQ)sK$>^JG-LevRAlk3dqjpg_Tg20JGC$gI;0YLvHn&TZBNGv|_wu}pL6 zcBkuo_gnLbCyY9_#G#s`BFvl+>VR5|^espr-{em5oHKpOJ_bHgw5qKn-l?~LQWp>$ znk}RjTgeB@WwR%IAH2}lBwJ3a%(#4eXjO+rDep)%;Y+ApggRMp;RR($`!iS5_T^08 zs18K#mu4?CLB+E-&7V4_lz;6AFL*Aj56k0;Gi_*@>aN`Aa}7z9IpX^tbxA9swwteV z*)c*$9u~C-mjiJ^=)`+*ds}A=^lzC|8prk*HD>A^3qPGIV(7Zb7ugF*W8nI-$g8cVR$U9tA*nfW(>4<+V}9a5CPT+D3mE=y=GBU_)%dtX!PyM zZ<$~4me|!!e+dNIdljUsENIzAnP4lC-!FUfsIOcTTzSzG(3cjhPV1neY@+syYX|H& zHU=I85NWk2EOFqJuV;Kywo9FrMW4WTjr-Ll2L`;?V)1+;QK7=ohz}-oLnbZ((R4@l zqAmfsc;H;2TTjNGMRq&aMtb)mlnv`lyYXjH2s&xLIiWxhbG&yQ9h&+q#%3$_4&QLYP9VeYHWKj zr>KJ`neJ~kJSUbNKi+c?#<8HI;W?vJ-g4cFir)f2F znnrqZrbm*VWI_5*ovQy3kcHEq(V7jjYyr7a9Ig8eiJcoo!4fi2kvmj0%*lrW&zEx3 zuDpyn+8bFn3ZEWTMU_w)cfS^MB(REAq=*0meXCG{d|sj+z_N+0MuxzX8l zb@}iDhH+zxN_@M@0qkxs6!FQy>71X1$zK=i-YdnpbM@JOP{T( zAA(~UdrujiEDa^C_o6bHb`>`ebd0faEp*`+bb~!Q7u9d9FN6B;A;6^CiGN94 zdo*F+VtE{Pc{9NBkSQR`FDORT{>)SmLmXh9B@Wy52Pp&R#`DSZmb>eDJk3{vgtN0t z*i}R{1|=7oLqsN`NJzA7FDlDBS_BfX(^XZA+34R?A1cwTO-*eFCwph>$Xoi-PC~S4 zzj?L%`c!!`iyfIIW7U(?05qy-X?0nDqs?R|%$6nh=%zbS`>(78kE*h6-DYXk#lGcP z=;iwGU$t=?ws*;!Q=wf$cuv4*7KhW9nclK7I;&1rhH)VgWhQCNi)HDI!l=Qtxzv2|L{v^HHtWnF zT>E`3mShP!%}Yrp&EvlNQTBc*z7lo1MntFDdQLye85(VY5+_%C(X`I?UT6>K-5uJmq^>x^_7p+r>K=Bm<%s9(g>%_VKE z2BY0m@%Zn%lW97P7M>U!0bLWoSJcSv%sdkPD!FptYCJeOn*C20s~w#CLuXW#+C~x{ zb3r8z%P5+s!n{f2^)4Zkt5pw_Bzfz_l9e~IW~9o9*lpt@Sb1;s_xE>cV5p% zsdT9~%-uR`GqQ!AQ9ZM);3H21y&i#PMNm^(A*R>SN-e9mGe(!xfkpnB`c}k;ksn8b z$3GCNJI@-ifkFnh_I~C8KIdqbtrnodX0VkK0bqDR!RMpbj?%aRDW?Y)qq@eC3T0} z(Jg(#J|I{p&Oh-JBO)`HTnWUSb&>x@fYXYa9A7#&g z(s62?tZi2PwgsroyQC(r-jrl%lPy&dug}%^jr*eM#~Zb3<`>dtO1|hNpCY};h$Uar z=?ytP`HP=Cd}cum9H^kyUO(s|rGNe>X5r+po=tdv%D+`LY88N{_P1KmmeD*-%$u{` z1Y1XhN|sn{CZc#HyqahwtOyP8n^PS`*!8U|s>}2UxV}X!N5;k0Fg$7=!}Q3zo}Ge< zW{ii8S%S$y!hhFh+_0pDu8K|`*kyU9?6s6G^xP4BveP!S()&I^$C|Cr{*l|4yK`fc zj;yMVv{yM~?t(CFs_(fg*<9fpwpKC!T-(UR+41S&d9Xqo*`+X~0(>glns%&UJ9|n^>n~ok3n* zsJhDiZoA=N3p9Lk>e$7!p%QYsQMzH3)I850$)+0wGB2x-wHA|6Z%e8_Zj z_wtDnZA-0!$YZ8jGv5%{ESq)+Jb~s`>@pkDHz7i=J~3V5&5_(oGD_RP-5-!t!5MeM z5G`us38%RHhDxU$EiYJIQ=V;VpciMYH)&?cri10U@bRYuF{Khgo#Xses6;?34&?bPK(d;GU8H(n_)YsdTVww!u>PFrx{#*kX!lGG~y*6LM1~$u5GjTrS0uY z=5f2s_iSZX9bhgaI~TaEa#v3eUdHhb`GqE2F?_JdjL4HG(hPC(a=Y51n^8FBI&4G# z&XUAB&8*vuoad%!CZ~u<0&Dy%Kw(Fr9?G*)Q6Qc|3UgIwN4-J^8Z~oMw`d@ur2RxPE|G!rDwRc9gkdeK2l%1I^6rzYEauJeBNFK^4D+;NkB$T}~q7vCc zHf8fa_ui*(u70ood39f1&v}3L=X^frJazd4K=x2L|@Bb|UL*;nbgkBMCkIP~hF=qR|5SidTd(GVGk+6n=15ZVD`n zT0X@XFZ7$|Xp<4k{(i|N?5tOQFv^-_wFeM^$)+o!++i*D?0O?&fhf0 z&5&29`K`|g8{r6BLKZ)7vAWon4t+>gonaM!d7F2#x>tXH^3Y2Y@Xt7$E?IYHM$UVr zGyHgr!VmIu?M4)Faqrjd?&mf0o4MX);2dM`9zgMS3=nqG6!RyjcI#JJKP+RpZmsM5 z^81>N@rbC!(xlJtlamdiQ(d-Px);N=hVUyym@-9}_z$RQ&1wi~T|%5Zz_EKjrNXpL zV&Moa@po-q2ND$@qJ!%$b#* zNO?O~{i)}@o-b2#>51cZ0aK<=>{9Zd>VIQSr$=?g*rkc2U+gc`lL+vn4IM}mydRP3 z{)!fm>u7sS%vd48{?zj<6o^G0^~X;6Hs{ejLu_B|e`bpo;6J5#nU9N{ITTT#hmL&#%^wHdG zzP4og2qk>PpfzehfZTb7>|z4%)0PWn_By*%RI_*M`Q`$J>c?AoNoNX^-IiXvFlhH$ z(R#7Tlkvv#sjt$0>&bh7%&<8T|1@HnL}56oC%EC6mgkic-F!Opg~iHAAJb%e^<;a! zTJvt3tFSJ7EfvzmarlNX4x$R6a40bhM>d ziLNctEz{|iSB>*Iw%FVowMN=!Z=PLnpVnpCA+dhBIUV~mfOm?(O5`QkswGcn!|WAu z`)2kV9(`Y#P(H!w@nbC0;_-2LsmVsocK3KrxuV)62<*aLOXp`K#Yzx2?ba=(EVT45 z{L)F7UL2*ea{q`Q+|zxvvcOd~+G5DyXw35(HblaaG2N~%QtRUPXNXQy-{*BZt=Ii+ zu|$4b?tbR7NKD#f$mg?fv<>AHry@R+DEr=)dTyIF^x!hT0HpxoW?J0RYdXD^Z14_? zE?Z$el%~;yxt32+WZ9h)zG+-d{v*yi3fkh}$J&Rl1ctn^cS`u#t?zq{tC2E6&$}aK zESsxc&pP$);RmUozGQPpo6>lhntT}pzu{)#T{n_GlP!B#SJ(N@ocrzezta8`9!pbG1#UCBOUB9ma<< zj2(oPIn=32@Q+uC{yElL=q9f zK`0ffOGB+reWQzjuuDH&knHeyIK!b*t_$~^%k0GrVkkcpS*cMoWakMoig0}npOp<; zEAp&RMa{RJ3QC&~J~MxQUU{}v#P*;EF@iPHUL{>UedK}y0+ALybv9ZnHMvLRkfOWS zEnN{8)N;ae=MakP86Rk?Rn_%1j;9*O^NrOmCYba(YQ#`$*)r5t`!Ocb@ld}=_~I$9 z=W~$egh?XD9TA~6nyz}VMG?QDL3o+JDQQkOX@Ab)Jr8U>Lw2plOjLhacL2f=2@`} zc&8wLg_+h@m8j_qzHYr9rRLsPwW5RX@mPxS_8oytr12#>W>#M9K0dQFvruCxGsSJ8 zNm7MSRBr$&l7e>RJKsQZ(?|5{BdC#lL1|6XWzv|SC824r1XR?3Km4IAga5J zt(4e%?{_|`xld>m9*`_uFg5$IIodTsNc^A_3s;J|uS+PQ4zpn4Nv>*zUU9ruC%N#; z2k;{Kbich6M-1iRjYP|F8W7_iwvkQbe;>EzGuq})N&%P;Qh5`TpxHO-ytVVv<3Io500 zTy-8OuGx5IGC~R({t;uV(?X1Q>NAdI-|+k5lB+}hg-}~L{ZGVDLf33uTr&p1!q#fGRBqBKfP_{ zto)6LVXFFgOpp5LJyP9Eo(lRY?lr8XhvM8miqW3a3@aqjRi;1og)DLS>l3dWD?46e zI@0Veryy&tvy|UxbgRa?G<{9jo%+tTlsIg@-VC((<*HIu^hL3{RF}ghkb_t#G`kbu z*y`8;6h|Wd2RYuXZjl?G=0(a^-7a(c>eyym5xA%mTR-e}vNUG6zD%gjdov9GNa~^T zZF*+H3vOiHD1+%~lJZbO>cG&N+UlGa#C;jUakpcmg&HZ#?&6gktf_MJsx_{1Ectjp z<%?ErakP8W=d^L=xSvmW_)oaUCdV9PYkIE#4IzQzlTWHRLqBe1thwHqpK^Z55MEF4)o?QM0-deNqWWhVfTBH-lehrNWs+Wlger~uNQ>Wol(mLLl zOz+2yC}Lc6<5xO3^xJr_E#y@G?xLc1ieXP~-Y2v3D0|u$m;CBE6W4_gDTYP2{m8*% zX0j2mL0xBw6{F@!)SZaXBTS^TUYu$=IzOVNcBkPE4e5yFWeL*YqR=+=-(+EN8SiOt zxWo%yVja>PU#c|=@*vA-$;`b_rs45cSC@g5E>FWEIJF~;l`f-wg4dMJTF+`UD{Q9wswQ0WyHenrZ;ZnPp&%%=Qg9V>9x1~obZJy9d|NTPHa1rzYu+~ zoy%?Ms2(iIRwnw%R}dhU^^OtiLbEnHb4z<(?N8Nc_`1Nc$`-YGBx6{XZ zg{xz)v$u4eH9l+G-`jhuzi@+HUT;izdBDT)NFc`>luGeH^OG@l|FF3O72$mLMY2Qf zLrnQ=c{4^=Dw$@XW49W{?NEy~zUMryoy~mPTYvoA>&cl?K8V+W^Zq3!`?B*T4f>Cv zpl!9OD>XG5(9|&(^)%V?#|`NrN_<(D*rv9&9XCrlRi3J9Fy?_TcuQj2EL!fh4Qj%# z^5R;n6GCa$*#%KFcCFvj=R{oz-59#sO?S+zAAfjQ`N_jx9|M<|VPwJz=7~ zv!9z8&0|9*naLz&Mtip4}$v%71)1a$fb()gR%L-C+(B1D>M~9-r4G z$}Df+dgUoD^{&sJy>iMcCnw1)Uf7?sESEKN$Bg>T%#`a+XEwxk%l_zAjpk&;_miGP z*ZF(MziCgP25%_*m=POiVK-(iD=>JMK5zcS^tZ^F?xQPVcW3R8q0JZlTdInL1+Kqy zco*3JU~$-STq}CY{ai)irKaXiEp|B*;$QF2tiG8liCKCcwS1+*Atl$LSn=hPll>=( z+BcQEKKv*sU;#-UwvdLpSlsvWz!{tG&4+82-itg? z3%=HXkYDS+|Llh*F(Yxj&Yk-4GF7i-J?g^QPfc5MTtde!q$(@kS1MmgUwwRr`-Y2t z=g9BPBcbvR5=R)9n^rEhI(nKJMj7}s+1pmVceEe7x$Uq}d4~3mS+eU5vJL596dS=J zEKxGVzm__sgSRAq@&=cylWizfK6s4!<+QYRqoT~UrY~T^ zYB?Z;Rc`d+WoIs-w`Dwea$7>{TjDA0$_IzOzv!*d)*eYW88{opQQ4~qwyteHHp7AE zKYCno3Uoah$XT>hUle5)-0%kKa}WM-{7qlwkk*gI*L~?ZIVT4naO=ld>ZrauDqZkt z`B-mq3h{zd`9^)gXO!bi*^j)peSzp%3N<8uOKLyqKkrNYDVI0n zL6Mzai|AX~!cXa!E>+zuBX_tbE9F5fvs`NTW`50om;I&f?=+>XuK4Cgff?HGk50Eu zSRU}gpF8OLdp@6a$JTZYpGh?!--QAaeco|Ue39XC@TuYx^V1=pQTO_h#PxU5+B4fy zYz9oF-+J}k8SXu@#B#XpyGLL^$(yhJ3Q~=_VqRT$gcb{r?!K!REvYHq5mr%+`98fG zr2Vwc`}bV8ce|15rw1kU^3NrApKM>_65<|Xqz-|Q|_d3hB9u+ zA5l;5E1M18c-tSf6(YWknxzVve=Is>RH)S1d2%h_6U+ALGg})iTL&~sFKU(wL{a5% zxZm{inyY-S{>2L=SvM%dHPlu1Jmyios6<`2Hcd$W;q&v}=gPf~m$=$L(>rg+=(5;* ze$o0>y$by+|Av;AT>fX0bW{&Nt@QX{l5l7D3rB_~ldf_d6EYzAD0dpF;u2C>ckYTv z#g3DWjp$3%>~zZ|hEuX^>|Mg?y}uQLD}$TaM<=@=PTwmV9}upCU+*d2PYyKDU-f@c zmOb3a(AG+G;p@n(yBWceohXwJ1fEZ;$%Z|tK6u_?Z8g*Eq*8a%F4CL2qxJKFU8cYj zj#Y2}if5l%wt|NF+nd8EOi?NF7k1}1+J`3kI?mI*^}aiH{`tn?`X{7!eD5BAQ64jy zmc=xq+9PzU1R9uLxi=$fn#~&2w^p#}A(5+3zI!G-+SgOW{tVRc?!m0=nB(-lN%OoI z(Ve1fsZ(;Q(;C_{k@iHRLH$=d+e2PG`6l$}v*%8*$%?_+2;OKOb5jiaDcY9}-)h zO;p=NI52wY>06%698x-A+8-W5?sq2$J#;UX1ax&CJoz{@r;C$Pfl0;pJnvc5{GHDS z@_${ITf6$ReMY*%bWhqZ=r6!{Zzox z;AZpzOZxARQB_d6U(fhUnJ9;RHnUZU?iU~B%RXJbRw-{=xwvL=;NrC66I;;@J_O;5 zz{XwG3xsQ{TuoJ`fro?q%j7l`J`jM+KeQgBo zLta6m5e+3>LYA$nkd|#?+}}t#Ri?L94;3*YrBPmHbe62?O}xB#1e!W>razqsUwc?5 zt7*u_tnjLp_-JQ_KD1bpKSXd>FI8Xs&DpQoY8{&Kncm2U4+6jiSHL#b?DX*DooHBGTBAZen&Fp8^bn<7odre*x; zA(FQ!M5y*lXA~yE*H*B9=p{&cSc~x(niad+bhj78->W?mZ+U`PIE&l>F2iSXi%q8YS3S~ zG)o*u5b-{blc90cm^lOQQHbp=jS$=DX5%W2@J#B01y4d>#z^V>brLagL>Nhrdhw%h zEg!;f8Y5)qjwGo$7wd#Z4)ql4E!z-Y8wjCmtQkK3%UkPat#FTh4#nrQQeX57X=$dZ z@iI|2kBPTQk}Q_jy>UY+X0C}4s7v@O=GKi!m@6iQ4Q+*vklAhN>+@)7U6w}5K6&?$ z%J$l!o#PT73zo-?=?Hi0=R?4E-u}|W4-`DR!E^iIqNcEkZ15sWWHkY+u~$r;@bLAJ zgT=n|Ne?}&dAT)x%x>!Y6DerWRB7Cj^@vD5fTCIQ&rKrG_0u4X&tew2VRrivGd`mj zbb5KM?vvucmK7c~*?S{WJVyjgRsDzLAAH@;LZJvQ3P&CBiC@FrQZ(HojhwX~FG{HN zuIFAcCi2Wu_gX6nX#Y%29OxvTafe7)F!rMzN$BROLjJo=&XSaJS7vi-j+=*1Y6bEQ z6w9GhluxF_wqEzM=zOa7rrLGl^kpc_fcnP`=~%DLn5>+eo~f# zj88d!t0i!bQ}oI=K99|f`zr|v`pTz?FJ8}GA$i8M%ogq|krOw0MlWBlS*U${0x>?U z&CN#d!6W*8B!9s1nlm%hIVyAB`IZILZP3ZGsnhDIo&W}KJw zdUq48J=KZJR>B_=7>_>Xy~QY|{f&gpT{g%)7QvR7e2M-`1%+71T<-3oH~s0H3Yn#{ ztl!5JlNKxvaX`?kgq)7P-KJ$)RXNJL@7FEyU9Dq;7BcOhNQSB&o${Qux|_BfP*?CG z*YZB<Bx3Y2hL+_iOYs>ji#*skJpC?l4bG1=Hw~P!neX|;Pe#-ooS*0ADJaHrU zH79eE_Vsq%*mdgx>CW&u=^(K)KkwgL3Y9-Z&9L#K+re93Y2j-C)sER|77s=-rsFM} z+CQHtCdnmMj#g!r8)e`xZ4Apnl({McQ1iL6C2ILG2tOq@dCB+~sAe^`NDWXC7`8b$()=Ov?6Bn~%R= z`S`*o$<%yTAy99Zjcw)WaB#|Jrubsd3q{w=#*4O-HSg6d6z0t`wKo&5DkfwOZCYm> zyS`4$N%6XpZbI>%iL{?f!+MZnw1KL;ba82sBfsw&>V>d!sSJ~m!9DHsHPa#1@d8&~ zhB&SdIWVbReOhGgJuNFYC>#=`Iq0ml{p0hRjsF`zhwf>A?4?_epiq zv-`{jL5WHIM+eKEyqvh^KdKxQ%lIoTM$f5;D{PhgMER3uuh^Kw!ts`dm&{`@y}UrUlzY3l>W6daF={n zzS~s#vD)gwLLJ?JBBa7>6Ffipol>AEFKCeTr_`Iz2S2ATv=+IShZMVAoSYR-u_PEw z^w)ZparSI}P%(%7A@2>{-qMzkspZnBoSX_KZ$`5fs&SN2I)}s89^;@n!w)BIu4cMd zvwz{=P6{eiYVDI>Kd$kyQY>}`d8@J@#A=OKRbV^*W?%4Tmzeis)-IWf%fHG;mp=tK z46bQUeo@I>?)?6)sZg0`o^b^=GAAne-D(s36g2}hAX_x%H}J^*_DlWrOWDEII|iS> zNYJvSpKNKWbW(SYEj_UkqB}8{RJbZctJ-Dq)fWRa=Sr*!~b#X}&N(YJ#C8}%H}a}Ffa5vL0m z_H(4U$6Kv@9}htR9xVS6pr8DLiaC&i7|zuz97zWV5r_pM1mYkL$o(y}#(_L+iTsH)p!il`|X2&8^2FnF`b0Ik}*aC#4?g8K&Kky|3;4bl=QHY0+=F0`OaUoeS*f*yl z2DT^>2rl3!;XOzMVw)9%6@l0skQ5j!N&IZkEfNGm3gB^d&=7+8h8}`-IJ}Y+6c0im z1@MP)__9mF*ug_cCd_U9Es+L_5@`1jl7Zm23_K~zjby|K<+Rc}dYb@&_yS@nio|7TQk{&ZB z@-f%71DZ$Aq3p49T)aqTOuB9dbb`-*fwckBOGKH?^yRU z{CNipb>%}cV4&u^1B+C^OCrEaAhY+3sthc&I2NDsALk;r9U@;HKp=R@z+(>)0zs35 zCELA=Pw@}g!ZUHUDiHjKKq5B|8A$<_%$gs`h*4~`f!?YWIOQF13a$j=Vk|VDANF@* z!LM;skQ#{~iFt6iGQ5I@`H>PBhH_8BNw0t$G6u^W7nRq6WvDNJWWqpejhOE{18BrQ z(9```=$ruZ0F)(wq`}}P@+pXJ(;yJkAbPlq>+`*@V)`Vc2rkVN^+5zkaV9vM)4m3JU0JSj_FhNR(VXQZ* ztYOp<*zS)&FyUYi3ll&eSqPZ_NwV;eMXM*kWiudqaJz-ZEl6D$$pY0MM$(X=on>LX za2FapjAX>;k3&zfiT#fjWzb6(e+~Gm1f&<}czXszJeo)t6WEM$YlafA8Xkhc;-+?Y z85+e3Oz_PkY6D%tjR66!rG^uG2~LS3nK2Tit62_x0tAzQ0Qhmw zV4L1c@I(}DHd&uZOD+Pi7BB%O&)6s0N5D2ez#IM6 z&c9>F1S%Fo(nCkYkSv&hX2^HyKt^I9p#A3PDP{;I1{aW=mvOfb0uCMjbbve?G*k=| z`{EJ$hDD$}#nJt;2%NC8=){pM7^ur;;KGm;0#WO_zsyKn#X=p$k=SODv@mzFi2;Ea zNtY3jeOfR-S6!sff=%@soWu~TiMaRLu zbL_}|JB*l!pgAIlC3B^i&ebi$T5Q8}W|;e2hV+;$~KvE;KKR6v7x8GtAVv4jnoQj10DgP~d;a;3$$7 z!(payM#ZC7DCp1(XgSu4dpU(@_hy!uLU8gBQ(8r@l5e!P<-Lk=LP#E5T z!h-Af^>{QdCWtMRhzwGag6r!XXGAwM1=x-O8lJyy0MBZ&iJ*=IB3|hBA1vJ^_pK3N zqLSo(4Gumhg2ZJ(vbReinK0`O;gi+73)ln zODJ#zE`itdUV;mM2ue&ww!(pl*)sbH#5eX5yaxmr*9h}g5&MFICa3+y3sl0njAge;oGg}9;f9`sjS{F5X9 z;c1|jH&c(ZFc-a|vNJGe{uEgDr;?-~LFBjANlQ@RfI%Kif#2_QA02dixj7=sIq@x?+H{y^^&=aZX(g_aDwj_abn z%UGzAGOTMNQr2V==o$=aKkgbn6N83g>v5%N_9aaaa5+#;a4ou%41G|Bw}n^u2}@N# zUWS7DiW_gr9IRL_6}V>)oVWTy2#je2#t7_*HrOZ@{|6<6#M6jr{@L^1%EaSm2en}c zsEu1jI!pJ^)~moRM`7Dp+8!(!bXnuaktO&Zi~m?aOb>CX!ey|!QilV5WIz`UTr-** zuy{vR*o=kyQ6C3o5r|fs{U^%#P7E|j4V<0QD~Tzg_kca7TWF=^YS96{;&S^_ora7A zGD#s}gvx&tQ$SQ|Fu_eK3*~G;F!Rq==(G?_K*dNx2HE~0=(w+F5(SKv11khKQ?&G8 zf($jd6`7SiywwMS@C8H{x9S`)gRwu=kgOQZiDu3?y%q%LIko+{a>x$GDyhTwW;`xa zYEuEH8v{LXgTx#KV{fS==`eg>a<$lL0f%>hfa2=wbQ^k}SXrX5KeDk!7&e9FBtn=6FyAX25D{~KqPO0$m3%Bc3^Dz6bUWFtOe(~=d!42 zCV=^68X`SN5Dy$8H5S9%M9va@fA{}6p)$@?44Ayd<$WK zCjofeN}z9u#b48bTaBGq!0;GYM~=YzTsTFh#1sqd(1G_hQ*oU_VSuaOKU{ll{(}-i z+{fVh#bSDc)f7b2MRmUxiH>MIGj#44?45@@C-2^c7Ic6Ic%spBqL`komiov@0!X9) z5^+Pfd<&KsKuQ8p>cV#OM#r3g2(qFP#1PjQhj=XBSQozkx#%x`mIS(>3nVJ1VCT}o z97e2p_{io8=miwOcew7pmVt%N=)!%_cqF-I6|A;eu-b5;r7y71+i9f#-eZfA3%YI$ zI#(Q^!A+c*QY=}F9-O}JU2!2L;OJ5S9Dv)uFSnqfbkOcAQc~!f9_)jPcUoTTz-L^* zXSl3g2C?|}ZNO(2nn;PDZF!iezjO0`HOPVjkj%JdRE+*dMEy@k>(o)C@&rnWi|+5& zl`}9|FDV&RbsQFBmpT;Z2t1_(MBx@!XJUv(AJ}5FNJ`8G-TGMq3mrHC zR|OH>s!$ziP_a+#x3b<44Hd%P(^Jt$vf^t;Kt4vG`uG52Fu7zTAY^_4B#0iUgt#dz zoQQ>%1HCZNr+#{~;GBd|0uS8C^+H(a0RtohRv4!N5T=`qy=-a#3p-_1Dm4kH#qsxt zQ8EP!-3cS3fbtArf5k=F*Mc1Y;yieOmb7PB-^b#A8Xym1C6XHgiL3Bs74Qf4vMu^@ z!UHs#14=Udqu(?1<@!|gWlm@sT*g@VP+FrP6-epB+u#4}(y&k!BiNKx+Op9E03`%a zp*@Nr5Q^z&s4P}|ff0~HpMk!@1Pxs$BZVf7VB<8(#w?csCD}jDcm?Byjp0??QA0A9-pdIpeZ0DfKm?0ZexKIj4P4s|m35Gi^R3Hx; zHU)QapPIsb=6fU_yBgps1l9tsGB+^LqnHGVuacCi0jPC=;{PicJfnDmX2=Q|p8S(} z=fE?3x&o|6Gfu*JbL?e;6WTB6_KoYsnL;dd>Ljevin{iL6F`{SKf(-(uuv9=jOOoZ zv3=4f2?`McY{K?sN&hn}KE@2zB2D$a2L)iQ2%-cU$)2HE3{{xHr+j^P#l{Fw6y5+I zf(pN9pq@k9X2?SrpO_fm^g+K8(fZH1QR*Y4VvZET>_x-u0#sCELF;?5zeuqUkU=eV zWC#BVbbUq@K@GU|ldQhKTHf=7I?Ry*7{;ayW;R0LcyFt`zkuCIBZqE8l5;?Xpp9U# zNk@)1Mgwndfz$z8qCI1|l^hx@A!mZFSisl{!zpnaz>~sce*u2hK@O$7A!qw%8+?UN&|phIv%zgNNof$775qBDCxVpN zLa+gv1U&}V9S~T6R`A`1dhY@f5ug(xkP5ced&cEf=$;jl593;+lI){Pz_sXe2`=jE zA_X)oM#%szSRtt}*uf9iKji{!Gr;1m0mN?@`*4tg98$CX^LmuAHF!O0bp7un5{mn8 z@*#S133ObHlxHIp)c-_={O7C{2nqrm4fpNeN48t+c=c_m%=Xf)Zf3-t4uQRfFb)BY!d`+%TR6^*SMf&GGkglyDP$D?I{2S5G zLr{AG<-f1T|MwddAh@`Snr&do4mrYi7BC;W1d)xS+5ggRHxClRb3}4MWF$y(DAW=5 dGv*DhpdhV~>`%4=NtmF`5y^7kjXdCr_&)?(jr{-s delta 819035 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

    r&PpFh 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

    @OcH1qK3t|5vG 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

    #GSrUVr-H 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

    l=Am>bM`4GV;3Kbh+qs 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 z zOUTYiHup@zuLx0c3NR~wBC!$vA`1u)qd^yZf0BNFBiscG{-$IgKm;QR#_Uh$03HXW z0-`Di56przfuQ9fVu6JEBOAb_fmrmRF@jBgqut>&fLaAZ@F(2?_W--{x7TM^{ChJMB^L#zm*Ai`M$6`I9s0-+c3p8duP(-CO5gFOp& z556e`FhY|B9SeT{-^c74@TNiQK`!*eF``b=LDmMf8xU(iZh=x<9gr7m6#mGd4 zW=vs~`_vnl(8w6cGpI+BvlZidE;+E!&Mz)ZE6-JBT#9Wfvb2-Odnz|u)thuwdJQlB zs&Hod$-J~&kUoBp;#_Prt;A+kF;a!op(d$hq5HGB;v}#C2TnnT{1T(fplw;H%Akt& zJ!(ytmU1P{_`x0UqfT{+r8=+Vl%|fYQjpm6Y75e4Jl$$MRHO8S`X|FTVqItS2bJ

    5^PNieDw0(T^J-|%UT{> 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 ?>_0~PWdRd&mbF=)Ev;+dD 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


    h(~ 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 z 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 Date: Fri, 5 Nov 2021 18:38:32 +0200 Subject: [PATCH 219/831] call /usr/sbin/riak-cs start from riak-cs.service to unbreak systemd (mkfifo issue) --- rel/pkg/deb/debian/riak-cs.service | 6 +++--- rel/pkg/rpm/riak-cs.service | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/rel/pkg/deb/debian/riak-cs.service b/rel/pkg/deb/debian/riak-cs.service index 780686c62..96872266f 100644 --- a/rel/pkg/deb/debian/riak-cs.service +++ b/rel/pkg/deb/debian/riak-cs.service @@ -3,9 +3,9 @@ Description=Riak CS Database [Service] User=riak_cs -ExecStart=/usr/lib/riak-cs/bin/riak-cs start -ExecStop=/usr/lib/riak-cs/bin/riak-cs stop -Type=forking +ExecStart=/usr/sbin/riak-cs start +ExecStop=/usr/sbin/riak-cs stop +Type=exec PIDFile=/run/riak-cs/riak-cs.pid EnvironmentFile=-/etc/default/riak-cs RuntimeDirectory=riak-cs diff --git a/rel/pkg/rpm/riak-cs.service b/rel/pkg/rpm/riak-cs.service index 48120a579..96872266f 100644 --- a/rel/pkg/rpm/riak-cs.service +++ b/rel/pkg/rpm/riak-cs.service @@ -3,8 +3,8 @@ Description=Riak CS Database [Service] User=riak_cs -ExecStart=/usr/lib64/riak-cs/bin/riak-cs foreground -ExecStop=/usr/lib64/riak-cs/bin/riak-cs stop +ExecStart=/usr/sbin/riak-cs start +ExecStop=/usr/sbin/riak-cs stop Type=exec PIDFile=/run/riak-cs/riak-cs.pid EnvironmentFile=-/etc/default/riak-cs From c376172919eff1fa70072f76b468f190a0848765 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 6 Nov 2021 18:43:33 +0200 Subject: [PATCH 220/831] fix deb packaging --- rebar.config | 13 +-- rel/files/riak-cs | 30 +++++-- rel/files/riak-cs-debug | 12 ++- rel/pkg/deb/Makefile | 8 +- rel/pkg/deb/debian/compat | 2 +- rel/pkg/deb/debian/install | 11 +-- rel/pkg/deb/debian/postinst | 2 +- rel/pkg/deb/debian/riak-cs.init | 152 -------------------------------- rel/pkg/deb/debian/rules | 4 +- rel/pkg/deb/debian/vars.config | 14 +-- rel/vars.config | 1 + 11 files changed, 54 insertions(+), 195 deletions(-) delete mode 100755 rel/pkg/deb/debian/riak-cs.init diff --git a/rebar.config b/rebar.config index 3ff3c34f9..6a55424ed 100644 --- a/rebar.config +++ b/rebar.config @@ -90,23 +90,14 @@ } ] } - , {rpm, [ {relx, [ {overlay_vars, "rel/pkg/rpm/vars.config"}, - {overlay, [ {template, "rel/files/riak-cs", "usr/sbin/riak-cs"} - ] - } + , {rpm, [ {relx, [ {overlay_vars, "rel/pkg/rpm/vars.config"} , {mode, prod} ] } ] } - , {deb, [ {relx, [ {overlay_vars, "debian/vars.config"} + , {deb, [ {relx, [ {overlay_vars, "rel/pkg/deb/debian/vars.config"} , {mode, prod} - , {extended_start_script_hooks, - [ {pre_start, [{custom, "hooks/riak-cs_not_running"}]}, - {post_start, [ wait_for_vm_start, {pid, "/run/riak-cs/riak-cs.pid"} - , {wait_for_process, riak_cs_web}]} - ] - } ] } ] diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 80388c41d..bd9b3d495 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash ## ------------------------------------------------------------------- ## @@ -28,17 +28,35 @@ RUNNER_GEN_DIR="${RUNNER_GEN_DIR:-{{ platform_gen_dir }}}" RELEASE_ROOT_DIR="${RELEASE_ROOT_DIR:-{{ runner_base_dir }}}" PID_DIR={{pid_dir}} COMMAND={{platform_bin_dir}}/riak-cs -DEBUG_COMMAND={{platform_bin_dir}}/riak-cs-debug +DEBUG_COMMAND=/usr/sbin/riak-cs-debug RUNNER_LOG_DIR={{platform_log_dir}} +RELX_CONFIG_PATH=${RUNNER_GEN_DIR}/sys.config +VMARGS_PATH=${RUNNER_GEN_DIR}/vm.args + +# On first running the sys.config and vm.args will not be a link +# as cfconfig has not yet been run as a pre_start hook. If there's no +# link use the default for now +if [ ! -L $RELX_CONFIG_PATH ]; then + cat >$RELX_CONFIG_PATH <$VMARGS_PATH < $${debfile}.sha \ ; done diff --git a/rel/pkg/deb/debian/compat b/rel/pkg/deb/debian/compat index ec635144f..f599e28b8 100644 --- a/rel/pkg/deb/debian/compat +++ b/rel/pkg/deb/debian/compat @@ -1 +1 @@ -9 +10 diff --git a/rel/pkg/deb/debian/install b/rel/pkg/deb/debian/install index f50b0aaa1..545e58565 100644 --- a/rel/pkg/deb/debian/install +++ b/rel/pkg/deb/debian/install @@ -1,6 +1,7 @@ -rel/riak-cs/lib usr/lib/riak-cs -rel/riak-cs/share usr/lib/riak-cs -rel/riak-cs/erts* usr/lib/riak-cs -rel/riak-cs/releases usr/lib/riak-cs -rel/riak-cs/bin usr/lib/riak-cs +rel/riak-cs/lib usr/lib64/riak-cs +rel/riak-cs/share usr/lib64/riak-cs +rel/riak-cs/erts* usr/lib64/riak-cs +rel/riak-cs/releases usr/lib64/riak-cs +rel/riak-cs/usr/sbin/* usr/sbin +rel/riak-cs/bin usr/lib64/riak-cs rel/riak-cs/etc/* etc/riak-cs diff --git a/rel/pkg/deb/debian/postinst b/rel/pkg/deb/debian/postinst index 79ce6de00..3cb122038 100755 --- a/rel/pkg/deb/debian/postinst +++ b/rel/pkg/deb/debian/postinst @@ -19,7 +19,7 @@ if ! getent passwd riak_cs >/dev/null; then --gecos "Riak CS Database" riak_cs fi -chown riak_cs:riak_cs /var/log/riak-cs +chown riak_cs:riak_cs /var/log/riak-cs /etc/riak-cs /var/lib/riak-cs case "$1" in configure) diff --git a/rel/pkg/deb/debian/riak-cs.init b/rel/pkg/deb/debian/riak-cs.init deleted file mode 100755 index 7d807dcad..000000000 --- a/rel/pkg/deb/debian/riak-cs.init +++ /dev/null @@ -1,152 +0,0 @@ -#! /bin/bash -### BEGIN INIT INFO -# Provides: riak-cs -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Riak CS Database -# Description: Riak CS Database -### END INIT INFO - -NAME=riak-cs -DAEMON=/usr/lib/riak-cs/bin/$NAME -SCRIPTNAME=/etc/init.d/$NAME -RUNDIR=/var/run/$NAME - -# Read configuration variable file if it is present -[ -r /etc/default/$NAME ] && . /etc/default/$NAME - -# Load the VERBOSE setting and other rcS variables -. /lib/init/vars.sh -. /lib/lsb/init-functions - -# `service` strips all environmental VARS so -# if no HOME was set in /etc/default/$NAME then set one here -# to the data directory for erlexec's sake -if [ -z "$HOME" ]; then - export HOME="/var/lib/riak-cs" -fi - -# -# Function that starts the daemon/service -# -do_start() -{ - if [ ! -d $RUNDIR ]; then - mkdir $RUNDIR - chown riak_cs:riak_cs $RUNDIR - fi - # Return - # 0 if daemon has been started - # 1 if daemon was already running - # 2 if daemon could not be started - - # Startup with the appropriate user - start-stop-daemon --start \ - --name riak-cs \ - --user riak_cs \ - --exec $DAEMON -- start \ - || return 2 -} - -# -# Function that stops the daemon/service -# -do_stop() -{ - # Identify the erts directory - ERTS_PATH=`$DAEMON ertspath` - - # Attempt a clean shutdown. - $DAEMON stop - - # Return - # 0 if daemon has been stopped - # 1 if daemon was already stopped - # 2 if daemon could not be stopped - # other if a failure occurred - # Make sure it's down by using a more direct approach - start-stop-daemon --stop \ - --quiet \ - --retry=TERM/30/KILL/5 \ - --user riak \ - --exec $ERTS_PATH/run_erl - return $? -} - -# -# Function that graceful reload the daemon/service -# -do_reload() { - # Restart the VM without exiting the process - $DAEMON restart && return $? || return 2 -} - -# Checks the status of a node -do_status() { - $DAEMON ping && echo $"$NAME is running" && return 0 - echo $"$NAME is stopped" && return 2 -} - -case "$1" in - start) - [ "$VERBOSE" != no ] && log_daemon_msg "Starting $NAME" - $DAEMON ping >/dev/null 2>&1 && echo $"$NAME is already running" && exit 0 - do_start - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 - exit 1 - ;; - esac - ;; - stop) - [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $NAME" - do_stop - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 - exit 1 - ;; - esac - ;; - ping) - # See if the VM is alive - $DAEMON ping || exit $? - ;; - reload|force-reload) - log_daemon_msg "Reloading $NAME" - do_reload - ES=$? - log_end_msg $ES - exit $ES - ;; - restart) - log_daemon_msg "Restarting $NAME" - do_stop - case "$?" in - 0|1) - do_start - case "$?" in - 0) log_end_msg 0 ;; - 1) log_end_msg 1 && exit 1 ;; # Old process is still running - *) log_end_msg 1 && exit 1 ;; # Failed to start - esac - ;; - *) - # Failed to stop - log_end_msg 1 && exit 1 - ;; - esac - ;; - status) - do_status && exit 0 || exit $? - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|ping|restart|force-reload|status}" >&2 - exit 3 - ;; -esac - -: diff --git a/rel/pkg/deb/debian/rules b/rel/pkg/deb/debian/rules index cb6b0c2c8..16213dc5f 100755 --- a/rel/pkg/deb/debian/rules +++ b/rel/pkg/deb/debian/rules @@ -28,7 +28,7 @@ clean: ## dh_shlibdeps was added to figure out the dependencies on shared libraries ## and will populate the ${shlibs:Depends} callout in the control file -install: LIBDIR := $(ROOTDIR)/usr/lib/riak-cs +install: LIBDIR := $(ROOTDIR)/usr/lib64/riak-cs install: build dh_testdir dh_testroot @@ -36,9 +36,9 @@ install: build dh_installdirs dh_install dh_installman - dh_installinit --name=riak-cs --no-start dh_fixperms dh_shlibdeps + dh_systemd_enable # We have nothing to do by default. binary-indep: install build-stamp diff --git a/rel/pkg/deb/debian/vars.config b/rel/pkg/deb/debian/vars.config index 097589193..fa91b09c5 100644 --- a/rel/pkg/deb/debian/vars.config +++ b/rel/pkg/deb/debian/vars.config @@ -4,11 +4,11 @@ {rel_vsn, "3.0"}. %% Platform-specific installation paths -{platform_bin_dir, "/usr/lib/riak-cs/bin"}. +{platform_bin_dir, "/usr/lib64/riak-cs/bin"}. {platform_data_dir, "/var/lib/riak-cs"}. {platform_etc_dir, "/etc/riak-cs"}. -{platform_base_dir, "/usr/lib/riak-cs"}. -{platform_lib_dir, "/usr/lib/riak-cs/lib"}. +{platform_base_dir, "/usr/lib64/riak-cs"}. +{platform_lib_dir, "/usr/lib64/riak-cs/lib"}. {platform_log_dir, "/var/log/riak-cs"}. {platform_gen_dir, "/var/lib/riak-cs"}. @@ -33,13 +33,13 @@ {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{runner_script_dir, "/usr/lib/riak-cs/bin"}. -{runner_base_dir, "/usr/lib/riak-cs"}. +{runner_script_dir, "/usr/lib64/riak-cs/bin"}. +{runner_base_dir, "/usr/lib64/riak-cs"}. {runner_etc_dir, "/etc/riak-cs"}. {runner_log_dir, "/var/log/riak-cs"}. {runner_user, "riak_cs"}. -{runner_lib_dir, "/usr/lib/riak-cs/lib"}. -{runner_patch_dir, "/usr/lib/riak-cs/lib/patches"}. +{runner_lib_dir, "/usr/lib64/riak-cs/lib"}. +{runner_patch_dir, "/usr/lib64/riak-cs/lib/patches"}. {pipe_dir, "/tmp/riak-cs/"}. {pid_dir, "/run/riak-cs/"}. {package_replacement_line, ""}. diff --git a/rel/vars.config b/rel/vars.config index 6adbe65a8..efc05319a 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -8,6 +8,7 @@ {platform_etc_dir, "./etc"}. {platform_lib_dir, "./lib"}. {platform_log_dir, "./log"}. +{platform_gen_dir, "./releases/{{release_version}}"}. %% %% riak-cs.conf From f85a60e4ebdf605a907b561771e5d89903d759ed Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 8 Nov 2021 17:34:48 +0200 Subject: [PATCH 221/831] restore pkg.vars.config --- pkg.vars.config | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 pkg.vars.config diff --git a/pkg.vars.config b/pkg.vars.config new file mode 100644 index 000000000..a9ff87590 --- /dev/null +++ b/pkg.vars.config @@ -0,0 +1,39 @@ +%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- + +%% +%% Packaging +%% +{package_name, "riak-cs"}. +{package_install_name, "riak-cs"}. +{package_install_user, "riak_cs"}. +{package_install_group, "riak"}. +{package_install_user_desc, "Riak CS user"}. +{package_commands, {list, [[{name, "riak-cs"}], + [{name, "riak-cs-admin"}], + [{name, "riak-cs-supercluster"}], + [{name, "riak-cs-debug"}]]}}. +{package_shortdesc, "Riak CS"}. +{package_patch_dir, "basho-patches"}. +{package_desc, "Riak CS"}. +{bin_or_sbin, "sbin"}. +{license_type, "Apache License, Version 2.0"}. +{copyright, "2013-2016 Basho Technologies, Inc, 2021 TI Tokyo"}. +{vendor_name, "TI Tokyo"}. +{vendor_url, "https://tiot.jp"}. +{vendor_contact_name, "Riak CS Package Maintainer"}. +{vendor_contact_email, "packaging@tiot.jp"}. +{license_full_text, + "This file is provided to you under the Apache License,\n" + "Version 2.0 (the \"License\"); you may not use this file\n" + "except in compliance with the License. You may obtain\n" + "a copy of the License at\n" + "\n" + " http://www.apache.org/licenses/LICENSE-2.0\n" + "\n" + "Unless required by applicable law or agreed to in writing,\n" + "software distributed under the License is distributed on an\n" + "\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n" + "KIND, either express or implied. See the License for the\n" + "specific language governing permissions and limitations\n" + "under the License."}. +{solaris_pkgname, "BASHOriak-cs"}. From 972283b7f7207da19aea867d1d46d97263ed7ec3 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 8 Nov 2021 18:31:20 +0200 Subject: [PATCH 222/831] misnamed files in rel/docker --- rel/docker/{vars.config.src => vars.config} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename rel/docker/{vars.config.src => vars.config} (100%) diff --git a/rel/docker/vars.config.src b/rel/docker/vars.config similarity index 100% rename from rel/docker/vars.config.src rename to rel/docker/vars.config From a85f8133660e6cfa07c9e016a0dbfc394d74418b Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 8 Nov 2021 18:33:19 +0200 Subject: [PATCH 223/831] the not_running script no longer used with systemd? --- rel/files/riak-cs_not_running | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 rel/files/riak-cs_not_running diff --git a/rel/files/riak-cs_not_running b/rel/files/riak-cs_not_running deleted file mode 100644 index b63ca8278..000000000 --- a/rel/files/riak-cs_not_running +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# -*- tab-width:4;indent-tabs-mode:nil -*- -# ex: ts=4 sw=4 et - -if relx_nodetool "ping" > /dev/null; then - echo "Node is already running!" - exit 1 -fi From 887255957be6b4db0e1d7afdfca8667ccbf46e66 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 8 Nov 2021 18:33:40 +0200 Subject: [PATCH 224/831] more housekeeping in packaging --- rebar.config | 2 +- rel/pkg/deb/{debian => }/vars.config | 0 rel/pkg/rpm/specfile | 6 +++--- 3 files changed, 4 insertions(+), 4 deletions(-) rename rel/pkg/deb/{debian => }/vars.config (100%) diff --git a/rebar.config b/rebar.config index 6a55424ed..fc5fe1c0a 100644 --- a/rebar.config +++ b/rebar.config @@ -96,7 +96,7 @@ } ] } - , {deb, [ {relx, [ {overlay_vars, "rel/pkg/deb/debian/vars.config"} + , {deb, [ {relx, [ {overlay_vars, "rel/pkg/deb/vars.config"} , {mode, prod} ] } diff --git a/rel/pkg/deb/debian/vars.config b/rel/pkg/deb/vars.config similarity index 100% rename from rel/pkg/deb/debian/vars.config rename to rel/pkg/deb/vars.config diff --git a/rel/pkg/rpm/specfile b/rel/pkg/rpm/specfile index 0d88a1885..ecaac2716 100644 --- a/rel/pkg/rpm/specfile +++ b/rel/pkg/rpm/specfile @@ -25,10 +25,10 @@ License: "Apache 2.0" Group: Development/Libraries Source: %{_tarname} URL: "https://tiot.jp" -Vendor: "Riak" -Packager: "Riak Package Maint" <"andriy.zavada@tiot.jp"> +Vendor: "TI Tokyo" +Packager: "Riak CS Package Maintainer" <"andriy.zavada@tiot.jp"> BuildRoot: %{_tmppath}/%{name}-%{_revision}-%{release}-root -Summary: "Riak CS is a Riak-backed S3 emulator" +Summary: "Riak CS is a Riak-backed S3 drop-in replacement" BuildRequires: systemd systemd-rpm-macros Requires: logrotate Requires(post): systemd From dfd2b4c2a114d49ef0d55fb0c6938c58badf38fd Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 8 Nov 2021 21:32:53 +0200 Subject: [PATCH 225/831] don't share PIPE_DIR with other riaks --- rel/files/riak-cs | 1 + 1 file changed, 1 insertion(+) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index bd9b3d495..bf8173d8f 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -32,6 +32,7 @@ DEBUG_COMMAND=/usr/sbin/riak-cs-debug RUNNER_LOG_DIR={{platform_log_dir}} RELX_CONFIG_PATH=${RUNNER_GEN_DIR}/sys.config VMARGS_PATH=${RUNNER_GEN_DIR}/vm.args +PIPE_DIR=/tmp/riak_cs_pipes # On first running the sys.config and vm.args will not be a link # as cfconfig has not yet been run as a pre_start hook. If there's no From dfc6092bfaac3faed09bfbb6aeae1a8d8c454e78 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 8 Nov 2021 21:33:15 +0200 Subject: [PATCH 226/831] allow writing to /etc/riak-cs (cuttlefish needs it) --- rel/pkg/rpm/specfile | 1 + 1 file changed, 1 insertion(+) diff --git a/rel/pkg/rpm/specfile b/rel/pkg/rpm/specfile index ecaac2716..1b617d821 100644 --- a/rel/pkg/rpm/specfile +++ b/rel/pkg/rpm/specfile @@ -147,6 +147,7 @@ fi %{_sbindir}/* %defattr(-,riak_cs,riak_cs) +%{_sysconfdir}/riak-cs %{_localstatedir}/lib/riak-cs %{_localstatedir}/log/riak-cs %config(noreplace) %{_sysconfdir}/riak-cs/* From 7574d6fef60e5d0884df5bb9a5b34288d14da7b4 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 8 Nov 2021 21:51:38 +0200 Subject: [PATCH 227/831] auth_v4 is on by default --- priv/riak_cs.schema | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/riak_cs.schema b/priv/riak_cs.schema index 62c4fbe2b..ea4af55b7 100644 --- a/priv/riak_cs.schema +++ b/priv/riak_cs.schema @@ -93,7 +93,7 @@ %% Note: this function is unfinished and suffers from issues: %% #1058, #1059, #1060. Use at your own risk. {mapping, "auth_v4", "riak_cs.auth_v4_enabled", [ - {default, off}, + {default, on}, {datatype, flag} ]}. From 3f2b6dec614968b099206917d086052f62cd4de8 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 8 Nov 2021 22:32:27 +0200 Subject: [PATCH 228/831] fix RPC_HOP paths in riak-cs-admin --- rel/files/riak-cs-admin | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index 4e6b37384..d71fbc04f 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -29,10 +29,8 @@ if [ -z $SCRIPT ]; then fi SCRIPT_DIR="$(cd `dirname "$SCRIPT"` && pwd -P)" -RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd -P)" -REL_NAME="riak-cs" -RPC_HOP=$RELEASE_ROOT_DIR/bin/$REL_NAME +RPC_HOP=$SCRIPT_DIR/riak-cs # nodetool has a 60 sec value hardcoded for RPC timeout, with no easy # way to supply an 'infinity' from a script. Much as I hate to # pretend 60 sec is long enough, here's a TODO note to have it fixed From 1779f466aa46687915f52ab44477792f305a99f3 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 9 Nov 2021 00:22:45 +0200 Subject: [PATCH 229/831] write pid file ourselves --- rel/files/riak-cs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index bf8173d8f..193bc8fc3 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -50,14 +50,34 @@ EOF fi +function write_pid_file { + c=5 + while [[ $c -ne 0 ]]; do + if [ "`${COMMAND} ping`" = "pong" ]; then + ${COMMAND} pid >$PID_DIR/stanchion.pid + break + fi + sleep 1 + c=$(($c - 1)) + done +} + +function maybe_delete_pid_file { + [ "`${COMMAND} ping`" != "pong" ] && rm -f $PID_DIR/riak-cs.pid +} + # When running as a service, running as riak-cs not as root, and systemd has created PID folder if [[ $EUID -ne 0 ]]; then case "$1" in start|console|foreground) RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches + if [ "$1" = "start" ]; then + write_pid_file + fi ;; *) RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} + maybe_delete_pid_file ;; esac else @@ -70,6 +90,9 @@ else case "$1" in start|console|foreground) su - $RCS_USER -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches" + if [ "$1" = "start" ]; then + write_pid_file + fi ;; debug) # Drop the "debug" from the args as we're going to directly call riak-cs-debug now From d94ec1dfb95c6047086c0694da4eddb071856eae Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 9 Nov 2021 00:23:32 +0200 Subject: [PATCH 230/831] own erlang cookie --- priv/riak_cs.schema | 2 +- rel/files/riak-cs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/priv/riak_cs.schema b/priv/riak_cs.schema index ea4af55b7..e6a2c1d08 100644 --- a/priv/riak_cs.schema +++ b/priv/riak_cs.schema @@ -722,7 +722,7 @@ %% same cluster should use the same cookie or they will not be able to %% communicate. {mapping, "distributed_cookie", "vm_args.-setcookie", [ - {default, "riak"} + {default, "riak_cs"} ]}. %% VM scheduler collapse, part 1 of 2 diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 193bc8fc3..cada48f64 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -44,8 +44,8 @@ EOF fi if [ ! -L $VMARGS_PATH ]; then cat >$VMARGS_PATH <$PID_DIR/stanchion.pid + ${COMMAND} pid >$PID_DIR/riak-cs.pid break fi sleep 1 From 8441306eef50542151ac52f662d05e7727e84175 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 9 Nov 2021 19:50:25 +0200 Subject: [PATCH 231/831] fix PIPE_DIR handling in relx --- rel/files/riak-cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index cada48f64..57aa1551d 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -32,7 +32,7 @@ DEBUG_COMMAND=/usr/sbin/riak-cs-debug RUNNER_LOG_DIR={{platform_log_dir}} RELX_CONFIG_PATH=${RUNNER_GEN_DIR}/sys.config VMARGS_PATH=${RUNNER_GEN_DIR}/vm.args -PIPE_DIR=/tmp/riak_cs_pipes +PIPE_DIR=/tmp/riak_cs_pipes/ # trailing slash makes it a path for relx # On first running the sys.config and vm.args will not be a link # as cfconfig has not yet been run as a pre_start hook. If there's no From 7eb6e12d70c71b1a80d6d5b2fd7a0e3b3fb647a9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 9 Nov 2021 22:08:07 +0200 Subject: [PATCH 232/831] release notes for 3.0 --- RELEASE-NOTES.md | 90 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index d3530e791..90bccc1d5 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,4 +1,92 @@ -#Riak CS 2.1.2 Release Notes +# Riak CS 3.0.0 Release Notes + +Released November 11, 2021. + +## General Information + +This release was originally envisaged as an uplift of 2.1.2 to OTP-22 +and rebar3. There were no known critical bugs that needed fixing. We did, +however, identifiy and implement a new S3 API call +(`ListObjectVersions` and related), to give more substance to the +major version bump. + +We also provide Dockerfiles, and a [Riak CS Docker Service +Bundle](https://github.com/TI-Tokyo/riak_cs_service_bundle), as a +convenient way to set up the full Riak CS suite locally. + +All principal repositories are in [TI Tokyo +org](https://github.com/TI-Tokyo) on Gihub. + +## Changes + +### User-visible changes + +* S3 request signature v4 is now the default. The old (v2) signatures + continue to be supported. +* A change of internal structures needed to support object versions, + meaning downgrade to 2.x is no longer possible (even if the objects + created with 3.0 have no versions). Upgrade from 2.x is possible. +* The new rpm and deb packages are built for Centos 8 and Debian 11, + which in each case rely on systemd (old-style SysV init scripts are + no longer included). + +### Other changes + +* Riak CS and Stanchion now require OTP-22 and rebar3. +* Riak CS Test framework: + - The framework, along with a suite of tests (also the [multibag + additions](https://github.com/TI-Tokyo/riak_cs_multibag)), has been + upgraded to OTP-22/rebar3 and moved into a separate project, + [riak_cs_test](https://github.com/TI-Tokyo/riak_cs_test). + - A new batch of tests is written for `s3cmd` as a client. + - The Python client tests have been upgraded to boto3 and python-3.9. +* A refactoring of code shared between Riak CS and stanchion resulted + in that code being collected into a separate dependency, + [rcs_common](https://github.com/TI-Tokyo/rcs_common). +* Riak CS Control application has been upgraded to OTP-22/rebar3, too, + however without any new features. +* All dependencies upgraded to their current versions. +* All EQC tests have been converted to use PropEr (no shortcuts taken, + all coverage is preserved). + +## New features + +* Support for [object + versions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html), + including new S3 API calls: + - [`GetBucketVersioning`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html) + and + [`PutBucketVersioning`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html); + - [`ListObjectVersions`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html). + - For buckets with versioning enabled, `GetObject` will return the + specific version if it is given in the request, or the `null` + version if it is not. + - As a Riak CS extension, rather than generating a random id for the + new version, `PutObject` will read a `versionId` from header + `x-rcs-versionid`, and use that instead. +* Riak CS Suite as a [Docker + service](https://github.com/TI-Tokyo/riak_cs_service_bundle), + allowing the (prospective) users quickly to bring up a fully functional Riak + CS cluster running locally, complete with Riak CS Control, and + - properly configured and set up with a new user, whose credentials + will be shown; + - with riak data persisted. + +## Upgrading + +Existing data in the riak cluster underlying a 2.x instance of Riak CS +can be used with Riak CS 3.0 without any modification. + +*Note:* Once a new object is written into a database by Riak CS 3.0, +that database cannot be used again with 2.x. + +## Compatibility + +Riak CS 3.0 has been tested with Riak versions 2.2.6, 2.9.8 through +.10, and 3.0.7 and .9. It requires Stanchion 3.0.0 (2.x versions not +supported due to a change in manifest record). + +# Riak CS 2.1.2 Release Notes Released April 7, 2019. From 05be66d2248816f9073717ff8b585ce9cc2037e9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 10 Nov 2021 18:51:34 +0200 Subject: [PATCH 233/831] .dockerignore touchup --- .dockerignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 76afb090b..03d5b2511 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,7 @@ -client_tests/ log/ misc/ dev/ +_build/ +.git/ +rel/pkg/ +rel/riak-cs/ From fc44905d43ae53305c7b9294b9913e86f756843f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 10 Nov 2021 18:53:25 +0200 Subject: [PATCH 234/831] Revert "misnamed files in rel/docker" This reverts commit 972283b7f7207da19aea867d1d46d97263ed7ec3. --- rel/docker/{vars.config => vars.config.src} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename rel/docker/{vars.config => vars.config.src} (100%) diff --git a/rel/docker/vars.config b/rel/docker/vars.config.src similarity index 100% rename from rel/docker/vars.config rename to rel/docker/vars.config.src From 242047a9a1b41c4c27d435cf5f336660a71c1527 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 11 Nov 2021 23:03:52 +0200 Subject: [PATCH 235/831] Dockerfile that produces a really configurable image --- .dockerignore | 1 - Dockerfile | 44 ++++++---------------- Makefile | 4 ++ config/sys.config.defaults | 39 +++++++++++++++++++ config/sys.docker.config.src | 66 ++++++++++++++++++++++++++++++++ rebar.config | 6 --- rebar.docker.config | 71 +++++++++++++++++++++++++++++++++++ rel/docker/tini | Bin 24064 -> 0 bytes rel/docker/vars.config.src | 43 --------------------- 9 files changed, 191 insertions(+), 83 deletions(-) create mode 100644 config/sys.config.defaults create mode 100644 config/sys.docker.config.src create mode 100644 rebar.docker.config delete mode 100644 rel/docker/tini delete mode 100644 rel/docker/vars.config.src diff --git a/.dockerignore b/.dockerignore index 03d5b2511..d7e3b9fd0 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,6 +2,5 @@ log/ misc/ dev/ _build/ -.git/ rel/pkg/ rel/riak-cs/ diff --git a/Dockerfile b/Dockerfile index cd7e4567f..782341dd4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,42 +1,20 @@ FROM erlang:22 AS compile-image -ARG stanchion_host=127.0.0.1 \ - stanchion_port=8085 \ - riak_host=127.0.0.1 \ - riak_pb_port=8087 \ - cs_host=127.0.0.1 \ - cs_port=8080 \ - admin_host=127.0.0.1 \ - admin_port=8000 - -EXPOSE $cs_port +EXPOSE 8080 WORKDIR /usr/src/riak_cs COPY . /usr/src/riak_cs -RUN sed \ - -e "s/@cs_ip@/$cs_host/" \ - -e "s/@cs_port@/$cs_port/" \ - -e "s/@admin_ip@/$admin_host/" \ - -e "s/@admin_port@/$admin_port/" \ - -e "s/@stanchion_ip@/$stanchion_host/" \ - -e "s/@stanchion_port@/$stanchion_port/" \ - -e "s/@riak_ip@/$riak_host/" \ - -e "s/@riak_pb_port@/$riak_pb_port/" \ - rel/docker/vars.config.src >rel/docker/vars.config -RUN ./rebar3 as docker release - -FROM debian:buster AS runtime-image - -RUN apt-get update && apt-get -y install libssl1.1 - -COPY --from=compile-image /usr/src/riak_cs/_build/docker/rel/riak-cs /opt/riak-cs +# When running in a docker container, ideally we would want our app to +# be configurable via environment variables (option --env-file to +# docker run). For that reason, We use a pared-down, cuttlefish-less +# rebar.config. Configuration from environment now becomes possible, +# via rebar's own method of generating sys.config from +# /sys.config.src. +RUN make rel-docker -RUN mkdir -p /etc/riak-cs /var/lib/riak-cs /var/lib/riak-cs/data -RUN mv /opt/riak-cs/etc/riak-cs.conf /etc/riak-cs +FROM debian:bullseye AS runtime-image -COPY --from=compile-image /usr/src/riak_cs/rel/docker/tini /tini -RUN chmod +x /tini +COPY --from=compile-image /usr/src/riak_cs/rel/riak-cs /opt/riak-cs -ENTRYPOINT ["/tini", "--"] -CMD ["/opt/riak-cs/bin/riak-cs", "foreground"] +CMD /opt/riak-cs/bin/riak-cs foreground diff --git a/Makefile b/Makefile index fd1e3c988..fc0c408a0 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,10 @@ rel-deb: compile $(REBAR) as deb release cp -a _build/deb/rel/riak-cs rel/ +rel-docker: compile relclean + REBAR_CONFIG=rebar.docker.config $(REBAR) release + cp -a _build/default/rel/riak-cs rel/ + relclean: rm -rf $(REL_DIR) rm -rf rel/riak-cs diff --git a/config/sys.config.defaults b/config/sys.config.defaults new file mode 100644 index 000000000..ff28b3e27 --- /dev/null +++ b/config/sys.config.defaults @@ -0,0 +1,39 @@ +PLATFORM_LOG_DIR="./log" +PLATFORM_LIB_DIR="./lib" +PLATFORM_ETC_DIR="./etc" +PLATFORM_BIN_DIR="./bin" +ADMIN_KEY="admin-key" +RIAK_HOST="127.0.0.1" +RIAK_PORT=8087 +LISTENER_HOST="127.0.0.1" +LISTENER_PORT=8080 +STANCHION_HOST="127.0.0.1" +STANCHION_PORT=8085 +STANCHION_SSL=false +AUTH_V4_ENABLED=true +AUTH_BYPASS=false + +SUPERCLUSTER_WEIGHT_REFRESH_INTERVAL=900 +PROXY_GET=false +FOLD_OBJECTS_FOR_LIST_KEYS=true +USAGE_REQUEST_LIMIT=744 +STORAGE_ARCHIVE_PERIOD=86400 +ACCESS_ARCHIVER_MAX_WORKERS=2 +ACCESS_ARCHIVER_MAX_BACKLOG=2 +ACCESS_ARCHIVE_PERIOD=3600 +ACCESS_LOG_FLUSH_SIZE=1000000 +ACCESS_LOG_FLUSH_FACTOR=1 +FAST_USER_GET=false +ACTIVE_DELETE_THRESHOLD=0 +GC_BATCH_SIZE=1000 +GC_MAX_WORKERS=2 +GC_PAGINATED_INDEXES=true +GC_RETRY_INTERVAL=21600 +GC_INTERVAL=900 +LEEWAY_SECONDS=86400 +MAX_SCHEDULED_DELETE_MANIFESTS=50 +TRUST_X_FORWARDED_FOR=false +MAX_KEY_LENGTH=1024 +MAX_BUCKETS_PER_USER=100 +CS_ROOT_HOST="s3.amazonaws.com" +ANONYMOUS_USER_CREATION=false diff --git a/config/sys.docker.config.src b/config/sys.docker.config.src new file mode 100644 index 000000000..e4c50a5cd --- /dev/null +++ b/config/sys.docker.config.src @@ -0,0 +1,66 @@ +[{riak_cs, + [{supercluster_weight_refresh_interval, ${SUPERCLUSTER_WEIGHT_REFRESH_INTERVAL}}, + {platform_log_dir, ${PLATFORM_LOG_DIR}}, + {platform_lib_dir, ${PLATFORM_LIB_DIR}}, + {platform_etc_dir, ${PLATFORM_ETC_DIR}}, + {platform_bin_dir, ${PLATFORM_BIN_DIR}}, + {dtrace_support, false}, + {proxy_get, ${PROXY_GET}}, + {cs_version,30000}, + {fold_objects_for_list_keys, ${FOLD_OBJECTS_FOR_LIST_KEYS}}, + {usage_request_limit, ${USAGE_REQUEST_LIMIT}}, + {storage_archive_period, ${STORAGE_ARCHIVE_PERIOD}}, + {access_archiver_max_workers, ${ACCESS_ARCHIVER_MAX_WORKERS}}, + {access_archiver_max_backlog, ${ACCESS_ARCHIVER_MAX_BACKLOG}}, + {access_archive_period, ${ACCESS_ARCHIVE_PERIOD}}, + {access_log_flush_size, ${ACCESS_LOG_FLUSH_SIZE}}, + {access_log_flush_factor, ${ACCESS_LOG_FLUSH_FACTOR}}, + {fast_user_get, ${FAST_USER_GET}}, + {active_delete_threshold, ${ACTIVE_DELETE_THRESHOLD}}, + {gc_batch_size, ${GC_BATCH_SIZE}}, + {gc_max_workers, ${GC_MAX_WORKERS}}, + {gc_paginated_indexes, ${GC_PAGINATED_INDEXES}}, + {gc_retry_interval, ${GC_RETRY_INTERVAL}}, + {gc_interval, ${GC_INTERVAL}}, + {leeway_seconds, ${LEEWAY_SECONDS}}, + {max_scheduled_delete_manifests, ${MAX_SCHEDULED_DELETE_MANIFESTS}}, + {trust_x_forwarded_for, ${TRUST_X_FORWARDED_FOR}}, + {max_key_length, ${MAX_KEY_LENGTH}}, + {max_buckets_per_user, ${MAX_BUCKETS_PER_USER}}, + {cs_root_host, ${CS_ROOT_HOST}}, + {auth_v4_enabled, ${AUTH_V4_ENABLED}}, + {auth_bypass, ${AUTH_BYPASS}}, + {admin_key, ${ADMIN_KEY}}, + {anonymous_user_creation, ${ANONYMOUS_USER_CREATION}}, + {stanchion_ssl, ${STANCHION_SSL}}, + {stanchion_host,{${STANCHION_HOST}, ${STANCHION_PORT}}}, + {riak_host, {${RIAK_HOST}, ${RIAK_PORT}}}, + {listener, {${LISTENER_HOST}, ${LISTENER_PORT}}}, + {connection_pools,[{request_pool,{128,0}},{bucket_list_pool,{5,0}}]}]}, + {lager, + [{error_logger_hwm,100}, + {error_logger_redirect,true}, + {crash_log_date,"$D0"}, + {crash_log_size,10485760}, + {crash_log_msg_size,65536}, + {handlers, + [{lager_file_backend, + [{file, ${PLATFORM_LOG_DIR}"/console.log"}, + {level, info}, + {size, 10485760}, + {date, "$D0"}, + {count, 5}]}, + {lager_file_backend, + [{file, ${PLATFORM_LOG_DIR}"/error.log"}, + {level, error}, + {size, 10485760}, + {date, "$D0"}, + {count, 5}]}]}, + {crash_log, ${PLATFORM_LOG_DIR}"/crash.log"}, + {crash_log_count, 5}]}, + {sasl,[{sasl_error_logger,false}]}, + {webmachine, + [{server_name,"Riak CS"}, + {log_handlers, + [{webmachine_access_log_handler,[${PLATFORM_LOG_DIR}"/log"]}, + {riak_cs_access_log_handler,[]}]}]}]. diff --git a/rebar.config b/rebar.config index fc5fe1c0a..47d3f02d6 100644 --- a/rebar.config +++ b/rebar.config @@ -84,12 +84,6 @@ } ] } - , {docker, [ {relx, [ {overlay_vars, "rel/docker/vars.config"} - , {mode, prod} - ] - } - ] - } , {rpm, [ {relx, [ {overlay_vars, "rel/pkg/rpm/vars.config"} , {mode, prod} ] diff --git a/rebar.docker.config b/rebar.docker.config new file mode 100644 index 000000000..f83b74e94 --- /dev/null +++ b/rebar.docker.config @@ -0,0 +1,71 @@ +%% -*- erlang -*- +{minimum_otp_vsn, "22.0"}. + +{erl_opts, [ debug_info + , warnings_as_errors + , {nowarn_deprecated_function, [ {gen_fsm, start_link, 3} + , {gen_fsm, start_link, 4} + , {gen_fsm, send_event, 2} + , {gen_fsm, send_all_state_event, 2} + , {gen_fsm, sync_send_event, 3} + , {gen_fsm, sync_send_all_state_event, 3} + , {gen_fsm, reply, 2} + ]} + , {parse_transform, lager_transform} + ] +}. + +{deps, [ {parse_trans, "3.3.0"} + , {getopt, "v1.0.2"} + , {webmachine, "1.11.1"} + , {mochiweb, "v2.20.1"} + , {exometer_core, "v1.5.7"} + , {uuid, ".*", {git, "https://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} + , {riakc, ".*", {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.7"}}} + , {poolboy, "0.8.*", {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} + , {cluster_info, ".*", {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} + , {riak_repl_pb_api,".*", {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} + , {riak_cs_multibag,".*", {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} + , {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} + , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.2"}}} + ] +}. + + +{relx, [ {release, {'riak-cs', "3.0"}, + [ sasl + , riak_cs + ] + } + , {dev_mode, false} + , {mode, prod} + , {overlay, [ {template, "rel/files/riak-cs", "usr/sbin/riak-cs"} + , {template, "rel/files/riak-cs-admin", "usr/sbin/riak-cs-admin"} + , {template, "rel/files/riak-cs-debug", "usr/sbin/riak-cs-debug"} + , {template, "rel/files/riak-cs-supercluster", "usr/sbin/riak-cs-supercluster"} + , {copy, "rel/files/cert.pem", "etc/cert.pem"} + , {copy, "rel/files/key.pem", "etc/key.pem"} + , {copy, "rel/files/app_epath.sh", "lib/app_epath.sh"} + , {mkdir, "priv/tools/internal"} + , {mkdir, "log"} + , {copy, "rel/tools/repair_gc_bucket.erl", "priv/tools/repair_gc_bucket.erl"} + , {copy, "rel/tools/internal/README.md", "priv/tools/internal/README.md"} + , {copy, "rel/tools/internal/block_audit.erl", "priv/tools/internal/block_audit.erl"} + , {copy, "rel/tools/internal/ensure_orphan_blocks.erl", "priv/tools/internal/ensure_orphan_blocks.erl"} + , {copy, "rel/tools/internal/offline_delete.erl", "priv/tools/internal/offline_delete.erl"} + , {copy, "rel/tools/internal/riak_cs_inspector.erl", "priv/tools/internal/riak_cs_inspector.erl"} + , {copy, "rel/tools/internal/select_gc_bucket.erl", "priv/tools/internal/select_gc_bucket.erl"} + ] + } + , {generate_start_script, true} + , {extended_start_script, true} + , {sys_config_src, "config/sys.docker.config.src"} + ] +}. + +{overrides, + [ {del, meck, [{erl_opts, [warnings_as_errors]}]} + ] +}. + +{dialyzer, [{plt_apps, all_deps}]}. diff --git a/rel/docker/tini b/rel/docker/tini deleted file mode 100644 index 86cb766c6b8af2564ac9201df913fe079acae3d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24064 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 Date: Tue, 16 Nov 2021 18:22:37 +0200 Subject: [PATCH 236/831] un-hardcode PIPE_DIR in rel/files/riak-cs --- rel/files/riak-cs | 2 +- rel/pkg/deb/vars.config | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 57aa1551d..ed737ced9 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -32,7 +32,7 @@ DEBUG_COMMAND=/usr/sbin/riak-cs-debug RUNNER_LOG_DIR={{platform_log_dir}} RELX_CONFIG_PATH=${RUNNER_GEN_DIR}/sys.config VMARGS_PATH=${RUNNER_GEN_DIR}/vm.args -PIPE_DIR=/tmp/riak_cs_pipes/ # trailing slash makes it a path for relx +PIPE_DIR={{pipe_dir}}/ # trailing slash makes it a path for relx # On first running the sys.config and vm.args will not be a link # as cfconfig has not yet been run as a pre_start hook. If there's no diff --git a/rel/pkg/deb/vars.config b/rel/pkg/deb/vars.config index fa91b09c5..514bb79a0 100644 --- a/rel/pkg/deb/vars.config +++ b/rel/pkg/deb/vars.config @@ -40,8 +40,8 @@ {runner_user, "riak_cs"}. {runner_lib_dir, "/usr/lib64/riak-cs/lib"}. {runner_patch_dir, "/usr/lib64/riak-cs/lib/patches"}. -{pipe_dir, "/tmp/riak-cs/"}. -{pid_dir, "/run/riak-cs/"}. +{pipe_dir, "/tmp/riak-cs"}. +{pid_dir, "/run/riak-cs"}. {package_replacement_line, ""}. {package_conflicts_line, ""}. From ba2cea64543ff8f7460694a257413a54789c9a95 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 16 Nov 2021 19:15:55 +0200 Subject: [PATCH 237/831] rm /var/lib/riak-cs in debian/postrm --- rel/pkg/deb/debian/postrm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rel/pkg/deb/debian/postrm b/rel/pkg/deb/debian/postrm index 3577bbc1f..a11eb0ca1 100755 --- a/rel/pkg/deb/debian/postrm +++ b/rel/pkg/deb/debian/postrm @@ -25,6 +25,9 @@ case "$1" in if [ -d /var/log/riak-cs ]; then rm -r /var/log/riak-cs fi + if [ -d /var/lib/riak-cs ]; then + rm -r /var/lib/riak-cs + fi if [ -d /var/run/riak-cs ]; then rm -r /var/run/riak-cs fi From d151abe941259dd19eb784fd0b73b2f468026fc8 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 16 Nov 2021 19:41:21 +0200 Subject: [PATCH 238/831] tighter permissions for config and state dirs --- rel/pkg/deb/debian/postinst | 1 + 1 file changed, 1 insertion(+) diff --git a/rel/pkg/deb/debian/postinst b/rel/pkg/deb/debian/postinst index 3cb122038..272674ad0 100755 --- a/rel/pkg/deb/debian/postinst +++ b/rel/pkg/deb/debian/postinst @@ -20,6 +20,7 @@ if ! getent passwd riak_cs >/dev/null; then fi chown riak_cs:riak_cs /var/log/riak-cs /etc/riak-cs /var/lib/riak-cs +chmod 750 /var/log/riak-cs /etc/riak-cs /var/lib/riak-cs case "$1" in configure) From 10915319cd14352f4e33ad063c81593f232b1a32 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 16 Nov 2021 20:34:43 +0200 Subject: [PATCH 239/831] fix pid_dir trailing / for rpm, too --- rel/pkg/rpm/vars.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index fa91b09c5..514bb79a0 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -40,8 +40,8 @@ {runner_user, "riak_cs"}. {runner_lib_dir, "/usr/lib64/riak-cs/lib"}. {runner_patch_dir, "/usr/lib64/riak-cs/lib/patches"}. -{pipe_dir, "/tmp/riak-cs/"}. -{pid_dir, "/run/riak-cs/"}. +{pipe_dir, "/tmp/riak-cs"}. +{pid_dir, "/run/riak-cs"}. {package_replacement_line, ""}. {package_conflicts_line, ""}. From c986c4318819c80bbb6b0e90fc4a82e456356212 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 16 Nov 2021 20:41:44 +0200 Subject: [PATCH 240/831] fix log and state dir perms for rpm, too --- rel/pkg/rpm/specfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rel/pkg/rpm/specfile b/rel/pkg/rpm/specfile index 1b617d821..8dd46eb00 100644 --- a/rel/pkg/rpm/specfile +++ b/rel/pkg/rpm/specfile @@ -146,7 +146,7 @@ fi %{_unitdir}/%{name}.service %{_sbindir}/* -%defattr(-,riak_cs,riak_cs) +%defattr(0750,riak_cs,riak_cs) %{_sysconfdir}/riak-cs %{_localstatedir}/lib/riak-cs %{_localstatedir}/log/riak-cs From 74170a4b15dc8f63b53646ddb6fd75116d5c3a80 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 16 Nov 2021 23:08:22 +0200 Subject: [PATCH 241/831] downgrade rebar3 to 3.17.0 tag (was some commits more recent) --- rebar3 | Bin 949556 -> 945054 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rebar3 b/rebar3 index 7a1056780cc08cc30fa9539fc39d6d7a94933c0b..5add22df7d5bec7f9ca61f393227e6ae652d91b3 100755 GIT binary patch delta 136994 zcmV(*K;FN!`Z=E0IgmgDDSvFSLmvSHDSvFUWdWfb2q}MTQ^+mQ_>&GFGJk1@4&Bnk zghJDy8BHjXb#{)(l8|IWYy97<8XH2YTOOx-eD`#ta86?_B3i?0@DUqi8**FKs36oH z-Rz;eEs?!Z8i-KBMNp*iwj)RTgIWtBzsV&=7hZ~D!Ev;7x?_@Y2#NK?pZQ~E=%K|B z!GmJe`TzJPb70jKyaCNZRDT*}#tml3QaY=84GFM*d(kf!Gw!qyO!%|Y*VCS69p;+G zBRyce^pY~V9-^Hecx}7&CIxscO#863bjt7=oYT?Z>%?*%ha?d~OyWTbpMa*pHnpGS zc7H5+r|3OpE&BepD?d(U3VxpW<`+;)0|XQR000O8DSvEJCskz61PX}(0Mv*902u%P zmq9xY6_*b?4h4TqkOfc_Uexw?sij%EVd;jYMY_9JQVD60M!G{nKvGgbT0&Ck?p&m# zyFt2R`SgAN-^_bwe&;;%oVm|Ea}_jocmcquQ5kt@b!m@RF8~05+h1@%7FKQ^cGh;7 z7UutywcR@_6boldD|8n(J5N(fJ2zA-H#cWDR4-dQ3tNBme`6kf&o$l$QcmO-;RuuD~Jry!AJS$KtW*ezXHjS`dg$F0fZS^AP7`k9tf2} zK?X`mDT03qGtAH-P%uy{!v%>T9{@CyQiLEA0$nlyNCdS2VDP^ffCg9!nD9Ri7?>x8 zO!&VhL2Oe_ib_Xn#Tex8GlY|7o=UH0Uqr|3_o|1?ex?|Nizr|Nm%TeXe;V*#7Uq8%?Z2#l2T9G&0|tKpMj!x4H1yut)2*lmZ>$BzL~foMQ!=^T3ptJ)l&x{IZHQV9T$l_nT~43sBk6zWGt!^8xe2ct^K2D67r z=Y^u9^NS&yNf4W9CCYI*US4q$kEvB)RDQ9ez9e%2&S^$UX=?|)EHty&RAL<+#q1mi zw^;)~d6C+K1fc7*UI>%N2Jr#%U=-k8~Ivo_;SNFbzBYI{3A*6+Q-Vr68grMLXo)9%U?x*w?CXdF{-1SWsVzEU*} zKQNDSyUZF7dt(;rmXa(SdNZk4$&kNatE;tJ!tuC6k13;kQ=prglsC=Z09n}!3p4Z3 zBTfz$VurNW{5+z`;j#}~?ASwUVlomm>Ed)JdVx4n()7LlC1c3H6R?x%3B_J@?BoBq zI6}9aFjMq>uW8uugxu-5zz2VuEy$c1>pVIS zgO*B4+r4TP=In!Wm971tHD?^cX$(eqqZIck687=iRj(;GogB=8TK;u5;DB-}>LY$C?i8zhDdM=f2%$?3aQ z>j1J^hZM2nvB)^pv^eJTTEP_it1wjYu$QdA4PvgPd9dYR}@#Z!y52xgrazDbSEmgh7 zH#+L^F@A2}hh>R`Ek_wMxt;A!w>X9hU-mJS_~qb4|S6ir`Vn8;98xc&NzYx?DH%!h`Ghsg$SXeb&FoL4m#2XaXL4s zQj1eM%ksquFOtX1zWw@&*m3B2Ga&pN5w12Ag(VvYu6-DxSg{i@_uzcmE!FLrwBUJa zG0;q)0LxTl{(e;}tDhVzB8OvFQN(d2{_;I_u3&k}K&pQQltwR|eYK=sgTE>V=b%j% zy*UAULOk@w)(qzU@m28|afLgh3lGy+cNQGSnVdKenFD&AhHGV4&uN|N!r;b~1NP=0 z8UQCR0)-?j-MkU=Hb!0(xiMt^NJ*++3AxKt?wcJWA({1pPy#~QEfZB-wfB!X*JEcR z4Rcm;^YDL%St_-@x3&}GCah-8>No{$Q~Z>xjr|9XR>KM-peg&BmUl`9jb;avdv9@X z)J&sym*mIlW=6ipAnGR$J^C!gHf_6yc9LpZbb|LdZK;^OlLD|<*6g88A-0>m$s?QT zRCA2|U6P8o??da3t>MKi6*KXb3}Q|FsnS248t{LK-m9_ICBXuEv*bYsNt)?hsl!i0 zM+=hq{rA6)asm}OlMtu{+n(^^eO0QbRP5$a$xhm}d%~-5V)BHJXfQS!u8N$3QM8`4 zRwfV#xT(h?!F@e3xH1?5#0oxx&4$Us*7XVW3R7(?Z7fj%=}cs{0N83Hx?(qvQfVj8 zcjL8?O(ry7io(WUkk?07mDq?M$iqsMR zF%<>`0=DJwB_RV`cDC$)@`kwllB`sqaM^!5Rpb_ylZO@?iUTcGgWU=ZsNvZ{*7|O#dkV8-;_^bxs6QEawLCP z|J4`BmGVz#_jA~@;Ek*p^_Hru86iIr_+fmRWyIvtcK(8f%WuwW{wt6LaC%{;Kkk=N zYL60e^nGWmaQ*q+;#i=)g)%A{U+2Y%V=PNg6@7&iYhDE_H$z3K5-Uqz6(fB)M4i>v z!dZ3Tlr`yOO!@Aq^~CzN1tTyev><<@CL<)LAR|tYt|PhNTU=X4!J=?e4RDTp4tT_Q zG#dNK&Ej6q((>)P+4{t-rr!36Sa^R1&lwNpt&I8bnuWkNHoFA@6>r3!U9ngJRwmQ( zEhV8TtQUWHe8qm7LD_qHvn@AX%bDz0;Fuf=ud+<(;knN*5ssL3Hm=82l2d<-t`5>L z=!}BQQL#CK-|_I;w;e7wNyr@I(GqpzMGYjC!dDb{1+pMm(;z1*l&-_mG-tmik5?g1 zIlkm29zzvPt9OZ$q*e;NLf^RcEVd>3LpDetlTZ}Yd1o6*Td}che|*;uOf?c+1$0Zc z*O}*^EjcZLOvp+Vjp#M;9Nd4CxLq~E{!$0`oZ@8}i$@b5RO3zlRG0W7kq%HfZN_Qs zce7^dg_fJJgkBNMQ2M?wXvu#WOG+;Kn_)hNlQK_4#Ndmg>C5pQ`p|V$ZaSlO1L{yF zqE%rH*~_#2N-OIec9BnPZb+nkXSBiFiaonyGI(P+B>^HN)4s-fgOYy;onNz_(84Is zei^uQJf{+#G^ixYm*MSCt~xAOo}jsMNujT;9L0{oGSn{*OUsx3nUlo0Tc@7#Kv#LLIiI75F#0Y)Dq1R=&|`S0I6ZW@~8^>MI8Z8XBTV!mnQ_fpvIJ$-)>m+|1D|6<$} z30coQO)DNtC?S7o`HlYiR`SQ_+wQQ1bxDU2rP`ma_ypk?r4>DIy?oWcSd-}TOHR5o z#v2IN9UH(=69%nrPiBp1hjTl$X;#Uf20E z)mU-Ne3^;$66sp{^uq1o9#~({Eo6=1Y1PSY$TCKmnfQO~B;YL9qjFFPdtAA-4+_~P zL_$R*l8NtzQwp@$;MbV?Z=l#Jf|PJ?G3m~VaZJ$boK|twu<8kqYzD>a7(XM7307G> zVhnS5VuIiW@$FfFS;mbW5f$hQQ5i%>>n7Ah16nJaLGtB$A zp2FAed5dmKBA@xI!)+7A`#B5xgM0%SZ6^4!$jmc(vAN7)u5{(|vbu);eI^-CT;AEhQkWYiS`kK7_Cn zAs+hn_9=ySi-?4XF~#Do4MH@5pO4oCTEiD~K}iZUC)yFJh z50ZaYC`xXWc?%i3InTW=4&Gqw*`dt^#3Gip0R; zdGHvJwttj=kjUptTIC`%@`}y3d^vjHq2ay5$P~QH%3=!ceAZ`$Ai^lt^70bEQj*#V zO^gtavX3>?4s*5WI@V^wbv-;gc-#>f;7)%qN+%js8fWZAs{637^5#~zsr8m z$x8Heh)Gfde{D6Q0XEzXxHT-&?0aT8tiY9edQ-I8VWMTGqy>aPtBgmelhi>9rF6^GeX)82 zN)`6M$xw5NuNw%wllvIXP=~-rvZs6Z0ot7~g^VJH(Hf8TH^yqN*y3Ij+44N>2rIgs z3)z$b19cUDH}(`MmCEuVoV3QrrZInM`4E5%Bs@V>MHO9y;z#P>d{o^^R4wZ4eD zR*8%S%t1@eQ?GH&ZDNj|bLTJSSUwR)lQl1~fn`&VNzFBJV9I@XsitzXQ zzuf;I=mbtx!}FNVbn!`=XBTqSS&s?^4k*tLJ;NRxTDqQ!me&wIExdrej)#9lq9D75 z=lI@qa}gnsh^BB*Oc`v+=(rnkQci;r6tA|Izjub2%TgyTu}} z!83HvMk^!8@EE$^WDGJ!MMbGR7FSUwCZLUt-gYO`F ze=&Z+ob@RZbALVRV$gfAc4FgcEH-sQ^6nc$6*Eoyj`kiXY8K~QD9eBO==g5I9xHq# ziFn1`lhCN)jk#Q0ck1+}!Apk9@}}rh_P9Hua+x~qjlz6|9-Pr%Yb&8A(oE-M(VVn# znT|?|Al*S|&v|?S*Uw6U;i6ZKqheXc-MHilU36YXr4jc!`*^m}3S>A4DsZ&ZNrs=8 z8$teWU+Y;kQs7}B<}81wY=puHsd)y{i&VM+3*OpeneOx+&zwP5D zq156?9orlCNXIFAl%XO|2t>`ZrCQE@)g1_vJ(_Lb|Ms0H5$M#z|C67^K4IZzsh`Fw zZ%MS6MrhWv$_|7)gzNr}SVk}QnfRkz;NDPPAxN?|RhbYLGcA8~UZ(=g-CiU+&ERPI z8ebWMI1cxT9i<-KW1n4I6<>L#2YtR@&%kI!`0X|`l)oeG?P$k&~r9>Lt~ur z;Y(Uf67u5_ETck{tOuMOv*)HWM=FwXwuvkI+l_1;d^gG2-+OUd@<=LWao;E?tDSf+ z%2>}i;WD@C$~JRQ^Ey%rO~;*S-N*yhXt*pdD^!>lhotAuXRVoM)OVtXCV9*k!nOpR~9Z%-Ib*CKg&5cne?KaB_pcXAbN= zJFAis>6I`fsB#Q0yNk$*id5_KMLlQNKh=;h7zuwapJ|Qj%41)X-Z+e!6+Yz|I`xys zsy)FwrDCRS?GZ*RE6!rh|Ma%IT1`Zb{X;foG;NTi-G>%If!nXV7D1!qPBZ7I3L%Sx z8%(tLJoi!F_a{-23TSVgQuZy1te*H+?}FYIhjJoQ0JdBDB8Z9fv~-9_Q|Vw^&yD~9 z3GsiG-PYlv396wXlZT_G_S%%yF_Ip}1JCY&MZf=@h z(j)(wn?RYPB8oY45;XgxtG%hXL2H^@6-E5H-tFrl9;N9iP&9Hg#7ePM7#6AZZZUr* zR%0w1dx6l|HA%4{rktDEDu%S@DCbk{d8_il-CIMQCUIP6b)ae71eEb)J?1(-Vda5D z-G^G_%87(o7|T-EbeHfWqk7#F4bP`{BI=ZHCKTG;FFnO(yv^r3N0gMKKtzddzs&`d zKI1VttUtWkt0nuI`G+(y;2@PQ1pR-_*IaZp--rU5iaCRCZ{nUTw!it%Y`w|8a>rBi z_6c~BEKM222RD{{Cig%yYxWP>HEJ21D7R3?*sKs=>$mn>C#Du|j|#PJ3`Yqae}*hx zU^Tp`DP7QH`Cc1&7E5sL7hL*$(!#T2`wB-YI^PB%s=$_bTot>a zwt4;E4+jNR!(Y-%eV3ApxRoOE{Vvqk+4(DD)DF+)h__)Z`TaFG%u|1~z0E1ITHcAJ zw3x10@=Gv3T&xs`?j1_*O7gPr_!lK9WC-_7%Lnx_mhJ zOSpN*2gtQPW5fgdYTZ;#S0egDYrZ|7D~H|6uZeCAwD1;z(-f#_LXY8;&ang+GR`VG z7j~QYs-}VL>pp+>g8qMCSL2f~dfsjava?S;CMbQB_Y$N^-I#1(gYt-i%atPjhgPj? z5Mv%>NxlfnS&hnP0_vQ~$SYj3>|Mdx3t|KBQEk6mCy{@V7>Z`vF$WhpMZos*t*sk2 z@p?Q77@bzu(TLrFq2_}vZH(Kf17hBlQwEB3&-a4wzul@A;un977NZ^EWft`zzudU6PYAo_wEZ^U{L(?UDtvw~X zG}P{dX^9AMRXTr%wBWOYU5P;C;Ophh@H8R*>IPRRA0)+1pwOZdB`*lR!%%w45zRKm z$5&I$&+lH%yN2x2@sPWxP#<$_%{(h4Ia&D_9viH9j@TjP=Yt~60V+D~`Z|c8oniaA zih9Z;V&+&gG(rJe)H1w+@7ecgv_s*h=Acqq^7PqjJCJ{7-p6&)0a!i94p*gHKhgd{ zI-d~ASrw|or1#~DUo+1(CEyZ~szDPQiz{fju#Ks&D>y4m=Dvgh@Ov2B9$*0WAer4h z-iPNh@VG*P(b4g>!VZT0)A=|LeG?|eM)U0~FZh%V$R4qu%0Je&lHADVYrDoY zNk@H;apN(Z0Zkz&)-KTh3|hLkYCPOOcV_%{r5|C8-rb35hM>WnLIl2+PJD*n`4p^L zq^=6~c6AP(vQmi5xeWe#@h5&>!UTf ze(pK7M0Y*I=$6jDV%?5qjBO3gAP1`ScpaS;N#+6lMFaV7mi9x|9p?yA^@DyIrE?kc z6zd72(wJSm?;{GzGi1y876Q62eDi-G&BJZ@-ocn1i#|-j-5q>s0AGV;(b8EViU;a} zoyESVaiM)90ssMufFKH#teTec<>?f4aG;>4mPudvOk6e*MQR77a9Zq2Y^FY=6o@Yd z_+3LnuJQLmYh(cAO?HKj9issuPRe&^nONDNc@YmWZq>dr%k=&yqJXl!-3xz>&vmO5 zcYWi`3hz2AUj+--S;+4l)_lIZI|B4H#`i8^+R7KFGNgYZIM)^$wyMOzpijkL!SZn{ zRA`oxhRZ1^se`pYM?a;1wX&m#lXsERyLTkTDn3;n2?+)}17+Eae~ z4;Bie^0LGUgW6!_IJWjbVoQHTNy9^W7iJ2Cl$0Iq%&G7l&M#R3RuP|s1KeHwm}4XD z1p~jetE)L_QhSswpuOH#M%iRP zAR0=`lHcSuEi+)Y91}#l9W`&LA8AP_M0Tc&^Q$pwH*uBZ*ZqMWhhV)}!Ig{ywex+7 z7EY`X9CM!dv=W5BK3){pNcn4N*Jspow~-ezV%d??X+9ILGXrF?IE=O+G#ns1frOj? z@bbK)`^EB7`D5E!#XEmuG%!^M1jn+3M~!=k4V<^{IBnToA(a(ku5Hx1mdFFK`i&>t zd)V>HV+jR&;xpV!v_X(#gH#5)tT_75=AA(_*{S8-51RD?gzeq$K)~W{cnQ0=V5`Cg zLpD3I%S{(;KOO=n-GA5!abq`zVrFH17d@-l@c#e+0RR6003d(=-~6}G`oB|+f0E^& zdBX!D;KYwgGU@{s1R_swUhJz6Ycz5(l!`K8&7s)z2Dhxsv;0N&-uY)mtR~UaX&|-t2cU1`oBGBVU*{DM8 zFFDzcKeq30?i(t+u(jh;itg)1dcW)0S|?7q8qgD zS`Cw}hA!b7)Vu12i%p*`R0UW8Y_+^j>82h5e@~#jC|0F~8u|XgfJu592;@!A)g%N| zf}2_x`YL7J-Cd9DUg<^-m)mHkg&^a~q9anv<(Yr!Oxr~8Y^h`zl?@eGLv2xij{A;S z+0>-^$eb6+PO{}^f$e2^Np${0af!iIq~tm0uH(W6R6;%oGW)Gr!m|f$X3$fuSPMsO44dnI0UERNiY8sy(FMIoW#lAlZboZ;){Rd46a8$xbjh(G#6t>nu~E(xmgS`B!M1h zQpa|h>I>hMN5?rqmC0=-=YHO+AIR*(DIEep`@)g31t? zRtGg@0m_ap0bt|`7C};DD=kJ3bA8&`X-KJ(PUiRK`^kh`Th8u%6VFRyMhRnDMGbGg zA?p-f8({QL90bSsseR4q0x=R4XDoE=iOb|^1!jRVQae}M61Y_F($0g1Rk(jNLx8tE zDI`I!#r-{Ny*)P%qjJ4<6{D0h<(N?ro02^&gC&G^&#ex8*gmU0vz9P*{!9?J^|2vt zT2CGcw&L}oPQT7FLH^5#T(9(|tZ5Y+V{OPJ!b4ccTVt7UWb}PsaW9+d898s_c^xAV z_@c8w{Dn#gNr~4}494A8W7~gFMFk*9LZ+%cvrOa9=+Sx-a6JkZKW8J<_-ssOAsd#2 zAagqVZR>aYEEM=3#vgmq$5b;)C83*&Da@ooy?wriyIEIAgb?>OhG3jfXNZfvzsZX8 zbVsNefx#jq%Jx$Rrb01)0$p(9ZV^ha)0*a67;BG$E$yId)`T^ecl&?vZ#llWwTVQP z396Gf5w?-+tMCyWFz^_a3ZC$+*$S<c>+lW zlt&x+ZG;wD%*NV;Q1XBA*KhkEf8O^yoS*htJnfgWad2cH1mJ(?CgvaZ|07Yr^doV> z3Sa^-GIB8gNL>70{LfeD@337LGXHT5kx-^%XAacrNd0TK>KdhKu0H~=X}_sj2ClAT zs36>9+*EtiCF8W;@cMXrpCxr`1b0_bCz1(3$fUSf)HchD8nu5<5G-CHM=Ljk)d8%Q zhiaSD78;`B^YW^lhI?H~HKc92CGmK;|6+;3k)mivDfFD5VQ8BSd(`iP?GhJd+brmL zYOC_O;iN7?U8s0-7(Mt@fG~w;w5c45>sQzY#o_K0+<^S7>JE~ErR4!?{3UB){Lqx8 zYalv^eK;=LSvh~wkksK(2i?or2Nsjw+&9`~qY}-+p9W0v;o;FlP&TIw^}_^G-qiO& zL0#PyOBrT31Gm$cSTZ3lyr5|2HUkz2@-pihgc#a(7ctuJo|EIJd(pIYXgS|W28^7C zK`CLu3=wmHI@NeKb@Xtke7PPjO%~Fp0tKFNVDJDB3v0qqL)yQ zr*c?s9g4G~I@*9=5dfvmor34mY7px_ge0fi`FZ|LVsLbF?|rg4a6-PPW*{CF2j_%R z?j(m@<{i;>gU9EM4$qyqz%*QVP=*B zy2FY$L7jhO+Yze|hv-%HcoqcXHVibVP$lrd7QLR2@6IDvW&p8^-teMPm@R>=#_L4v zop-O(eR8C5H1=z3dkSnm#P8VtZ)Ko z#cNfE)RO7#rb#;W=W5HQbaeU)=3BO~w1jem1&oQ4Kq+n0cbAMO;+1{wA4EH>$A_JS1P&G;%0G+|=dJy&7XIzAGM>`uA7Jvx1AylOXyW|#olCf}wcV8)?SI@b|L zhD7&d1fkTsAVZ3@xYn49{b4ZyaA6DeidHvSaubscTvCELrsVIrC8%T!UUz%J@mY#;fQl7ob849Q!7!-oUka=Gy3bB8N$V8WG8=g#JD3shDb|4 zdx}QsA6Z2G7>(9^=Q@msU8A2$Gm3v_M)4owP>nzO&!_<8@7^zrk=3`wJ93iZKaIl~ zNjn*u+Uq?z!aqUs$Em*ug8YxZt>AZRvjZN3PX>0TAM1*kek%U2KKq|UoOgwKl^$eB zc>7JnfJ%rn-?|zByF`vR(+ZnaRo5rUEOD$N2*HVwEgTyAZEF+v1CadOZOVT({`uy& z`qjRnAhxf>dL=gZiIs?@%Af|=H&m|RuFf?qt3<2uY0$0`N)h`H z#TR=Wq44$31BOeDJQA2Tb(4cz5_h zDg)#Q(au%bVTu{#A2kE&^5_RRJnBaCyJld4D#w9Zd&U{B1phMIN9BLqcE7I?`*G?| z?Z)u8n)%;)t{?DU4Lb0XK?i;`=)k~0fpI?eAT?NjrtI$aJfZ#t>nLmH$9*c_(HqC5%P%l?O0k>xrzW42dV8` zXM+c8Mfrup^5{HXn1A6dbqqS21umKBG8d&vym?)hIcFx%c~>&K8hAJ^^5#~3vsNIU z|GldYtgtDTSfPjmGuMAT;(&8oKh`PuWYB5g;cm+!V})|aSW#nawQRW;I!V&Si_e72 z7^^USJz&Ca-mmXErb-H{GI~j7+EUnE%L`SVmRby{n|Lba)5y( z6zkn#e(zYWJkcg4ADm^Nk+hhP@7~El=)(ctqKmyQR`-8guO!affN@8>(JxbwTK}>( z)Zq^=@Wg9{$9^aCD7Wb!yym`uEHSl3SPBpL1FtQ9(!aROuk}v~Ao;F;+~4%CWMp7! zZDVO;VrJw(C}n14=4fR2cMui*dw~B(EAvl?PErWhOp9_(aavQmvH^nPlf|JUE}cC{ z%B=2q&<1~jyZhF@YOj)honI*!tyrRV&(m*5)4XB1&S@+hVj_s7Q)D&@@den~JZ_xV zMWI3WxlRA)B$RLju9+{h=^ph6uu>_TX{cYbt+ceW68&fE{W1qSTs(Z+ZRUD9^zFb3)LZV=G{Xb&9`ol@YdGIScp8RYa&B>*!=?n|j_Vg0HPpcR-jyzdAPD}Hxuipq@ z?()Qb+J3ddoAG5luG~^=q?`DK8CP#3I(N^@U;FxS|QWn#@ifkKNM>3)CkYU~jQlYeEa`=+$^!Oh;i2#-gH>S}1?j-yGm z<&)PM7)jMl1_b2(twFpGUqhcI3UlY|KsNdS~WIr7Cw}Wv$9txDns}9fL2;83**jk;Uu!B0TiMluLhL--Wt??xR0@%pwZE zkEbyJ*qIm^*`8AEKNo-hSD*cN>6B3{4kK*!nvaGU2oVX-6FvQ>dpXFK;f^s> zBj*>&^98*9h7LzH-y<~99tuNY)-Ki!&tWRqQ@oFo$qH+Pz0L|qlXhMurhGY7HwD29 z;3#p-k5j?TwUL4$w8|!NukTx;*}|h)uA`VhJ&}?D5zkfP%i7rn&!K+}7GGHW|#C2xjwl@4R=>OL6o61IFrK!$qPFYkHia7^vQ z5lO4DRGWUmwW5ZhhiA%7zE~DwV&!YBGxGyFP~oc2j#pHp?pl)_LS&4TU%s4Mj(C9( z!DibOyy(bO+!%jVLgRm_hMm05!^VbXOfkjRD<2l|j&@8ji zIhdyzYQUSx$=49$z?Y_Pi&fh=^(w$3;x{Y4ets`xrM@h#URj=&$_n83aAqP7&hL&3 zvc9%GstgWJ#OZNwXE>di+D?7w5Ib->cg4UfvhDKb#>tJl9Up(-p6iW=i9T26bWR*o zPYHugbYV>MZ>0g_Om3f{@0hnt&l`GWMK-8BJO0j10SY=5@;R*`sYMZyS-Sa(qqIe` zJAZo_=5-9FSTyT3?QHM+qtZZO{+m%w;TqE&R;lzD)dP~2V5sgM=r74ZR20%1j&GNG zBHpiUuNnQ*LNl@Hb~N6%TfWgOB7 z=GHgdyr}<>arxy5LQf|Ug7E;j02~ltkDEY%r>Xr=)DXbn;E*7|7$l~SjB8T_ew0PTI^3+h=Zz(FHj_1bUfZ*vEi$F6`tiwM~ww*>I_-Lq_)TXtx z+Y=!xWhj4w_cC}>eN|vGz1XWLbR`;h5a4&nl`;Bu|Jeug1rR5;vP)(Pir5n{7+IE0 zT{7UC3FL@tWb>mco_BK7(K<|S+(E?-!Z8tqjrI~lmC6v;=V!g08)*Qej$nyA{Cn@5#UOR0alxvLV7kLnnRM7~t#47y?z)z3G9 z$BJFPEwVTl({mtEj{9G*t`O~&D0C48gL8ov9MSXhqDX%&&3Wd2u9_(k;V#UUXrG8{rGI;{)G|! zAX{jo;=t7ob$5L+oHkRIhg?Sou^oAWTH${{62_!LwyS)ISDxsXd1Ku3+Ncq}m{^#T z?O$AwIA@GFy2#5_X-JhG@|I-7^f{m0NP69a$K zKi(?C#LmF@WKzDrRp#IJpuaO7CD4!*s36s;9}G+J1u@(mYGQMoc#Cf~*@4^-Ld^*g z!+WdKnLssy`qYAEy8_!}`!e{XhdPeTlA0@g0coCb;Ge*$)5Ip4oq3Z62-~KrzeF#T z3yVCIn&{TMc$pJ$V=K6W@j!A1!Uum$5IDnJnxn1RZ!&wT%BTSIx_v37{{(%}J6Y{BxVYM^C77`04&Iv+| zWdT*b!&hhme8y*r$h(VmG<42%x%sPJ<{{8~Cy-%RwWCP88xDN&ZBUah*1vzkCe)E0 zdlt=4R%JgVrJcumq`={F>DY@U9xLPRhM2s2RX^=bT&CHYE}>@_fy)?`T5 z{5wXW8$SscQzdV9MbMD~ASOe3b=Z8rSaWj-83@&{L$7ix#!j?2}iDOJ4-ZB?T^ z2c*=n+H-h`gWXZSmU7zySACz*f}t2GQiqqQr>f#z^%+A`PtAr^4jFc#oH`K$8-W07 zl$F^CN#A(ZM+c2ihZZi!6~=UqW`5s>dP)L3{%e+vg~>z67nwpc2?c*P@Q-~MkyAaX zlYZ1(tt?KL^73k@1CT3Q^`PFra$^@AIkx~j@RumdUK-%p_{?dS>u7&xSAu?pSk}no z5dm~VO15+|nz`FbbTb+YZ0t*&#%o9^^^d2611*&!t#t0oZ_le~-*Q!D+kzvTXOqeT zQ`&BB!>xbR@LU#e>%xDh@;%3pw2vLgV`wQ|`kF~_s>KI_`c(!OVyF%+MhWv73icO* zc{nqT3p>}dgjcb!Q3o+fQEzN=rOLiK8s6EZUGYQaj>c|rr+r9gy6u!*nkI(hEqu3@#r}WB_H0Px98G5#PDcYp zFbbxl_19NlqbGvNs&Q^xEXy{sc+k7J=uAM=VzZC01PExFOwXMv#v3jkkY9CweqLBH zeUrmoa-+3em~$*t&@s2Sy@i^D=>fsZc-Y@0@WwfR!HAujokgAq0l|ij8I^CH+62x@ zf**iIqQR(~I*5PyfqV7hz^#H>?O9$04Ka3NR7X;bmVj!{H5w=jH7>2ZD%5Mv)fZa> z^`H*jU1UCOumS`X@Kt2?OCue1`TlC~e!T=D@|zi0Ba!Km2jZWc-x^S;F_y(O_G6B)j_uCcc;8z&Bc)kiE}dtk=RD%Ym==-<#j4P@>a61|E?(i?ZbVo+*hTG(<(#cj^MqK5 zN5qOeB9`t4Vzt(4mNfDYwK_D62#r8vj{l5Up1&m@4&d2$@}WGD@5d5CQO4iF%K8Xa zhJS#S8SsBISpPrX{_k+wyF+c`c}xaQp6~m7$z~Y%IyJ3?v70zpk3W`c_?;;ZM6Xl{ zb(aYyF&_2dHDzdgo@;xYMNU3^p4U)(UD0F&%dFEi=Eb;h@3#AaOMFf=NhJa{sCUQA z#37wWnFxvI1I><-d%{~P^v{El)$Ux+*XK<)7`T5Sm_!*}w@DQH=m6IHOk)T&7~p|A~j)*VXvtViB3 zk~DwXG>Iib)d*V4#t_YSk+CQd9`wHuJvi3rlyvW^;KG!9slR|I zDX~m_WBtY+>Ow;^i+)g*;~4P5%&MiTi>3Dk@GFULm?cLP6WCMkt6Wh+OKemYD9b< zMO`7ZHT=+Gy7SIQj0eo)hJ@bzkaekc%<5t%YgUg!H>7PeI2W+g!eVzy_Ey$q z$CrG{g)0rs#_jB4VtqQHbwX9Xog5s#>uvxAaAXsSObwMeGt=oKjFuK6v;=?nSpRzS z=vdQlmUphgHSYaO?$d>en`R5|9#)D*5cDu5nv7~pho}j*d^GNqL?AdyaLp`n@fw}} z&Eau!qbL^4Ce;DJBEMz}TH{_fVgkeKgp?8UPYvtj=SaoCdr>I*dm$qY08v1$zuqFr zZ_|;C*|AwgbcjuP)&~1f$;%WW%JaB?gCLA-YP@PFh0^j{#my+pqUX1DD!_saZLo9T zdZF~keDWtw4@_4(nEEj_y?uJ5q-u%+!rpN;Lyw~Qwqk86sj}X`r}q@i4j_}OaOkrnRi@QTzC2^`U;MKn1I%{z8RR=8343R;`&-;UXCE_7UI17+2@I; zOgO?5YJPt?CX%&i$v}8Q<6avV)k0ovSLz?~;i7*W4m!Yu$jZfT1ft~;W0RR6003iS0d3?@XC4J4J z3sk#tvE~l@HTE3Yl-YSH(>mH}K}LwV0Y(s$%i)9l4g(S9^xHjUlXzi&|7wr*k(&GD z_#n=jKfCa?fw$NEa{^w(FJ5?IE~nrK)nmJyCFe-A7wJy)PBzIJeUg|(kM;(N?dX|R z#rxWkSCGu-y3c4Dm=|pbK>(n3HLdx&utA4uQ09rI*&B81@rIt-@kMKHw2^_E3F9PM zb|WX%(sTEz0|_Ngd7Dpvl0bTt1l%7b(QjGe@SHCc5mb3467PRQ5={RoN&M5H4FXxF zU?$42+p zu>yp__?4}xKazR3#Q<+gK5N}lN)m>ynYD}+st7=hN{fK^fn&UX_(1-zN}}rvS!)h$ zWuWi)^cO0W_GTE9yEnfY+VIgV@FaPgSV*(n5o$xylD}dEq@W#JK9Fhe=%)z#s)VoI zRJV7%S&6HQ6_a$KtNrnkES5OOKvMbh=Ld!g&*cgU-tP?$Iv*VPS)T`DDeg6IrcstA zP5YA!7I^5@jezWbY5gj)eH2BXM%^x9FCguOsltiPpBG5|o0^O9Kc$PmU(7tVdRKIN zaDc|l4GE!Psebv4W#zIfQ@M0{l&c`#{ut)QD)ZuVppRy*m_jy3Z_^P)`SGx`DO$@~ z1+Zl*K@Txr_PxE!2O7<)EwD~m`y6cMlsyj9gG5pf=iD8CvzEYT?V%C(6^E=J9o{_n zZw$Zcni`X+iv-UK7mr`-(wwl?{!9m;^ZR=9rXCYUY&#^qH{D{jdZ-@s^U_&NvytKD zOR0)IFJtZ0`Q~okfeF;iilZ%Ik5J{yFamvr0F=6JzU0j?0@2taM~$hg8UqTX<~rzR z6&JodvJ|&}zWX)OBi`*C?-@Nrc}eaU5lic~jtkwUxz}BA`?(w5ZOYuv5J%=RBXJ=B z>9lrPSh2K#hLrr-TZb-Hy%h=-C)CQ|s9iXDXe6f)sW*|=9^5m;VgyvnpDfyhYKEEY z7)7coB)&xKIdYcoViP;~OaU%Q1^S7(xKJvR==$D&IYX8bHnE7S?#GGmIb+x}m{2Eq zh2{4rs1SFWOL_ql)sir-ZKVlWscUMT1LfeR_qirV#yq4Cl-5@v%X4Ti-kMa*Y9ePc zrs1^DwrUm*4wITGDwDtbFvL0>qIZkmG%Zi_6E8OEB9eWDL0V&4(&N;ZSZtK)Bng7YkL@q zBFUCb9eTfET2zQmj)}jB@T(7}gF85%w6_u0oZ6Q$ ze^K4dhvbqBT^B6n1}~`i@res=6Hs(L=xblM^8>|#?7?W@aEBfj=VkxAb2xGAV&~Pk zbi=DUnqKm0$hS~F1u1cxz)2vbAV<+$y^~fjOaKSh7Fi{XPFTp?f|onPgD(T35kH`R zyU=)%c`fxwzJHD30$Dxkv}Z3cml%*4OrtlgsJU${%TIBz5_m*LKC0W-n!5snwcXxMpcXxujyF0<%HCT{;0Kpvs z!7aGEdywGzL6V+M_mi2PnfKA}$DJ#6P93AFR;^vN_uAeh-L`3jOB-`RVK83ixb1D3 ztA;aXx$kxY!`Q*VF&odLlu}V0y*3YgjYje8vzY{;e7H2ywXMlf5=Z?Bf{iSRbbQDZ0_g~U0Ia*G1ecfbTg*M42!a6oI}qC?Ap#9^z%UZhfO)q1 zUj(sq|6LGE_t%P(F9E}_*R!3|I2Jy}bJryl@N#C~`(1m|gZkNCT!eey?#wrvQ70wk zhD%&iTvS|t4#29o?n+uZYBqtkXMneKR=z~bquM0y>IgFtXo|K zMhc!`UAh7>w-?ny;@}P@jEDd%yLya^`t{227{r^VA<<*0PoLa^Lz^0h)zGFs zM3sY;XVRVcwYM!(zq7PJgRPnIB1RVi;wpE|izh9G^CsRb1b;}};WUX?_~OqVOz|oa zqH@J8oZ4|JeZN52ASzLR#-xlZ=~F;dTQhGPlxEAtn<^%Y5>#35fECH1*m2xlhGzMc z5A-!;RYc^~qStn-{RWp?e((`H8J|LfZ&-~&@AR)b)!v|8idUZGra% z7P(QLA-*?~`Hz#49iJsuYG$e;g@&El4tXi=72wJXCOKd#LUVwY=t>8j_pIHyr?MD4!}Z*ml3B`3|&Z;w8fABasa$j3-M};DiX@` z8(@%M&h=P`a`LW!c)_R-DRYh{fiw(A9I{EIck+xWAzBfZPubp_wKonPVw^wt^34Dw zbFuf9xh1opf+YM~5WDe#g4h=r{z?mit!_%bE!Jg{wLdTjwYv9f~1~ zVx|9nED{oj&mrHVIACJ)6nl$Bo<1FFR2SPulsL6T}9R%5n z*Y@io9twrg;v`2B(^+xbe$1a!O`!d@hbQ2Xt#x2iG%s*$J&%suX}tEBr;==-UVWL? zR5oMCUl(JAuJ^o+2+XTc(>^m>UCh2P5G>o0^T#vle#!myv&ffpQXHbW#}cE2MJ71S zBV0vH?FD)N6A0O-|ZgE*wa2El-ADOrHeJI zFDrJz7-+VF+GQp3o{yg_?cz1e7~QyjGC`a=fUjtO_0dr1P~ULMm)Xo>=2a63TQMYN zQg$w^&FTRyhB6gBRH*F?y^t8_Zqxn9V5>BweDs4Y%*`B0fy%v&_sG_5uN|yi9?%eLMG{bN1EKU9jH ziX5_kn^3B1?#19dI1l_$aRsC&;~J|OD{zpRaiF&h*pMX`Rvxf=i}bj7_xigS0jtYG zf*F_=C=u;vNKQuVzBqE=FD088X`FQHizs0>=7Y;Qz7r*SHf=1QpvLscv^n|#v3TUl z&}DPb?|FqjQshvv@BP8FvHW>yPxLpDGDt*!FcmQcLkUCI-+&Mb5lu!+K~V@-*xJ$R z$6kq$m4UULy`jNxv2Z|$IN$61xb_bMy&?j?xdgD#GSRZpvN5tUFn$la_*P_MeHNnr zZ+@M>VdG*`YSioHSO2thtKkA{Uq|63)v#?wvspc0l204VaPm`NE8~eW2Ta zaPYJ0Cz=g+%s81JNzIYK^Fl7rj~-*2sCeU|gPI5@i^0SKXV$$iizt;B8O^fQqCpq) zizw26IQm83AeF3lWJbScpY9L&GF}>9Eo<~oMUfKsm})FcZdY#iLWhTUEV_nc=uh^^ z$4g83iQ8jW`UDgawMnX5ijlo`L0t2H65Tg=vYX}^ap}PyQ^f#lgO`v#Xj!D#MxgVA zO|RrI2VsKwu{$Z;f66&LaxeFhQH7IGVEeWs_~vO+_kWty&A<0JSfQ;ZAb*CAKts{3 zM*{7f3NY|L7<-xe(O<;bo6w;r z{ItKC+!Mfd?E8(b50LuZIWJ+rPpXBWDE+EMyZ1FX%lzy4Vi}O~ti5;12fNFI&AVzt zM!PE?kv_{I;T?!CVyJgdz4;=={tEQazz8bVr(bZ%K3@83L5R1Ei#~WSf~+OK5sg%X zE2)$`dMLV29hxt!S7&Imfg~P(rhv&b7iVZ!rO{+`Y8@SDSL>Q3J?J~^>xTW}-1?8L ze)_T_$EYF88*r}YdpS7dV>Z<8+s$!JmI`a49^vp{tdB;O&bnSJd*PhL)p-|R6T}g~ zEbqfBLxxA*>N@wTI+RZkuwQDi_vg%KKrCqqQbnKm4ynZ6cs0uc>oYEYo5!KHnlo3j zZIlo)*Bu|#Vj`-<)h<%$c^?mSywZ0Uo&H-IgvgkMrbgOi}=(#RQ;~LmSfJJ=?ASsWwtJa5>cO z!=Y6J#t`|Tu zNz^2r*fjR8^Rs9C;YJ^qX}>%+QoomYkTtCpto z3%OdszCqJetT3$o7@oF(xC>)lPrYDl)fe`%CIBfE0L{kVH6|&4W&)k$BMUY?*bI_B zC#mFz-=lQ?h2dRh0g@YsxR$fMHjO#ebL`z~tnl^^E+xOL@Qc~spXhLB^gcm;D6YVRDg1A?F(pz|c{vI%NAToi@efNr%?r2m ziPZ_(ZSIjNF319Zh{`HeIaM4r&I`PDCAs@)OxzXVc-h;X0xYidtu@=}l#sU84U<^)*0Qlq$Qn=JMCUct#cmA5=8K;ke(1J#%W9u!#0O*#0jYL`z*>rM? zio%#u^C^i(=$OEo?_M3bthhdC&2tw^D&42PDzaXEce`wVL%ZAYgR_tvtKFEWU6nY$Qpd|p4jDr6dlsKEBUY(+XnK#(< zDny}?5(I9eGZU=>m2pxsqw(+(=L2B^uuCCO(-+^(IUSEM@$6^^qJk=JiC#+OmY&`t z)-}!8W7o^{fJO%@-50oCUZbZnU}`#HR08t*!qD-5tLH`{uFjK+8aSndECWL7(r*Pt zduPg1x?Tl9Tuh0HwHelLq1#%$Ej;nt5#qL(0-T04_6Je#%Y%QO{ga=t=-E9N{W}(e zQ<9}?ARmGx{6Q(o`;W%XkK_*E&>)J2F1kNUm5N$FSv}TPzomPCgoaa4ko<#y10yZ{ z_nkj~il;NroD-BfoIYW(Al#m0H7GOaF4SLP|v5QxnP4#zl4)AG1vvx3y!0U z3?|3rsR^dA&cqtNJd`y{4I^HQMy+n64tm&sdYoO}KLSDa4LW{D29190&80El;-Nw+ z1G(B+yR@V&ng56+KSRYYulTdq!Os#?Kf-}Rw|GNX_ID={XZt723BQ(ey%APLKd4x? zzEy6tG4Ej=+^GncfxA30c7pXE!Ip~xq~*FGASIUUe*GqnIIWTiyK(B0a}@LQ4H4&m zJ9OVy8eb9MEWQ|q_Pr^*23yff4cB~jPX#%8A`1IYMBztB0=RN5*$`v1%f)|CnehA1 zYyT&@`Mv$A|JnBcrWW;^wj>h+-BYJzWMKKhRT*f16#sX;FQnK zIrBXRks--zPtVpCDz4*sm(`&B*+vL|6_Z01?zbc0eE!>{e1tgbcCSWWpxRM{A>(YIINY32GzN4w_iHyiA8dM6uS@q zQDdLu!?4d{`&c5dhMQMj5htrto?hfzHtjvHWG)U;x%ry5KMO8tX51t6pzP zH5_Ci8TF~C&JVpYy$TIN0229sXoTog;_S&t80bGVU7Q|`o`py0?NVn@KeO}h%%w_c zAYhEX)1@poN_X)yxI*bc@ZGD8RG6(Sbmz~KQT0f#xb)J4SU~}d5H{4D)D_wQlXKuH zOa$E{T|YC3I~8mAB4gBq&Wr%KYwJ}*Oa9B$zkuHBm(B@%T`E>D7Xn6T9$}N z#1Ge?(3y5Ow1K(AdGme>R2;|nT{11^BIW!7YJ!SU_oHT*^11Ur2pj$xHm+YcO{`Bc zUeuq1`VbY^&kLItX8weKL%%%zPxvw^S49p$W{5?8%uDVORf+c*I76u~WaD!Olb#7{Z{lvMnaIPytwVxm@ofm2?Y$d@^JsMFs5e ztIPmtH9SnzF?8U6yoF$*c27sV$AHu7vGiqEh8yHq{QyXVUn1Nu%=s2ma!RmTn_Bag z5yUDn*+aLyZexZ0V+VBlriEEN4^lrbazemYwW1OoN!>WhQI5f!1Zezs#>Rrw4YOmR zd{stJ>bIT*`KRdRk4tI(@zkR{%dvGaA3!(^d)``94Cx_%bVOsU6MbfEwsv-^fbX~j zL2sM-;Gidp;v8!lt&6#o;Nzeeg^Jnn6=>vRo`7SJ0;(G%H3TMeR?NL$D89rftSr&u z01z}vpFaS&G?P?l*x@l?yb-0K_do(kB1$O)ZAq;yid7iO1t!D<6-RQu?YJW1?CY=R z5=JsNCtq-X5hAKfR4Rn@vrC+cKHWYOl9(qfig@}V{lI+3t>uAs6OF<@5E767JShEL zGW|Cw{g>DXBkdp9$aC?3`0f4<6%n#3lI?s)z?`W=8i6v9h;P8N;1-EB2ws(AOV}7G z)&PtllBoKgDxvo<6P&4+WIrTaL3Lj*^x;?o&YVtvUZ0O6Wa!|aHUe#&5p1EU8`S%g zP{P50cOk(F#IEnnSCR2QQ4znDZjkpA5oF-`~TM4 z`)V)qUJvV*C%PYkT+<-NEF5m$$(p|u7Ouj?1JG+~?bzNK0!z7ufzq<$?konR#c6JY zTB9X@y!Ej3QG!h2_JLv8G|H{YZOWevi-Mqhr{%SF3Te|B8(etS}L_%+rnegL6E4=|Tm z5n0^ee!a%(gAP$KqiSzEfno+m^2-j^bT6(Ti+niVAP>MZO+Xpafil}HIQCwKhnGZ5 zdv}dpueoMDP$w&k#vNUN?C|^9J8+JFC^xB#ZZaur<%I7)08Q<^HrWeAW;PGp#cr!w z>?B<9A@}98jOXrM>GS0S$khJm-36YUgG$NITXk*CN+KccbH?Q>vJ&jEhxxh2QB#f@ zlfoO_j&vKKX4Ij3dLye8EUs38iRq4IqvJvgxfRcTDHihTt-e`vVyqeWRkNXgQrglv zOb9XX9TECFBGZ9Smi-=UYC1_J`$yEh&C?iaoD_qnXuWafB>HH>ce}(_{kCb|aSx2f z0n#b^cU3MB3^t8M@0<=X?Dx_0VLI^EAEHWAsTZS4&VIFJ${FgMPLZ9 zoO3r%c?E>ngfFZ8?gBsI>U2x5-5p%7S@&Wthh$dEn(RxKZ7&JZGyFH9@ z*BPvI8^QI^#m?&loKRK)o)>}nA_ZK+mCc*@CYSE%GnCwrc)e5%B_F$gd{gKg+8u4X zS}TqTgw8U|@6hx!a+`s>QK5*M6hh#td}Nn|z6g51k9RRh9={-6d^2NX=x__$fVf`( zr&~myIJnews4t1yRK$DvR?!MK*wzts&#ju#ZiRrvS+h2JFNlcu{SgD)K$c%?4({zm z4Hf#zGtSCIxMS`H}Fu&=|S7XQJ;?wtU^_weAcBa+urKy zMmH*%usE32#?EJD2jSNmlE5C+X7Rt?F#c3C#|PCp9;S=Ye1j81F)awD-AGn4+qHY7 zAgaFab3&?$H&hOPs&q@jqY!OV1dOdh((r`xz=X7Zz_?E+5B?(+0YHEsr4FXv2=9L| zIMaVZQdvGaxTgx=kQ7u_*Gkt?_qV-XFlean2XF_z07XLe(Vtm^ke!^2+1y_3q zLrZ&H1!`OaLtJ@kNoqP0TB2_Y(9qa_tMyA|%ilDwfuLc3|5i~*fRF08&1-sEMml;1 z`fvF=>DitgwCPyrS!th5(f{4A|Cdr2Q7bQNvI?D?=9l3VkL>ly{7OZ-bIlJQbQrD# z+bwgj+ zt01d;3B=$iv3FYv0vD$jr58wsp!k>N0&C0rgkd8Py+oUa_VlC^y-zJ3`r& zikHT9$j>25e0uQNRu@zcPf^;tJ%igDH{54{d?rbMuh*X;#9e= zK&m^N{gvBxtrpYyg{U~QkkLeAvTFOUfKo71^nB1#bmFaq_k$WCjek-~YS15W@s}0; z<$#l?zdi^zljbX%w7wpDU28jviBD0d0$PBdJL4PTU-}zstr=T5I(=+{E@tj76^YYd z!1kJdTB3f~MWbg0@qEkR9y&V5WtyrdvWnT5M-uNfs>c+~9Vu zurD&8yuf_n!J{P<*cP}=6qT@m@|80S-KxBQ9gBQdQvZffS8r<0s}|GZ91v@Qd{HTS zpZui=C$+Xir5}F2rvi@90ZEMKHa_xBn+fxOO!tY5k0AZ^>gXs|@lxUYbl?xAxUdGv zQu*d>qN<6eQVU?=a&bA!S#VroudDqciovDzgjTMh##UB1HI_7ONr*me0r`f(E3Ee@ z>FM%Kl8@_BcJhC1hW9w>Jxd69$`YXQ!lHR&)EC+G((X1vvx@M zNx+iBthk;xz2zhn{LoyG+t96N((a%O5J@&oTgrWC|gE)sly>3pPB zja95|&K*X70Y;+&9NT~Xknw4Erz%oX0+4QYgHzOxtotm#w>tLlG}`E~6tv#9$rHZ2jBo zk~d6QU;Q%kcp%g1Ov6(0g2f|$t&F6OkUQaAN%3C81ONa4|Nj60AphSYdrm8|p2RBO z*Dy%>FHFN{N!)i|@wYU3*aNOSdJbuHl4yOrqIg~MmbeTFkEGi< zmBEKoTbSpvqartmp?gOgrh$pFShzh9(9!4ZKH=@F;tgYOD`%cF;7}TW5BGHx-Qz`w zBHZ3qh`bRm!H!B=an|CZ1JqP7KZ^PKbkx$h6=9T;VXa@`=IjF=uT^|za~fB=XEH9@ zW;m^0L>W0U5~h55gZ>lG(F&>16{szyT=Lw#W( z=#iDHKKII8cfZ^i{0#03qb8T5WSm!_deRaulZkKpev|1vAnBmZVcGPwm_dSn41uIhzpZArF2DxpNNAB zj>?`1LK2Peh$M>t(r^Au{dF-7}ts}^))X3 z@-6_1CjeKI5lFCWuCy7l9dHScoR~@2D z_!S*-zGztf5Sp;DA@jfsz~LsY)PgLwOs=|VT;*eb)z`v^^fN*U@~M=}v&@G!FMjrI zs04+%IuqDv$y*zqC~?a8uf&V`rbY2H@X}o(;L#}>{pBbri z?iAWnC%!dua=HS=(Y1tA>hiCHSGEHM%l}$|4g_KVo1q>$6=Z`!xb#38N-<(qe&?36 zQ0WSP8)gXiE8zTMF2?D`1G8QMQ5V|#9xcnBL3aBO!1>Dx{|@0KLY;_-Li`eijrCGt zj!KXW?Jc%BU8WRlW+|5@pLGHSVYX{BJ1g^TlToJVV|4Tp*F=3<^&3YX+_cYj!`Vvh zQU*C_pxIyy&`@NXCwuR64{9JCqI*2;PNy}0vto{7!s-?djdF$~jX0XK*a25a7Lk+N z5+)$?HhfbZD8Grx%~>&<665%3}R}BXKPW1=e@=Z zbKiAFqR_S9dO6LH2d=ADI=eY>SkTB~ZqHvByW*VtC8UBCAbp5hAjLC=7@Lw($3(+_ zjC9uQh$rNtH<$35aEbSCWs&-<(}OL|xe~&V00oy%KgFr;N{RNo{uoZ{2NL`Q95z1) zrzb?x!?DPo+n;em?~kFkKLp_+p~*y)_@qT}1!bQ8dCp}gCM+hvrznKWr=%z@)5CXravJrQ%-=Up8Y-ZRZBPF1mTnE~{ znqolTiFuV|`R^(ypC#8Z9|m6{mcEfE1-g z?70W7kOw;K>-R@KoTZFu=gj>^0* zgShP6_VaJmqzm>F!tvQ$SE<0G2AgB*`7V*#35q&OQ-uVpDyJ!jy2;jL;mb4!{320M znLU%Xf>X<-7$MFm8`O=+%TdyQGO?X9#Et0qmU(WwK#wqLz0if3FAelL*4a=Awv8Q; zCLL8`Sz21nFo`uRwdwj$S5ni2+Z2p)a8|`^Sk-oN*qmC# zCP55|c%rs_ZOVk33M&JvRfqcw1uasr$z9*#*^|cfRyT>A&k<#iBGH+DJQfdoHo*zk z*kl-{WqAq*!Yp-d(B3wW#uLG(PJvcfTS74f&bTkX_Y}9??;zvl@+ZJsbdJ$O+|(mO zgIIVN^0g(K6I5fraNVW)=24pTTeuO5Lky>e4K}5#t8A?LVjloWzwJtIi27#Qw=^*4 z@|lsBu~m=&SOAJipeq%BV6#1Nnuea7mTD>+hxrk^yb4*bB;MLypyRF2*?{7yBE1Q8 zb}jaE{gvdxS|4wg)aRYlY>#1B9>XrOU^6tie~ZbDim9v=44SAmzJQ}Z8;U5`6)Jgo zs4r`Jh2!0d9Ce?u4^>Pr;xuMVc-Z2>K%Ye30}^BegW`$w3S(k_{~jmxLOaQ{4xK0u zvMPp0hq)x|K&6m-+cy+dg)Ptloxf*S15qdH8hkg_A>v$Q>^;ZSt&5Q~v*#24+XY^_ z7t_D9yhXB&Go}#{uWNY3Cbzc{rv0dXO5>Wp8Ua0fU8&C!&SDs7W2UJAVb@Tq&sni} zbw~e^C1|55GMU7Gs}Toz)#l|X&@z!8Jqa-?eL&VD06Su1s??cGJ(3N6ML$LKXR>yi zGnx$V(`f7|_2oL@yRD#`ffZaQx5jq^=N?OX`4wSbmi&xDrP*n5czgy*NgAQGr$;K3 z`<-noYaFv>i+BZ4K9SB2%ZF+7>QC@!A`?QD8Zg;on5Qy;;j)t6F+LD%7kV^F`s6 z^|%m(qg7+H7B=uO%QAMMQAPL`uG!I@sI)^e{|7Q_YO|hO&ru^f{J|gqFC%|w{<9Xw z*bekPnSL*SJ1Hoe@OPq3@3N6DZdC@+v;I}il&-*+Q*5*Im;rTj+=jY+l{g7y*qi3RJ zrDtM)`Ud?BbhLjf{{Qo%|B4-caHM4@ZZaQFp+sN_n2m5x@)@_|x()&06j;cgMlH1eZP4(*L%4Ly zo9luwJe72}Wgz1a%8Vr40{D8RXm4055>|)h?fW@tgmtM`_<+4DD|c|Eq0@bevV$CO z{m4E6BXY_ek;>j7_zW~#fsifvg&53B;|r9Q96g9FY6O&9n|YTrP=|Zbyn=-ZO>vWd zBR-6^!Y;5l0CB>rUv{q#WKe#EwT3)Bp+Vi8i=2v@OjqoO^3WnGz5kXNhkJ!PLaZ26c3 zi`HJlB$PH|%b7h{$06~nbT4p)P}PWk5ed@e_Nryvuh;AA?8}4c@iWpg9p)%?mv%d) zMhrDX3h!60B#SccPhlF%8fJ^T&9CE{%HG!}aRQ+?3Untn2-&e#6=WxJ#khO5;VDSI zIXs0@OpuG4#LtHbJ&A+mR)j5|>62bKrK4BgGq~QX$v`&ZxBKcnUO^{tmluhDa$-sF zKHli6^cD`>ikQk91q`Ax{8qLtD=}iY_8uTZ9VzuApx}A?r!0K!9JuV~;PV$3PhIWw z>F4qtYY;&#vZmXc;3dffHf`PADSOe|VgC@M!S=^(-XBI6BqAuErLLQ`)!%dw5#hfd z_?vh8@9B=1f0B0jsrdhL>%ZfFmoWA|ltm_20p_7S)Lo*`U06cDTN12YAXRdhYl^54)k&;Od-Hs`736*C0!kP2XRCgi5f7;hnU2 zy(}F$Qca|p+RyNcj-VJeQtF^wCoQsp6oEZvQA2p7N{J_xCYNE7Vo(R91K4u}kml%Q zk4K2Kq=iLUAw(|l*x%*T; zzmcjEVP}kb`lhdIrq~k4-j{Z zSAFMGm2|+Pllb(i#OwWT@~c|P2li+rzc=4l zB2!QnB;00@%asOkQz*-y!(IOEKQsM*T?_v8(t2rP7FD{qq`0rET*^V{fca}V#AYc= z(7ST*h($DbvmRo9Xr`GqYutd{_=>bZpbm|B@txkQXs1~XnRUq>P-dyY)DkY}Xo}bg zP_)-2EP}3qzJ8_ZEGsaB8SfVQXOFO*g$$KHtr?y~ImdzEP>NQtKMl;Nsd z1}Dri*2|*{M3;ZG0BNXosoNXbVCO_o(0dd=b#G+?DMDa>T>om|phw9CAf`_GKrh(z zX3>xY(3WFP{1Rtw=n_vUS_bZ*%x^Wzd{$_@=~(B@AtxnU&>YXwft}L6Yi{ZMqDOfn z=I6U5878M;xGNVNGiEtq5?zhm%;Do4B~K5cP-~j%uHgV`ihCG2c#B&djAjh4t}>3~ z7j&_YP%3ACsg(^XyYG)+oJNnooP7=|Sh3ozHqBl(y|e2YL6=H*N*hL(mDr+qpG)+Ki(XJTmUJlTz74*;k<2{x`-z3_rE-0n?L#hthPy}qqW{u{Mn z+Ep0%N*xsd zOI`dSf=mMXAFqdrQ)6AXha|eTbqi1iz7`>W#KoBx?9eF0cD`0E9|V*`)d-BxQ`4_4 ztzJsKCB6h8Y12|-aY*Tt^*lISvkG+=<@%5!__^Yx?OY~RhDlS{GJ&?+!`zml8bXYIs_R?-Bb6!pqQIVhvReY$FwuNa^ z6`nE$9Z(pkdNAi3;`8#9g!8a-byFMC7KbfKD@wL^^{74@Y^Vo=u5{3>@39WfjxIPW zzW!*;eun-^54$d_m8*j6gK;*(sVY2wngS3lMm>7SMS4pTP-HH|SFEQwuX=d{b2Q5k z5Ohy-3b88SC?{Vt+?lMvq|LmHcdW2_Z|FEef;Am26@yf#vP~kR)J#T_;mL z<14oiuPvTs1O6V_%Y{iiYspjtzO?(Bi}g8 zrKd5m(cF~d%7R+Bjrdf)yZ&$>f)*vq3bv5*hE4UVakA)I)R;E$OT3G=bx5vU8*PwL zwvbVy;(l&N%(dvkwt2;{NK>EJ9c+ ziA!5eZPUlS1i%5-&@x$8>-k$MJ&dj%Y{gaQ72{sG^fv@kJiNHxxIUdelH44G#F4;d z7OB0(F#i^k1fUKEG9ENT$H!BHtEKl;!b?Mf|H_(3K4nqoi_S*xa*`v(WhQ_v+ahf$ zzKSms&7<|kxFd{^sP4^wPP(W)akJ@Fh#LeaT~8(&Cdj*9!W;Jpgea9xb!7hpWftP% zBq)MvXc55|$>E(ka8^?wI}Jj~vI8Vhx~uyZ(CYm3xU2F|qi*3QUeh@fG2dIhG~x6r zj$17vbX@gHhm(|aFM*1|ObQ*Ng87JUuq}$f8 z!#ADe@*2oW+^#Ht)Uy#jGsprXv_XyGYQHnO^`zk!(YJ6~aS^n}%)Ovk=sk)7reJ>_ zMI1kMbs>eH#2kfxrKJ?9+Dd_@O%Qe@_b_IxWAox9!JmW>-22j)`q`jPkk12 z|C>_e|I^L?ijy?j`nX93S$X#&TDEn2Vge*ZQ9=_m!Kd;Tq1U|$zDiRzyWMh+42z8{ zAktEMInPX8Cx?Pl1daoYLa18IB96Me$u^;KKiy6l^CD({4SxctP4&)Mp;(?Q>+W$OUmsG%c6EU_p(7yipA2W6gHutxR$GTZRK{V8HzCZYZvV>L8UZp z4B>XCiG#A$nB3tveo+dikly=Rv3^&Zk~+zMV=D!JKKusT%+~XIym~j^*4O=$v`Aw9 zg;QWIY1FQdm9Ij+rB1!*^`~p*chq8!^@*Rt!K%`NRqysOFqf!o){m!4hsoja)*&ISeNSZ@bEzImN$Ny`oTO_2Rri-6&W zAUg#u*-wJ(SU;4~f0JXUHnOsGpfEn)cIm5Jc{G3qe zz_0dX=28zY){3C@Uwi~M&d*5JxqpFpbC9aH8}v}CH)bUnf7|9L4J6Q`!UFL@lDI!BcZi7!#>`V3o9S99|gZcwks zn-SC4+!!0j`EGCML&@tXf}l+OSzCufsiAC2BZy8w-N`Co1ESnwah_P87HY7O}m^T2+ zOUN`%<@5gMD_IX2Oe`s_Inh*Ateo z#HH<4jLq~{&>%O4x$_(>{`k973w8|mTBo=zPMidDq?gwi`)UT03p#dQxOYQ;AvMv) zQhIJY(xq4(Y!7Z{q{z#B7ot8O({OUGCGhVj4uFid%*q?-V)=Q^TG_|#R?S$HnoF<} z>P&S{1!5ew-i|{O3TK0Vn3@wpOPo-^(g<)pZo3pY3XAFjEz6M9%Xkz9z8deVg(u>5 zd_XSl6Mr2<(|APdyrH;OACRJd>QjsuCdV!#dJ$Gz^^C>VPgrdJgvAQK<=^mwA1)u` zT~`y-Uun|!3j_Ew8q55Vc#zSOd?y~bVpa}@c2re&m~qh(}ZeMab?i~so#{7Xx6htU3i42k7yS|)`G zDdwBjg}P%|9&4?=2PTL39n(O zoyQty>a$9B@fAq~B50e4Ckua7f$#uv_6yoa_$u*mo{(H!xuudfVDV@Awg=Q})*8va zt09_m#Ar* zWO&<6g>-@Pk#VbWFA|><_Ps1n&z0oG5zbDjDPWhg3gXE0v@1XWaZx+umUDRp1r!xA zLIYCC?JkZfVGn|TaM!)JB8%uD5a&?U@30+-^8$Q?c0$9Jxf-moot9Qpw9bzs`JLzM z(41T{zrn^9e_)Ipe;~f>DUcJ4PqoK|9zh(!g`(ua3r?v{A92j`xzM8aS-%=A^-{n< zl0II}uf5`*z#k#eT6KLu-L?rXmEM{SWA9!hk+XViHaKU05Rmz|^p0Gs)wbMgH#c6` z`+x`cqN`r)rdj<8bCqyZi<&D7Wk;YZX3$M>NyxxUbR9KAt*-nwO=%`ClqDMK?cvqN z@shl@C2emj$6lAR6+-Qy;3)^5$ik}ae_m1BZR~q>6qFGa;B&FD8xy^NlBS0tbZnF` z=3)J5kK+h`XLw+$jO3)KytnM$(<}7`A9(+9)_X680>1(UHtIB#QA2g+?nR$sLp||e zXfQ*FBvk;X-}0A46_7^CrpwN{9%&B0R=Qq%d;8eYPd<5UZ14;Oev+J7L6u6$SgmA1 z;rMBpYvvp(?0z;<3lKda1CU@+7CTyzeMg_)_cYaiP)G|+iH{HuZrb&Oo8>30zskPM zJM5#>$-jLpAqAvvopx_pw{?$39tYDFR`6f};}0M2OiZ6lsUcrUK=%Pie)Nb!3kw_kY(oA5`;e16#=az$zv|SW|WsP~Ahe&Ld zoFU!}FFpLZB~+5<0K=XqsOfn6iT~KS1Ng%Ns&4>OK&-#Qm>62w z(+Se@e@8$LQ9}z0Ln~8#Tt0nW14GNF|L9s7{EmWRR`w324vx=(Q1;&(lc;}kN&0aY zpnvTyf4`-q`?e(a1l!-in}wEzj+TLij{f_CA2S2(kK+HWkNG?M1F>)Ub|m})G}o@^ zUZw;YNJ9|OWbn~ImNCgVBvi^7m`9jz@z^9Bg9wVevtyNYN&r-kEF;alrjkxMq7=23 zBqG}xwbfY0YIkI*p1yH+<4-q(R95#eg(~)ee;~B*Y8U=jQ`=YLL;0l;zJN_{+JL?P zc$yMG1s$=p^a%9BplrjYZp6zyb<^U*z$YGR}$oxieKI zXr_%3VetTIK~^1KESVgV<48$DfWsU}lp3IrZaaP!GPJ`(8Nla*4M$97O;xl^>tFNO ze*;v-k9qb(hokiag?i!-U;oyZ|GW$R?!To6@O~r6Pd$L;U%AWQ>B@9;^mIRUf3HT~O+ld?|g&j%bVqid_8Byv*FiSiU27fdDOk{4NHv267JonBq zyy2n4DougM2NK36GS9TyVTj(%amc%1LqiA11$#`*A>IniiQ0g0N!ekO$U?QUe@`UR zemP8wNM|^YmCloIXo{^o2}!oQ2Z*;eAB@5DXM|uD+0_i$RNZ1z?6}ecw1e^LC(kJF zW^LqUT5@UxL>ewT_E__E!O5@9@1s8Hi=p z8qJ+?#8?d@*>e-+yB9(OEhR~je{Q!CS**$ORY2IR2p83&6F^xH?{?Eqlpv#(4v^ME z)8_n~6rJz=Vn1W$DlBA?D48p^*6V2YL{83=in!NQO?Rclte%|tC9s=p3w=N<&4S(J zG#0YRhKLa^&sk#EhsYOh`EYIq=P;;mX3K&nZvxuc+e}HRPGL;sir4dsvpAj_oVs-rl|zM=iS%R#dZ$ueOAWP`~0gj!l+|62D8of2oB}>8?EX_-o>jl@_w05#G+}dcmox+8fyQ>|fot&cu2>A6;a zxS=}x*mo|3@tGB#oF&vXw|X7IA}}cKF(i@1#W%`$UD!b}au&vPe@*;M$^q!9(;Oxk zCv8-8z5i%Nurm?ACP=E+DY14uvqol)ZsSF$8|N+qL{9`GL`acXEo}Bt9O^PPs=Wlg z%lNA`DhSQN`@4&P-Lf8lzg? zdl`!+9MpNo_cH^re?#%Cy0BoNI1<9}C$Cx~0yR0rDSTbws!g-RWRs*WVU@Mo63jj^ zcVL+Gos%z!q_$Rm?jqW`0cx1LMz)FxIL9RIy(1o+#*9`j(6MF*ZXR+8fr^Bq$t{-2 z!9d_b2Iqx45tf`Tb_Z{VJhvoS0*vbKsG;cJ-S5RyV9g)of0%J*q0Nz*wH`g?E#-4V z>6#K}3aR6p^a%1+lJXbNx5sT`{}6qWN*FmCY1{8!A2e4PmBNjM2!rtQ%f$QR-B(V4 z8!OAjxY!!Hfd;%q(Md3+3S;V6Z_EIa4E3s8t<4I~DftiSOKb5mTbrM4%Bd%ta_nhN zX#7pjacV?de})LIkDleOSQ{Z?_vd~C^E^fP{OqGG`ID5bl9j2Op@a1wGn*<<^Zo96 zjfnjWppKS*FYfy{Pi`PYj2{)hxpEpB;7S`hI9uD9f8SliM}>RB&gXnG%(Scw&kKdm z2N;=uI`F^YHUA3QTdrNMwkCa`4Kji-5)F)b@Y%5)e_wbW-D(<#_YG>A7sYHf@NeQu zq|K$dH>7CIruj%r2k=smjPEqkHgQ9s7l2l16k?2nmoBs9v10K-Ra$ z1h#J@B|g<&rCguQ$C@^JOXnT6qO)4T0~d)b_IesL0`82&x^_{gYn1cq>{2<;@b z-DsEof84gdtDu*JK4C}@H6st1qULHc9DYDqvE3w`^=0AZ1HY z1EU(`#{lui<%g=Q{n^ZwWP*ct=FZ6E^Mj=vn0ap&gzdG_^h|_QHlqFboA{@WbywPR zxr}nP&QQMu_eG!xk)_Z(0@8gUBknZ^+^W$NfAVH|rA}ZHGQqthO;Uc$3*9V*G9Z;x zg*^hQzIYKgtm2q*eiMXl>{9hH@quxnWm{f(vue}PeVQ)@WI@YxJpo3b;m$viEy3Nw zM_mTdu6x>(%uTRSK978oPZ$FC0sn2S25m%h2=wH%&D9(E`?;eMIcl&f>4y=BIh&*8 ze;eg3%lR4=iG@u{qF23{)GpFjbLp8ul>I7S(KmZz!_fT_-8!0O5lm-b)rG^@_la)^ z`fAI4TloR< z`;murGDN)-Q1@1{3kiiPOh&;R9_7w3pa)(odTG9gI4+pj+GYw+o9*po)ceGmd_+xO zBuiLdzn2)H(%mxoi+b3C%Mfa38qQEGyJ5K9SCG=ws+ju>Bf~+j`{r(aXfh>Ve+Rg5 z;TcTb^5LMuZTC6awzOz2F}~sED~G*knBsvzOhlqtO2txdQ2xxsUan&!rM*seLO^P# zR{Q=_xDhd?GbOPTQy6K1>Dz0LbArV{c!$1dAmy0t4~-%d2uUyT*K@?;Ew=08B^s&n z<`}{x-w8gdb9Q4H%+%0ryyJ8$e^h~*Kh#AZIQeYvte^MBT2hX6YD1?dtJar%BT&>; zRh#2#9?;LYoo&9uL4u1J``l?W#_)hAPe zoaZ(-^}(Lr_EToJ-D;=_$;k#>b*E&$ZroK8JQz7GQBgy$ZT*qSAeGnoe~K5JU!iqv zqlLeK^H69kN_M7(3o@6`8iU>9s!@N+cwZOsJ&Xyka9QnaT6im3Yen}d+PWrSKjnSj>WIy@L%9>Fe|-x@dD6KgU;=KY!*T4Se>(_D`L25nwx*$#FzR^|)aeP< z?VjL9{X4WHaffPw9Vm^_Pu8v1>b%&eTG*J{__GBd_ea?LA$AK1jU!>FYi8}Ni!0`) z_nZgU&B9dQ?TPR{ANmHKKYTZVpy3qM`Gm#fzd7DN0pSlnlP6-%e@4r~$iVPzcl77t zf5jvJYS*-`nOn9{Vu-iqv+j0ce|7d8G=BL_jk^iYH> zIcmn-Xc_UBeT9Xy=qW^T=xEN4v$?TIm{|6Oii$_prH)1_9iIlk7V!)WxayAokGrz~ zt1C;EHFzMne@h5XaCdiix8N?p-Q9w_y9IZ5f(LgVk?!g4$=trvcV^ywFZm8% z7Mp$cCcEl)R@JKdua0&D;H5>ZWX{Tu%K*6f41$e``;Sn_%}hS?F!-&vDuV^6_$92G zN3ZQ_cH)w6xE|caEW}=jnq@Dr_xW{lp%V z+CJ0=c(4l_1R1+ind`qbee;46Chmiy zt82QG22He1S{#i7Jj1HS0DT-RVT%9#`itMrDydNmM9`}Thb}B6&xkax)pm+c`hK=* zT5WR;yr`ste`EhSi^3&>tU|1fUZOCue6ntn^r;{=;gi6snX70fOE#$G$vF?g0k>c% zx3&Kb`$M(`r3}F86KlOO80-c(V;V&n!M2WHiWA21RUU z1l+|C;#@XYWBNUQjD`fsYXl;1aXT=$)}*m2oX_wee~$y2;hCa!B_nGQaKojLy=pGC zlH-$Fw^Jw!Gim-(vimt3`~AM@#Q4m2VV|HGeAYPLS2&3C<^*W?8Dwy7SE*{%a4kI6 zl67Z-l~xZ7gi;_L#~pUiWcO1z-<^pOVI|Nrq*GrMKygp1t&RAktz&d(1Wn`PZrId* zb-ns$f7h#icD~FX8XYM+SR*Nn2l43fpd|(~-&W+_b{-T04UYxWJLCs~HI6A-! zg~S+(wlQCYfPiuqPCQNdOS$r<(=;6s<(kY;e*(X%i$qCNtG@`;yEx_iOQ8cd7norJ z(3Mn_2c96ITKw}2XDo$DHOZ$2gIS^kygu%YtbZz*Z^Pdo$o)Ay>;MDA;PMt zf8q2*1{0;0xSE1Qg=yC3Wp*dxb?SWMcOgnXAC_1GlLO)(fa|;QS!OD!FBn+Iaeoy< z#Jusf3B9gjREbe*IM%V3Q15qlm7lK}k}lM|j=)MW&aIRgxr}S)DskQI(keay zq>$IvF>6Cui_0cNEPD0Es;dSSR>l!;I@A9(5bJw#jxv;Z0-8s%2!N2WwZU8UzK3gg z0rpJCw~=VJa*)fC24ebSc~1{>ZPoc%L7((5;CP4gC>30E1dI!*rDx9%*UU=De_Q-|1@;MH$AmUEGN_QF5Z<=u7q$tT(al zj3w`T#jP3wkiN!5kBZmevZ5)v=moe=rSQJVIDn z<{(S)PBchH+PU+Hdb!eyxc##l=TXM%tSbtRej*&>BAkr8FJ}koQ+y*RBi65RbmDds zZXTktWj#fuC#8$1g;yem>oi)pmoo;$@F$6PeaK~M%LDM9Zs#M?APcB?xXZtwlOLff zy^_qSe6q3M)k_mEa%#b#KDfO*Sqd@s{Jt%8hKRp_$DJJe@hoI=U%nv75dch zWS4QuF0rWLfEZM!<{qqypt|0G-rk*JAC~BP{Ii)qqkbx+GAx69ug7NDo>U@cCObeu z_0AWo(sSFAAI3zT@x+6@E_oBgG7ynCY92CyP}5jPQ`{ajUcA}61V=H5*mt~F50@&e zXQifR%_9he0EOK4e}pSJA_bcIOAwcGAv6ST?-WPYVO%FJ!!64VIP6B78m0G`ym5a` zzN`$jBb@=Kmxt}>-CE5H&3em)FsK_OMGGrUcxm|hb{>dhYdiy5$EVmAp?_=Y{cYFo z#v|1O*(g+XLrrE^D`?@1kf^)Y|ID1?r|179Q$^gxr=i%he@Sn_XH{{pK{TZi$jE@7j%D-#azq$V^<5tzvP)A9FfDkXOhA#6!u_mX zRJ{%j)Tbx6mrX>tCcUlTj$Hi&gLOuOS<*_VhBeVj{6cK)1Exnp8V6t0z~mcYQ&0aH z5VlS_X+~K2>zpOGu3#7hJefh<3bYzS2j$ht!9K9ke+xG1Fy`7(z<0dl4k4^@;afxkS!AfW6^;>aAv;@-0Cx8|e4a*60vYzl=+GUSho|V@XAj zbh1H29Nsofc@<#ILGvCol5kI{WFCW>up_iS#D7)4$%aUSKv&08=pvm1oin;mhzI9Q zgZks6e>`hO--voDhOPkoJX&P!3(w-)ffde4Z3`VD%%JW0tn89>7zqvir&=veJC{y34^hx4j6h#Jbc4dEV+x~cz zsFA(Esd5U4d^j*G7EXk5NBnJ@-7wh5_N#ptf9kI*aSzWdx_N$iey1`FKyI)TIl%KD z$XRe68=4b=K3xx3kg1w=g$# zf1;(Qq5VD$qWE#fe=U7Th0o9Xz0Tqn!E#3WZv>*6@?%~iA`?RPcT0FJ|8C2mVf}Ag#*b!xU?lSYrez3z zOBc|vep}jOrekDe_*Mk^{6^11#;?Qw_kY1Zi*_1(YOEJhp-t8kKGOi^+3(TS#qePE z&ufV*T8}(ldO5Y)Xn{iJkj_?We@yU;V_Q#))16ue!CiS{j2e4-0`TL0?A=LhMN}Zg z&N6%r>ECQ@0;{ffhV3vl=^JWEP*q8{6P!8a#|l(lH!k>TvtPK2J#YC=)=i=1WY@gI zse%nkZe21Sl@3YuwWEA{M|9<>@+N6w+RK@qgV7{nuZ^LOF8=P2IA>53e+q=O0!VWq zc8i5c1dO*=;b5&7G8)NT=V-6Cjf%zTM716EYInC98JaMHOOvH`YTc`4%IOKW%tkCZ zFmKnB3~Id3LvzZsMa5PXi**?gfv;;qqjg?pTm7Yy9%E|~=TY2aw;gsPsY%n&v>iI(B%Md5E79cSM1kd)bblTs%c#|_;dtRN$)LIZ= z9{?f;LYeIEfyvC_PL+c>I~k}x&|J)EI%`%ob!HDY%pSl(m|_~0f7r#@>V>7poeQT{ zc)wMFGEiO8)5JOIv%3ds{ZWjS&assXAsH$=C6VClBngVfaiM+DpZBpzCvl*=1G~RB z^obo&5q!Ib^T7F)_?>s`Cuj~Me_5Msn~ta_DfnU(S-{!*7v+H&9=6_z!ZVBFErqNNB4{aDaRYm)C^??X~kfBgO}4EVmBVx#kQlb+jY zx><0(;Ad@nT!bTV!3>6%t$)GWWzlH zuN>Wc$q1H~T-7gawg5H|UafNCeJ0UMmD5);7=xcpOQxWxycvp>SdO2`Ts zM|~#aP|wHzf8aC7g#TWND$&ABNJwiybVX*YOuC6Lt?0FhxAn1|=R7DqmRjGuPLJ4d zu|Dna*fN(tJkwfzw)3&3WX0e>uKX%jg9285m?C#!TDkpK149VeC5o=-h8&TP!imJJ}>ly0>>?X5j zJ&of4e?|)Z*GHF?dMEUuuJJrZ0&u+8Mz=}Tqguwp1MlWUBLs?2lrjWm$*H}`G_X4| zi>%QAK*RVCg4gLeJ?1g^HnpugR|tDfi)F?KJc~L{ zf5UiAvGjpAdgC^(7r}FoG2FADU^u&q#fmT5f@7uU>^%64|s>>Ndl1lSWlwZ1@C6GP!ZO~jA{ zNvue;&e}6x1jaJzWOv{Mi=$N_snI^=;b4785qk%Mb z-IKv=BYr}cv{=ZU%t5t>Sc~}D7h3POi|%z!{EN+NC<9c~9R0Fr`YE5B}Wx9k%Yy z{kBQOl98Ly1Au%^ZE;OW?En|xe{u3x-0D8#R`VIRLVv_l$Zjp4OUxT#ii4QhY8Mk{GM_8!J{IEkQ$cfGho-Ov0CA_z~Jf37)mKl)}@ z74qOIe!R@8vPvdR-2eDPQ}clY9ZkSHG#1a9XX;j z0|@UE=9&6BGACcj0vIrw+q42Ho@6g=eas|r9$00{!9cxus68&_esf`_4D#@aVc_MW zEfJO)Jrbf?7a;K^%@UAWf7F35oWyU|3tU{4whQ zV`o6&p(+8V9<=iLcw8{0TRQ?@y`>2GPj^K*nkii=H_{)2oBeOXDTyG7?AfpA*ZKj@ zjBeg#u8KFgN3r^VUGZ7EKY}T5l^2hp51le@2@8V{$oF&J!J)eaf3vqEb%=%cOTaRJ z#>;>;UeTr=WCWFRdeukFa(??RFHkjkd;^BnPsG-BO3A;2TO3+d`keDh+Uv_+R`G){ z118xSPXHUz(eCn70**$*;4bcIy`*Lv?S#$NaZCCkJ(O(=K7N;h=?OTnvz(`gfOu@) zIWE`Q^+D)4aoTEitQ&i$jGGc_Iv!_4GjJ0jDoULPd!@ebV!XV*j_+GLa=1? zjF;z%76d?42@LY~r}k6kXvdEl$(5Nlb>T0fScXHnKGxl}jg+4rP*GtG9TX;37HWE7 zQL%UWa4H1F;wIbGP0$Q$f_q0ygvovp({EF=1%8ut6#mvuNuO4beBM40`?FW+ zabmsHRRB?%?eo`z`(|X!x>HQ6e(HPzP!QfAoji5B$BaRTdS~Jz2MJXC9G| za}PPAMc&#@b~-5842KJ}$gv#X?nct>#VLXiF0*tFHJSC(vl&Agai{m~S%-({_z^Xm zam1#^tO|=3X4X?+B{RKuJnY;RSSL~9v%{UU3zQm$_es&x98|lBBNPjZ-`?=JRB0?7 z9uRqNf1(a`Cbecu`PrQ`Z!SSt{5r>Tffx>3M?0vW-oS(d-n*w{Ie!>6Ec677*(&X{ z=$_}IJ@^2CSq)-K-1GRhT$Keh2TNpak%fw5u?Q~$b4n!nXw1@d=;&PG8oj~C-2W?R zZJ$AF`3zdcAK@`Td~E0+;i~u>;E9XU;?iJ$e@~yI$k=LW+2ZT!S>ucAJ%2UTGJmGs zFAXff(D*++{9VnMq_BdL zGj$_75_B#eN&=6gU^Ot%6y7d!NXmN(e=fg44sW)bewg|0g!Lvz9(wz=*4JuV+3}Ll zC`+ri$sR0*qZPT%d1JKA?m>#Ayp;{~krR3GD5{Cu6L5BO_dM}&T!q97;UB0!x+Aljd3YjG@oOQxuwBVc9;e>4Ms z^G^0&%}>OC#AATJ7(uxjUn=xr;-s8rPcE zt$9=kq9^#7qsLYtSk-oj3KMY#f6VeB{d|MGTHb<9pR#z_%=@csaZIFg<*}!p16SUB zaYM2NdTPwrx&?5;&ei7$P}Nk(rH1Hgct{+{!+X=&IHU|I_l}*#UaC$f*e4owTmI}X zt@b|_0Yt>7zPv9O!VJ12t!t$*&u9M`ct;#wnaj6`SJwCdL>CG6!;IVafBL22fKAj? zHG(^q8I3~;FVlAymvjUGxq;R)0<~-Qw|4DDFHcSsAQ3A+nrD`}y;yWRGd*$74LzEh z`J{-pTR>iFBjmr6G+<7ip{s#`bX5up|0LCuBqm2J5tRTBC}Z~p=~Hhm56^gOK#m9h zeQ{k*H9fRf*B#iU@fNXPI7IQ7JhlOirHEXkK0ZRcMwP7ugz za?pX2W^_a?Lj<#cc~$Gx1kzzFo|M8`meQ;{RVY_NR6cD%3z&YWfXot=eT$BQh~7MZ z-(YM0)LxUWJ6oV3SDL13Y#%#oW8i-$=An9IG++aN7gX?&+RVfve=O{O4vT#9*}slE zPr_L_%xN-ev(Zr6r`YuKS-hp3HQfzE5v6eTFuwLCo3nvVQS72wY23kmn!S7gwf=}o zO@H>snHLRfq_3kINhmU-K4P7PwcxzTs%Hx4^1{Sa57?8uR$BKKAcxxEQ(cRxF^Wh; zwumczKVo>Ckl0eaf3xOseTyWBDmr8a{$?lG(L&OTPm)_7G^mKzM_vRDpUMyRVtirT zIq2PR&aU_ubrNDgC8Biq@k@6Cg&EQ&6a~?2f%a8zTxd}-JPA;Y^_%>2Hm{5dCtj!N z5({V22;l6!m;T&y&2yhmH6(?xj}B(OW#$Q=QG-k41(^M#e=ku}NqCinx>4>1(jmy| zMr79XciDN#U+O2Jkg$HUXYwx%9zXU?X8b32X{LMTEdB5G7g%ZNpC`Y}%KwHd{)6nb zAU|yEots+gXVx)->olmEDHq%iY(h%dC)%`BZO&wmn0cy|HA8Vb{F92eV-9A#nQi`h z43K!vOZy!3e;M5=V%ZivF)SYaxIX)1slp%pqy3@Td`0xrQk0^^;?6X!O$ zP|_aQ00Ex}$+G$Kxc6w9(%-97(E@B4A@-Xu^w2gy@T|pM-#sL*yCL=;y6R30z90^k zpG)6SR}+WwPFArePlq5OFxCd5u^O)qSKVV@bA<5Cf4BR<-lzH?bPQulm=C^g-Yxv8 z7rH4=%jnA$`x?dI4dt1B1oKyQs;y@eS$lr@|1c8@mTc@;NRZ{X6=XS3yA1I_ziX}f z?>#hz|G1g_Ggth_N>+6}P7~p##IR}9tQgq9*`Aiize{Bb-Ft>qy>Lu7h&n}#^;?AF}{}h7r&su`)N0$=*y7f06caY|HE%f~ySw2(0 z>q8O(py3B109gExk&cu*0{n5iiy$uI7FmG`_~3|R!h9g#)V?Wmxe*ATG~bt$F-g8B z>r`;O)*K560Ikp<7bSA}Hu}H?>N?HmD-fcde}NGG{6hH=@~Q?WbSp=9k6Xzv4+nY< zk^FwOF5ve;=#T$Na3n}^JqLUdJ!>01r(c!7k)XbR(9wU_D*j(|tN(yNn8mWn ze+4&&L_5w?FD+zxlxN=+^-R@_ZQEFtE+tPxYdtKa2Ljir28SaimU>2TfL$<$7-heezi=wW>_HMx`5_M-an?lhYrB8`;(%{3b^* zI%4f@h3ywt8GCee693#R|6U)D$shw2e|&K>4uA(oyk$)XaD=_^ErM=(N;E4Ff|IHX z&aH0!5$fB@)}RiEu7k~Tv1ev|rqB`$krsI;j&6B5%{Og+;oV@S*!*%%UTE*QD^uWo zfH9lESV59lzt;Sinu0O<*9c+#IYL-|ju3i&*d^eD8O?pxfK)zKlP)YHFx4N`f7SlO z&-?4HyZ?`v=6`joe-@8;BI=y4=*^5|4JO$<2r%yMWwXbR}WtaMP z5ZS~^MT2Tp6RT?RIR`ul8A{#R4fO%}b^yf%WRmDLucBLIm?La>&*(a3e~uRlA8o~r zdQCz!qn5jRp;y-EN{6D@r5s}nf{!@mAE8H$;IQD%h)GQ7&92M^Z*6$D++lO{%gJ5o ze01ajyI|U*WN9#viYMHd^Y+!)Oc_-dcxDji3xuIoW<7%-qO`-R^+$*UhJEVFxwBc} z=73W75k+HM&rDtvsH1uhf7KbR?;@oPsd!C@RvxN6EpOQr6R}ePv@*)sLI}?aD`I+l zVA_`Y0DDH_hAoEH)PKNBGTO?c@uq-}?>u2g!9P_JPeC@H>%ms%b-AP-#J1vFYFrASxsXz1MAma{HmNP;v;tUv@SjqE{YCvvbey@0Na?bxq zSh@c?YqUEEN)OO#cC8{qmW3ae7_Bl`9f>WbLEG8Q2j3^`w&jpfpd+-nrn+kuHy%Yp4=X%#wCWNBxm9nXOMwQf)*p zG}y{TAd@ZKG+Fz{k5H@0qMg{&_Zvplf&%YfXL=P)f9UX8c7;As(KnQYyHr~SlyYH= zydj&t?~7qopcH>0-qJ1+Ek^k@&^NY`zpMA!B z+Yii(7Tydj=vb`cU5U@C0Q;r<9p-(1+b#T-7K;YsJ3A2tt@X5Q^{ny5w9Iu3^=zL1 z`Rlf)e@I|5TBiCI*1EKqH0a;?iNGr%Cc!81b)qP0WM*Wmr%U@)_U9Wr34a{>bH;z2 zk^Te5|1Y`EKLdQ^uIz_#Ncr+&n3qf4BYXz736#uPZbX&=yi_le$&#G`&z;y!K3=#fY-Vi8elqb-{jTAVR$??a*_MihWY(${^p05^Smb7 zb#f1T?M2Au=cH70uky}kJ9<#>9_ ze?s65+2RGK-U7@%`@2K$g?J6bttpaJn?a4zs*2+0j#j0-J0S$b&A1Y7W60quX^l>+RR_jVC<4;)6Qhr(0P$17aVo~@ctk`mr|8!ng@|pRr zq3#@t?PizvEpFhf&mhv5xyH3X&AJdWfB9l$oMgxytNjt!CC-A_454O@tFmesLeVya z_XqOqmlK)mDzz0LgwipdQAWFAqIzEff{F4B#q?+TGO-0v^*?F zJ2MMk5flo3B1;D4w{P`AC#{+)ts0cvHaQpdv!eN&yMpSsI{Wly>2CCGfJYWRe;c(b zE)T+colodiCX@%cLAA81Y{r7ColZ*A_?Ts<#_@&LO$s98?@}7!?>~z2Y#rios*|N8 z54BcG&F2Yj`N;eX@Qr2eK%BR^UpRciN{(3K59a9TCjS!PA-_xs_|%q4HJVn4@gM_4 zi6#$jwaJd86NdraJbcWAxxkO-e?X!tme2e+?T+x_Gj&5Mb)t27GX|fj7Gq{&6)K{U za>&{YS2pJEYvA)zEgX0(itJ$L?#CCoYi-kgkEx~MlntB-*RwVdiUQ`j$>%eq6EXA5 z-qzR?HmjL}3BW9BQ^HOF;k~pTOp@26OQjxF5_9gn7{fTO8gn6BORU7s{KxOpo8s>|lmSZMB?#jIS(3k;% zZU?QG?=nbKi`hZu+llowN~wLE?E(=QZxDhEIBW=NtV3W2>=_Vb{=Ucev>=;m=RD^n zyrB2M@Oh|{VmWBi4kpE1e+uACwA&%D$iT_MZUG?Ig?vIkZkRA<;}%5ys)X#KB`I~pi|IZe`XeGR`cwf{tfmRa3{)-;<0~O4s{r-{RVum*w<<9y?4t+xT`U(nZ zvWj8Ql(iChe>8LQM*}Wu8zub`>RXIEw1e|e>Wg9Fp7S-4@oyrWIvsm!%DbwK(OH1u zLuV(Mv#DRW1zdP>!ADva$$9b6%`AY}P?$#ox)O*^HkD!l+o?I~&#}?+CDOlX1)otC z&hFSQNHKtWN3n-jH2r4QN zY8yRHr$Q`W@n{y7>!9<+VA^ZDUwVGL+ttmb9}5IqYp&hq%|@@wbpTw0i-sn^sgNZn z4m90@f0dRJv~3|NuHms;b}rTk1=)#vW zu_!O{3zq1Z=GREUzt6z!ZVS&WcZVcNxY#s$9gjnGF;`H5vxW7S)KU*-HoV5I)O1Bx zs13Mx8sbZ_;UseKw*u1^w5~|3&Wucef6xtGLpb>nhf>R%heVNt`hG`MXlRYi zZDewJC?;VwKAqK))_QAZZpGYUrF;!G!D# zdit^+0zq;Hyu2>Z*@sB$E%{c~a3(&_%viGS+#X3rF!GEjMujAg6(_ftC6OPr$m09) zA-ZTE7;uOBob6MS2m@l{p^cwYh(e?ahEIl5&l;W;uiNwMt~u`#>i(SbXjI^LYZ ziOv^%60ew&)^FGO>xg7bK`jjAJOrvmxy{Lxok+&B^R?r~an}z;f}5}&1Vvz04D{VA zRCq?&H_zG6L3BPJcgO-rr3X>;e{vj}+VclNul!Ud98h-lA)%&nTMKU77hp#ce{&Nn zCIus-KDj)p902!t6i(u;X+LDs5$`RVRZgE6Ne<&fpjwl!HV)l*I;HGkqC)$^E&K>Z zZLkPdIA9HFjLdFLpqWaO;Uv*+uvDh}%}K6j`ZR836C9k39eLp%lEdb5$a{hkFnB?P z5`RvxF}tRbGky23i9gye*t#?0%ke+rc?E7M#j!;xTzw3>)$2*wEm|=#HYdi zPDHd{&-h()A^o31`9E+A{~%GflsDHHR0nkjFSN|kmLrUQ+30A_hH;zRw$J9(Fz$BeyXA{$wW$uR|(_Xr-zf7E)pG$1d- zq?-4W!6MNUFm~2D*FWp!l?y`IHyPctrA$0S2s%dE&_de@Zy> zuy=7x*aHo)uFo%AJS2cJe?PGxsCx{c`C4{8aZAOuk`(Q0|Llk75BIQVTeAOQN5E`f zw(}4Q(i_Qi%W)uXxBj@S|8IYebpQ8F>CY?28<~e07F|sGD-0t_MC_gf8VDf4LoYC7 z`|ko4&Pq?&0wXz`w~IhAO-72TcGV$X@-=8Dx=&~2yRXXH;lC)Bf2>W`!8D~=oX5i` zpTS*zm{}c+_GT_Uz~dEPa(Ol0Or7(3v!JeoZ89OdhWK-m34rDY%_j*0Ve~75h$1b} zJpD|L!ZU~z#Ic(eszpE;i11kuRsjMPu6gA^N zxh$xNp{aThl?x#ie^Eeo^-3AG`7nVh0ty`>ITnr!(Snw-O)&7_y#?RoodelrKz3<^ zjLa!u-|3GWNWdUg2FDMbE1c2LnA}}X?@jLempk$t@(ZX4O zRynR|Ko)HQE2OheyR>J3J{9Q3(H$(}@wsJz5^d$9hK&OSe;pF*dxN(=M5p`)j0XX& z*Wn+vpc%4D@kM=l7OolB?B`Z;-!}I0f%|zd*}hbsH-$k~Vr)JYUaG4rMl;1lyB_M3x)C%#AIrsvl%sKSV<~AV$b+DOA>I~V3fdKe zg!USXIL+>~e>^N9!vd+C$LcYFqE7-IUvB0MnSX1Q?|jcchAs;BQAXhQRmxK^Vg0)~ z2>$Hl?7Bq7B`i1Tv@j*!fcM#{BvTe8OE5jm&ym9itStu(`y-CfE;V_T%sGAYN=D`_ zx|*+e7kPF`foF3Y{^6ET8OpafE9uq3d}YHg(@hV4e}{Ly|EWX#O=joUGk9!l?5v+B zyuy6{ZN&eFZsQ+d9%HAem{0F;xQ<)#F0@>sfRE}0%IPuG6TEF&wYIc|zB}I5A{M_B z)KHHMWJ;(S&|HDiGLZ6R3t*3dNz=^!Z6Y6LI!?ejpRXcXqZCeMB3Ur*_uM zu7M{bk=9zN>hK?wHvxu>#S!GRd6KY-#JTC9KzEu_rOy;?Bc= zuu_ji%3I1d|1d;1eLyI2Re47b`W@Vz$^n<6f1D)5a6SOi87moctHP zEVm(SE#-{LvJBH&muj3UPg5+(<<5(qVzkcs-&o*`wL~>e1W+`lv|206Td{Lbo{d31 zk{xFq%_WopPlRjMo_@$EZw?H^qZ#hZf2G!@FGU4%;8Wgt56O|oN9|O{4br5V?!Sgr zCKWb(@ap#Z(d>lHwJ>7+8ZL2K)sUhR*lwUO=0=; z;rYT#UhH2x73X5@GBc#e^lKGnN|%XPqWX2P^_3%8GR=-0okKEAsfa#+C1*Cw0a~k` ziM21mmSe+o>9mxbBi{ucWb(j@e-8C2ycsnIE*ypq3rt8bJ>j4!V_C6i%4#9UCoQsl zLLzirj+2(d^{$r12RKyytdBSf+>9U-|0BH#H*;W{$) zMG_EM-h%VfR93-JGjRF{qA|`NT~z2dzVY_g{TLvT;HB&=ge6p->v9)_a5l@@G7 z$dOMN9ytTWN0s&|&Yy#^icDx1ZlPpE%er$goj8I-pNdzAm&ND2=%DzP2Npt#v&>Pw z*>iQ@(FNY2qO!Q}^R7?We~NTyL)t(t30EqNe}wc+vEo?H8f>FG17yYL#bO+jsVqP0 zjxzG%Lainf$XMPBggE4_dm#|yccCQMf@J|n0AK%5FitiA&k8Ys#59szQu4;ui4usL z;prCN$Zg_C>!P7@hh~(S$j@4fpIk`E(83{?`h5$Sm_^yAE`Fp)e`HJ0aJ;l@f1`5P zi6Wl$a^cmPuiK{S4d&gu@~S}i_66^@73;5{Ph2R=+bqdD-)K{@3mGjEaR}|Z zKsXhc&F9m^k9b-Ge+T5M2$Whoxq<@|=#|#4Vds=nWYR9{gIu-Q?piHBaVibPk{|~A z#wcJGnb<+`aUzg$xMqSu-)G!GC?@=*z`5K{V+IfGJN)G-1hu-of-AsOf72sEBIfFnssxY~4CL0% z)2&rl^6z!t z>s!`@L2FLF8qr@)Y$=P8R-iE(%(_WKOM5rx4vM*)qo(qfJjDa(BD+67s@B{F`!9{#aH|Z=cCD-C)k^Ql!)OBR<6kVN03Xf@T&MSnV2VZ7IDJW0wfb-Z$I8WEjO{jiN?6)x zbWUHDD`ZOtgk8*-AD6 z|je}4@Bg;)AB&}NhpR{)|fDgc3Gi@0Q_aQo%-CU?$C1eBEMxw||&x6B(hE3yh3^y5pY}P*Rc}@{|ij zEKR(F3OF@b$M_yPi~VG6?Os{!lc$y0wQvy^dqdrfC*WPqzDi}cx+Vo}dKvRBK3iHo z-7DxJ2%L%3FtsMp_@i!2Lze@Y+|S62Su4YyY0yG<*ymqbMe1&+Laao3@k$1wKarP&6v?%A-KhXB5fNl40)%yr8Y3MdZ6H#5E*fmdR1D)1np0f!Or8!P zgM|jkA@&$u)cF~{mQnvWUP#a$zfH4YAlI8@UW}11m&*@2O2oFXuctO&(^JAd>l>wFcfLUj>ip)~=!H{%ZNiZg+E9UZtE z4qYUQh_>~}hC@cv6atn#paJ+Q4^-zqiurXm#$0Am**dATJS9-jE993qt#5%^N&0%i zSIt@6WT>_d<11ry3_Wfb&sPGvH5os&xf)?>#h{MvFGH1afxz?YDN3@G37sm{pnsln zz(fG`SW*L)aG=cmCD0!3SlBDKY90uy^yD}+TBBMeb#eX-w2>>G+`JI(RvlOSl>y;v zQWZ^{b~j{deN72TE^38a18b01yA=~@O9r&=4S4}Z-Ni+ z%qbQ@#W={}0#Sn$MTOvYeYEyCtbcPIHs6*8WbrCGxt9*)$iNhES~lZjXl0wS-1E|{ zwF^F7AACU|q>D}NxKuHUb-{<`eN7D39?T_RU>-4Yy+;ZQl6W*Y!fgW~ZC0t(gGv1^0a|urQEHAMy6OEX#$H ze+Z6Dg}AQ^C`<3F>+6r!p~PDb(&xa~Lb;L}0r)iLr(V28oN+!oGJkgj?GkW=iGFoT z6qkaW7y(qfzH6xmzTn2?rVRZ!2SSwWj)(ePVNOQg%N`*=1FfT?26f3RjCUK%V2lh% zWYw{gdQtxt(9-@Mw9ItO3=Dq*?f2oo@JfFM+VmDl_^{8Xrf;f1l6~uG2NtO|5eh&! zu;kiz6lri?R&^fxE`Nu-T5IQA@!FOs5%f1bP!VnynQ9C_@Gti8O7uJ61Wu3!9A``| zoV@$XkU8?8v#>&GBR{~(<8do=|=+@issI^-@VcZ zo7@)azY)OVYjDfeTeOOl`~p3GB14C#x zf7C=Z&s`$!0M=hR0~vd>E*|W6Zn5Q^PU@o$(tZ)qOvBlAoNv^`l9ZhtJElEv)CL$^ zI@l$}um@fEM1K&b6fUB=sg;;F{+YrtREm=gDKf#-IgOJu z-c|jw1=TQJy%dV*UKy^C(4MM410H8{f{!R7AgzaDd*&jsQW5txO&~ayY-V*l(E+#v zc8r?V*kE9?My5z);xR#?Fe-R{vlba`zio-{Ty{IgS7=lZSo= zTJ&2LyMKEw=Uxqm-hq`7jZVa_H)@k~g>}X=Qz$3`@kBY>5h~~jq8lY|v%F}T0){`| zb%DeR1q1em0*I7Qha`q6Z~?+D7-iRhYJ1Pd zsk_#iMj?16kA87J4@eoCgF4>gVUd1DblWV^+H7 zH-EWV@9CN7txmEXHN;E236>dzLwA*mQ%>!bnNE?;%T^(JwJ1!lR#QqF{Y1ztsE?|g zh9l@ZEA4MDPE1n(BW_b8E|aZC1m`>PHW~3{PG!edw7heH)`?k`ed(ywZ6c)A-gbTB ze7AOk;e#`kDLKS*$AjG2Jl(IHrK1nz*?;_kja@ML0DwgFB0#D&pU49p>?71+FiD2) zgqFy@YT9yTnE`Mm-jbP`k)ctMI@^J(QByCwuXrj-eHDsCXNDsMW365gAo;(=0dAXWv#C1t)m$qk)$UVT@i8>!dX})SD{!%aZKYRB-%fH3=vd39auv4>-Q>}cSGdQ0ExZK1tT$@{tGAqz0rB`E6@Pa0IP7;ZAyhi*FwnQ7a^ zs+ZJZK#?Q%-ATA|w#kkJ~V$tzVWC@)^z`jGojmG6SjL6FYEq|2@p?NeG z_t~%J{e-$YA4QUQYi0{&fQ?84Uuj?)nkK``wC#oi7bb~KHY|l?kEAvBl)pk@PA6Fqf!J<@O zTrBi7?$P*TD=*jk=rHhTCnde-(vI(jzv zf@a!6w0Pg1I0zIp>fe6&hcJZR*K=rzX^6hN9kwi$te&Z!jDMcakG0J2(-c!J8=LPt z(0|?UmFDa2fi$$=q`v6C4u7q8{ointe};iVjd?7MU7N_QdDZjGZNaTGLpjYCI6&Ez zNlIt9L1hdj_b?rELKsIz;r;mc1chK2haXjo^?Ef9fm~f&sj#LS>ODKqy-SOjT0O1jgOQp?Bc5=a$^vZnyWg3-ZKQZGN z6<)r4cogg{K!xu3FWaDGk%jo(wK619ycJLgF^X$#aDVo5ZK1C3&#Wy|Egmt$<}?_4 zDl8aWTZAOmm04$IQyf#%{J4PCF@pIrr+WX=T%uJ8p9#PzJ)O`bWa?CFyzbSYm&nh2 znHD%x3kuJ6*P5xv>_#m0mN0+qz5K{470Y3M$?i+V^cSvyCxVyW%6A11E2|k(r!1b7s!H|GA$$-?N{ldv#TJHQlw|T7Ro*$vuYudh@jBjJAt6v?q+-ngrs^khMz@5C|g+2!vw&F_v1I3uG$47*PEumah4Q zThxBfd4&KYY-?rcX!tW*6+8l`ID?u?PmZG@vABpNv51AW#k(8}8)7w})k8uQOABkD zqXn@mkXXvX(+24LjS^;jm(9pb2_XN@Q-1^xcQ6CpK=r$cxRs%khn+34JkZe!=xOm= z=x+p~pY{IA0d@BF9!PW@Ur6HJ0uCJZrB)AM|Mh7B83 z<@?I}Vj|M2$XJxSN%o@qy-5UrGNYQm3O6^btnB9ySl6(@4yF{jL7x)-R!QXN_J5br zA%xDci8gpbqv?n(F1CGTRvDea%&$I(4(!meZN{ZpfxnnUl6mw}JJC5rblkrxFI>B- zc3W=%Gs8`+FYjE<{NqAg8eOxt5Cnn=R%dQgV6-)a{XLX6@U{?Y}|4* zY<_o(%;7c>M(IAqV4=h%9_c|Xl7DD3J$d6hdYuXUOI?$;?j$|x5<#k?Si*5yCFlb6 z*?}+Is-4fXqt%R}D621gV!YShXPb(s2TFdac^YGS0qf1kv7v-7_(_!fT}P;-N393` zh1MzBuJxth$}^&reG!4C%2JjP=`@KuS>`ycfl6mdqOF96MQSM0+zDje6@L%KZR?QG zw$kE{YggUNwN(pz%KHOo-r#=0NV>|&*=PuF7>ne-a@%v*rG8*U5L18m;Yt^xU~$SM zTB{ZuzN{Wz66^jTL5MasPlAW}`8vwYV2iXy%5xxHoPpoA@(Nl7E0F$IoC21qf+& zbw@|ay_ewQrQG)vo00#xQQT{os+Wj|PC)C7CFC5dBUS!HBop1x@t*e|Q^Q|l(CCttj~L{kDlVL24Y92E zcl3!?-ZI7>y;?baeuYXzJkwc%5b`eml$Rlu@-=^U?r6w_a9K8SU^x(T zT~|b&o^U-f8-L-nX*m&5x19R=JRiB9h04Bicw9GgY_FKZg0@;+qPaddCpr+!c1+!~ zZF5R{&}HR1ckSB}!Z)V+R=(X~S$y=C%nT9D<$4%sMw(Ss4L1sRPr%l3N0!Dp#(l*P z5}xZm@fMWZ=@7i}-K-5{+k?>|f0zj40|Y{Ifn-GDpMRO8Q`#|eFBm0`yto4$ucC%h zf9*KXpuvUnr|&2{!efxIWMQakXA1k2 z=EQ@cy<7NN;S+SN*Sr>&X4Wnn8)E{i$)#?=#=(y!b)dL1Zc11lUm8CVm#JyGhpSd&j=Kr{q-zh`||$i#0dX?SJ4)!&YsfF?#nw&#|jFb>b64ZXJ;Y z-AsoBZgIwzB$B!P5ksnXtsO8i*Hh#g1e#k&+rRp6K&GOcEm!AZTyFbr-MJb4} znuqR$Be#NS&Cc+xG90%+lxkCp+1$Kplj}2%EYWr1C4Lrz5K`raUe=b+7)*uk#jsuh z5*$#WpFP-nQ|NiC3$WPNorvmmo*m3>KYsywd5-wy)Yj2*^4dqe&~Bn@*sW1UO;e@O znm9y#GOq~Hf||%=G$Cjq>Ww&c^V9`AJnJc@>_T(=y(D-9jODq0O}u3-L@`8oN3EnU z?d;^0xjVc3caRkX@c%Q4{*p!GSE2MU?im+Y?O9w#D#GN>mDfwGO*GU$@WD3#ZGT_W zF;XBuMR;_7IF4YxmLyFoC`M)1VzUrr`muBn@#ZW8X59@vVJA!2E1foY{r-leOZRY% zNVCDEEKeVT@_xGaLSaGi@&aF?(^FB1o|OF%=kQl}6n`+2aA&gv@>_q&pQ zM5S%SVApfygCN!Sp7%%^(u{GQQ-25>RBEg8@CJ@XLkX}`MIC+VR(m}-8|88+T<`3d zS8S#G1YP|pAt`B=IL^*|4&V%?Yh`yX8Y0(Ev=k5{QzblXx$mAvNj5z(`d( zhw1m;Fslipt@M&0WiJsTE_Zr~hQz;%eEJ>;@2+|Lo(vg$mRNQH`8qMgg@0DZDaOW& zBH_cncomE+*x>lPWHEx`=MdV|f(_>;v+L0Ih z_JritLt(CESg8%eh>6#+*nefurAM>x48$BsnsD~so-rSBONGaiyQpDSemuRjKsVvO zE@*7F7wV_%HmB*e~LyRrT(oUFnC07!BPkTMvkXb*qF*3V} z6NTX*RoSpT^DKNKz5}y%cB|r*} z4gyeN5P;Hr2T%xv_P@%crKb5yXhk()X-#1T22tUkE}DG(H;_bkV0d%md)l z<~}dRXxqQV;W%7L5RJR~F!h8=TJGR;*HMW5ix1nSTB0{Lp?`KxTb$x$haA0w;Vy(N z)-d-ktOT%j4PQEVzbDAQklwbvmCoa*^Y3L{`^rgYosf%8wICt{ z6|+eL_w$`qX@B`usVoSrV_E1;z$lFkITQ*c8U%f687gez^HcIa4$lRCfn~!<-D)Ix zN#k40)gDVDLt^SdRNGw-XSOgk0V{DrJGVi~X)qA*200gbt1rc`Lp=f7bC@5a({2GS z89Zp34R27W=&Sue*&hnJ>Fee9DT zIDr|~w}cmYO-Sg*6q~z|hy-&3O*%%o%&hFgGXKMupA10qU-ISrDT?Z|1-Krh5=^ew z&q5dnV}Ev4<=QKkT*yhX_dTAb=8tfgeaR}kjgDtc0@i6Qg5#TGp-n8Zm_Ihxd}^(tP|UnaQ zwz_5CWz*l}h?@?(sfY*Z-M8@{RlRIKCw1J)wBmMH6H40R;!> zynpFr+;Em7QfJbtqT(4;3ps-Vh<&=<3FE}adhJZERt0Y;TjL;S;E&}@B-*%*)>C)b zj8UiuQ;sSR4(9!zN^QwDZUZZ}Zv5-(`^3Libmh!8Z5xHh_8iFup;m501y5za-3h|Z zv24L3H(<3N+`V8q(V6w|Imj-&>nH0b-+#wQe9fPrNEzB@>O_vVU07w@Rp}E9$@j!P z6whO|=j0eFg}90=u&0&>%&237gM3-DxtB2BWl~=-#gMLxcWAxV+;BvKvW!HyD zwB^V2hF*6=v8Z3+(jO&Ik)L=5i2x@oDypF(EUm@-8=fJ+D#=Peoc?u6|AG7+5ye%1 zEEuqZe%!2_ten3A=nwKg(#GE*=8LlO4nvu=S4?T98P576v#GbkD{H0)L`0ITZ^a50 zGZu*I)jnf*Td8h~?XIs$hLuJ-vP z?>}@iZr6V~_Xa6&Ogy9%&%Bg>^Hj{bE${6BWP7v#8d&h6j8x|;Dg5RZX9>34YdAzQ z4L>OPS*&2}qP{tyWT%~vNSb_*0X$jod77dY6`D34@$T#Ob-XjJaxv6-C4U7a%@7I{ zqqJ3fRgk2OR>a5vYPA%`)Y9U0fmC6Vhl90*D z-*+J=-jC#CoT|c7*d+Q$)wXLu_JOcu&YUdhd9b z@+e@X%KIan?;pkacXXx#Pxg0Z&D*lVyP0c+jy8wSxmq&UM*Sw%pT6+Enm9pv;gYb{ ztip)nJ9;*xg>%ykbAGK-Dw_`V`SNRBlv06$QN&>w`BjieSJ>4g1Ah&zmV>8>(q}P5@ewRomrkOMV_Hd}hEvNf@Y^1yuHlLfJ5Ur;@LHZp>rJv)LddV*G@UId z&M(zg@S@lo1j~rprW1G4IKX!TzawTK!~m#A^a6Zf9?`*o`Zp{%IFtjx4j}iF20(-g znL9h%^Dr?z*pC|;8-Kep0-cylEv$itCN>tfOu~-F<`%AYPE5u>XQ50$grlK_=R;j) zMq@{30MT!E0}n;}aW^|-C;Okb`$hO23#(gQ-mR2y&@3Y z>HFGEAh;!nFa>Q!Fi@Zq4-@83A12d(J`w~3h(ad}1b+f141eYV<_u;B<_Km1W&&mi z+K53L5cF3R^w$woW&vgj+KfSE#-RNPm@TMG1w`$EdHz<{8blL=?j;KPX@HKXLC0pG z65DUr82(mI4fNL-bk+`Zg&nBI-nTN3ziCYzRQusNXHboYGvCYUzg;B_CIQ+jgRy~e zfC0dmK|glTk$*TC4H)CMawRZT&>r~hKIWi1ID^@P@qjUbes14>jNe)^26F`+0l}OA zfZyH`I41d@bOLLjnT3IG8Ij(5j2x#~Ah$tD&bEK5r(TUC}mInD=2IsgCw|Nj60AphTs$t%5q zi4i;ffSKaWI&TzJ%6UmO1IK`O(1%V%TxKG6&p74s(pug?2uE5}&3JBQu-SB7QOr|& z)-r%jXn)f0D>&6t`o2A>1aHA&u;CsWClro_P#l4*eVju zT)^OZjNE7*>1RKyc;j1{qXr;_>>_k9x%YNU1}bVx^c0RuZu$MkSz~Y;Qfb4=A)ZXos$U zkqsr*Zb(+KRYV?*;-9RQpWh@s)-^v`vd4@+yoS|~?_IQ@P64w& z*nb(OBQ!UdBB;K^-rE@5UZ*?c83gXQAGV=SP*orDo^o-cD`SfgLNbT8)TT^(cvsxb z?>SWli!SYI@cz5!rc9~C1fOTRsiv#H-p%?9jpW2VMt`cD!xYuc#jvm$Hx(0Bc%~tW znNELNs8Pq(Xvo?B_NhN!Zd%^WvzRTE^M6rfS#>rE+Ne<82QA44G_G5Kv?S&4V>=vJ zVq^HH>c}qRKPpQqzl@=(vOj~D!J@&7I2t-X^mSLmU&1bmSvXmk5gRf(G5$1?f<$`) z(p|ov|E9XAu>8=LIGMQt+|2CXtOMA7CI3g-{JX(Fzn}*UZYo5V!3O>OZMRc4`+r*p zb>D#NatWoSE^le~jdG8td~^5S_&GCa5bgq2!cbenZS9cs;^#~z6Xm)ElKdtww#+l$ z58??nx7S3mK`=g7$GM5Nd#OJs_fZ~_q+n)@ElDGFKn?*6lTROasIS+$xN@Aiq;+$B z*>q~`8nR9p*#D#o3EKF*zoiA>c7JR?{s56`F(<|8beUq#8goIIi)}mVW^@w@-H<`p zx1!fgVL(~!S}zeB4@%4YeSgnY16uC$1{Au6Da}FeY^>1%in~w+az+gVclm5^)MC04 zaGQ&{Sl>Y zoL0ON3A<0aPIeff?Pl?YIbEUp>a^CdN(Mf=5{=-vZqh^7PGz#qq|O_LB|xu>6TGXYN7UgOrpg#P9hYi>v(ve zXg;F%B@DPat4}pzS zMq81+KhvftVf5_309pG2ZD%vFc<(|o zYxG=*(o;$+&gYijF?(H)O4N?En$;PpHN#yPS109XeBDxEj50tizd19|IC!EH)q^WC zAEa%9G*I6Bkc7|Z@*m~ApXyw6nl!+vs7?7r|q36NA zP;l*x^|>vi=#|{NCvvJ7>@M1}gO7aye5({vUy!ScI;b9IcoIao2f|A@6p|7cY4(|r*EL5$(MeZ)8OiJvK!5J*6$ zzlDSR#VUgJyGg&e#?hy0c;%KbJqS&{tvYHcSafMN5O3N%}fn|+}Jj6 zsNr^_)_?Tdz_c+>c(YV4xbr6pDWp#6F>@FUU!ZSroJbpDpM$mX@mJ(oUr%{Z$W|T> zn#_d@&@>{$jkA4bJu@0z9>Uq$$5xbkTD3wrg`kb0HN(@`gKa{%%34z&;iiDlF`I0K zmS%@qaF<>NHHfimV9v4k$gAP3BWcf+IVk$Q1AkkX0@n7csDv1N4dE(MPCd?Jg4t09 zL?#R6l6KSLNFLg@UfkEq=!fk*1Wm)*uPyKDUP}UJUr9rG zLkJ~+pF4v*pb}){y&t8T5?`j7zikLT^Hsiw>dLlq@9VVkg;miHB?Fus^hSvPDlYJN za(|?p5gIKHr4E%Yse}bZb&)>z%fJs2W7$6`lHy}7SARyGw+Qjfd#x${T z{FZdfgVBWH_Y8ZY3j9C5BLxfK;Y)&c-@YYi&-!pI4En; z=o0jz{9@vQzsac1Ku4gf-S^dYYYQi5fPX};Sgy!Fs7b#*07!sk`a$bEg4)+NerR2v zRo~c9pG6<&s{hdDH!=553{TkhytMcVlfw^iQCwh|YVY{22$d;!!p>K5i}#|wg(lc1+nHiV zQdy-5m**Ob4cPahqDobsVqS+H%G09!CF23(hy998bMMnaM*_RoL~QP=S4*K1JYI*pC&{iQvwxTA1Vu9PvJC;P9_$09b&nN7vQ|p+oKnWoeG#20b74PM z?jiwEBOK#N$)=e~c?!{zguqN;_Xn+a%>J8F89B)ocQ~JCoV)`*q%Oqn)v`bXgV{DV zZZ)6O>$`R^RX;&|_Y*~ML2m@}uTbQ64!tJ_ut3sAD8hYHZcHYX`cXni-nm!B%c2EAJI`Q!qHO< z#K0?Rwg8GRl-`=o_{IS0?U}b$EP7AuKM`YujvyYkSAe?&fAr0f?`SaK%{=))u%c%^ zQ;?OmE@UvqL2@@z*MEpL=Um`7u~_{aqQcI~ik^bpF%P&;p|!rj^5uB3T>9!H-h%8C z)a)0Xr#HZfwD!RpM)*MrT6U;Qg9Hp0e&KsEBAhL2M%@;4 zJV@=O8fr5`8E!wloiHTO^r17}R_nc|!gK<+V!R0|UR;L6Ao?<^QSAXt&qSQBBRrP&I&IH*_b?XLM zOd6w0J9^r3sP+ifV#MVrGp9J`W0@+PU#{M~W#*NcKu@pi#XZy2zk+S_MkJaFBCP%I z=~R#xuDphUmZ&eWRd*msk~{7`e)uz9*5E%#o@|?Qs(IR86<_(BD(w#Zb+rmuqx>2k zi8G#W=YPJQ1uexZohgF3F^~R}G@7N*umz}R$Vbm6OhRPSUr|62_DhtdEd@Q zzj9#y>;+v!Ki>2~^8CZ``IpKjDZy6EhAx}aZMavvC-q;Tvx^BMRh6fb0tTIv&YR|n zDWIJ_w0wmG0%a*t0Jh75!o8AU?2~8X7it0l{C{)OmKn7NPxv=>>_+=YB?ktF!I=|h zu~$jk;RtaBv})F@5Y#+ zYN>P!pZ=3O%2uqoGKORC32WF|uI^)!K=t61~#Q+xwc;jv`5^ zjrP1;7c;V&6JIk+{60LDqod^mte0Jw@$?9b<&>^9!cna)_lgxWBR3co`T|$yE`N?` zDC%aGBPN=ON^cn_{%s&&FBqHPv`XjR9t~{g^%<+D?3DT?bd0P;^;s=7hYos=vXi{k z<0CfMPgva3^VD8eXE`T~U5Z$=Pfi9uZ0_7zl{04KFa+8{O{jn;G4O}p_}(lYh!7N8 z9W)WYzi7)XNx3cAh#;RCjApZ5A%A0Xg3P@ims$==Ay8j(>OfX_HVRoqaw?ak+2P^Dy(}EQ% zZ1IhGcCJ^Ln1xcD^jq<7kAL|t;d5pJ)?2jaDCi4I)E&rK&ifu8w_08%Rn)+~)zA4f z*cbV--O_GZ`pF>kw0}!W-%LJ|iRO0x+1oN^j4@)%-5XMH>fz8vf5Ngslp?-k%v#B; zn=yZqo`Dfbd*QqfK{$`-ZH{%_G9%H^COGgD57%Kh=ZiPuUvS0gSbyP3go=vj3xLC_ zs_6oKE+U=sGSsw)XhhMe-i9F8hkN1jCN~fml+};q4dvO~OwX~4;eW7im8-Fgrw}kH?2^zwI&?jBDh}yJmEK?z(-1dbK-6o9+d$3o z>^OoF+&oAspLMezDxn624MkvkL==YzGASP6UYTF>RM>WTAh&&|-+0JoaP5-grFqs~ zn{JxD7~&fw_W5N5-IiSCjHg=0sevFSWMfAu5 z=K;;hE!{00K=-jwk9%oe+#rO*1^3;)V|h8;g+Q9iF0Hw}{S7L;P4ST|eC1N}auYc5FtY=`*Vzlp_0SAgZ8M~_T~FWh#z zeyqHS28(@#bVN6*hT+4vd{KuZVrHc0wv?~F`)1YxYm(=c*q+S0>@`m+?{$~ymje`E z7OmhvA%Dv!DU{|8c`+V81Gj8IY=jN)jpD-N+JM(g=ievUEI32J{2aB*7Mn?n4~Bsi zV;(eSpM(8q2*rG|-%4euM(Y`foq{ob=Lwv-?t}j4bQ&vIRESQ z1*VCqMUJ#`{t5=R8H|kIq;)@Q zYj@q8+2|^Qrz?ZUhDoEhW>(WGRUPK#LZZ2v?5ggEs+Wc$uqN-P?Ow=nAsSa0z2b<< zcY;SeBWZJfDZlLqDgCKepTNkt_x5wbF6;i8O`R>ke4%fOvf4$@s}7d7joSTjRlq5{|>^c>XV!`SM#WF(7PwWJ_$b|QKkWWFbI7mQBJVOqkmnUydbtJ{3yR`mtg8v@y(Rv2>Rm>8z1Vu z+) zllwb%rwJarm5Y+X_wKww2o9w8w-Szg)VWh+wU~}N5IL#mkC3oL`G`a6-4z!K`#nVv z!?9<_+->Y#(SSHTQBSyPl^fD*hU>dndV+%H$z7JJ&X*Mzqn`3R6R;~%7o@S(g*lcV zV{2**P76p!$aa#oJS{#WcL-@#SbsfJnk`6Qw!Mo1_n;!fSV+wBf|J+!A}a;Z!rp+l z*@#;jYuQ-zwj~MdGUt}Bd;ZkaXiz3zultG$>a_=kbNXO=CGi5K0sfALa&f`-T7h86 zz2W?kmb^6!ndp8+>HfY9Djc7#!`pU`tG8k11dnfZECyjlGJMq1Y5TcxaerRP(u$rK z>uNn+VOk|vE1MdDAIa{R4uCuA@1;bnc#f%&`=F0nfzZ_q1UHI5LJi^(RlXtqN=kr!q@Rjxmk9U=As3fC3+s;; z7xe|(4)vggY~$xlk1%amkJJcF$~2cXhl);0f)D_Vaq^HFM&O4i_{2@V@?t;trIw6f zo=5U9Axa<9Zocy~=&0QJ!pB8p$+VvESp9z2?&%~$|AL&ULma|1)PEf81|jxp8x2J1 z75=hzQ&6d}R4cAS%on3|hMJv4@8M77S|6B?= zw3A_xf<@>NSrt{-mdHl$6*z9ZGL~lw8AE5!U{r|SW_eB>nwJ14%u~0#dVF=*51%jm zxoj1(Hync(e*!moI)BIH8LG{9cu@r?|FuO+^OXaIN0g>81xe^*hn*S|q$m=zU-0Ko zi~nf(0D9ZLPw#KpaeOkd6|<}9T4STp@9A^rB(=K_0vKLFZ#zqAp9mv@)7F?zcJ3FK{4VPwUlr$xnxh{%QuMcKMOz&t*zFQw`V2f4j_ z@5TJo&I*>|4!zY$<7nOl6fD~)(Bt`=?N$=!AQ%}=rrnF~F?7x8($IzoRsi=yk)dPa z^%wVZPCNDqu797e`Nh)(yFWp)mR3E$&<0A#=)P*c=5Zt#I;RLHOdBN0qya|+?r6@Q zXr{JE4Fx<%G#w8XeITAI_+izj36GK{(zE)4IjTs4m@ZG%+THeCi(3Y7D zK=NJiz!f%jHnawHdsRkzMqx%K04pmy7ds1pn}hS0`G4M@l^$I2fVR#*J@bB*dYA#+ zEG*x{2!1pF`-S{p`!Ihe5|zB~DWWN)KUl|pSFKcFr_7rJuhsuniVOZNelE6OLVZ}1 zkl<$mbD~E}vliV$JAB_-EWp5w2j&C}LjLMrG_#j1_e5Q(4*%lT-)ddyRjRE+)I;2>k{XWG36 zA5%nqLuFERyj6+SRsIonql{0l(EGIW1|#s60e_S?xi5$UN+gM(b_%!?VRF*PJI1#a zl`?VeQo{)Ofae9+!jqX* zc5gYHx&`Qt0+^h>`k^(VX)G8-&lG2MM04DmCwN9CSvE^4x!uXInuzEdZP3?^IU9>n zEAPMfrk<<5^Ji0{etL+imu^!Cn8tk+B9N9l}5>%N9=jqFFH{FXk@#3;i?uUTj82M{R`_n7_4Vme& zmt$C`L9w)4_|px7@C$Sksp6TZ@JNbi?2GIK6MHbseE|ZNlb?BUS@z@kQN|cgV}HAi z8Ocnm&D!nWbfR$^yv%2#NODnGD9Nfs3X4#2u*BrUAqcw6paHg@3TDh6o@j-UIQYvC zEOEUMY`Izj$Pb5(1E1hvkETJqrgIcAugGmv(3->UuzDUaa+}evhaokDg3;7Tqf@sT zej&h7)nIf>XtZGO{sdo2d#<&RtAE*SPhCJyb8!MvNG_moOwqUmP6Q792CVF@zmps+N*8ilV&2ybPWRf{nV``r<;#9UFU294 z99WI-o5xZ3C!I>!6irKy7C21rIg3VH)J*96sp@4DeS!Dm49iUlt$u~VB=N#-#oR>O z*{eAtrgqS~FI{~*tT1zT>VJE064jXKP^c(4-Q|=mt4{`>>Y^W6N@3i;g?;ln202zo zNurj&1N^yS%`-Jg0X8pp8;vAJr)^Ve_aOrGj@&pV#zw~2WAwnwz#<~ zFtjxxRslKz4IPcmiKT5pB8;=k10Fhk^P*<_-Fy0{M>ixI=YQoc53u^MviC5T{|)CK zJY|?!*|^!i;XL!V$XnmZ|6`x~@5Hz=Rj^gY;`7)mgBgYtflGQ?HHD$3V8i66igEl= zYoaGE5i!bZ-JD~Q;qo4Y4XA&gMcrj06E~)%CXowyXvEkXVb9G8)Q7l~52MMMLtX{- z`)s+r+QaqA!und9#ifK?tmTp5|BAD!c%1pVo)RvLPwPPW9o=H8?hXqf#GJkKt}Q}e z24~F05r=^+C4FG_i2Dg5vT>m@VEHQ@6)Nn^b{n?Q^Xg}uKJEJ_#L9mnT0sX%%@!C( zMp-%O+<|!w&WuqL?;d+G9rnS`@q55$B;glPJ31wZW|WM|hXgm3Ime+3_0BI;2%A{f z;kx5(6Rt0ipl4Q(tj{$Ss}y`7^O06O4%X~6f=fFGp+-%I~Q z`Xf5<5MK7O6|9L4~4F>NLf=vPEVCh3Gs3#G8p9VewJwa!N@+u?`NPUq6z+b*vn;$}K?;yXk{$lkOu@5F&A;yrp*z$J$+-QFrn*aa+|Nj60AphS_ zAy+l4h9`5UC^G@`jeOt|0<=___1WO%K$djfAw*^_Nl_JAsB|~0Q+pV%a}<_1 zr5t8L(4Cpjki4S&)AGU`DnFUtESN)|a`qJvNGScO%`7UL^ zUYLB&;g%hxnr?iM{mAf|6wU~b?_`P4*>XSnz)Ae$ta(%yG0UPsO z8VOIWK7a3uZ<)ejI{1q3X8hdC4|OaOWSD$rQp(AZe$moM~RSr5(ajuLyx zStQ<(=C3t+q_C_9U_x-{Oezvvl(kYoH`{!JZ_gW-66hf8mLeA+jxU^ z^+8sCc3)KjhWEWfWs+8auQjc#CA4_-F-akFe3&&bGpooTg-6BjY_$B5?a99O*KmH{ zMmt-`HIYAwuJ@0E*@ITC`wMW$DE)slG=N9LR}~jkl>cFc@Y5ziRFRQhPECyQr|S9` zjZhV6?D8Pf5R2N`*tppKs=A5_e~;V64Pa*hZ2$l(_ct@GU&#OI=Kl^MMliTlUaQnL zzk3$gqpMQIBMS7F?LAIy{lt+rRcsPns&}{wkAJb4#xGlSuDeT8FI+y<zo-y+&PI~)BoMqi1ZKZ<(3ombHedYx~8T?BHnhKa-pWksXWzCTrE_}Je&G4He`L116y(Xc@r>Qyw2gZM$@slC$Rmho4Lf#k5$=H1E#pFhNB5J{?8zDX8Aif}4 z+;pqqg=dz$H+GoQM7J_eb`%0Jc`B$7RF5hr$*Zj(mAV-CFh7g2QQ^8=|5^G~_>eL; zAoO!@p@2)|G^oabzd5nlAoD@`3E zbMJ=Rg2>?93Zr&9xG;aVLrd_M7c?4tcVL{uWY$LtFW)#zpjs#FvrX=1BzzHTk7stA zl!iEmSU)A&@t#dpFT3B3{F*L#&#ndW5^5k)JIsM5p{=ma6R|DhOp^=@mIO;shI82_1Z(}RCJqyOiQ_y~XEh>!4_ zBmVF9&)*#Jzn}isVY5JEI~NNVNLpa~lSlyn;}7t6JXr1P*jNaeyiu|M$CV(1A{18Q z{mca2s~+Xa=ev%{&K8Z85Q$m4`fSC%~u1H1{iNE5%o(d4DGTa!FZ7r!Gox=bqwC*Z`_iCc1|$WXe> zRl669cO@HRdEZ?Q({Xd%aZ>4%Xau26GtOR+lp$(jpj&@)#d6OJ^-5mI@@wzv0okq9 zz&dgi7vetr%^mXd902oYYZc(vsDO6TW&Ed*%?WrBu)p)*-!j?nOlrxcO&PNgrFE?6 zsTPETz50l~xcSe)GiS5V*nW4EhibchKzOScm@Tj=aJx($7_CaMfd#r8p}N9PVcqTXUC z$o3-ibkqu}^{_jryBUEmda5X~cx~hH>^PWIr3!y}@YgbN3UfB6qh5D&J1c<{#rGbEH)=O4My_ZKEml4B+X5Pu(raMW!rJb})3 z#A<&)WAlgLaAp?3hq+wgU&o+_j_+dguloPbn?a)C{HXXd6|Vx&+0D+;>gVDQ7c+o` z<-rZ@o3}X&_ctc}PX2FyzQ5z))oY&u$L6<({pew5R^STDwnDJYHdMNP7upQ9TD{8p z<%KN8hGB1PkweD-5NVgw7Mgk3+`5(~9`Ap_pH=WN%W!#*L5;~$ZxZYC!sZXkJAFE- zQtZ{3)GA4hxH>5}pCAi;Ml}pa)mmZe7=#aSTwKcE8e4XD!D*w-_QFtu!kZT5u2iRf zw}RVp+PPN6CCxhM8j`~;K3150j2f+c>Al9_cUGalgPHT1VYGQLLBvgtqCcL??$dwa z;B_ov+B1Pk1BDG}>OE->G}&gUPfTAO$GJb;5zVkUp4ABrGlO^UE}$@A=@K<6jq2f) zSS-M@Qh!iN`C6hjpcbkmUiMY`-&&M@QMDh3Sy`h9tRqa>@Og2dI)Qi z)>LN*>lE8BO^mn=kd1>aS!*yYTOcCNzU&|gP@07)D!otP9C>-SQhS!pARZjKE&@00 z48e2}F_XU4N;M%F(~KyA?>3BHh~HGm+>=S|49RxSibGknh3MQMkoMknlPZ6;!1VKS z)v>VlhvynWPWEe|xMR%1%}nhKXj-mz3Y!W6NP^msq`9c=rcY611|WOtXlWTzv6i^i zTBXKasj@N{V2b;9xyQ;st?2UIF7_r1KXMJNA8SSt|R3OMf!(y zf)5_xcc3lg$0Ct)8bxHUpr?P@Kco@-b%|76^_OU2!ltGcjyB)=^)D7Eznmpjas=8~ zfcn1pcV+vVWiK}~8w-Gi?YqUx12cXn|5MHUi!^|U06jd6EXa{O5B3HgzC_Ot82Cd* zCz+Hwu>9+4R|QjpsN1LL`kS#hKv|jafigZZopIKXmF7;43uW_kPL;K;et-fcf{Q$?unKk{TQR3(}Z^Z!u zAo46sbV7Ntc^r;K>tlbouO@${zKGQsEJOWaVA9uTc2y=L$V^lL9*2C#Dc(hI(k|A{94 zZe6bjb+JtUPWbcZvz*A)^NM9Y_l(w=LqE@4R@(U(V(lshyDxu9vmEx8=EJed1tHpI zP`OXY?R2RFyV5jgq-fCIEVn1fFNPqfVrLMN=PSk?=7&5UIHmC$D}1_7Dc}FH)GK55 zifchk6Jz}{x^Gr$1rd{qfUqwpgrcGOrMmDSB&jSzLQK>~#4FR@t$VsHzKXfA+U{lZ z%!o@*FpY&%^%Q^W>t>VBMp288-B@;v1}QUMw7fJ5lBpRU%UaC{Re)1q-Pq!O)m? z(lA-0PIAyZF9()(jh;fq+Oa7rDKYja9n*j}!*^_Bk867uoRCjSLmIAEjuR|99I4Z3 z+0Jy!Q4)V3@MQflWPgSTnDx74U&EfrMZZAY$Ip76vAET?8dzv>-`2r+(NCFh%(hAG z1rzxek;c(Bikt>EOsK}YD=^^R2H1&B^MX64iY$SxFj{TD+jp#J>A2f|S$a8tUgHt@ z#_Z3uv#d_DVg%Az$}{ouVxS5N)r@$B@!#|7pX7gFuho=)Vx+*cR<|DBV?BKD-{zLCjZ^6`|4a0=z>&dhEdS?2r?X#KOQ-g>( z7QB%y(87ycIG#T$e!p1parNm`gTO-b$qt*)On$(byCBnK(amiBgdP+UR^^@W;d+hZ zl~{iutH>t9(+iDgBf(~o>P!S3Uq&FMj;bP9jk|9iVmd=iBSCC_PxYw56Y;l zXODfsGi?uvOD~Zr$-by8)2_q^jllQ)BdOPVW;@D{D7H2ztW;cZ0gdKG%!22Avw+Ltc+Jj1F5PbXkxs9NG#s zVwKuQ>(6%EaR5{B`RTh5eu22VY?^ z3WhzB<<^t^(+AW|#DH;TCMz(jI-JtyOfQ0i2^o$JvH%K$!67U3!-Uy)9OZwkZtP++ z?5Vi?9Gjj9$J&9Qw}W|@nlvR4dKpV2!#4g*$h|Zs&w-$t^!GN zj~+!6=Kp`xy#-iS+tvn3cS?7M+@fE2blUl3#}~;3 z187CoI!q4%}GH5n*!QGvBmW#u+6q7W{WAX}|!sGS> zJviWo>Uwc64+J6^7IuG_KdKQ;0lUo@G#GHa8{9A7mjV?p%1#CLSv1UJEi+UTf9@wW zV0fs4x1~l0!)Gx&cDe;!W1$EHvx@dC*wM0HHA#KRavUi8Bwf6%n=QYIb=4y{Fc}*y zcbP6%qqQ9KGDh~DjoJl;vDk2bHYBI#7>%X{7N=3I=WVRDUuAzARQv*}*kLYPzepx` zzjL|4tN4{OQ-435BMCv~eRUwkKwNazIJg&Ag{AEazXFxBGXw>Baiz!KcV7R4>HfIc zX=tZ!s%!BVP_cdu8~g)QkIny5FTVrT8P0QKNa`H4QwZW=0^q6*dl3j>37TdJGSumj z?)nm%=Y0Z<2`YbAPl_}U)}smVgRqKT*U~m>!-sX12eP;_(l+Dju^m-vNb(H5v(?@e zY)kksuzX1@ZqTx*oDIG0!fiH4io1ruMx=hWm4!p>>R(9wkJ zMv?suehlPEhcB=U>(u0C>C!4?ZwPstMBKoSThmR^$~=E%2=#kdoH!vt2H9@=#ST6k zI^o%)9VO@24!F6_3BIQGesMQK{yfjfm!({|Nf93xz-XAU%^j~LE917oIcfD4`}%U6 zt&EhaLC!5fw-uOjz+9$#G7LzPxS zl#E)r95GQ6iZ*LbI(dj*HkN9$Yi>ppaO;Z_dej9$y>HwTH7I{n^}-x26r@G(M&_uN>2;O$1Wc~% z#u?WKI^nJbBlcn@W${Bx9HvP42tFOQjENyjFJ>?JEIX%goGiOrc@_Z?kR*ECsx*5E zqDl!d5wV)jX3WTg&(hwi)lY+Ds>>MGCY0fPDm{|@(4aGX6%jwdNIDiq7LqdW~{Gc14L?pemU)535ma@K#P zGm4@HLhbXGS!|_oImXZuWRxbhuyAKN5L3d#NG6ZdvbgqunXU;Qw1H_w>{F$AB-vd0 zi0_z)C}WaM@G=O3giv6eg?+QZM_qw8gOiFY!SwyaRpf88)D%s!ZrZ5mdz5e;`E@V? zL6kVcy}|#jgwmJVKr63-X8_dfA-R7ImXa@zkYoLSg?lO1!T@K}B`&NiV-hH91l_^g zfJNO8Yr`j*H2Btb&58|vD9gbrC z=v(~+-AbwI2|b^+xG6p9Li^ZyZk9-A;gB_oTXWP4oEP}sjhk>|0C|B|2M(I z2mpKo&(l9|`;X!Nf9{Qcn>N1R33_uDeFIWyt&t@@m*KjeTMw$MjM*(#H#5Y;LKiA@ zo@1K69EN?1Lin;q!kO`@@@?Z@#1iq9-6Dl<^1+#Uz@8OWV<^pHfX086!?n3~Z)gFM ze5k0>NrNNqw)duDnbd`noeBun1%|EKCwxjshu#eFHjA2*{EA}(HrKe0Jy9+1HA@9) zz4CViu=>rM8P_+iKqx~h$QVg6d;#aL>>Snh_t2DDSHvfi4M176Z3 z`6LvW+WQm)gze>$P%5Q(43@+L75t9-mrd81en#guy%oA@8y`or`=RFJ%@lC(`FtmXP zEEm7;xu*x?Y08jllqc0ejGDc{C98uLS0?!E(7^|k_dcM! z^nXOT|G$M9?62kF9x#I}W-Y91VBkupZ*BP6!sDd0doZ$ZU;(aQG7fLz>&$WS+GgzX9TVU=Y^Cx zIJtUGuLdCADZx@UU-yB$IYxK%;gECRx@4(ykSUJzL)on3D+cwy%54inGxJ`C?XJT@ z1t0p@{R)39flJhb5&js+h)&F1E051WmC}63NONPTw?yr@gqvyPEiQnVA3>j*-IW(=x(=*0!W;7FT881>vRxaPd@ zWy|a?{rd&=gHeYF`xQ3ZKgl zS?YhgY*{6nD;Cv(7#Tcsq|aSrS*EqYKKb~Uq=C@ZBAv{}^n=;+@7s}O7iaBdmY6(A zRq2a($(Xm#{$bYOn8pkB2IOPbyL(6zj0NHtc3QW{F~vjE4Q-|& zHy(GGjUjJsj;(dard}sZrV*Mi^wOp0l{EkB-DZmf>@Bz_t-$OcqD(cnI#kJelhEKz1 zu(mz_4sQ0p#xDN3M3qn%k&zYocAWVgIiPSb5^jc8HinNF`Cc)Gk%5VU=`q6LJ0O3* zHrNsx;)UUO&Ib+pjkchxV!J8f{zoY$DN<(_W%T6KzA zYeud<>r+$;#b#oFsZ?pq3rp$V<6`bj6fpI2?BXWu)oqd!%O;G8&xw&bmhlJ_QA`^H zCl{!weTK)>)&n{~=Fw@hz;yymt4JaKhJLN*4e!8koU{T58_C`T@Z~DB@Uwqs1|4hg z>cPYPzX4iLp}VW+#6DFS85hcFrj-GY^Auz~R{ z+E7Z7-qezwvd893OU)lPk1vbW9=7X$yN1TLT9szm9d-d5@zXL90faLIXvN^?)SHgR=deMP zcjJv8H|7hv#Y~^9E_^w|3g36PnE{#J55}aV0V9=m-V_hR?&C_EL>#(u90%rCk92Jh zAC($?joz8KSt=dIixE3nskh~~J`~O@12X7{2Xoq{(5F?%g%obcfk2xBMq^> z3|w^U@D=)=SU$%0(8@D_?=ir);#+K`?<;_BfiI$|m60{S=^s-m-!~TE8^s_75cxLu zcz>FE4}>iwAxbC!U|?cmV`K%;%0Dx-)2CB5b$H-&U0N|+dj~^PH$p`Q01FGDC@UkO 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≀ul%X&b)T}}f_vC#QyI%~F-V#t}T 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ξ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 From 265562367ee9ed9cb6e0a8b8bb111982a0c440dd Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 14 Dec 2021 20:18:45 +0200 Subject: [PATCH 260/831] refactor launcher script --- rebar.config | 22 +++++++++-- rel/files/riak-cs | 63 ++++++++++++++++++------------ rel/pkg/deb/debian/control | 4 +- rel/pkg/deb/debian/install | 2 +- rel/pkg/deb/debian/riak-cs.service | 4 +- rel/pkg/fbsdng/+MANIFEST | 1 + rel/pkg/fbsdng/Makefile | 7 +++- rel/pkg/fbsdng/rc.d | 4 +- rel/pkg/fbsdng/vars.config | 22 ++++++----- rel/pkg/rpm/riak-cs.service | 4 +- rel/pkg/rpm/specfile | 2 +- rel/vars.config | 20 +++++----- 12 files changed, 93 insertions(+), 62 deletions(-) diff --git a/rebar.config b/rebar.config index af6c81aac..66a876db4 100644 --- a/rebar.config +++ b/rebar.config @@ -44,10 +44,10 @@ } , {dev_mode, false} , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} - , {template, "rel/files/riak-cs", "usr/sbin/riak-cs"} - , {template, "rel/files/riak-cs-admin", "usr/sbin/riak-cs-admin"} - , {template, "rel/files/riak-cs-debug", "usr/sbin/riak-cs-debug"} - , {template, "rel/files/riak-cs-supercluster", "usr/sbin/riak-cs-supercluster"} + , {template, "rel/files/riak-cs", "usr/bin/riak-cs"} + , {template, "rel/files/riak-cs-admin", "usr/bin/riak-cs-admin"} + , {template, "rel/files/riak-cs-debug", "usr/bin/riak-cs-debug"} + , {template, "rel/files/riak-cs-supercluster", "usr/bin/riak-cs-supercluster"} , {copy, "rel/files/cert.pem", "etc/cert.pem"} , {copy, "rel/files/key.pem", "etc/key.pem"} , {copy, "rel/files/app_epath.sh", "lib/app_epath.sh"} @@ -98,6 +98,20 @@ } , {fbsdng, [ {relx, [ {overlay_vars, "rel/pkg/fbsdng/vars.config"} , {mode, prod} + , {extended_start_script_hooks, + [ {post_start, + [ wait_for_vm_start + %% relx won't write this pid + %% (we do it in lancher script + %% instead, because of + %% that). Let's leave it here + %% in hope one day relx will + , {pid, "/var/run/riak-cs/riak-cs.pid"} + , {wait_for_process, stanchion_server_sup} + ] + } + ] + } ] } ] diff --git a/rel/files/riak-cs b/rel/files/riak-cs index cf54fc27a..2d252fd1a 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -22,7 +22,7 @@ ## ## ------------------------------------------------------------------- -RCS_USER=riak_cs +XUSER=riak_cs RUNNER_GEN_DIR="${RUNNER_GEN_DIR:-{{ platform_gen_dir }}}" RELEASE_ROOT_DIR="${RELEASE_ROOT_DIR:-{{ runner_base_dir }}}" PID_DIR={{pid_dir}} @@ -33,6 +33,9 @@ RELX_CONFIG_PATH=${RUNNER_GEN_DIR}/sys.config VMARGS_PATH=${RUNNER_GEN_DIR}/vm.args PIPE_DIR={{pipe_dir}}/ # trailing slash makes it a path for relx +mkdir -p $PIPE_DIR +chown $XUSER:$XUSER $PIPE_DIR + # On first running the sys.config and vm.args will not be a link # as cfconfig has not yet been run as a pre_start hook. If there's no # link use the default for now @@ -49,8 +52,8 @@ EOF fi -function write_pid_file { - c=5 +function write_pid_file { # relx doesn't seem to write the pid file, does it? + local c=5 while [[ $c -ne 0 ]]; do if [ "`${COMMAND} ping`" = "pong" ]; then ${COMMAND} pid >$PID_DIR/riak-cs.pid @@ -61,22 +64,28 @@ function write_pid_file { done } -function maybe_delete_pid_file { - [ "`${COMMAND} ping`" != "pong" ] && rm -f $PID_DIR/riak-cs.pid +function delete_pid_file { + rm -f $PID_DIR/riak-cs.pid } # When running as a service, running as riak-cs not as root, and systemd has created PID folder if [[ $EUID -ne 0 ]]; then case "$1" in - start|console|foreground) - RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches - if [ "$1" = "start" ]; then - write_pid_file - fi + start) + c=2 # sometimes it doesn't start on first try. + while [[ $c -ne 0 ]]; do + RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{runner_patch_dir}} \ + && write_pid_file + status=$? + test -r $PID_DIR/riak-cs.pid && exit 0 + sleep 1 + c=$(($c - 1)) + done + exit 1 ;; - *) - RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} - maybe_delete_pid_file + stop) + RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} \ + && delete_pid_file ;; esac else @@ -84,24 +93,28 @@ else # systemd having created the PID dir, and need to sudo to the riak_cs user if [ ! -d $PID_DIR ]; then mkdir $PID_DIR - chown $RCS_USER:$RCS_USER $PID_DIR + chown $XUSER:$XUSER $PID_DIR fi case "$1" in - start|console|foreground) - su - $RCS_USER -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{platform_lib_dir}}/patches" - if [ "$1" = "start" ]; then - write_pid_file - fi + start) + c=2 + while [[ $c -ne 0 ]]; do + su - $XUSER -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{runner_patch_dir}}" \ + && write_pid_file + status=$? + test -r $PID_DIR/riak-cs.pid && exit 0 + sleep 1 + c=$(($c - 1)) + done + exit $status ;; - debug) - # Drop the "debug" from the args as we're going to directly call riak-cs-debug now - shift - # Debug may fail if run via relx script due to use of relative start location, and also need for root access - NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${DEBUG_COMMAND} ${*} + stop) + su - $XUSER -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{runner_patch_dir}}" \ + && delete_pid_file ;; *) ESCAPED_ARGS=`echo "$@" | sed -e 's/\([\\\(\\\){}"\x27]\)/\\\\\1/g'` - su - $RCS_USER -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${ESCAPED_ARGS}" + su - $XUSER -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${ESCAPED_ARGS}" ;; esac fi diff --git a/rel/pkg/deb/debian/control b/rel/pkg/deb/debian/control index 8413b32b2..2c9705129 100644 --- a/rel/pkg/deb/debian/control +++ b/rel/pkg/deb/debian/control @@ -2,12 +2,12 @@ Source: riak-cs Section: net Priority: optional Maintainer: Andrei Zavada -Build-Depends: debhelper (>= 7) +Build-Depends: debhelper (>= 7), libssl-dev Standards-Version: 4.6.0.1 Homepage: https://tiot.jp Package: riak-cs Architecture: any -Depends: ${misc:Depends}, ${shlibs:Depends}, adduser, logrotate, erlang-base +Depends: ${misc:Depends}, ${shlibs:Depends}, adduser, logrotate, erlang-base, openssl Homepage: https://tiot.jp Description: Riak CS Database diff --git a/rel/pkg/deb/debian/install b/rel/pkg/deb/debian/install index 545e58565..36b760bb1 100644 --- a/rel/pkg/deb/debian/install +++ b/rel/pkg/deb/debian/install @@ -2,6 +2,6 @@ rel/riak-cs/lib usr/lib64/riak-cs rel/riak-cs/share usr/lib64/riak-cs rel/riak-cs/erts* usr/lib64/riak-cs rel/riak-cs/releases usr/lib64/riak-cs -rel/riak-cs/usr/sbin/* usr/sbin +rel/riak-cs/usr/bin/* usr/bin rel/riak-cs/bin usr/lib64/riak-cs rel/riak-cs/etc/* etc/riak-cs diff --git a/rel/pkg/deb/debian/riak-cs.service b/rel/pkg/deb/debian/riak-cs.service index 96872266f..37b135c8e 100644 --- a/rel/pkg/deb/debian/riak-cs.service +++ b/rel/pkg/deb/debian/riak-cs.service @@ -3,8 +3,8 @@ Description=Riak CS Database [Service] User=riak_cs -ExecStart=/usr/sbin/riak-cs start -ExecStop=/usr/sbin/riak-cs stop +ExecStart=/usr/bin/riak-cs start +ExecStop=/usr/bin/riak-cs stop Type=exec PIDFile=/run/riak-cs/riak-cs.pid EnvironmentFile=-/etc/default/riak-cs diff --git a/rel/pkg/fbsdng/+MANIFEST b/rel/pkg/fbsdng/+MANIFEST index 1733539bc..559a3d44c 100644 --- a/rel/pkg/fbsdng/+MANIFEST +++ b/rel/pkg/fbsdng/+MANIFEST @@ -13,4 +13,5 @@ categories: ["databases"] desc: "Riak CS is a Riak-backed S3 drop-in replacement" scripts: { pre-install: "if ! pw groupshow riak_cs 2>/dev/null; then pw groupadd riak_cs; fi \n if ! pw usershow riak_cs 2>/dev/null; then pw useradd riak_cs -g riak_cs -h - -d /usr/local/var/lib/riak-cs -s /bin/sh -c \"Riak CS user\"; fi \n if [ ! -d /var/log/riak-cs ]; then mkdir /var/log/riak-cs && chown riak_cs:riak_cs /var/log/riak-cs; fi" + post-install: "chown riak_cs:riak_cs /usr/local/etc/riak-cs" } diff --git a/rel/pkg/fbsdng/Makefile b/rel/pkg/fbsdng/Makefile index 7774db990..86ba4f1c7 100644 --- a/rel/pkg/fbsdng/Makefile +++ b/rel/pkg/fbsdng/Makefile @@ -9,6 +9,7 @@ PMAN_DIR = $(BUILD_STAGE_DIR)/usr/local/man PBIN_DIR = $(BUILD_STAGE_DIR)/usr/local/lib/riak-cs/bin PETC_DIR = $(BUILD_STAGE_DIR)/usr/local/etc/riak-cs PLIB_DIR = $(BUILD_STAGE_DIR)/usr/local/lib/riak-cs +PUSRBIN_DIR = $(BUILD_STAGE_DIR)/usr/local/bin # /var based dirs PDATA_DIR = $(BUILD_STAGE_DIR)/usr/local/var/lib/riak-cs PLOG_DIR = $(BUILD_STAGE_DIR)/var/log/riak-cs @@ -61,7 +62,7 @@ packing_list_files: $(BUILD_STAGE_DIR) @cd $(BUILD_STAGE_DIR) && \ echo "directories: {" >> +MANIFEST && \ echo " /usr/local/lib/riak-cs: \"y\"," >> +MANIFEST && \ - echo " /usr/local/var/lib/riak-cs: {uname: \"riak_cs\", gname: \"stanvhion\", perm: \"0700\" }," >> +MANIFEST && \ + echo " /usr/local/var/lib/riak-cs: {uname: \"riak_cs\", gname: \"riak_cs\", perm: \"0700\" }," >> +MANIFEST && \ echo " /usr/local/etc/riak-cs: \"y\"" >> +MANIFEST && \ echo " }" >> +MANIFEST @@ -72,7 +73,8 @@ packing_list_files: $(BUILD_STAGE_DIR) $(BUILD_STAGE_DIR): buildrel @echo "Copying rel directory to staging directory" mkdir -p $@ - mkdir -p $(PBIN_DIR) + mkdir -p $(PBIN_DIR) $(PUSRBIN_DIR) + cp -R rel/riak-cs/usr/bin/* $(PUSRBIN_DIR) cp -R rel/riak-cs/bin/* $(PBIN_DIR) mkdir -p $(PETC_DIR) cp -R rel/riak-cs/etc/* $(PETC_DIR) @@ -82,6 +84,7 @@ $(BUILD_STAGE_DIR): buildrel cp -R rel/riak-cs/erts-* $(PLIB_DIR) cp -R rel/riak-cs/releases $(PLIB_DIR) mkdir -p $(PDATA_DIR) +# cp -R rel/riak-cs/data/* $(PDATA_DIR) || true # as of 3.0.0, there is nothing in data mkdir -p ${BUILD_STAGE_DIR}/usr/local/etc/rc.d # Build the release we need to package diff --git a/rel/pkg/fbsdng/rc.d b/rel/pkg/fbsdng/rc.d index d5897e075..c1d63b430 100644 --- a/rel/pkg/fbsdng/rc.d +++ b/rel/pkg/fbsdng/rc.d @@ -11,8 +11,8 @@ name=riak_cs command=/usr/local/lib/riak-cs/%ERTS_PATH%/bin/beam.smp rcvar=riak_cs_enable -start_cmd="/usr/local/lib/riak-cs/bin/riak-cs start" -stop_cmd="/usr/local/lib/riak-cs/bin/riak-cs stop" +start_cmd="/usr/local/bin/riak-cs start" +stop_cmd="/usr/local/bin/riak-cs stop" pidfile="/var/run/riak-cs/riak-cs.pid" load_rc_config $name diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config index fd733c448..31048a212 100644 --- a/rel/pkg/fbsdng/vars.config +++ b/rel/pkg/fbsdng/vars.config @@ -30,16 +30,18 @@ {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{data_dir, "{{target_dir}}/data"}. -{runner_script_dir, "\$(cd \\`dirname $0\\` && /bin/pwd)"}. -{runner_base_dir, "{{runner_script_dir}}/.."}. -{runner_etc_dir, "$RUNNER_BASE_DIR/etc"}. -{runner_log_dir, "$RUNNER_BASE_DIR/log"}. -{runner_lib_dir, "$RUNNER_BASE_DIR/lib"}. -{runner_patch_dir, "$RUNNER_BASE_DIR/lib/patches"}. -{pipe_dir, "/tmp/$RUNNER_BASE_DIR/"}. -{runner_user, ""}. -{runner_wait_process, "riak_cs_put_fsm_sup"}. +{runner_script_dir, "{{platform_bin_dir}}"}. +{runner_base_dir, "{{platform_base_dir}}"}. +{runner_etc_dir, "{{platform_etc_dir}}"}. +{runner_log_dir, "{{platform_log_dir}}"}. +{runner_lib_dir, "{{platform_lib_dir}}"}. +{runner_patch_dir, "{{platform_lib_dir}}/patches"}. +%% we don't want to stomp on /tmp/erl_pipes, which riak 3.0.9 will use +%% not honoring PIPE_DIR +{pipe_dir, "/tmp/riak-cs"}. +{pid_dir, "/var/run/riak-cs"}. + +%% {runner_wait_process, "riak_cs_put_fsm_sup"}. %% a fossil bone {console_log_default, file}. diff --git a/rel/pkg/rpm/riak-cs.service b/rel/pkg/rpm/riak-cs.service index 96872266f..37b135c8e 100644 --- a/rel/pkg/rpm/riak-cs.service +++ b/rel/pkg/rpm/riak-cs.service @@ -3,8 +3,8 @@ Description=Riak CS Database [Service] User=riak_cs -ExecStart=/usr/sbin/riak-cs start -ExecStop=/usr/sbin/riak-cs stop +ExecStart=/usr/bin/riak-cs start +ExecStop=/usr/bin/riak-cs stop Type=exec PIDFile=/run/riak-cs/riak-cs.pid EnvironmentFile=-/etc/default/riak-cs diff --git a/rel/pkg/rpm/specfile b/rel/pkg/rpm/specfile index 4f700c138..bd6d9e1eb 100644 --- a/rel/pkg/rpm/specfile +++ b/rel/pkg/rpm/specfile @@ -99,7 +99,7 @@ fi cp %{relpath}/etc/riak-cs.conf %{buildroot_etc} cp %{relpath}/etc/advanced.config %{buildroot_etc} for f in riak-cs riak-cs-admin riak-cs-supercluster riak-cs-debug; do - cp %{relpath}/usr/sbin/$f %{buildroot}%{_sbindir} + cp %{relpath}/usr/bin/$f %{buildroot}%{_sbindir} done mkdir -p %{buildroot}%{_localstatedir}/lib/riak-cs diff --git a/rel/vars.config b/rel/vars.config index efc05319a..880b8c7d3 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -8,7 +8,7 @@ {platform_etc_dir, "./etc"}. {platform_lib_dir, "./lib"}. {platform_log_dir, "./log"}. -{platform_gen_dir, "./releases/{{release_version}}"}. +{platform_gen_dir, "./releases/{{rel_vsn}}"}. %% %% riak-cs.conf @@ -31,16 +31,14 @@ {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{data_dir, "{{target_dir}}/data"}. -{runner_script_dir, "\$(cd \\`dirname $0\\` && /bin/pwd)"}. -{runner_base_dir, "{{runner_script_dir}}/.."}. -{runner_etc_dir, "$RUNNER_BASE_DIR/etc"}. -{runner_log_dir, "$RUNNER_BASE_DIR/log"}. -{runner_lib_dir, "$RUNNER_BASE_DIR/lib"}. -{runner_patch_dir, "$RUNNER_BASE_DIR/lib/patches"}. -{pipe_dir, "/tmp/$RUNNER_BASE_DIR/"}. -{runner_user, ""}. -{runner_wait_process, "riak_cs_put_fsm_sup"}. +{runner_script_dir, "{{platform_bin_dir}}"}. +{runner_base_dir, "{{platform_base_dir}}"}. +{runner_etc_dir, "{{platform_etc_dir}}"}. +{runner_log_dir, "{{platform_log_dir}}"}. +{runner_lib_dir, "{{platform_lib_dir}}"}. +{runner_patch_dir, "{{platform_lib_dir}}/patches"}. +{pipe_dir, "{{platform_base_dir}}/tmp/riak-cs"}. +{pid_dir, "{{platform_base_dir}}/var/run/riak-cs"}. {console_log_default, file}. From 8fd2251eee4adbf1f8b3a9741a851d2d0eef7d2e Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 11 Dec 2021 18:44:32 +0200 Subject: [PATCH 261/831] bump rebar3_cuttlefish --- rebar.config | 2 +- rel/files/riak-cs | 132 ++++++++++++++++++------------------- rel/files/riak-cs-admin | 56 ++++++++++------ rel/pkg/fbsdng/+MANIFEST | 3 +- rel/pkg/fbsdng/Makefile | 1 + rel/pkg/fbsdng/vars.config | 4 +- 6 files changed, 105 insertions(+), 93 deletions(-) diff --git a/rebar.config b/rebar.config index 66a876db4..4626f789d 100644 --- a/rebar.config +++ b/rebar.config @@ -15,7 +15,7 @@ ] }. -{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/TI-Tokyo/rebar3_cuttlefish", {tag, "2.1.1"}}} +{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/TI-Tokyo/rebar3_cuttlefish", {tag, "2.1.2"}}} , rebar3_proper ] }. diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 2d252fd1a..0b559c684 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -22,25 +22,22 @@ ## ## ------------------------------------------------------------------- -XUSER=riak_cs -RUNNER_GEN_DIR="${RUNNER_GEN_DIR:-{{ platform_gen_dir }}}" -RELEASE_ROOT_DIR="${RELEASE_ROOT_DIR:-{{ runner_base_dir }}}" +RUNNER_GEN_DIR="${RUNNER_GEN_DIR:-{{platform_gen_dir}}}" +RELX_RIAK={{platform_bin_dir}}/riak-cs PID_DIR={{pid_dir}} -COMMAND={{platform_bin_dir}}/riak-cs -DEBUG_COMMAND=/usr/sbin/riak-cs-debug -RUNNER_LOG_DIR={{platform_log_dir}} -RELX_CONFIG_PATH=${RUNNER_GEN_DIR}/sys.config -VMARGS_PATH=${RUNNER_GEN_DIR}/vm.args -PIPE_DIR={{pipe_dir}}/ # trailing slash makes it a path for relx +PIPE_DIR={{pipe_dir}}/ # terminating / (relx treats it as a prefix) + +mkdir -p $PID_DIR $PIPE_DIR +chown riak_cs:riak_cs $PID_DIR $PIPE_DIR -mkdir -p $PIPE_DIR -chown $XUSER:$XUSER $PIPE_DIR +CONFIG_PATH=${RUNNER_GEN_DIR}/sys.config +VMARGS_PATH=${RUNNER_GEN_DIR}/vm.args # On first running the sys.config and vm.args will not be a link # as cfconfig has not yet been run as a pre_start hook. If there's no # link use the default for now -if [ ! -L $RELX_CONFIG_PATH ]; then - cat >$RELX_CONFIG_PATH <$CONFIG_PATH <$PID_DIR/riak-cs.pid - break - fi - sleep 1 - c=$(($c - 1)) + if [ "`maybe_su ${RELX_RIAK} ping`" = "pong" ]; then + maybe_su ${RELX_RIAK} pid >$PID_DIR/riak-cs.pid + chown root:root $PID_DIR/riak-cs.pid 2&>1 >/dev/null || true # systemd wants it to be owned by root + break + fi + sleep 2 + c=$(($c - 1)) done } @@ -68,55 +66,51 @@ function delete_pid_file { rm -f $PID_DIR/riak-cs.pid } -# When running as a service, running as riak-cs not as root, and systemd has created PID folder -if [[ $EUID -ne 0 ]]; then - case "$1" in - start) - c=2 # sometimes it doesn't start on first try. - while [[ $c -ne 0 ]]; do - RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{runner_patch_dir}} \ - && write_pid_file - status=$? - test -r $PID_DIR/riak-cs.pid && exit 0 - sleep 1 - c=$(($c - 1)) - done - exit 1 - ;; - stop) - RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} \ - && delete_pid_file - ;; - esac +# prevents centos8 su from contacting pam and print the Last logged in message +if [ "`cat /etc/redhat-release 2>&1`" = "CentOS Stream release 8" ]; then + SU="su --session-command" else - # In this case we're running sudo riak_cs - so have root access, but cannot rely - # systemd having created the PID dir, and need to sudo to the riak_cs user - if [ ! -d $PID_DIR ]; then - mkdir $PID_DIR - chown $XUSER:$XUSER $PID_DIR - fi - case "$1" in - start) - c=2 - while [[ $c -ne 0 ]]; do - su - $XUSER -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{runner_patch_dir}}" \ - && write_pid_file - status=$? - test -r $PID_DIR/riak-cs.pid && exit 0 - sleep 1 - c=$(($c - 1)) - done - exit $status - ;; - stop) - su - $XUSER -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${*} -pa {{runner_patch_dir}}" \ - && delete_pid_file - ;; - *) - ESCAPED_ARGS=`echo "$@" | sed -e 's/\([\\\(\\\){}"\x27]\)/\\\\\1/g'` - su - $XUSER -c "NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} RELX_CONFIG_PATH=${RELX_CONFIG_PATH} VMARGS_PATH=${VMARGS_PATH} RUNNER_LOG_DIR=${RUNNER_LOG_DIR} PIPE_DIR=${PIPE_DIR} ${COMMAND} ${ESCAPED_ARGS}" - ;; - esac + SU=su fi +function maybe_su { + if [[ $EUID -ne 0 ]]; then + NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} PIPE_DIR=${PIPE_DIR} $* + else + # freebsd su is fairly limited, so: + f=$RUNNER_GEN_DIR/su_piggy + cat >$f < /dev/null | cut -d = -f 2 | tr -d ' '` +# NODE={{node}} +# HOST=${NODE#*@} +# BOOT_FILE="{{runner_base_dir}}/releases/{{rel_vsn}}/start_clean" +# +# for something like this: +# +# $ERTS_PATH/erl -noshell -name riak_test@$HOST -setcookie $COOKIE \ +# -pa {{runner_patch_dir}} \ +# -boot $BOOT_FILE \ +# -eval "case catch(riak:client_test(\"$NODE\")) of \ +# ok -> init:stop(); \ +# _ -> init:stop(1) \ +# end." +# + +# relx provides a 60 sec value hardcoded for RPC timeout, with no easy +# way to supply an 'infinity' from the script. Much as I hate to # pretend 60 sec is long enough, here's a TODO note to have it fixed # (best would be to patch relx/nodetool upstream). The only call # affected is `riak-cs-admin cluster-info`. RPC_HOP_INF=$RPC_HOP usage() { - echo "Usage: $SCRIPT { version | status | gc | access | storage | stanchion | cluster-info | test | cleanup-orphan-multipart | audit-bucket-ownership}" + echo "Usage: $SCRIPT { version | status | gc | access | storage |" + echo " stanchion | cluster-info | test |" + echo " cleanup-orphan-multipart | audit-bucket-ownership }" } # Check the first argument for instructions case "$1" in version) shift - $RPC_HOP rpc riak_cs_console version + $RPC_HOP riak_cs_console version ;; status) shift - $RPC_HOP rpc riak_cs_console status + $RPC_HOP riak_cs_console status ;; gc) shift case "$1" in batch|status|pause|resume|cancel|set-interval|set-leeway|earliest-keys) - $RPC_HOP rpc riak_cs_gc_console "$@" + $RPC_HOP riak_cs_gc_console "$@" ;; *) echo "Usage: $SCRIPT gc { batch [|--help] | status | pause | resume | cancel |" @@ -70,7 +88,7 @@ case "$1" in shift case "$1" in batch|status|pause|resume|cancel) - $RPC_HOP rpc riak_cs_storage_console "$@" + $RPC_HOP riak_cs_storage_console "$@" ;; *) echo "Usage: $SCRIPT storage $1 { batch | status | pause | resume | cancel }" @@ -82,7 +100,7 @@ case "$1" in shift case "$1" in flush) - $RPC_HOP rpc riak_cs_access_console flush "$@" + $RPC_HOP riak_cs_access_console flush "$@" ;; *) echo "Usage: $SCRIPT access $1 { flush }" @@ -94,7 +112,7 @@ case "$1" in shift case "$1" in switch|show) - $RPC_HOP rpc riak_cs_stanchion_console "$@" + $RPC_HOP riak_cs_stanchion_console "$@" ;; *) echo "Usage: $SCRIPT stanchion $1 { switch HOST PORT | show }" @@ -104,7 +122,7 @@ case "$1" in ;; 'test') shift - $RPC_HOP rpc riak_cs_console test + $RPC_HOP riak_cs_console test ;; cluster[_-]info) if [ $# -lt 2 ]; then @@ -113,16 +131,16 @@ case "$1" in fi shift - $RPC_HOP_INF rpc riak_cs_console cluster_info "$@" + $RPC_HOP_INF riak_cs_console cluster_info "$@" ;; cleanup[_-]orphan[_-]multipart) shift - $RPC_HOP rpc riak_cs_console cleanup_orphan_multipart "$@" + $RPC_HOP riak_cs_console cleanup_orphan_multipart "$@" ;; audit[_-]bucket[_-]ownership) shift - $RPC_HOP rpc riak_cs_console audit_bucket_ownership "$@" + $RPC_HOP riak_cs_console audit_bucket_ownership "$@" ;; *) usage diff --git a/rel/pkg/fbsdng/+MANIFEST b/rel/pkg/fbsdng/+MANIFEST index 559a3d44c..97f92c04e 100644 --- a/rel/pkg/fbsdng/+MANIFEST +++ b/rel/pkg/fbsdng/+MANIFEST @@ -13,5 +13,6 @@ categories: ["databases"] desc: "Riak CS is a Riak-backed S3 drop-in replacement" scripts: { pre-install: "if ! pw groupshow riak_cs 2>/dev/null; then pw groupadd riak_cs; fi \n if ! pw usershow riak_cs 2>/dev/null; then pw useradd riak_cs -g riak_cs -h - -d /usr/local/var/lib/riak-cs -s /bin/sh -c \"Riak CS user\"; fi \n if [ ! -d /var/log/riak-cs ]; then mkdir /var/log/riak-cs && chown riak_cs:riak_cs /var/log/riak-cs; fi" - post-install: "chown riak_cs:riak_cs /usr/local/etc/riak-cs" + post-install: "chown riak_cs:riak_cs /usr/local/etc/riak-cs; (cd /usr/local/lib/riak-cs; ln -s erts-* erts)" + pre-deinstall: "rm -f /usr/local/lib/riak-cs/erts" } diff --git a/rel/pkg/fbsdng/Makefile b/rel/pkg/fbsdng/Makefile index 86ba4f1c7..314682d6b 100644 --- a/rel/pkg/fbsdng/Makefile +++ b/rel/pkg/fbsdng/Makefile @@ -82,6 +82,7 @@ $(BUILD_STAGE_DIR): buildrel cp -R rel/riak-cs/lib $(PLIB_DIR) cp -R rel/riak-cs/share $(PLIB_DIR) cp -R rel/riak-cs/erts-* $(PLIB_DIR) + (cd $(PLIB_DIR) && ln -s erts-* erts) cp -R rel/riak-cs/releases $(PLIB_DIR) mkdir -p $(PDATA_DIR) # cp -R rel/riak-cs/data/* $(PDATA_DIR) || true # as of 3.0.0, there is nothing in data diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config index 31048a212..192af5290 100644 --- a/rel/pkg/fbsdng/vars.config +++ b/rel/pkg/fbsdng/vars.config @@ -36,10 +36,8 @@ {runner_log_dir, "{{platform_log_dir}}"}. {runner_lib_dir, "{{platform_lib_dir}}"}. {runner_patch_dir, "{{platform_lib_dir}}/patches"}. -%% we don't want to stomp on /tmp/erl_pipes, which riak 3.0.9 will use -%% not honoring PIPE_DIR -{pipe_dir, "/tmp/riak-cs"}. {pid_dir, "/var/run/riak-cs"}. +{pipe_dir, "/tmp/riak-cs"}. %% {runner_wait_process, "riak_cs_put_fsm_sup"}. %% a fossil bone From 883926704fb43722672a6a96329cfe9089b07f8f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 16 Mar 2242 12:56:09 +9647446 Subject: [PATCH 262/831] squelch amazon linux su, too --- rel/files/riak-cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 0b559c684..559700041 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -66,8 +66,9 @@ function delete_pid_file { rm -f $PID_DIR/riak-cs.pid } -# prevents centos8 su from contacting pam and print the Last logged in message -if [ "`cat /etc/redhat-release 2>&1`" = "CentOS Stream release 8" ]; then +# centos7-based distros have a su that contacts pam and prints the "Last logged in" message +if [ "`cat /etc/redhat-release 2>&1`" = "CentOS Stream release 8" ] || + [ "`cat /etc/system-release 2>&1`" = "Amazon Linux release 2 (Karoo)" ]; then SU="su --session-command" else SU=su @@ -80,11 +81,11 @@ function maybe_su { # freebsd su is fairly limited, so: f=$RUNNER_GEN_DIR/su_piggy cat >$f < Date: Wed, 15 Dec 2021 23:56:18 +0200 Subject: [PATCH 263/831] fix devrel generation wrt new relx --- rel/gen_dev | 8 +++++++- rel/vars/dev_vars.config.src | 21 +++++++++------------ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/rel/gen_dev b/rel/gen_dev index c661bdbfb..1a74ba599 100755 --- a/rel/gen_dev +++ b/rel/gen_dev @@ -11,6 +11,9 @@ VARFILE=$3 NODE="rcs-$NAME@127.0.0.1" +SCRIPT_DIR="`dirname $0`/.." +BUILD_ROOT="`cd "$SCRIPT_DIR" && pwd -P`" + NUMBER=${NAME##dev} RIAKBASE=$((10000 + 10 * $NUMBER)) CSBASE=$((15000 + 10 * $NUMBER)) @@ -18,8 +21,11 @@ RIAKPBPORT=$(($RIAKBASE + 7)) CSPORT=$(($CSBASE + 8)) ADMINPORT=$(($CSBASE + 9)) +PLATFORM_BASE_DIR="$BUILD_ROOT/dev/$NAME/riak-cs" + echo "Generating $NAME - node='$NODE' riakpbport=$RIAKPBPORT csport=$CSPORT adminport=$ADMINPORT" -sed -e "s/@NODE@/$NODE/" \ +sed -e "s|@PLATFORM_BASE_DIR@|$PLATFORM_BASE_DIR|" \ + -e "s/@NODE@/$NODE/" \ -e "s/@RIAKPBPORT@/$RIAKPBPORT/" \ -e "s/@CSPORT@/$CSPORT/" \ -e "s/@ADMINPORT@/$ADMINPORT/" < $TEMPLATE > $VARFILE diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index 6dc2ad8aa..57ce5bfc5 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -6,11 +6,12 @@ {devrel, true}. %% Platform-specific installation paths -{platform_bin_dir, "./bin"}. -{platform_data_dir, "./data"}. -{platform_etc_dir, "./etc"}. -{platform_lib_dir, "./lib"}. -{platform_log_dir, "./log"}. +{platform_base_dir, "@PLATFORM_BASE_DIR@"}. +{platform_bin_dir, "{{platform_base_dir}}/bin"}. +{platform_data_dir, "{{platform_base_dir}}/data"}. +{platform_etc_dir, "{{platform_base_dir}}/etc"}. +{platform_lib_dir, "{{platform_base_dir}}/lib"}. +{platform_log_dir, "{{platform_base_dir}}/log"}. %% %% etc/app.config @@ -39,14 +40,10 @@ %% %% bin/riak_cs %% -{data_dir, "{{target_dir}}/data"}. -{runner_script_dir, "\`cd \\`dirname $0\\` && /bin/pwd\`"}. +{runner_script_dir, "`dirname $0`"}. {runner_base_dir, "{{runner_script_dir}}/.."}. -{runner_etc_dir, "$RUNNER_BASE_DIR/etc"}. -{runner_log_dir, "$RUNNER_BASE_DIR/log"}. -{runner_lib_dir, "$RUNNER_BASE_DIR/lib"}. -{runner_patch_dir, "$RUNNER_BASE_DIR/lib/basho-patches"}. -{pipe_dir, "/tmp/$RUNNER_BASE_DIR/"}. +{pipe_dir, "/tmp/riak-cs-{{node}}"}. +{pid_dir, "/run/riak-cs-{{node}}"}. {runner_user, ""}. {runner_wait_process, "riak_cs_put_fsm_sup"}. From 381e51608496253f52db6b9bd74e314977816d1d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 16 Dec 2021 03:40:21 +0200 Subject: [PATCH 264/831] uniformly use "riak" as default cookie (helps with riak_cs_test) --- priv/riak_cs.schema | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/riak_cs.schema b/priv/riak_cs.schema index e6a2c1d08..ea4af55b7 100644 --- a/priv/riak_cs.schema +++ b/priv/riak_cs.schema @@ -722,7 +722,7 @@ %% same cluster should use the same cookie or they will not be able to %% communicate. {mapping, "distributed_cookie", "vm_args.-setcookie", [ - {default, "riak_cs"} + {default, "riak"} ]}. %% VM scheduler collapse, part 1 of 2 From 1d8ce10d91c1ba7350b2ec74d00ee08cd93af97e Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 16 Dec 2021 03:45:32 +0200 Subject: [PATCH 265/831] no need for dummy vm.args in launcher --- rel/files/riak-cs | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 559700041..9debda53b 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -30,24 +30,6 @@ PIPE_DIR={{pipe_dir}}/ # terminating / (relx treats it as a prefix) mkdir -p $PID_DIR $PIPE_DIR chown riak_cs:riak_cs $PID_DIR $PIPE_DIR -CONFIG_PATH=${RUNNER_GEN_DIR}/sys.config -VMARGS_PATH=${RUNNER_GEN_DIR}/vm.args - -# On first running the sys.config and vm.args will not be a link -# as cfconfig has not yet been run as a pre_start hook. If there's no -# link use the default for now -if [ ! -L $CONFIG_PATH ]; then - cat >$CONFIG_PATH <$VMARGS_PATH < Date: Thu, 16 Dec 2021 20:51:37 +0200 Subject: [PATCH 266/831] sort out which scripts go where --- rebar.config | 6 +++--- rel/pkg/deb/debian/install | 13 +++++++------ rel/pkg/deb/debian/riak-cs.service | 4 ++-- rel/pkg/deb/vars.config | 14 +++++++------- rel/pkg/fbsdng/Makefile | 7 +++++-- rel/pkg/rpm/riak-cs.service | 4 ++-- rel/pkg/rpm/specfile | 7 ++++--- 7 files changed, 30 insertions(+), 25 deletions(-) diff --git a/rebar.config b/rebar.config index 4626f789d..87a9fd0df 100644 --- a/rebar.config +++ b/rebar.config @@ -45,9 +45,9 @@ , {dev_mode, false} , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} , {template, "rel/files/riak-cs", "usr/bin/riak-cs"} - , {template, "rel/files/riak-cs-admin", "usr/bin/riak-cs-admin"} - , {template, "rel/files/riak-cs-debug", "usr/bin/riak-cs-debug"} - , {template, "rel/files/riak-cs-supercluster", "usr/bin/riak-cs-supercluster"} + , {template, "rel/files/riak-cs-admin", "bin/riak-cs-admin"} + , {template, "rel/files/riak-cs-debug", "bin/riak-cs-debug"} + , {template, "rel/files/riak-cs-supercluster", "bin/riak-cs-supercluster"} , {copy, "rel/files/cert.pem", "etc/cert.pem"} , {copy, "rel/files/key.pem", "etc/key.pem"} , {copy, "rel/files/app_epath.sh", "lib/app_epath.sh"} diff --git a/rel/pkg/deb/debian/install b/rel/pkg/deb/debian/install index 36b760bb1..a18e37ab3 100644 --- a/rel/pkg/deb/debian/install +++ b/rel/pkg/deb/debian/install @@ -1,7 +1,8 @@ -rel/riak-cs/lib usr/lib64/riak-cs -rel/riak-cs/share usr/lib64/riak-cs -rel/riak-cs/erts* usr/lib64/riak-cs -rel/riak-cs/releases usr/lib64/riak-cs -rel/riak-cs/usr/bin/* usr/bin -rel/riak-cs/bin usr/lib64/riak-cs +rel/riak-cs/lib usr/lib/riak-cs +rel/riak-cs/share usr/lib/riak-cs +rel/riak-cs/erts* usr/lib/riak-cs +rel/riak-cs/releases usr/lib/riak-cs +rel/riak-cs/bin/riak-cs-* usr/sbin +rel/riak-cs/usr/bin/riak-cs usr/sbin +rel/riak-cs/bin usr/lib/riak-cs rel/riak-cs/etc/* etc/riak-cs diff --git a/rel/pkg/deb/debian/riak-cs.service b/rel/pkg/deb/debian/riak-cs.service index 37b135c8e..96872266f 100644 --- a/rel/pkg/deb/debian/riak-cs.service +++ b/rel/pkg/deb/debian/riak-cs.service @@ -3,8 +3,8 @@ Description=Riak CS Database [Service] User=riak_cs -ExecStart=/usr/bin/riak-cs start -ExecStop=/usr/bin/riak-cs stop +ExecStart=/usr/sbin/riak-cs start +ExecStop=/usr/sbin/riak-cs stop Type=exec PIDFile=/run/riak-cs/riak-cs.pid EnvironmentFile=-/etc/default/riak-cs diff --git a/rel/pkg/deb/vars.config b/rel/pkg/deb/vars.config index 514bb79a0..466377a97 100644 --- a/rel/pkg/deb/vars.config +++ b/rel/pkg/deb/vars.config @@ -4,11 +4,11 @@ {rel_vsn, "3.0"}. %% Platform-specific installation paths -{platform_bin_dir, "/usr/lib64/riak-cs/bin"}. +{platform_bin_dir, "/usr/lib/riak-cs/bin"}. {platform_data_dir, "/var/lib/riak-cs"}. {platform_etc_dir, "/etc/riak-cs"}. -{platform_base_dir, "/usr/lib64/riak-cs"}. -{platform_lib_dir, "/usr/lib64/riak-cs/lib"}. +{platform_base_dir, "/usr/lib/riak-cs"}. +{platform_lib_dir, "/usr/lib/riak-cs/lib"}. {platform_log_dir, "/var/log/riak-cs"}. {platform_gen_dir, "/var/lib/riak-cs"}. @@ -33,13 +33,13 @@ {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{runner_script_dir, "/usr/lib64/riak-cs/bin"}. -{runner_base_dir, "/usr/lib64/riak-cs"}. +{runner_script_dir, "/usr/lib/riak-cs/bin"}. +{runner_base_dir, "/usr/lib/riak-cs"}. {runner_etc_dir, "/etc/riak-cs"}. {runner_log_dir, "/var/log/riak-cs"}. {runner_user, "riak_cs"}. -{runner_lib_dir, "/usr/lib64/riak-cs/lib"}. -{runner_patch_dir, "/usr/lib64/riak-cs/lib/patches"}. +{runner_lib_dir, "/usr/lib/riak-cs/lib"}. +{runner_patch_dir, "/usr/lib/riak-cs/lib/patches"}. {pipe_dir, "/tmp/riak-cs"}. {pid_dir, "/run/riak-cs"}. {package_replacement_line, ""}. diff --git a/rel/pkg/fbsdng/Makefile b/rel/pkg/fbsdng/Makefile index 314682d6b..1146514ff 100644 --- a/rel/pkg/fbsdng/Makefile +++ b/rel/pkg/fbsdng/Makefile @@ -74,8 +74,11 @@ $(BUILD_STAGE_DIR): buildrel @echo "Copying rel directory to staging directory" mkdir -p $@ mkdir -p $(PBIN_DIR) $(PUSRBIN_DIR) - cp -R rel/riak-cs/usr/bin/* $(PUSRBIN_DIR) - cp -R rel/riak-cs/bin/* $(PBIN_DIR) + for f in riak-cs-admin riak-cs-debug riak-cs-supercluster; do \ + cp -R rel/riak-cs/bin/$$f $(PUSRBIN_DIR); \ + done + cp -R rel/riak-cs/usr/bin/riak-cs $(PUSRBIN_DIR) + cp -R rel/riak-cs/bin $(PLIB_DIR); mkdir -p $(PETC_DIR) cp -R rel/riak-cs/etc/* $(PETC_DIR) mkdir -p $(PLIB_DIR) diff --git a/rel/pkg/rpm/riak-cs.service b/rel/pkg/rpm/riak-cs.service index 37b135c8e..96872266f 100644 --- a/rel/pkg/rpm/riak-cs.service +++ b/rel/pkg/rpm/riak-cs.service @@ -3,8 +3,8 @@ Description=Riak CS Database [Service] User=riak_cs -ExecStart=/usr/bin/riak-cs start -ExecStop=/usr/bin/riak-cs stop +ExecStart=/usr/sbin/riak-cs start +ExecStop=/usr/sbin/riak-cs stop Type=exec PIDFile=/run/riak-cs/riak-cs.pid EnvironmentFile=-/etc/default/riak-cs diff --git a/rel/pkg/rpm/specfile b/rel/pkg/rpm/specfile index bd6d9e1eb..d6de5f885 100644 --- a/rel/pkg/rpm/specfile +++ b/rel/pkg/rpm/specfile @@ -66,7 +66,7 @@ EOF make rel-rpm %install -%define relpath %{_builddir}/%{buildsubdir}/_build/rpm/rel/riak-cs +%define relpath %{_builddir}/%{buildsubdir}/rel/riak-cs %define buildroot_lib %{buildroot}%{_libdir}/riak-cs %define buildroot_etc %{buildroot}%{_sysconfdir}/riak-cs %define buildroot_bin %{buildroot_lib}/bin @@ -98,9 +98,10 @@ fi cp %{relpath}/etc/riak-cs.conf %{buildroot_etc} cp %{relpath}/etc/advanced.config %{buildroot_etc} -for f in riak-cs riak-cs-admin riak-cs-supercluster riak-cs-debug; do - cp %{relpath}/usr/bin/$f %{buildroot}%{_sbindir} +for f in riak-cs-admin riak-cs-supercluster riak-cs-debug; do + cp %{relpath}/bin/$f %{buildroot}/usr/sbin done +cp %{relpath}/usr/bin/riak-cs %{buildroot}/usr/sbin mkdir -p %{buildroot}%{_localstatedir}/lib/riak-cs From 3ea5c143be0b751d076ffa0c4a81427d4551bcc1 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 19 Dec 2021 19:18:41 +0200 Subject: [PATCH 267/831] cleaner su in launcher script --- rel/files/riak-cs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 9debda53b..8c8425824 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -22,7 +22,7 @@ ## ## ------------------------------------------------------------------- -RUNNER_GEN_DIR="${RUNNER_GEN_DIR:-{{platform_gen_dir}}}" +RUNNER_GEN_DIR={{platform_gen_dir}} RELX_RIAK={{platform_bin_dir}}/riak-cs PID_DIR={{pid_dir}} PIPE_DIR={{pipe_dir}}/ # terminating / (relx treats it as a prefix) @@ -36,7 +36,8 @@ function write_pid_file { # relx doesn't seem to write the pid file, does it? while [[ $c -ne 0 ]]; do if [ "`maybe_su ${RELX_RIAK} ping`" = "pong" ]; then maybe_su ${RELX_RIAK} pid >$PID_DIR/riak-cs.pid - chown root:root $PID_DIR/riak-cs.pid 2&>1 >/dev/null || true # systemd wants it to be owned by root + chown root:root $PID_DIR/riak-cs.pid 2&>1 >/dev/null \ + || true # systemd wants it to be owned by root break fi sleep 2 @@ -58,16 +59,9 @@ fi function maybe_su { if [[ $EUID -ne 0 ]]; then - NODETOOL_NODE_PREFIX=${NODETOOL_NODE_PREFIX} PIPE_DIR=${PIPE_DIR} $* + $* else - # freebsd su is fairly limited, so: - f=$RUNNER_GEN_DIR/su_piggy - cat >$f < Date: Mon, 20 Dec 2021 22:20:03 +0200 Subject: [PATCH 268/831] standardize platform_gen_dir --- rel/files/riak-cs-admin | 2 +- rel/pkg/deb/vars.config | 4 ++-- rel/pkg/fbsdng/vars.config | 4 ++-- rel/pkg/rpm/vars.config | 4 ++-- rel/vars.config | 4 ++-- rel/vars/dev_vars.config.src | 3 ++- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index 01afc36cc..0c6ff7dd2 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -34,7 +34,7 @@ RPC_HOP="{{platform_bin_dir}}/riak-cs rpc" # COOKIE=`egrep '^[ \t]*distributed_cookie[ \t]*=[ \t]*' {{platform_etc_dir}}/riak-cs.conf 2> /dev/null | cut -d = -f 2 | tr -d ' '` # NODE={{node}} # HOST=${NODE#*@} -# BOOT_FILE="{{runner_base_dir}}/releases/{{rel_vsn}}/start_clean" +# BOOT_FILE="{{runner_base_dir}}/releases/{{release_version}}/start_clean" # # for something like this: # diff --git a/rel/pkg/deb/vars.config b/rel/pkg/deb/vars.config index 466377a97..b533d8910 100644 --- a/rel/pkg/deb/vars.config +++ b/rel/pkg/deb/vars.config @@ -1,7 +1,7 @@ %% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ft=erlang ts=4 sw=4 et -{rel_vsn, "3.0"}. +{rel_vsn, "{{release_version}}"}. %% Platform-specific installation paths {platform_bin_dir, "/usr/lib/riak-cs/bin"}. @@ -10,7 +10,7 @@ {platform_base_dir, "/usr/lib/riak-cs"}. {platform_lib_dir, "/usr/lib/riak-cs/lib"}. {platform_log_dir, "/var/log/riak-cs"}. -{platform_gen_dir, "/var/lib/riak-cs"}. +{platform_gen_dir, "/var/lib/riak-cs/releases/{{release_version}}"}. %% %% riak-cs.conf diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config index 192af5290..7579a1bd9 100644 --- a/rel/pkg/fbsdng/vars.config +++ b/rel/pkg/fbsdng/vars.config @@ -1,7 +1,7 @@ %% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ft=erlang ts=4 sw=4 et -{rel_vsn, "3.0"}. +{rel_vsn, "{{release_version}}"}. %% Platform-specific installation paths {platform_bin_dir, "/usr/local/lib/riak-cs/bin"}. @@ -10,7 +10,7 @@ {platform_base_dir, "/usr/local/lib/riak-cs"}. {platform_lib_dir, "/usr/local/lib/riak-cs/lib"}. {platform_log_dir, "/var/log/riak-cs"}. -{platform_gen_dir, "/usr/local/var/lib/riak-cs"}. +{platform_gen_dir, "/usr/local/var/lib/riak-cs/releases/{{release_version}}"}. {cs_ip, "127.0.0.1"}. {cs_port, 8080}. diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index 514bb79a0..bd008c445 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -1,7 +1,7 @@ %% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ft=erlang ts=4 sw=4 et -{rel_vsn, "3.0"}. +{rel_vsn, "{{release_version}}"}. %% Platform-specific installation paths {platform_bin_dir, "/usr/lib64/riak-cs/bin"}. @@ -10,7 +10,7 @@ {platform_base_dir, "/usr/lib64/riak-cs"}. {platform_lib_dir, "/usr/lib64/riak-cs/lib"}. {platform_log_dir, "/var/log/riak-cs"}. -{platform_gen_dir, "/var/lib/riak-cs"}. +{platform_gen_dir, "/var/lib/riak-cs/releases/{{release_version}}"}. %% %% riak-cs.conf diff --git a/rel/vars.config b/rel/vars.config index 880b8c7d3..6284f9f8f 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -1,6 +1,6 @@ %% -*- erlang -*- -{rel_vsn, "3.0"}. +{rel_vsn, "{{release_version}}"}. %% Platform-specific installation paths {platform_bin_dir, "./bin"}. @@ -8,7 +8,7 @@ {platform_etc_dir, "./etc"}. {platform_lib_dir, "./lib"}. {platform_log_dir, "./log"}. -{platform_gen_dir, "./releases/{{rel_vsn}}"}. +{platform_gen_dir, "./releases/{{release_version}}"}. %% %% riak-cs.conf diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index 57ce5bfc5..6ac02a068 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -1,7 +1,7 @@ %% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ts=4 sw=4 et -{rel_vsn, "3.0"}. +{rel_vsn, "{{release_version}}"}. {devrel, true}. @@ -12,6 +12,7 @@ {platform_etc_dir, "{{platform_base_dir}}/etc"}. {platform_lib_dir, "{{platform_base_dir}}/lib"}. {platform_log_dir, "{{platform_base_dir}}/log"}. +{platform_gen_dir, "{{platform_base_dir}}/releases/{{release_version}}"}. %% %% etc/app.config From 7011793e81a2f1b604d6867ef861a3d45336b687 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 21 Dec 2021 00:44:03 +0200 Subject: [PATCH 269/831] don't expect riak-cs-debug to find plain vm.args and config.app launcher script no longer generates them --- rel/files/riak-cs-debug | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/rel/files/riak-cs-debug b/rel/files/riak-cs-debug index ecab8b920..59aa062ef 100755 --- a/rel/files/riak-cs-debug +++ b/rel/files/riak-cs-debug @@ -300,10 +300,8 @@ if [ 0 -ne $(( $get_cfgs + $get_logs + $get_riakcmds + $get_extracmds )) ]; then fi #prefer vm.args if it exists -if [ -f "${cs_etc_dir}/vm.args" ]; then - vmargs="${cs_etc_dir}/vm.args" -elif [ -d "${cuttlefish_conf_dir}" ]; then - vmargs=`ls -t ${cuttlefish_conf_dir}/vm.*.args | head -1` +if [ -d "${cuttlefish_conf_dir}" ]; then + vmargs=`ls -t ${cuttlefish_conf_dir}/vm.*.args 2>/dev/null | head -1` fi @@ -496,11 +494,8 @@ if [ 1 -eq $get_logs ]; then # if not already made, make a flat, searchable version of the app.config if [ -z "$riak_epaths" ]; then #prefer app.config if it exists - if [ -f "${cs_etc_dir}/app.config" ]; then - appconfig="${cs_etc_dir}/app.config" - riak_epaths=`make_app_epaths "${appconfig}"` - elif [ -d "${cuttlefish_conf_dir}" ]; then - appconfig=`ls -t ${cuttlefish_conf_dir}/app.*.config | head -1` + if [ -d "${cuttlefish_conf_dir}" ]; then + appconfig=`ls -t ${cuttlefish_conf_dir}/app.*.config 2>/dev/null | head -1` riak_epaths=`make_app_epaths "${appconfig}"` fi fi From fddb9af1b3e1c0528f6e501bb4f874408e4b8a28 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 21 Dec 2021 01:18:14 +0200 Subject: [PATCH 270/831] fixup launcher (export PIPE_DIR etc) --- rel/files/riak-cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 8c8425824..90350eac1 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -24,8 +24,8 @@ RUNNER_GEN_DIR={{platform_gen_dir}} RELX_RIAK={{platform_bin_dir}}/riak-cs -PID_DIR={{pid_dir}} -PIPE_DIR={{pipe_dir}}/ # terminating / (relx treats it as a prefix) +export PID_DIR={{pid_dir}} +export PIPE_DIR={{pipe_dir}}/ # terminating / (relx treats it as a prefix) mkdir -p $PID_DIR $PIPE_DIR chown riak_cs:riak_cs $PID_DIR $PIPE_DIR @@ -61,7 +61,14 @@ function maybe_su { if [[ $EUID -ne 0 ]]; then $* else - $SU riak_cs $* + # freebsd su is fairly limited, so: + f=$RUNNER_GEN_DIR/su_piggy + cat >$f < Date: Tue, 21 Dec 2021 01:00:20 +0000 Subject: [PATCH 271/831] launcher su won't start at first run --- rel/files/riak-cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 90350eac1..580199716 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -62,6 +62,8 @@ function maybe_su { $* else # freebsd su is fairly limited, so: + mkdir -p $RUNNER_GEN_DIR + chown riak_cs:riak_cs $RUNNER_GEN_DIR f=$RUNNER_GEN_DIR/su_piggy cat >$f < Date: Tue, 21 Dec 2021 01:24:11 +0000 Subject: [PATCH 272/831] workaround for su - in launcher --- rel/files/riak-cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 580199716..a4d75dc91 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -61,6 +61,14 @@ function maybe_su { if [[ $EUID -ne 0 ]]; then $* else + # if we are executing an admin command that spins up a + # (hidden) node to then execute custom erlang code via -eval, + # we need to cd to a dir containing the erlang cookie + # (previously implicitly done by su -, which option we have + # removed in order to allow any env vars to be available for + # the ultimate invocation of riak/riak-cs/stanchion) + cd {{platform_base_dir}} + # freebsd su is fairly limited, so: mkdir -p $RUNNER_GEN_DIR chown riak_cs:riak_cs $RUNNER_GEN_DIR From 3c3df9d162b5ff3147d40ed6c43b02b365d7d5d6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 21 Dec 2021 21:50:29 +0200 Subject: [PATCH 273/831] predefine RELEASE_INSTALL_PREFIX for rel target --- Makefile | 4 +++- rel/.gitignore | 1 + rel/{vars.config => vars.config.src} | 13 +++++++------ 3 files changed, 11 insertions(+), 7 deletions(-) rename rel/{vars.config => vars.config.src} (75%) diff --git a/Makefile b/Makefile index 7cfd0640e..90d35e048 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,7 @@ REBAR ?= $(BASE_DIR)/rebar3 REL_DIR ?= _build/default/rel CS_HTTP_PORT ?= 8080 PULSE_TESTS = riak_cs_get_fsm_pulse +RELEASE_INSTALL_PREFIX ?= $(shell pwd -P)/rel/riak-cs .PHONY: rel stagedevrel deps test depgraph graphviz all compile package pkg-clean @@ -33,7 +34,8 @@ distclean: clean devclean relclean ## Release targets ## rel: compile - rm -rf _build/rel/rel/riak-cs + @sed -e 's|@RELEASE_INSTALL_PREFIX@|$(RELEASE_INSTALL_PREFIX)|' \ + rel/vars.config.src >rel/vars.config $(REBAR) as rel release cp -a _build/rel/rel/riak-cs rel/ diff --git a/rel/.gitignore b/rel/.gitignore index 2af97318d..7b507ba0b 100644 --- a/rel/.gitignore +++ b/rel/.gitignore @@ -1,2 +1,3 @@ vars/*_vars.config +vars.config riak-cs/ diff --git a/rel/vars.config b/rel/vars.config.src similarity index 75% rename from rel/vars.config rename to rel/vars.config.src index 6284f9f8f..c701d8fbb 100644 --- a/rel/vars.config +++ b/rel/vars.config.src @@ -3,12 +3,13 @@ {rel_vsn, "{{release_version}}"}. %% Platform-specific installation paths -{platform_bin_dir, "./bin"}. -{platform_data_dir, "./data"}. -{platform_etc_dir, "./etc"}. -{platform_lib_dir, "./lib"}. -{platform_log_dir, "./log"}. -{platform_gen_dir, "./releases/{{release_version}}"}. +{platform_base_dir, "@RELEASE_INSTALL_PREFIX@"}. +{platform_bin_dir, "{{platform_base_dir}}/bin"}. +{platform_data_dir, "{{platform_base_dir}}/data"}. +{platform_etc_dir, "{{platform_base_dir}}/etc"}. +{platform_lib_dir, "{{platform_base_dir}}/lib"}. +{platform_log_dir, "{{platform_base_dir}}/log"}. +{platform_gen_dir, "{{platform_base_dir}}/releases/{{release_version}}"}. %% %% riak-cs.conf From c479cce3680a5c98c83084681f13bed35c3eb076 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 22 Dec 2021 00:58:54 +0200 Subject: [PATCH 274/831] rely on RCS_PATH in in release produced with make rel --- Makefile | 3 --- rel/.gitignore | 1 - rel/files/riak-cs-admin | 2 +- rel/{vars.config.src => vars.config} | 2 +- 4 files changed, 2 insertions(+), 6 deletions(-) rename rel/{vars.config.src => vars.config} (96%) diff --git a/Makefile b/Makefile index 90d35e048..1ae8f11e4 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,6 @@ REBAR ?= $(BASE_DIR)/rebar3 REL_DIR ?= _build/default/rel CS_HTTP_PORT ?= 8080 PULSE_TESTS = riak_cs_get_fsm_pulse -RELEASE_INSTALL_PREFIX ?= $(shell pwd -P)/rel/riak-cs .PHONY: rel stagedevrel deps test depgraph graphviz all compile package pkg-clean @@ -34,8 +33,6 @@ distclean: clean devclean relclean ## Release targets ## rel: compile - @sed -e 's|@RELEASE_INSTALL_PREFIX@|$(RELEASE_INSTALL_PREFIX)|' \ - rel/vars.config.src >rel/vars.config $(REBAR) as rel release cp -a _build/rel/rel/riak-cs rel/ diff --git a/rel/.gitignore b/rel/.gitignore index 7b507ba0b..2af97318d 100644 --- a/rel/.gitignore +++ b/rel/.gitignore @@ -1,3 +1,2 @@ vars/*_vars.config -vars.config riak-cs/ diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index 0c6ff7dd2..467b836d6 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -30,7 +30,7 @@ RPC_HOP="{{platform_bin_dir}}/riak-cs rpc" # if we ever need to start a separate node to do fancier stuff than we # can via rpc, here are the ingredients: # -# ERTS_PATH="{{platform_bin_dir}}/../erts/bin" +# ERTS_PATH="{{platform_base_dir}}/erts/bin" # COOKIE=`egrep '^[ \t]*distributed_cookie[ \t]*=[ \t]*' {{platform_etc_dir}}/riak-cs.conf 2> /dev/null | cut -d = -f 2 | tr -d ' '` # NODE={{node}} # HOST=${NODE#*@} diff --git a/rel/vars.config.src b/rel/vars.config similarity index 96% rename from rel/vars.config.src rename to rel/vars.config index c701d8fbb..40d31f63b 100644 --- a/rel/vars.config.src +++ b/rel/vars.config @@ -3,7 +3,7 @@ {rel_vsn, "{{release_version}}"}. %% Platform-specific installation paths -{platform_base_dir, "@RELEASE_INSTALL_PREFIX@"}. +{platform_base_dir, "${RCS_PATH:-/opt/riak-cs}"}. {platform_bin_dir, "{{platform_base_dir}}/bin"}. {platform_data_dir, "{{platform_base_dir}}/data"}. {platform_etc_dir, "{{platform_base_dir}}/etc"}. From 32afc59305741940ab9a86204b38b9054e78d3e3 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 23 Dec 2021 21:45:03 +0200 Subject: [PATCH 275/831] move /rel/tools/internal to /priv --- {rel => priv}/tools/internal/README.md | 0 {rel => priv}/tools/internal/block_audit.erl | 0 .../tools/internal/ensure_orphan_blocks.erl | 0 {rel => priv}/tools/internal/offline_delete.erl | 0 {rel => priv}/tools/internal/riak_cs_inspector.erl | 0 {rel => priv}/tools/internal/select_gc_bucket.erl | 0 {rel => priv}/tools/repair_gc_bucket.erl | 0 rebar.config | 14 +++++++------- 8 files changed, 7 insertions(+), 7 deletions(-) rename {rel => priv}/tools/internal/README.md (100%) rename {rel => priv}/tools/internal/block_audit.erl (100%) rename {rel => priv}/tools/internal/ensure_orphan_blocks.erl (100%) rename {rel => priv}/tools/internal/offline_delete.erl (100%) rename {rel => priv}/tools/internal/riak_cs_inspector.erl (100%) rename {rel => priv}/tools/internal/select_gc_bucket.erl (100%) rename {rel => priv}/tools/repair_gc_bucket.erl (100%) diff --git a/rel/tools/internal/README.md b/priv/tools/internal/README.md similarity index 100% rename from rel/tools/internal/README.md rename to priv/tools/internal/README.md diff --git a/rel/tools/internal/block_audit.erl b/priv/tools/internal/block_audit.erl similarity index 100% rename from rel/tools/internal/block_audit.erl rename to priv/tools/internal/block_audit.erl diff --git a/rel/tools/internal/ensure_orphan_blocks.erl b/priv/tools/internal/ensure_orphan_blocks.erl similarity index 100% rename from rel/tools/internal/ensure_orphan_blocks.erl rename to priv/tools/internal/ensure_orphan_blocks.erl diff --git a/rel/tools/internal/offline_delete.erl b/priv/tools/internal/offline_delete.erl similarity index 100% rename from rel/tools/internal/offline_delete.erl rename to priv/tools/internal/offline_delete.erl diff --git a/rel/tools/internal/riak_cs_inspector.erl b/priv/tools/internal/riak_cs_inspector.erl similarity index 100% rename from rel/tools/internal/riak_cs_inspector.erl rename to priv/tools/internal/riak_cs_inspector.erl diff --git a/rel/tools/internal/select_gc_bucket.erl b/priv/tools/internal/select_gc_bucket.erl similarity index 100% rename from rel/tools/internal/select_gc_bucket.erl rename to priv/tools/internal/select_gc_bucket.erl diff --git a/rel/tools/repair_gc_bucket.erl b/priv/tools/repair_gc_bucket.erl similarity index 100% rename from rel/tools/repair_gc_bucket.erl rename to priv/tools/repair_gc_bucket.erl diff --git a/rebar.config b/rebar.config index 87a9fd0df..8482f59b3 100644 --- a/rebar.config +++ b/rebar.config @@ -53,13 +53,13 @@ , {copy, "rel/files/app_epath.sh", "lib/app_epath.sh"} , {mkdir, "priv/tools/internal"} , {mkdir, "log"} - , {copy, "rel/tools/repair_gc_bucket.erl", "priv/tools/repair_gc_bucket.erl"} - , {copy, "rel/tools/internal/README.md", "priv/tools/internal/README.md"} - , {copy, "rel/tools/internal/block_audit.erl", "priv/tools/internal/block_audit.erl"} - , {copy, "rel/tools/internal/ensure_orphan_blocks.erl", "priv/tools/internal/ensure_orphan_blocks.erl"} - , {copy, "rel/tools/internal/offline_delete.erl", "priv/tools/internal/offline_delete.erl"} - , {copy, "rel/tools/internal/riak_cs_inspector.erl", "priv/tools/internal/riak_cs_inspector.erl"} - , {copy, "rel/tools/internal/select_gc_bucket.erl", "priv/tools/internal/select_gc_bucket.erl"} + , {copy, "priv/tools/repair_gc_bucket.erl", "priv/tools/repair_gc_bucket.erl"} + , {copy, "priv/tools/internal/README.md", "priv/tools/internal/README.md"} + , {copy, "priv/tools/internal/block_audit.erl", "priv/tools/internal/block_audit.erl"} + , {copy, "priv/tools/internal/ensure_orphan_blocks.erl", "priv/tools/internal/ensure_orphan_blocks.erl"} + , {copy, "priv/tools/internal/offline_delete.erl", "priv/tools/internal/offline_delete.erl"} + , {copy, "priv/tools/internal/riak_cs_inspector.erl", "priv/tools/internal/riak_cs_inspector.erl"} + , {copy, "priv/tools/internal/select_gc_bucket.erl", "priv/tools/internal/select_gc_bucket.erl"} ] } , {generate_start_script, true} From a8b59fe2b5489299ca66ba0259e740ef78437d93 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 23 Dec 2021 21:46:32 +0200 Subject: [PATCH 276/831] create unique su_piggy in launcher script to avoid interference with possible parallel launcher invocations --- rel/files/riak-cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index a4d75dc91..e5db92661 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -72,13 +72,14 @@ function maybe_su { # freebsd su is fairly limited, so: mkdir -p $RUNNER_GEN_DIR chown riak_cs:riak_cs $RUNNER_GEN_DIR - f=$RUNNER_GEN_DIR/su_piggy + f=`mktemp $RUNNER_GEN_DIR/su_piggy-XXXXXXX` cat >$f < Date: Thu, 23 Dec 2021 21:46:59 +0200 Subject: [PATCH 277/831] Makefile cleanups --- Makefile | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 1ae8f11e4..6f48f0308 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,6 @@ BASE_DIR = $(shell pwd) ERLANG_BIN = $(shell dirname $(shell which erl 2>/dev/null) 2>/dev/null) OTP_VER = $(shell erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell) REBAR ?= $(BASE_DIR)/rebar3 -REL_DIR ?= _build/default/rel CS_HTTP_PORT ?= 8080 PULSE_TESTS = riak_cs_get_fsm_pulse @@ -33,28 +32,27 @@ distclean: clean devclean relclean ## Release targets ## rel: compile - $(REBAR) as rel release - cp -a _build/rel/rel/riak-cs rel/ + @$(REBAR) as rel release + @cp -a _build/rel/rel/riak-cs rel/ rel-rpm: compile - $(REBAR) as rpm release - cp -a _build/rpm/rel/riak-cs rel/ + @$(REBAR) as rpm release + @cp -a _build/rpm/rel/riak-cs rel/ rel-deb: compile - $(REBAR) as deb release - cp -a _build/deb/rel/riak-cs rel/ + @$(REBAR) as deb release + @cp -a _build/deb/rel/riak-cs rel/ rel-fbsdng: compile relclean - $(REBAR) as fbsdng release - cp -a _build/fbsdng/rel/riak-cs rel/ + @$(REBAR) as fbsdng release + @cp -a _build/fbsdng/rel/riak-cs rel/ rel-docker: compile relclean - REBAR_CONFIG=rebar.docker.config $(REBAR) release - cp -a _build/default/rel/riak-cs rel/ + @REBAR_CONFIG=rebar.docker.config $(REBAR) release + @cp -a _build/default/rel/riak-cs rel/ relclean: - rm -rf $(REL_DIR) - rm -rf rel/riak-cs + rm -rf _build/default/rel rel/riak-cs ## ## test targets From 6b13473d4baa5998c940736fb077476515e64249 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 23 Dec 2021 22:38:31 +0200 Subject: [PATCH 278/831] another go at making make rel relocatable again --- rel/files/riak-cs | 4 ++-- rel/files/riak-cs-admin | 4 +++- rel/files/riak-cs-debug | 11 +++++------ rel/files/riak-cs-supercluster | 13 +++---------- rel/vars.config | 27 ++++++++++++--------------- 5 files changed, 25 insertions(+), 34 deletions(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index e5db92661..84739449f 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -85,12 +85,12 @@ EOF case "$1" in start) - maybe_su $RELX_RIAK $* -pa {{runner_patch_dir}} \ + maybe_su $RELX_RIAK $* -pa {{platform_patch_dir}} \ && write_pid_file test -r $PID_DIR/riak-cs.pid && exit 0 ;; console|foreground) - maybe_su $RELX_RIAK $* -pa {{runner_patch_dir}} + maybe_su $RELX_RIAK $* -pa {{platform_patch_dir}} ;; stop) maybe_su $RELX_RIAK $* \ diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index 467b836d6..98029aad7 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -25,7 +25,9 @@ SCRIPT="riak-cs-admin" -RPC_HOP="{{platform_bin_dir}}/riak-cs rpc" +# if we are called as `riak admin`, PLATFORM_BASE_DIR will have been set +PLATFORM_BASE_DIR=${PLATFORM_BASE_DIR:-$(cd $(dirname "$0")/.. && pwd -P)} +RPC_HOP="$PLATFORM_BASE_DIR/bin/riak-cs rpc" # if we ever need to start a separate node to do fancier stuff than we # can via rpc, here are the ingredients: diff --git a/rel/files/riak-cs-debug b/rel/files/riak-cs-debug index 59aa062ef..b946898a9 100755 --- a/rel/files/riak-cs-debug +++ b/rel/files/riak-cs-debug @@ -132,10 +132,9 @@ exit ### Set up variables ### -# These paths may be overridden with environment variables. -RUNNER_BASE_DIR=$(cd `dirname $0` && /bin/pwd -P)/.. -cs_base_dir=$RUNNER_BASE_DIR -cs_bin_dir=$RUNNER_BASE_DIR/bin +RCS_PATH="${RCS_PATH:-$(cd $(dirname "$0")/.. && pwd -P)}" +cs_base_dir={{platform_base_dir}} +cs_bin_dir={{platform_bin_dir}} cs_etc_dir={{platform_etc_dir}} cs_log_dir={{platform_log_dir}} cs_lib_dir={{platform_lib_dir}} @@ -506,7 +505,7 @@ if [ 1 -eq $get_logs ]; then # Get any logs in the platform_log_dir if [ -d "${cs_log_dir}" ]; then # check to ensure there is at least something to get - ls -1 "${cs_log_dir}" | grep -q "log" + ls -1 "${cs_log_dir}" 2>/dev/null | grep -q "log" if [ 0 -eq $? ]; then mkdir_or_die "${start_dir}"/"${debug_dir}"/logs/platform_log_dir @@ -531,7 +530,7 @@ if [ 1 -eq $get_logs ]; then elif [ -z "$new_format_lager_files" ]; then lager_files="`epath 'lager handlers lager_file_backend' "$riak_epaths" | cut -d' ' -f 1 | sed -e 's/^"//' -e 's/".*$//'`" else - lager_files=$new_format_lager_files + lager_files=`eval echo "$new_format_lager_files"` # should it contain any vars (e.g., RCS_PATH) fi lager_num=0 for lager_path in $lager_files; do diff --git a/rel/files/riak-cs-supercluster b/rel/files/riak-cs-supercluster index 82078fdb0..b6bccc1fd 100755 --- a/rel/files/riak-cs-supercluster +++ b/rel/files/riak-cs-supercluster @@ -23,16 +23,9 @@ ## ## ------------------------------------------------------------------- -SCRIPT=$(readlink $0 || true) -if [ -z $SCRIPT ]; then - SCRIPT=$0 -fi; - -SCRIPT_DIR="$(cd `dirname "$SCRIPT"` && pwd -P)" -RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd -P)" -REL_NAME="riak-cs" - -RPC_HOP=$RELEASE_ROOT_DIR/bin/$REL_NAME +SCRIPT="riak-cs-supercluster" +PLATFORM_BASE_DIR=${RCS_PATH:-$(cd $(dirname "$0")/.. && pwd -P)} +RPC_HOP="$PLATFORM_BASE_DIR/bin/riak-cs rpc" # Check the first argument for instructions case "$1" in diff --git a/rel/vars.config b/rel/vars.config index 40d31f63b..e4b079a84 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -3,13 +3,14 @@ {rel_vsn, "{{release_version}}"}. %% Platform-specific installation paths -{platform_base_dir, "${RCS_PATH:-/opt/riak-cs}"}. -{platform_bin_dir, "{{platform_base_dir}}/bin"}. -{platform_data_dir, "{{platform_base_dir}}/data"}. -{platform_etc_dir, "{{platform_base_dir}}/etc"}. -{platform_lib_dir, "{{platform_base_dir}}/lib"}. -{platform_log_dir, "{{platform_base_dir}}/log"}. -{platform_gen_dir, "{{platform_base_dir}}/releases/{{release_version}}"}. +{platform_base_dir, "${RCS_PATH:-$RELEASE_ROOT_DIR}"}. +{platform_bin_dir, "{{platform_base_dir}}/bin"}. +{platform_data_dir, "{{platform_base_dir}}/data"}. +{platform_etc_dir, "{{platform_base_dir}}/etc"}. +{platform_lib_dir, "{{platform_base_dir}}/lib"}. +{platform_log_dir, "{{platform_base_dir}}/log"}. +{platform_gen_dir, "{{platform_base_dir}}/releases/{{release_version}}"}. +{platform_patch_dir, "{{platform_lib_dir}}/patches"}. %% %% riak-cs.conf @@ -32,14 +33,10 @@ {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{runner_script_dir, "{{platform_bin_dir}}"}. -{runner_base_dir, "{{platform_base_dir}}"}. -{runner_etc_dir, "{{platform_etc_dir}}"}. -{runner_log_dir, "{{platform_log_dir}}"}. -{runner_lib_dir, "{{platform_lib_dir}}"}. -{runner_patch_dir, "{{platform_lib_dir}}/patches"}. -{pipe_dir, "{{platform_base_dir}}/tmp/riak-cs"}. -{pid_dir, "{{platform_base_dir}}/var/run/riak-cs"}. +%% relocatable releases don't call the launcher script, because +%% launcher script requires a riak_cs user to exist. +%%{pipe_dir, "$PLATFORM_BASE_DIR/tmp/riak-cs"}. +%%{pid_dir, "$PLATFORM_BASE_DIR/var/run/riak-cs"}. {console_log_default, file}. From d7a4713eedca7b721120b49ff9eb24816dba6cc9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 24 Dec 2021 23:56:28 +0200 Subject: [PATCH 279/831] osx package --- Makefile | 6 +++++- rebar.config | 7 +++++++ rel/pkg/Makefile | 5 ----- rel/pkg/osx/Makefile | 15 +++++++++++++++ rel/pkg/osx/vars.config | 1 + 5 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 rel/pkg/osx/Makefile create mode 120000 rel/pkg/osx/vars.config diff --git a/Makefile b/Makefile index 6f48f0308..625601a59 100644 --- a/Makefile +++ b/Makefile @@ -47,6 +47,10 @@ rel-fbsdng: compile relclean @$(REBAR) as fbsdng release @cp -a _build/fbsdng/rel/riak-cs rel/ +rel-osx: compile relclean + $(REBAR) as osx release + cp -a _build/osx/rel/riak-cs rel/ + rel-docker: compile relclean @REBAR_CONFIG=rebar.docker.config $(REBAR) release @cp -a _build/default/rel/riak-cs rel/ @@ -156,7 +160,7 @@ PKG_ID := "$(REPO_TAG)-OTP$(OTP_VER)" PKG_VERSION = $(shell echo $(PKG_ID) | sed -e 's/^$(REPO)-//') package: - mkdir rel/pkg/out/riak_cs-$(PKG_ID) + mkdir -p rel/pkg/out/riak_cs-$(PKG_ID) git archive --format=tar HEAD | gzip >rel/pkg/out/$(PKG_ID).tar.gz $(MAKE) -f rel/pkg/Makefile diff --git a/rebar.config b/rebar.config index 8482f59b3..1dd906cdb 100644 --- a/rebar.config +++ b/rebar.config @@ -116,6 +116,13 @@ } ] } + %% it's essentially `make rel` tarred + , {osx, [ {relx, [ {overlay_vars, "rel/pkg/osx/vars.config"} + , {mode, prod} + ] + } + ] + } ] }. diff --git a/rel/pkg/Makefile b/rel/pkg/Makefile index 6c05e4645..b45f87730 100644 --- a/rel/pkg/Makefile +++ b/rel/pkg/Makefile @@ -54,12 +54,7 @@ ifeq ($(OS),FreeBSD) OSNAME = FreeBSD ARCH = $(shell uname -m) BUILDDIR = fbsdbuild -PKGNG = $(shell uname -r | awk -F. '{ print ($$1 > 9) ? "true" : "false" }') -ifeq ($(PKGNG),true) # FreeBSD 10.0 or greater PKGERDIR = fbsdng -else # Older FreeBSD pkg_add -PKGERDIR = fbsd -endif endif ifeq ($(OS),SunOS) # Solaris flavors diff --git a/rel/pkg/osx/Makefile b/rel/pkg/osx/Makefile new file mode 100644 index 000000000..e1318a5b6 --- /dev/null +++ b/rel/pkg/osx/Makefile @@ -0,0 +1,15 @@ +export + +BUILDDIR = $(shell pwd) +BUILD_STAGE_DIR = $(BUILDDIR)/riak_cs +PKGNAME = riak_cs-$(PKG_ID) + +default: buildrel + mkdir ../packages + tar -czf ../packages/$(PKGNAME).tar.gz -C rel riak-cs && \ + (cd ../packages && shasum -a 256 $(PKGNAME).tar.gz > $(PKGNAME).tar.gz.sha) + +buildrel: + tar -xf $(BASE_DIR)/rel/pkg/out/$(PKG_ID).tar.gz -C $(BASE_DIR)/rel/pkg/out/$(PKGNAME) + $(MAKE) -C $(BASE_DIR)/rel/pkg/out/$(PKGNAME) rel-osx + chmod 0755 rel/riak-cs/bin/* rel/riak-cs/erts-*/bin/* diff --git a/rel/pkg/osx/vars.config b/rel/pkg/osx/vars.config new file mode 120000 index 000000000..0a676b8ba --- /dev/null +++ b/rel/pkg/osx/vars.config @@ -0,0 +1 @@ +../../vars.config \ No newline at end of file From 29160711968284057ed9144f0f8bb816ea9b85fc Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 27 Dec 2021 04:59:49 +0200 Subject: [PATCH 280/831] fix up 6b13473d --- rel/files/riak-cs-debug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rel/files/riak-cs-debug b/rel/files/riak-cs-debug index b946898a9..3f646c626 100755 --- a/rel/files/riak-cs-debug +++ b/rel/files/riak-cs-debug @@ -530,7 +530,7 @@ if [ 1 -eq $get_logs ]; then elif [ -z "$new_format_lager_files" ]; then lager_files="`epath 'lager handlers lager_file_backend' "$riak_epaths" | cut -d' ' -f 1 | sed -e 's/^"//' -e 's/".*$//'`" else - lager_files=`eval echo "$new_format_lager_files"` # should it contain any vars (e.g., RCS_PATH) + lager_files=`echo "$new_format_lager_files"` # should it contain any vars (e.g., RCS_PATH) fi lager_num=0 for lager_path in $lager_files; do From f6afb127cee5f7ebeb63ccc60fa5a6efee12d966 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 27 Dec 2021 17:34:24 +0200 Subject: [PATCH 281/831] update rebar3 once again, to 3.17+same-name-gitrev-fix https://github.com/TI-Tokyo/rebar3/commit/48344c200353c --- rebar3 | Bin 950883 -> 945532 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rebar3 b/rebar3 index 4b0a00cc94e61e29490bdf7b18145d7ba8d1cff8..caa7e66d30e85950bdde96fd562bc69fbe1e20de 100755 GIT binary patch delta 674179 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%0Dx-)2CB5b$H-&U0N|+dj~^PH$p`Q01FGDC@UkO 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

      )w1b?z)#*5zL5*)QfreUfERs#4wOM@Bq5@OtQCd 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�=UIF{(g;`(LC>7JYf3WVD5ZBml(T$i?iGwi{^dq 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%0Ac4U@{&j{P#X_LsgVT8eV6Yw-Gh&=SAGi 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%0ARR?U7_2@`#7EMfJcGJKv2Mtlq$&A`r zt41{u$L!djJZ46ngjI$5PizDu;(hCb+LlB%Tzuz5dyav_R6$#4CN+5Yo zi2DrzN1)!iKtQh<2tXb{#SHie8w=ZpgD6N2^MNLT@xy}V{TO}&bp~^OM7~Ba%sCwZ zdu{^t^%VX@1$|$H_7t63uE^7qf1O02+z2idQdG8OhdwbS4107Kkl!)rWB`BErbY*ZifAZ?XXx{EcAr{|5Ewa z7$jqtyLYnf@WpUqOeTU5C&qc7hO31FjRv;Uv0EoqVsft&Hl%H~b~&%fn?fJxD^Ba4 zs~wbSi8fhJUS7%(9`aXtsR=8!MbgQ%)NMCFYMuFRWdz+^Qj2h#7mEJP)w+o&GX0OA zm)ZJvDoUph=+F&{rr`~pB(7s)(?i(l1d`3ib6ge{=Lv+TpIYOhjQ^IlO0J{kYWS)2aCI^IybcBCa%ydD>FE6$!@ldlK4uzeDYoIf7;=98J zwiKCsC8y5Y-)iHWZWI`t?+IK?kHdn0Kju_N^U9s-Wx82gpLeYNx^$1PCE%X-cFbKF zIr6`9Jbw(H$9l>8pkBGTSYpGIJbP}!XOka9TuX5B_R};osBFEQ>qMPi@G&RG=dJm) zfB5UL!8fw>%>+~{}^8fJjoM{{_`T;JQ#Rm+c)Zr4|F>C-8pxKLZ6RO zZG={LHn02Is|>xo=osiFC$@XuAbW3LZP(LfI^(|jMwAr2d_)6{Myly6MA^F9s_vAPC1>GiY`L6@mVXJ8=lbpve`>X?3{$W&f&KfpCxSgc((|D=Vm-<)2BTYfi*6K|d~Jf|O(u@&P~ z1)r&3j~~Zn&U)cb@*=`1e|X1zBGj!izyp7ZG^B9Be|Ygp!4)1K-H4$G-Y9)k6y@aJ zwpS#R($qe2?w)lkldE2@dS0Tq591}WijV0Q`f_fMEQaB1q(JT=dzqC}RWZbv zHC$|480#~rWqaE`VJ4s4va*{Lb#9+Lu4mig!@n@GZkxl2yg)i;{3khwGr7Ed!LEhQ zMVVxoY-sns%vE}f$$doyxFtmLkf|KW-E-1W*>I0u&CN1yOpy_9#gMX+4J7c-#KU7X zeQ!ZXn%7pf?&^)R2WX-j_X|HAR7WGf=%7mlyXMu;Ti2C0D$9I*I>yXccuq>C!_et= zUbTnkJT4o@X1tykZnGfY=E*#8IetSgz#l^)(qzu+ViWZM7i)Gvq7_#&U2V3vWYH+C z!B%SB)Y{?^=CMVuW_lJXCJSq&v;OVd>q1A1_y|>I^`?#2rPSbs*Erc}RlW`8(&GSl zXYrT6cjd=j1VcXks+K0#)|}N{O!g}zx_gM`K9iinRA%Oe!?DY6Hl5+Rin_{M{aW3- zwHhV|U-!SJBT7O5?61R(?5C-Fyml|X?M`yw_}duluh6g1uCMZU{mN2uiBUA?kWVmF zC>RC!fe@u2@t^QXisTsZjD=#3@cO^0Qef{w@r(km;~b^9=?PHd;I`pMLRI>$c4Hhx z+G#h)9d=-9hH9Ni{b9Sw4#!%ffuf1>z7&YW;~N0!GuXMWh; zpyM5DeoUr5*=uM|8h>mcVtJRrlWr@5YnRZIYAg6Fw6`Dndij}LFnW47|JuzL(V(w) z_n(ruZY2H2$`^in$OA?)NE!x~tdKkchCHZ3nmm$%Rhry8NsKp{eJ=W*0$hp{_s6Gv zSYqOV7Hb%Akm#!{<69CFLzQYunkj5O%GwxILuxb1+n8rduJbQI2tFr+9$h|Q=J_6% zxPL&-BkE7tn-E=+r%Sdxrsu2xm)c+ANb@}^si^cw8J=q7+HFF@^FW!CTs| zgj4+2WGfB&|j%uQ|<1Mdze%_g`O8{l7n<|2Gqu{wl`ZWd{Kn zHB0Z+{YO_D`a@s<%c)0;r6sai%S6u9Dru(KoMz*ZKeAa5S0WjFOrt(!ZO4;x2jli< zBM79MM{%=6Y1Q%8e=LxHNb7J|uWb#Yq+F=q6f2#By)_1)7Ob?1|Lp6*5(&I?Q8L{2 zxqNq$nuVkd*vrZHnR@AQx#}3WTP~CE6?}NPikF9|Cpr zQpaWNl`=JgtJ3E0s&rY8z&S)~N4-j`ApT(f(xt~yBV(>tKcpztR0&46)>^#X>7oBo zx%ge2p;Ftevr5%Q;weR26;t#guQ^BpPsB_Iv!=pqlUnuRPosf~3~i;REJA%fy18^M z4y4|?{tSBsK;2ewgcYkzlj1>3T_NEyR729MSFa`@_#ro&RefG1?5KCfSQ!S2`QWLG zztXC<@W$bz)i#MbJFZ48Nn>29y9G&i1ZT~1^(~o@T+h0+!tyR~^{|Q-KlDkBRi`2g zS(66KN3G+danoKHzvq02XNTU#;(W7l!JMM(Pn9|y;6SzzJ9Ihy-fLw z(7Be&kEyfJDz2!_g1X;$*Zj-r`E=m5GFzA66$J6}cM*N^2XAVdsrf)4v8t}vz^@l< z+W^bz!2Ebd_#UD1^z^sZI@hTrOM0w7oT71FKwBkU)tavx=pSkA*ns zrY9-eNUQt^2A1q&3H12Zad^+>T74qB)Nzw!gzi;m0Nr77fMzzW&piL*BE!~wbveNo9K?LXue*w?-B30l}POgZqq`D-|i?k_ogIcmUlGOcko z_ZJj-+II6eDW^kcwujHR5KSaU+*=z4QX9JLRF7eR=rrPtp`ER)QK5mw@FYl>6S;Vw-87GnC!RIesFi4{LrO0kjapOPmNF!f~}BeP+Z zN~S2oB1ZO^HsW&if1OMk^CCSGB@;Tal*VX zuaR&bNxO=2W$mg_)3j+L8CuHWi?rGZni>6U*Om8a5vIWu-bK{d&pyT;I2;B6n6~w{ zqS{liROL)$2CsTiwiqw;6(yPIwAJpBceB#Y87sWjJGwffLbD7XwJ9PGSXH;4)U*Xs zsI2#=`=BMrH?*11oOSie(^3>*b$@iX8)pIa+0OKQC#hxmhgZ4DBAxz&dmU#bt2l3Y zzuS4pM%hWDQq#dj+K?-x$|wuqByL$(aF{E;fI%Qs*aEIJZ%m(V{y?f|o@h!lDOuN4 z1HI;DfATlbUAE0Ll;?-1mOkx)DzZ>qSo-9l43C8tgP1NmYUYgH7zN}(UdP*v%@(4= z`L}aWoy(ikj{FY8_?PYLI+b(R4WHtZM?m-E^62ud`F` z3d(>{OgHw7!BP27UV2WzOPJcs0)OZ-!axHqAHpy7z*qC#80TL79+a)ZL#$sUyim`- z!L;yr^{wQWt7Js>?Z^~UPK@!!qveJ(+B}GU{k@+lj_$Z= zJGQa#eZ&-Z4Y;9Rnt)ZmBxYSXM*?+GS%1q@G`~FU%b=wnfK}o5cURLO(*t+#EpJ( zN0obvRg%r7{wczU4yFw)QKY4ycu&Gfz5XWqqA~^~zZ=bv|kOVu;dfLqivQh=*%92-|^{%y`n`h_MrP0m81cO9u$ z`6WKBh3iUlznLrq>^%tWW!#5Pw4Efd)0BQFQ_@mEQ8>ANFmYpj5&J$fwUhDxIsL>C zV1NAj>tlsc+}pUQz$voQQ1tVz1O!9IQAA+F+S?|=k%L1pIg3l+C|6R;*nwJ!a zBSUkKE+i#IeI!^g#Ll0A(GOSn@v1{fU9#%IzhJ6&P`FnJq-Yri-BFk^zfDa%`l-;E zxBkrcLvD=;`8Z?e#fgRL)yXS?|au^rurQt<(m8G7!PAE_VfFTS4GO96vXw9 z*xB5Odtp;C_qutUCv0(v{tY3d${RwFy~-i>W1-1ia}as@Brw-sF=D)=zp4AS76Ufp zrHIK$xdJS{0Q5EJzPEr|LxrqF>Uessb}CV)$SZV$&{4ynpt#!kK>C z1$95c=401@NDYQ=`A#ONp9g2%TjJt#wX~B#=Z7 zAjIVJN+i#f4Q^9t+0$QHO9&p*vO<*OW9A0jD3q&#ZD}VE7znb|8rk0j%_d zW~PJ1Rl%p+WF!1lYKp)5rPhkqKo(&oBm}A~3V2r`he&T}$wmsZj4F;=FbD?}XR95R zk>=-rlM957(n#oANqc1_qBDfXYK@}^;FnpT@C=NOrHNbMdbOA(4vyL+yuy?aA;UTW z1sRDdo6L@5C+_EYtt*5sD}*-Vmpl?v!ZWBaSv>Mo%*Zh$*Q?09`(RfpebWQ55^hi$M#6IJ1}}#BWz>#| zQE_{a@A^XWO#6x(8xzbP=%l?VV-)SFFPK5-$|=MlbSQg>5{v^y$v^+fSh8Y1h8HJs zQ}51(!g{OW9k#KM)ek6T(EkvlEWE6KqRgrA6n)lz)*z4-|HuGhk#6ffuhq_gGY-uc zi8e*a13WT~Z(~+ctgvs#c-`1D_?WyOsJX8>`jQ8o;;cJ9=!rBMnxdv_n4idr_;CpY z!UvRO8YD+JhMp>Ld1F$9R?k^!C7UL1!zogA{IeSU>G_7T>`hS+3WpnGgL zf~|QVHI{;l`H_(j`8P;Fw0IK>o0_)s*HjZ z56A;&Og0Azqv?&9Hr}M8HB>o|I$rEm=hR`?Kdx7S@ zPI2x|XY>=Xicz&s&E$YEz>|n5ozrSEwEbMzw~vI8?<9?9kdN{I-;-@b60|X1U8_e| z=jkj`ygO0N^|)u-A@(oxZpCT7aoB+|M!YglNvq-WS@o^V-*+y5CO3NrhJw|3lXc zTVrb|)nN#7*cW+F!OfgR>o}w0&ZV`45hgE_^{PeC;Qw zraAjtt=VbL5-X@r8G*{qo=EJ!`%~^YGKWTS zK43|OEX0CymcJb{ah@=3=2ROC@9}7~9q4{gxmcS|8SwG|aihmEe-m8L>gG8rP1d@V zf-Rh{cbBV-j&yck)K9P@-lI^TA&I(sqDHZ^fqR?o&c{i-t%}+DCC(k~kIl;M*?MFA z!1R;!z>k#Q4|h84{{D9y9~`8;`i1y5ZdQn*1z*AkTtqiQs4umW?^vius9*4jOaglV z+3n&yN5&1l4f8(NbIi6>fnpWWqpXDLAH-Xyt8k~UHdn;}uP@WrtAEaiudkd;A47EU zHuYEtR}w(g#x_M9V^dv*Zw0Hwu!2*W9yT|q>rX3xh;k^YzHnidDt&?(@pfa|Ki62# zCPQf&DFz;+IDE)$1Y{75>j4P{dnjBfM50JVfv^~f)pzuqpl`$9y}IBNdnpHB*pk_f zb2hSFED)TKn!S%wtUE^xnZ-Ja2*WP*w{5F0TetyHeIFFREts^OsHb<5zF?@@F#`$b4_aXUXSVf2 zmvpzqlJgAyn-|Y!{&FI4VR{9Z{iaN>mtyOP zigE>1s0*^eIyXyfIIHbBwQNc5xqleRhSQwi;KZSPx{dntLf@|mkc=e%`+@PNl$rGE zwVkZZ=pOJAiyO*X-ks+Nm*&#Z)s7r;fVVL8(6O){cC<_+aJFM(>0VU(fmCk9SgE(n zN_ul$Ezp@Gv+|Ra*I_AXt8%lmWnr0EieL`NY#!KRre$Gt(rUQ7`cc1Ow&{MD-01G& z{`6c4eq7IPFT+)zkQWVK!{P0hva9>PnM&I8t88azrDt8CH1F&17sJ}qO)NAQSJ(RS z8tWrNM{bY(Rw2$CJQo)Jh#Ky;HRE69#q#CWtTnUWaW7rzOaiN3_s2`1^NdYOHdOzn zMm?<#Lj2^EXqt2<(Pyhep`j2I)LmWMZ<9tr9!+0r{-LS!E3WFJ-Snd}T0Gg)SPiu4 z&p#p50OIlOqrQ>5Z%ju`UNrgR<1b+Pzp-zv^~bsXz;*|6-4H+XY>loztNF)%{bssD z^3NAKK=%AsulAG*frtntmkMP6i|j{&IY$B>V;E+X0FLKbKmeorlc-gg&^9#oCpey= z(0TBtBC?z#LR@gjz%}|i9CiVse{jSFv$S<`Tucsj=`Bl zU7L<=+qTV)osMnWPM$a&+qRu_Y;|ngw*BRunyHz0{+=JF>eSi0HrBfCD|++=<)@iB zrdP)YveW>fJ3u}wM1W3|^Q|5Y(}W?kA}$OwJJRG&Qy!5rYo#S(T^{2$BmWkWaYE!PqCel#6oz9V=qnX=N`;?q>=GzH z7yEOVIc3YvZ*+;#I_z)}8H^Ap==q0SID{2XDS(8*EHZ(nwu{jY6>jvKf@VmmUP~o% zdhmD;_IGMc0~kG^ttu|LLE4X|@~3~1RDG1aLCud+;h*wdlufewq3dhvMV$MAE_!i+ zYL-z&n3w$H?@=1D;tDo)A=5J9u_8U?bgNdJa;HU6cB!t~yG1m1RXKImBst5m;tiTI z=>})&5X;y`Q<|z)jmRA-wA#{iH=t28Q3WpU7GC2ClgX%Axpi(ZFi> zT{SJ2uf9QPaV*n*?Au>&!eZ0ZYnwNdji=w9v!_EN64})!()KtGrvUNA+avqGc;2jZ zX0qmEl0D>2{KKpVxBI!?HSY0C9wT@7n1A(@5Aj%1*i zvhKw;51hQFJ5}A!7CM@hH={or-XLlyY7E1$GFy)RJ@JJyoBY(#(;5O%WM7k&q?i?J zluORN;7ucPH09E(tO3;wa?6KkYRf}Ovq_55z=xjFP($)k#XqS$B}IyXRBdQ8pRY+| zx}>H_HOGqLXI>QKzn8I-klS-au}jYDlZe}w&h}iZJ%b*;t*m3`kE^0TT|e>2rKd%e z`dzn0na?s#w8pW_%PM}2*sFImC1XI`%GOQOS~5aVN0i&N)d8L(Rq}nM)V|^w^~bf8 ziop9lX3y?YVWsV*ok_^s7AhpO3Pl?#3+OC!Mn~GZz&A+hg-|@KZ{}4i{9=1oKPq;7 zE5`f?#1vI$caQnhnrE!2XpC5XJIzEyY(0Wo6BjBdb~g2nVo|1zq>p6Kchy|XwtF;d zP)!d?u^c~Y$N5-Im&w<-!l-Vu)ERzX{JQ3x9hEiO zOc*Pv4{6XgfZenUp}(c6Qm=1}FleN~NNG&|!;n)<@0s%CVPqZ9!z=6i7oot!J^AK) z!gzz#^>p(_Ktb)m#Oy;IQSJ>aJQY2_9357jD#?)m_ZV>bBV*&QFVOr85^r}7S&2E5 zSeInG?#IBt*Z4yb;(u;c!;jG;JP=|K_|??kdJMk2GecfTu#)tXaJ=EU4@;XPXgz=b z%`aGIVV`?&IveA;uQ8Fi#9n@`ta_9#3~00P(r8&;(9IQGNxLx|sT)tlxI$i&8xh#t zJi4f9Dh4!x5s=yIJF+YYoGf|WXIb4}{QZbK3#flTZ?RSR*73AZo>YHU(0`#mO+F_x z9uI`%?~zSkcIrpc*I7v+l?KT^RXf@)O}y)Ndn_1bOOP^)r(?-Hhyy2!JxHW!NU0(P zR+6)lWaXCDlBDGpmQPSVaCXXYNr)_p+#qxRM+$%I#WR3%p0*Zqh=z~Kg z0xjt?`4>zlHtPz z#9|H-Gt6w!cbgWY>_A~gvZpgK6!L;{w6ElYUj2igVC13dQWZuNw}LDi0$JbCZv?xx zVz>Of4Rm`z_XiT$_4~j=G(sg9#<2M$tU(+20RQjneAvQ}4j>XBAe&U%QLucFvC9^u zF|cYxN)w4KxxXAZIOW80MkIe~crT?n;-knin=_G?$w*9oleprNkesQdrXH+kHx5wM2*MDrDvSI5=XElZY1J%LY7(?8~$_}L1D+^M_{G{@yO;z4fIeMr}+*h-WxsyBK zgrvASWX78kW}B$L$eY*dn=n<|n*mzj+}6#Z;%J0;j6y_BPw~~d=ND{K3^AMH`I}j* zQS&VR(a@uD7X;YJuOSu*U@(`u16TPWFU_|uR>U2G0_lE z3bk-bH3H(vHM9o_n&!xn=7i}^)As}`)L?(_7vO@?lG*yAef7DjJzF_Y6>7F(pAohx zZ3H)lCHa`qs*b!GfY~*}-~bLcp}{o+=}joBOvVwb8|PMB@Vxzhg_*KJ&Y?}By^T!} za6tKCP!0cv!H=KK^Z<4{u!z${g0m8?L_J~ZD?sN78fXjfQmxA1C!i^69MQR0Mtjqm zu>@Zu3ZDHkdjiAaJCezQ*lUeCBCn)=h>oJ^b7N7YtXQ?Tz*@t>$_KpBj4OSUO%WNW z4EVv)D}|YBlt&`&DLJCu)~)UU{PMnTlmP6LeJJ?-edo8f@ZKn}R;h2e7OW6LIaP)| z18OJY2@rR@eg37&EER!FN<>lfix<>T`)I+AFg6!WLSubo#(42sy(aMQ{3|@a2H<{4 zG%1KW24h&b;(4e1+6FAwnY*OD%#WqxJlU+w)1vWc59ENh1HqZ#@58(N z!6p$YGL~Fk@6Y35>$n0Wa$v zBI?qdsQ}la#Ombjoaq=yy+zP>su%oyLP;!Ddr^jPeWJ?bE(MTe5j3*{amKc9&lR3| z03Akynn3^QilY4N8(p+|f*^Y(#JRSQBZ9(cHkg54V+x3=F|4JeQUv3PA%D zI}X&DeeQEo8kR1tw~ssKv0vC0qZ+MfH!ZhDSrMJ?aXoQ_*zFd@o^z@DQne7!WnrHetBs$O;n!q}c5y00=< zwok<;=|%6K#f^B0zv5=s4XmirypRS2iuPq`VE8YLl;)Fuqnl97nuVo*m^AUkvC0_g z$|miBJom(F8QzsnW&oJ%I|I$I%A;oOWi^7sOW0q^7va9=d9tm6T-l)^J;?D21wBTA zmw{QdKnhA!(Y`CeyJHB0_qcGU8o8E+u;4%|nk|T?11}m@AcYGB}02bcv3O zq9n!7`!b>nqhy<;KzCyUVX)bS6`i!Qi$|*EDwC_dDdT8w?Et#qr3teTE2##>24RMd zq#rPSs9|}f93%**DoOR>Q5*q}vi`!q<}_{6lV{EH#6cHTB-;bZ%~-rJ%jojB`Vd+B zSk^#fIhcq=p{l-6si3K{)yvwV{(`VV{IcJLR~Nq)hF%*?`<0x-5-Ogi^(&jZQF@dI z5^PJo!45jX0aTKyziSVaDIS(W%h}9+^NuJJ5xxA_%sLC7uhc3Z(*;|3zGQDHILbNbyT-%mPwzKOn;DK_!^~QiU(w^nsgB z0f>~*sjzb>?c@@3Lsy^bSGH*rY%oPY+#&X_4)lBr>`UPM(Va3_^>F-C%W4wV!}=3F zu?KSOOVHVJ01?i8YQa1DYz+$!P{Ghn`#O#?-lXNSm8EZfd54<*SUFrhgz~du0Jcqp zsgfL{@^EVD01QheWp5G6oFlLidWCgys*_>GI}d#q&IH?$(%s5=YQ%DDkB+C9I3#h7 z(w|buCJDw30{(e95L2`~+Fx~#IY3QV4_=|kUPIEIfGC83WJ`m?Me+QGkzZlx`C!<- z;J@aDscx}d(^=3kElP-w_}>8~gUp^XEvt)< z1Z0Bi2<~JU*Yren1KV*pl=n9GZUA9t1KA-2-)aSqN>k=5YFLG*Rz(|jy>eCAC)YuY zosdyY0>F!fkxTj_5;)uYre|K|XR%2NmGf8;U4H(3C^e7tHKKRun5CF$Yg9L6va}*L zvLVi^hUo#T$`ln%?f3~@*#u-VCyDIe5t_f|Wj`wP9jgr>8r8gnzr#tdWss}{j|QQ0 zL2f5~E@No|_-aW66aJx~?zNY-9hR&&~e9H0{1 zVCn)KjNu>m5QWfQ1{EDYt3cF*6zqf(g29i`UIcYGcESQhA3FRm=tO(>1fQiHWCLaA zF2FjPyR-^K8p5gy>DPFLAD)#wwyquqU+Zm)h~`WoMp8XcH&tB&oEi*ppbM2L9%L#Q zfGBmK#g4Dj2=$l5B^x?>T0~4*1eJ08v$b88&{ysJLLB3vXlu6r63k4-!XjIGC~W+y z_x`!m{8=!>2jaMDE5hc$b1Tz_a1i4)SzHdDZAKuyd><#y8lpfqqwpFn$m2TozDg@~ zz^oP$?Ufac=h_Lf%|nJ0_5-sP+#LBVphU^0=>fWsJ!00IQ*wm^=+X7*kbFOnERtGEH9 z6{24(9Co%zzVW!o)YPnfL#ca!{)juEwBMkb9F83hfaRxwAW3~2m@?M zbXOzV9S05k;X^D;jJ*={F_8t!H0(SfMLi;&58F|}0`;-!J|bm}GngoS-Ekqbd9Kgh z4N4UV!L?O07RZNM9%1~c!| z5o3z+7U;9@)seb^N;^j8Lpy2%fFTBYBJ{OlG=}Tzlxl)K2Ze?0pm|J?abXi2f<1?h zxEN6)A6bI+z&KO)@f$EuwBk-EcexfA8RW=1V5U(bW5Z6MLJhz3DF;)Uku%~Cj6AGjcDg`a2x+t0xlaez%DH&TWK#M%Tp0?d)4 zo_*N*WlNCo?mRJWdwsrodIXtBHk3!#SZqPyf#@q32jHBNdz zGk-0qd6`#Coa-NA-hAn9AdW)|Ze`As`eBdO$E_$E3W(A4UcUgp98y(ubClVC-<#Fk z&|hW$bE9Ox+!m}$KVMV?u+-HxZOTuFPJ}*%%r!Ua{{9Tg+Meuqr`Ml%cUxA4RF^Ka zo}%;S1aJP1vh4AD)qYOkgn$2ROROf?IQ2S})im*3jBQ6B0#>gP1mu}n%)gOP^Kto@ z)he|7Gl%_YcqG(*+^W&ewmt1bb$y&HaJ@c3VH_g+>>TlOl|Uc|D1Uyfq^v~H#9;4N zX(g?Q#>{qo4Q-6UVrnS|@Eac=>y>(E`Mn=h@xH%@JY>##Q?Xm@zN*SRH{Y&1u(@Qm zcjsh!UFpRBrCRNg*^TsUP} zHs7!K)J}A!IefkVfJ)EvsKL=4FJt&RZ+eh@^p~JWeD}4t4ofDa|#wo`U2j;=_Y0-psb!K3(&= zx?H}AI4T}C_a>pZn{q9D&$r5=iMnX<-R| zK0wA$ea{8}IEojFs4p=6$J6b3rUYmKV9;E~m-jpJD6+YCZ^NBN3ZP*LCKSnQKPb># z-j#1PtXnYq(AmhHXeKX|PK;2Y8yYPBKa5%Dw80~f5u{kT9h=a@#};&bFHt_}20nJK zKaV(drECzC-0@fi)Z3AwrlTwZZ{3G}G1XX`{|tTIpF#Z?NrnZOCV?7$#fBcPcOmnu z|3)avSyAu~ylq(Q&sYox{Jz1w9Y6Z7VFHLw7=3PTzjf4z4e%sHu)}YW8bj%f<@=g zQUqw)fJSB2jX*QY;JzCvZNvLJ8-m~syrIUl?2<)4oo$LMd&Ow^usvhi)n2}ZJF~3> zk7G`owlmQr6$2u3+;grn>w?)zCb6`w?Ap!(3sW?UYBSXoc)?~hfu-7c;!jXmLgQLo zueifyPwk`ze{KE`anNFU2cDm=qTKBoF}hL@b3n~I&Boq8NW#^y(HJYzw8)ze7CebE+z9lLjOr?2@NhG1usN&@{GunOpP z&?zA$-A+zNK5STNV2!kya=|Tc;6-_Y+j>!-Z@j@b($%Et-bGVotc|s8pPwj4Y^1ID zfQZUo)Ty0au-|->noqs5;#~cHlvZA7a@sgqpN;X=p5xH*biOl{(P_*>MlOaWQOBlN zeRon&kkLL_lP-^e+|;iVIJxWJod$saUH8!Vz6@VpGP#0&dzoM4bz)GEx^A*vvL8Mi zTK~MP2GsnK&A?A@HE#8Cli3UnSxg4+N&0gB$_jG-F}2_d+>zWzWWB8q+;6_yyhmBF za(GKb9QgA_ZOc?h0LJidcp!*nK}cCfWeF)lu>ZlCZW*wo(NTnrn!}`9$^x)iv#HI^ zSP0B8SYy+tRhT2O(=~@xSjW?~N@7+gYz+Uhbfoi7=$R4T`>Wrg)gFO*4np42Z710e zoxdU|5o{-4_dOr!?;CsK<_^jDaO6($zLNNn2nM*{5BY!#=GN{V-`L+pzL5K{_ax{K z*zdUC>fdeOV!m{J(0>VhLjt~e0TK_W>_%}bq7RrNgG)xvx8U)Zq=WKCkh65%bmEb^ zgX%-wdqR$JX*38(Vd12rnQ6q*dsxg8SyUL22q(6%S<`gaeuxU8Sn9jkCl1|1SNhK>KH)&{*&?j<8UQ25iJr^Su z+0OM8PZwp+5m?r$Fybe~NR1TF&ppq@&VipMxQMkgY{uEi^howdJr@b``4IpR&n>Sk zPd%sRmkOV;`0)9}6@Dx&qo{|c7vZ;qUhUps3JMB=l(UH!r?er`a)XuMjPSKepN#)~ znbQf>^d1TU1mpqpzgQ-Klc~9-vy0RJR#d9#+TbmscQ?9UX7gTDjqsjV0rtZ=1!FjG z?e@}8gbSoVuuw)?p@E^}+|1pt*HEvg=vX^y=%t|#z`^5Wlm5t?W>LxgrVTXt0Q=Ph zO+ys;=V!a?QD#zJfS!-oWL23b&~!YdH?sbaj}ql#HuX6LaPM}$>SFbN{tAn^5R$C8 z=&|44^<6Y}Cnoa=L6ZKsInfT z<}XjojZO_70H;<^dzr^cq9DeYx35CEP)@AyV2)@Yb5qLLV?@4OX*~JI zWF9favE0bix=SkY9Q__3;-Y2-I+DdvfhMjLlEV53P=awT2iG17;2m?zS1Z7tr&*g^ zpvGPj9S5s6!!cMn0qqrq>Vc>UJX;p4%Qiq3zD*KpQb1<&Ej_a|#zC3W<3XCV49wvx z;V~?#^Cy@~dd1Nz+ii8zQk`29b6_a@T?DglC^o-HWE{mDJm^S@2Y(COUIsDB+{1g+>`6P5(>jG}Xk6r)K{UKd=Qx9^9h9;0+*pDPPV1-}0a@%; zC4*lDwPqBzT75HJ2YOXf{C?J(?#6AHt>=f2O0^rLfB0M4^=gaa1+()6 zFTg{Bm|)>y>Q`-U2Hj48+%zsKr^VItr6Jj70rK(&m;HWKWG7b8%BCD+EWjtw{^5!doy0#K#cvT5O6`kYn*6^=lM zZ#z%iZpiWVy|)6sxRe%{y`}as4%M|L33-^k-s)R3VObi>pW1i zT6Wl~#G64|e@^O(I}8SxH3+PO{()Z+a4g%-ECk=0zdOfHHoOO68boMY?v86(54h}( zpWrj(3bs=wVXOV{^($W*+~4F8cZXbE>YB+jn>}{*b9d*SNZj#DAnlP`uCy`d!jEU! zooS4zHc+|=N06nBIy2xHNbyMk&ABt( zPmA}(*;olgSoLi@Kl19_6G8Ty>Bt^_=X=H;-alU^G{nK;mmdT0zBUKbU%rbK138p3 zaOrSpNI7ow00U}C@3RAiJNr+U+0_@Pryv>D^!*V;J_~f>r=;nTD8fB}`4$??r-6fq z!}3mC>{>Dn?+@fx?$5Kc;YvFkTP3^2pgw`(x>BD~S~LFdSHAxONgg?CDs_f~e4E?k zsIs7$eEw#6gR0!6tlXMuMh0DKw#uZdQca=)H=8+^NV#l{Sqcnw99@x6Ap&cEMSsq9 ziGkLuQnf>6?Cy1uQ&us6bJ?6N zpX=+Sx8J(h?OZBvKlQv#9G3VT>*o^Uc^ck)(Z+)7Tf}zxx%t(+#hP#XybdYY`Q5CJ zrBHs!K6&kLf4#>(<9WSv{(4SKR2P?nopODE(dvMBc_tH;;yfkBl_Xr1RU(sfi#Ke@ zyr6{q2j%G>m0-+ufP6>gnZ+jzmq6;NL}F@$oT?%f%_o;bO4;)rSn&P-88zNqJj>^x zen?z|)ae&ctd`(AFl0!;#yv+4sRw7*i7d-i^KRdb5SN)YteDe1Epi&|P}4wlxynKg z=icbAZm4CR#0{-PuX52|8=9d%2Mv&^s;v)wA&n|!X;PaxVT6S6AX!ou9*S1r@=L@c_F`#?Sev zlL;fv-%HicILkgXUu3V5a?xduM-Fefpu;1aP1XRw=StzqFvWGtTTBnKUnQs8+x~{W z{@heri^h?{*7P=@^~~4B3=r1w{+9KSDtPUw{T=;x*uCDtyor1P6A15# zRoLacMZ7tGp%Vz3-iLjWco}&?@x#^cQ@>^R!T(0lBu8-VG?ISicq}WB#it2Dc zIO3(-nJtm%fBo8rE!@$*aA~KNlIgjCM1mN88RqP!kA@Zy!p9eLF(YJc9N&v+Z0uki zZ;iQkc*2{?Y6M&WYK~u?udX{(@lnj&IJi|^uRpury9l43md@=jo?e&4-XJ;kTiV=| zbEg3#gpaR2giUHj<&NI^6)81QMfa~IvP1IAHj9}hFsHudR(3u3R7K;e9A?WYlOYR{ z=}P%J^_8l;w6hr((gM18)&%Kgt4@6Yu~s#jVsR(q`#2GThP=5OXY@hD>6oa9J(O&F*oAMiG>@`%MNFypl0F2hY?5_xuSYx27M~V1y3(so z^WT|bBFh|3tqQccW=%`2&Nh{@>iP_tg9?qwD9%G^BIdaRquW4T8T0w(CI|M1s(OF} zS+?9|J?)}SIaOU_25n5SxU*+R#ZiR!+^ddTitY?Uk~J!9!SCO6i%K1r;b=Rq+H5xl zWxrHIViq6DE@{Hi7g3#-_qIuQT|lm@guvd&;<}mN z2Sp0c#k|TiPVq8YPd7^NCh?n>mupq}Yb&mGLHo(74^QEW{afy3N**meSM31sv*wgw z1))(-7vy^}OSoj*oodyrZ0eDHAMD0z_D4=Ls9t!VwMFO>(K297Gw{PYO8f{6fbO4u zLa&)IvDPvxqX)Qcja?5kt%`ESNsXk7eb_Z>Q+_H9j8k28Ch1+8-I!eIF68Tam9j-= zhjgR7DKraC;F;!g4g_q&-FSditb!RYR&Ee80{U$CB?+hQe=_pRukZo^N~;VUpb5!o za+*Vww>@43<2ikx)WniHGkXdmzm6*dCsq@?uP#u&d^XFIS*|nxU&|F zPA&9us$^5mu%zZknIZ@)6+2b8!=0@bfy5J3t{4|fGw8~y?%o^yJ-Y_Lm_cDBtwGK| zAVghGCkLfVQ!LF(i?o6rl4m#527LZ8iAnO0{Qc5N(>$ZyT9H=C-iD2Qmx6Z9t1;nJ zZeZs^qF5XK)LddsCF-oiz{x{1z$;V>uB&Ss@-X=4(rZLMJ~5tn$Og8JPJK|^q~^xS zn@qR4gAo>)vWOhAPLBbwp1kyGN#DujUa!f~LaD)6VDnZ83tMc{wX63KvXJ#USL3<9 z4wQi#$EA41SjUaCRF^UFYja^W=4nXkiJU^aT zgS&mjK;uj5cK9vsJQ|FYrh@%gBd8B;7Jc(g6xRgM(&ICj)(3I>CeK@KE;`S0V}?bx zo0rMYUbaH*W1%sj=j(xLHw+E>hoN}$%G2Gi_}B)x-g#x@OVM{-0Kde{^y_k6X^H}t zSwB4iR@E`PT%ZH|ou5lHHfoC@qNn({|y(wd+HlF`;KN!xb$J>GV`(# z^yRptQ}!s$#67qWvuocUF(xmnqD-DQN0BcwWvLd|b4qK@%=rF?m(Ik0b;ES4{7I>;vPj|-DM?YH35>BosPtKi z-;IS8DfgXTZXbPWZ@59Q-`i3$W|X~+!(34L+JjM2F7k^WZeRKie?mHiJ-U z@l*tj9oS8B5x<+P2tgYdOA$7sK;hYW&x`&3zHWe#XtciRq-yjv)EmwV=ag zRl`I_6MMPjWROOVk7;qKDvt`Y^2sqx7sWw;X^dIbYiW}5e0I)D`^jPG+mg3Q2eH#L z)db*Y6T2pmu#K);3_lL60Hi?My)f3~Sut_IA7zC3Y1)&TjjD5N!F5P0bg_ah9V~+Y zy%}*{gXDF8%oqY(5qiJ`I?(>IUrRU2Z#yI~Ua8;{GzVpO%Qw%b!c=te&=j2EUOgc9 z*@e~W&V0cKR*dZGLIxf=k{-PvfK~6Wr6@7|6^k}}-8Gmnmt!I9;4e!{6qx+P8q|k) zFJ6Bn7KA+Fakz$fe(^#!ZZuF1T;}Zr;O-FkGddfaO;8TZL?`9MdCg6ph*V7P*2l#Z z#W+90J)F6|c-dTrB>6G{!C+k*n2jKl7d%iyi~MFc1y$yt@kQu?>&A8QU=&d2?nKNz z$IIzG9?qlT@K@{K#T7dL3Hu=?=4ilcN10p;Ka?Z>wDzjRqhl=P zKryhTGE@hPD}r_;uZS5sDhVX7oI)=hq!8RLLda}Tsb-r}bMOnH+cg_0LJ6lm>*Yi? zEoAPAx~DD7t7sB#6=^pmcZG5S6elS(?p4vpV6QyO@CZorKLq~c4B-B;;now8qnA%2 zv=}t{p+$UQsA43L^#GCEu(|{x7LPC;+5WBv*ID;n=>(Tquk-BP{aoRLx`Zqp0*Vil z69$jbH|TxNb0xO06;}5pCH~t_D&+w-Ji|2SVp{2?alNdv+MguPQJY&1Flb_rfLCPS zkxwKN`(^L^0`x-B_goR&ieu8!7SrtoQ)tQOOz!x}4TUN;#7=i=t=J*Xf01Fbn9I_= zw5#1`h|8suinQLhtCc$NL>*OfD~V8zL5I<&*)N^36Ay+MW-lU{Bg8E}e&eBk7#gcX z>;?p zXkQ8G=`z}>hYs5M`Qg$vPq^-1V(A?qT>r!M*oF>0;qQP;e3MtXm`h?fFzm_iV8%+v z1?wOp3t87i%I)U|9NuK+FTg8WwK{6Gfg91Ep<8lL_E^|^iJPQ(jw!jZMf6uo77TS6 z9q3FTzfSq1-H!2maNMjw6Z}<|R$ZR3MH?MA3|~jak$}#d23FMAoCRt9pVoUnV$jDBl&~F}ssbYVBw_m+U>e z(43(6lL1<#&m6R~LOCm%-b63S3~HcdDkFcjs)l#W9^q!Ev1(X}*RUp11Af!{#$4AiOA~g5<96d2(9cd)A7_occah_@76G0Fti_d{T@(*M) zyvNLdk9e)ej1XgFH74S)gFcC`u?xQAi*VWvK=V1mpdO3boTL&Vl+Mplg>T8C0`Vy# zjBRm&nvD&9{|z04z7+8&(7W)Kn#rWR7hzV6h%n5)st0S=)?Z=m9x{=VPWXFM>^!J?^!L z)>ZtpU4H92nO|1#kvj9aLAa!??=@?H5d72kPvWt*tLoM$fyhml{b{nDXOq@CmN7@0!KuxKGns{f|&P}PXuV7ivid8ua;4cE{ ze&G%)0VboS%-3;`@sh7L-62rMT_3(j?_T;0lN~OXF4Z$mYkvaTbbpU-(mb0d0*Nk7 z_WsSW$QgFk@rI2baKbkplBbWy=~b)j?w{0tlr%)qj}OzZ9;o`OFpVj%TNqt_Jxxlz z;_FK5A+!nwu}+A61;br-Wm#4kfG3bsSCj7X`G-%t`UKO4jNtu!dN9||qAtpT=z04f z9Ff}hPxx(GkMf}ZgTui@x^uz=)A2x;lu0dx`#mDFv6lBkRq_Ri0o%SwDJ1kmS#jNE zljOI)$d=1ETynEFa7u~Do8j};uTSp`q`kdKCISxa$n6I|Ud6wmU5TL8fbPQ^Y$iUi zPzh~WWt0kzxU2KYTNwy%s zVP4(wz92mKAU?Mqz3vWHb3XXPdZZMCC%qfx%GEn-qw!PDy1|K!e%}hbXDMxuzZW*l z61w7kz7NJFy><`81}yC70p9wU9r41RTi8pMhr%+thfCk0prd^HOEaOgt#mh$J}=|+ zN?OMDuOQV2-CM^PL3a_iXIFkJI=plwC607mOCWp`tnk5eP~v?NupDsB<8AllO?fw) zJ=(ncmEE4ly)Ziny1l%wJi&$LR$&k}nmISW2s?wY_-xDVm?e_j0w61g5H+1~uqF%r zeTC`-p1h2qn%MF`6%$ruEwq8(Z|K&-2-eJgz0;0B=1dEx_xyDjf3{Wk?4SM~)(s&8 z$dE|;PjSAy#^xasG4^5$3Q+hBx)d__8Kpg!3oKy`YSGc0Fngje8Z(c*l;#X z0yAD7F+78padkdR0&WD@ujcJwQTV|Sup!Ljb2aXsLwbU0``*bVAD^Ke6L!enb%<|tN(lcLpl?ii0h8B}KU6wFfK?0Fo|ofRUlX zeIxt)PpzbTm2j!x;L!D-Z2;E?YMcPX+&AohkhWq#inmVmD$dAum-3~U)x5)on3=~! zz57LiQ9)9tg?RA4`sQ_B-RC8{)QwOyF)_4eRW>Ch!?8~#1`({(M45u9_v);FgJrDF zQxjTVIM*YB$M@;?egZvP+h0#r=KR)O*IL)@<`kEBBncaw(n)(Y`0i3-36M#_;be%> z32jLLG^M*g37aIN#)X5i37biLmZS>N3EW9&zwe?Fz)41(3lE6Mhmtz$c8bJD^AYBz zh8=TILf9XVI1+A^aLdEOO9!_GskrIlr8l@y?b?N}2WBG?^(C(<_RAjg&V)>*$xB#D z6BNT|P!Dv=tJ?lnLaHhpbd|s5nR~t&tp}(8{{GYKj3zo(JQxtzb$XzS1?l2X4$Au* z|4+AUn8bYFK};ZLOji+6!8Fj<(-7`nzc5$)@H5>0+PWk!XZ4>Zzu!O2p8L4z(z}sY z!=L8=9-9lCC__F)#bb~M8-yV6d!)deX84gW%}zC@+}*U?+dm3>a?G*dPHNgkL_NYx zfZ?HksYcm&Z}#OAGqr==X|d=B;g}QmIKT=>H_d^bji@gsQRdTRVl!@Cy`?Z`8)P@9 zfoU$l+ax#XfmozYYTq1vI<}~T8c6_(J-=Ng09)|<`zb29hT5T%mR$e!;zGtmYTNq zE%$H-lx=^z&OmcfYz*FUvng47(k>PS#_X$f0maXV zUCk`6?u3}n#_>LfjJIvVas)wMMXg%3pZ(;lH?A(#Zl|}J*ZPMXs-{~uo-QwPTI0hP zxq1XuDAO{qK1VBArW2#-mu|wl9Q7_Ynf34LwH6H5c0QC>7#&l#bro*UPl4C_sHE+P zoc1m^Pf@3jH*a0--$^|RD|V_sWg~6Qo2-xJ%arHTZ!^mD`+j4^^Gd$NzR1d~N(wmD zbkim^8=d5JMQx47rha`v`o&?BSJ&s8(s`B7g~DuIR+sKnYn_s$%%O|=^}R+rtJM(2 zfhf)BNGn2*tO~~V1Go39tz^MS`qU6g(eJvJr_Gp&r3X*pWPBdesTQA3z*;rWN~Ku) zen%2J&U;TTZidb>7enO`tGiEXf5gy~{5Dy6^^xf%;r`ne>&L3_cDD$eajV}v1JAlT z1MNC%uhB~|vHpm-y=2F#t@)_nMl8iT`QUTaxn?D4C5DuOk6)uq<7rK2mK0B^^X|}R z>BzZ_!b(wO*Hozqc=C%K03jXl+>7ar#*OWp%^1h6je7)NW&i2BH#4{p?gv}iCa#Tl zLf~RFH&ws?rK_j&Z8ThY$NPKx>v@Rtc{nx(_fYwsvAe8$VKi-n-tc@udHEv}uQ6F* zG9;j-(|7ZOR+Jl_URNP$F^b@e?09O8)7y*YFruc5b*V=^TSsLRP*tysgf8ftKw>1i zR&s8gq>z|$ty+vu*#2U4iimE;>7|oKI3p@IBKuz+^$~X4t z3uiwLFT5V%YKCM$|6OwGdedNs7bo8VXj`1S1iT#Ap1+VyfXE_KWT>W z^Uf|SUG}p3CZ6#=sH(JKIUgpv<_3L`sB*lGDLet~wqw>jPNp4$Es7sNmT}}U7E1q` zemZl-(vQ*u1RKi@`bJ&eSI#y%R`p{&U1|j8`05+YH1g|DH|t)kqlLcim;IV;{G^65 zR#PmmrytK3C6r^w+}G^p{n856jPsJ0UbZg(z^c+S2if$C_&eo%%wc-osWKJWImHS(TG_LU;u;OsFuQ>^0yz*`O?@|XIg5xi- zqYYUBQGEt$c+7&|OMbEwsb1=<4lHjSc@GWX_*iurj+l7glb)Y4JjLe^r{V3W*_2wQwSoko$G z^HM+(AQZeZDWFfQnMDb+7;(nuMc;wym<(|l=YaG;xZNR|kBU!+F*aghob(acsZ0E@ zR{dXcMcEEhb5@DUxMd8-1jrhz&*L%+m^EmB!2)1u_a?O=xbDczmK5f2_^TFgLfpE^ zDqF8Ghn_Mjqb+0eRO{{HF+45lWxN_bz%36DS-)ByY%|Uw%hvMNU z*N|EEKcRa*CO?z?#xpCS#g-RG0Xaz+6rVe?V?YRx63>DX|r& zFA4ic2##U~cp{(F1%&nlCRbSS1QE0sqZ$knyEY z2Pzb4CJ?xQ2nVANMFVD>7-7#4o=k|ODuhe}5tj%xDh_g8BhBc>~)ShG7xn-kHXE z2)!NNvP17lt2gGp`+m>y0rchU2Zi{ds5iWRJK)JJnBabp?P2Z*cij)@%N(dxgrOas zE=uqG?9uNL{J+I;1fb0yq*zt?Rze9220T)~mxW5H}3myawby80Jmb&;5+X6!l-Ub3FhS;$G-Q@>r^UeHAx={KK0-H>#nb7oH3!Z~hU&T5= zwoU?!howWghYuD1p5D?PX(R!W9TGUls~(108zLjo&W)5JIANg%@`SXSqXxed=nsBy zDa4tr_%$=ByaRbD4iRwS=jhN3Y8cf7zF{sU`s?$o zab6(bkaa{}o7o27r{J11Qbx;>EF;0?wsh3|A+wuxpZnl4$kw+;A)AFWxldxzI;>02 z?>i(|Vfw6BKEYk>7ma;KBOdKizTl!A$Lz&=C5eO1d>qJIkT0D;21aGq9dr91K@Vx``|2OMt4 zBHQJjI_NxXKFKf+CMgkRVdy*O#F8UIc7U6zPu`q-YpwU@M!Qf%>%LqNR<$tRJ#c}| z$RuXMg;QLtB1K{0PAj&3$8+DGSxZ|shpE@#P~|d!xTun?@AENae5lXeR%;IpK4{O1 z<@ExH53^NZRjwRLfpnSLnJWlZnrjtvGX6`&S5Eg7y01lT-X1OFM7@nZ$L!L7DPz7! zW(N?Ga1}*et0xP}EV0B7x@O@;rc`RB&8L9g9zx$f%|5Mmdylf_{q6M&{=9#alkQ5M zJYeEs zy4Z?(O=UN!7nu?AB@*I%-=bdC@SXy?k8em85)R2W*q>^ob#>bAPfO(Vx!$(dc-Hv? z+D?-zTD~}st-KKKP*Yq9Y-22u9gF5SOLES2j=lqT{l*l4lNix|36_Fm^D02{oBL@p zLLLQxxDD_n8GuqG_WuIu$Xyq-l8`I{o+ejd*@UdJ7w|?U2%k(&F|IDtzHp|*pc4Y1_;8TQ~h5qm-# zZp>bwzQ8f}P;^3i2K3{^f4W%)1Q>=)>vI7`oEQ_ecr>*zB_2!>x~&K+2M{g@!wLgn zXQ}$&XZqUEwKrDSIsO*;6oKhgUaMBdo%L0ET58?|dyZ9IU%b2%*D?oIiQ zz28Cw|A`+;&H9nwJcFmJ*O;Abg(6C1XaJKuGrIm&cnM1V%K1|~A%b0(g9Q}fA_guq z@?t`~3NL~5xZX3IoAHy7r%}8F!`zkJ{9WV@r6bb!{{^P}TyEC4NsW#{fq=A8fq>9{ zKuV6LMk&vX;HUuE*aJ$Wu9=#!BkLyDVnotQhoVo=iZ)SF*bP%$a8QtoE1AV_A6Q(x zk9a??&8kM&v##RYQqMMIDr~y&yZ|#8nEZN%k{hla>e-@v$A_1<9GBPkhZ>_GjuL?9 zc=>`n@#;z}`js;->swE^_xtVL%Ct2_dA9%bbdkk~Gut3mD#G?;weTn*dNs4^;0x%RXM zHZd`-%7qt2&s18+iG0uvaXeCCby-{lRX=<|3*Nmnx!=M~e4$urAXL0i1+-Ac%Zr5} zRE`Q;iJE{K`PK{X7^`D)r|YNLt&B;Ua%m=BzJ|4wJ1wx;ZH3}2-Cf1~G#8XuqH(r& zx~Wc*DNm?>4X8S=)XgDojS?X}c6%!ZVJnT{PKNVxHRxm)Z@65RdE7=vb7IJA!|p%- zhaY=nGz9G_Vsrh`~2jwK^((+NQJ^q^k2oxwi%ISndu#*|QKqf%0v zn0{_3%8iu*J^l|uByF{sjJYVLFtK*EJp*+9*~$q4w!M`F=Ki9ve;)_X7*pk}I8n(AeVK#JKps#g#K5KV zr41b2r46-9J~&O*XJzE|kJ}qKch*rQW}8xAOVP$FA^s*8+?s0u4brjiU09q5O=ml(M*HDmmm(i6>v^|kv^lW(=b4a zy`tygYz)^_on(r@Q>ySEXPpYd7BF`C?Q57fm0>-Z$+AuyxvG{|u#zmO+d_>Kp!Lej z0ldj`PL)DMt*eRa8E$f7&z?NCun4Dk()OlCLjD?3_&Aw1HPEC;!8P^^PetUPJ6r=M zp2m*kozvG?b067iyt0#W;i}4%4^}55>a>i>6J3JB9U1B6D5#@!C8fzOE?SqMk8z(y zGW+~8q8)CcQ|=!vg2kN%z6hK>1@3{`4BBV{N0f+zAv4b8ykvhj6JSwB#a?c6+T}Q6 zxul~+(Hn?++mf9PJZ>hOf0(5kv}FQjtODs~DA@W5=3>-1{dyw9@u%#AD0Ee<`*M&m zwUY-(jHT<4a3Sr(E&n0k_)~NB8k8N}gSN!cm~0MgSj z;LIKDc=uKJ;}zObq9MGx<}?cFkW`u!iE9NCp*%=$OIxI28^UY#Z9t2BAw-aPP;Uhl zChlBHyX6>WGa8F!pO$m?&j(>tzH{Mh0wmvhVq`Gr77}rSm5X$jI{5*q;D7=Hc^PST z1m(IU;2ac4PZ|VzPSCkIlJHb{z>>SZOz@~j=npimd}sl^htNw>N4P4Y*z?mL3l!E+ zMgzJ`tw?o1exg`{XcELiy%$kS95ozi)^CO<=qRkHPsEF;(iGG;;VcsIiWoVr&wvp$ z{|dfb*U}zopaqh&N@~`sKF}9-Iuf0v;#Yt}B*VUXydtwy=Rk-XL?OH>06#*aA#Ji- zLPmCg?T9S2EN~7qWKl$e)TmKK2+bC@(agYFoR{Fy<2O@`$9gWSH=Jib4%U9OD9LS9 zpDZH?*MNf*d|93A(yG-(94y}L7@FZwP@iB0U9Nx1Wq2-1!=N!V+geRC`FdLIx{WHE zJ}pvoNjf4!j3-VXHiq^G09ZdW*z@)cjS@>+CH!}P?RnX%w^8d7tvLKKbws43^hkUl zkyl5efzZ<54H5+qS}`0b3`g@nfuy(WZe<~+qSwkX8Bh^#TEj_ka}B_t74u{BbR0C5@9VFdKIq1 zi_7QtQ`qVqfA)%EvFJZ3E363MtlYSgniC0$@y0dLH-Kk5TsNm_vC31c|C;Tgwn;3U zLUK}UyMVEd4umnT^3d%AMG??^Sc>$est$QHvoq`Z`1P)6cd{hPKP8CkAy5PEXlBz5 z&fm?^BgAux%}YKY-^Y+98-<3>G5*tacLo=ZtFe7JT)--Su&IB?D8MjAU(}ZjDGo&! zD<)5Jngdw1nz_J)hgbXDIj4YRfOV>ue1;~qLqx?7D)(IiN$gUMc#CVHUfcszKSY{g zId?%aWrD)&;%pXxf6s@LYi*56gi*kNkzhgZ-?drS)+J5=pVymecN2NJauPvcCr2sa z%Yw`h6{>Dx;T(=8E8#>lRc2WqI;`H1D$}Dgo&roN!oY-k2aQ4|ffDVC{07wcg_QV3$XbTSV7b$Qtq&|S6aCU|{_u`+ zP6MJ@rd)*9_V--^xw`($n$P>Pwe(xG7}4zfi| z1&{nx&df35IBBqLxlJ75IM&og!dX!~;sNDNf|D#YP30syYPG#Wo<^xzp#UhDf7CTmboI zHXM&epunh25_wW+XIg&=`B07B64?E4(wv$f`P_#TQJUg3I?Ga2?>{H-faCT^8Z_RV z*;1gE9>`m`1dt)2f`0F5I(LPTNSXjh8R!;CA~+PZqFb?n{XZ3b2Ln?%M)jh@f5(K! zBcHX* zOSame)j~=1jje5#I_SMX5Ik?aF_8Wlut$P}e}H{ichBLx+x%<5yt#H8fO{5u)v;dI`~WqxbIc;d zm=al41)f0nz?F-NpnfbsnFR%hKo~$8MFr>vz=*q>&hdY3^q2{8`W}T!a}PFoz4O-4 zdaHsu3{UcVal3h3`%EsK}?8Jj=?58^;eWF>-_bLV*D8llD&mglHv51bZC(@iFt zAx_eN%OWQlRw;(u=fPQ-s{lZShI_5`1Pfk)VuI)Ofc^z2>QzkLm4oZ)sKL54LV#85 z`u!x3u%XUL@V7u(*=KuN11ij7oZzF(twQ_uN_UgF|2R$H#o4!9_`P0KI_w4o?l#RL z5ADWm4bd4|19u0Py9DUFLcBvbK^4Y=*1H%uK=&R@&FvtRKF-E=$^e$uqZtJ&@}WVl zgd2u9c5NSX!^wRp4A?=6BPt5!PzvS)5awH2yE_%PJ3ni&T5aLM^}Ijxxw$}hG2CnX zDCu4NF`MK3mCiiEM(Z_o0s{*~+^PA@Vnd4;bzabD9jyR~WgsxZ!-ehq8zX#Z{YoyGB zW4MWJ3~Ni7qK~6-`iiiE1`~1O`%_Gz$W0RJHsCsLX6Ye1MrY*$brUb%+)K|niP&+W z5Ys`xpjSt7CCr3G)XpS8hqeraQQ<%s*RjC4BLa`=VXCpI%>is>L=z6SNurI9f)oSN zL)0gqV&n_(qAf7C-gvOQxu{6ZnzIB*ka^2gyBab>=)fc$2CRt_%}5F^fe$b^Y#oB` z1;oZ|rGuhfV&Z%Tvucbd$<8ef*Sl-WuyC_;+N1W6WeWySHsGd7`aZaAEqY{!4@>aWZoP%{uY9(O8hgP z0XkNK7iM-`9H{axkt>I<&uuQRqik>C;v9Y|iny$}S8sURu*?>yWEx~l&B|OBQec(> zJnsCK{oF$u1BTqdu_A*QpI^vH))!4zXQXbNy%{7$E58 zcIxUZF&q7SCi$niQhW$Tf^2+y={E~B%0q9YLME&x$r8awzFDd)=0pzFnSxhVm~;(B z${T36fc5hrCrg+!@}~7F8_JThrfzcusN(>4 zh|NwCb%NKzi1*qG2~ax4wWRiv)k;D0g_yi}u85C`K@NK4G^qU@5FmTrd)exedrfQ8!w7T$G~swUBTGRLE3i0w zkR%U*@=+~FSl?uHGC_5d4*#qLJj6w>)4Z?v@y25bdAjLzdKk1meLX}`mXh-zaFNI37ubU zKV+O^&c2Qy?T(kbeciUVt%3!-yS}I7C+OM2k|tmnz_p|qviN7cKCWBnJm2~-F@3CN z5;#h}?zHV{pneegmZ@3|ultA~@H4uA$0nQ4Lm?@tf{mqiuY*@<{b$aX5RhXV@#%6@ zb`#kiZnH!ThjL&t|khY%H^rz&p|A@f*`zGnZ_BK-1A-Cs! zRz^X#=Vx$(sqBtVx0+_1<-F|kS$%QIDrpw%cjXSirTyy=)amNwvIMaae`DbV^HXIZ z?X2zfnt|3r-N+(TZ&kI0-EOY#S=?^tsf5?%dapX?&ko1iR({D7?U>JF%SHvER=cQ2 z-z#|y-)B>WD$B?jPJxV8p|5nQ~>iz*U?dq z+~Wv9!29FG`1)e~x=mp7HSkC?behm;Q=t1L*5$NBpxle)`nW+L)&AdZoM$$3^zyoB=4S2bwv;J;%B-#~eqSLA zIMAcfTAZDI7#G+~ciK5u4xFHlvGIP$?iS~tZvXBINMIQ2f!XpnT}Qo*oj?1_P>c~W zGx9FLtIU7D)ZBub4RE!c>Z=k*xTOCwIfj3y2_A_gY<+kJaCgAUJv;(ZwV(FeE{XvI z`VV{yFQE}fY4=uNCLP`0i`P8w1$#vT1nvj^@ATKnU$2VC>=vFAHL2U<;$O%5LsZUp zn0DxS@;d?^w%-9)8|2H5HH*(v`eavfJw2~Q$=mIXv91E8n-^=H-&$v5n6{fI?v@tQ zK@5L3efjOdx;o)}YQ7$7vU?iu4yXV-nq6-k>?-nAubNh832qmi_6=NC-VbwDU9wZS zC7ICQZo+D(hmbwp*7sdKYo3=XOB_x#u`krI@E^B%6;zL)%hv)Az1JtgQ|}mhKK)OT zRG6M}gwX=`njm}}v1b$RWtmzyw`}nqCht-`mt>6Dk#5Ku{!IzJ?%lRzU6Fue2M+(b zPR2Zope3;z_pkTS&i?y8xtr6aTh1?jm!WE+Vdr13R3D!_+p~t*cSX8C7?10Z zS_(!6V|MVVv}^Lw(Bhq1DyIMhFGxUAzrOjqitNB(}A zd`7ewObkp{5g|)MaY{5A8S^?Jx+5A^02}Q?Gdaj_0CCs@W&j*&G&BU6%BL9$h@n2? z9$~%l5#ZMllzqghB8BP=U73}BTX8v4v^N1do`!hc_89oLT+!lOhX)ZebCQP3 zo$F=#QVMWEE2}I0zJEh%LHJNJ)g<@vgnoN0VD*vw=D6N4lhwWY+Sj~%Du4Z{z5Tht z@auipcU^tAt;1k%s0onV;dEj47KEn^Zn`*!;e6o|J(FgQsnt8JS~iF1_AWQTUpTsgcl@<6LT^rbY@ptlhFFE# zn0l(!Ud6wlcjfS+=!oq~*_t8v^S<`JYF9h53b~4UA^F7mjs$pTe203+;_1yc%`xej z$TrR~WT;D7Q(s$IC2UY%f?)33Fw>oEaLbkBVGe>R9nvs3BfkeN!jS~Mn- zMkfqQqZUd26;3BPl%yY{Lzg5|s#Bp?mAEeiR|;JG#U@=*#5PYi&utO7Na<08VbS(4 zMWsx3{TFyq9GYzkic-rW>EjQ4r)s`xUhdTO)Yc-$xyD(6`xk!lRYEs0e$rJ+H&s@g zoFt-jtb|#ic#)m-PJDLUwA42l9~B>2Rzi02wDgPwW)WslO3}(!PcTT|C&zyl)-@p1 z)uVn!7Ah&TlHdiv;w{cn;FdqeGT{EYI`sLw=+s~%>JX_=7)rL0S&rZc( zP348G92t@5_qTJ_wDA-Flr0(r1)#_#jp7pzO_b&bV}qF9%4pRllVG72^rYdXZDiA| z%PeFU6zGlF;Z2!?iyiA`RcL>uXX?9T7=0e9aIb-lnxHafS}2tgHGcbIK$TgO=*r36 zX}o*otpaBsxwF!WUKyr1YJ=+#$}4Blr&M3nEG=nm<(;K(6>DQU#a78Ut!T1#l?y4h zoN0qc0AqhWQ%2k&{^w#NxHBQ%Qet(%=@B=&+&U6Zt+n68v0-448&W29!L0%OXK7qp z3lH^6xyL#T=H-_({-*Eoo#!vrHtgxyRXm~=Tij!gxUkjg^MMcpld2IU>#mW+f~$@& zwl8s4T=2!mZF-xTl;<&dY16Ij)n3Wj4YEqCpt8?*r2pd1vAbPX3;8Kc`LJ$>+*aI& zG#5>`7+D8s-?ett(DOH3RgnP5zPXTpSg&#Z&=E~qB#NuHct)DN`Jbn)=aU(wf_E7~ z(s^twW=XwnOLktgc`Q8Bm6RSj?<~Sipqhe^cH3Fma@}M|RV&uXMyGTpuBf!^AhhN7 z9Ov~gm+Qja015UnCy*5(8YYclGZv-7Xrq^;r7N294l4bvmmOM5tt^;b#nU#f= z7Z22;u#p`wOG}R@M#L5#RLtkOdr}Y1r>Wq`*Aq*&?l`EyJXE>;7S(rTRiFn|R94zlR% z;=%ig^^pRRxTDSf>co>iZ`DaD5xwF3mJQRG)&|#yI6>+}odxeDac$eB0qSyTr{?Tw z>HfC27!mn__U*r`Mcgk1knU-Z<}Du{S+(r)`LXwPoL#jPRL4BEziFMHshz#`HT~H; zK1b;@27&D=47dk;g@Egybf}cvO0V015A1iRQ%oN3Z(lFb4b{}#ZQ`Q5h>X_Ej2r8^##nGb)YlYsm)X}J-FBZ0~-_nOKLkN z6O$;VSHJHixidjg0a__gc1WFU^NYABJ_wI34Htvix~&H;IiZDSc;CmmvxasFf@7H) zNBI1kVdUql~p{&)|{GkMq>G3 zzP~@bu2!)?wv*EEXDS0;e0MsI)a&F00LOQ$Rq6moL|txQx63wlGu%7fo}TPg4-zK# zSHTw%@$+C7Gm5~T7+>$RXuB)#*UOLe6yH4Uwb?CzujgHwwEk{(AZd!5HbN)GtfBL@ z7U|cuM&6c6QN^j&8>8$T`~!4*TJb5+)^EsDg7mxrX8|97f?S*_r38!af^ z1!)XWu>YPML;X)!&P!hjqYN7e=z%W9@E8I!Wy9!amb~VLJCv;6v92bn$V1l>2CdEA zs1bmyND{mX9TI_=2__+vkF-lJQNQS#IQlnEOH;!q0T-%6lYZ8kX|ooL9%*+wt*wFi z-sgULqVt~F?!GsNu}697?_uxb^O&wr`B`O;)0xUnhu!y)0_7{fIDv<7^%NfuA^3$Y zPvK-<5HOHM#p)RB$)`@u5!r-lTTr5+T~#Vuv)fjwVtdlmzM@kU=6*OO7N0GvR;ofm z*0MdR3VZ+Kh$beVG^&`huh6UBE}crIv2AEkvh|$0u`b&6ux*;LQGr=%BdF=8Im8|- zYxy_bcm#r+w2n8xuxXzsw{V$Nr7D#qSdy$>4PaGgvw~+3pI=VgTytESVzXq6t=x4K zID`j(DN6o5YJA&1dQ;JFxqB?Gie#Nt}E6-w8 z*?&KtnEKPkosv~4mBse9yi1PG<}=rX$ANhc)D}}sV5aGJHNGzTM-xA zmZ`?hmXa0K7oR`=O5hU~26goDYT0a7Thp}5^b19LmlADjwSxC(Zc(Bku&dT|EqRa> zxh;S{KY}eWLqfsqcNDj3I+)VwnokFv0Wby#Rl>EF3w1g^2Dq_qW{c9oRz)zj2~pnk#ytRZ^gPmNonA`dpgCi<}aA2C$9 zd-pQM3UwG+J6UAp`%Ss0RDbLVd%*P_Gbp$Ek_E-#4mA-EBt_Gv`AYhc>Y-)bJP5zj z)}ncpA_N)`!i@%0b^mlDgl2q|61@>rJ0*p!p`P{XS zIH!_0$E}NJY)53Em~Kpp=~lyX;mCx#?N75Rom345O|aTR6QE1n6EU(51s5U#AI@%_ z8rx=g^Jpj64%lbHZZ^rF0w8Q>I}X;_VR7om9%o(REGR`W;BUO_Do-c>i5j`gzO1i1mR|tY9X#YL0&TS4Z{M*ySpAoP_&-8}8c-tNPi zPP+sG@}XcgCR|hVPfcg$GB^FB1Qn=V%}z4?%yjLJKHyG)l2wle(3Us5yE99gO8n@C z+|#q$BFo~_V74o!-SCcSZI}dh@6BT!0@ffB{z|pQ-i=C2!+R82YY|ZvcPJlfqisUB zS7dP%MM@i@E>Ht&Tws9O_!Ej%4lp%uMPd&&fX1N@nX=g93K$v!Lyb9PIDPuv=iK?4 z;2bDZeX=|)WFR8-4UPVOdGjPo^}{UwGd%y zOoklJ^j%_a`TN8gVLe48b7=o-#?VR8J=p-EGCb)+zrTzuJ=35LIw!;MzJ7K@v>!RG zQRgV0E{1GA21|Y>Egy^qKWF6UZTcIPpYQ}bOvlD*L2-c`&_#FTL}UHMX$HF$ampVX zdYL1p7V2WlNGSPX_pkUneDjA~7+ai`?(9j+WGXzr z=Yq5qcR;9G?2}mg2-VlvNPKr)`TNNpheJqE`Cw zB-*nqjn6$HtNj;J`+Bdj88v_?EJiy~Yrlv!>nkjH(mOaadO2z zbOjpMRmJ1~K$vV6aP)DrvM~PBG^?q>V_G zhA*xLJgz{p8z4LlAxPvFdSvhTt@f&7hv5eUAk?2>(QpN+4(_WM0Y11YZYWoU72e(O z;bh-VUZWZ#`%FzHspE0BSuKVqjDj9jFe5+GXsmc{BpqjSsW#rE(2*A5J$R9@uqSOl zqGD;VDp>bxzgpalNw>zd390^T5IZxEjA)yc7jHC-=z)Bzg3|D01fHXy)N&pY+qq&u zhiO;1^crfM526VL2sj-(hitus1Mm^Y++Wv9R}wXj44j_nV`C&HaO4%Yh-n>ycW?e_ z8(-Mv&E0!wtw0$)!lL$y3Tk%slnL@cQ^r$0+Kp&a-25^XxQhLt#ZiLDS?(skSvl}F zDNBW`t9j*NY5pDfo=wa3BNHRbIZI4HHy@F$${<-J7V<4WNxwTYP6T~we`eJAvI$60 zJLC!6>xb_P*mv8Q9jpZ&*%h#P6CwnOf&D_`QVO%}9B28Eo(ykTc*eiMFN6I*IoAcy zs}9nOVteyRjP>sEN>y~aB&gF_Vnj7|6qkWF!$_SD6*JGMm_Sa(tYjkXmocmW4`W-& z6N>-`l3E#jm}8q-9-y2`yM_sf3)}nG-?bA$WqBvgQpve;Vsm+8gaH_wdcYCFdq_RH zNO%au7m_av$B2QhBO1K_8s})u*@rlyPswRAU{5;gA z=166yK`Nld9hCD*th0sx;U4{^4i9BXz%X`n7bzi@qs3L^ftlkeT-l(<9QLv25>gJ~ ziUp?C9)ng+(af>2UUPaM2tf&>97n7@CDkH7;a4nm+&|I(=kJ1zz@@T~Zv6D>3Zx z>mbYlb0a1v`T!rKd{alnX#4Pfoxb>1F=wSO59;xXfJv;*F>wt`150CeM$LoePZ~EH zZ~Z@Bgi1m}_A7t76Z-#O4vxyRLFf&us3X6qp61AaThN2V7Ol63vFMDd2< zL~9p0gBb}f9_x#cW=+?=)ht<2YV6J!(@QWecIH@9ioK`HyVQCUwwgd!n9>d6SQ=3; zyvBvUb(cbJ2@x=JeLV~fsB{6@(c18@0RCH}~|+-e~B zbC6*k(~$=+b3S$x84z&hmg!v|Uia94Rf-3C(ee?a(5?4+QtZ}TkyEJkx7?BWNg^S# z_!9`&9U6mO1{d|aW`jsi*Fx843X~S95t~>d#s*wi0ENC)fT}~UFUKs2nXQyg-9@HW z^T_cGF$_gK=rcU-!nB;(M{ii2nKzH`)2e$ZC%bLTH6@N01SW}iluvv>9fu=K&%p2} zPLF`)(bxc_Jtto*?642%FsQ=C?~~LN@n=wB_wY=l_=R#?kcDHz6BBzS@jGjxAXBfQ z)&+{F0h}F70Qzh0VLZArUM;1%_g6qvE&V%Vx!CVEUZAcLmSKXyXE4*nKn1Wao}KG^ zOvB{_N_j|y?CO(zpqfyhFBF(z5iXhnDc!6Y{g61Xz?+@`CY-wqge`Y8-Ook`#`>Mn zY$gN?Ug>y%>d*`EpmSmvWcW)u2?2=W0b;xysE4@=U{t1z@?XQ&Py+uUDus&2|_rPJJ`j9hA0EEK|cCcxrx&Gj7H7f((P zFd;7}CO!dkOd;tzCEsQQvU&YIUnQy2_S9t8$y0V;7mWYOX z_J9|5fa^s!Nm#7QRFCj~H_$ck8G9uJHKa5;g)LuOi zJ)grGQ+s{Rpdks4!Uf1u#9;>vwaBuA-&WP_hy!!L9S#;pNHlq5MB;d03<2T5v-V-#8CVM) zz@zx>0~Kg5Xy#kw)71W}#g4g;jADu3wdAm_g5sn!X+(s@*uAi*MQDPn$P~6SZ-K;_ zo5?!UM9h-7D7`Q%>NKIk)@eNlY1JfvsiWD zo?j6sQw$RXUQc{B8;d>r&u4M?0+Qql;FsJq1)bL9mx}t%JjSi_ zFsCd@_U)^vy%*>cFOLx|Q7k4Fg8tftbc6R7Ra25Nw^GLfbH2Ate@rm?o36^+=k{@q z|3OBo0E;p|f2fp)5Z_^TZ><|ALwxs|ax`;KJPvX%*!TGlM3CNg>Ci(VqYWVTQF{iXEJUtzii}-d)(u?c7$B8KIb6Pl$?cu71ZZ>s`C_D-~!CB1S z2-#<;&v!&@D-lBBd~+ImOT>JFrMN*A&;kA)i>6aE`0&5kGE^Vo^qe?B!qV?vysH$B zSoF09V~|$g&Uh1yETTLCeC3Ygz*zzEIb4eaSKdH3uZR!b?U*U!M78=aydhmVyOmvN zQ^!O8PfJl_Ua^5b@$=@J*N8spL9kk>L zUc_4|c#`v|f7xX%!hNHfLsCh0w5z{Lp4z3lo4*>53LHEll?y!swgJD@Um0b-<{O0* zG|$L<#Xk54CVP|^nDTIvYCiN0wvYXea^Q)3ggEckZA=%{>E8x}h9{1{#ULAIzI}#P znndh{IN?BZzC%AgM2Ggp+ml_p^AuB%Cr0JDzt=wD>5|L=`mYRc7$LJhm-->x`anuM zaJW15l;{>W9WwNQD-lWG3^82ZvV+0Yx8QDm$hkLmV{cjWwu_S9Bb3T-+trtBNycG+ zc}Bud{h!u zaR8yfx4|5PGf%X8vzsa3&J7ia3U6(epj z@=t+kOAB+FQQF6Vpn2tNVQpQ1E-gC zwfCVTj*4qv564|t`192Bnr0Or8pz>m{=ZqgarVn!n~6~?2h16j6yyLbPN#Xik#PVA z-tP@e7u&SVmD`G~=<9!ozf|=qJdSP}ua>iEU1U_;MdZByOdHCtls_&jtzTWOFrfFaY2*ODQy4e^8e8tS*4K|qp#D3n2QAg+P`p<=Udsm| zd|$54HrJP^s4fICUl}Zp3;cH4TJarYA6K_;JT$0~#e=Qv50cj-MKk(Eo4aW|bKld7 zftNzM(prm$_~qk)BXXJB*}Gw1c|E7MLFqTKI~|UTuG0*5%lR`A?Zfm>I4=NkbDh=R zKnL(!AN^0=hL^LS^LrQ*FYC47?k#GX#ydgtvGR!?)tu0I?#-FSSxKG%f4RqKCc=mM zsdzQkYxKCt@RRZ>ch!w2?A~`xE;EOiZt$o1BVGqN)NNJh@Y=Q_=t=hKNRN0vLO1x@ z_Q|sk5d!~DS;E+!FDEbL=p8^iU}pii?XVy_{h-&DGcIC5i%0B{6(Im8t z8|urFBn55RP^5!jMGvS;k3K_b&{R`jHEq&et}rz=^siJrhoO-%g)!N@yK`h?jAhweT&fSn}O@Rc$`T252D<_wXbYiEkChJDDa_x;dsQmnpR>E?&|Pwz=(g$R3joaKNIVgoZYgL!$VMG* zPJoBnE!E&G{)&Fm!cpC*w2WP3&7$de67mbASO!*Tux-Vuu5#<+Jt!vz^_ z=k@qiR#4+?@3NPe;POoJT*-A=jQHl6VEOe&RZKto{HV7s6u%1o@VolbcJprA%}%$S z;PwJDu9M|_I}m`|fSKtnj9i~zXqPwE{}oBa|ChiAty6u*ejoOL2x(Xt2}~F&sNWa~ zB7q2x#DICQPbC#RJPukj4qm>`$-vK40qWHN0{cP%xFQ$A(vYt**wY=kSqPL>2$gjJ zVHLW=fTM8$_{5K%6KZP~w5GS>1_v)x?zcYY%1LP}$ zsgjQyBP0OV&j>d>!URLgh{N_H8cq#zVgkq9719YxOO57g1-rM$J~9Tzsl$@4L#c4U zx9#QDiPf$pz^wysF{Zid>uN=OHijhVb+sN4c1Pl=g9XGg91zw)${*z1;$I9@yg=&> z^z4_oqXNEz0R!(^Ma!z^#V#uWu8qs$JYwfH@UswB!i}g7q!{_Yk67Vh#8?re_P^Q( zd|H8X2FPBZ=m*~8KqC#=fA!&|!cxV-oW?<5Gs3InLcq&}u6~yguaSIV{^y_?;e8^V z5(5Y*@khQ+@V{k3Lq`VFly2{zTpkAfg6l*oDH1prqywJF1(-0Ag*6^U&;V9KAef1! zC9Xehc(MsmNkUxE=0CYZOQBJp_%Xh;$)75I+S;1oA6M7vN&bs3kSD^6chw~O0oy+w z*^YqErRVM)MRE1;3U&lK_~2=;))v6y+fou8U!KCJX`X_)UBYopahFQF3P9=*##ppr z_X^s~DNU-eSW*?IJh+l4nWlBER-IPuY-Ikmo=17FJV~c}Q-P{j%qh6BrKY--CLqPT zTF211ty5b z2HUbtg}Vqcn5s?2D>bErQ}3nd#JiR~@XY;ix^O?u$V{|?mB&~@3+7o%Hc>v|xAKvjLZ?YtY zKdwckwzL^EW)We1GROCH3&JYO1+Czkl_5fP0Vj+?hWoJwx$_3h@dl~ZG9t?Q)o6Sv zrrNlZnJ_NvubHsuRSk znz($@rbHfxQE8gDCIA~~Mg6rs^k>#`loFG%vxX~km(JgLcS8=SHeytldBxG9457f% z$I7W3aHLX&61{XqcUOfOc34g{Y50k_+)fF;X0<8D)jk?^3pW#p3ilR_zbWS8Ynt1=yo<^anc+DOb8&lgA2`TDV9KAWG3C0$i@awDEgDY#A9Vk)4XG2u>( zy57u*Vz!DXsg$#5bq3z&be`^F$t9g*)k0^o)2ii0i-1ZsyE8a_mn@ZbOFK>U&pWd# zpK0Ho#537B3sxC9kePhCT6Pz9p1DBbaoRi->MLg5P^k3_?4MSDNc}s4_8(}2h9#`J zmPH{W-eiSDJQ4~yW>_TgwAg&>h}p*G^$y8@qjmT<5DJ@yeDyrE7Rxr0!U2J0I8AX& z3`Q)=F=J;CE!0G@?{(v*xlcDpG3zl`ne|AaAV8znIX#-uUT zR7yIDVaLvjgOYTAjVA4uq>kC{44dLm#EQcoiASXvCh-`F!?t4rZi?gdHelHh;>qb? z*1&f*tApuoH)7#o^R!?}wsBCLKroJRsAgo-%mOlKkH$PuL5I0BKm=$fdqb*%gI}wd-j<)tiXZJ~h|0&g9L5&8FD_F?yC$7hc6%4A$&)!~H_o z+(#+LY^N^aL>G`Qk{oeN+XwjGo$V3JYdBITNJSlI$@iL6Os6TAz1m`j-e*RZ6=yy&VPfvJ(4`y z7dDU6YGSrC;6Qh7#5!iM7)Y-+4c02yd6akDV6%PRs;U~7RXqXY^NBlbQ(|U9QeIG_ zMA2BAV2gpi5a>BRZzD91AHrgVc}%7>X!o0S<`Em>h~00SV7L&W_r^|O26PZR#T%=! zUqtMGG4nV)9F;-O6|55;I^bbmQyk1OXP^Y=#h5(w*E){ay7_$58Vo6iF>)xe^P7?7 z5)91WtwXB7gXVNJVTwlDoh4WjK04uJL1PF$Ff1xZR(M_w1 zik)!Ip;wkX3W|2YE(PWii0AseU9p`Yw(|tLjC#O!zRxe99*P|^j!L;~L-MG>E>MHM zOb+^D!FmAb0@Z~+U#zH(6IF*`%c%!c7x}z1K=q$MuaH!oifV&Hw0q6!`iO-jR z%1lCW3QXe?FkKmmpY(asj31`_WsNXsD{0;>Rb(qA*(HLlA~Gz#E}vhf%7P6#dFtRS#2Dskd7LM<$|pSLl49iK3}eXiWj##_)2@Iwh@79U<$KmIc85UXqtP&7Iq`n zEEj5TILZGEyYY}-xqXp1Yw6*an}~fR$w>i;v-skaNgZ0)D>#L2@ z8p(UD%&;FI8nLScTSwtRHQ@8BRHj#-%5*gV>t&`_2Qu9-ohcb?P?=sM*hWxY3308@ zuThyg$aH-m(-zndo{{OG%=D;#O;R9JYdX`xQ<-kknQoAouJib{2D`SF>AG5`>%oi1 z2G~=Q8wDGp$dKfq&o>5^+9tT)Ec4qW*f4AyL_g&7O)B~+yPMx+<7g#)Z^6E{wu5gm zhjzsHu>Qte2jvPp5Lat1*26cOt4$j_&CPZ)+S|=jk?W(AfmNPD8gT=r#qt4wACJerK$MZ#AR+KHqA`qlCyj?loo-o)Ay>?uAy%7o}ZOtd} z_a;@_o00P_)OH&Zpyzgfuu-j3g55-QM6E}Bo(k0Zal~-5taVzjZLnF3T95iXt!iB& z){J1=sR!t+&ocq^T|lQK+7%3k)abQ9kNMnH=s`k{3znuHpm+FuJb+FEJu1;T!7{LE z270H@a|%5|=v{(ksR!u1&vymTyMcBkdP1-<*w{c9d_JMj2MJw&6l|P&fG+vG7(l-Q z^bU#MEm#gVEkJud->uMx2wfIzC-neb@p(Cb{t)P05?vK651VyBPx`#7(8mb9N3aR% z0eY{`_XNH>bh&+iH1 zX;<7M@%IY07e=#zzt89QYJ4-{?-y(zbpe0C=lAQbmP7}CATiV!*9RlH&)ibmw$!$B zE4|i^ZVgH!4_d5QPWJ}_JKk;6J6;2AVYjI*??J(Chx1l{h!6Sv!J2c5>tVs}pf1Gq zh|eFEU%%6$x%2dBrcNEwr*O`ijw>enR9r1Gu15vC3(PS%eaz>NYNs|f+Jo3=LzdoU z?>SBZ56nUBJJ8=JO*#{5;^FkoeaHdlE*&z`x=1 z*EN0);olVODe40LEuX&`#Lor(X^DSZuxDVj1^9P-{$cYOqf+?fb*@r9BBZYYre~ z`MrIezPDCV-jTep9E;DKSb~ySBO@6!*yr8+W7MXdM(7LB(--uIg1v$0T#VG0jmbEF zMHZu)QTlJf|JhD-%qB6;cr*8z+vov+^x z-Y9>h*81CWt$!uhJ8-@OrTKA^e`PP@UnLrobTLp-2==aWg>u>l;uhZFXpzr>TzLEF(pF7cYaw<|0j?%;#w|Zm8aiPZ{=tI0GPP?4{K;?Z*?xVl3 z;&GZVGvfSfgZ)ylj}TiPF@J;IO|Xwq>UO8ju8;F?F{^(i*eB>OAog#2_;1XAM)?ET zYBQz=;8TpoxgGr1v>@B*_XL8Wh`*-E5esU5)6IWnsx|p9A_U43*njI_%MNX@*m(x~ zSEWTDzoYplJL2qogB?do=toS{zt_1IsIq> zmKd#8!McO80xNaRYO`H^=DyUwOLf=e0Y=}XF9Rq2c74#t#C4<* z&id_LPIrP9eb}U=x)KMHmcGu>!8WXKZ-43Lf29)qRh@Qm(%oayJuuFHIt=zV!ImJr zy-4BjJ^UYZ$Tes3?*^CJI30YKFzEYkhikuA1X#bD0foW-(arw`NGKHAT=9nKhudo= zN_f`AAYOzuck6-p6k%A*LowsPxaXvsMXC{9zjcMzoTdwEtB7DfTt}`!*Ojx@wrZJpNd)iUWP(OR^=qGi&1Xtvgu zv~1`xY}Wd`mPx-8?OLthp=HvKh18rNeOAk)r#bFu{fL$gUHdDweo)JX#;w%)0WFiB z)?tsff&ieena zFhze=;j%t|hT;uH4`rV1m-%pt5egrwa5Y5`g;v?CRqB2e8io5(1S(wi2Pj-dKV?=a zKAFqICq7G9MCT|)b1I$-N}cf?yL3IBBqj5VQdh}(0`HXf-lfZo9Phh{P46^L2#T(% z8fP3>7N8yZL=`s3U-v|vns+8ALfF$%8Jd^!q+|Mj__-Cu)+3t_o%~{A_Hnzram9|7 z_xQN-6Y~lWpFL1LG@EHFJlT1Fab5Ga{=)Q@F}>4f#U`HLK6*&?gJigv6i^bn@m_d+ z>7(ki*Umqj(9L=`^+Kj=z?T(%KO8K$k#fr2V=XG%GruiPx?)Ul$8RxLZJTO#7w84X#iv+v;&JDW2QQdRDH#HfMgw=bde}_e;ISo}fE1c6IH|V`(LGy4R*Z zH7wkPgAYWHyAe|q`v{^=B6O%b8= zJ!H1iDSMJ#R#{2&F*E9HhafLhLJ)Ios$o-qUF*c)j@ZIgQD@w1(`7?{K2;DUPM;%j zmOi5_YAm8;GdT5}B#Dwim7Y!uaVS`5IkPWYExY`)Imy9`LI&d>ql?x>=_317(e9+8 zL$>*unGu4hci0Ud3wo1iv-4I?(%U7`#5o+YS!Fge!4|4od86LK3ue7T%#uu8UyaXy zV5YD(!O2cy(?lD`rrB%~o8^#Lhh$`WoEt*^M%o$^Vz}oazmByPg*;qK=cSa_{FFQ+Ya7xRU4#MCN!)nx|=x zP6+ZnJ)pF}CpmM&kkNsG&6Sl$w38oy1%G4uZiY5M>&dn}h!UFi8Ft_LbY)j$>`R&t zB616LcAy6?0MZXW>pwSJ9G}{YULNJ^FIXf*ss(&EdN34H;dZ7{hBe zJPs>a^}U}dJQx>tx2}q{mNxJEqUC zsaK86OlwHs1&*Gyk$FB;@_*#8Oa_sa#6-+w4RMimWIgead{Rh?NHN(&yrhJDMYfSL zQciY~U1Tr$mh2<@Ni8`_n#n10kz6LfkSnB>w2^jljr>MB$#rs@+#z?#J<>xSl3q}Q zFARV|5Ddd$B!t2%5C#A`U?CcRCc{ja1#=-D=0O4^!va_Yi{X7(0tT=^D)3+f0Yq31 zD_}L`f(zV`4<0ChtxyW(Pyst(FH}J_)Ic57LnAc7PtXkK;R0NSHn<8Ma070_U3dW9 z@EHDrr>MpNBp8Sq9EihkIF7(j9EIcXH4MiHWHAb(aSG1BnHYy}A>!L$xDXfNV*C)7 zq6y8&VJ1qLgUfI^uEN!ri)+w@Zp_2aFdw&|7fWy}mSH)5jl1w5)?h6j#}jxGPvbeP z#|Au#$KcHu{rs4}0Z>Z=1QY-O00;oxa+^~Xsdb5v5&!_amk^T$D1Qxf6W5j2cx3C1 ztY=0Zfib@WQh>qO8Y3BFW0Pme!k8Z;EMvm2ERV*vuq+9UY)tb<0@+ZKuuj?>Iw=V> zA?dc+?ov*6lb&qSB;ADOoQ5TvHfftp!fDdYImxz%J=?ToH$Qvd%*Y7Zb9zoV=P`Hg zyYJrbefPefk=JeMZ4tED=06pRbZqV@Y+G%!*?(-8$CCvhXu7n#f`(FQHIo=qQ9he3 zP@zK2rxTfBw%y-eWf{c_S!%x!S~{g93aM-+o>#T(cwSNC>SRI9XrR(6&7fK#QBc`o zwNN{eNT-tU5-%N?$_!R>7pPp0ySDwj``1sgg(90ZF)uyM80 z>@%iWuIBUEJWi)Fg{zT_H!~D($(oW+9d1{0c5ih??sOJtG;PjM57hR1V8C7G`{mrzC%!z$!7sZLteWa+dS zv^3KbY8=4Ox^!3_9F)JNj)AsfD4QQk6dXh8L;;GoiZU0UW}CM{Wpk7}z)+dW7?pn< zpU^Th#!{M=$_y8yxlC7aqt+@?Gz){(V~K-n^T>J&kyr5r%Zjrg@l0~sUvC5k2$I+|%0@k~0-Lk(v`FDPe$;am`Bnz^8U%Dlum z5B%0RI`i{(XI#16_XQ6SFw&@mgyQxIkraf$}-s76P%;Aau|nO#K#dZ-`gVz8Y9 zGp3B-S~_d+pL`XfZV!V30_>iq);q-aLaA>BtMc%b|C%YhZxH>?G_V0Uz-OiO@-Z*uEA_ z=jN*{KkH`McI;!2m-Mj=^6BUX2mb=`c!?Y8guclaSKu31r=X)HVBW|IOYssrOzZ{{ zgwzND;tP{LfpoIvQB2`1G4x9UM&X37>X+(hDa8cSTGoOagf;;;)DRIbm$AekDI|!o zQ@9}}I{kpyeLdh%j0eEW09&Yklbh#+or_Sn7rwynG5RXE9F%lGD zTID(11^||a1Y0a5@X9G%r_eCb+%?3oogsw=Sx%issZ-+g8$OA%I$*5UqR&plC(NX- z8Lv>b_~mZ&)>Uzy76pD8v(^n*^k3I!0p)ZlxJ%tr;M=MZ~LRyplmH zO~yo}1qT!o)`$`&nnJt+iFrvNM#=&eFq}aFU{wPTS~CtRcz_(DylNg2_K`r4cxnD3 zu`)KIuu$zetJ)i2^?(O|W6ojXQ%EpII!n?OY}0Ua4T<7aGHzl}Q%JKNuEWiTo&I{< zs_+AcLK-iGG*LMtP!a{jn4wp*uqgo&hGhYO1ry||YaPHyfm&#=x(-`opqLL^*3HzW z*nj1ZWv#u1+Ikz|<=DG0>_1O*)YW#fOulcbj(VL=w?&{5DKA~$`|o**ciKmjFeZ^7;C zDI8`+r|9;%``iV8_YoMQqg7xjkfh*FQdvZvkex2$BM=5Q3)nz))C}sG#MuJgR)aW; z91+|{bkqWJ4Oq5g!l3p#@a=5l2W%mqjg7FtTaslX1(t;=7If5V0B$v4u>}L!8j7q1 zuLW2k3M<6&ECtf%PSO!=&^_A<)edqkg=30yc$qhN6=92iypcg`>%fDvjr4h8JShZ7 zS(qGQO-FS2T1OPkWzdbMa7Qsv$j1wA*i>&cCd3|L5FySE<5W8WtPqEc=9xgLigM8* zxPwNAOgGR1OED4{J>M9|(s49a2aH@mx()%<5cDpjHwhBeQ5arCdQCx{aGorJrQM;U z$a>h?LqNrU26%=cSsUyO>eSIXD3LBWOd_Xn7Zl$5Dj7~oK-)$63;ARZ-LB|OVLd1o z*Wq<`mY0pIg2zWM2WXvnfFBj%V$e;q${*rsVncS(3(FE*3SOf$S;07(yLj0s+cE)O z*6U~k0N4Nkx=Stw8zGi)n92*a!o)T^29OWJw%{#n8;fJ~ zK@8ce2FSd6WQ`QCcn`dlb^R z71Fp2?l(QtcxD40DCQW{*f#z&PsW4gS z2f*7}@Gi>fF3Ran8TT`&ALbwcUN0=fz#4&eIs5TV&TV)*gSNvpG7^9V?SP-AfCidOl`=&tqj1^P-s2C06VVLX^3MUQj=q5FPrrQA3 z5M(t&s#)FE!=n`p%9>i3dyZ}pMu&*t^0i+_N$44YlQF*}|SqBS$TzUnAP8Cf3b@%}NKrp_;e4rcxr3@U;6ij(OTnr74 zyU;ACh9GO$@R#WZ26r~N-4)>;m3i~qu@vM1*o){UXQzAT1k~~Ge6yQkvb?E^8yJDm2gEdhe~Y1B^-8^=p!Za zx{_RUmvGx^$(y0|Sb2&<+gid^uO-vCv68WUmd~3kdn)fP!Kpw?mW&;~PA=wXwk6Y8 zqu1dq<*FEWti(@-+C(O4?b)8OnKd+I_2(?vX4!4G^xL3quzb^h7>$;%HfYN&4i-aO zX33%@Q%tnhYArvsF0thYTaD^zU2_%(wASsGzPJWhOIKVUW$VT>6o1fq&sxvhEbI*9 zd*e7f)7IFVEq`THzbRFKvCJLt`r72lyB_G+GOy8fSM2Are*I|wyygG;z5ZR_3B8zuNKh2Y2qTeff`n`fPB^y^ZHz`PNU)UzitM z_2Ih5BcFZVcd-k)#xILW1FaBcY@bTlyvrjyw|HH9$AFqCGR&3Glw4UBy-hbcmFRt(-7d|-A z$gTN9>-WEX>u-Pd{QGzPE_`sW*EObl>hOQSN{3oJ^7|x zXBI5E{Pg~R`}XG_+WbMwPv1E4>etsYpMQGd6Xxj){ZG7i^zEeQy+@zfz6JMu_;ml` zj{=9j{rkgvU9CO--Dfv9Keq7jBa86MUCZ8m>>G0b&huX$`q>x3cUF0hPi%YgliKA^ zKX+y2^LHOO`reuR`E&T8mbYi#$=d(%{E27U|K~q{&M*D0_gz|Co3aYc<7ulFO7mEn zyM2~C0d2&pi#)VJ%bx1?SUFBW+hNrU)orxK(r1@tAF=AT+^W+>mY%MwxwfnOAB zEtfcui7VN$Tq>>R2gczIxn0%_gvMgE5Z+yXVzAss;P;gKLj(c zo=rUY@qM>^6lkB}+J9Ad$2S`uTNZfW)$}`eCLYY6V{C7_{_mULbA9yS&bf|-e}7T@ z)h~OWP|v%beg5$mM?boCaQTmpeY))7+g~VG=KS~3hOT=W*1fpXe$Q;rlMkMpDtvOs z5AVPCwJWc@acSx954p8^^wTfjZ`=5zA2ajzkG!}kl~Dod0)N}pf5)u)XR5g-ZWXtN zYvV#(gzMq9aJ^iV+sWZB%Vm2{&Nk~T;irA^XiX{)qF>XW*qo20n3 zL)s@6aWAK2msx3n^Wla zySf_;007()001MGK^q1Xm-3|r8v)9f4yFYee*!!01kwswI@`jsr08K_N+zNqjq{*5 z6q4SQ6dDqmG|dbllMZPfg+QPrg;J7qNHYzTG%wQWkTf9=+NS@WPQ)S-F{tr<^~_b817{lrcF#K{h?H_Ka^I2;lxNX8dFjzm5moG zTd7zmK4_?}HfB;;g-a>nY$_ccRk&m-k&H#tnKU=3WP+oiSXP;o2gzolv9x(08jl1A z04F^;Jfwt&gRxLL6C6oIFxBr*Bw{!*9L!{sF~yJ=o}{EwiBx`AmjR~*7Jp2Co0n^L zg7MIZQkssA07M~%;F?q@nN(6m1EE-2F;TTxw4X1y5*>&t5mS0N3ObQVnNW(lMwKxA zL-8=p2xW|`6VbS(0IP(;L&XrF63-Mxl>Y3X?pZ7`h=7Vh{fShDpBO=UiauHsO2wn` z!L+Tw1Vd?E#WE6F*RKRqN`De&7w1DOjwXWOa`C{LR5YU$=ie1+i8lcvb;L5!4pNdy zQ#2lqWg`lLiA8CsQl>bsVj75rG8rX431ZJe7}5AZVhW9U!nnNVGPhlxnpoKJUAL>Q z#$7XIAR7;7qKSAg91CUB%753b1KqkBp(gJu3}6;aHbfJA4YZWYr+*3RYOMO`EBxXS zWu#w8K|^*XA_~KBCSV07|9c2%IZzoZsDi;Zhp>`GBE(}P$WBB=WKoq&5<`qKv5Q4+ zzD#1>sv8uOEFpd-U7S+mb5^6(PSOq%_LAN%(%DDk2oW;`ZS-Y54|-5_ z7IC%2V{f~iO$rj}=6`BE2rRKV;ul0>M{0l?Ln84@1>Q&;B3Ukzex$B4xdmbr36eL?2qH00MH**UaS0foMp#^;7h48dsYzM|*&P!Ejb|W+Ze&2+Mg%CO zSV#&iE>&?EOr7CoahZ>wfh++xcqMy@*wv04cH#xgpgpxm0HKt7uoWDv?Mo}*$16+&HP3pBn+*KZ>a&F@d5HhwOP z9mJnQES^gn6+$!51y|lD47Kx?}DLBhkvqUuJpptB2a%iWLV(-onW<+_Ld}c z7zMFgG>Ei){d@BA{S$hw2wDXUENB9VR>Zr?h{V^r`5G42bRb5o276|~A_y>_wwH>l zXmfQKrNYcws;0ZuAqpA`E0QV$i@-Z5dNCA<#jbqH-70oMT=QXaT^@Om?l&r)kEIhJ zTz{zIYFZM=vWLj1SmN7R>{ams5Y~XOzKQqBtupVWzP7me1{ODT$czVK@9dBzxtee4 zG}rFnn`F1y1;Sns^qSokQrKKX2SHvyR&k9OTQ9TqX%a2vANRi+>xTt}OOJDXp;5-LwL^LZ55d?)D;aj4;H1 z2By~0sqnx8wlXYkYT}zc%|MdH9iX0ybQ>g{B6v#7HLy!9ObWtIs3;>sRb>s=4wy2K zh^P&5%njJ*0o#+u_UPEnUkB+0NZm!d?qUIkx>%owsn=mzE;T*m8)>};C`9zovwy?` z`V9cL>QZk3q&NnLiyza*Y0P6a>R7ER1NHO**G6neWtIxq#^S5;Qs{!KDW>*9!jM#= zVjsL|fc4St<2$v=H1QpBGmu2xLNvNdZo%4v)4~o-)dUB{BDz;YiH-CC(RN-R94_s2 zR{=Na(SbYiZPw}KyJ(Mg<#!y2uYVC-_krtn7Iy<0_~3&cT;${Z$l`YA+Xt0`}5F)RnL)dZQiw(#DM>25k75>mqA9u+r( zLQ9gxODrTw!uf9rs4jdHK-?`x!k1_VluR>e?4%n^fEVC6x=zi(%vMO{Qhy&GfG{L2 z275k+R&b!Sn!g?`r+c;$6~U1Y5nrDlSsi17l>ZJW#3Dfq0WZId#HcB12XG8m0NTj8<42;r8))+G##j1ms7q%ms6aX zSLje)0-8O+)*SsCtqRDg<9}2GEztQ|pqdFdbvjS=7f#Uk=yHl%e+6&Qc|qr!ubA6L z`R=teKg@bPey@&kwazoT-h5q7{g|io6vL|HO$M5x=a%M<*X3sYN%LGhA@7A6XwOC2 zc%N>M%35@tCA$40wv4QXXOnLCTK&mT`I2ac))#zX_pROjoy`Y&4u87scX(cZweDB% zH)P*CP>Fk|wDgp;uD$Tr126A67jT z8XoUmzj6zI=nmWB?Wy3Q8*8s_Z^^!};(pw@@y!ojJNRP%%;4`6r6jyFbi-#yTAysb zVaxai|9*7n-L93-Jb&DK;^?n?fAT34J$kTaU+=!Ro_g!{ByZc>Yv?wIvd>QSz9$Hm(D$T@{w7Ob#1tFYx-&V zi5bN;7l)$X-o0+m9nb!J(=|Ph2HxED>~p&+e_Hj?!@Yg$PJjA-@U3<4kFD(Kxu@kH z-p-{@4UL}nnB~UsyuUFQ7rnN|eqr*F+>YGl#((Z;-gwURN!cjda@~iMT3)&J3uZ|o zO!K`{uT!g@_oY|leqz3TdM_;kYS8uD^&Tzso2>J+CmlL3>%2kle_7{e0nN~L=$e|Q z_d*Gfoz|T8ZGU?vL$5Z=Zi~@bLxu>0M$>URVB-R__0yt{XWjF5#gd!e_)$Cm-kjA` zVN!H34wt;(+LSV&DN^BO_q`Cinl@AC;`ji(9@VfB)iRALa8XahhZ$32ZGEk`)}u)i zNqT=vQ?;T9GcBG7rjwyH@k^KfAl&Q2N;*xI*+_&D^?y5aP`l6P@1)wh=rGgd8i{9I z3tdBr5ydq$GLmv-((6=GrdU>1Z`fM9tID(GXzb75 z4{b~BWtl%(E^d9)a&Fs-a?`9|o{(NYwS2d7#PZDZ4<8slcT4~Lr|VaGL7lo&P zI9BVwyLQom6~?=#+8^7teLVBYh9~a5=h$b5Uw=7MdDFYxRche#FW+kIdHOeO#mz$p zmPF%lzh+)yzWS}y*A8pr2-m>{xG)#zl3a?*aBI1Z-0j>Z?uXoFZX0(W_cQK6?jdeB z_ayfe_dIuidyzZL9prw?y~MrD{f;}v9p_%YVN@cg}FmbQU>{-1oTkT=xGe0>k_VP)h>@6aWAK2msx3n^Sc19Uob~dBN~Nz-Znm0z?dsWbJ=|;*^WIA>eW6fqvU#s%6dJAaT%p*a+2+PVz3x>@ z1HH`hrNVq)z0t0EM!i;VR|+jJU-Ifrv)-uH3-dH=wh9aNCZ7X&wXooS=`YmERU_D+ zuQf_uV_=0wB&$(qnjL~*skEVXa&vdCQVGx18eXAzqOVx-3RR=(d8KAYsZC(vRh#8n zmCqKMN@)0`cV@0!Ep7A~l|prX!_ZKe^r@6*jY^@}$}iMP<+-v~(jMTollfM=Uhyp7 zP~xx*o!4m88vc6!LgCDRte0nj2>eC7|D@*lY~tl`G9~tENOP`@CM)6(F^Cix}v&daKz_1IVqHtMkn$+y_5@d(~puYvyU$?0VKW zthtHwCRWW@9Yz)!%LwJY>gj&0RLaFd3m$0pDQz~dmMP8GL2P-?vXrgO7D6!J$&u!k z-f=g80T1HUs|23v4Es*Cy|%ZdL-k^&q43OEVqB|cBVrOfiTCKIn5q^>c zI>U`y)I`1$A`H%qQoIKq^I;3m!HHPeS}4JWT0V%QCPz|#C`U(pe)P(kUTbs7n=7;{ zt$eZd(w158MB#K9+*F(mfCc~;D)}O;nFSopP2IQ6$fh=oAi}NW>=ol3iB-b)3@0kZ z`18pc zVz;{ONv&A9CDB_$ zd&I1>=EpWeYt%LUSrj_kZ{u)J$n^7}#lR_Q*Cix{cXeW^7?)1)CmcAy>Fe+PZDrBeE9WqpnP1 zbhDUt1an1}2?x`T6nfJ5UzrP=A;IFpwZw5IXTr8ASd2#Jn5<(o9ycw)bYU^M7&h(k zc*r91&T!hC7P=#1mWZbW%S7X1n#l{{Tr!w{#prT4Dd>4MZ05uywojT&UJKhZ>3wXB zSe$cS7wWUxFupN8jHpyza?y68`t4Fiy&M|n!;gfb_Q}g znCu9fKdu^X?)yn+3Ywq6{*bP5Q}SD(oNa47D*0_k?VmM1Ai0gXokHW#;`XD0n;MTv zz7vxUUbji^95s1V<2Ohi$7CG42PMDbsLcm7exu~OFbT~0cFFGqrKRzkB)(UBb&3_zl{} zb%ox&2!Q{TJb^vi6hBuPy&KbiCWPaRaN8ZWNoSh9?UHdz?6bZYGY4mm>ydldId?!n z(Ob-9h+-}>1dI28-Jr&INS-`@6RZ2H-Sz0E3(T z$96Fdji;5cgBagJ1*_!HZe@hz51;~FGIjx-U2Jd>Uf3Orq^-zEJZq)W8#7`$C7daWy;!s)ra&+r&hc9b(=1^orb|mR$dC+T^1GlGF`d$f?}GLO+nthU z0o#5+d)JD3G=T{FLl^kV2$;Jie+YyJKzL8TjRerin~{T-h&+IQ4U>q>+f3Ue6EVW} zPv`BR6!Jr1dr?Hjuy7bw+ai*|>%(}x9sDIfqTZ-pk!C}ZKLSAyA$#xbuZyToB}1fK z;Q;q(!Ai=Jk19vH7LE^oRJma<+_0A+8Df#$@kpAE63LJGE zBiQ39k|p_L3UwEM7^1Rg2!zPwR5U9}*n7M#MvNqaD@l1Af`^mvaMGfrb}&HJBq?h` zS!7OZ+zK)H-6Ds$#7y!jJ!hn-C>n|ED1P>MHpJ8c)g_rGlJTsm4lNf>o+AH4Uu!u) z#8if0iMr9O{BcLNR; zGQU`vcoXpd9?U(Q)i@IOI0epL;7-qB$)AF|4&^kSN*njF{+XP}Ec6?b z4FI1GC;86(%(x%bAbA-8PXpiwdjLMXCcrNQ0FSc+%*YH1+Zan4C=UV|$cBsz1LV4`&Wn>>#4F0w zc&8nIRO7CxaUUhr6{TK<)I&eQ29gMav1PUhF5Qb4 zQdHql$}DOE#vL2}z@Y<1?Xci?k`*yk9KhgzA=kixg9;91CnY}(zE8rrhx+R|s;Mgr z0u}HT_25OS2aq$L1Sa#syk<_sH&_#{Wld!9o3@;Z*amvfDA-b}3ctj2{I0sj4@-Uq zqMn8Z52ua8$^<-9W2sE=oC==Bl#6G7t}cqIbAdvRODB1t3WeF(pfo+IO4B1KO-D3; zenjY*<;sZ)up~?c^UHP7d!jzlOL@3U`O0d_MQJgAA)v4m3 zfWQ?~&H=}Gg2Mf=qyaQ@@I_|Gcp?+A(#BEi8!MB>U@SA0aq+~$ROATx&7pLHzaaXx zZaTcKBCpee`QvWn#VGRX6zwWdUZ+5RK^sX?tXfH&%r^9XY^4Inp#Z~!E=kPAa|lx_ z6i`wZS4mx5L#i)xF^FF!=y<N`5Rpu&aKLxbJt~0hub;DtOWls=A9 zI<4_(pTA;yeihU6>oPsx!}ReLJlN8bsb{4Dm8(fF`f9U_k!GDZu7uz*zFn!0BFq{=DSB1E&&ynCAPFHV!k3 z7)gG~2SFF`WW>Xc&*8!C!b};9MO3U=1osPu7ddH^G+q*uKN5*2CV!&moFc7Y^Sl^fGK6arv_9d_f>Y6$8iiL_$(^_FipuW(*Say+e+e|E~k@D6o zecOweIOhA3N;TT<{35(Zpk&}u`vWszFaPo8)p?!COvVLO?kCC#i7l1!gNJrY{7=fi z|LFU!FyQXn`Mkj?;TI^dNiug#XeCILscp01XP*Gkh$P7}9?Qk+L!2$9+^ZS@hXFZs z>o-WV4f6-z!Lem@MBW=mADqmZ7e>A-fnCoeM0Quq=x@|{#T${tpZuDRpVIujg5CHz z!3^MY)m8WCKR(ssb8bC(tBQz(XC{zZGB~GL%m6s1B3le}WxsEfVWh0j62}`H`x~z4 zUL$Fh4TR8!B<&5Dt#rx%Y^_ef`Vl&`URyXUiq_}a@ z-5;*GW1r$lWM>ccL+MHvk5+LERbcgtha4;KKOJ2NzD1J|d>!6rmk-k8zmU3m!SuaC z)&Ts)w_38^i1bxPCmJ1+=W81o+qb7&#VOd{a5hZ6Bcs zTD&Fw1-G(&&~I1qXz~2ca*9YvUgf@54Oyldym2A_qzx3Q+x#Q zPjVwVcHDTg3`Sju;rIFx=k#dSZY%pdm&R8A^OJ1lE$ivKJ@~@FziC&8VEym>quUeM zeGw*=DJ^zO#O@ov)j&|WITfWYPk#Stumkk1Z}fI8QsZ62MOy!c z(n`o5mE@YovK2D7vI%X{8KgFepIWjhgz0GGJE}w3yn1d{LewQ%x2%u=7h4Ae25!|- z%f_+>zVuVsv8mE^cbUWp3y2EzRLj=#E>X68Ax)R{2~rw<7OvrrUF9pqq3$H3TRO6$ z5Gi+g6y!L!z-7WKr^wHG&`N6U1P?A1QK2H26wC7x>O@lKjH(0vjHw~+7JZ~kD&cQB zSSX^9S2jVxkkt5nzke3wJc_^vaad?(+&LESyf6Z#5Cl6z1tC}h3n5(Qu7FAVIXe6k zCJq4|Ueee<8q>%N>5Rai0K{E6CP~LtC4z`QrGlJQVFdG6a2a=q&`d1`Y}5IxCMuey$7g&!(qtlvhPcolB1oI%buZdM zY@tEf^FjO)^;lFhVwIFpE!1sX+I6xZ=CM}|md?RV_>n4rU{tk^YI8F-alIIc_3}0rO=-XLBJ~ z>Wu)9)pK-#b?H~5- zhecM3dwzC+^SOBAzb;gFBRfPaikCZtRx|w7Rr@Xh*(ut+)5J%6Pd8rvjcBW6<71W9x+OETVl8LH}a(P;RmBYbolb{ z>!QQ6*(y+2XF7oJ03TicJ2356FG$sFceJg{=I{Md%carH>hc?5Bh{`!wyXy4v1izO zc9`K*jCh;#4`}vx*o<$JxcmSgZolUnrjUuwlAIw^;d(~UCEl#F;tqw^Q}jk6VxkL^ zyi-1a;5cK#lNs-x_Hg>olu_4G%;K|vvY8o+7du7jn|Iag=eRfS?x--1=cDbPOalM z%NO<~Q8QbO*N=Yby+yGzfrHDxiTUvzbLL-wR`-;=7j}+dhwuLS)uhWT?KZ`}W=i`F zR;-}|?_o#e`#FEp+0%ort$%dRmo*X`ui+%cSzXN{q25p#JfC`uHmoJ zNv-i}-LI&te*YWSiT=PBLu1Ck&%4a3kSiM#fGF~@v3ai?5YURrhEt~>0!Up+vc?6l z*Dq65ySnfCzE-=zYp9pUQkXed6|Bxib;G;(uwN6nFW=;3QSfzFT-39OCTEUtsO$99 zpG_nWHJi9aw~#(v9!uD@zlwZ<46o)=_abZavfZCNja(ot9;}M+&caDaKH&PA_p?1V z+jP$Qc=arQKS%oDL`u0WwJeXwzU2dMZbQ|{YGk(_b149{xSdzazj{o$+do5-Fx1?c zr8}?7q0&Q!G~31E==fRtZExH1{Pk^*ANGfB1-gfPn+M7vIrP6z>xBZhwzs*t%rop< zuHp-QJb-_AY*ntFoh4R2s@g}(_FieA$giD4d#Ydxl_QHRbkJU z`BKF${jXNHUEk&S?DX%! zC#@TyKIb_9u{CD+Rw#+(mmM%9P3uczMAumU!bbbkjPF#I%lF+yXUaZZAGSV;$iV33 z5X(ht`ZIvoG!MX>3i<>L3 zH%2+9l%{9`Szhy=%ebY%Zv{dD5d z$ZYE6!-XaKlklg7;%zE(63*@DGXn2Erv1k|_OGq4Z=a$Psy!-L10ImPnrYwh*ckQw z$uTFRNeqZn&=xCUmf_O1$=yf8qm*NZGwGIEia{WW5ZbY0>=&RHSJza%@_^T$cjI$j z)9K93{8Z{IwttVhx|}Z&(`Sk*oqLFbCOQ#j@>8R*U}kBRLsY;~cPG(@kxDD9CQaZo zZxF{zJsp7An2D<0(LhMzRn$Gn;~bE zpNK?&VxACl(EuhUOzfaY8mO`%cG2MDUa*G(G|WDj1}GrX5Q;X~qz+hZz)}Omc7S{hmaPtKC#X8FpM4F;r4Hg{z^e|$bBi{eq?)9e?qj&jsqX(|f+W65f1oA(Xo;oAnUw@n5~-DB+2iSoLY5LZ#xjj*JR+^h zYvZGh!8B#n;+u=2xul zH2)9Q$i;}gVC%-{!1Vk7(mZPg=g(){|Ne7NRh$9K1)6NVp8=~u20#UoLnj6JqfUV> zB$5B2>Qx`Og(DyVLq(I?C}Eu=CzH(ogYsUE10=At;b>b zft@7sYR|-AD88(PZ0m5^|11GWxOkB!!Wn_hf>3OY1Zz}cC#tn7wgn)`4?lC*gXO8t6J9ddo zRB107;+CK$09syWcFpfG(m%Kf{M?JXK_y8Cob=QRcil5a=?^@OeW{>-N(@BABom3!Z*`Kh}uq-;|=Y!$)XRpvP5usNMrde>C>9X}+e?zoHKw{l1S1cmU zig85g0fO;iL)tFqEh7p;V4_bouzs2p?dzbpC2LEc9h~{KlmChCZTyLsU$*^TI%6|> zH0?~V=9Va0?c=bsxoToFM9ZM$aHDGB5H7;5r~!6Zbk0PoNi1rUcGq{S|D=XOZ=rKl z#GCiO2`HfB-auYELt{yn`96`1Q>9zaXz;vP185Iq%o*I>%}r}Z%VmbMnJTfXO=F{Q z($nDL_VtSJV%dT8K=A|OT4Ylm$^=pIL-!L29;pgz z72ScK!{=JmK)aV4v++Zve=*EZiE;xkqI%##^~idg{x}b?!dflt;UNU!x-1PX_|=QZ z0(7Hg@MEH&<`@^);Xd?4;OmTOcI6TS0HWS~Bz&t*nu^jR*tUI(X=a>+Fz*t5lsc1d zED>*w(6u?rL%HgA7z%@)IDuKyo>fNIoWThA|5$8D3<^)|Ky1%GE3-|YuS4$T#Iw%9 z0*h!4-2t;oN8XzG|5y~uI>9F{!KO&BfV(R?)wiyI`=8=}>T|UJ@C>kPHp8=gD*h98 zfY<9oTsry>9OPiGGpEe3QC=L5M|isq-^*5<@A28;s7jo!X4wD`RSBN-cIox^ewA_7 zZ7o%btl@7zUEk@hku2MY+25MlyUfuyX^mF!$6>=R*h^n6eS$+6MF4s)7&^fL%s(#{ z@7bGZaWV_K9d-+YD#vLP^-p(Q93g58K7|SIir!<}h(Rqn_3n;a{zZB*p5+E_=ljNw zBn22iTYV=x^VRCZKKqTu-PLvJosXgoxs7?3h=&vECbs9cNbuuo$3B@Xu9&q4B^<)YG+)>@OP(q z8n5;Hq5{fFF6En#m=0P~YD0Hcv)=Z!Ld{Mq=$qj8(a+^@^>0gbd)seW)6El}6O3wP z{5ytNDL)$H3BlH=fWXe`&E;iDoXgX z)3dT)rFq3}fc0?c=eVQ;OxyqF(PxzP9vhp5a6FZC`j`Jg9{42xhro}^T`Y#z(KgA< zg#6+aNKZuendH=zdZZPk1VFe8ofc&!02~x=2OM-qYX=Id*bBr6#dZlaoCd%n^z&xx zi}mtAQ3%R<=SJdsTn_a-G2uQjyA8Y_ODE9VB6%dlIJDkf$29Z8j{dH5TZ25h;(JAP zOtC|}SpReH^u@3k{r*M2+4pLIdsy*P1El44k0vmdLd_w2 z2$^!i;y+}lL#H?VNgjnt6!v`ye8p+24<6Oi`CPrKSGD<9-fK=rNz043>k>eGGED{V zepe)dxp)BSCzj{j#DN75z~`q%ee}*5C|~UAhoC+{FouZWOO)!G7ZJ@V=i0eaz-;h1 z_-Q2*v{T8+KE=940{C`|JYSND)aU(J%;C^OeGvF?1C<;meBTiar;2=sT^v$)1rq7^ z3B*Ui2CfhH|Eb|XH8SF7h-Enu zZkkI?%)Wg*H3)$f>>artV-PSuo*j&5<^CzzD&MTud2QWZ^UFRFr@SRQHgW|nh zWg+Vu=HMxvtP_dTPJupSd4Bi6@&jxQC3gb(JHBdY=c&w%crwOJzFKh+&V(!bzERT% zI&r@pM;bq0Z)ogc+{G=9FNFE9Z)Mra5H5GMDm*|j9j81!D)9{?7aCg1?jI(z4|}FLJT;xl_ZYg@52soq z0{1_Lj~o;sy@z~xo9$NHIpNJLj@&AAZ8o}mjokDc_YYl3{xHhmR~~ZRb?p{|4-;hj zmkc)4fa^)^Ts)q~BN&0W9i-RmPctw0nvH1+S?V)v3aS4(6(Xo84V z{K}BbM*ItD@R}sGLxR6CC6-*nm;`f36bTn;ENTKH6$wMax-pTaNJ;`4sSx!z!MOI3 zyfL3gtoI-GgxE3khU_cC&M{jh*@`iIM?Y`Tm^eT@AW_RPeJf9POxH3`)&kf@KDQ{z zwSbBh5Y26_o+0Nor>9at&m9(%M{-Wd9THP~SQd(|K#(l~V}bO%NY#`iS8C!+o-Jy& z*zSy} zX*M)D)wZ;L?;CNkB4Q`*lJzbpQQ-un^hj*78t<|Naa5XDB89FV*A}93^#E4IT+l ztN~+>D(;!17`v7uNFtU2Mucy4M~^^63b(PGIVvFpS@$1N6x>>!mW6nwXyx|v6+HqD zfx+p_S`1CrY|Z3b-M)9$;m~Qs^-8*5 z<+@&zf{O04sA~23&&OqN@6T^qx*Q#Pz4J` zLAl0445Q!r?D~QVYhrR=WHOH{xrh6RIV-q%2IRR6V1>hiz?5}jB`ZR1ec{KMnCv*K zOP3#C*7RCREOH1rhA%~$CzK2@QYc#G&6^!XmaIXHEnnQ&K9r_oZ_A8FK{A5+exB>7X54SnzI4k34;xRRw#a!kXSTo1+RTF%w?WaQNSIxd?lv z#IT_wZTje)vC$HMWrXy@T^PTaq5uNf-pGSL)72482bm?MI*RKY_8omCGoCXnmeTYcy@;Km&SrETZF(3*0# z3aP`~SwCbpO%#i0*@d>@DDAvVH@~7?u&-Tk9o@{4KVHAr!yd+FH_m}`npCiUdABu! zK_9TYurIc3F0^IAykY#5Y;g`+4+r%`K zERu3$Nyx{SeX9ll`K#b`a5n7j#!<+dmpG&>VGeQ+GLQSw<2%JBs|rwrQP6<)SCHRG z=9;p0NzZ7T099(WP6(~|iEXj)PhNFNbkHLQj^C~@tZ1kMIKO=Equ69Bz;wOaQ_Vll zBRlfVak*MAPzEY7wpcR5-N*UDe{j_%NGFaNvAE?DH4@iFlTdc@oJeB za@4GLnyGcPR(*4dOd+h&Je8|y6V}9<6IuV^c!g(>WJo-_Hbh&Ls}Y*V+uQZs{WVEAHnVlH zXr3K&u5bd3Te#pKfbpG?-j$WplJ;A|h@G0${*~x(o$9hRz=uMGJs)CGsZ0lsOjd$;_sw;cDS9OQkG|+pmm6mQqhB2cd+A-I zyaAlHr68C-J1}NlLs2)>5|mn|QK~_rj^d9&5jYh9sqYK<1Xd%`g$B~l$>(HT&IRdQ z3B#+NOiiKoK^;t2>yl;0oFt=^Xp9wGq=KDkvH;vZnJnd~*dZ?IuSMECWF-s;Z+{XQ zcUYuh&UyEA@gt!X)ss*HkYoozg%0|(+2A7MS!4->-xOw-_Pl9tMTU{0rF&MfCrCH3#o!@!vG1v7gF zuWrpHEo@L^$RV3dhe~6RZ+X-cgk&E!=0arvMO@?rbXeJAI)=MO5pzrMS;IlVrE@C% zLqQX+vh7gCB~eDTFWAa>4jet(Ua*+Ep@{=P1;t6ZP#UAK5DQOsjpM_3Ii=Tvj3TuwK)ithx06YO3r2 zEX9pMDGep9K&i}LPsj!>-HrgR{OMx2xYh9FCbu#hP%Mk{e*A;fJi;0xu~je)AiNmY zbEzVW(opcO>P3lZCwtjY=}d!inB|$ejo`v?y57sC4O!aa&Qwf)@MfMo+JB(aJd|d7 z)I#CwIj<)L0u7=OXe^$-4Is5KSbsDCFpcpOc+ej^3CMgJ)Vhx+EJVTuTXxJ*g;;u` zmT8$}Q}b_Rs-khr)Qq`CY#Qywa$BOx@Qz~BA*IjIB|TwXnuX>uwzMtej){b5#SVqF zkk>hM39$nZ#SP4njBTQ|x+J!WVp`?ZaA#exPVP0=aGaej&LoGn_xcnycT+S#Gk+it zZO`=n5MkEY0=oIO<`xN@Wh_6e_{cOejG%^jU@#)B0T3VDg_@+M*}LSH5$!K44Xj#Q z-$k$_r-$^P`n1k{^98&+(ATodWW8qjBA+vI)zT#!&O_&b>Eb6UK~5{a(NNog&q)3U zVn~8CpB#i4%FAWJH-pB7T3ZzWdl`sSXNO=B4s{e!ZiJyqRi})U~GhY)A6yyEkHx+mA0C#2xM}uypB~)SJZM}F;n0Rm$`Ax@_Q zzj=LIq#K7`ui!>4;DSE>=3w;BeqU;1dWKHGP?=EiHE5X!%Ii^ZcAK#;#W$A5V8t*i z%WFN-zfQH#Nu;CJPe?5YtnZT1JX%6rXCpR;XAb3BMZC^MJWLTlWWEE(71uw(K`4Df zecY7de#_~M`Uy&MGte=@I(W7UmB}B%2kwla;DwDhx&zjMWA2Te{YMRW8-$f9`bJy{ zq#Nh#h&4k58@L>pdOjWWL`u@0B0l(J-jx7ia zkIp_olxhpg418o?`te_h_aBZmvb}7}9ceYeck(WqHfI(iK7@MygW(VUp%35qozv^| z&3U$7!R}mG%nhb17=Hu1Gcyo2F@+0+GjDD8b^G4oU4j@uA2G}ih&$U+c`zS8xD^gk zHyH7EMy7uUrkX>OFkj5(IOUF<`)Lpw2guF<__IbFsup%N$~jYt4f145p~mWc-3Oue zSKyR>Q57Q)POIP57?)ce0a#`UvwK9Sf^LwI0%;O6Dgm@8l7|m@Z6#%L*677DnYTbK zOIOHdW^4l>FNh^_lSu*HX~yQt4eFFuSW|DH{4@(ZDY&p;>eOU>RfWvwIcPX&| zKTUcpRcAj^mN~`9;u*LmI5`wCRM(BWG<_4~H$&Q;z8-pS47)wB$&95raC7jE8f^~S zoxYc>sSUf`cMrH^IC!=9j`-{fyFGN*qdaj3>J7Y%any%|C6GD7{HZ9p=xsA*s=)I@v{~Ti6@;jZr=$gtl9X{y0 zUJTGX-W>LBYr380BK&*`)UN$V9Uk6xoA*91jEoXgN-xX(95mn3`@V@ds&4(<1$Mmt zo*%vL{9dNV_j*)*2EN_#*$J#RJZ#STer^MD;d>rG3H0^c_O)47de*-e%w}`Fi%#cf zdf)8(k5_%s@hjgQzV6Lx=Ib6uV`*)>Un4R2XRKDqQS?8b+F20vwY?AAexBr4va>Ct zy?;hx*ml<*$5TLPC`@~htiQenj(UBt`9CHW;eI0~_uqzk3D5rxL-cm=5aYi+N32Pg_+tQuZ_;sh7 zs|C*wvgGtIcVZR>-VKvfc|);Uk{;L788aU*Jsr6qqF8Of(W+s z-yv#MPJYkoQ-2zt``yN-zM~kw73Tnj!$AqRjrfM9#54TrV(?rqZQ_OoV4qT`)1qDS zt%?r6zJh0)N!a3czMi%OGIb2Xi2=3U|2~pis1I|_AwFai%vv5YWwOO2>oQLUmLD|E zBa*S}>$D`1^=WyJu}(<0mAd;lb*rgqsQ)rbrS_AQlklgcZC)m}W7g9~IVZphmemV? zPe=wy;kyX)3T$G%=^ABUltNS8No!-D06uzk(~p`O@9zv{mATT{hb()Iy4{<>t}%~f zo4$qswwcGrfH3F&@Lay~Y}c-?$Iem_%*8pyM9c2ynYFOu4&ZtDpDNU+yqEQ*usONu z;mH487Q_tC8 z*=;?8z=-PoUA}vKVW8e|zx=e5*YhxN9=?qI@qA|ypG}UP{`?YI?E5Q=v$I3O$G-Y| zpj;|<^7Hvdv-`EJ@B99UKu_0s+R(Lv_wlSwP}}qUoErgilkM)s7!NS|JZ)h7PDO@x z%hjNRILhl1(W73Sq&Z6d#}%b_oA7z?^hoT|#7}aY=senf(DTT}P5$eslN0wk32`j^ zfb?GWRrD3~h4-%c-uVFYF!^BhkUK7rpq~n${Z;T)_Lcq#_m=x<|5AS-dq;U!eit~J zJ^oFo9secymHG+&z~X;S_)`6z`k44we|EaCy2MywsLEBX9oL^2Jvw{{d?5MFMTGkQ zp$@zTid4uyxN#YKs^Ka4|5db50MgDl%PFewDb<+~6IAU)^SD0>z32(x>>H1{CUkM!4_Khl_qv3r}I&qo3|Y)py2vnZ1&4P z=V%&HEmY35TeXs<)^D*~P%O6Xl=JWrSZ>s)S+-(^vz1=H0&{E`xvzvHJFANZxtH8o zjl8|RqqY3J)w6Cn?WCo}C|`isZ6y|TS7X0@YnfAcbpAzd9ZS^2C~ zt?Rl)Ssw8BzCk!6%d`BVZJ|P=@EWbouu-eFtzJRz2D_3+Zk-BajGaTu2=khbhvi!8 z%(q(6uj$y-5j)&0>E$XQPpx3Mz8v^q&Avb-G zyKL2*tieGQeD?OD5M$)?2@t=wI#HRxh=q&rVDrdX&_wTh#ce~b!3q)%LHq`sO}+d;p@;M`TKYKBZRDgj{i)?_=JLX%g=xlU25 zL8o~Rxm1;|3>X6eNbxJv4vsD8ur?VAcPrXw4zoO4iTOj3jkWP2iPWXltdcaAU{;#d2vzF)v0)mS;f_(tV)(?+nhXh}$n@Hl5NI)1rel ziPc{jnGhE1n>%RyKPw(l6Mw95=FUEhx;1#b;1wp<2O4HvvZ2nO9_l=7 zlo=}le78%AOdxdw-TszPM6Msw(Q4{oH`z8z6V05+(MsynWR=@=kHd{Dazwbd4Xtyu zo=%iebjX*<<$1_7g{+~5K1cqE}D<9xc$*=%(KAM})ivLAy96>6Fc=Wj~B03pFcU6u~XKdQLm;(=12WtgdJM z*pzF&G~4Z@=Q?QNEYP&!YbDD5?#PgLA9J%958GmGYL8ZmJ7bTI4fd)WaoExjt8{?843xw=oVUwkZqSsA zyxcOB!>QD9UppQ<7pP?$Kn5XJN(SZNHfn4zMR^3NDw5P^ZWB63I>iFv3Wu>$%X%C~ zLTVDWc#*Nh(Zz_hmCmrDCGOmyR(}Ee8>N^%^DK4S3ROQPL>lX@1!6;Ktn~GQGz5ky zRc2C2>2~69QzvJNB5=}2a3}~VbQ)?$8f3%`ro5N(Vsu0kX$g03u6Sn3O*1_*R);p(RV`5;fR(#zQCol_lMr^$IGVBxO8~Zuka<2s?nvv1t@- zdF6NXm&lS9D}^cklIf7^x3tV9c!@$I?*Ll1oRPzXUMo=u$M|R2UOSl%d*D};?dg}@ zmx(?-Fr`H=o6$?gQDgJJP+4+u4svpt5&oO$%_&Ts1@`0MmUIhkrHz%L_bWd}w9V5$ za-D*d1pvXYsU*h901x6pZ+t*3wg94zvO9jIR3e;LGn?n1;#5ARxkMA%t4 z;Yc16OXgYx4Rn`&#_NbtOrlOp2m1wKf$1W^^lP;~`kBzV$dM)EC&ISc(x`#t_nG2Z zMaii~SPEEg9^o#U_;dJXMpOEwWBqSCNqEAPwQu@3lmC5XeanI!?heVtk1W}?t6 znJW1Nh{vR0YSb_9CuJ^Zwr}3jOK+m?_ zUm<0~hos3D(5|@V8mPCpE1DXw`XbqJwB9&t0e#ATzB96E?8#W|NW zD%srKu(sQ#_vyXIa=))H^tVrD3t(xR!PC}(r=dB4G}FJveT=EbAmHejt09_<-E!@~ zWOeTlYc2@Nz7Ow+>GVmJsR7hk9&KELBZ!rBKIBh`9QdPy$i zJqF!|L0UVnUF2ypxwUZSz>HQIub|Su+ru|6Ifu^Rwza{;5V|xOBX8ZYw zV`kk@6ofm*AJn6YB_P#p!E~^oFk)8|N(LbIPN+)kA7A&U!5^Uhjzg18p&_?IAY1wL zKrp7kc%jUe>3AgMqUGLhd2{8&mMBwIAb0Ly3g32{tq(6f23$V ze0u`P_DG-y=+Hy(&_l8AOLgtj7tO3?DxOLk&}XIDZUilp!^#DW(ifIQnr z(QmZ}P;23Td3JrNQnv8;igi-1g`aOBteUG1x-C|fMer^vs8uNJ%Jc}>xSiItCouI! z|A984@OywV`|F%R6U*r+`5xoft(DHH<|JJcDGOp7gJL zo!QzcN?c}^N*f+ZqLGd+J%!3NfF!@S)5eQr|-_$$;deV^ojUCY< zb@n!71)}crhF|&@A=u2@7eNd^D0Dr|CX)0j-#FfU2j;(47&gh|NJ(@U9|Tgn*LR;L zNbJ`r)2B@`td{^-H_ERV4bbCbNIdce{(65%gZ0f=Uvj9!7;wJu*;{ew)K+kCa)2E_ zfY4f11zjRqh#|jw_Y`5E?~w8Ck4zqR=w7;}rhhC*_g@1iDJ|yUkm5h|Cjh_M(Rs3Y zK;SMV3x}jZ*?xGhc^=C<$jeW>eJULSId#AQWLY`Z0m8WLSW;>DECF~B$NcmjM`EI2 zA59`+DX2H7E}oJUIAgzpyti+_0$?abmRR}R;K1$UOVQm4Sdj->@^Xc)>b0-rQK#V1Ahf`i?(!bvp3;@dVqpg?)K0alhp51_r;0Nopk z8DE$p8WVjG_XquUuhqgjE6G!#EMI>(~*)P`tVIt@#+ZAV* z{s>ii4bRCMh*d!^OHO_6JAF*3<4XMMd6_8!_wzwjQ*7BnKs}2& zn^uhW>^p_ayZCPpLj37(-CNs~0(e*qNP(u06wYEPs;>CFRqSVt{AL^4SYsf^;4_GzyP z3DRuV)DWI*JC{cW326Lc*n@Vt&%rG+N{e$Timqpm#)2_?I}VjSwa&Yi>%$m$QOwN^ zDJ+fmjvXdOia!NM&lOC%BKme1(n%Q~1&B_UhGn!_bbDjKT%1Yf<_2dt^;IGk+7TqB zIpslZ+?3{9aR4(1LgLLw5;8Y@0j70f)->;5nv_29!pDCs zjss*SP8G5nItB;e(|Py-_?fEI(vF@$ntp7J`~aZI+|j=#?G(o#ricNL;`2!lT)DlF z>0o0jCc2(bE2e=%zEE@&1|9>afS@stEQV4w)?dCjPpqhaH0xRvl8d1*5A9m2F7%*A z{2=Az;eE6-z)m1jNjEZnY}qiCW+#SXXJ$hf={e`%DNsu$g{}0v=sH5r1eF`A9)h}A zF(EiMKLC!rCxUJIW^m!O_U|N5z@{Fz+p$nq3SAig`6Gup8fp__?kPmArI0}B_3Esp z-I=_F-Gy0`;&)TZ%I1c4N2NW7DQJb^M5Y2KbAi_wK#*ZfFt;}tQH5;IP~)!q^<|>o zH8lZ7p}|f>-!B2oR50R+RyyY(CZmvjmVU|@dHMZ>w{kG)s02~rBP%}ZSl*i zzv6Mf;<3L%V4nKUc>Yh@?&x|wrQ{=j0USCnS<`nF!hcj>)~P@QpcQ(ss@<4nA8`i5 zHpPjjfPfmI32)RYZz`R4rMiXDGay7y5div*01V_Zq)%xkC(-{CYviKd#|BK4|j!3Pi$Nxz!AhE;`5T4ipUDLaN7aj8kO&|6(1bg3qB;!6l zw&SULWN_!g+#1sRcKL5$Df^?+GImyAbPb;Jsww-)w~VE0tI<0~1qWwA|E~x9qduH+ z-@-0vpnl;jKGOX=1`T)DYCQ>BB8Rsx6uK`o%x=`WTGyg{NkFXMWcJUk^c7bOWf#RH zV0n{L-Hz(3T5eLDK*(;9scb>;4Xqt{%aM`}^hKT1IWS)M$PHRpU$}X;7wWl(X7<4? z?=xV4AxzIKHmIBX>5Zfo=oJ`{-fbsKNaf>eo!z@nj2?4m~H z8W)leUZo-5#3;OLm|r#JNO?tkRIs}{;31dhCX#1LM{^Sx7Mg9p(3P#ZsX(RH8^_ndoa#ju+h}7>x*pjFWM8r-EeILvQLT#GGA-DiyDG^h&mwD|&Vo#A8_aGZQKbkr z<_RO@C>z6$le9f5m6A54>tQU20&OHp2K2Y4c|MJ}wruvva7+p@rQb8%)vcqLJweWL z+{`!#aWu7-T62~GzOABFML;y#V6=@8TZPbvjC-y!9<{w1+vFzUqX%UJ^xC*QdFSf$ zPqGP>lJ$9|4lS)~S`tG>6a{bTjo$H-oK@p`bg9%fY%fM^6?8^$Wa^6%Tbw-YJ{5=o zM-g#4)xGX@*FI~tOrV2{y<&#O0(we>+c^g{Oqw|=M!nmm8UPQQl zw`Q#Zh$a!M_%p#s_b}vY;luqdInJdB`><^LZfX_6edMm5!Jh*~Uq-u=&oJ>RA4Ov` zedF5FL*jObG%ns|9Qp16`ZL0sbdWq zXf#*oQPq3^GS!@`?Hz_ZFRqsLHz8Q9Jwk@Zy0!$`i%}I(gw5vFuuUPfs>VoMFRTk$ z2Ag@M(*SW!5v*K`k%EQU-Mf>} zJn6eh7K-u;2j*I!>9jxyR6^@A&Co|J9x?os;SmC`&2qc_XV*_wT{|1rg05X=ex{fC zCMgRcV7HbMYNPUfo5D^l#vZGMT$@9`B+)FHjKM;>{wy{y{L>Mu+3C}_-~j%ySa?}8 zR`g@>Egf1t4sAQjpdsc&$vWDCq-Eo$=%g-3-uIq=6sn+h3UO;%CxWVQ|7-Y(KO zhb^LA!r8m?J3>9*$Tt=G26yoo0L2`T?pI5ESVurDdC4@j5yd@(THW8M%{3B=4_N zo@3`aVdg|K%Lnexz3KElrBlMB|JWpn%E;dv!THASBPcksx|fff2*dqI1Uj)jzo#un zpHx~p>euwwzyd-V0vtYZO_Iq|88Cm4k7;Cm)T}P*O5j`#%vPD;RetFj^M3%3tS|i7 zxxv`*!&4zIJ3N%X^kL^HVowzVIzW*a>oO!PofbQ-J9m z2D3C@{$u>IsnWqY&G0cnj+Au* zgWH?Nw+>ggUhd#oEmJ@&9~Ypc*5Cz0%bVGU>hlLAa<^c2q9?WK&ftS?%9m%if_XYb~tE9C1 zvT9#>{3%so2;IltntEj!=+-Y*LLZ6GRAfPMc&*L;y0HX5TkSc%u@``c-&x}Nry(`e zf*9*tL_tU{kt+Yr(sOGIMc`BtetY{T3v2Q2WA3i|t~-AmLZAAd5m zm;HHVq$4xBnPPge#N}*Dm0r`W^z&;tru%=mI;Zxq z!mVq^wr$%+V>@Zg#^8FSt@q0#zrVi%Q7 zm(y;V=1B^MCWOI8vf6Kqmis%4JbTJ?tOtPpb;PtWcGj6rH z*|^!u%B~wDcp;&sxo<+`4|@cW;erf$u% zbB`5{jf71bs}&1w5!)c-I8OW!pPxxwjUFTX8Q&x1y;(L|(t_I|BpjMKo3T4L>G`#e zJ0~n!JIzc4{H-e(US#gQ=Hv3K#G4IKA zZzVh<<-5-oQ#J1;B~7bnK4wz$3G*KLT3355%*=Y7_|YNHoUrvR04O;aGCpCSqc5$Q zQhyMxez>^8mqwjsZ#@*cb9u0Chp5ipoN>8yChtRWKk@X3N}(G}&@yHlC?Qv}y8L1f**aPS^En#YTDZ*?qPR@Z`oI- zoolBKvlQmSIA&x`xFL6R{QLngMeW=}DeNCWpEX8Pc^@WebzX0ZqL9~BEd8wWEj$d!2FgXHTv+wDDU zbOt6q@lh~SvG07iz5=3-0K#7%A`^6g{I`XK;NilBgIB{!TdrU+Pwn;B-7Sg`okla~ zE_IPWC0muo_dQ5{U5+B+f(^L0XB(4Kmt$B+cV z@`+%3666I?7t*^z<4)foc!~ndr-;k}!ViJH^T@A5-*6y;jcFhTJq6@bwhBma|85`=&|V#EzNSq5Ae!YU5&w!@_F!*L9`wL=0PznHdz4fll> zP@#*c<4Opf$e<2H<;BV3QIQve|Dq@zNaRua4~xDg_?HOdeuGNHmLb8F3`<5eMes_E zAuluq%M>q5kY>vrPV!9pmNYJ(Bx|1R%9cJ&?vMaU5!|hSmB`ST!9ZFy!KW%aDa~6+ zv2sXKNgh6~;v7RjO)afU&MTHR&TT5VA$}*r<&}Tf5B?X?KV0}%z9W9^VEjCc#V>|; z5Hn>sT@qrr0u=Kh9vpCTBaE03&3^FCfgfK=b)WeEiy%FWeHV5?1Oef}{BOSvXdtP_nyS3ZJt zXjOTJ+5%9PByyPvo}8$uRdptO#ULRjWb^7qijfkn3@y``N>{EX6yJg3q>1Cuv~J-d z6R1)KGV8lvII$E54L5E!5yJH(4mne!=(s)t0J`F^NFpALMI&6KIbH+>TM}#4A%$9r zaH%OTOd{kvMUuHKS-QN60fTsBr76@R%-j$LQ8W!34@VOJ?3jEB6fTL)KTemkd{VI! ztr~>(V6b*wvX}U#FiQFlJ^xTF^2F$I0TfUN)|}vZ6tH#`nKLD`gN+ZKnvz8w9h`IQu*M?_ zLUtYwbZu7#^RTR-{Fu;^EQQeUln_#0>nN&{h;9-p%93h~G_nQKSkR@R+bu6J=d$vV1=Z_oZ_+QXs3hewJwHT*x0rZ zJmFKcKHmBY(>Vus_N`q`^2+KlD)Yk1gop-{v6Y|ki6ECM1KAl2lLOC_b$O@)h!7JcmLgWE zb7gx7iL!<28W~tn^I{Ih08vTYVJHFr8UQhE^w*K-PW16hSaL<8DB<;%l%T9{Oetoz zI)dyk6f$T|5ebpl=?#9s#7qqmDUFxR!DI_M%qgH}ceaJGH@}kZrJ@RSbK+>MtRR@K z635%95meU67JKLt7b0N;?8vS$>;iV7FX*RxVQKWqyD~OFC{QH&t>7c(c`!AsH@}hV z!fwh+TDmzRErK<#Pb+k6z>PLmbM`|HgGBuNX9SEGR?foS`qn(mAdjvdC%}v{PYUX6 zV2x$oZpC!Ua#MnvhUuH&aht4Yq{$bghy$9gX8W77I_C7y4ha($FyB`t*M<5v2?8T_ zt015Y6{|hU$55r6C+SN+bZg%l(^jprz$UJLR+uQ}DuP;-%av~F1Rix{P8`(RzHJNp zqq4O_{g6X#97>DiZ_0=T3}Lf6zAcvSJ7RF4l{xl8g}4OM4Adt_y}f1v_YLr44j%`P zk<0};_zYdW8O&q@*s-Opj9@hkNi_!r%`@BVFI25R3y?5NAV5H-3nxoDfvaHd&=dvd z1LM#^use60uaK3fDk%34l$5K^DVXEdQFt2KZZGC!LABd7)fkdQ(KzIC883{rJ%zEw zm6fnD9<$a|KQK=R6XJ(-Obdz#fjlLGX(B4K%6osgY+Y8`_!T#1N?sa4JJ>J%37v21}{%F;u!y#MNafao%xb+ZIB z2jIR#6a<*XUeX;ybm28;M|_vKFk0S+d#lYUTA<@TWgr6;an`CSdMrs{0rgLkYl%81 z)qxjxv01-*->g(iD$qUe47@A=PBn6K>vhwyE9t$tTk|0X=S-G*z6QE zMaFho*yei#)5g#{xXnq zPbfoCri@*!vP8GsESUc1R_z6y>~@|nPt_I&)A^^r#0!Aza<8|6z{1j8undmU`L+%^ zSO(Ra+3?yQSQYAo({gJYdcfe+grBL5hos8Gszm``yFy^Z%}TP9B0Obu$UmS4FaM>Aw*!(4OVSAvvfkgy^8IFxUngT@ zs4$BFK=LysL`QH!KzC(9NF1c$%Q?)L8zLdER`4W^NdwuE1#9bNc61ZEF<&P@@uXKT zuL(qCW7(#llO}Z_1$4OpYD{lrsP&m)AAW-NUlsTSp?K?Y7jffOdZ!}%x$uIn5bN#- z#_&0Bzl`}kPn$F5ox=jFl1YCu{p|!09dl6CK5#J7jC6|0?eSr7kp^ z1e~=FeY4HcxTp*KlIXxssqh*0AU6=8b2m%fIn0k?oZ#3#V+OqdBcmfnK{N%U%NoN6 zT=A=?utEMYoF95pU|(*pI)l&;S|Ntz_mAHYA$^l)9U!ck`hj33>UFNU-xe;& zSU04()LwS9^@jQ+h6V|5tzg-CVE)j+e(;<0bp?Ll^tYN$|J>Q+cth%714C8zMMHk& z(md!h+{GiwowUEK%_pV@!evt)=XW)o4pCRv{t)(CZeHd7`KfJZz2_Ew=XdTO9V+p4 z6K$hSC{rL#8JE3M@zze`!doDH>*QY_s*Ar@#HvWw-rcS2D>^=b^4IdA}s{|RZO3~LO{r$Vno_iaZuWegk#(EWFbvo@g zNp_u98jiMyEV$sP+lcs9io4z2{;t3Simo3gpO_AjquEcmihuHlcM`|WM~laRQQy*? zt-Jf{U5_WJu;Z`1im#_2WJw3R`>Ony?Y&3GYqdVkZFjE`d}#Y!_a~sRcX)u`<#QIl z&u>qs-11yx_I%Ce&t%e^ySwROXFPEKr~FN^ui5KoqrG$8*<2(x-qq*GLz%}ep>=zX z%P5iI!|HnJLgC(aHlNq+joe$_%f#wHcplE)Ml5AsAj zU@CJ$w-lc5=RNUsQVtvz`)%#Md+sT%FyH6*@!{+V`j*>RR~Nr;&i}n&_WO!XH~f2c zWP^B3*nV?WhrP>kF6doQ+jP3ws5_T$=xz2}7n*O+hsUv#!pUiFfc_*(Z?5smt}oBE zo28e0-Dhez7@K+wuTRGq-*(gWWkEAf;G>xOi{mry<4bZA=@59T?XrE#x9RykP3UHO zw5pymy@QZ|XxS#j+~rE<``qotkTYPPi+skXlRv`bR|B(Lc&~7O+~8=g`_N)vfXLUU z+D6WG$e>dXWb$5qwu_n;gk|CvB4$y$t?DKO6_r7_d}F_K^` zcVA^!SNrvAN*7o~LI>YwMwF2JU71sqIZ|=(+_$t4gEb6<LEzOuHChE*Y{Km;xre zHnb@h0V61Y5Wa}z1=8GcaXV9-BN#yWwC=`!l8vi#c}_Tzl`*_CyDc* zZU9#Vvn2SfRVbq^J(>QE7K#u^gDTU)Hs>$>ms}_deIf{OM}e=W1)1h1G5B^d`^v*+mRtsCS4(Ua@h)bAl^)g#rqrN~%8J<)!B5CTHG6mGw~Dh#vE+r9zJe<%xZJ-{O6TZrZu z+^^zXLj|dlPSqle_-UEc?v%S6QHow=i$aa}{a8Wt*fWcOv{k?5->&4;SS9RAX3@op z{2~Fw@}u+y1tt6%xt05Z3*wU1YNU*wDn;p?dXwgoT*15CVPe+ zCfQ`L=&Ly97J;%zu28TxuawWa2m!BEY11ij<$J@Y&LFlOxBZzg$f8$rew zu|mCAWBkzTr&h^k3tON$m~SKd0XJwD6-yy$u3`AQBp9!%g(izDVbQe2%(SncKGGiX zRtN6otypWJJ?5z!;pb0lTHee%8%CmS1A3El{h{j}6&F5X%=;!=1C^-js% z3&in)R%P2VV;M;jj*($*qz)jZbk|XagY)r*9&8*%R-WP&*{Z8Qu~gkNMSz2l0ew z`9maIEeSev$s&7;hdr%h8A}JYo1v^+jXXK7!-bx)RrE7qI}WXiRJrw{GzkWdT7CN4=PJlb-g!BVj+Y#D7-rbU>Zb?9X0Aa&iqXUmUY@-ZC8r; zuYM|CPcJ-Ka6tIJh*koOv|5E)7tZ+%$?beAnXgAXi||T8xmYz=T`wIesLh50gZm%gx$v3lt4?8)JhOApTld zRefKx37;Q)F2=Y2oIGDcEyS)puTKh8jsAB29xdI>IplxN(!zR7@y*|ik%ww+hTP^z zlXc2?az&crBpkHh*&PV;gzgyZUl)F4_xgXA>2-9>f{OTU`jf*(U63DUDN~8SU}?#S z2-q-F2v~x5L{*5MMcWG8`-4m6t!po5&%%wOwO;^QEH*^Ow`8mltyuFwc~Pv^X|6dn z>}1JObrB;UkFbOjUOcoIjZ{yQ+;1_>qI-`yHRCX=q(M(1tWmk{HP>(-r#}mg0DU*& zG{^EN@a^2IzarbJpKXvZABj|eI9;XH7obZqYFBuSGtaR5g8wb{_ye$XcC1}`+2a(l z>OblVhpP__?D#RpZ0F#mHu5fd&{5vuL+mY3Gi;JRo8wh{v`YE1auh;MLA{IL z%#_EJ`}&rQY>40fL*o73FJ2(o$M~av342DEh=H(Wu73LZ;LHE`=x<9gva5uT0idnC z>-E-~J|6n_LfG&2eY&MC&cXA~E%GYy*Jg)w$NlL3_Il#>?7veHsZF)=IHGKiugCG{ zeD8yrQo~Pkr=4H`{rUl(c)Q#C&BB0xs@B)?{M~-2Na|&1S}LD&pMO-guhUsfKAP}= zu0i(_b1lMV1o1$UmDwIk!ztRcipDdWhr%A6J2KZ~?Tfwb3+#WV+Vw~#uEoEp<_r7Z zsYa~zA85sQJ6nPg+`OKR`>VX`%iEcale!dzONzKyzwDesq`>-CC&h%49;&l&(S7GO z{y6U4t)9zpr`JL%ik~R7HId`-60jj$k>4oDBHZ)$MXGzBzEbRf-#twpCpwjw?JCauP*pXt39$Tej3s4-2>h8GbI;7H{dFn6pEv`SCg zhXG^lzxv|;obnQpztl~6tr71`6^N~@q_KwME(L<3 zNUAKM2uG}V!7_OaKSo(-e=reW#!-A#I&Lk)4C_&5L{j{aK5|EX@x+O@H~163dk{Yv z{CV7-q$%ZHP&6N{zoMT=f#WK(-B#e~M3CXSUpTT*?ZU_j>z*yFP ziapjKYC`O1k)L!=31^99p>9Q>Qgv-K;Tu;QDP^N>MWW<0(o59X7DQ0%#v8D`5N8<2 zwwG@n(n3}cd%OPWtrq0$g(&a3xc@-4`9tuZ|Ik*gt6_4e>hjy!|O8Gj`PVPbp5YcsHr(jbI$2&pZO5-^k36e?Kakw$;Xr?en0LLN~5i>3&} zt#IaD)pAX3Sj;e}D3A>8E?X2|twfYxVWG3%9^S=O*)=Td(!+Vkjq5janHJhz7fq+w zEL+qOJcnk;V|~lav@nh?LSJ;)`#OBV-t)PilYO6@ z>+q_5oV=}}&hK_O`Se&7V!vIFWwgj;q%Q4=U42czt!-N(pVRZbSW17&rT=i)+0jH^ zOHS4V-nGp4p2N~)-hi|n4e#;Z_LCXRr7!Jwz1KJFy_cOl!+~_Ahn!s_8{I+e#@Dnk zO)eMS>NckK=*xBw38+E)j;+?G!%ejE|H#K?mb z<2S|BvfvBF2SWY|p9e*o9H@_l)nN;7*uwF$ZXC{xcJFRTd_f^>W3 zf3x4i0|-#3RY1bbSKOj|utDB-c6nDqu8`~B?W{0ix`=!w0e_Oa++1X?sfP6qb_@SK z$9oN5RUd!5;B^*u&d)lLix#z!a$(O?>h#7o&e7|ut^4tQ2k%B`1NJX};I_ae3>=6B z-pAE$<)GW#VYqWL()T{M%6=cN{EY^9xVXK}%1d{#0iySclbbp7Vx6~eWQ4;fN z;TDkT0)o$BA*IdBq;9f}%am?%a-~PA`OD0-s^4{JYm#(ITkF_aK|YcH?^J@$R)gA- zBQ$H9!9RM>6C2H%d{YBT&ukyb`A^3?~8aSbL?yy#M*d zQrkF6eIZLpsH?=`>Mli^f_xRS72s;e=Q@|k`!Xj-;Fl)o8(wKQ)VmNg;%shtn*P$% zcT5Z`%qdKKglv2Hx|r*E)-XSmzw3W5vDU4!x)S#Xnl4`6W#?A)@;z>T-~mOZ+v;N} zFuWQY8K|XWSK{&i?)g?@hD^h(r6l0<(6Jlc=BfyI?{P0(ZFtjB>%G40%6{3U#?I9g zIncKX`rgccd#d{L)&5my`0~2;u;7%yyp%H97{7u_8~tG~&uG2*}6$Yw)KPrVUx&GV)oWGx#$;rgx?V zr}tQcr+cQsr-P@(riEGJ*}jGaW(20*qj)FY>F?oO!n{&>$GRuFXL2lrOg@8Ol3t=- z!0#=Nb&vTIF|1gnIHIu{z7de8MF#O`=a4C45*{Els8(ZM4D%K-a7D=tV>xBE>mfwY z3yo-)D91$0I90VvU1B?619ZEjpRu0tp81~QwqH)P5M%%U{ch$2$sI2&2*~@tjuY=c zI(96;*^J4=%-Akh)5Z~h1#@>LwWcR(Rom*w>FtS zgRYHkgF&_F7z!Ij;C#v&&usCIC>}ROf}#=2wJH?MpBrhN3j8pn>2ITqVq1l-aAIsj z#i4m!I{a`i3%DFE=GS@uqWsm%)xyfcPd7n84mV5~{mRyGD{pIlk_Bs+C1$O*(ocnP zF@IHEN&s_ifG#tp%p}cn6-{o-~toJrQ~l`jVV5;6+P1@#PY?C@o(M~m{oM@7UX_yIrofl<>Zl`hPU5z>#qU znjJ~Ewp@954BsM}_G3_9DkQ#z^C_o11-8I-^b|(!C~ZkJQllJ7?Kp`$WyvcMglk=lwPI-eXMU0h2~1Ft zmnmY2Ip4`TVed|RxI{?CWw*)B5+frbG?v-9B<^~H6$kJf?Mob*WMoe@D5T}fx5%zk zaTX~_{I;o3MNpB7ovpwYV#cfh3}mn_Ay_wJ~JG2e?X|8hO2&l`2O87qa2}mV#>ml|BfjT=BArTB{ZPkFans+3>WrbiFAI(J$ z$W}R}SHdiB4Hz*BMIpMj=^|z1FjLT~nHrnHu9@J`QK+&f?6vdr{ATCB?~@UJ6Y49- zK7wGrp1u%McJb&nSA4f$$WbFn!CJ-@^}+$ocmvC@@rv*egT67z2-ieK8$g=TvoFuq z8mL*OvMoN@2+Sem(=<;W4TP@eso~SKN2eyQpgpA{NlIZXg83wtn8E#5u>Wc-HbJV2 zrldh~ovG;@5%_2*(>L>J*0^wDX=<5tK-RpQ9Fiol|JwuNcg6?wr&mPTJx{WXvo{c0 z<`L|CW8ctFCM>f;=RJ(M$-{Soq=!jnFdNqBt^1lf3eU@3w1C!Jz+MWxXwGPL7y*1Ihkl;2BNkCRs$uPeSU2TZ%j^|qM&VgYIj3G)MAP}-8B**MJFLh zzL07oEqI_Z!GN@%SY}{&z{=)Dj`WAH*qhcfw=RamXNDJi31bZN*Du7gAlB`Pyc;0a(3#Rp?BsE5#bA#sKgRnXAnOF^%JmhP-|3TZUrYKx?GsE;@FPa_=D>|-%E2KrFVN80_ul{1WBi>x(5K29 zWn{czWM{=Nw0~9g3$3h!sAL1;e~MsX4A-%;wvfQXKRAmJRCSc~KAIbJ+H?6?tfkGe z7C#YZzS*<=iRvgLCYBDabYO^3cs^wK)o)*Gksk(BN1l)f!8fe`TjNxtFyVBm17yrX~dB)sHpLvl9qFK8?) ztsDRs1~|4}Mi-+WS2yYR_Pn~N1| zuG{ChQntAt|D1kL+1>f)Mi^-P>DSk{%KaDEqwn3_xE()74%JjjuB_W#zkf2{BQJm2 zq+Y%9+WY?e(i&Koffx=>?5FPXv_C_i)}yKNk=^HeGs9Ug2ErWtfr=BQ$S8-pWV$t)Lum+iyA?GTh*`h(nWEn(cZ;kfDei7|0 zD4dyd(}tsuVoj~&kWW~cq2;qOGg@9IJ3f^duw@vHa0Lln;9^4wM`g(-T6onM!Xh@` ze4kLCCB8u}P5uecWG=sxYtQ7bynX;LDl5ci_>t5m{xG=rVlmxWVCLl2@BXLeswfZ10yd{VVV73(X4G8pPqk>Hp{v_9uP@wKDp;>Udx8@zR1JCKP z(DuRx%Z85|OonTMy&83T4n5_AeztqTzdM??^4I;YvkkkSp5%uRfwA=Se=L@_{U~Cg zFSf2<$Ay}!!)h%2?9dr5`Kxvt{G*}S4cKi)!o3)6zgez^^*uQaqU(n6ZxR1W`l4Tr zpjID<G4F)>lYpo9(ub4{|h4&Repp1m-c=8nG}obUikn1 zuxG2SEoZ4d;(>tVFoJ+k{^yqqqm4`z$`2Xv5>WRc9<#u4N^rAH3^|l$ckhg;X(;8; zOD@U^!^NA5F-JJx98EGyYEe$RTrlxyD(j?`Nue(mZ;r1>xj9{Mkv!Qg7tUYvo4t7S z&z-yQ5$cP7pJ#pmtpgy${+yIjYCfE4}&4 zNwDD>Xo&d4`pXI1m>KQmz5c^q2j>vg55{jZbbK)FLkQOry4hQ{J40EgM6KYd0ldO5 zmyOPHUtFzQOB>gpl8n#e{t)FiVT%w2B`;CVm=R6HjT%nJChPs)4imkdjg^1mp(PHxsqn&qtNL$ zPx{P}w#d&2V&9vU%N|*=-qD4OhUnSPQt8KITKycV*5(ag4I4k*Vi=RV? z)_SaY>$SE{32rsvr(@nO3$rmlDTl1UVnU~`qR(7dH)+GJznDbo^Gar4`Jb%4w>J-3 z+__&BWM`jHgS_d@mMew;b)q4wy+Q47B8xU01^%b`8sR9a` zE@oNqovj+b4epoXzL`J(&@NW6mj!u)-tAm3hnQoMGPl zbKUtfi}%#>3MSSO%c0BEQjxpGwZ<>QbV|W1esD3x+ri;7vl`AVR)ECZT+|`S?B+%# zKE9wa!T)OKsF9Ngu#@BBrxlzPJ@3#AD*H0{-jc;mb!FE4(`m77rUQ{Ux~8*ZvA3Mj zR|=^V4A*5hG)v86sOIwj_1zTV|el(58Q7Qw6cKqT7kKqM!+>+l>kr1{XW z44vF<)-#FlcUe11nM9-w^_EG^bbmqcxhf8#Ei6lD=F4vds>fut?U>{4k)$5vXbzXN z8rwQHl@vCaysV@$3;iAr+I7ld5TSL$V#__zAe~rc9b{GysC&nDm%Y?TFda>bQp270 zme#wS%akU@Mo^CI<93vcW&P@UeY(|6cRS_h{0kmLIJGIy$J|^o$S1Lyg zHQFwkxBIq%5*peUt;XyhUq+M~4E9$#TSMstv+1;1{>jEEiCGF=7moRQoNsBW%Kk(I%baLJ5eIPx*Ps%_i2fr`}U#$~p_ozEIs=sU~8$#@keP<{TL0R-JzJn zYd>mVPoC50Ssm0itp%kgG+V+HFk5fDklnAd2}YSOh4u8F@w}XPpM9PEJVr&8{`4cv zSGJ`Bx`JE1b{xlrXMDtx`P|q|RXRwR@HY=jk#~Ly9e!iazK9N^ z=xez4PBY^q);lsQ+Le4)A!(+#RL^a^;bVh!>4rXKtGbsgv%?X!Tu4)f*%$`CuN`(( zbLC8D_Nz-vf(&MLd8K1Z+2ku7W1wLT6$y@jJ)uQ!-{;|?6kF03!nWBX`(Ek z=1%&z)_k%`^+5X}6!xowR^2b`RPj7va|S;iDoPl7`&=WMgYob;oQCI~a>46;S|W)W z;{AG+dET4wzGp6__xgz4mQpGUnz_Gs`BDl~HjwV#r%{5l$rS&YZ|_dv zx2cO%hhpguD*tnD@uHGwPX;CF5q1}Znfg}#2Ue2@2*ru&E~83vW7b8xrL?z&ahwV1 z0_*I7rwOAADTmIC{5xHIuqeZ=NFHh6^fQt6>id`d!Eumv2gJ$j$g7I`b-(UXb?R-{ zdlzQpuGnsl_wBG9FnW`l?YL5t3V)w&-s+kuS>CkLgN{C;YC!tLL71p~qfoy&4wBui zZg=4QeahyT%gPeyFqA?0&O%Ha+nvIk8=3c>MP66Ank`_d-F9|RGB3&%9@GtBKGwl+ zU1!Uuqgl}FHB%5YbCo2y@;U4+W4HZ7n!lSnYIfq$SAQ$y9#<;I*SSs=cx7v1xV9}|-WMl53 zcyvf!9Wk%FY5M_7?lOc~%qzzz@}qfgcBY5gOT8DH;HeAOKTkOBpOEYLG;jMWdwPBTmT6$@QO1`ss+Cb zfUE|^eAHt-NcV|Ge1mz-h;`Hly|RLEL3wbdyYVSCV!V+Stqv9>b2m1YKfTH$IZXzc@s|;ahzA`={7Xey;()|A-tB=f`mgrYX;#9mZ6kjtNgT)6j52sA3z`t zPppuq3YL+Cf}`qP3Pl2HpxK-mb+vw>A(pdgb3h5gkXpyFj$|0cto@9cXQ>!RTNkH+ z!Q=}bhNG04m+_BDP}X5dm4P#3d#_+f>yIf>M!EY`=FB*jyDMLyrN9cFc_^+GEQTa? zHxfHF)*`=Dk%YnY;h+eKG;7Mx!dgO}DtS%H9Mwu<&c>1-5KROy7*cMF8Cc#^1KuoP zIXVqlvhSV+?!IBjTIE2ka5n5iCmz3)mhA82}6 z6?GOZ@TsxYYHfg=9qf08Jm0X52yuZly@{H{!~EOtm^-ds(m!HOR3v)HHx~50$RmjV zRIR18R_kJHksq|}tHF&%Mmu%y#~#oXGw0GyBk2C(FwMo&Iw$n+ef)*r-x*N<{t=pL zv*lK@*-*^wzI3W?S!Ov5)Rpvok~;^W6@b}-aDXs=!(Ru$PQknbK#gE!U%vR4GbBf;J~pB{2+lx zfEpU0VL|1Rhf)f}HKNLZJPtVN7pR9}fMyQj{AE^;)D6B1nesI^^Zq|i@7Zeqx_ynN zbRjz^5r8<_L;HHj)E%8fxgdKjA7y1uyKW$lmHh{pMplw!YEg+s8w_2nxcai_t2CWT ziEQjoF6BzQ#h=c`uq{Q>4^lGAvNHGNf*!tz21&A*X>ljpE<(UF|H&?Y=kEQ> z7&TAr{m#e^JT!K7`69vEEp^;)wxU9;JIPjcS^)p$HA-vQ=22E-=3G*SvzsA`<5AnA z#YCsfLz{cq*Ga-O({|{mxhDoZQ6=k}d2s<};=T0juD@Y#|JPRpsy7_>>$VtKD^@RA*5-_Y*>!6Qjd}~R%Trj2=2lQu zBh_l9(dNUxE$6=)DO>E_xwga?FzvLTgTWt<&P>a?L@u0EaDEaTj~D3tM$FcR+ooBms`q&taW?--{Dt7uhK}>$UZa0er8Mu-l}sayTci$j#OdM zQEYNg!<(GUrDFw%q7)5#_E~fdJrM}wY~;FRKb95kh6(2$%gWrSBG0{#v72>$#Qu6` zX?qpn(uk^@*<%yvLWZdV5YQs)w&dPWfk^{DjN7WGm$(9@ zq?h~8l4@yENJM7Y962YMC(1fs>tkxmC%ztw9IaziT9{JjGj0}aI#;jVTpbt z^mTO72X*}g@>pWxjcfJtN$**Huw@;_djYVWuzNp7CCbm&jc`9vXSS! zNZKEG%t9k4K*fawCXsQ&gMtZrXQ#?XVa6=Nm4-BN;ziKx1Owv77QbJvAATq&fV9z$ zZ}Ne1ap%$)J2an%%8gn~5Z`6j4Vwg>fba&J@`sMT*e}h+yU;VEDD1KF3EWIb`w#f|+X*x>UWG0!iz<{HVc*PSvG9z5&g{MvJ6cW?Vs_bx`17(?ra*dkIjs+XUl#6d#uj zY!!rqWP!{}>kvrzXI^3R={9v3Q(_eMIFeG5E$FY=dcFA;Cm-PCI>bPsG88#LkHZB| zv&4^OzthrCW?}uX1eKwovriYg=`XtV)$l@Xjaep2VH5;}fx^BKj!N2#+ zswK%`Cn!8oksqov-%>2$!B;7fmdx3A;)BcdfksE>r)D4gjSF-tSeep?S&NJ_)DLV7 zySO8j%!vF0R~;~wAI(ML;y%kIqOzh#%qwzpBX`H9UD;8dv@GwwATTTn#Cs@2xwwK7 zH756G2aeLtayjuzS>o@g+EJTBXnCLF%fU^NLg0@v8m6E=hnNY-7*@YoyLsO6IzsoO zWJLG4>=+T%BLOU)@s2n#7QJ;d&+PdJBV73``OZ*V?sf{%`a3iC7DYbd1OdcY=RD&a+%z>D;_H_aprVXp ziF4(ZFj|TIJr0XHTB*S)=%W@hzKQ2gT@|CytY=$&o(qS6fr*M8^Z*gBQ*Fl75nKmB zrT)~Pxf7((Q6M|ugxLQ%cDQAjrw?%L%<+EvoxLz$qifNt@%mQN0M9-2qj2BuC~>WK zE!LbV4 zxi_?0A6%m;eBZT>r@Gf>qzxrN?9(7iPESaQM99s__ltATtxp4o$hY_5iS-Zv0x^^S z-7YHJx-zZJ!>-$)aylUiVr>`w$qTs@$?c7h9e}&&7LKoylD<2*Pv)6&uQ*nIkbIkh zzH%`ukv_OhSsT9FeDPw@!q63jyU|&Qt+7;M)T@3_Viqw7DR8kZr_f`Jp+T+5J2^vP zot3(tsI{=4)u~#A8yRLrAzz%~SQ}I+-a22QE(cq{Kp9YsTNZ#Nc07PXr_-=Wv$Mkb z2z+Bu3>KV;`b3WFvcEw7PVfm!;8mhr`;ETu>j2GF*zI7uYVDX0$fT&{yxl72C*pr{ zPQSd@@A7>)$>kSL@mGI8t5w|Y@b-N%Oy1;AzpMNDeKEJAXvX!5EM>@p{&i(}{=mQT z+?yn9qj%gP{3a}P5B~M1N$J_Et-FEh3pm;tGgJe9e{C=`83=m6$%Wo>8-7|otS}oo zVf*X>w7t)%fAgx8x(qfjygx2GG%og--~VPCzI}xEeg2M3w6KTmx-5+sdf9qE+4YUS z7H)NZ{3a31&uQWEEcB*(UHIz_3>8dN>lBp>9$Zv>oo+a!JprREq-U^rP-s8kMkwT_ z#8JyravUDgSepjEQyDuBHmshE0OJYX%J_Q*wmWRJsB!{PeKE;l-~YZw`e&2co43)s zL&+im?WMW}G;1O|Gtg|iM##Ul3V#y;4rDyP62%(q~9cL5jG|5QBvWnfRhz;1& z7}HY4IiiO13u`B04W^$8MQ&L5zjg4@Cv1NwNxq(UJ5eOE;JM%yv;GjrtKs%gh$X#9 zwIElQ#4j8&|9@PaV{;{3v~JU}JGO0fY}>YN8#}hsv2EMzI6HPac!M3=JbmkaI_EE} zT2*t^dY(Ckny{hRJN6QaoaBF9Ct<{L14&pI^h19<#m%<=`&JrbCuVJyP9a=admJU|=W+8AZ8p*crz<$UgyjngILdRYJhi{m};#XphebO*9CH zDU1Tf%P~l}uoc)QQ;5V4B?}|Q%fw^kdI%J>H!{YMsAS-V7b;aoJjB4{yCF z%t$D1tHY;aq1V>7B>UQAi~g5xwN7=y!|;5;fGRv zmq`6mUSU1^KNkLCyYm7a=Hp^2Y!=m^JlRj3;oO(U1!o z(TuwSRjy?^Wv+Rt{Bn(hFAa#{e??SanGJ}T#2fihO|&X+Fzwc^v-ojT8r#dE-pn?} z^fyBR#K^ekTH0z#I&vHrQ)_~?$Z4nTU6@4LvsiwGB{$UtiWfnI6@@M{osz4t#{0wn zqHT^smQZ?6Ndi@6kKDyEzg!M~`v&IXpn%5$AI{E=u~c4Wp=#qc|6gUxT(Q=F$MS%j z$Y8$+xwP3Vb(q!09;V3K33>#{^51K!JOXwzg{Sg*LSXE$`&z~cWOUz#g=|pjti|Nb z`>*iihNR|@v;dslV*_nEGak~PdJ_{XysVpsdD*cN*0uDFeXw4 z%&{|`6^Tg1$yvp85-XrG_3)3L_=)#9eBM)DGfdr<#7nNY{uPqCqhf7{opdoX|DOm4;7Po zXiOTgPBJ=2_pwjuE0kexN?}D)in^3A=Q_M3K{#>9#o5Y{2FmtllFcjqFptvyJh@VviPtl@%!#5^YAEYxkDQ=i#YcYt#Jf!MoJS3D& zQGCMsG8rfs8INog=a|~ktVO!;>eNkfBEtg3c$J~7H!HS<5j%FddV~B3to{xtq#bL& zJiQl~|8d;FRim)q2YHwFNA>{gV5WJSC9-t*;qXIDbz1Fg9}JO+K|X@!|C)BxQEE-4 zhKbe0p>l0Tv}0i#`l@|bPss&@=*N5K_1uwfE_>=D)9=R5`jHJ##Z)Nx)#jOoqx)8G ze-@BUh?d#s>e5O|5L*Y!c?bL#bL_QP7)gV~8=3oVB$Rhy-M_OY=bt*I> zSeVHPnIk5+DVZ>=tHL=TK7Rp7BgCN+`mpd$bh-H%Dw}^NDNB?6TiixN-8$s79Tow+ zPLzCvD<($1Ym>rQcaO1@Q=45wm_5R%Q#~_rC0}s!$}+M53H3jeqCbAzuRM-EtTfD; zfq~oQvmSCbpUv>d#2CMdVxTKcb)75>X+=fq9NEl-CC{}FNnlgJK215|2wM$%2XAhh z(a5Mz0=1Zx{)=z#iq0U2g(d=2!puDRAA=qH`r@+u4EmuWTtcn(1(p9TD%=7RI$|p` zVxKj-^)EMXx9iApYsj!0ZlUI%-!%=|JEa#;{?|KrJTvR#ws!)S=Q@p~&tI9H=L>$K ztl|3K4K_Rpr6r{{P;i}oxuK&^PP|6bqhAt#y{@-iv}_JH40ykOZ14hZ_0PWqI)p&V zNZlI#p#KKOiTw3mXP=dXzHYSg4Zh9IPHu9he|mU*8v|U2DIKC`21(TK$ml3 zYhMpD?ZY`S$ppM?J ztC#qdm91=DsoK8BxjMkWzyVN)+WD$vfD2)OTi3_t;wOH)V<5$&tHM3;fuG%~gTcqf zyWb|@Gw`#FFFFy+-tey-;{4{X9sUDDBi&v>g~x%(RD7`eirJ2#a~neAbm}$VLP6AP zpTdCJvsMT6t3;xSrF!Hh+%PGIJSH3i@d6p6E$zPZoUt-`yLG_P`1pT(m0}i-%3Sh{ zZClID_2e4R(;%xUfv}~S1VUqPO-vVp9P$&xBbZQ*1AJ$&jrWO&zhp70yrumDH9at0C50Cy-YBJe12~zSH*9 zVsH$lpTa~c!Te4z)}PF{*SX*>`14;l7YwVqOIBSXTuw$ znYZyF@40>N=RbAZ`&r2uV+rw_1s6h}GhR%9x3}whrtK$e*McRl_W`b}fR}CNtPQ?M zrl(R&dbbrh26$)3$2+j3XbGK&)3lX%VP4=Em{ ziS`sZ6PC^4_SATjDWt#T@4R-U!oL2G?i<|&JCXzz42%UagT?co8KNu!niwP9++Ah~1}uR-?(fK~Ax9{@V@>0w26_azFWRjG?-IO26Xmgf6S%K%_xKWqlAx3Qdn3 zicnFbR^i4Md}t81VwZWcK5jpu(hwH)w|a+K+ynKgAD*O~#K2A!GR!j_2Rn)sFt(g$ zTXlte4M%;l$f8<}QWt3w04HdrTx(%Y*-Z6@p*2A-aYrPh8k@RwZ^r7dbk}G4gx6C? zvYRioNSN}6MBF{f(29nHQo6dj(way;9wh+n3a{j(0f`1Fs>~VZTppd(g4L8^{;e^5 zNV?ERM2T8^ipApR){uQsm^qdnWWQ1&%m}!cegk}{duPZH*6;;5ARu8v!5@Id^D zO`8Pqkdw^G)EUZzTe#%dbq&ob7|Q(HvN=Rd~h#)w2ZM4^QBI2Z6^#!6<0$QRKf zSRDdmwBy8POFV<23J}~g<)_JEQ1Y@gOH0a5ysHn96mcN_g1+3-$FA9s|V`?H2EEYA6L3(W^(3(x<(+YUg34## zqIPx_^bmR605&t&UiXy#SVqeV#aSpy9)})F5wsLsDBZ@>qS=_e~PiPA#v-5LvurtK+k4MH{(fiW&nxPk!)Jq>(wYD;f zO-fg40ZY;ib)!-p>*y3-P3U{VV$)-P^W=nDb2c!Rb0Ub`d9ykAjI=URy^LjN~U8=nI-00$c0alwsAx^13i~n_X(`g6#KE}K%0`5B+ zwgt{XpKKNR_VV2U|Cw}kdZ>)EWgxE_sls!9EoKSC5x~vR8Wp7j{?f~^)AA5~z zJYt<%*9!c50#90U4tN1co-b2=)J%*-%-aGt&*)sp?tVYN-E;g-KIuUX*h+pr_jN04 zfX&Eqp|>gJE?J#E#oWN9K(~>EhJ=DHe-}G7C*Wm!eW{w0(?;9r(DwDq+JJUz$LUuo zz@-a2WCMHjiQ`d%E8(r%?n&UIvikAMz`e$HYA~#2c3{ru;Al+elu@aS0e921)9NyB zpvA?+U@ZNtd`C(N&|_yog|6so(88n#2t1lu`0T3}Dj(oF#TL5ow!6GaHo{P2RH(J_9RyR^cuD2IGbkwS z#5ZjkB+|e^YiMWm{YSZ~n}@J)4*m<32De0Je3#t?aOK4Pc|CwgD>cw>C`Et<5a4JA zH@bt?aFrs6UOdrMe~I8DGcuyq(1MBZK``ga>`Pu}zs1W}J40n#;{B^@&KPHHvJ7q! z)JfT?Twco!9tiS%DW(?`Le!}qX`m~{fJL#IIuhl_?VEVmf0|&D5{9cP#%S_6TVTjh zLf$Oju*EDeuX%h`*P|)iG*)f~NKhq<=9KUr-geugELw!(sBpO8B(Q)c$-K=M@Lm7h zWqygPkRcJF)>RT=ehlESN|&?I%UgMrt#A-o9}H>H72byat9LmLaer;b16zKaD0rnSoP(+pV+c&3QHwvzG$qtZ@_**;4 zx!vp>m-HCEzkI#Y3#1yIf%1{G_`R3;{1#5xmNVPh@?r&k&DdDe`+nrGetcW~N9C%s zZO#-qeRS7Zr7vi8WS^TyzgO-Ou8+!W! z9}nrgZ?3lCng|&TIoo9)Jdv#LjLFE+SIg!JpTBXO95pwwC;65q-%~664K<=4p`~qu zD;L1BRcU931g$!>1}tnJ&hZtzxtv}!^HzDzRO+UmsX5d9X_q!W7Q?|=LPO0G;;?K1QKa-45&=wfX5|Nk(O&`zm}#bHO)?Xl3}*eR z1}sIPIdqq}gg8<^%FE#LoqPzZGm5%fCOC?C@rC`$1F_-Rl`Ul4G#yBoE$na3s7kM8 zbaV7MOk~Rmn)+nU^ZDb~1z|tEc&8Ra2pGg{qsc{IyW&bW8W=kw3ZNT*{2=b&DuU+2 z1^DPE=->zL#N_@~jxvwkNA7FYDgT2P$--e{Pkt%zsM*jVk&SAR^_wA}IUQ%(+LUHi zJ3Glilvb~O^u_;)L1%i=E8!|570|!y)c^e4vjg(22k|~{6uk4NP`t{el#c8Tql^|# zqYR@=6%P7g-nAp{Pf)W|Cg-ruh%>K|1E2(CZ{~)(yV*vIcTz|dZ$5&Ei0Fl**pzN4 z_U>H}?-%A?!G~H76`4mM)u~6S=B1)Jaa>@7o4TGRftB=iWld{1j+=oV^dQqcx z*nr&#k6WCrewh8>BcKlV1@^#Y(HZ{cu-xjfclo=~ z!7JHqP9V-?+Sw?xBythdcB{TOw=lP*OdmJLcY4oT>vTi^fSbLqf8Tsirer5$^3jzT zqj};~a(OVJ-Bz*O=mk5X!=M!o$o;0neJj}sE@BfyxA&v2UBcmUYA9kUR|s!f7@L?cxzGV7{3P&^HNH9+|6C=5nrLvYlT42KzyN)Sl%2!PXrLcTk!1} zVi?bRotjnn9e+RjEbj*p83;K)Wv#clpT~g$+D)v5yh}%13b2d0Y z-d!)qaah>psPCB}0z619D8tk;zdCV#F1Bj6^}M~VajJ=*%XZRwWY|mrg`uFOg ztate5%2N}K*xCS0dM+qdjOY7z1~~NCyaL!KefgfFm$vbg`+dKPKoAN&-DfeNk_77r z{?!8XW{5P{7H;+x8$o?-f#51t z;n`lKpwCk@X;ak(AL19=TYBn7ndWPn6hY$eGMsPLmRW!noLJFJTd}sue=fdeGK-yY zh&6Ui^>yji_7|UZZ?iy8c@JwJK$cWM2l!U)yaMG>U2151&C1YmfZT7mP({v#S|$bE zB0E9vGk?O!kFx4&4=!Cjp!#(+?{deV=C|OMf`RUrr`4P-X4wKvoa_F46w3#NYgV|& zH{FUx?ut)70& z>euO>@_I$}`pVVkTy~eOuH_>vgdT-F8#AkbtNF)pivess`Ie6-gR%S5$AEOE2K_dU zX0jp{MoO2xk%|TE*xghkga6nFS0O>A1A_K!2XlarGQ0X&zMr@U6<##ae2;$Te}Ix2 z88u9ARsjv12@Ova5wV}d=NGtF&hFYmBLSA0UXcxzzv6H&%hoMA)i@Z>+cNG~B&yo- zHA?iVs)qt1kGR`JhO4}oGV-@i`q$d*J9?r)OWQ^0$A>vyadGz@Z8Mv0g3s$idn^{J zLo0wo2~P5eb*sncCC2qn?vb^TM-iEpnp8Qg3iGwYoEHzX1qUb#hW4}e%o_(f#&D!1NWOD`G4s-ckwpc4J1`H)ORj-ITJ4Ytk#l? zJ9f^po9i=Hk7xrPfrbh6gqu@KYx^T{2+V+NN5&mL;w!UI9OIBoDni?R?`71w z{rmY4%TIb7Ay>KkO2!rSDm?SULUja?IL;T!o2U|#TOgoB4%$gYGJCw`*Nc11H_Z$q zs?QS+{Jqb8N7f7a`t+XTG1`rsADO%8X}ZQwy6^sl)12I3`2sb4cO6})%^7dPb~cU6 zDT4%}`XWq?ws?J>)jj;cw?;}=813x6;E&LlI4Fy_#vlSo#Z7}E3s%yLA`1X>sw|d} zBT5q%ansXxEwB0y?*GkKT@R-6{0bWniGuQ+jlQ3UGAb^MV}-yjRvyJ>XpxdAKFvz~Op+@iU)I)>B0 zyZ@I&Eqd(%^XZs)1mJ@o*$F_)L&qlxaLR0tx=_{i^*QDZcNTNwq2U)r-y^JngZ;2R zEH*I?qne?f;u9{3o`0bceSvv)#slv1uo9b{yJiH+2T`de!2V2ofYIL4+tS$zR3~3n zk&ioUr}|QTzk$7$Zkwxhb{dFcX{&{w_paeU4g8Uuyj^?qoFNaMRSif9=z} zS;rd`JT=GE5nD}eGZ&bo(3|i~ zQSeOudk98L5)L>d;SonpEjh&D5s8_UagF(%JYAZrPpUP^;hLwOGJXi>BWXK_^^LEMO7 z`nV7o7N}km=$9a7NKq6>F`7zYq+e?>bMjI23livaU|4`7Ui;SVSR zqKQlB4-^6tN=v_V73Y=^T0;!WwN3?m3k1vNtdRmF&dp^sCwN`ebc`IS@F&V$`8MPo zne`^}4uP&(T{-r&UKs-^ep7vig04mzx>wX&lTUy<<5#;49U{`6DRs}(t$DlF6wL*R z2fZ^HYE@?5XvHG6Dz3*O+cTw5Ygmm17T)xPqNn8$&*Hz8l$VNr%F%RtguRjDH<0PkfP9nLcZc{!_=%|VSlkd$TCdqEi znX-sw)W6p>znK4b2#eDiL81Tuqs#>vDC~@cF=!mXZ60&iVM=RxMmw&FSH=z|tW6Ah zdZ|4n1+BEONWI(BQSSCeeP z5{e0Cp+^pl?t<Z>fc5mrJ3xs3QR+Vl7wa>Nl#(X2jY`tH`BUbeqWWl+@C% zbi4F{4-`+Db(?JHrh9nN;F!VMhhsOi3Qq+yJqt<5wq~cf>WUn(|5a_VP)mzJkEz3w zGkl(E*KD-jN`lX}V3Vt{A+ae}H@#8KCE;+i=4DLOP0Oh*s*EefDowEm>3DhVx$OXg z2l2EzrWj-`fm*qUC)L&3DO>fzK$h5M#;)1bo7EC}{n~D88Vl|CpQWDiZDkhEqXLce zA|&X*eDdwNSY!Gj>l8O`Bkwk0_yiUj6!R&W*I{yS+SRC#2`TaAvnclQ=%^{HDbp}) zy<|3VIAYr@Ak0G1y>#YryIWtB7&D-_5~bc>iQI~B7Vc2_-N#+MG)b+v>vz;I?^DHW zbcxZ}Ebi@aT`^o?RWVbF_yY{)w=VA}c!^wG-R+&KVzKe0Jy28c3CPDP9aWaBtM3!% zZY>%YvIb=1NX<2}@9?>R@0K~v^LvbqOeva%Y)nPVoQdws{re&H5GdyMn+5P!&cz=@ z09Yen-m6p5&y{2jlgQ5vcAnZDoJA8B>H9qxN&)r}kDoh+KLZr~448;~qX~N>Bl#tK z(+Rn-8shL-pCj%@#fkaofOtYQUKIBPxYbtUL5@@JBA{Pj9%Wg)CmZ!bJ3>`ALV8)KR_N?stSLa+k+(&j+x&s<{rFthPbpi zv)=#pb&Lb-3)^PT^1T^JyDWA@F?x9-f#G!yl!uVyaj7z=(b}Ug6E&~WEJsbfVIA3L zi;o)=S3Nv(j-jRx$w8eABcOujpn^<+gW)Dsg7S&9DTXRnEEy(1c?Gz@ClF}(Pjui; z$RwDb@rI(dqC%0YsK8394f&>2T}wbx;Ou`gCSiYQ?md$g$_Db6vLuBN=>C&IR;tKD zN%qE$!+)h4mk8n6lVm|FN@q3J6f^bOMZGDf#tbJKg#Z*D#*$ zdrY^w7*+EFs@5>KiZ`_H2^ip%2)*xM2oEZ$=bwMIcpA6#X5fD8*|#p=t=R?dUVWal zT`6h70A8`LjuwAD+rP^^1M^R<8uWQqrU~|efnQ${qV}aX+LwRMe)e;Hob89BNB{ix zHn($i+bwAj@C2OgrEvic^dIwjOH1#aX1w~o#ogLnjt{)PvGhiia&fM%4ZW}H&>ITg ztxkoM-kF`LBZW4a9=GeiLYw~XGL&EYb(-z&A1DdA>s`AwMFtAp<=M;gKRuuD3GvQ9 zN$hYv%kGsVIL!4oUR?<-e2f0{Le-1AfY@=%d&ocS90Oz%ZH>*n@Bf90I}CsireY-A zP2!dE_qtsELp*T%R-bVHA9bWzRmRxAq&`#!&dqU3{a>UH?Uc#$i$@SS*zan^O}nBv zo+UOS*uf@3P-NbVf|KG`v^!MzEplPFjRyPzZ0ZKxB%ixCIZe9p>QF9we66icraT?| z&;cB*m;#`BCeRB-%XAZRA&cS6(>36i6UK^pzczcS#k9PxC8rK<{%I+@?kc=28bum~ zbtelI1FidRZb-Qmg2j<95x%2r*`o1vomq(Vw^00f{d-D!5H`K_$C~6gyYX7nrEtpFQ zn3vW0aJitDDCAamxrbg+)7+#~Ad7e*^HAUuwz-7D)BHUc_qkDT#NYAkrM3Gu@?W=< zkR^bNM{KRXv-1{zTq$`r5j1DN;O>1*l26wELD6dkk863p?#nsG*)(g9-xGtmuD8zJ z6QR&Z+a5amuO+^NdPsL_~#O%_|o=8m$3Fk3J1hKUMX% z><`)+_)_qiYw*K~m^8+TkP@DucM#1Koj7_ZSWFp~Zb`DX8s^0F3%0%DRgy0IG7*Je zNrMDHtQuyemH6_B$c(4RB&iDJH3px}hB;TORa&0#Q9`O^>xtfv zqH8XBfeoK?mAj9;)Sy@m=oG+`IpatsM`_w&1k^c!P-{=xf$ltukL~(j zWq^y~Nj36U?ExFt{kDPk^pxE3n851xrZd~!$?!JG*Lu)(y6;N%i=@+>@88ST_aU}f zU7>ci9`4e&XXC)|mw9UB=s#P2OyR!lGaCzi@BHr@frca2k*SvNc~xY7R$Oxv1_1zm zxgFy>e-L3akHCLo67&&M{V%5e>lc9)PI?VarhmDTmljJ_wIK7RbvtSWYx)OXfvhUS z`}9T}lM(5_DOtwUYx?CbC?+0!EGE++4-`L$aO+L^Rof^CWwP*L3eO zHzO92+DFpCVmgzGVguu&r(NnCd`B>V;Dyp@s4x8k#2K1#KJxYtx;FHtZV0^ox6Cn_ z3V`bWerO&~@?CB@E?Ev2>2HpU2}#CHBJ3(BlY24+RiE%pzn1|6|F&WO>Id-iv2<*F z9{qh_q#t=Qyk(i174y#=dK$M70X#Rr@w^S%Jm@PJ=$M(;TTUt<)D+}$Mhb14sSvvF zdCF;2-IRI(j64GzW;?y4@7pux#&R7yF6pOt&WJ8l7pQOXZ%^>55dB)E5@KtltU&G{ z5511psAk)>)r36mbw6)@X27HOamlmz^Wj>py!|B+_rS?v1G_)9Ezy9Nb)KH$F$}=* z=GxZgr&Hn;4?6Y=dWNpR9>;R?f57-UKBjNps^*jR%}=hxR^T^l8~LWm#0`z}Uc)YL zeoXW8QKV=4m_zlI2WELY5TI7I;fk&(%VkgS6+JMK1ad*(iIz0USOk{T zd(qpgJA>y^_9f`agS1oSb373VI-QTcc_kO!sn}Rv?Lqe{xT4Lh+$a??=VH-m=C0>0 zY|eI$()ovGHFsTt20(U6+u}l;#7cMkOj{vNq}p7E5Pw8&54rG2Tkd#tN$HUDsFlEhUYriMLC&0Tki` z4|RYer{5+^6|Z4~soDpem`X!;s1~s#l)|~iH-JIvAMPv%|UY4e+uSwIaOi`ZB+Tp+jXEMcgF7JDu7t``efYZU_ zOp|Wl@b1`RIe>)nDO!3<1zqj&}#Nl5QpI&p^VYse?Rhi|!~*)(Q@m&k49&1Ye^ zHZqocCy)KydF^87+>Y+IRc%i8v>tk7$J92ySHdj)>`O(L{}`bC9^(G>M;)r=tD;(U zj2t|o5}O@@mxmzV-=%9Tj*2t7&v0*-xBhIq%kU3I z5jhnwv=ZZ1yzoM63W;dx_*Uu2hl!~6!a8gGDPf;Vuz={8c}MlAr^1H$K=tTqWe(m5 zJQZ|X3F-yf(KVXAd#+$1=jBm}@c{L1%I4p(}VN+m&kw1d)f|+CDW*?2({s(!TNNEJ< z&6ytxGR3}#`Fq3vA?P`N--LqD2>ZTYwvO<=cf^eXW6YYqr`(IzFtY!m)=T6d&MF;z z=wy^|NdCV;VmWH?n^Z@p*kE8Y8O9*!0sx)d`ZW?|CE%!dLGrOEB9?;`p>2N44iZl_lEC}G7U-$0@v9&xT;wS9S1{r zZ(t(P7iUS*I!c4P;$5t1z&bA6Y7a$n0wXv2nJCjh52_54Qf`l+VHT+h<`IH7ip*Eg z?^2U)d;?Nr1c_0|f|F{d^AvcB2sodZBZFEHpZifiix6F zd6f9)u`}0y(9CgO9I@OOu+kJ}H!#1kUSxrde3h)?qC0^mUM1^@RA~76s0A1aTBBq1 zQ|F;fRVuqUuyUP(jf>X^ooDDJxD~_CXf9_D8|<+>1zlIbkAX~_Td~kJ=G6mUE$xK~uq7I! z#VX2+L@kU{h@JoLyA4vf_PD&oCu!gG5KSKC>;&?V$Z!gYSu51wgPdfFr4aWmwNjF|P;Z?O zr~{+R621Mt5+P>-5lOHq+r=VeiUjFzHZ(x%EE*Jwnj>|{(MS=l$x0?JZq@ZYbgkgO z!@dRd43u6v)3~r`pCfQAL=Op0&acC!@R>NANVi^A+-MX}67vZmsDLUZw?aYio{)=Q z7QoErdNO6^Gxw^*5kX7$vw_g0c9E$U;JRNBh3*g{6PCif6Vwdgj zVl!I9;{(+*ZdqwloFAtaA`K;6@V*pUxP_u~qIrXKl#0R(?4xdEVj7ceF0^y5>UDJy zd4sE^2-}i^qEOR1d4LUFGr_SNeV*w?m<{(UoSeaEb-Px|Xi$nsp^PvV53JfO!5y9} z3t~l!-hbLdL!@0RgSR)4sE`Qqj-;s__?dLW?Yo6Fm+SG|B{I%8VG@G2dm)h1r0$?c z8XaaYN&M=h6sr)#BGz)f3wr`PujOX@=J3|mbfV%-C@E!pF8~v7JtpmIPhx1grY&IH zFRF$~3K5Oq(sGD9D2*BK#S=%x5&ZAa@E8Lm@fS|4s&_gs9SYJj`78AC)4h5{To!E< zFZID;Cx#iPl)RyjyBwbOCAemqp&*Kgsu9gx;r(FP_YTOQ6 zDNQN}!&Z?Z5j+q#s9ps<$w&sRqN~ey^01RWXk!dN1bgOfW)AhUtQ564>aKrJMP*> zH!9o2_N-75NML*^uF!?aPUUg4dqE>ZKU#dN(&7JOh_OxYskT&6$9Ipk{TFagt7$CV z+&?1bl`u$i#-Ync!Q#o&@tp*lM?*q~Wko@m0)ERa{l+h*%OKEjB#EPxH4il|-X;km zvrrrp6RApWG;v*KgcDtiF8vZ_pBX&Bz|V{2wPq79USJ{B6V2I>sWp7h-XMDseg07^ zeB6e|J@czgc4mc~@$MH`k{uN47+LdByxBxLFqC$dS2ub0cWT>8a9B({z zu()u_d%2GrCe%EHU3|=06NefWgD89SK7Mxe&(na9HwuPvW8<^@Q{t>W<=EZq&LHhURGS}YznFD02y@I7V>FRBsWQ zWduty$W`uCOcHYwt$HS4A+A zJI1uzfIY;c#@MN1t15$d82n2CO%sYcKw4j2u;3xDzS5Z`qP zHSQ(5caO7`R^+C~VjiQ~a=NR?mH_6je0cTL8XA9M*!+5LJxcFQj2mvgaKL5g>0~X$ z&(=lc)sw=T!}^x`d9ut{bAF_mZV?*O$ssA^I9cu&X=O45RzfT?gV$Vik|?oK3IWTc zlBP6*_z6c*3S=@rRMXVhO%h2yXHNI5s<7j%!|bxKHO`3STZW|7f-u`=kZVb@#OXGk z#`pq$LpAo!1x~LmWnh$OYRyqj7WmG+NUIv$KuUOB;GxRn1XByPCU+?`6om z{mR;jpuP1?y; z#z_*ZkCp~{-vml0IDoc9bFhyR!ufZ-21$7CNs9$R2#@6u!Aby6p0C?<_>PHj$HM*o zVE(R$@thKN^(l|D<(jg0g0IbpCE6sm$fI?>FI!B| z4PHL<}rw!!aCZx3dugO$@$+JCzucZl*VZA)?64UVh^l8+g#Z{c`f^Gh3g3A9-U zMZ>m9jo}CRlHyc05&J-p$vrEI3_|(MsMHkx49y}^-2;4pfv!XD(L0a8KxK_upJhRV zIvkym8lC%Rm@YnZYon5vpTeFmRNC1Z;#8SHS+1d5;e2~!e(+6B^i+>(yi$7W>c_p6 zh96X^(^JwXo8|oa*=>2$2aJ2N5GzWSYs~azt%<`5x+LC^`JpE8@5>;#5D?s}N05~Q zoh#b}1z-(Zs8UHDE9q8~WrM8q7IMG&H$mSJt!^Tnx>g>{Q9CYVZe4$MFlr)|Z5@kB zOmm_s^iOa&`c}PH&%uKU)*sA9e5Nwr;PW#fh1Z^SPSRroLD3n(k>Nc?Zd02mRu0sP z<&H&s%AP0~xI(MsGnhk#c__zGCTY9M7)Jcont@{1A&YBmwfR}+=S2#SP;&vNs}MfWNHjVM+iiRCyz6|%ihY~;7?`m zHUJiPESwG;&FgPG?(4|Gu6{n}e+2l{^S0+hU$WhD$=Qk_hOWaA_it5lLqiEWRf)xk$UnZJM{^e!d-8TL%d-<(FTpxLD>cibiD~6I7;)R zc`vi&Io~p=T~CM6cwXJPv9IawV)qd_5ZK(( zhV+`gYy??nU0kT61jE~bIPE$t$fOz;%8vw@d`9!VB?_y-=FILJWThlJT&Y8$w1AH& zT?D4)G<)o_;1RJTMJ_4$SxTWPMF-^JjP4&BMM;Gc6>I&_(l}^kN9b+;bPm?iE=g~q zXB8`{yFRIH{_qr4RkK$M9!?vM*hnmF-ICveb^D-H^EH*mj>jj6Ymd}83}wx5 z%Ht^?S2I6g8HM1{8YUTn)GJpK!vX5GE-C)ennutz#Z(0k1!$=S)khU#*+q}kuUV`! z8myi*t9L2^wDDF=mUhK!DL8%UV-H?q>r}uur`CMQb2yphb{I5@iOBFu_P(HgzA-W_dfmXw3%GC{I>P=hl3CaJ z@Nw)+iQ)R1$5EV)%?$?@MW!C!KbZ>_ z1IXsT4L{u%SVhcQ{TaQ!$O9>TIGlhQ2$&taIbFoWhS*My2L%81yOq8{dYfD%^PCW0 zAOH$-ug@2?=R4O>#egG+evjveCXu19?c;N(ZlLeY@gu^YPseuuwL9}q|EGbFGGJ+# z0?}Cs5;k=hfC%t)DZ>@YwWHXmK`_<3-GA!4NIcg*kY!xM=-|)2|K_=cx4V2wp4h!b zhyK+ytqS}Kd>a{2oT>e4rmg!v5PF=fPLdQn<5o}WX|V?mDI5_~Upe~ycXNZ=LYOzF z_%A~FnrlBa|NPTD-ZIq;C=}3AEs%c;Yrx}uT*UnX==*)$()$gt`3QE-&VAiAK8v6I zIYRhPag~Vs@a4^SnrpzD*4uY3r-qmnS?`Y0_v~pQTxp=&6ck;m=Ty-1?<&N+cVy9h zbyE!YuP>{+7V zZJqABpG9#z@3zdu8=f`{qCyPK&viSl#>W*JE#<_HFQ!j58YPho=f4fn^sT7yI32IF zb8fy84D`MYQy(|FxxU&y5SNbwS;(_MVpc$+FZ~LRNC1QVX z(@Q<(g1)@lktiv{&*{h-e^{Ry$ zaDY})8}SK3{s`c#dv*gstTkWlsP6(;1ywShxf9IurE9*uhh?9ptCOzoLj??uv@~FB zZCfF%RC&>N|871%_1+!<@5$?)R}s})FK6;_@XkZD0$qQR@K-d(g02W!+PoxZXpm(XxX}Qs#OCVP zYb-J;R~!*0?P`*0h%@u+;tM|K@xM7RpeQp^WNwSrX>c)&V$zxy&skL$`-r?Go4Kgd zQiO38b)=*3-^^&}8idyMdLC_lvor|utU6|#_SO$xe3dLn&Ass27r%>**gS3J5=o4qEXNUc*Fl9j8YOIkx}gsiu~&rXF=Uvg{sr@UIQWzov{$VT)6=4O^oXNOCd^X}zE zEjn5idM3t5{2+f#N4aBdyR*=GGMxTP@Q+7Wbx&x z-AXfXc?=AZ6fDCq5DJ>*(s38QE0V7(6r?Ly?r)H>Z=iCD5pIhKCU);BpCc1i&6umJ>>uBaUDpxWz5(`g|ZqjyQggFn^CYJjIM+R0rdZIJD~ha0WK_sM zcu%TmT(>b`D4Cork&d)3$+R)&cY6#3#s7A2@8 zrQu}oNY#Um`=>g#Nf9eqV^6mn_N&Ze%m7$}c=sWtI*ct5>5#lH`|@Oxjtj}7%S(rpmeLPyYF8eO|0YYG zI#wHDfvsc&zoK&gqsrbS)jet;OSku@+_p~vaCoOq22F|!cBUu5&`d(m%;Jpoc@QiK6;2iyx3NWwyk&Qg z3YXjDk~e3-+`UMc9xSUkv@ED3PKUml%6fc5oqF;&o59ho( zYTzHa1x6knz+yL%=rhKRD@gJzfLJtnU@VZ|&Huvtxda^LyJerj5~G|)@pmczro5!h zOHfET#kE(V+$@E7<<;xH8`kUYm*$Q%_woVh7>2OJXqnRh&qA^-nuag}q)vxv`csNG z1x>>k*6dlS>*AG*AcAZ{fK^s@`ZWhi8|W3>ZwZl4t0(0mTeiR`+BK0>SH&;dPUi^K z%=OPAE0u_0e%UMDO2tt zgA^Tzn*(B)3RiV*=Z^DODpk4$(Mxu~Bq|>m;E1)U;L(_e01XaEFAy?ee;yA!>j4k6 zV&k=AxpehU2?8blz=(q5#v(o>K+Lua2_??51H-IBo))n~35n`|p2mWfgi1>Q4crwX zf);Ks*Ar57Mo63SRK+P-%j5uu)i%7?>y5EJSIP^GNG!tGoEqr!fJ31zdP-Xp*N3Wt zaAsN%s|F(iI*0@41IeJriaobC5+VV4>hcSU6S}UVXgTh1`>(c+rdH{Fy9yOgrUS9+ z&d3V=J(_af(GU}aWLizV0iJTpz)%^n@uXX+2TJb!`V{z^!fcB zPHAu8SN#k~alTr)t4hzFnYz9_eSZk_66CJu_CGrbx46VYS8$ilAVlB)X}bx2$R%yv zHgNM?)yXM4KJcRqTK>#?=>59fvjd#@oE+QGuH@;ye7l`b-Khb7-Aqr$sn`HwT+=%NroGvl4Zw)geXU-wx+r)QO8(cyS-(Ht`{r7tX9M2GJGng})mZDWy#d{Di{eJCk!w7T+s| z=YhAP7-F7rK&}6H81}_r+?%sGlordgPtS{07MP_{wW${E7MD|mNFmDf=0M6RSinx? z@@e;^V3ze?>(%FLKll1>BKMx6tb?uQ_8b8!2;kSfeLe8pi@YWiiyi2we?q5NH9$xq z`7iSR8c@IaI>f~HYWJL??v0)$Bc?VT4F+e%o4l7a98Rtx@_E&GS%v=Gy>;d}cpKS2 z^vkSy_3?ITTv@hy&c+y@9%+y7=~%s+&8kAa&+$Da=1xvV(;5FYG4J=;m7xDoRoToO zyuxFi4rr_N*h}ZqR@tzh!5ndIQq{h7J5Oz3)d>!F6<9t!dFNdYcf}%p~@xt#3bb%2DtCg@$p^Q$gCvxmevcI zxh#(dLvt+NGgzxERQ&u}*1S3?;&IJVOAC#CFoRaZ)DkM*G&`N7*m4$lqX%mhMbLmP zNr|gDD9@$72n?6sMN-p=?9MpSCyk*__{R9Oe+p@nvY0Ex%biW>vgS#YZlx8@L2x5a z+tiVu(AKaf+ZTCCT|^XyPCc1Zu~iv`PTjtME0RPJ;qrxUUJ%jcw-%Xr~U0Dj_#ZjZPiTcqD&2GyH6u3_( zz&o)c$`obJv}rCP%?q6xTS!+p+HLs~og_wGNp*}Yr6k3Ntn2t@Lt8c{lM(@~D&CtB zJ2Xy8t%~fe5OMIaBWelKT#FKXsptnhZnB_Q(Pc#=Qmr-eYEenvbm?;>cS|Am>~`B7 z4Q~o5)PGm_5@pzFr`>U^5Y!osF&yBB>9zWzlg^I?S8)2(&Fh%(*@+w&(pb{Ia*!FL zN*8h140*D0Nn}o_ZDwrx$Vn;lhCiUWGhEFVB0be(N)KAw=$b($($Q2R%&78~W0RF1 zispwrw~W#mU?4Hb%SuTPA}tw;)i{3o9W|v%&(}A>gDt`d7P;csfM}hccgzZAfzqvD zAXx!gN*urNqZBK7emAjL5IBvAq^h9NaO*QKg6oSOFUw^eCYq@^mydCd1J^GZ&9s@e zKLB+kh~AUe(cKjX;$>mZI;AUxem2H`zmU8G2r^G}iv|eqB3NRDM2^MN%PS?7w@6q{ zbnj0u{Z1P`fX>s%pvI|RB7N6$uth#&xHf zMKS`AkKu_G|tPw~)4ZcdpbP!L1-_}@2!#^oX(GHrSRh6b zFfZUC);|LAT$R_3<-|8g*5QQxix4rOh9XovVwGH;G0h;jvOd`z* zidxW}SjT(zVK#Idy-hjV-lv3}4z0qKyNJa=F{(%J!&*4nv_x&C2A;(&*+2&5LF!Km zdmx#Me&yWogQa>HaVr2 zKWZrFw5nQ`sv&NC`m5=$aF9f-E{4rcTI>qMhO`lHFu*#66?)}mR?r!q{9-E*MNgO^ zKuHE+DNjVm!s`VV@c|MK5x$A(GVuT2DRThTFo}?MKOj2wfCK1*Club2HDNQD3)=U! zRdOH<<|%1Tfbq|Ln;Npn+_0Vhi#a==31-7|6gSwqS?gwRi9fgib}$WjBxZZ>4Qs*URndHO$D}akr2e*UR8%iM>siG$7G>qW)$;xFOdyhV6pj zZ@cOqTrq&xAwcQOlUIqh27#GV0IoqsAKRx7i8_F(&fS-zW$nd=mig4}s1F;mvzjvX$}Q>ytLbJP;p&j-HaO+nZyFzVKCsF)gNcY9w_t9* zNpA%T{4;oW9l`LzEJA@DxdL|25yCe+zX-%bU$n-&^XKCNXcr-`jtf}P0Ja&PkSPxE zei3aLQB9iF`ZjWlu3Or|DjVdSPK0!ym?6ZTRt*@ZkW8|%!lTZPibM$}Z#+{Ez!6SN z0MEybL6fl|qpTgHj4Grb{|LZIH51$&;s*9D)!c~t&r-!+_Hzk7(2EUkh@Pt>(Z|`Z zt6SfpGg0YbwU>Y2lDO9g(0ceCLzr}3>ncPyXIVv@q=z;*Z+r;-YnL75+95n*SFLfh zQHLyM|6Li{n(4gEB;=XdXX9{od0qtR)>EOANd$6C9~CjEgtz~+2f;}2z8p!=)yjwS zUMnB>7U{}|ck&TG8q(@{FYKen7k+@&Z%4v9!b2s#w%U^nz5z_O@;Gih;Z)NpD{Q5h7$o8#|0ebXtZ~M%ew+?-BWWByq-w%eoYZya=ShLd?hDB0Q+@)A$#O#HbKVFJd0b_+(1n8TouToq$E`cM(ixJPtLvN2Wk* zIwA3osPU-R)w$2Tqq}nHyT8fJn7&$LkI^31bNG48{doB~&ShnMUy1*!^L`toJPr$* zt*+zW>%rg!d@mpRUS5=GL3Kn~94){Gf`Y4rLYeAGqrmwoGY6?1=eJ!}zfEuZ?{ zBxt$aVjc-n!FKJqT>tfeH7IX?wLOS;_`JfX>Gsg{IbK`65Xcwrb?`DjjVgXHsrb0x z9wik7e8;5|e4qN55$16jD8F}=uVQ?E^zQ+@O-{}L25NO3FWnk|*YDa@N*2Pmo`;oI zipfFp%vePJw;hMf7rwb$!+BZ5<6ix(b`8RgkL0Am;&HW3cY!0m+p*(zLx8A?%l*O5 zo`d_>``^U4-ntlmOsJhPG=IgHe8CTCmEpN$1MX$N`|dYgljoC{Ixp9~Y>QGz?NWn} zb-*T|=|0%tWypZcaFsbhe1tqkb>Eh&kDw`_5G}31YGH@wvV=elP!V@2=jo1yCIQTt8Z^%D#If2x~j? z*_?QVSh0Ali)*sL_|h4CE@#LkeTu0w=Bfnfj63pOs6^g9YE2t6T+NundtP%V7hsga z7~}DzNzH@jqqOH`irrl|X`~eMBJ|!%oyEr!mIM^Nno4v28G{zht`AW4oKzrH`aV_i z?(1Iyv&Bub6H{V%jmr;oXkW~+QJD-&drnIrUtV0%@PTm|X`4tP82?>7y4P8sCp!v2 z%|e#KeQ!$}S7aiLc0&0eCN=)*GW%&WyBaQQpD|=fg>L~bd;E=&^N*J{WH13^9r2ud zuOx(#7;(N6ql2O_5w16irZ$`xSuJZqQi!E=ZYbg6@TH+u4}!fym2=7dPKhOVe}f#u zn3fc}_Zg))NSNv61yxBw%+2t7oTdj1Gtw5B2)Esq1o7v0_R6|*uR~3%%$tgd|p1xKaB9rb|1XuGYTHH zJAFUXXiN*zjoo~k-k`2m5~sWHqLwYho>lSEi6>-XB;Zh+(5fX99 zsD}dg;P)Db#P>|x3g20u@XRLTq=z8wvJ8ooW66hvq#P1}gnV-6I9z+QY?4yrhYDu+!GF`m&^EwAn+QNamRLYQ z#Q$SGOIJkyckza%mR5US`Flr3xo~0mO+iwa6KNsg`ZK`*g(mR#(Jv@qvA2fBvsyAa zo~_*Py-_1HWF}aiaB)RxLn9zJT}MoovC|IYT_6MkH>6=~buH`=r8nf2K>XwC$xFXw z^iu-78N7eNa=n*rkBgq0&YK>Mt!2LA=8&Ssb)0M*0$TvoY(){(7AcxIdl~qVyT#o6 z@)^_wF@WqeNh^L9b!9VHV02%3gpzUoty8ORXE_%K-wgr;A--;KwvE4k$kGr5+x@hI zC$nHPaX;D2V+l(5k|bn?Wz1?|jqinuSlSa@^mX;xRpFZCQsBD@BC zn^eqAY820zLK3b!6L9J1#vM#7X6!dZfZfb1TA6fu$GdwxgaD`?#a{97%-yTMTogrN zsdQ;~D`aqwWIYw-pRq5O9Ses<4_A`8dIl9+n+M?Dg&!r%7&BK6;mx=Mm@aQW@MsKM zwg|7KBSBz8g9!-t&d;QvJaY*Q8Yg#99YJ0t=c*pUu{7edE2=6MJtmAaQxWoX3yu5e z(ZcS>I|_1;U_ANvR9R5ysiE1Pxzd{_5rQyj&Yiub2GGXvlE#aI3tuK=jtIDi818+1 zsQ{-h;m``fRWf0zaEzcFg_1--eb{3;19ECPL;jY!~{aZI;%7noR}jB^*M=sbhe ziQ9$3+JxbzesD=9eBBCbg{(Q4XMtCBur2->%S%)dK}UZKPgHDM*wk6D$w#U$Ndc%y zaOM(?4?!$_QM$3AGA7vLQ~^!164aFa8c8XJCQAc3)yHrm@KB0{6GV4I>nt+~)Z`^j zzDau|ehkeu;#ryunG{k}wnw^by;@n*lIFtyU@w|ibYD_YY+UR-J7YK5JX@Am2DynB$j$&$Xinc_ z(s?$pXQ{qza>n(B>H77?G0%)7DT@dxDdU}xmZdRR0S&ZLkyZ#*`b-vdCE%Ye3`BM9 zu6#jF6~z)8W?~*Y$(antY(PYsLi3YqPq$e#RyIpX*eiJ2Fvx51FB{g3iQVR$HA8p> zFtQPFh<4y)pxfk8qfR>=j+s=A(*D}HM_dbjl5_F4F8EP$q#fIYOo%GmgvOlW?O`A! z%8BTp%iG-DCKRrQP%+2?0RV%cH-^ms+p5QU1}xS@9e4CMM_eSUMGO937$tU_(VQSj zte740WKj;xqi^3ptf_WjdXSiA0FUJ@o4WAe<0p(V{-$uxo1e!EB2M86R2IgL3vbHEitO~YtKiUcTmQnyG6n%#qRYOoTiCi-BxwwbCQp#(ckah9h< zv*1)Y#f0ThZd%-ym(!n-UsmimUJ@lEKyoEukh^49;Phg(q4maxJUEs~Hi<#! zh6?EY|04IJe3h#N{C<3RaHzX;3cKwMXt5(yl0llVM7Y^7e*jqJlEHa`lxrSPVyJb= zq`JiFX^tqGU1OZsZr1sK6-2~P(O?LqtmUGxo70|M9Dlh& zXFctYU*)7C>+JD`Ta39;g`k(VUf4y{?MG!oa9z;pHU#(?X5z?Zp+`1#y)@7{y34o^ zfu=x0@m*=sm;vBO@MMMoW;*C>nP>~81=NZ;EL5hE&yM0M%lidvf#uB0#9=%zWk2{J zD$u|Y9G1^)#=xNzo~D0ip@Y_e>8*z+Zz^78!2m#o^t)2a(lku+!c9Pu=&A)l zsN%{Xnkw)zJhCj=hV4E?Q^cCrB0iE^a%3E$%@7;E<4>e);r?>J0Q3F=*KtGq+pg`# zy2l;S*muXo6+%<1e1+LI@Sffet!%Y#hoWUrDC>u$E<#4EQBv@0tXW(5A;6SAp}IZX zlp`RUPyyg9%r_qDA$eS`jyDe8K!&*)eh89kdc{vhxUBwLT^Iqxy(?(<#Aw0OGM4A> zrXHO}9TBA!5uyx1&u_nT%!UApm+Q!dxLvWrc`)$y-EAJl5*qs;Z3@o-g|QSz%+&}{ zUC>w@L!k{$R4}}#rjGsUEUrl$hZ2$TD=LKqStdZY4kL*P`YIS|QnF&0ToOX@8_2wP zN}-(~M^q0pgUYLby5Zb{pY@+-IT?Z;?b1{gZ2%obe0*fIk2*b^`~ebA9jfPF?zN&w51C6&ouDU%d-{jK9p3R+Z9HTZ9I z@eDwzj$K6s+~;S~l0E^1JR^z{hG_;&FGQpR)vGs(~i=T-z_OR zRVK+C{|2n%C&CFN^x@!SzXnsw&Z^Z_q*MsS(^PU*wI=u1Uga_ZQ-sc11ak`q1 zeVI=>P4e_-pQVmc?$3|cGY!RvW9b0K-0#oDX<(Pr`$}rHR)(MVU6`BAU^^ekG>E9W zxXfmHQm3Q2J%d%jUVr~_=3jer3SqGwEj(Ax)Q`VD=CPA|dfog^9A@=Dp3f^p$1z>X z!U@lIn2tkEI#2kITI!~^nvU)9Za%Q=cweV&v;?zrvL7C9XzkVUbvn6xCTjs*`E-O0 zJa2$ABgzHN+?_5bC(jp1w!HVRi<9{4-o^t92mX`X?axb2as#)V6!q|tp0Tr8f*P4D zx3}Bnn4HnNt_IGtm+XJGrtQoh{aQh@x8mM!rcT$%PKP%8D_Wb}7ri5l+4Rv-{Q?%{ z^qRGgwPw~{9m580(q040=tID#ky_}Cw(8gYB`ox5_u^~2pq{i}gIzpegYw6#$VT)1 zJlcZ6wxQc{GBf|jZ@9h5#{cPUhT5SEaGvNv%1NTdy8i6n378$$N8~@BdJFHx&3Jtb zd+=JdfVaiw$ox51YkCU)nfb82`@|I`_+jyKnY}u|{I2&gl=|xNKL?a(PtJ_S)vc*> zmw4IVr@|9n<#gH}O&v|Iws-w_9=AUAm^5$D3eXqKlHug_JWlwuQpDh$zrS{etmc1* zU!{G8zt{2~GxB}i&s$(pXxP8Me2e~cnQT=ZrTcXMBG6a6AC6>iX;05xiH6J{qh4nR z#D0&(8t_p1`uRq`WdcSG&Kxo78fVJ8SNu8_-2&ua9nY@Z^!0?zZr)bXjwY*)GhUVv zUR}pii%;@=bUL09+%zx0;Kk)0Iwf~r0?C5eEV~7;f6H%xnmWX;y6#skzh_)d(#TPM zG%H6_FN&32IYb{5%53qsj$tQP4*$0F2|bO3-*ZH&oy@yW8UrxoW*cLK`wkWO@tHMj z(~T_v-tQRmoxaVkT2fju6M;4vJh(A^J`)RYj!Uoom@7ueeR%x73obQrQh1jn_hln{ z2BLfHTo$4+5=BiK>p;T>J(y21C;JmdZ!St7Q-=?tCZi`+>jaS?EFwb4+bV4HcaUMY z(qHioyK_cqAp!V-1v}*7B4iovoz%iUXQ!vPubXjHJZ@8qa%wt0zD70`&67K%I-TC$ zK`W9}mhj+u>Zx*>%kuoXN z_Rw|h+vN)46&IKun^Z5kfB$*t-qw!N|4G<>Pqp&3H+X6ot%ad(H__&12YsK3=ehyd(H+jDA+Ld5?2A-rR^MCG-UMn1WL{FaF@$-)F#smIDbbPEq zEQr2O1}r*3%#3hzVV;;E$M=ys5i^V)ID!+zM%RO5n&2|@m$bpG?%%Z`D-6lCVQ<{Y z^5M>o!rm7D4cxdDxg27+9Kmlx^)SNrapZh9CImbm0A2TYzZ&5U7j!__@^s-i^v&+YdZPLRJB%>y*J$?tgtQ*yALzZ3f5L1B zzU+3t8r=5of4#E%0uc`Vgzb!k-}1gv34|dYkiP1D3Vg$VpZ+uqp*;cqZ~X+qmUFg> zf*CEh9}EzXAyWGPtbej0gG2=wv^=MG&q&jbYV22&4m11%E6TQP$zuE`TwLBBBD^Dr4rB%(pVhsH>G&lO@T4=@XbXHdHi zD4l+2*k}Or^L9F+4>|(kS>P7+iYf+? z?JVhX30A@B({ZB6P~P;kwo%4S!}co@|InjLRf;paadAdHq=|W>^*16t+LBeJiMeEz zmNq`7(C3bytD&(Jm$a5EDV7>jZ{E+qa*i!lvXm6Ne48BE0DXGM;$(01bE zPl-UpJi*t+$gyf%-~#|I#wov!dk^DmoX`bOc`)o4qef;@nlXKa|G0rWJjH$mvf@QQ`&>Nmskwq>$=Uz(ygs*-YVs-w6^aB ze}Vd49D>IS}5&P?5(#!df`-gJtdnki;o|Jb*B!I7#b^h@ERojMN$6 z!^Z<+A3GvcFRQ-~N}xwZfj8Qw~mf(=hWuv|ztyE6%v zA$G)tc#5%bj3|j}G58545#%D02#NZ*cb$==GQWX@{e%%A&mzoulG*UNns*q&A~qDd zT=qbd7Ukaiga(5L+1zet#1SM7X@eq&IZW}6bs(!BD7~3$9!J%Q+2D-(=fPj4cNgR&b6o{ohAkdiK{*d zR8K@}i@|71%%KcfB8_dLXTmXrbX2D&pTdW~gb_uAp{0K31O2&h<{p%fG9r&?15tsJ zMPa|<^yEBo<{G?wT;*KfV_6JAd2{Y;B)!E8qR|ByMe@rgSOLGkhPs<2wFPo=VnzNc zQoBcY_xkZtD+Jcoe4R$(HMvbiY9^V=L-1Xafk+sd5%Dy1-<6q?9s+$;bN9me3lBv? z^0nu+T`3neZR_c>{mxoY(=Zu+R(}_LxevE2qK-n6V|p8Xb#JxM3;J8TlMfc(2?6I5 zrBfE5;A6?hIK6%5?)_j*S>uE>?bU908pMJ1A~61VozFHJoo+=C{N_~Fo`xTMgIj!86tnxjYgHEf&@syN8W5 z2~~wFp1v=z|1&gEmuo*ZhDdx~_+gG%nLx$bFW~JXC&Pwz@oO2k+&_$dBgYuutF%@meXRrc$6Y2a~f2X zuK>w(+G9S1X};df+z*KXxk&N!NX>76yQ>h0Q!1|gVAtQh65}~1wt7( z!SxZI;J_jt>@)*u-7!N3%r~60m&0a~NuRT&42aBdmULi3LoHCKC$alME>tmGO*pBh zPv>9<(2HS~NlsU&>2g%)>69V~an1gF+EbU`&`Zkcb3^yBOzm&ONm>)w9_lGPXfXdQwc}0V;f}Fgk^}c_{9!Wh}ugIr1URe}F`7yO2Ab>m}Jq1NyH@*R^#qpDNktHf%55#BAf^Fsf7ZzKFwrTj1HD9&c`>elP<=5La?~kJ~2OII%-Lu7{ zN5uxF@BE8^PyCgl*?mtFI3w_sbTq{&(T$ghCvEzn6kI^72fCBa=9nv*;>bMHB*LxdwjW9$>rf#usN=FLuK(*dkb~c;DT_ba;bn{8aoT!%ubCJ)LAz z?U%^@gTAuHqA3rMVK|#HXK&N@5)CSfbz+8)JEiV0QXz5iS&OZT)4N+3)S;x^w-7*^ z$2eC+314;gG}$&@zs!1|h;{XWN)p9zez5$JprYs>ev2Bx{`ncqz$ML;xD*zsAdu@cz z)Z|vTR=hQWe^yK)RaSqM{t2dgI9X6|=;{d!N^V$9|BzJI*0+8MEl znHx38In(`lUA!!^8Hv-yQJA02fz0^%e$sTA>iCWuMyyBetPk1pB(CjC{nrNXihDBG z4$IssU-nNrqS}wZ*bf4Cp?K`dZ-zqmV7=@MbYU0-t?oT>g>dfQ?8?2;__D_tqsQ-Y z&Fqrd+`jZ6kHb9>{$I2DpI)^dH(*^990&;PpW2D^f9E)ajF5r=osL$Y%j@MNLpl_c zHxp%CoF-^75<@mi<@bKc7-^}`K}f0PA;Ti*k#guEFqBxfq|+%k#7Roju0u16?T;`2 zo9XQC){VUNc7%YwT-Tj6$`-D*UqHL+z(DH_B^dW z!Ecq3(^)sVrQ;4yj5bZmkiY*V73@3Fj7K4mO$t2!lyg;AC<{BCR29;07oY;pI zDN16TgqH28v0p+HX##QpCYlb0B!cY<(E^29kN7Uuh_ASy9wymes;SaNePj-TT}TP* z)1)XV8o&wIw}s8T?);ONTmNgKT=5)YsF}y8W6u_da4L1HKLX1YCUkVxEQno^Xf}52pVVw%IHt4u?pW4@A;fR&4;OFa zc;0yO_d4h-8@{HT*t~d76JWe*jPdyW@xB9OlxaL5S|S`gD_;=sD@`3ahw3t@bPUMh z+2CuUe)j8SnwKD)l zGv3<~9vCeMJ{Cr=NX;YOb*)@+;`zJ?jT3(4`5?OycJ=TUL;)JMD?NXcd>=+CSQi0x zKknC$1Q1Z@OUnLYtX1mpr2)h0N%B$i>${sx;WH8bCJ7J{)>#QkAf&EQmZi*aAh;bX z9wi+~?2P!SOIEBI2Ea98)ElXvuwlAvljuAq^qB}7Mb;Z|Q`9hhw)f}S!lj~0iFVq; zN;SiOjOLQ5aOI15l~^XNi&PnOA}axQ-H6~wv6-zjsmfvE7h6ezvO}*`phVvo=^!1-n7*QO%vkgerM~tLmN_qV?tadVD z|CYO0=$%EMcsg_(oLX500Gih;hkxB`|FI+!ivY{3&qNzvs-VZg^4Dr|b{ZfgU&m+H zbM-9laLDW{JpCbgg$=R?{>SYz_x5RgYZ4T(i4k_td1_twBbZ+2x#IodEgo;aDyy#Xy;0D+~A5tXG@f5nEC zNHbSzk3ytIo7Ey*Vpr2rWNEqeJo;O5i!IU`NBlzlkJQG?8fL`vESdcKyWh=+z|F^( zui#DIQ{LM?>=oX>Tr4}+ZD`{`wD(HkQkOsx8u3#(?VrOP8WxqV#!(wb!yL345k_OhTbN=|~Lu+%mNqC7j0n zh`RCipENwyDP4V;c7SqbV~mv?#e==xY)CPkB3R_0vueB;!gk|Q zs%>9q5xJO|!(}|9-eJSFa&xj8Y+^HWi`SKVDOSC?Ww1pzcvQ<}UfXAT)*9!W4|GTJ z+DBc`4bbBgavf)I4wo)vVy8c%rJV^io@lkLsCwMdXf~Khib6?mmalX?a^YO2zxb1u zii?2BiUqW4iU31gVvoXkVQOq-^VuSRKtl5#ksXt7sIS;Q3oUcvp(GUr)j|>Glj@pF z(a#|MOBg=Y*I}4S#rC`+uGB<+5=rAWQD8WTN)GjZCv6*aBSy?{!~ox~IYobA^DI+}h!QfA$$S#g zX}%%KTdhNn-0;-M2xOk2n1=j6T4;CmAOi#9lgnGROUt2jf-a4eB-8_vz34V%W(j z;F*7_1q*^e`@l`l(K&(e!A~V&I5lsQzMfpEU>+KO6<%uKY?Dh8=|)U2N15UTw-d$1 z0X4uIX+jZ#rCRadug*$E#nSRir}YQKc(4l5IssfU+H4=^DbWl)G&HOAj2fUdmw=;3 z*KBpcE25gaQ<>ETd$K1WwXTEf>(4Dy?mbnoFlv|z`d@Wb8}E1|gcJJvCqOPS>tQZY zJ#`_E{hS%(L_hV^My6C+ah$>0R0>Isi^keQ|~AK z-9|a+C#|LvjmwC=07ilo+N6{!Xp6<=TL1)0G&E`NBe^m`Qs%dFY?DwKxBiw4wxrT| z7vRlpit4o8gtF=oYQM&Cg4|b#;D<>&R4n^T%NfN_@QDQ)o#93Jak&0& z`wKpZaBh6*zTS4Eg;g;v-04TO3j|M;9n3-0QH2Ih@4*@yjS7Q6a&5Tno%q#oojWx! z#@dQ91+NZq3_@zCU&}VWk8U{DUjuOa)UJm|@F)FC0XfU$4_O?r%$<=C{Hw|r!vSbx z|25W7E{+g5x^`l5Zzz*c=g5P{EpzAU)zM?uTVuGjX28J!-J-|l7Hcuk2h$c_GoQ70 z<8F-=2*YFF*4D#!q+YU%|x)s?MPTMv`w;Qvne^XVEp=@TsYaTVUnv&>SG zbFqb8;rpZD`|IXwcl70D8gTDu`t2TVu-5x`Y0dZGE1k48%lb_6iQzV)?L!i%YU zSK8B5=Iub$_^muF^1hmx_y8c>>h!o4#nfQc?wrDBQmOW@8LXJZ?#%txRDcJ4>l*eJ zC~mSJ(X&F3JBrzlCU!cB@A*89)wQ17wwt|q+vwGaC**GQsY?vx?vD5ccN0h}jd1OT znp4(U(?q|GK`Sv$*Lit_HI;i@3D251Nl_LnHjy(mkUA!9O3zwy>z?_`4>>a&1Abzj2mm?u8Dg_uh?tfl`1u`bbI#}| z_ zx1P7<@Zw1|3a8U`xYGSzch3UQ%OEFibRC*sjBqpHLMB&?V zXPZ7CnZ?y&D)Z>->$&x&``;L1WB5wY`A_h{ieC~I0Uj_@Yo)W>e;N3@}>p5|j{);E9!u&6t@? zK=ugtARTt#nr*FZ#&`^~N+v+Y{Glnd)SJ_5rERyWmxD()iLvdJR%O`uTBH$ZVaj%d zihT;hIa61KCRr*CcDzU{KnlWm79~u6o&#tQCFw-DJu1**dcZd+NIye3AM4RPCP#_G z_aThif{T{=n8szzS857tSUEV>rvd{jSbV+eNu#Dbun(Q~XzjXG6&v6h@S15WV5WZ? zGT27pMgFvGyF!eQVyY>K5HsY5`C;z2Z;A5mYSg z5C#b7L6IIumI974(!$qg|d`a(OT!u&FMD zN3zUklgxyo&7g0@LeN6oV#Bpa>5yzVTWJDuNoQy|5sn(3T|r=3o_i6N)i%abYyWuE z`y=@+gWcEF4&nst1;sm|J=Bs!40^zV3&Yhk%a7I@TV_;LMfUSzgR^WYhCQ`u(}WEl zs5h_*yoI`?_|dd1oY~tQJ*x|i1kVIidZa1aL1=3Z#)TaB$rME2f_JFb(;&?x=^&p< zIp0_mzR#)%(ZMo~11pbec4xyq^{w}pINvbnM~G!#)hqzMvk$zeX)lY%HI0#5-4E1T zOVP}e)!P5YW4hEW5~||xhgg*`XVDPLjR@8{QN|#&xuu1h!XjaH%an%eQ*I`?L_)A> zn*H6o4yM~Q-7fO1BH1+S3WJ9rr050$FAch`X14XGUW;J)H`Y2V9cKH+d6gGHEpuSq zFkiRV(%%+n#j!?$JZ{M|6O3{{*8GVwG1jFGS${&&KU?2OAxsd&ybT91>e}x%hI5VnA+9x#45FiPFdxR6 z0=!$!*iWLv1_aV)s%T?Hy4{;+j8Gr%6hb_T8B1!h1zsyn)C0ri@{>xHbtDHuHTZ`? zUUQ=7!1kHbbGD69ewupQwR`Uxn}LO3qatOmL0lG$1I?5bjZ>_;M;r=yFIkg#H>niX z**`09Mj&ZzdmLCX&gGgIlq#j_)&U${V#X*9jIYWzetW*>>98pVRWnYb>vMXP_1|M=2 z{pcHWUhyY*SN!K_8SdB^zq!RZ^t@<(N_tiV`4ezT{7VYTGV}rmW>`FLWkByTNv-T9 z#Yn!9Y_XvM98^itAcnfMtdxq4aRmf$j_ORMfFEOi35)L%W8#yww8%nBu1OJ|{#Cv! zYh6ADG5KRWh~GGuKZ$35KY}E7s+iiznkOCNbX=^9>`a9O#U>xzwwhA)fG{>*s*Pd! zK*PZvXN=O1-Z?SR6{qUYG9%X`ObmaTSJ;$XSgn$nR57!0tmQ-=^p{ixYT7K&XLG+d z__Nk0XErckC|ZVUu#l1fqxoFLxnT_)PHU*Jl-~J=_*4IAxotv`8}Vqzf;}`hy_K(A zc@7XZ{b-OXt06p2d84cFVzW3CJK}(f58uYQ&xMmHL}rzm)4u%nK``+=hkFY~gjafa zbYbzy0zTUR7x$0Eh(w$;p5_AJzaf3dn1zNJjYE;>}dtH|Q$$^J1&<`AJ_ovg`#D9x5A7UDp{-vO5p3V^iW z;nOKmXX$-ZPkF_(am-VCut|Y?ML_L2aOfC zZo)nv;*KhgR^|{tZUi5A*M{rC6Fbdy$k>~WF?z6DbuV)mkhf~ebcu~WeccPd;*{{a z-$e5ua?3)3oa|+52b(75L0cqs> z$5rg#7y<0CLV;A>;~@e*j@mxiqI>wT$C3|3Xhdk%O3-J3{mvz?XS#3&=P{a76Xd7D zS93hP?5K+sXiydiN#xd{9H?(50vy;TI$`L6fz9V`Gf=ZmyRk;S3Q)lD`;a>c<>i(W zz#cnCln8wsd2*U#yzW;Myl-#=`x73$;5!>!WAwo`yIkMh`*2g$ zv(4rf7+Kir%r|U2|K*zc;kq0vxS-<>o!Ew_wMgDGF?4Onnap(~*;8RPyQI+iCZYS8 z=zMkKaVB!*Va{*Yxa}V0dQ~2ZW%}SU z)yE_0cgY`9K+vn;z?<@%7sat^oev@4xZD3at3}l)Yw|j0Je7?Kx#7 zP5``#23UYui7WseGhayu`R#Yx;pYI7+rQ||K~4< zkv;-#H{PxPUM{^_dbapo-MpQ zzNv2XRkwT#$6Q(Ye1uN*{XihE8lCi9WwJ|? zOCPb|$d~B5J3T?4dsArAs7^K-#+uAH-i~^AR+9K)d}TmbFXbht4OxaYR)MepWkC;E|)U}mm%qe zzB?Q&slg*0dI1Q>g~xVXkA`*&xfTiTv2^sF6uDjP(zmbt-q&3M7VG!nAAcU6p)(X0 z`rFpNWBvl2DIc$D^t`?b&A+9;Rcumi8^7mbPWEFRza6<;7QADRzxuv2@vdKh0`0Gd zp4Ufq+bX`d_l5c#U*q2+z_+I78Q+Kg$!Q{;Pv;SB#%&wPn)es!_tB=O&ual{J#BQ) z=c7NtcQuSY?{Ad?uZN7^Utdq9-{8m^=(%6lJ&y!meaNqfGdUhW)=ZAxZH2ZsqOE^+ zpG`O;SZI5gntr?+@lHs)A$oTpo-e|6uWl=}L~V@3jga>bh5f`A4EX~(U#!g5po!Li znFIJ2t`D&8DE;A@-O3l252!D=FPiS?ZxA4OPhd}YPjpXcPb@I(8}l3g8|)kX%j|>Y zqvd7f1>BqH8|@no7yw*|&{A)N(snp+Ue^5=7i*ozEN8z^zS!Le7{Swi^LGdD^uxb! z`=amk`m};q=2Dv1&VGacZ%7%-1oXd8m6nB80j|f>%ZyiJ^xIIw#%b&4$uh{T+e&3( zz@_T7vRLe5QGurw6*-p}GyBX!x3JQmvdS6S&i4l+TyDN+ZxxCfzKsy@I(6>&9>4qU zoVQ5KKiT1FO*vq8w7<7EJO6cUw9g`T#K*>Vv7xITVQ#ag%bDUHW?@+~mZoiJ$_po7 z0HWih!=dNJ;=H*}{#Z#|!yhX}Ul(QmL#{K_Q5_z|k3KWRsylO1ZR}~sn=Csxe~V+I z$BZsRK63OAc9flGN;n98P3P~=9EC$tCtWl>mAxqUE} zB386C2`X*kiPjNcsbx=*RgoD(vU}{0&<_LiGGV3W_R|TW_<87rP9J$an;4gA0?f?{ zi#D6*qR(dO^)?b-ka6mGoFp)!L08bgyo^2%(LkZ2^j8zU$Sa>D3xLG;iz~-ROl`k! z-)Rz`b^U#24g1?+08OWnl(tF7bl7BRpaQFed5rbE8K82ShL!sZ;%DLU5vaWULiT!h z7GbFvt}q3BVf`PAxhEw0%&YwXMd17@%teImy~yoDcG|wOigunc-cGiH0$x9X1K*|5 zW^>5Da;d{dhpDOdN~^@Ut`aNQW0yJ51<(LW-e6R7_IrPj`$*&P$8+37f(If9H?m8@ z8J0VA^f4cX4vN|wNqO$7W?YMrZHGWTnSha47Ih%v{z6Aw}-Qz=1r<#97XmPMCj&Lf}rw zBaQ~3(^#53M=MxeC!%0HAfmG(N_L3E!JnVC2yPUCi;Q|!)}-w>G*Liggtx8GBdH3e z@ID%*QkPa0k+G*Q%9V8T3J}A05ug6{1TEKQY1Xp{5K|FLDh!=T+K&?dqRNMil;wiupJ{evF?`LE7UX4~!eER#OtTsl~wc z7jBs-P%Y;!M$Wp*y+76x9ozVedHB14EGR1{4CWOcP5HBa$1V%2w#M z998pDte9kuWiN zy$jcEYLbH$A)q&m1e=7`3lMw8H$=R7&RK`C)M3xp1VCw7w8n>m6V*^cd{0DHjeq+C zAR&s@)G}JZ>U9flTF1#X9};{7;dz#%iKP&`(7h|1s4r!sfrAH@=;}&DWwl2kaGz>y zR(WY>Rg1(7q9Ujcs1TZE)wfDluLEk-Y+e}lx)AlrXGZ9Z5S$g-%It9VsDLZLT-X`- zhS*b-mEmyHis?lt&dNMaq+)Dq(uj=qpcXK72mW{Uqt@^0Ziy4#%Xn-fAcVJVP53!M{sgE4j$(RqJN6Wk zG=<)&Vy!Wt7L9flaX`fYp4gLmv;vQl@1)0nVVV8u#vRANE{J-$pOwnQn*yn~GXrE& zpF-*k#r`J@Dz0CzqN|_|60}nIrz~A6MzsRfZTXy%Bu0+g<_V0FR-qfmCqn4a1_pkMA88n+B*{etip0Ee zNR4xL&~wzzM6^nzS4vRVWPizT8Nu9t-$^w(q}K`Yp*%~EOs7uS+K=EZk7{>?nBe#% z>k74#ga6LCVQ$b6#0GMQ$t2z-2L6F+@Q>;r@#hIu)f=M@Z}gVF z)>OZ5OY|0SRU%#;D;+c+HA)-)D(Jvs1CWbLkU*+1RGt)EK8W{hzmmp?^W8#09rbb= z;Qo5t>g0jxIWhLinEZJ|Zvwj(5yFLtkRa2=0n-KOs8JxB^>A?0iq2`3NpH%A0rgfr z1Uo-*(Ag%0JPjv(p$mvjR;JKgun?$?CbXs!SaVt{p7J&rbxVEH)EFPg-9$0fG%Za&M08E zLEG=u=n`JJVt#Tz2_2~+Ic&)e)AmZ?zF9{U~W*>SF2AOyWn)hw!$I_(nPk4 z&|0H+%+`otm1o3f6qN;26wqHhhR)im$johj(5jDb)wJQ&Hp~^RMEYnwcwwr7vUO4H zI%Htys9&mTxZU~i_XU|@D4t1hfYPaS1bTo6GV9P%8s$6z6E_f2gmiZpVmoMuRxx}b zrU(X6vtJO~h+^9!yL<@xx_&)Rtm35mD102QY3@Hz#7W9Cb#)|@2Ux{_=!E3kSY;Kr zqRw^ywB;;~on^G;m@?keng=mLr-P938)ESwOoXMQtU}Xxc+M*vH5H1d1G2P%sgXC- zga8Jfu=}(oA0B*h8lL;^SUw#!Xf+5IOJdd*2eihFBN`$uReZn`PiYwY^?QvYc1FGT zp6OdcE*G@=WqYue+ezP3NPX}YS_ZUc9$05$NZT5ys>dI6Yuh6ab4Wk73q0S`JL6-5 z#)1h+O&g-e25QA4_OA?{fE)w3MxGhRX6by%cGMAGR!TE=CU3&gkdqq`XVI8zBjuYd zv5p~;wK$i??;B~d-_7AzZ%V#sC@ZAr-Nq^m0?rDXvDT#v48A^7hndm-`jFG%O zPAGvcJ97kq1RL_9MMuBC`FHu3FCF>ZYA?FMqs>oteT1KPq#3hbfoC(M>J>Y03oC>@ z?Jhj(S^du@3$QR-(shQ2*>=xND;4U zJjKCE?rLa4$Xc^LgdV|lJsocwjPf1qWJJ^*mQ}hhv%Mj1I~s1!JKfxU z4w)r#X@>oeDqFyOkE4I zXH*wn!LT=J-`ItXP*k^N*jf#FRo5Zw3T~Fvae!4o2Mddq{qtlL;Uu2t?CeP3az~Io z6MKq637U|fEClF)no1y;@JOkMWXXui>tGXah5%;7lEG8K-*0~hIl9g$>-mR8)$3Jb zG_6XQHk?#H*X`;6`Ns36el=&dnL>_tx%H*Q9WY8@M>Avs=`!10 zAmM8+{6z)$HGj+)%!Acxi-^y;`JmzRvPV?x>!k1z=9_T5?d;?I!c#3H;mY7l=ku0z zSE-N0m;X8YxIYow!|iigT?b&?1U7x)xy=BRV^(z1Z6f$*7r)Qs_xx$DRU~2v$9?Q~ zJN~U&;t^%Pp1!v00?D$Ec9*_=%sxx7_4cqY*FMjVjI{#2zx#E+HwJRJwnfe){a6#0 z$b{F!q}Qb=Pl-Rtq}dZd>$9WcW)ieV{~WS2i&Ko*GK-arAjApQb$D&Q9RP{N%TqdDP!Y)A1d8(dL(2K?~qfDH5_u?@p|}oO6rj^CaN5= zdSrKsPsb4@a*WQ5WgZeZ`sI}G$$g$&d%lHKht0Z4hfN~C?08h06aicFwO#S(j|2H3>%B&T&x8A)~?b#U%JpWYt@XbQM=tto0KJcb%SQ?IUnVospu;D8Z{qb2(=_R0j; zpy)tYi-#oXFs*!>s_vm#w7cdZbWhs(W5I*f_Lv1FOL76lex`6Izv2AVkp|{2=@sQ& z;^l%zJZAa4sP<4gL$-bU@u<7~Xh;Rh0DM6b(EuO}K#wUu3FX`2UZcKCrOeO2wga)2Ckc}HLBt(mt%tuB_P23Hgu1>aMm1<49^v=e36PD%V;ofPpZTg zjgU<$!j-!|_xg&l?yAcP_pGB_cfupotVs50{(?(zZhAJ*qUzCCP{xEbxV zE<8u`Yzqr1Z@M`zW zU^ZOFpTMe`hGhrpjB`cIKXN=Uirjux8-73*s+*?ZKBcN7EUm^_IqU*);vX!m$OX0-P0 zs!s9fC(RBipZ=j_HQG4JQ?$`eqs|b3sIkh6%Jw=kNDp10l(Xx2J^qW{G0@xPHN@g` zCe9*mf+OrPIZjH}IgoOgY}I9;UR+LylwN9*HNN#!&-!$c2jMX?&!|r+; z!7z`hn=_dMd6b!!{_nGtXXFV{xrA1RDMHe#mBoGFZyL7fGLop08gd3Uuwk*}5S?|< z{FP$BI;NqF_100lNlUS2s&p#E$UOXC1+WGcDwKaU)OlN=a3xqKz(W|2azw;FGG6?9 zAwOd@+e}_l1saVL7`H(lah-L{+Ukb}Td?%%gb>CN+2nq>^R6}JR0e;0Jd9)pcp5l` z%?E3sdjeOFJDUDa_A-*dz-nPYFPq)KNS`zSY7YpMNBd>n)GQKYD{zU2JY z0@%>^axzXA_bfWpP+WYwO6P1t>Ou$9!p4OSU0T-z#kC_tLmR_Ymz&}4a#XA%lEl!x zyqH><%TIA%QCv1}>%rDC7_aA{A-mGXPjzCf5ZtiNM+RNw{CDDSD2pycjq3-(5;Hhp z#9=AkEg@Pmv5*MU8HL57oW=#NLFTAQ^Uwr~Q|VZ9Z|SFXA%8D>g>&JoF#4mPtN-MY zpI9nF{S?g>2Iw>(*_ORPxw|rh^&3mE3z|k;rybJqvQf1iGkBmzh?UfPf=x5=L04lH zE?|q{(w|I5DLaI90E3i~q>v*19}Nf8zu73>ZGrzsAcpE>&vZd+la|=JSunQl1hbwY zmS7(}E}}M16)V|94c$qQ(n&i{i~QP4Y#oyrE$U-)hhZMRSsq{0I@E4tL44bYAxMX| z*aEAcDc}k$li!H*BFCRI(IF1PAy`f zF_7s^i7p{7qXxZbF2YkI`HkS_=76ypc;CGbt~^*_Fz4uAfaA{s?WG|#$Fa4#GW+WzIgOjyoP)loov%iu@tIHiW zLX&z`0;L;m+3=hpwG9b*BWJLAIo~1prKno`&QRAe)$%JS(TMa`!d(`4;2M_6{A{Cm zR1g;OYYn`@3RjnvK?PWzx+zjH8dV!e8Xn(20P`>qhBlekoGby#vOQ?G6d*^zy8ZH@%5 zE0cg}Lx8A$?mXCvM`;R(${8?UHoPX{ySD?swxVbHTkqhh(hBUAtb+eG+nJ+Cm!tPe zOo}rofmk`=CD~TAqGJ-=UPXs3{PZ396e7#L$_)kg})Nkx}bWYQLb5TVW+p zSkbH_5mS;@>SW8`q=(Vu&vznL{qR!eY!TGk2-0a!Vcn5SaBlD!Z%rM=MrTxLbq4$5 z2|=mo9I^Cm;TowpigHo=fWnl4dMMfrf^HwDSPZS$0qAhMpwQC%nVLRhmr*s(i3uad~6DPa`M`@);~9skuegF5yDngQObQeXF{Q4(~BAES7ohdRlgR&pX6 zN-s?#1&|#J+;d$la7Y39Gi?+;IdN~DOro5d@&~qS!lQZah#9O4Uo+QdZJN(z;bx|T7VI>&D&3&j{)8P+g4+)U_weIq z9mr-b|6cFx!gSiO!7%Ba8#UCh9qe)v4!U+g@pq782!WFH*DIPAy338660{p4G`)v0 zy9n4eMJq!414KYGWxtLifE~Nc-mwQr@_9H;o0rygnhj!*x3H=pG_(PDW2Bndy(7zV zJ4N$?*V#_cxyVCH2E1aNgweTM5kCDSeA-~(L%b+Op-UA@?DJ<1XU91D6DdB^%e^+Ha@hJ8p*u6@=~93;QKt$BV%S>LbTL z=K5Q}nfKt-9g!FKg6yFe2~rk*jO@?o{sj|?aKjr|_L7(Tsj(?EO8!KG)K4@XSbO@Y z{!K;dfpR^1LxOZdRQ539@bnWHuls#8Zzgo22{9+}c|l3ciXglax-)!|GiNq^HUoG( zZg^WWwm&KueY6f!|62!R7PN|Ld)%sdV3xmv(0)&Ws>5j(ruB}`89TlK(C8Lm+=+)S zd)v2)@fg@tp7aiCJ^3`3uht#)qe6Ukd0k2-?a3Bx3M^{LmL_+&VO!fA<^={hftS z$m7L#A)xz4W1t5)Y1adL)T84G%7l#~)zdM_|8w6!CTb7#Y3&Axgn(~dXiWRg7cRC+ zWW+r_c0D9PH2MTxQZy10LVulMgnoM|_^^)n1vp^y2-djrcxdpb?$~X+a!SoG_{5cc z8S#Ch3}`5PZZbd?;=&fAAq!l1mxofY_>!o<7hn7?SbpinMzVnKxi(y~mYR)jK>AS0 z`qYH^I`*hf6UG7-P)XOTaRorH@tIS z?(X63ywW=xmwE8R1OIo2fZZ&{JrC2>!*M?nkGEc+Tze$&aZ8RF`Q2OM*Ax4gt6QSn z)BDY{5x#lCWu5?bbI(jJ(XhtxLBw-61p$$H!m%Nc;lXn=RLZdEzwd44^87&m(i!#G z49y*;Vjt7DyPFuJ;8I{8b1EB)jl^Cp6*@Ml`;B+`ZR|ne!I@oTHkaJK#SQ{`)&S$%{4l6?bH33aRHJKEdP=H(|$l9gnBPag1L1 zijsQrqS3B1+_6RVSW%*@-Zn^ z{4J-oUTIKcuCvkD2YS(GQcvn;4N88epg_ptCulzDjyB%F&^V~&uO5q|oJx{jNY0gIi}x9pm1 zbP(eO9VT@f0=D_~k~q%SdQSw>YauT6fpMBzmbp2t2)6 z;x-gtlYnM9=Z06C49}_7^0OCDr*{Oj^(zoN0qKOXyA%ht)2&jD$t}HHbm{I^d4h#4 z+OUEZB9ZGMQA*1VCeRU3ctR`ENbHbrYy= zwSw1;%T(yQ_x?w-&%e|u!4;<_ojcRyWIg?Q(spBYBLQy;qwT?>0qKMc+6`*4dvY<=1zYQ2Gp2X+&CTwM9LQnHM)?1$)7=qL+(JyPQvJd|LiW;BBKX)54i+a!j|Eo?>IE$`+ylKH`qtebNRe7h9gT*nc*{7XBa-=(RonNDNg z+R}c}EN8mWaTMN!DV|BhtIrMfDm#SK(v5C0JW_)DynVvqQ~Y;r>l1h(z=r4cN5Evw zMybP4>wMU{=h$m!zTM$bf=C*-Q<(Pbrng1iwwT>`=SOB&O(D1c4jOfvlHC@2{L`)1 zCA$KTLab-^ChJ6JPptbl>F&Odi^6nfV2?ae?ELthK3_#oP50hf+f5YDPiarjhTrkS zUi~(Bp1wp*?|zID*{48~y}a#09nmiHfKiI$J~>gWwaOLLbmJY4pUkyArsMrw2{hME zgXE&5|6u8O!QqK7vu?U9YWU;P{f;u1hX*l zpu}!(-5=>cTk?(Rbz3I>G+F!aQ1-mZ__Z?$|F#FqHlO8 zF^Aow_X3`&GWx8y-#^uKRmgoSIV_wL{wU9s=y z&PTay#5__QS!025`)G9_Dqk74V)_zh(_-YP%os`I3s?@nZ0dr@qYbW68#vLFAQ%o& zt6+rt_oRyNjNwuvEpC)l!$NCcTGJ*Hqzhn>?5+qHdfAyojc^7MP$^Jve;AUY_Jt*& zAyD@jqI9CL_Zim;7ub`e`jfRG6#XJfq4ZX+edmSLnM4JOJACtoE}4~2>ekMCi-AqP zeOr8-)|0N{gYqO%7T?3gRqp;mMw_?S<}g0e;f+uh1?lMkQ*3^ z`knsZQqLdX{-^iry{hPjh4q6p2>GCa*xf2lG0c?hgG?k1FNT(z6o!hl3wwkEp zGG71Q)d%$JteM}vifFb_Xn7LWAYDN}N%&9*@HcI#c}4$Y+LsUgBRx)v@>lg|*sOh1 z6jS^$1))#Cd}`5tfU*cepZj6fLb>)5T7$*(g0=#|k#`|^{W%N*QF=jnd!h3|pwUoZ zjRf%}!ODpdjROLSp$`K@h>7sQM}$bIz=n2t%b=!qiSjU=0|{rL2?LIIA>CoWK(2eW znP9|wseVBJHUOgupk_ie?WG&cLsRu(bHONoR1v*&pNu4&J4C`@=b zU{7Tk^ot2=ctA7_;duZd4Yt7$X)-i)Pstr2C!n|%E+>@jhQ`|8MiGKM4zWc9cmlVT zhu9cgqDX`*DAJ0CE5yeHqUYbSOK1*~>W6&uzNruK&iKFS&+m<9E-WYzkPnztR9e^{ zsjkk@$iOf>u^%~8)(Kl(hqj4Q8Sf`e+D`KW_YB&J%Ylv>bIfY4N^1rsk6PA z**?eVW;q^5Tj`I_*4qAYH|OiObsZy{*_EjKDX2e#lH|2BsWyhh*BJ0ZOd-rtFd^rbA2g4I013ncS$}%n$wh2N2d@^NwrmqvgTkTXoh0R zm>&4h^B9yTP@*S77v+Y@^AMopKc37rs1v^F<{;?RDAcn*6dGVN2=ju%_od5sZca=(q4eeF`n{wRt*VB?s)m@mqXo}W zkI7$QZGmV<#o!h-jj&{Qg`u}jN;tI2Q4|KnPMh_ zGV#D3fPKVuy#(40ILCT3l;s$dz`D*Bfm=q>S>Y@&QAZcnlvIERox%$`S+Qi0|1p-| zE7ps(43`|TE`_quNn~SEkYO!`WCf=OSSf}*m4p%3wT1?DUEjaHLN+dJ6R~28tOuJN z;>0zu0%bU_(q6agDnHz?j>SI?0*~fd#9qZ6?($(C*w>Rz!kZl!VKQAbK+3qX3NTm& zSnG2TYc7?4;tjc5Uuk<`QcStMIdilRZHTXUG8WusRM#2wLpivU$5g8KpAcL^uZ?zm zNEJ$8A7dmxsD}FLf5cP4bZNST_n0Zgi>UYASYWE|&;6;=A@ z)r!$*=pQHUFes^VP{17_As7o!>BzemH1Pw(41$_Fo{*mAtgARy?@>e{z&ufQzH&5p zVEURi_8@IQNkK@2oEx32y&JR5F2ycgIYei`rib9&v08prbr}os1BdPoyu57!FLm@g zdTI#Drtr+q5vuGmc(870FC8Y1j+^zZ~`^DjwOp#Y2=cmorZ%m@Cnx3@8ymK z)}61V%r zm7V3GoUTh={}b!qz}H_ZO?z#R4uK@4V1OVu9ty8LS)5OYkIB-VD%i(ve&@GmGkLw} zDT!Tud0bT;X@r&00E+wacmFaMsggLVk4I8 zm{ZparE}&bw(aTK%qnWS6S7O^t|h0dI3v}@A9$ph)bgw@g&CmZmQb8p7ErCj_V16s zPE3c))s9`NIvKEbb``C}7R;Bv9VR)B8BbALbJCw*!=(raDTx?+k&K`5xjgrpr`-VQ zJwJS|3=GaEfr(OL2@F~MJ|#{|xrfQ)cy7*c*-jl+Jx7!GrQ?jBFAv?cYa1P;&&Yh9 z=7%o^PrDum8zbYPmkaoB%y%pK*gw^gc2=sk?&Gk(>cI(J z1PaI6wXN$YR>L+AAJy1({%G+~ZIRh581UrB(u*7+SZkW=a5#7F{b0$%OZ#n5rWkF^|d0bw{ z(U~o@Sr_wNP#?jOn~=rV5J+JYJiSOVXigVJB%AOb$rxWp9>bUSJ>WpbiB&j3^h9hK2moS$rS5yeZ2hjt{g(>0*Dr7O?+Jv(=&fM95CC~s9jM{osB@vP; z7S_;W#{^+hJY={wrZqROUld8yrw6)0ty)w6%b!a8vu~VzT1OYx8uJ^-mXTSzC|Y#H=d1R%EOi(;@334W$n$ zGN-b0ENRmeX1^z6)bI`Iu~lTcEqqOh-8=s@(Jx}%-MH^yp+iyN-zCWe&Si+gngk#` zls1I-`#k24nYT1|)RHaD9HcT#!poVM;u`smCU;x>^gKCFW|{(`0L?2-m=YyO@GBg* z@r3nh7cCC8Mj6H|>emvP<(IIu&@#GNAzGsgH~RC%c6jlJ%vn`=aGn>_d6y+Fr+0w@2Ei7h;s#UOnDA^RuEQO>>5{u<{ew6fWFa7 zsO+jO)7f$}q5uZ9rT*C!c0s|c0!_|8izVvg9I;#v_afEVZtF08P-c-mu=^-0q1~Dc zQrdO!QVHw94I;@|Jsfl0kyr@;nLlOPB@>>})tMPP^L)UwgNkZbT1-%t+q4bxDQoqr zS`NB&->CP5O4-y7hb zrC5IHu$E0t={dID8tzZ3nK{7b&$WW3i=;q3U?=FzYFW(JXg?IRq$zUM;^ zhL$Hi*fG$%g5i0oS6q1_x?Yl?MCZ^cd^kE#I#vzG^j?+A4po3+vEpvc5&&r|$;=1Z zAdCkfkDR;>d8cFk*IP*zt64-SDVNG90aQ3u1&fcl?R~rT)7!FI_O$#o9b{_KP!~kZ z5E>%A&+}MBuq;7q9QE$xwWjfnr1K+3b`0e*B?0QmXZpTa#*3Yp(bcDgrqK1t^xxX5 zB5N1*6@HJCN@DO#i{aNVRvvNnr*|z@=DOS@zX5c8cYdg&pvrxXl1>;r=;(G+@5_Vf zxkSB}I|`s$4%t~o;LN(WN}+@hq8XA;g!^hH+i4m@QXQS&r7odSfq8TK?Irh;Zbysy z=mQgADQdv1^BEG?Ey<+s5l+ME#njM0e*!36uq^stjGWmh=dmoFDmXZ(tZlnatqh#J zx$h?iXBH%nR-stYAF*znmTKQhlxyBosGqVJO_c58QC3qzO_&+SkF2t_jIE$6W2+=Y zggveJOb6|35i>vsRE=~|0l$9N77taTy8ubw{=ghF@OILaH%Vw`|A(t{h|aW&vT$tM zwr$(CU9qh%sMxksv2EM7Q?c!&t5=Wyp4|0L?)0wr?6dcNlt*twN=4XOuqd59(V1Uyd>bxl>5(v-{=<33OZ8VK7jZK=sXg^S)yzM8eQ5PCYC<7 zA_8oQc*?_AX)g<6_-QgIlTsAa*9+yJZRMU0%^Sa1lnrJ+w#vP?qfb{hVNIge=s$rC zx{ODHmn@M{Icmk-HN~}|q5$-Tzt_*lC|1almTk0L#3YFBoHEiQ4Xy}KpSGI&EUpD@Jy&gjafq{;sTLuLOSPS z`o+6gn!WkUZimrSt%IAHqihFjfGr_ylvj$*^qHX#GxcdV+wU2AX#f==KDaDeMJABr zVoJ)N^cd^)q!dXSvLa|4BoW4q3iV{s45`vtq~a7C?SGyF6jH~?OcHXi)}za?@ojTj z2;^&_!{p%;0$n=uI|_oUl?_a7(7zfP#GgFC$rUw~maT)`^W8TYo+`Hea9;PGhWt zrd}DXqnIBjdmFYU!x7T5YX2RF?3Dg^{ zyyV<9g{hMGApo1>>n|q1Am<4jpYx+o;3obeWWyjm3$5XrL%vc&KYs;2S@Oh=jPbMx zs^D`>2aN7u1wET|gZeLV)cZx&1`?+GXB$^xs&~zLRX(jk3|pCQl5um~scgk{H)>Kq z!nwz9x;kc#(&ES643$GAjQVyY+T^=q<-^+Lsgj9O zTk!vBQm$G3r2cDxeV3w4A5hUeWJ#TH?#Z}ruK$Qjqh*~=9Rp>a=7Zv&pJu#Woke3zfC-6x}YY(c= zZ#)4H%>YA+F9dZE3AnYgFD*D)Jlr>ikQl6w1*FgOEa6{CX-KO`;7E>s2taqW$r z6hqTNoCj`0FB(>T0@vwBF7qZ&u;(CZ#e}y*jax{K1wIT zpo&3922^v>q!}k4#I>yOZd5!V?<2WImvljsIzZCaBOTLTJ1oUXVO5!0mN6biV179^ zRL$-qKKP_?9h-X{Up6)OM`2KmF)HmC*)CYZ4S^oy74Be;P|X2iN)^Xicck`y-}MnL zGeb&G5fHw}QkD==5{O|v1f%hyX>_QQC{MuN-z{AEc_VY=sAxGErclWaK6(ns?DXsb zKLBzM8B)@svU_j0bJiNRU1#igskw6~;qZ+448n{t0p3TZ8`v`kXZ=U=>`=QqCKz$X z)@T~eanPrKaLxg+4-lssm9)rsu=4Yq8ahLIz4^wARx2eU_9gJlEpOXZ5Ha{dSkWb2 zZ6c7zoY{$)^NLZN;~eQCUiJ;wYngbg3E()NI>|-(xh*JZJ33s{kLAPT;gYj{v`#J< zd9klxay9fUE+#YlMj3Ibt=fAkrecW5J!%yG8SGgJeDcvagO7PSxhR%;ci;=Z!3zqTHiC(d zf^Mc(Dtj3-h#%$Bi+REz^LOjmU%(&eHfYaXvM%vH!&nv@lpQ)$8;~7XPm_ONd$mSz zahi7-2poB0IR?=UH{qt2D6#djTqCX@5|yu=Z0PpSMQV(?W&r@B%zvO*Lg*_$nT8i? zyK|uK-{5Y_6uZo8m3pf-`2jU>uKKYJtEDSqKhYP_)nhrCtMJb_zdQ#!0N_E$NO}`$ezCQve0YZ*`zQJ8P;%W-fLz(0K5|2{ zzuAC@$vXBm(U){iKH!-HzHN9{CTfTJ4VLPNZSp zposy(j#9ajyRU?N-rzsXciHhb$gc!<$sxXtx8q2Px;>Qo2OZ9qCo_6@rxzFh0IYck z73};4>YU%UFZ(0-fN4$~MD`u7Pxqvzi}A?HT$hiipSK8YD$Rrk*IU?$xhsrQ*gw8}Z*R@Q+C1N^-SQhrxB&)l zX^E;)Ui*Wc0~kBKp&TUdnsY3L0PL&cQ^RcJJmdXMuO?z*MnZ91w0gd%#fkC5!yP0IJtUw@Af(ljF=oniT(8qH;&zXu!gTGN&y zASnR6V_vrQAw^xEC;hGrJ}UP$Hrk6OO=7lI3=TgfL&ho6R{k8AjK`>@jdy`tQUW>B z=m&2i_C)G*&UM*xGB`i|#7Wn24|!1s!+PyZ@eQL3lz(DZ5^T$xyWO}r6Rq(Hu&J9; zqe50pjPsYjtEm@oZWv2h$2F8Fbo=+ixs3op#)}T4ME(?6M%oX$^=rU2&U`%7;@^U? z<24UCzOohZ!h5D)qP{;qA9xkovDxjOXN&Ocf-sf2S(nWxw9nfgOL*HSACJL^J%)|X zs~aAW{s0&Fa%^7qS3`;Ck&lRrpXaGyLotr&nx4+H1Xy}a9Maj{vCr+Ih`RyEhDX5S z`A^TS!V~79B&Ij+PG|YgXYI40?3eV@i@)R3VUi)=Qt$gr6B5^V;PEaDVYnd#Fws{m!s&@diBf_O7*k3=&R6UE_ayD)L0R zF)C)ye%|;buFYQb6w*}xaZ@Yu=K+Mx{DD0c=?G^ik+lR}wu)ycjd4Y1w}iYZ*|f@j zUNqLpFM4G2%Z!~rIfZr2?vXMqVVswJbo0(IC~}y;c;tU4{t|undk1|NeMkNReJ6b% zeN;Sye~12p?w0-u`cD34|H6H5eY`niJY_r+oS!{Qdo(=Ld^9}8eB3<)%t|hm=L(4C6~8Qwo}xaIO)uc#=Sy!$qPp^L%W=-ryOQhQ>6)v&3;tIcuZ?9IIfDlR z3P4LsAo?ebe;Oblr5T|^LZ{hAL;3*f2MJGgc2mB*dBqC^OR21b_0>ZMtf}}pP*hUn zXi6o}C{m-%=Ue0!s%Fu{7SBBCP-aF{q$k4@;s5QnOO~_}3P%RV6Baz_lHko%3ktMY zs$yM454FjYBerYu9r*-)v1Q4JIb(~%he#%yaj;c|N}}W^A9csl@b=m8q|^ftD$B*F zlHh-(927W8K#Qx4@2`bx=QSPmH|~eD(2Gl(^P(z>kI4L6ei>7x;whjXAw#*VCaNV{ zQY6bt_FG8H#KZ{s-XUF9aP?B8#SF7<#q`ZbrlQ-jHS=RDh7`$ZOjBEktE*P*6XVB5 z_hYaOhoVG|sJT<6F1PAratZ^qh-~Wy>)R6HDA6ozXj172VI+y4k<)>s%+w;H&7Gk+ zkO@?!*vJQ|*^y^LU4Mx)n;4f-30f$pY&y$OOrFuvtlvu2pSSmGGfRteR3QM*9+$Bs z^wD&R&F zWz^`xP2C06-%<>PK~Mn-C5a$!3!FAf7EUDS)5GZ9*Ar3hT-a7fwg%zM8#r=9cGLW9S^W^@!7#x5WiEBuS>3WFuUO_Lw|9rqxHZRxK)6$)F1VVi#WEcw-Sh!Ak7YdyX~YJ<&1uMkfLIlxt2C{*)m+ zNQU|m?P+iA_8GN>>oi-u>7&z6yx>lZhV<8<<;mWQg#pG9V(E$MWas(Trx`#rkKD$u zRSbYf?ZyHXRu0co}kN9GTkE zHzu24oV&ZHJ~@7-!BgG}%Bn4}e`TYW@^7JLVy{&T-KUfwg{U#fb3rF`2>!v*u?|1fY`08P$AMvtyc6|GC~{a4~Db69bbUl zCF;|MPwn$(k31mo_Y6(-_qK`m_%s;?7X5>Rz4w656NvHmP^1G-4(*JX5MvH+@1m3_ z53*?Mhd9SSMKblF-X!IHSyjO0z#AGN5C;>u>U0UFvh;;#Tl8Qmes_J8+r#t}t z98aL&dR__G53~iJnf6$ZykPqE?l36K@D_2AosdUe@|@C`MOm)IjZ>2>(+msy&GMfI zfd*Xg)GBx@=nNwQ&~)@8pmQZqaF&-M-9LR5!CL&_orcg9Sv>=0thWBu!4|q~?#PZ^ zFrj}@q$#S6|N1eHf57#U0bY>YK+OQnkj_nDCHwIfY1X!^RU>s9szK&i{xy*dTqd6i z3%}_dF^prgb?7l7=wEovoL0J~pnM^pdB&aoF2s?RMUV$n+};ULvF&2&%t=O8qesFc zz%n-F8+7u|tUrK(B3Ao&<+%_-!GRA2cPS-ncXww&_ZQm*qzLiA^{4zFD42K)AGQ|I+Y2Ma zKomIzJI3q{2Cim&M{8DpG_c+rC8HFP%xqCd$fpiGIRWNMc9@l#u1l$MT$4yb7o(Xnimd5~NgnAn`k%Xf2EF>_$1q$_!)zjPJHuKsl=` zW%y(tTTmOkAM%*VpaU!*-1gMWuDX5&^nm?QBfcfbDbG0U@=sBpLmKlnWn3zF`Zvf_ z=+B=l5MHP-wT(TSZsy*Rx$#m=Ghtv(_)xn6{g{5A@&Z<(VWJf9t?*EL4u7|^ICJT1 zfiUtvyw3t1^`zwP(5)-$guC0ftB@2Wx04@+e^;)(3U+jU_V_;ljiZ2E>W}Hy=f$|4 zr&rd|i)o7ozJ~`N1;F{oy8cq@&-sBO?@lbA;nNo&cjL8xEg~+$`~5;m*PBdPpm|`8}(~zb$w`>)_c7 zxRe<&3gM6!4oTa5B8-TXFJR=Y(WrJ2bl}ptM+vY6a);vG+G0+;~ujv>V1`d z>s}GmdmA5BGkcP~1Yf@frRUFd{` z&qCKM46Io}C(PMqZ%+YgBQ|I2qEDSD z=b;10_`M-Q;cMdIN++fb<5#d$k&f?S?wkxhu2dHruabos^Sq2=(QTr!|8F}K)nvo* ziiJa?B%%DD@jN9E#88%vsmP)$enWDQkh@+4v-9-Kd7hvEbVb4l|` z0z7^U91?FjDC4%13#s#JB39V)WJ{@f5_W*`vILC7C3yHFlRHb;^yrp=m`^6)DIKl5 zQtfbZ(mTCJ3A}1RB6^O|;Y~KP_1lm6Vd#5^U_&N4yTa=YHcmwUEUE`MF)RUBg25S; zpD;$c>gUv8N$s|~VY^v#kMrL#M%m4ph%gexS~_!C%2xQFFix)n$JcR0!mYQ!U*Z7m zaYMGNjYZ%5`G?zxSBGyFzG{Mkasc()EWaSto6&o!_2g%%f^_NbmZ#ENXJW74^~dOl zK%1%MKI@CVgYV-^(ec<;oCoL2&TiNH8vWFl3!b9FP0o~m$Hk~BVs@ANXR`}zOV?=i zQqZa(pwwlXb#{@xHHP3KjvPJw1q|>sI%|RC%vgM-N6(p8d6=CYWpk|4reF`=ny5Sa zfJ!N#wAgG`&^`na;E zcfKWT2{Ra8t0BD3mZhH}0hPg*M65f4F>jM~_dBlEnViY?(`UZu z`3vP-8N#WXt|W%s8Dk|ZI_q(>e-l-M&a!1L4$PC5lg0f?@VX<^tAL_V6q%=^& z1E>~MU`t)fQEnw+E|;ES$8GNCzc(I%N454(d5rMYu;Ic#09k!{(BBgw00r6P z=o({Lj;uJOxWlmxwcg8E#(n-@<66Xw0*9n?CfLx;vZ%A*6%c0}V zQE4O=NG$Y+2p2P(hC)d>OCdh{9O~G-5E32{Cr%YRgnA0xG5O(N*VTpELqJ6E*6&C^ z;DcF7#EL}XF*3>U-#~9*?2Pr20661>!Haw9OXyaR{#!E0f(`1cR+5)=hY4g9+*$l& zprM;&1vw*^GaO-V>Uv6eV`d{djrB!Ojs~Eg2!0!=X0hP)hil}^eW#%?P+>YrX3hZ6 zY~m&EKZ|7GQXb*VE-uT!J1B{Gr)@+8iO0*b(jxI=0dk+hxbc({Wa{2pfM?oRU_5wF z-`uiaeMslTy)#jItKtf0hhzwlpkRHdY`-Bughe#KjxM2m`jK!rovMJ&=z@jPj5Kc5 zj+qgFK4-?0PgBtFHqVG;aYXteW8*Y>{=Dn#0x)IS*jc(5pa^X-jhz zLa0L3L`r-oz~L4uPHDRu_ZFozV?zYCp=d&IzyXLiVCCSxn5Ye0y#wNl)D8v~;5WI+ z%brRxs0(Fihj@B)V@~x{LI~ye!c``#G`9$#wB? zO>j9W0V%E!PtdHws=6^Goxn|t6!ePi$Vkw+dI1z7s{oGhS{!$V@#7QD&9`UJf>r$zt#^0U+HGq!o|_6HzTlhUT^95ijiUNklBN z8XVEn08bJWTDogAz(w0rw$=&Zut_z^N`(nM?GlQadR0=vFox8Dibk30Fb)j^^KXUQ z*q|4cRSluXKO1oe%nw0C!H4IV>xY4U8 z3hANeYk+fASzeEiN5Jk2jHy2%=Z|%Earza*C0S>YM|uX z$8$O5H;0(j(-q_8a@8ClhU1g-J0<-x-ZWcov7&Y1JOC9Z2qy@{)je{%PLH#+ZQt^6 zEXarx$UX4T1k*~B&>Syt5E2P=OUZ* zIe3p$V!+TCI>bvZ(->`BI;Tuu)wV3s0>mNPs{`-|M@K)+K$eGdo%T@ng^sj3J(VH0 zb@&$iUp9EpAPZI7gXOfn5+iUq`!(eO4J3^Yh#IZ%a!j&-T^N%*Yy%^Kt^nw^^)3TO z*z(;qM1jq|UwakQ@QYlw_ROHcn^0}=2Kz03GXT5E6nnhS#{2TZo}|wQ=V@1h+{+{) z2;+Ea0tne7a3(yaY$mV@(m{EGx{V zN6uejk&?ccDuyZ!m?>U7ie{rm)UqqyLC4G{Q4!2`2su#$F1X8xO1%yKu)~{D%=l`( z85=Kizt;W3H{4i`{F@$`-xWNo>-KH`d;|R0AQ$~*JETm$siOfmyelqkZu{8k9S@zI z6sG<^n}iy8`YXgu**;XARi>V=xy{XujfjHomahwo4qI-=JGuuB2&=4&EGkwG@{4Yz zu{j-`&uMw<^I!M!yS}?$2Y-5dx9(O_;~L&F1zkcQ-4*%gYuj;TJ-%xWMIW2D!vKVy zPg5QYY&+hs9VdBTo2r$a-*1@ATbjDP_eGop-o9h?2eBL7SDm?sy^qI;MT*}x7ZrqE zn7m(yyS@H*wR!xG$5KC!?=HIze*9j(FGXcNC*|x{dAhlt9;$T(?yjc~Q>l81fA2|5 zub6p%+-I)%*0@_AY)@8ZezjZJF#+B)-uMGD-oEMsH{$(J&5vL7eoqwlW|lLqZ^}{$ zoS732J3V1U@$j`0jv-AKlMXwwhR}H#H=?+laSB@7d%Bgqg*F;?U-k57@%x1L4?K!- zl-k_+b#U0@p#1USD^;Z2^U3l(qFCeik=k1|8#U%}FmV~0;0E0-xs~S|<^rrXH?@lW z>uKOfqa>UFH_=Ei!T9BJCn8YKsryYG@W~J_YaIf@Y@tdmLDB1NwqWY?5Eds=Q%uS3 z!oWZ58d};o?5OL>!dV?cSz7w!Se_pS>&;^8e=9MtQj2UHAQu8WsDc{IA~H)UD)lQV zL&cgQ_F3__2})Pr#OY68Ix1i?Z-_oKcb%1qBLRYjkQXRtT;dtu=eGG;X3g$X`|h>M z^drWDUPZ5FRUyZ_#`)^wzBNhFp$v^CZYsJLbGpZwfu*+ z-oL4!NoMooRA+vwG`R=c`6|lZGa5(0tJ3B9@p9e$adOl98TCM03&6Ewk`QQnTzTLB zt*au z))sXLndKe_55{&H)||U^kKKR0%09g}e*Z>}$NjAA8t|`m*ejq6o_pAHB^<=FWLxpE@9Y$Q(QA4(C3yw5u zOX=BI^^+N9eCg5<^(lYK$73b=M%&o4qe}~!!Lye=GZ83BWt8ctC4&kqMKoF$k;(B} z{zxWSQ-rHmvQUhwGXG)9jW#od$%#LNktrXy1I&jPmcR~HfGDpYNs*<4;%^eALgl-J z;|Jwt<%_YP;wf05BFiN$Aeuy#7&q=)ibTv|v%}Vp*Efmml2k&Q;R&ST6$rtII*VyY z!l0?kSE%VJth=-;7eyd@%d%wF4RAZ{NzDLZO<16DiNM4rwMZoP@7t2dg&k>CG2taO z0<1#%g(x!Rv`D1U(pqVR^A%aSr%Pxv=*R+=dtJ2Y=YEBT35@sr!%<@H$sJAWPd_{pIIx0k(s4XYyKK%FD~*bI8@n*r z_nGc@+=MelP8$YwGkLqPX%@~5c1;gY1GsWrD2Auoc8^P7ouT1yp!Gq&#E@3t=N9pd zePaWvz{`oaV;Z?^xK*eyxFVdTF z(mQQbrO57+&M(==&IvTY9CG2-0Yt-{QTU+iYyON)k%SDx}x;GB3K=jE_CT0|$X3K6g zp*w6fPH|cpcA~+VRaw)uOg*kq>f*xsw`n9<$cP~}yB;-rgl-C*3LFC#8z4+JrX52K zj!G%%Z+4Ooe2R&Qryuy44NMDq1b`GyJ8Oh2Ks$Y+_!9<5*jFiJR>#dR$_T+}#F|kB(W2%I zx1n24<*_A4Q)Ds6QH8gWcf53_cEl1z#~}r3f}5g!+FB9f)pXjsCPhwa5nMQN^`N2TrK#-l#i=Rn%NkaZhXS9`v)52Who-cb8|b^PO}=qOvZQ}%f?LK z&6&bI{ajo!91~s113GYDwWv(*!7F)Uv>~vqgW>4sFP3bNux9u||M89jE7?lGt2X*8 zc6{N;JU68Su`L-8Nm&rItmd$gqj`kw(ANJXE1ZP%1evgjFsHiL!K=l#PX=}tOPlKS zn}fH}O;)>J&`#qlLeTQpEtp($rTg6az6W!{>N5TU8-ZRT0K@=}CM|@+8Sjh7?r3IT!!YJfn39DlTFW3v%Yyz{6B zwgwM(42QoJ8Dr?jZAb7g&R5^}8=B{W`h331AGSs16Xb(LvEdnVxgR zlOQcD)prjsX`?biXd9iswr&`|rv@cwa2+#p`dPWeu#L)~)`Do;o;MR+cVVTbKXbKI z%4K=Shjw}TdU4>FFt%uC{A%R6p{smwoN~B}+s{7DUh_z?+O$4@CCwDTYK1dHUGqmN zp8MPc1AM&6>n{8YsNC+-0WbQ;aHCKN7|r;|&){8i-YruYBFwJ4rE^d1CtBUG+LRq$ z6k+S_3dAFhB2f8s;ZoQ7X}$-S>XBO>gmTWv#qB;_CTrfpc%-;R9R#|R9@s3DzUc7@ zu)Ec~r=a@D_c~Yi_@0fw;KmBn-E1Tvh9WF{0FFW>E%b^m%XDTWjyBEc?b~4mNQfkv)GfQ&? z0Gb3FDc`DhzXZz|-Y*?rCNHnWJ7@6>@2CD=W&wN(a`08IZdO09ZQmGkch$ePLQEa_ zofkJn)tjyE#=pw0>N^E{ju##|4Zc+3_st$iuk6$W&@}(j@%o-P!AD*mQoxirbXYly%(1yQxfU&rBVA@MD`FF5}0(c#l zP>9Ry&cJfxp<}s@Kc{#E>VKR%&fK3QGlGBCgWw|zNh69Yz(&=~wK#|J@eRq3TS&!0I^4g5#qB> z1x|(4VxvEY>8d9`!A0OQpyM})F=E6yg4^6s=$5#=j<>cRcatQNvvpz5IyLQYJ1G4Y zydOiTjA*Tfe+gj)8!OVObJsXN>lvNAW&9tzKO6*iTbu*GHsyIKbp5yHT3%c)89gRG zmMEnT5T7TLMlVlZ;MH|10RRrt&$}2KKw*~&;Ci@-vNiX|-tsKMhmjqx%d~???=Ehe zKJY^aLIGj^C8eEU+rxtW__Lj8*>PyOS7Q>GP+Lt>?QG(h43Hn-QW|8)fq->Z~Vp%*)OG^5eS z@zAGA(lrxViY0EJ&DeTutY=(JU8=wpD+TWp>v)N+B+m&k;}EsP6bcC;(F6s&1`x>* z?FAD}kea|Go_2RG2Hk~0+dI3@e9d_DxE#++wy+IIs*MD8KL?Gg2e6W zplEWSVG}LV{^;B+ofr%C@e`wUiYIsnXD0^@rMHkrybFeR+K+9h{>xq>m|*E z;lA=H&vufgGm&X~NT|_|;P$g&O3NgskrU$sVx=0SqB5gZ+4ZLq$+ze1kTW>pl*dz- zi0qkplP+V)%|s(7O#r#EEau^P<%bnVA^F7C^=uZEs4+&KxqGp9@Fq&A^%cozPUNK4 zGnMe~3q~(0;Ax!je(Z_+LixHv% z7&{;cq*{qUf~?*`15&Mm2S#AYMrRNQs@3`pQU-e5h~o+x3R4V%;Q?FNrk7e=%!O-G zl)Ii04ZNZj69Zo?!ZGypOPYXlQi=U3w~+kyGn5?8r#tAM#~gT+oJbcq(4&hpfzX*~ zo>}M;qa0~eC=p4rpeX=1@#n(IHsR77P`0ABb>QBHylikT@{jab;2X=2{2FjRWFnUU z%ZyM0LSjotcNKW(Z3M*FEzWNcHagybci7KI8&QI>t_07Z3Qb?P0Au_IvUeB_Otspb zV@SmZd9*|nE|9sqI}=`cR2rRxE0;J0KiGjQ^iwKlb5CR^z_bh%oU4|7*$VUy07GlS zH6rUi0;}p{cUcHSI~i|hVRYUG-+aK<ma4RI*nQ-f<2FY!8#B!1K#=6IoU(T{(C) z9hi#ud{l(VErrdTFdoEH6~=LHy4@H?tw>>F#!N_ToxeDWZRR>;Pg^ug9AThIE1Pe# zzP(P^R>KyJ8+Wat{@>DQ4Ua+rFq5!7lw(0)o?H4MCrG%N-{~BdaT5FblJyF@wnYKp z;#e7yjDIse@ay^0K)p@*>sj4sguet)u3CUUY@O7+CvNzWUOiFRb>`qGx};^zrnADh zz0rBIjL+WGKIAJTMpd)5OFdP+J&aMi<)aR-JnM7xXx_BvgSeD)YefeXph2Mf=?)BkO=H4lweH#j==99>JvWc2xdG19-7eOTrKplktgMP+a!S;|Z~= zg4vF2mBw!T#BR4fSg=zMQt9Ne8k?G ztjGDrZTbqix)o5%s2_O`bI$==#Rxpy`R`Qnfc{9FrNe(MJXjj0PJEAJ?1iD?`jloe zNI;?z#O=@|i6mfdTjpAFqs0(P=W*1bKg1wtYKFC|3O#@xh@FUrn}G-un>GhND{p7*_M@7n;wCIMf}CD2Gydz1x(Svdr#GRMeXf=5Ze9;t#zy*2W$haNR(9++zi8*O zq}}_;3GlQ?%42RrI-RbORx7o;3eo!v4FBpC`M{(Z!PPFnMOTyijMC<9_2{~T;e5Q(Ehx*f5HD(o_Qj@hf2$9gQNk#+M=Bx?{xoMZt~kt?+iM?+3W`9 zz0}pTm&tj*fyOHy#wtR*$Mfk+SQ#a+84ziztxqAH>jn& z#buzp@q|mqB!=w4SbAuYVQGwopd~<{wO@D32!x)vTvVX?IHiBPg^JY)ZiSU((uRTs z&EAC^Klh{X5d?g1wNEHflgL}j#RmK2TQh``QWoY^R!7o*5R_% z;jeK5u-g~=hVQjLqOHrKbkZHj`M4^@eLSQ`o@ zaBbA%l(+K3@a90G+kqmf5h{2wH^y?#`+Om}tL`6=z2xxcwWGc0xCfkVSr@e5Fc4KF zH`{XlmU+Xsz-Zs=a7?C4N2*g(mDh)pQ@ij3OhuK}Ab!(MZoZ|uSIT6-=k9w`V6qcc zcIVb_;9eSZ#?^cJ$<^c>wOLdmqzOcs-UAOLHr@L+YR28hTC|wBoX7U5fM8_B86)p5 z1Xhuyz)E9~Bu=PO!zxklOVRY^Qj1W;9#*$Vu4^UPMzV8+;ADXqsb-s)$~FQg2Nkme zrbjH6r$T=Aqg659()p4HMP$JE;4YcB3_Fqq3f+rX;F)3)!37SW`EUa5LwoV zRjnH6ye*509eM)smqpy%>uyI-s8j<1{Vw#Nbx1rb(1@V2^=FzP!v=Wf3f1ZrP&i%L zX)13MY9I^hNMz21)*8qh`22AkbP&C7#Hina zk5uYlX>sNKr}oXDj$HwV<-e>Kxo!^z%L#r{3c_T}Hw%owGcw#olki9VBia1bunZ%C&b4lcd?L{TOYNMsK+8m0m_mC$1WqZ^j8YO5g+FZ3@xi3)zC^{D>mB)q7 zERmJPY)-?7iLvjb&-p&%?4M=G!)_ereH(%8@kiyV1Edbu(-`I$zh#yS@4L!*_TVaQgOMufgo)eL30vblM4# zrJuc_i=OUcM(g%xc6S^E)M|X*Uq#Ma@zX@FVAU7clFqCIRH!!A9TzE+g|Q|V=Y#q{g%QeG>!!1o-os+9PkBif(&{|Eq_vewc z%gKk$mdKfy&2JnI0~+Qp`_N*BWQs;!|J2nX2|PRbRLhB+Fa*{ zW9mnr9f0QNw%`iD_Or(ICbHn_P0~ZJ%{7%sXPBsGHQwFO;3}7os5vuMGJxg^VY1n0 z#p+9|uL_DvMsUM%k&n*_L%3Ui z?kiI*u%b5;TPZCTrwR$%PlIkH+2#_rWBEYFOl^s_NjXh(#5$fyZ^f;t7olz zzwevY;nQ}C*Qe`jblIl0&0W)zGcQullbVSPpDaRA{-yPEgN@@+q~3TT5c%5S1e53n zRUuR0eQ@W{&y>+!!|!!tJMv0UFcqDy<2$m_Jjo`_xgSyt^3=K`)O~>=t-BwRl<+Pb z@c%%Rp-;tUMvy>2TrfaD6#qBlVGcl&0!VaYsZ91_5s`=Dj%4HWgA8+Yp7iW7wc0lM z-CuyhSkSE`LEIu^i!b4r6-b*kl0ZtBBbEbPRi@#dGr{K9Sjc!HGRxJA{!X&_?RJuH zoDt?odmMAlHuk=}2;6+|&Cc+*S`3c3!bLe^pq=?+YawvRZJXYV?{ zueYv-54~?7L91^VaADA>Q688J3Oab_3o4``L*Z;75LBe$TdJ=hODYiM5~i4|=!{^M zlHqdos%O@_uXOC^b3xQbvVlU}1x)#P4Z{_!+}SS=zx&FlNdfDp5oySRZDB@_-7Qz` z7A2Cvdc10JI(TLG=JFKi@@x0fc%nsZ4mK9#;Z>>+Pe(MXYW#O+qU zn+rsznM-qM$~L5_>-VQQ3OjrKuDC_QJWJu~4MW_a&raj7(n5_%^b0Cc0dS8e}THno!y`QZN3&$r;T#3BPS)>SQMG`!38gA$p zN7d&ihKe@)4c7=9AFY@RCOtoMK@nMcqBnfizGN7y(u*oHtlUpKyb%_(06TUF4a5dh zkjv>qzm0Gf;+wQ#yfrZCk^2IjZtxS{lP2$T@qpwH>6LHr`jUS@ z!F|AOXh3BKmDz2=bD?&GLKDO;?HL)QI;0gq#={`)n6;>If5ibqVC6g#BD0dC8iLmc zP`z3P18x=rCf}YcI;23l#aa65MSI&_dRCBfGxN(pfBGBh`;Bq>o7PvBlw6a>A}Ycc zR{qABWo*5%fG0Gq{5i0s>~`}nh2xq^C7eh)gYvza{o9E#EQcaj1MRm*3c}v_G;45^ z`k+YkViZVe5VmBXGPD=6R<^too6WsyIrLl>8W-G;QD_I*p!5nE5*md>=<5eEVVRYw zpvXx&HsSGhjOeoV!-@n8u3_|L0cV|OCg<-q`RhC9e?0TfO9nrQ*$3C(WLbL9brMHr z-h&Jw5_2BTU*w|hYG%rFM&h zLg!)Ob2p7moTZdLqj=ST7%C`3jrNV_N$1?3pC;4(M)*sHR!TDm&w03Y6NHp>;``$3 zq0&FDvTW9nl@&hkwgj3BF`dt+E8dUa#bs6>>rJM%{sz@u8(E1xeV|5;6p`V{t$KLB z&|M_F_H;V~`%TpsGuAm7nU@IfCmGFyLCRNO=8oc0SqxSeP9=8Dj}@Vpyl$UKiZdP1kdNKch@Jf+E-7$vktawd|mp=`ksuB_oo6XTI)}?gA}zl zNRQp?!(%TQzOGmn*8#b48Qvz_d&g{m(a*Sx`5O)b?R$UbNg1FYjyFM;c zH_4jDA%S^V6s;_NTZ-fEOY?1No(~k>)Ap22=P~{ir^AU|mpb#-`||k!hjtAYra-y2 zOqbo4wDE>u9S0xjT-)dV`;kvc{!G%-ke&nw;%2y)cIW9;$3w0_v#I;|7J-kAcfUi` zT@@Yhxiq6KpS8Zr=U}?MY*bM7shn^-c*>*Kbe_se|31Q^iRr7i;yLDdi~g3>Pt5PY zyt}*LC3S>E3Kk)MHB+o4cUUa;035qFRPF8~5puDlub2^{KSoz>JWkcA3rtL`xSH{{ zlqhw-Q&X78nO$XnVgMJ1N2s-92k~AFpL9S$HpN-;xVkE~mR<*x&qWg?B3M-T?_c(D z{ln|Ghl8}6o^R?1a2>uEna?KpD6y*EbnBE7zFd_1jPsK#aP;D^Z2906W(||-P!PZ0 zW43)UYAR@SXw(LpHe+VUad!2CjS2`zlZ)tNC!{9e>*JB8P$0(oIjyTH+jcT7QOtm1 zR2;vXU*I%f_*hdc5Lx! z;`uRnN2)YgdeXa5^uN^c#1W$?j&yDQl|(J^G+*2G249f>?VA4q7o^W%zJ2?P`2R!= zDd)vd$SG_3h_LKg>Q?r+i|AX6)m2^fg*wvV_yQ<3q(ctpEAey(Q3+NP!+!-0QA%VD z!)dLS>#Zd#&ZVNUDN|m?{!MBRn1b@ivlP~1n}ZUW?>81 zdDJm$w72^ir=Pgn*BESOY;`6XlPR!5PST6V!4%oz6~#&G3h`v`!kkGWn9G^dV~tg5 zqRSjvX;S`nHPRkGmXe9WB4U^fl2A>X|48VJ4+sn^tjz0dNmQtE;KBvMY!brZZRraz zQbW*8M4U?7oXOH<4#mCIrp8=%u#$~dp&2a$$jn%!NEOzcS;_APq)2Rv3XBbZt|UuH z)s<2^^zM$|31NYoGnuHU&FPcSVT*_c&K3T+!xo)bgFVQ#Mlgo%EwrVGjpPTpp2QIN>)k8iZ1lU=b3APQkD<1aVQk( zV~vTZ$|l1{F0m!Zm}?@;^+$>&aIIRZO-X*&f(QF2#R!@D9W~3GtD_ZfAXsm#ctC=n zQ7;OqtSG0vU=5>SY{DiK@i&uJl;j`g28~8;tPDhxPLfIq5v34tudDn~aPrK`eTC*O zHgAmmo>y!<=_cB{{Rho_uWWH+tq|p?^e5HiDl9|>d#dzEJq$U*1=^H_W1OP7S3==8 zn3ePZS!Kv7WhgpXPJz_SdASs7k$yGS1Uc@z zh0rg6N>_}+qPrf`a@4>z^tDA^BVVA4JvH)7>x|gVX6_Sj$?!<}fKCeOLOfS(QRuLz}<^fT@Yq6 zOLyhBzDEmsZdKZ*->8ARgLm78M1h@8E}+{6;Pgmu+9hYD`vvQXJ1d~r7e|DRX1(2` zoeWBKFN}l!vg1+=z%~dY5^h2>1XTt^-J)~%2>pnr@*C zjLwa=wIOIWr4UHaC}X=fEC*5t*c0(W!zqC)!5cEU*uqB3Y(Od*X4}YlR;RgA7ZnRU zIHa}X4jK*1K~b^XU=yJq;;{&t%BHDj_OrZc^Qt@rJQx2}Gdpz>Je8Fz=Sa)X99PsD7OvDijI)Sq*bMi;7y2Fi zAL@Bxv_s2e^^Nkw-`XwDw|u;^<<*;ZsxK251YUASe|5XR$)jAsQm)>`29BRDxuT}$1{4aBuHQ|8wBi_UUql-9jzL9vluD9+Xclz}*DgJL6 z>eAD6UUqQfM&N63ktCjyGV+x!=`FAQbUO#-S@X5nbET0aLB74xe%Y_fgUE@YKq<(~`+Vjz;`4)EwxLw(Lx1WFP>p|3XI=nX@WZ121Hu^*y{By^ajFacj=qwM^u=fPYIn5jbR)i&&n+raAhL0);5)~)P2E)pPuXNK)F0WNf z>D=r_<^b1vgC_b`+F5*KLkKO(K$N8gxBh&p$Jf4BcDKwmU&9*?60epunSn39J%WN_U5cDP$2nn<-? zK_Q()0jRScT3$mF6VC~yic|nO<&SinJ6z1sTmk0Tz_(69N^$}FzXqoY`sQ!8@L|rh zX$jq9MtyFEOyz)frrsQM!||7ccY)kzon^?`BO~kDPhOA%@8@=c75|-;uBWc<$rq(> zcc{^CPa5>=p7YLgrd}V{yO>#UJ@x_wUZ!oz_Ll_s?`D)Ar+LSH^0r;CGPO48T{R9P zTZd3*fnL94yL(vL<@qL=DK7LbeFl9^x09)@ri@Vc2)BV>Uo0=^Z+GH|c!XSc1O6dq zcI^tlcGF1sKga%sA7=OG zasJ{Afk{ORBEB9Nz?J&W*Ks}T)Dp*@0+*EM_*d9T0l!=vq4YbQP=q4OZNWD!zvMjj zg#c~^tSSMKido2o2=@G|0$FpGwSd>z1ImDWbL62p%Un4-3U6tKOkLDTI8^_Gc#kOy@*_G4M zR;bC&r1Cz@YO)YmbF3Lr;{F(%>K4j73U*Gsvif_T__g#193bWHI(nb!QTY|@t1?_A zc%Sq8SMiSpCxeMPU3Y8tThHak<1;!7W7Pgnv4uM1lAzlfiP>ZXa%sF za;`&afgl`6A>r)U0Rnw`&gfQ(N^pu*-T**JRvtm}HYl9XqC9}W4Y7|Q#lda747Xtc z+BZ18ZO!&k0pK$VFwKd-A)Q0uLX$44PtT4W5k!PwtNuAE80Qqk>$(jX6@lmoAZAom zhj3>lI~XZaASzYVqh}h)8{e($LzpRUnR$4Qdp3s0R{6vBV*CqJ@L>KFLJRH*+kt-r z3kUqtb72wOAo~PyB*Fqe=b7eDJtaOWc^#48ozw#60q3AaW_s%CI$oUf&Z-@uD}86S zRbCY}4?aPJz8-z@(&94Aw^CS%u3LP3)Bu{@={^2T1B)Y7~f61#lqKe56xj+zhOm@tm=2%@JPagvXLzL>ob#$pU&#o zn_ZSPKx@dMe2v>Jt0zSa;nbWm499oYTrI4FxzL(atCpg_l$k;<&$5s%$Fh}3Zg;U(D@ky(4RKg z%V=CsBuDrr$vEldXkgBg2gE%ATpY+#?#Sz@z=)a|ac~E7H3*3n(Jfz7k|lj1K}HmV z;cIvCP%#eCb8aRW25?70UfSNi|7}O(P2aDut``Wt@-pk zz;56=W?%(l)qOIrj_;9&IHR{$D3dfRh2?R+Zc5*LdeEJnnGkXWdEaBy`$mKH(QJVW z`E1_%dx0ILFaQ#WIyP!WT+J3mzCsuyGrmK{d`(g*yv!2Lq?aA}oWeA$8_h+7ow+zF z5vgv-_v3Q;{Aq&a-3sgF4`))GI>Fg8&^dv{JstVnV#puW!gA<9K{~w|sq?5Wvuw<8 zDgE}u^op_DeXqscJNm&0cBHQpP?@;+RIpDwkly%38R!%lC(UIfM}yUtX}H6pVMbYR z3Hb$TR2c!U6Ue2m(UXnoA;xD%WHpF~vu!+h7n1h{`F3J<#1}Z<*BgR0?;&dp++P?j zT&yz)%n2-0G8q0O{Lwo4x(r{=l^673ISN_#sS5`F!5`-&nZGUFHM99m$8I5J^j+19 z1WebtjzG7;*9MUwW7x48#;{O$_RO2elC5@{Pe&Xh?!6d97s~Jpf1_r*Cj6tN*0e_t z;>~WS_3a~^vxJ5d5%le#wg=@1n7=YJ$b#i{(+GV)y*p_tx{jE6js6f>V#vYSDSvJS#HV-}zpi0nk!n8C{y1pEhM-}LpXngiN z&3L{DmRy}SD(0IaFuQ@r+Z#$LIG@&@LThcyk3ur>i$yS^yjKY9X+;vx_x8stwJg^!3^KoEke zx|GsWHqb#~X(zfD|4>A6rKD-cp2m=qYf|{HQfl?SpXt2(Q2~h0S#8BK2j$iJ^W6{ekRFhBi4~}YhZtj-7v!}Zb37F*acIKXP zkj~K`yg3Y0Z8<<%LlEOp813D;VKe8XcHzBXnM1%_V^{Mfsx2g%gmjf2I=D=C=EX$Y zrG|^i78XO^(rWQc{14d|+Z*nGw&%@^`4- zjGJkWw6Q5E3oMZX?YFl0$lF0W83W79vDqBgCWoe#ROIp;4TCisSoF)X5213ep<7(y zK&%l#aY@N=7cDhgC!ynqi=vK;e1aMp>r`W+Bxz`rD`EP*x$65q^%YC`5JuFlvid9V z=)1f3#0&&;CTc#6FG=kGF}s-^6H|(LqZ)V8;^o~Q$1Bbd>rwt?*3<7a*Bm(*r@PIe zj=sK8JE3h|uOPVkhBWqSIMW~3R0UM)XpJp)x%vv}CVCu?fLX+eDwn56R7X-YhRU=6cdbTEATn)is;_u-fNAb^S(`7kOy2H?L2IkcYDw&t zssu8i6F_g!YO#1#+&s38ST{`3R%hR8CD3>yBJ|Os>Zu{Y zR;(Krtvm;l;0zzQnK*VeIJ(IE^EYtjvTcoumB6BI-ABLU^Y(T@)+S+D=Emxes(Rp5~+|7U- zUDe+ePicy{}{-cSI0go9)i@Ctwb;Zi7(rm@_UhK;(2k4Q~ zRJ{qm9B?Gz`^6%pn7)+I=@_Nd*=9&+Lu%#dW?QK%jE?b8IeZy1alP8~*P5kKcrUo= zt~eThwN>PcC%?{giI<9B!PK@>)S%^G;yGAr+sw*U_;B;^Q7>EabHDZC93EV3Fdh#5 z?73C1Y5pbOx>4yhKXu-I)+|y|4(QBTtDnWby%W7Wq8Lbq6nOkuy_m?{%^l+4uAk

      ej7+bD5AZp_tO7;N(1alTi^XAVSGxdk?hnBq*I`{y9?WIf?79^Nev*d<)LQmx~C zY5tgO@Zr2Dr)=Th8aVkQb8^1kWJFJ}yjiYXRbI;IT|QL4n_=}=drgUj2jALpm~{f8 zN|zA(`RO7~nF4OF6F#!V5|FC#P_f=-+bEH&Fw5$jv15aj+&5nQRqeo&IBjLiyjgnZ z8{xT0=9G|94T}D`*+ji0opIDipH9T>iA6a0t@QiYu<|8rpwF$GKFIrRe2Sp8G+^9= zj^1FEoTo>1t>xUx-ymYBJel~^%7^|ntNns`%3)u;CHJs;4xq>8o{-riT!&G~XlZ4$ zStVl^cr#F63N;Kwru!vT;_oz9gv}H~!h)b?ZvR8`^y9%sPbul+k7|{f$Y$uoma&Ek z1;RNc*)pXz=HYq{Y834uXNN~Ip3Mu2>-C@1S8a0kcD8K+UrBdVbW%$`RtipU?+%>? zP6dU>9l?!6H~{Xn<%k~`{Nph{x6)d9m|N&7ZlI0la;(s=)g<3BDL!M;biZPfW?8#o zBy#T&zhyV|<K*Oz#p}peJjc{-s`=sJqDm9wu;*uT%ngg$HU~)i6{;~{^aW7OWJJG{fEt(wh_J?h>@0qn;W-`xd?f1WrPV}bo6BZfqXX)V#-={g^6QuCFRS&r% z*;*7VD=|+y&A+Tl!_b}&nYZGgUjPqBP|>L+Au@9RSq z5n>E(1T9Vs`q1lx4-uXw*6=+y{J*Eu-~C?h*X{;VKjj!PjoiFr4(HEon9r8e98eBZ z>wU9mPOkW(vF5h}z*B2NWpIsNb%hKoSrw^^db|d!iwjJ|M}zBE!fp&-k%-ldiui$< z$<8+E?xp2MGnKB&Uf%d0vBU=7`@&RY0t! z$u35KHbFog0UsWLWI%xmH_SIGD`f;EiEwn#FbL%n!e$jP81Os_N@IKNrSNdDV)D^~ zAGQiG>W4E#BZ^ForbrC)2PR4K3&>4jZcrNB!$xILFi>dgSmEF$bMu9!VvS3&{~SBb z2l+ybe98HvMC79geMJqt_9&fHReS4+eT7PV2A2wjIk)8-4f_A7buY6>C8Gu$9Y;aK zeY4dHIPeY967^>FYqV^thb>fAlj%4}>1}GW^9_Y9PApV2=(mXHBq>y@ElmxdDQFxv z<95JoPNem;xe-+!Su~TZ+9T}JbTJ>UXLficsruTh-sxH-UR<)T>>)M-qdcE3r#Dd5 zD!j|fuQ&RaCxjv==G$K&Xr=)~WDA$V)b=V47rvtj&6+X?A_f8FwYG9HtAWMp^bGmP zcfEKy=9l0~7V-hIFVC&;6iR}{HMmvmIUShq4_{nqPX2x7^@mB?Xi95!w{JvQ;BA0?7!V?TP4;T&!&vtL?)p%8eiYZBEWI*2V22!&y;$Xee&Q?Fb|^(?}4NVYxqeE`cYEhi>q zKM@wZus$VxV4OX1WPl+Sf{{LLVy}DZx0L<^dkC2jt6lC?*!dmER792?u~e9^fQ%i} zR*1uaDtivvATI+LfEQ7|SIQknt4^J zBC@%eWn+nO2U2Z{%4HUbPzRE-C7q?%3o@1%2eMPe-lbd%nmU#Q2huN!pDN$ja$pMs zO7*FOP!#i2u+Zh`a!Dw|!wWH#6jfNsiw#RPsH5Zi8ESETgVpm;@sJAj5oE)!b+;J8;myzXMsY568#gTqI+Rfq4WR2}ij>N`P>Yhgtk6SwiSN1Nk$I zASpUG_)W1Yx|UEd_#&iYIr-M0wnWll9^I#p>GW~bkk;3!fYk-t_U6(0+q&7d&t;dT zZHZD9d@@U9Xnab&iKi_l*jLBzgt(i4HC_aWed!VJP=)48CNNeX{ z$6mR>lV8J2F)1A>tn$_G2BA~AqjgM2>_ zJKLhl@tGU$7moi8%HPP`-Ma;;>+waMw$_C%Pg_DN7rh9j6fUW%+PYvO?aHM3BuHC< z0_f%DWH_9zUML90UjTI4y4P|J|go+--1|M5avCOhKvNuc#^l(%C;zx2drQx z-yVui>iKslqP=fX-(FdHHfiLkR#qk+p(*u{d<=9Nb&7~gp3d5?B+95WpHV13z5JJ9;2Dnfn_OFy@kva8+B$Uu7l6&UO355T5G+eYu*SP} zpmTcoSK#FfXT4?6?0)R(ByvsiLu`F01ebLTrpiwHv=DbJr=d}aa5tNMXf#f%rC44F zPa&*6*2;&o`KwpJc=vZUH#Evc&r7V;(K?J^c{jArf~YQ#vL))GbBADX+cjCr;!q^F z00%t^UVUCNWWXJ?*obof@~ZW9Ya0R4vu&|9YqrgR8zz#a)v5OFLB{(0A2sC&y zzkEf=xuZW%0la$k0pFsdDkG9;Szc;`=OrH1sZKZ?DlTIXqTasLb^nvD>pGFHs_pNM5?QUbqGT@ba5-7+H8p2W_lNUG~|$| zz58wN&F>f zjs@nq{`$7m@d;j9#ac1iM=>Oy!BBnt@0)N29iu#}!$#SfV$V)ut(xn!V&5SD5@5Fq z{Gu%hPUQRFGX!A=pR-N?N}GW8s0F?wu&M#?$n*2E&fn|SkPDuwqvzjW^I=Tz%{j@3 zZOmghuFxOR)zxkOv@KCPrDJ;@|3wQdBPeu`kP@x}lU zZOlar>qR*=nI}laA!a8$s2PM@(p^kkMH=D3riR#>f25ZCt}wud`?Y8?4@8xe2$@b!SEf`5^#8shDj ze>t7H1-a}3EGREwm!cfKdp#94;AF&Iyds=oE`{qrDz}~5t667=(np{%D9gEi?=k+7 z`c5GAQrO&5_Jv=&Ecy^rfyYPydAE)PPxOfZ z0fRI=3jKjva4-hlAztK7wm22IRyLOlpd*oMH@{Mw^PLy{Afy>jp!(yoHE&%jiI%|c zEpgM+$Di+BUrGTk|9v-xDjSwP>X3pn#W3EixU{8#G8-Y8;?ya#RNy5){V42FgXqNz z5l-ZDnxr#v??9hM#Jvc*CjW!@{bAt?;v+@*o&18lPg~^S9L3_|$L9`!=U9F56bJDZ zF*WSg~+mmwN<*bl#wyogiyUw*pf%sK9}O*wX|+&v>I&nU|E~p7}4XDL4N^=U0x|vxG)^s)w4Qn-Po51iONFJBygi_uxeNJsr{aMb>WE z$tZIL0A}$m`%+!(eP9wus};wdto7EGbC^5M!{{zy_L89ZaM+hf(QlT@(l)eC8p%QW zvfT|yGbuu9PMlfg-_;5H(Y(D$uN)!$=E@dD39bFy`f9HH5ckbBm+8hgvgVKbYjH;S znV~K2`$_4Rw00Afq+Y|Ea((_q$GCh#3t^TsYi)jitVgNEpWPauZ7ecxF;)3xK4f`v zQQX?6%jkHoo2#K9!IprY=92Alp{iV8T2#TYySmMj<+4p7$vzQ3M;m|JcT-vPc{N0K zF|RzjA%M9Z97&dTM*lX27Kf!@{85a+$slu^a+m46F1zc*>!51PM6XSIJwv zFV;$;0K%G9SJMYk5N}sg40~G@iV~L`!PkZ!Qx)OP17K zHj&TLGiRAT3=NJlqlc|phFgD)N8U<8cd%deAEJhENZU{}xNcK+Ep&WkG5NPC+fv-0 zGu2&6#>fqakH`jlM9GT6S$g8F5>jSuu9jFI4%`Nmute}zo}f41>(sH$K5W2D7$4@X zwtgOU+c5xMHrc1W5sBUNeP^696_J4!7_ zU)|kbSLt>p4cz?LSs{1HgyuQfdDmH&JeD7B6EOgrtIeIVTpz7&kU04ks#b%+&yTS+ zbueyuBBWJ=WUSk00!YTcZFf!cOchGZ+dRh`{E%-Ud*b?f${XLBv-Y-on-#s0DiinC z^|h(G5g*a{c+|6bdiGd4!uDA7aV^dnX0r5d(sYGC#B+E8_ng#a9LQIg#~FajNI;C~ zqz^zDr+CwrVJhqTZFt-Ho_Nc_`y`|BlgUGDrX=-mw)6|x2;M0L*QYR3ScV{11Jw_$ z`LgdaTas;P2~TQ>Lw~!Dy_bsuOcXPPn8qw1CvrKn4f}~_?paS`if_m$JTQMKeR;8l zJdbs-2N>Q)J<%V;df*6u2=|I9%XI6BDdGXNFK->O-cOOaoZqZDhXO6=mDa!E2;bsT z#@LT?g#Y~T#MytR$E9?b^usu(8-D^jlV^GfIg@s9!;!D$IQTBpz3gp4aC_O0mT)z+ zT#E6+uKI^t@u%sJHYf|0b3LZ8dJUL_tT-w9!ZN9`cas`mp~liz@aJIMW|C13tpo`G zj)tFtm1NUwta;I>0h3|cWSn8NU-@{Tb{M1*!A8$Kf`e&Cfm}lJZ}@0l?W)5Pd;>X~=HAkBO-s&}yxEi1ALhO^L38@Lc-OMz(a6S9$+9@6 ziFL{2NR-y?%2#>n-o>}vfZfgD2s9zM36TvXJgAGOimxz(Yuq`+5LS=wjUJ1QOO z{yQp#T;r>miN*&@CDZ3p>oH};v;Z^rL?+4^5|z;hap-_7^fWx!mnNi>rHqu?c>}lS zR{`zgWjnX)y}ec?A?j<@=@P6; zg;^|)uGu0npuif#k~Exx!7_^8gnZaaoc8lihH^(L#Jn| z`AR;*OuxcZ!X}=vt9Z>XZ6yL4h+CX@J5LXVDHz;v0aS$gU;$50m)=?3w?h0ss5GHz z%DZpMV$%>Gl4CF3@_ta35o>w$r8K7@jHl7w3P^t=oJ)~z#Xsh>&A;IUL6U+%2&Pt&9^Z(qReWQdN%9BBh;TKAnLt{la$k#MyPmjUKC20h(=mc|!akave z^9&pDl5$ne*|Y+e3Zl$W*Zi7ul^PLj#J6+t%_-J`A9EcWkuJmqatY_;kIA@$r*oZ- zdE5Og=VYCs7V|nv2|mIv3!qA2*a`$@jqbsv83PYiAUX^%NYA6W-f(CUc8j5K0V6wC6UYC{+V$4>C$3dZ zR_oASYTCnX*_6UVLBaXELl$0(2X`GvX2TOL1lq^T3_swvk-S!qqWKSlib8~(3FW{0 zeaqq(3~~rZ&~>(1h#91*DN6%b15bxaQL|;mBSq5MN6&U!3;DW?rOv_S`cbymv>Ut;o2pkuQzf+D%G}J*Ub%*sy3r zffl{lY+kNRCx@ELbtsKga{@gQ_rjT5)1;Kfx%`QWn7NiB8A!HD>aLT z=QCc}m71(3bt0LVYhNXP{bHlAKvgOsn#te_&!rIXCcc$z z-&h3%Tl4?aQ^0Y)Js68mkTH|a=Aocj)k%vJBVqTe+54uh*s(}|uv)5%Ap}YeBCNVDIr6Y$#|QHi*VE6M5n-Iz(T zGC-ClaO`IxHRC!QYzrqN6MSytz6ost85Sf+z{du{_s7JxZE3t%-sC;$$zo*^vf&PW1#v zIa7^7ac?)iU_3%y+PHhy6OP-rf&~TF*c=7L^qhL9vN61P>~U&W#4v=Lv>&DR%#2%r z@a#Pp`+sohEjxHg)z1I;7)-g zn#3$WKCK^^SS(9q6ZYJkphgP69B#MR^YE%o8U-#QXqb_n1~M&ByzZBb+hI~nq@dq z3*^dt7vu{5ObV(}s}{n&8*UgM)%wiyBtp@}L~L0< za;w2R(MsK1XAv!{Fi^PC!By4h^P|qag2)CC*wb{eorkg95=ix3eN_a7+#R-=aFDjTIEwAuWZxJ&a zDltk*Jqusrc>%p`Bxpidx119I><^S|IBEi(H5&U?{X1z$p)zV!$c&hi8Ym{FS54f+ zz~rR<3i2_69IOV95OuPweLEt#b+tI!JJzhts`AQs4jvoK8Kn}C-cy#Bw^w#=q07STAJc(2Q(siZCUiMipCNrx%4tIMxo?BS9Lf z<-7t_OKD&HpHYtEptSP}a@y$z!74ptb{t7pn}M-Y&QH)mK{CMr+j3#+2x#{%r=4P# zOJz~>H5Vh!B@8Wy0tWZwQJJZIpIMo?jiLhkuq6 ze`a=}HtGjJQ<@@vH-U-lHL{vx!=KhSGOmIn;g+NSsH4}e9(soL5fQL#97ZW=nvKmH zPqYrj>TiVKJL%dmp@G(xF`#Mp7&OO=?wi_eEvi1_So=mo@>4|etCt9K`2Vgz)2w>F_=1q*U|s%b9oAVfdlQchSJf{qb(cM$TATpT{d9XO*d zgpwB~MA*gPs0pQ@8&no8Mi`GC9LV-`o$8tDW_aYR5TI{97{IhS*gcmAeksHFH|pAg z;)QjEI1492e=!luRS4r^Ta{iL0wL?Sq`J{$(3IGy()Y4zKcu%M76!ySdWY4a+`e6d z3ItogHoGgzgg9;wF(U zNsHJpNif>%FIt-_HHqJ+!lPZ5WAp5N2sk_gC>WYQINVt0S<<>37Ta$$>_jm`+-iTq*WAE-M{L%F z2(=Dt{PSAmEVih2$rTi9f?H2YWTOaAcY)aZ<=A^LNvM|MXRY8WbkWIxB9;7Dw9{Ci z7^U)spz?uDV{ip2uF$>L1cvfFv|mu3n9B$ZUI25W3NlKzIhB{vUah~y3%Kg2Qpc|WDyK>lk z8=>^aamM$--L<^IX^<0YQ|9@S+9?fD#m;e)f!U_-?IA}Pic8fE3(lr1QUe))`h0fY z0Rpk(!J<9useq0L0*XsS(Xc2}8wTO>{Ir%hH%5RX{=(Kz$*kcK44G~7O`BP0;{~2_ zZefQ3EK6Y=A&G!Fi@O3pE+LWy7keR7@Nen!^c~%>AXeYtJC6dMMs|uQM~ErOf>`&D z4I`Lbz+_cl)_Fg3Vy$<+|Iz>j`lAAJO~RL4#O_?^-^vu6+LJki8Qn_}z8v05Zh8=l z+Ms9jF6uLOs%c`ymj|Dl$|=1$6e0JlyC8kLmP|Odcb8Wos3BnU6ZE&?AL*P<{C<2p z0_pwj90xh#XQ)P{l2A84BTgfR0*=Ong1akD-#~mpEzyzvW~>N3?@1l_&s-?~Q(G#6 zUd5#CrEWq=qY)XT8{{IQb{3g)t&WFOfONF2sPj9=-5A9@(@Z z*0XX-l>ZaX^%j{|^rS8Krnzz$N~$1pb002ys-5d9XKD@DKUNAss6K8DcEAW-o;I315W+!1s|+wDab{12mT^P+2xO{4I=+Q{~$)$+Oz zDNM5t@*e`?lVt|BIp(wOIM=##&_)$-%7c0v1y8=tglt^l*ZtDbFlO4#4$yPd(&l^) z!|%OQq^k71lOra9qHK0W=Z3JU<}ugsTK<8~=RcLc7nnXL5myhpdoLjh?y0yGRO;ouV7E(7?I5#p#a+=i6Tg+ zIMZhs-z@yc7Nkmc3c!o|SdyDVMu*TV`P(6TiwP{?4;(#h7s`KYEzA^JWP-LP9y?O=XNK<%e5ifOA5f%C8 z6|enV$G6FQ`hGmmZBXqK-2lR4T~};fbupqUk_K~Amu_vfBj956_(CPiqD6iVvY?P; z{b^@k*27Yf4{oC1-ViT@-SlaXQD>M!SgR?<)+!9-tk74;+mhH560`K)^1Hlc*>4jb zXVgw@-Dad~vAPD=!56uD=aQAEx83@r+am2FTvq0?9#rs7dsmVwTc=e%jmzHlb<%f4 z(v@>vj8YDQ0iYbLHEtJ%=2Pb)?h>63MHh-uEPnf{{*4jv8y_k=y*MV{1?4}euE@&LUMY^zRcY&IGlFvJIpc&wQ#k_8 zA%rR`!cAeV=p5$8^%11NyTLXq>2qtY&--Q!k6B$H`WcJll8mm z%lM@zBm*9>S_nr6Mapn`_W_}`f<+!Z=4_D_D97qE-*x0r;v2Al= zOl;eB$F`kGCbl)P&53Q>-tXUi*xIe?mwxH$>VD|1y62uVQ{ao8BBY`Ab+?+*L-xN9 zk}Jq2D*e!4?-TQ%1FN4bhYyu^o-V64JLmu1pcCMecjeH?cE!rHuP-$WI=Ty!QKI`4 z*5*x=m^MBE3|Tu&bkXnxo**{td0CQZbc2LEd=^e@1*!ctx=~h+-6}CidXbG-mL=0? z1!FP_S^=&aObmPQFPNgo*&uzkRtd!XJNFv)GuDF3H7bRIJK?_xipkJ6;I{+~Cs8)cNcwXjMX_eWu4fx+aqb;FgiBK-^^|C!0$Tb1ZZ&AS>K30 z5=6m%LqbGBcRx)xV&?CDYh^v+7T5fKf12`yM>^-^4CYlcxOWaXZ1XEA%1wDk+gOB`>9L?8D*}vPH5K@x@rV<0_a1zB~)6WVTU0h0=u2r{9vMWSLl(^IR+s? znqHwPj3udGJo%)UR!pn`B#2>P75jj-9?re57*0~Tu3bvMw`J=yjPjB9;dhEte5Eo^ z-}8oTlgowKuU4WjhP}^fykxzYi;?c2B|>o0d`^`4*t2UEak=?Ww>Ndm-_TORoW@T! zb8h}qvu1NvIlx_%(y92B%#~CWn~W3; z3<5$_16ATL95o+{yWYl>sJH-RMTe? z*od9J2@ec$66;v)G}q3cZbp&5gxqB4SeKPo&Jk)y%lpxR{&ey|9UwljArbB&CMEfp z>SzUz4omCArjprv$jsCeOnkKOP|Ln}kE`hgDVIjZSdfV#vWRt&=I|DSbiZry^9|l}^}L_`&=Z zTu>f_hb5LEaRKN|K~`{6ZwP!eA>>RJ)~pvuh-}hx5jTHt(sTKzCyAwa$G0E&!XMy? zpoLa}wkUnUiHM}0)U2cZX{JnZX5z-XUFw7JkKyQoN1Eui(UWmE_1k%dlf)uV#(vQK zBVUPCyfI`eu&b77M>tqS6H(`K)8|pP1h*#qd4v5cxj^bYM1THh1^$yy!;^xM5tDiz zn`XT^s!(^nOC-{8H~o|seGhTv*S%I2Yno8PA+qr)JsCGdX3(L*WQUYY0~cCmR_Gs1 z?yO?sfr|JHwHa>bo;rZ%+`rn?X;15M^@ecC%HB9v?^$=3&A#C4naA`v;8xvqy$r|` zW1#!i1=Nv5otf&s1TQ?IhpsiGHgQbHLVUsuKX^hXb6(^lcQZB&I;3Ilc2Ma9gK6&5PWS^Q6+>masNtc<%I^y!BrvHg|KSlu9yWbLb zv$q~--)t3)=_emN;?J;)uL`Go=ICEPDjK&>fETTh?}UE}$1~&~yeiPSLcuqc(y^{@ zd@$dP4K?&%wFmraMco}P#pquQ6^+ZMFWHg)G>fa>u5b8}-(U^)^Z?v#{*UJxF^dK= zxXmAoXFn!~R$^k=j?1kH3=mmja_wL1H#SrJO2$0uk$pU#I-(5oi%EoSZ1`YVQ|K4c^|6j(1@2JFU?;)#@lyMGf{DT znbV!7+RX`(^4M6?;Fa5Snzd6JH~M;0b%1~7-!J;;SWfyQ8&t|v3)fL~6T5EY4jh}L zYB_#`zs_l`o_CgZPTJCV`P}btT;|*&>Cb&BuKAS2;bh}l-#^GW3iqTyKGT1fEakRa zn7C~&P?`R&77INjyKf$osAW}r?zyS2yRFXuvxzlxeml8nHoTRl)v}&uE4Zg$*SlV- zwB58bkm{E7P5m5Z?I*yZwrHAU-&J_fFD^y5#v(yE|Y^r)S&J z^(3K=jy|zKw~n*&bKmkXCB+y@aa&A8(bCUMq^j*xs>)^<~xFZj~%OH9-Xgi zN6UxL%H7gBB5l(D9u?LKKqou|uR%cS0<1h_r>m7er)vB!u}qV@T9=UngchW42Sk}B&n5U=;WfwFeS zX&l^r(;J(}b1i{ALE!7MZK}^W$>YRwXdOSgHt@C(f033dzFCdMTdHxf?r-+c zUsn>Tfo5uXV~w6@O?&eQx2~1L&2;%L7~I1{X!%1e^V#@Nxlu7k3vd`rt(i#;XDGXi zko?oT(Z@w#p^f-AJ(r3_tEt|4lbWcRdCxn zZ}yA5!+rB~{(P%sCV$5Df$*8TSgLq6vSHmR+?jS;8S%?Qu^G}LE^Wx0DC>HT<5}!^ z<&#I_DYGia<>5=u2msmMF}z^nK&&2DnaKsK&6}v$;ytuHi@#oH?e6|;XgID+uT@vT z(1_ZUl;w_aUj1RyjDm@G`<=S+3_*t1n!Vk$Z~YsT^( zn5vQFtvb%6`Y#`^cI9r)tP138wyt(%ZRW2EWNwD9cBOARtO}%UYP6yQLmqw{sg5;% z%Nna)DVsveKyuee0tK2c#Hw}>@{jk(o$Z8bN}OfNKttVlHHdxhDw4Ms-wBxE_7Rm_ z;+)#BgZ4;6fg}xxz89b^%94^4o(ks}NAhW}U0mUXTLENuhZ{bUct#8!21$Z5+mN4Y zlH3C;z&QuxDRFG%$b74IMVRyWHesGfGQ_&| zB8X?2Rf29WDzm)^BaH;}O6_2vXSO@M2xino`&-HX`xsnMkP&>m??4B=qauap%tRQv zq?b|iYe-fN|Dqx+#1@}p!K3Kjp?+13?>6FBTY~B7zz7vHWa9f)k^=#~L;1!DrPbaP zfiDCyV47(qQOPwt=sncvRVw~DYgK6zZHV+L{4q@B-4K$Y)TmUm1{5q$+9Jmdn@YZ@ zYD8jmtCh=Aj8gi3o}(^3Ex8lwtBGScTQgV7qAbdmCs~nwq*I#(R@}f08MkYP1woH< z;K?09Kq?0r9_UrUBtX)oh_E7#vnp-Xm%spjBqIk>m5p_rB4~9PkzkQEqW^GM*Gm#o zt51M`EV>(O2{#!#CE!RyMJ7s?;-kC5O@Awh6d>pl5I!)(qkhX2|LJ(krGon-`6U$V zfTBhXl?tD_tX-oYvlVv>8hvve+f_M-K2aY%HQLFu)~4Ejyme$&dgdiTnGK7G=zs-a z=5n}OVt-(H8dtHHe7MNn==hkul74?q;iq%0@_4XianX}b@p_c$S-n z&XqQS{V8$X7K8#v+Q3rZzTaYCV&nB=>>;nRk_b2)JBSx!+h=lxz4)XYTQdo6_K9Tj z5K~XPODkR6YGqDy@g`@jSGG%p|G4f11d`MvTMxLAu!8$=_w00F01+=RV`8P5SSQr@0U@y`NI2AKqTaZ&Pp&Zn&UR7qqNvLjND6Al16o{Zcvfm&^ zBn09CKT!~kd(lwf_xfn-psFCxh0%UO;rE%}!2g7_A|bQ|$0b2G4YW-FcMmoa_zi*) zubv~aYA~J>{8_Kx4G2Fd z;tq``6rKp1C#ZfP)(uosQ0tDs3y5G)PXW@ZSVb11LC1smx%KqKGkp^^TCbuo?sTJKAkXHR1S% za2qgOeN)VYCH)MJeE<3pGGH5xkTzhS`@!0fiNYjqsQICycbz=Z#(z`gfR&06bHh&u zE)-zrz(I?met`Od<@Xuvke0DS$M^a>f_y-^2kDVu4+a(+^8QEQe?5ZBDSt!$zvKP& zFJkn_|NNEwDCwwlu=we0vM^lW?ZZ#$cCs)sR4-w1)6L5@9Ni0Y%5lFiB$~0$WB_sG z(uYJxIq708j&eNiVw)e<>07ceL_iWdjE`_Eoz-(d2^E>7=A4`Sj7GDg?&ZwPT@DLJ zZj_Y0%Wz8IPfB}k)hU}s^Tlf6qnV*%%04H4`}$~S=G}~n#*i@tT1jcz!qUbIjuH4B{B4e)ve$-|vB6Fk^ya+rEVR_1TP-M4FDhaWSw$vt2$#_JQ z8V{c2JSVKIG}Ic}U3yNmP5=d{ow2J~Z>DsGGD8W5Bmx6!9z1Em5Gx23CUsCnm`mQo zhrt-1<~8vs`DfC0c}cY~TX~G~?stbh7&}pQXEUSbaqT^Jp!z?hW>apwc++{Ayk_~Y z(n5%+r2OX*c9J8Uy1-=-G>lYY(4^9ae3Lr$WQ!~=ukg~KQVFh^2>^l4Lpg?q*GtA6 zBGZi0b37%7Y)1A&xkUUQE;7Yz5)B_epO^M@MMjr`eu`G#g^5H>W;!+en73!(6~`~6 z8Fc>5k!WA4eUt;nJeCn3@koWtWTY9MM50;&>dwOw&sT;%{>dnzbl9J!lQiVx7y@IF zh1Bp>lb(E#WQjN~YXHsoj{FlVI+@w@!HI62D^hkkArUsy{4aZHdULZrI<{2GyE#%(4}l$FVBK8VpL$IdLNOJ-ksilFpb5bUAWi{mu(a(_v_ev1D%P zqEh(-NUnQw?_ma+hMBv4_^~)Q2nhow_?U|<mX0UTDK)c)1#<790{a6%X6;ocN!JfxHIPDGc3 zHTI|)$*Gv4!3I)ek9PlP!BUV(Hdiowb_`}#2DeJ}DFTGP{z+bgiTORCebP8>$=NKZ zvL#Jt$0hZ)VFNcyjXdKJtK`C_h$cZ@YaX(BL$t5?4v?L9N>JCC5A`)jyGFNNB_Fk> zUnN7Y4j}*FkHxCpOJfF$P5Zf_a`(3>w9;^iSyv*G-sP~1ph@(?kh&nP5=9rZJN??w zvmhANk1%GiH)6CVV8`UHK$D#|AH1I)1cqQqH2Fo4l~c}Q*$Aq;1jpt>DKz@Nz*w?u z&sQ`z5>UrFAXQ`$Grnndj22#0e29Nut53nV1H;A;xUuVv2IY1bK)=v}#L{$kS2-)JT23xzJOxwFf zN=QV@B1_dDJ~+u|yNT(NbPc+evJ9CpvLuCG?Aov{ph;@8h&|Z{awUD@q*U=o%g&&~ zYBo~}!5rAJri`O=VA)-$(q#}$Uz<^c_08o(V&S)>B%| z#g?lo`L!0db1oR!hS!jq#@i74(SmGeW_cdYY!};>gB4vd=3J8^`xM*bHA@p4J0Q!~ z+OXYLaEx%3-R7O7$;6M+D_9Tuu5&!?)eaxy^Dp|dYbDgFGIm5ry;$TH=Vj9%mjXAz zHmzo>&pl_X0IwOrchhgTdxrNG>~6O&+--v|r>BRn%C9UzKX=NTrxT(49+M_PJm7V> z4?k=sCw)uc>0xIj4mp17<@7Zkj)iFR<5McncTVW-q@6EWK!+&HGyHw*)CAeh)qoeT z*7LXJ`CkhpH?!eweyz>6LYmj~-zqRvVA1jEV=6EN)Tak87W)FN$CrNczz@M<-R|n+ z$M`VdbK?s6%7eI^r@`s_A<>6+F&*(2j5a7^y5%nzMIZ|OAmN83%a2oXuiwf1i-0HF z=ABc>1VXz(=7pX0rX)z40d7=G*-eFQpD{*O*SO{$m>YBXsf;Irej)>ik^dod(eCf?&w6k60IoXE$`jZ}_$ypck!X;IR#rYuCIJ zs&%)y4ZL<_dB@(DVJpVxM&1*?8`oi|b%*(C1l$t`*%;Ab#N-9Z7kex8dI;SUc`KTD zFxgY68_8iX+mTQIQ@&C``5W~A{zjp0I%of~I*+>B`mgo0fdB&XCLgs04Ta#7+55|tc6aCE7g?(6fZls5)Lx#uYr(WH$xH#7%R(R zHyNs?Ks;?UOL%U1QE6C)Q1c{}(S#CdY0L1dylF$;+*7%VOsX!Q_sdp?9zP%NMr;9n z36z#+YcY=aMN8RI6o^-gAd(7CK*BbTdN*YrH!hNfql%{R=TLFma0x~`8xcAt2VX@5 zs{G^_i5lW-%TIbNA_&a`Bw4wmKhCVUiAvmsWybUb%G!%nX+K3VPZgA{($rAdO3<9t zeyyr2!+S`gStUl2qYd}BU};H9Hr16;HzX0J4@7#pxKnb{7Y|a{{q(N)1XRJ3+IS~O zCae?D>q8I|Tced32&9WuWfIL|ts`YwI>dA<$D`8BZjQ_|3hi#iX%ab) zS?4%e)<{d6ZIz|Pi`2E{BBYh)g)9D~&ZjhGB&V31hTz1>GTbqDhLg@nq<$xsFezn5 zc;{8zsj0ouxv=dO93U`L01`=s^6GolPBcj{9u-OD_S(@@svT???d2I(LQB(>@-jVJ>VwgrG0AO7p*@ud`W^$LbQc%9DDGeK)WKJ-dPIZPiV4&6ZQ%wHm97tqwcPEK0^AWczE(`XYr3f8lpkhKJv$i_m>re}t6~P+UPi zIT6i5#FjnM5|dNky?a;1i|+rM`t6D z-rMV_+aVDLMX9(JHDK)hk$LWeGUg}_W^!@@f|h_Ah*8<%VpzKw2~i12;9$#+?7(hr z+r$DQ@Eczg0}wC74UZ$U#~J(^PCgJT^(#@P5rI1E&u$=Nk`sjDy%H$@8223SJ;>M% zFB_VbDt$tX4PM>xp@>bSUx->AGF9eooj>t#T)<=33s>#h^dIp%mxedOUV$yac{{g( zH-CP1XFLZcVHbfX<@d{1^5hxVuLS(%Wsocuxc_id8NdQ=_MZyK7526oyQU!mmZQHA zqdJ!iH8GWX89H^XbC7A&Z}gKvQTqVXC^nHeQ<*v>N!>OX)*!)vJ(F2VnbMVs07ST- z+Jc(k{ES5@(-`v`cE0j;2I4LV7FZ3?-2B{o76g(Ed)i@F?`D%6PS7v>LYPfyA)X*P zD3?w2mVn1T;a_Mjqw2v!CT4}C+mlaf#M*q*akg|Aob=IH>)$JrAe)#a2O>~N`%lb4 zi6Td|EX9^MxzrAmk~3x}t8PM=8WB>_-W$C8<{u{!Al`lSb19M^{h8Tv1qSnB8>pi< zD4{XpX`%G^nL`g+Y;pDO=+XP_<^(+h1eAGFM*!=#)j+tTiEm!yNQN(ZJj)-s9!nTS znuZ3_FH4uJ-|_pHqr+KF7x8SLx1*F9=f=K$D4h;4TSDadv@yuleOV~8ldT&BOe}u= zlTI19rHL#hikUWs+pK&HMtP$5t2RfhqayPzHD(MEHk#ikLC00A3{U(mH`xC63#mT4 z!@%cKv|{d>t=?e*UYs9pio1dLuKJ(0qKEZtN>!oulYc35{T?Qz;CIAVTN^`DVRw>i5gPRE zhl3J){6nh7L$lhu|HnD}NU;8{9>;^#3m}8o6^dI2vFt&P{poZViir))_(*@@-$i4^Hw%{o|rvF1yAVz?YtkJ9~z;`=j(Vn^e9>E@hf%gcrI!3yC`8eH)!A41a4~$ zy8hk1ws0Bb1Ib?p2h|%U+a2z9-*tR8r5+gmp4F$eUNW}8eW?!6dN-8+kmvEZoxQL7 zvNgDzcBrn(`1N&RcHaGbI@0w_@4D53o$%kz?8$5+e#L7Bshg_p8{@q%bz?~`WnT3h zJLG2xC#7T26xt7vx8)J!qCr#(pu0wZ&GBir<}sFu&&O!jV2vff4r`q(*XhB*q1PCK zZ6y?Ufag|ST7B>aPr{Z3g!@Iw29tDs{rpIV!LsVUucJ-km-3%Ek=b}pDzD(J0Myi9 zZSP7f^mLL3vd)_F66$~4#T82SU{PCRomExU5GYMpf*eGY|FwlWonuZv0OZ4(oxx>K z6ckfjbIX)e5(YY~{Qeeqtk6C14KTkAPwG;(mNp(v{ZOHp#FXda=lR?p8%z z@#l0h6Eh8;mqNp~^T-E=+)YOAz&Z{_18(|?N01{O*8Sc0cE;lHx2=dgY$r4@eU_dr zB&7V7E~|khzV`#?v(>~J4Udbfxo*!Rsr5WQkK<~O+BmIO7QSB&z{}azP6yXTes`SN=3k-K!zTj#z zu?qrsM!tN#Nx?ow3ylW!RS>?s++Ott{iTt&ZzhSz|38UB{CCQwjT!``Nf-o#?7zx< zdO8U#W;%)ij564=U8{)!3?B;b%#cnXo8CRz3;Zow1hiKu@*S?=s95u}=uqw|t~n)}fGXY60hp|%wI zQ3M_bg>)BrCb^F8>U>y|v33o`yF|K;!M2ZVM2P6BjA{#gaS}?DDmfp8?7?$RCi?x~ z?+?LzgZ!C&zpZ26nP;tOo|zo%b6P{Y;;N0H)G|$LYPtgMw<=+JTC_%EuJHh8bS3Ad zTy<$`T5ya(dn&%o@E!i|kn{WajS>3i)LnmVn8T1tUR zO7Gn%AwjO0A>{_e{sJF^#9wMsXe0_>@AP_=VHpT|id-|&J?^)h#0>QYu*h-_WAM_}pp$+u_1@$T;XN(+vVP z@9imf+;kw!9!ZcVI#!N$U5ZS$8>8vvsAwNkT4A| zxYJptUazmRO`42c->t-t%nRU$rm*h3JjO{Tbnt7#Qq{ymgF6`sNfsT7pTXuIVjIH= z08Y0#G^OqzHx5@0BOch{#?+iw!lXS#z5=s(Y6+M+60(1l#jTFi%N)(k* zC~U6}Vuh7hKS~Y6fSWDO&&a1{i%^BaE>ZkBBEhb3%&Wz)a2BrbJ7+?sVrrCD|15_66_&U|fmb z8*V`Qw>1rtvn!3Il)8WZqrLuu4r9TY6Ark^1#SrbDz~Kmh)fbhCm!s7M0~~I@bzLErShZZ`GRSzxOXKmPoBzULf1*wTReXGC zIk|EvP#Yr;DDj}maX&tJymS80^~uxbWUzy|mJ%Kkd_p8O;FHLdqKQ*c;}Qs}^M|1Q zQgSS=s|IPSaHV42L>q3kobUiM-^Jt}n_KMliWw^VSg|g6*ZG?5{J1`2u;A*x#E*X|1k*MUqBh)F~POcC-_{8 zkmCD5U{fCkN2j;tl-+W^K2=z+hgII7X`j|8IXLj|LG6jfT*0h&himi!hAPY;`F$JYVX~qS@7Rs(Q zTU({{J}I}#r8`dcH!5{XQs*sz%$aGf(1En{RYrN-Qh^}Nn^Ok*19^x}dMywkv(ovO zjd7Q7vpcEN!Iro8v{FEzsq=5JBRF5rqS&OS^NfI5Gq+T;@~2r{^?8@hc;>wirVDTe2H`w#vP-qbK9L*FO-y#uPS zE`#Aa8`evkYN>IGRi(m`&uBijq0=TygYbJZX4x^2v6MtRD?Wqqh9dnA2%w<3fKr~!>?E)u;(+*1`WLb=H zcy}7^INzrNv*HY`3<-JZzzmrQ7fqg1h^e}v$K+>0<=sZzGajY<^#NZ&B)FFK1re|Ts!X+X?9dY|0ZELQtNwc=15bKa zsW-wnQBnw@?iXxuS}UVUwmJGs(22LaUrkW`&?q0!y~{3eCZ2vUKM?okWL6rh>evW~ z6-eg^XX11EAwUj6EC<5_=AW>5m|Obv!1yg&E%1M=vc6z{cz=J$XCMd)I>E8X)dsu> z?Z1oxuJGJ$IsF)W#DT=dYv>;EZC1U=h_AiB>n$j+PV3aneoxA_5IbDAhnjAFa`OVo~vQ5h5Ba>Jr|#b zI8Cz#?wN8`@NYe-Cc&if3-3!QvRe!U?qr7>ShO(i4vP0{TM+A&g=Si{wAL*e&V~lg zcwBa+^`P9?BS?SJp$JBx!XO%hkU?0l3+yO45qBq+e^CgYlwPw1i9{?ewmVN z!VVLND?AX9U_or77h%^wL)DXaGsk20QH#8xDiCBx?XV2T8P@5^xK3^x%%p?Yx89fl z?z|K%up~Jd z7L;>N2&CRF7U+85Xa(s$>~qJ#^s@`tX#Q19^Nk}XLs*p>tv#MSORnJ8%USmS?*GP~ zdVud49!e-p)7EA?L(=l1uvT1WN#n>^E0`)1-JfQMJlv=$$LVp75Dj-v+1&d?Yy2(A?HQy%th;j?GI*C7)4D?UlPDjy6tq4a-S>yrUF0XJmjlVY zwkHwF7BYE0mJe=U*WszR8vM6>fABGG^NkOblqjR5l8#mOtJ6BwG%V8$n>-v|{VI9K zMBgK5vvT?SLZSW8FBPtC-S!b+z&y#e-Lh_73{+_0Q+}wr@~)%QME1hCF`vnfdtvld z(~du#yO^^__NX^-Ndj`3N)lr+8^JrF4y;4F zz3`ee+KiXbK~fHfr&FaO2-aP$zOXbEdl_C=+m~Ga&GGvyc+)>ud*+VK^{fRjZkhX) z2QParM!sd0oPs+Kd!Xbt_`O38iECtgSlgwM|Gn5z%OcD+e)hUI7|FsHswx-sw0bym zBJPT}Wz^GFb8q_ID~SW7s;G(-+OQUPLAcCH&isaNrR=THpY$CxS*9=TLoD^)d63mU zk7N`C5Qz^L?7H^PqfUg5=qKQ+6lf!a*?I&RzuN9S;$vHaovZxQuafX;w%99Xets*A ziyc!w%S?TzV7l$s^c}y2b~-l4U#?mCFEpm!Q zOGjz{mbU-;T?_WDn(TpbpGL_GEu^q~ISKrm(h-@bv$*eOmI{;^j;UQaF_FwCHGzL#;alE$oJH-Va@^?wF7omd;6E@)KGp#!7 z?(UbJ*fWYnu>{>^jmyc!e_Nyn_Tsub((yAg6Kwx}Ha-gr0#*OD0Z4=<_)f!y6+;Ek z)JqXhJ(B<=dTI0;cH$oE*K$#@cf@tXk=DOoRuW%=8p|VUK2?J(=l7FXZirmoRdQU} zLN(O_K6M`IJpg4jV&i(9we`bXreZoprrqcf$0lO7cXOSLpVSMTpjE+=U$`^w29c9uS^&;B_e9_jwiDC)jh*Tri38mI05xppgw zeJTW8Mj7PIemoiw?=EoVLAhqbqh zr|kBV)AAm*voVDDo#)TMG z_vh^(BDoW^dGJ&>b7L&u#|W`s+fzD??q05Ym_0+Fb~Ok@Mjd^>ec#iOOayVg@tUGs z93KDLy{vyyG0jwZ%|7eDiv+sE5T@(sG`c$u5rCwXkUr1A3f0LI&w zw=q&(RSbA!U^ax8%kIr+)pq-2H7?a&?GG14g{0G%K4C`=m9?+gv8WLD=aP2(9FzGT z+}-91bW@#ij5csJHMd5Ct?*Cc@dCgvV!-RTWai8MeHh29YmHhTqQX!iTx-e zwYF>$e$BD&{A$7Pg+h7nhOO(EtG1%6i?zk%m-EK)&%;J1*kGidm$$S1*^UY5Y-{%s z{V9*NQ7&RG>xswR+!4XcH)qSF!F{9Jy=#*tkL`0@3|^*MqqFIaME%a+9@7B2amud> zJ}lpJ>-Uj(Ds|{BH91SOOXguasg3HGD9=*aO}lcRSA^CUCP3H7Klko~R3c?{8C%e-qH`FZuUp~Bg0 zy^jwmU+3dEovc=+^el4eY8?n=%c5j?#>@At<*he)xa`l|gRFP5fG9}jC5~&S{hP$% z@Aucp;A1WG$;zd(Kwfo3PryLVsYAEhJXZ1P;a<9&nAeL}al(eH==Zpfu)^E(Fv5Es z{3NLI%Ep*a>Ec7D>saITU#ZEUp4LfX-tKO@gARg5k?j1XbgwsxwQj)6d-egeweK*i z_xZ5$WqIzgGQF!p$c_GQfwBJC(nW^MuGMnZ`QdU-l#gy_tKmVA6J~s&#mA#-aO~bMD6()Z8nWraLp($Y1)_ zDh>?AY$g>@q>r=mV{U!<>$3=S2TowwD!j+xJ(keI)6UYTxa52WN#zr-qtsZasz@DUPIS-fw5-WjKub? zUH@vgw!Dj6PI$_lXxzBi7+gQ+?5FIkhaw$z!nfG?L4bitNHxSeIS+@O{l8*}?PBcT z$3%YskGY=OlWpaPYl=4y)X(=3J>yz%8VcU-=u{NK_f82{-*`H5?^oc8j%#!g&PDe} z23Z1sP~Qqc5YV@85g~wmz&_U)8F#JwGMz2ydDHd6-M8a40)yQBs}zlYn20n3BVoXl z(f^9-$uvRSc*Nsnb1)ACP0I7e55S)DKr+}0EKUO20W51$LN6Y9S$l}?BeTy zaQ(J*jXvpGH37HNU>i?F{23IMJOh?wVNBP7we%3_TFmu>@Rcu=wb3 zZySy$M%$}E3Vyr)!Uv8_%h?rZWCn~{P;CQ+=ZL@%>q%xu23*1}p)$1L#K8Tn};Z7m$u2y53s<1HCXd-3Mf^Mh%5 zq_d9j->_%H;hmj&B-}c~vKXEEi`{b3J>caLo83al>R<1tLiNXjk$c?Z_s%6A3>Z6U{?tYs~=yoancL`=K)|GF(Gz2P$)iaG6lF!g5H#FZ^UW{b=m23}Yf zaD|5RVGY4DGba(uSsFvMraz{tEWS+Dnd>L5%^4aKSI2ElTG;q9^bkfqCN9j;GP))O zDHC}{3C!b|X(pX0V|m7Mj1|}{GUSd3k_Qf0u`^{S5h?R&4DDHqCkc-jUE*m>uGkJI zf0QJ7^{cWpPr4jI-bZ;2bXo{91CMgx_lZ`ff-L!&OmgT8F$gH35D}6HXa!3@W8{>f zAMle3u71X$G>EH@;ysEzjY9E|SqzdPvxCKo>sw;r#dgklvi~P~5@tuA5+$`{%nC15 zV%LtqD!^&_&*mgM$J#_tElf8@ixIt4fcRhfDa^f4&yr~^9Bt0u6@;Q77@)=_l%zSq z;f;#>gZ@7%Cxt%pL7f+XVeWNc^AkKLUNobl5<&4 z6RMSM8DY8PynbeC2eRzU8I4K-)IYD1K6v@H7YNsrI~nnKoQV|NYu`H4p)5sC+gIa} zJn(IT*WE!T;DIJNiHb&AEh;HJ$TKN5g#1v1=uzVPyi)KyavWE9oj5xt5{i>Ov3a^P zHV3yo&dF$p?|N%#R$hBEk9Y>VKsKCFU1k&H{~`+iLnwGtIKUwPS1VV7OP}F{!cLzx zMS^IBj(`b*1lSy|CSvv?Ei*z%dp9<{HEcRLjpjJujieh*EMDR^POp18GVdS7}UY>=1k3$R-kxf{xm^ z*hBWSxkM!QuP^AZ8=osHiP+nly02+uv-ckpGjHAeojux5@7uYVuV#nC=X;TpOjnhr zbfuDw-!a(JxpG}jucx=N^*)ttQrb^M_I_r17ppGqJr}a_I&2u+Gk)GLZddaU1Bi0> z$j665!1rn3@kfE3mVtgz0v#AFN?C_-M)50Nl@Td0Qk<4!{^;!(g@KqtWaeL zKdfqr^I7jERJTG-SLC&rwK;4ht}_uGC8o7FCL&P-5vvpt-f=SULuJs+QPFlC8?qOs z|M&gBE}h4>m+jj;K3BQtj~cqoLHk9=@8L^+ zHo0zYOe5{u+;KX;Of2`Mf9Nxp>}OS!hR6w;>;@GmTBuGjSE_`iH8q{Fjsi`>&lGAL z{zyCXrMeYYA@I^R^MfVksT{-sEtWKNdGr`^lSw0wL1u-pQx)?uwyZ*dcO9YsVo2*q zXmO60GXFi&{9=uI^<>Rv(7Cc5Zj$rRo~h7k<*+(g?@Zv#Q!sDHqQ!7saJC66!0&Fd zKS)yVG*vZw@Z@CES9^k_N(RjNi;ovFBMS@4k@QHks1JvG=>&5pu{fGIJF&3uE7GP9 zIGR;!i_>?>Dub-Ha?Ir{i-QQ}CFqhly434Yn9_`kVrB!(7&BR28!J8>vE?`G$kl#D zLr%e}9lJJXEbe9cY8&)=s;+b&RuJje^XpAA#nXFqW6|Xfh4`|TdI9w6#a6JB!4m;h zf`P&i!!tVWEQ{6F`$MqAVvR{jX?c}lx~p=uR%Q>KhPV<_xeDg;Q;Um3PT(CCPC4s{ zE~0IB*C3;iB#Zp@k#w^%oE4G`(~t2t0BL@_;~;=tzRV9w}-RRA$xWN{e^%wa55e8Nw-O?&l_X-UBwsf{*I&2nn=)iR)b5yu+Hk@qr3(QTqV-b?>ddU zKW@|^N91TKoq$~t$|-W?@P+9FjaZjEQL&PkU! z&*~;vsD%5%1vjazEbJ!-$J&k9(uTtA2D&|*(S#!6f5R9fEzioI?Ohy(Rx4Oe>dF!U zhUAsY&kPp_>WD!7Ny@k=)SIcN(wKRd2(d3fyFfi_OM6?P+0?G5oxFBx&7DE1)v%8O|mX=tAq3-4?zx(Mml(ejb;mw;e1oe}%Z z*B5Qq{Rx|)%(>s_$}R~FWrgvSDPtBL=04YVhoua?!dUQEauo?phaYxMQEe8>2j;#1 zf;4@E83I2JDZY2GI;3qcGNKR78CLjzadl2jnnha{P209zY1_70X|vMK{L;2<+qP}n zcBR>MqhGr3A2=^3V#i)<&pCz_H4SdH!4ja}2PRV$4!9&oTQ+c`M;a7T6lCEy*eiR= zNrILowJoSMb=S6FFcSQPuYWpneLQBW9=FWA4f(!!XdPfq;6&rA)5ZatbcdWS6Q7>* zV`_8GEb=K&#x@X!B!s}7O5m*-oG!R(V*Z?yG9w5{e zGxNEOj-{F}6Qc{-kT;-!rwaki-J>1H4LQ4_cXXr=SHQ_V**G+x>fglUS?%Qd7s2e! zqodM@PF)0x?7%=X2R()WJe&(}03E=a-ZL@pHB(u+djBExPV@PMj<>>yAhN0ThwEa= zDpl;?pW$9|pj;$Is_J zN0Zx3&s`|RjrRB2X{~qHb$t6wOlYRL>sD|5b2m$P{R_uau-)tVn#(Tq&q;tNDL$Obn`E?;>E#K4O$rXO&GeMTFkNMd{>rOiKD*tz7CIWo#Lv-qm-0!2# zpEJtVTpJ&oFKg`U&dnd!^Fcu9ZhNiWV8~;mS5)br$KL0&jA_VO-z(qC=GmKZ0ql`1M6kg4b$V3Inci7#Wi?_wA&C#D_j`rH}FY{mgUQdJ{ zu2llwI$tN-l)br|k4M`Kx?gX#wNPFF$J5*Ke0WGVjxP&Hw<)K|%sD_&v}eSVec@u~ z1c578w;kBIz30@4wdF8gFkbewb7WxridG8n?0}pWJ9r{}vdE%Y4z_oWedVaDoZgn> zk$)i9{n0If*S~cgMBm|ti6eI*W;BZI@sQK%ta2MSOZ+N4UC;L10y&V=_bead_@8xV zdo6zW`fB~^%k&Uf`YnKG3FoZXc4de0_Iv{7jnp11_EfcFvUc-3J zgr_u%9K?xQa^m7%u#Op?U8L0(SPFGD+N7+5&;IWnm|8f63obg|^hxaf0?QydQgr(5 z@q+zVccw(O!8m1jk(h=|;2BfRk0)l6hjJUGuY}Qx+T`M;?FxXSn9A?jpUL~;_hSLn zZTsn65Fb3e+_ApH?@aMMSkczo?U#d#j8YO&PU7k9;||Bm>gI^mj{^}z{Oa>JVPD3l zHF7qi=_%*;M9uH^x1;>tUEjg;vkmZ`%T8a$O`ks!k2R+ae|FQhjCqHgYTsvOz8Bm) zXIk?BFL&h6W9dJiF4G~T3J=pdl(Bz;yaevD4}0G0ovIVz zHGm);=q^I*H0E(&CEjOKg+on9EUCiH#Z7X*X zZC`SJs(aiVc`v|_mPq}Z4A~-OWmU{5gOk}=bxjCnnQ-J}&c4<2Ls@`Frx0~WkpGEr zh-s1S#R@O2<-Q?mQZ7GEN?Z(aQ?OMWWxB+6)b#X6niHtmZ7JDhRO~qDdb8o0(!S%8 zC2<^d0k0l^98OU%Q&jAz-+OyLeEE&Nqu{)32`YXnAy0EE7 z$I);Iz6aDf+V-@MhVAAprIh&J#>pPf+kNxnH`k~=4ef6_scv|8JxXVnJh(q*=6U*X z9Z3v-f4J|=zC{6p`0Z}Jd>tlN2PcE?>7TJNgg7yBS5Wl07a8<;76M$qn$A|YcQU$n z02liZFFTtsG0%ioQo85vwJ*U=Dy0lj3_b@ENxfZ`?-$1l9r>s=!*cQa67Y#Xs5L>3 zKG96uGvJws3=xVT=+<=@mx|#us)Z1^ijmwlBN)8k0w8mSL=jlBnvw<3AaoYP>`nWY zO@*kl2Od`g1kT2U&xM#i?#K-L=x}>#fUX!3&VWJAkk&f{{yrrB5r?cksjPug&S;ib zxZFcLamEM+djd>*WPM|}-2;@KK~wKohflv;#&G>Ro|-)cSwkGaA&qHbrlSSIaYE?H z!nCR&?76zOXymzkN9axQhXwVv0%BaM`kXXPi84)LXnDYj5|^4XyltLDSq!@}J)dnp z4T-jV>zudp9Sg0ArECKn;YImKR8nDikQN ze=#nX5te1=;*MX}OESS3>Up`2#V4-n700^4St>3(4QiAsPA5{TtszcSiIc^+P`1a} zw(ZPRloQz~rJ6I9ueU0y%*|4*i!N5*Qo>HbR*Z<6u5LBDVd}q@L!!nVJxV*D=~ z@a0=lW|ADw0kXv;yB5g}I+sPOY@^lf*IedZIjd(|H>#D#R-^6|spTgksK*zoB`Fwn z@_h}*3!=n-BD`>piiN2ew46_}6I7;`CYI~w#01InH}zf+?7G{(^+@y>y85{MaQkhj^=IcOpGRX#TqCM%(9Asg4L}&W`!wS(Ww*b!S%&C3vlkq9Yiv ztz7-#0HYEJ^D{Zg4v_=br3s$w1YDAtb8RkoH+dH`N^i{BOqZ%kVVg0R2$KpR`>~m& z$nR*SnmE{wA{sRJ3Hs=*4K_V0(+V#sAm|K`l!${x`w<%{(=HS9$lELtQDe~OpU~&}N=-dP-b%=UcN}1QK+DE5l zIW4ifoMCy%rd|Rojy6JD|Fk>ne2A8uapT{WsZ6*?!_~nbgl;t&&@{SjNqvN{>3yWj z0uqW7JIdo0QI{XkU|3*jwe*w5iZ?!0$~v?7nyo0d!{p{#d3iTIyd^PF>f-`2zl`n* z$xw%S#}Z87r}7fftz6K48xdGJ`uPjBk?71cQ^1)X(IP;(|0QYT^eUq|;qYg!Wj$Ev z@oI?6hD)BHavl)wapSnp*e>i;YGg)01N`=R#uBxQO4X$ddrvgIkd5Y1YgVm!!~UfM zvoLu*zOuhk{#bs8@CZw0bSiINTXd6vWsn|f-&&|DziQ=`Izybw8ofd)J)$9$<(-E?Z3)mm}?eWC)X4r#VUD3_35W~(9#K3)So!K zM8$~{EWoKpkC`nimFXOj?7`eu&^|TGfg9ddd&ali#OBjIY;%>u&x_jqb9ve9{`_P$ z>`1`@DA1com|R>pD!Jj7@r{7s1Q@Ia^H5(8Vm{4O2eVoGbOm=;%Z*dsUYagDwu`S+ zq%Z8`4oN+>*sj&(wHE8tNWC*m?U*Inkw|!&Z+fY;alt+s`Un7%lIu|ZNjw!#QX;b7 zP+8-N^80*|CdxBlfc{;Al{3H6J)u|?XSh~zqLtDAvuRLrAF*Lvtrof*5AfsWH7a|p zKcf^9VE>9*n8o^1Rb7?=i}tI|Xel9J2g$*2f+Hn%m#y3eR*`ZqwB3%yiMWo$4oo|4 zF*~ryq(RUVYkWQ40q(oaTCdSw6sZupbFH+aD%=h!kMfY{8&IavZ86Pc(ve#yg_P~2 zv+6DKln8{LlrP_5nq#O}0hI7Liay0aR)Ya6fWdF7lkOn)_myRDNHUX3=^#qjc5gn) zLr9EXrD4Y))3D@?2u}Vg@K|iSAsH|Ry$507to>r~Ui@XoC`DV)On&&&-*Z0kl?Jsr59&>YDnVL;lln9f zqJE;BM6xNsy7Yki0Px<0GoQN6kHaHrLi>64u95ma^>Z)opSKrH@lau$qfm}U5;Wf& zYWjFTndJ=i67o<@0Ky0*6)xzK)N&XWqH7f1K>{6Uom3o{OM<<~B^TZ*Z4s-!prSL+ z#89u8i%Iv`o-BqXjXUsnBZ7GiM-@Y}G08P0Izm6LB{ZOAcdQh|T64ojiKux+!0 zzN$jtV6iAs;j%8?4Z}OTU^>RCA^Rry9RcV^HJz$L7@f5s0263m8PGG_ojsbBSap7x z;epYCk#;P(@mvHd-k0`+1822E?l~u-;WYi@^;xqni{J z5M>rNYYhBdah+FrhQ%6Rk#>bG#WfWSsTHM=4~7h0D7uW0pq|c2ePjO#UY*uXGNWij zR-k6JO_3xXAQkKwLU#rphw@5Nb;%SZ&NY(~6-H;jUXPIrQ&!zIS}1i{=r9!6P6$(G z$RM-2mi^jR@{VnR%Vra}OO4CpM;FAeAsxK15}1f&kbuL#T{ z;9MJMyd}v14hZbz(z7ae?@lqwacT((G8P_;&TQ!Iyn^4LwR|aj?Hr1Z8&W4! z!;rdo`@no4*WBHP&;2*lj`_%&Rz(kqNuG|SN1!KOXPj0Qu7&xVqKqI1BU#RKJny-LJ`g-ArL zgbL9wh6k*XGGDGdOwu6OLdh+m;C!qW6s&Nbwb{_6ISZ1gExGlR5+OEmA7X(G3uq0I zC6c-4H0PEzBTFew)K$=+mT>OX0;=K^fG_!64RXG9_OcDGcOA4yqE!xWGyd;XMMQOp zHKU&%)vZm{`I7vDW>FS2*t8yr!oCme3TG-aD1OH~q#zQ^>v|)aX~|b$agsd|YP-SE zr4Q=+(=zvLMP$9dq;7mi4A%3f@9I7z6wn<)Wrg4*A~;8p?0$DJ)pn0ANLt%=fIAuF zm1u%aXnum=OAg}l{nu$2+~>7vu%JVZm%qqtNq(+#MB+j%Pt|8st%8lmN5+;rbW15l z1)Z>i?19c?!=drIXnQieDG-CUNbcoZNftMrHgNB?ehnFS-&hAN4cKv?X+UOk+O%`J zC-n|>Z3q#1{DZZu)#ql)UbHfx03mdl#3jm53|{F)%9&cmr{RKu+Pr3Szd!wLn?~Bv zT96!K`S#%6wMpx3;QyYfYah}?Pz)z51bR2%*6%>B%>&KAGBK8N^NI#RpPaYhcBOxT zUxV9RRvACkowFk6YbMFc#Jh&b4Ip!n zz^odswh0-odfC9lWdgP5!)Agy7lgQ@9;gMJwnnO{1_d&|nfXnERHduNHKAadzeda9 z{vlJI$cAE$U!;_j>4Y_j zEz#>QVTl&=wcr+v5L?NbSuR%a4J{gbA^+olHY`#8F(!ia9WibVWQ{y*`=Rc823`;U zTUGI=`HMQC*wi(M?!J~Q_8L+RK~-L0msorYh#?I#qifDshc|Z*6#$bdSRsDcg|v)M zR>cc!M%)Tp(&GY}tE%aX5aSKHAcgj;*csT+39W^6*vVcwN05i_*=a0CbZ1aV<%meI z)XaUn=$w=$|EQj)MUxU;{doNKr1LWvX_`g)gGiZ23S7w_vLZj|`bE%LZlkaye%D-C zV|b=~AqO)is2+3Y3BVK(LZ6{2X4s6zKzfO2Q@^GKQ|WbOr&))Z+*+A?8yzxYGnGI# zjZ$S9IG^^LMmH#UCBZH?a1m9ObmT&sS;GYhxx^CN{M`2M0Z4K*j zD~P}A+#V!yQ^+d(-;}RAXQ!a)n}LS{8fgZl-X|it$YTckW#4ES7UQtS4t904m2C1S zVzuz7spyt9c3bAJq3gr;FZeY?(C1ku0|9J%9=J9+!`9(9UuHqyn<0{I=(`@>Gk3x# zvV78%*pHJ7cYpvJsXnn9YI8Fpec?zuVZ!;FQ!F1)Zfd-d+ms!Vsxtb~VBk{Bm}Ipa zJrQF3;9Z514&qz0OP?`f;B+gXu47-!(XJ z6eDE;3hs|Av0LCUqEh~|ddfUm{0ZKr+1Rvi8+GGAifUo|tHh%5!MUS&t_;zjuCzI@ zA;i&pUx2nZw}g4Vgz{&935Eg`UCh{%?J;$rzq2RUfMlrz-!q!?1~`D9y)QTa`w8x; zmJ;RDA^0B&d67lQ2mFcQ;&JH`a@Dr zhCq28CG_?I1I-n+ho_vO!sMb3%-^GPzF@w@J;3bys5!$PLzHzl+0s|=(Sk#kef52uTk?GReqLID^j2Q&4_$}@-WF2Ft!{`<;l0#>`)r3=)cFG zr50IuJ_sR~k={bKu(|;3sUbzU~i08ga(o+z4ky?EE*|GM; z79JC5(CPG+no|2Dws>eye`Sl!7NQdb>GcjpvN3*J$0rdE0_Rd)8TW?w2D?5>C<3Ui z5-H}1k-D!@eaOT3!RO6kK9(pwAw_#JMRS#Ipr~(2YEe9SE(@w8`Cy&n3$9&*3~x)9lV zkXOX78JFCFKmg$W)`y?1O&DTDNq}7(iQ~{W5hHAHoQ-7eDuJqrm!G|Q#J+bZO#mtk zma6suIAMaA!#9r++kku`@dtiP<$=v;CanFuQ=r1{7uP4*bs2Pb_ym60mwc(1+YO* zll6%A3?e*bZ{^ns_)tEV{+WO5QCn*z?qu2=Zn|H?obGX4lMI9YB7a`E9WI$$*ijH1 zavOW!H(5&kT1ESbr1pG2)tOsFe`X-~fSKS$n7aLV>xDKADOfu!7-4hxuEl*4wQ!#5 zfxt!ad7kHJ?U1@M(VqlA2L_}r4?vM(F06ptR#t~0A({RnTHaWx$kS|g>9^8OMI3~} z1q^+@|Ksl-dmwnsdd>2kcAJ~cL`lar-Z;X#t!WMJ6N%B`!j(Xqn^xGXQzI%-Tk!>_ zM_BF1C=J`I^+afM<F~syk8?=S3y)l#^(o z>*OU#nRpc|X$^QHw1Z<4gDTY$ULBY%`{{d9$-W)^3Y5`nf~~ZR0pl7D zYQwm?(E$btu-eUi@0xAKb>*P()GjY+WQ_YfRcU?QqDs0u$Bu{;FZzaF~;>aw|Hd zl0QIO`u|M=wLF6^Lal8Zd@@w?kKnO)^e8(Z7~FGZ-}JxH zZDE@qKM{%X;q~Zockx}{l2s#3dkAhf&XKwa)sSGmAev7bFG#axeu684|D&?d7;J;$ z4M;EqO`m45iML_X{x1Gqt|5X!n7qt~=L-@LA7f@$3Pj{ z^s6i%Mo$}^7ZRKS>!!WC&KaOf9!!iq*j;Dmx+**g=F4`~Yi7&z3($PRUHUJt@hmeY zW5OorLUNfLTnVmaZBWi6IX_gR+GWJng~>}~pWCp4TUq#cI4rD^DLDIU?y%S*r~EZ@ z|KA!Pn_f_(;Wak66S)0>c-6Y~lG&d_aG$$PG^$TsdPi=YhbH?j<>)%)aVMn<#XlEx z2Y>t*+MZOCy&E}$0>E!`YhXLE3(x-r^0w!QTw1UDXc(r8!yO>47t}WkaqE8s4%G#< zBQpLM`L%hEFM+q&*^57gx4kdb?CtBIvDJV(!4Gd!DG7>%Msq@hNNatRtH-q~~+pB#$be6TpegWSa9|JxY3go`gE(oFx zbS5Jx10)2-2?|Bw2Z|&N1Tq&3L?B27Ob_&qx(7oP1q2S{55xfk3T0s$@Ba$VEMAJn zs~LG^OO82kwndH+b0m~Qco`6KIeKQGsWvb{p{ew;3}`hYhWu65L?$`evUJ9Wt$PX7 z9bsZe8f>@1$UWQR$pE$7AoSj{VZa#uYl@+*UDe9{I-Uu_i8rZB@yG^N5=3W1db|td z@j4G^6J-Ri(3((?y>+mnHBfOF zMSOL90KgYoj9*veuxKF|73?LnW3mtn1d@muK*emTCtMBO^FBi>0C$3VnePwk3egOX z)Ak9ER2|}Pn2qwiP={sagMHqi*`}dr%&|1rL6Z*=HKCy#t+9eL|GO>1VA?np<2UE8 z))+hdt`c0sO@g(RWE;}z02a1{S@h6ZVgt?x5P*sEHtlaTn>E4?A z+Kif<@U(b-;G`brr0|mqfb*l>Q(B9Z=&|vL%Y6D0yNZAUeGtzQR_OJ3}bdp#0fVrYlZqyk=tX|6ob;T@$;e;7Dj?AplZ{k zd4W@ZQ?gUviH~_7cHi8j$aBj{sek@~-N5Jhk=tUA4i)?sUM~x84eV_Aq+KBo_-=Z3 zU!LP`(}mBv`(2eD(Ch5zT{(~HY5-zTtkgKMQ#p?CsH|4K!BOaXg`i6`(hXA>fc=j` z-{&2+M{=h&-)qgejkLMb9T%Xx;r^8CT>^EnL|r4Q;tXT=`TXGND>t~ii)Wsf?p17R zZ7X4Vy_X|*+ihIp@rLFmi@oL9@8^5q<{I!y3XsuTB_7rZIJ7RAVi0I#0MOR(_I@r+ zA9fbF;?28Wb4I@%(3KdrTx~-JZfL|hSiige{)!%OyFsMqeT(MF^riBEKlG%uHwcCG zsAk?^a?#l&puJ(g*hw*0u~x5rQbPxCxq0cn7_{|~|5RPMQ#vVAF#moU49XxHL>aU` z?r4Jj{u*#(iQ@R|HM8q5aJH-X_U58b8F+oysOi4Pr zk}h{sLpg_!cX>=T?b?zsdS9fVw4aS`-{ndjr8N|GTc%%KP8B#f6wY6kKXH@w&R@2~ zQ;%cXoJ?=l7PvqUV{W6L71iMN66`i>X?b)sf=9o# ztCPE01uzjGcD8mEVHYWAzvsNYG`_ZkjgKx)c3WaPwRL|sLE72rPi6kS7za-5#!%}F z^z?L>ahBZH0N7eNM0Xyc0ccn0gbrpR_C9|vP6lFrmf#}ZJkQc^aawi1_^3*&XB#(K zYyL6n6BM?06LI+rz85xCGBGL&cPtyTyRihEAI}wz)C?zGRhIxe*3OlX;v!ER@D3BJ zohJ%!MK_s{a%znNIpjHZRoeg}$LgPE>>s>zH=AMr;Kpl`&wB=bH`*5lF}H@WAoA66 zYlYkgtfs-JL*`I{VL=)2`n2aYsNYq}-&Q|JG8@R#nIxV%bcB&gj>pGc{TOcJP<$oz zcWy8B=Yq^-&c{vy^b%OoUQ};X}oFyAD3!tohnB|(3k0JEFe3;N0orIX` zz(K_UET@@osm%La?QaZv0j}0L@A9m5J><8)4&Q;%%bmD&(|1Zwt0=T&#X&rJ#%ZB` zR&AWJ%wt%l9PGGeXhz?TIA!oo6Axt_vqUnfpM!SgSSjD^v=o@qORdj-+a^ifVuj3@ zY<8XkuQ^8i2}ECL_av}^9yX_@aC(JXGr|D?aBPr=O$}hF`61Y25A^#Vs3^>{#helv zKiwh8Auj&yT{4yC509`S`7 zi{@Ts>!2GrZkI$mR^d_v@7=AyVnHJdUq$K=P5$&4k0^c;Ov~961qvh?DO*En(nezf z&T+!S3(|%}=Qsxt^VXi}u;d&BBBXK*I&$xhHYpNvR>=}?G*CotmcLm`Ah-W~_+E=x zzbVSPKU8lf-duyNL?5^s*#7%?Bl7SJsH5YUo7M^Kf}CrBNMgR=#;*6kWU|VwJQ=V>mxr*oo%9Ich}K%OAZl`IVoXko)m$r8S2%$Ve)tQ4F1u+Tl2lPf#4849Xt1(|`0%E%~raS*W4ki$Y}Ub)33996~bP!VeEc z4#Wmq_(vxs=`m<&Jlqw(`$q-C+D%8AGJ_2E^T%RMkXtxqac~S8?GckK2Z$y3_r@ zoy!So4J1PHH}mwz{wYur5#VGPnmbo)P6 z?$0>jCvhJ|eYBwWe8nX~XevCh0xGhC);UI2ylBCC3o@MG9kJWOc`9T%QEDoD@c9-+^)q+-;Pv zo{;@ur;Pz&Aiqt3APk%rNMc_|bLh`uzB?9yzr=yktIsEK%%E9Tl*&D8R_I>`;GEFY zgJ5@Ly@1~S$vW`bKCw2e+Wum9e7#tXy=ZsXoru;${Qr<4U-m^_8Tlh(4;S0;H1?!_ z2Up&kdV{a-X#>1LSNAht>3c#64r9*Tj~>HLr-@BlyI+&nR(33)f^GG3AW>)^x5&AtHndSO}tP@-NRI zDny#gJ_U9^nb-d>iSj=+5BN?^ms?OEP@p*Q)OezQL~l+L1o%|?B`8RcYx`D?B`AFm zW$?^VIOQ2V2-&6dH;;9=s}s)>PYTZwgZa+@lsp3_No;GFKodP*ZwDbG4?S;3UppZ) zc^az7Bg#??%s@1jk|IW^QeZLva9(~o76$SjEDNvHlNBfu;P6!FRVWHTnGF)5DT^jD zGw6&cwdkWCHXkfj3cb{Mx}cSq6A&Xt)UT5%K67~4bP!rh_frKU7}_fowY>xGR?9^_ z{zk$9>qNJ;dxtwYDwz+X1UE;KgNxN}w%RD$H;;m5+|o0;6~-KA=2JVBgQWtwD7aO3 zUj?o4zgAXBteu}3urM5eKVWn+d^3$+y9XMUoXvi! z6g%knWtCG|s<(|c2cy|_!clqw#aNFSOAeO3)1OiH9iA7K2{bdj$MGr9WRZF}s6Oy% zwFt|C!{|YJg{axZ~Ac#$@X~h*`4+J@VNbW-hNr;-(W-qs_?awJEJ7_Q9=h= z%LeijZlz&=ph;ESYzLSzrPxb06sbU~S*C(1EiaH(j9nU;O-L=q-yDGZ zFe*kyx&xgiZ4*re=MAfr%vma)i;h^FGm)uVY6&?dW$Be7egWW7y)3;Myq77Z)KK80 zL{1I+hH4mX?H!W%)>cOT8kS~u9EYtDWFmV+##JH9oK1NJoK^}&0`zL4N(rSrOHZap zCJ%>$^s)udGy+a6!@0&Sh!uqjl9HzdSq}r!WK0Ctrz=Wdh(aJ}3{2|hr7j%h!g7XQ z+s{p`LXJWlKmn-0$R8F;qJ&PNh^j+{(1f&Ih`B|oY{fz@1(#>mTzl5>oOEP0)w0s= z3W~SydocjgtnVfW89}kZCzCa8ug81wMyQt`>%##lUFQyAR|X8U*<6$#CeA^p>hxx(unA$A zu#X1;ub9UXpixu$!FPZFw_s&2Ornt6Fg@h`I}N1j+n-Qupl##y%nd#sD@8}pnkLzm z0<*465R!g^{ou;(4<0Lk3@%ehIY-CqT>Dubsv{6hz2KQKO&RrILn#G~QyaV2$sxFo z0S+iQK!9U4AV%iQCnN|>s1L@4L=a-}1+!|pENn7G)K66nLXJ!$UtYtSkGQt@Gzv%* zI4PV2XR@|x74{r|vc;8YH;Q%sbyR0Wl#Lsn##4&TE=yOqDZPC#zEwTB@kWm+&0y4n z3~s$e!{ez9Z}67v78irl1k*#aouX#lrMt;*`K=KY+=z zr4S(GX7b|3ar6aGYI@4gSAP)c_1*4ko?`CY-y)`ybg@wrsg{1*HUH84v9Xm>u8?&z z3-CJL&ibXP#QaBmChU2P*uJM$C0BhjZY>W(O6Qe)C#7PdT*3EtY?ovA9%T9MvM2Ud z5n>H7HXDn-v85=Vty_yd8vnBN84^MdqwT`@sDvy3bc$^8ZZhEI;AqawE zABQ9>z{5K=3hVTQoA|U%+tvf_&H3zT`XBYZtmDeN$K3wCED+ zA~q_RpagQn2^?nfT+o7I3i5n|RJB2i0R81R;YVh2+u5I(Q8j?F%2x&s;J&mZF4tOC znyEjQ3S8hovcF`Ib1-YuIPOT2mU?Td@SsJr>Y}7nehG%=hj3Kx>7?!@Uuiqw;#JW& zF(`$PA!HsC%GKGH&$su(0*D);vBkEJ&{~HteSD15_s*cU^8u$@U_s@YVmteK{@3wC zAF%K3@M;br^i2BE`}!j~Ak&*?G5{CCNWc1sqY{$oj&k)$Zo4LaS_URd>;od5L4l)- z+V_gv+5IJc224wGtO`AWVn%IKh2WUoAxv`hgG6$k43Zm(PRv{g7%Y3G(Z~}#!*g3(+TA-Cd_g{a^>-* zihQPN>fhw?l$x5Bf#1LdI&_;g8#E557t34jg{t)8loijiJvpc{_0r8be|=^!Oa3OV zbfhO7Ceb8LzhJQ^nsOavm9f(dHy^%{B!Lj{=vORlN-zIzXWcmozoyctx6(-@r=2~f zcqo3z&<5y8%U4smfPlk?+s>YE8GjZ5`p->^?ezQBgPS*eLtu(rFkRxgy%5R3lMmkX(&@6e66tNnPwcfD;kG*tQ+paW{j?AgFVw zdfkyHuFkarUgsy!qFfC;Q{v_NG2u9F2BMvT6bz?EuPT#l_RN){Moev8Qr(ViZMM~b zE)1xeE@!_ASe6|YFCNF#f`7`mpml_I*{=dcI&R;Z_|U%X)`HsCZf6Q_NJM^Y-lLZD zYt@^a=0+DF;}==0oerx@w{b!94-NecQe%)Ew|&I$i8Z( zivq3PG=f`Xv>|Mp^!I6@N(|gmqw=ZwuvnU)_+WD)OuT{T=A;BfpOm-IIl?2tc5+aF zqf`HBa)b0Wo%nSXy%O_R0c|(i^53ODtcC_6>ljZ!_aN&bD6^Z1)(j`t(lhDw%c1}y zTO|9)p7=`jGH}@>nc#PEAqsUXTz~Lji|RKAvXV2F9Ee^MBNYpvrHKdEZq|5)CH%Ls ze9}xYY~^kupRS+j^_&wR+CIlZQOn3cV{IZCgottp+VxHx0gjnHjQH z^oUQwi4`3_58HT{6;3KTKU#t=X;pArm6Mp>g0MRaD_yYDlb$V=VXTsLBQ+k44d zKpw_SC=Z{wU=lETtjU|=oSK}}!A2UIfUTA2q3rf2IGPFYV=Jc8yN9fM+Aw;%16^um zq!deT82Dkjmgd$AvPo|diUw%c|ISO4;I0*AXD`Ar!Fv>Q`b53n>e_5g=DS0BIH>u~-E7ya}z#NVveGZMB-ER*W|i?*nli_#gE|XIWD7vC zmuN}V`}><4Sm5NQ6DUO)0dBa=a6kFqDyg=J)^2TCClf%&GLulD7bgChj@EM9z`;7d z%>-X=l7?EuJ!mi#`J8n^NhR%5uaT%Lh_L@HOM>wD%sOn$IRQ`POe6WM#7Pu+kEE&O zKE+b`s>srZz{Q)tT^W*Gh0a~oM2^oUPPrHCYw4S|A#H(TK9x<%ML=yrCS46B+~kaS zJeP~SWnD4eRR_6(;v?u82JI+kFcZ2A9^z>Uv5wD46qee1(i~W&mGu1fw#zDyWqFHC z4#cxELA{-W7yu<=#OJ)1cSgi!BN*i&YhM#x8?(p5{7-ssND#BMAtox@;f}1aWzgZ* z&g(g;I?c5QOuD!%ygDw(>qSv81dsmkYp>jmW#{Q)g@Qz; z60c`KwUplODdZ`vY9cGjY!&R?K)1Ip>pQ5CD4nyW+WYMx_%?Q&LLP9#W0kAj`NSYpS`*v&w^&dfB-}?kBy^n z+Et16-+&;n)a%e=;Vmk?1^4imNh`vt8x6uJ3mRt9PZluY{6jKoVLN*p4$Vgt$x#U&cC@os~oW zHNDLoEa7hOf!;_KBT5i2 z!T`v4!^LQrx_d~5qHMX3G090M^XzXCXj)Xvod#N>f8iobjfcsN*G#|2GU8Gj?;=?< zWK_*UgUKsF5CJ-S{+&KN54O7mU73gZf1L2Z+)L5IpFq5%qxnT6azcN*q7n16Gt_@m z3xW`c`+!nmam@E}{6XcLBV+?FoLfBL}|45CX({R8nFooO@*ALQ93Tk3_ z0KkH$Fh$8R6TF9xK(%rRj-gFt@r%zIfa6)wma1}Le;*Af9Sw+}c!m9f<-G~}W*=yz zx@83~tobX}?xKYs6jAuYF*#@e+@tmIkOr89FkB;oAzmy-IEx?LDZgzvWIQC`ca|tE z?{C?gLemG;rzqnjp#;}$Vx0d#$KD|@$JvZ{z_MST!;ZF1#8N&5I}!j%4xHa`n|OkZt+H&Ja1oUWz2GC$>$4iHtRyZlkJ3Me-z}u1{n_ zDRMlhHF6HS7-S-i0PX$+Bxb4cY)xBkGA$%$JOm|Bid>Fp%#v@O2@Z+CVIB4Et)3}7 zJBB{iBl>%@d}7i5UaEGO{H^R&x@gHAk6j=b>IN*@3_|8Ezm}0N)G}d%7z;pZF65rk zR)%-}n^)(L@73@Hy%&Vciz9ZUdHy~>gNLpw0f}pTn5WA2+$z#zmSX6Y7CDP;@{K86 z_kvQe6aupwYBzmi176V%qNy8~(DuK1ZWK1X1!_n)1=2Eha^zf-)tHpTdQsIxj2q3v z+o9YHX%*{In``F~AHsm|umJ#K;DZr5QaI0qhf@hJHe0aUQ3cib>=|qK5E27FDZrkC zCTD<^%t%siSkLNT3|aRWL=`t$|Cu&KP>3q)?3BoxCi)=jNRDrFp5#(^UTnxZL>*i? zD{TLly-(V&0P?{3Pe#Y3RUZMSCqq~orC5UQo!63<;ZB+PP8dLMy%2zJyv8O?L|iGc zSYO3?R1&Ptn&h6r-z0uq%v44nsNJEnt3{Q^{sfj)e45x7n4{2c1EF{_-!db{#@(x{ z-v4A=``*OsTq@(E-Jgzg{vsb_n|Cu?Z`22l@4GTGTNlZNFJnv(9`88Oc(sorIUy(cB&J~DKf}v;nwM~*@!47)xvOD z9*rP!A3=Q}hpVG|odD@jQH&Gg_cI7>ClFpFq^b-htxv3ekS@To)>&JsWT-08O6X6) z7fQQt8PQigh>lTh}TNB&1Cbn(c?qFg}Y}=UFp4gt)$;6)cd(Ty7o&y?H_Bc4>qkE%o#HxOYgbbWvyz*f3_1XUWAZWpHie`z4-WvAA(@0mL{zm z3KR)U4GyYYs6dbj?HmlvPR9gW&jVM~7gSxI{F8l|7A=c12x1m2@O;ol{X7%&yS9lr zarbcN#hidImOtPdu@AQv;xy$}k>XWMJPRjO7e%kNhV#T}@K8GpwhGr0ZKQ4tPO2AD za__gr6gg_Q(fA%eWS7>Bl$YhPbS`k(a_V+IIuP%N~Y=w)|4Wxw{ zJVX(cWN84m=>(b(b}KYy`hN?vV^$t&#|&@zWZ4g;WaDCO+h3;yb>`*}U&{`Yq%J2ADBW#Ac7Z*42UQ1zYMLw+C1-v)VHYIYRt`~yTf zCt-EHEnIkz%&m8!w1P?ITz}(5xE*XF&3EaH^|FmWsKuzZ@4CQhtyF=n&UhQe*^AiO zOVQ*i;mH8W|HlJpE=DXaF-8<%6rt$k++2Jh4vmrEn zBuNag1IQ>2=Z_ozP`Ipd-g!6vm219hNpcb<(c~m2a*gi|-+B zvqLBEf`#SsUDB;W(>wo1PtyOYZiavswh9IKJ4LwvZR2>JcgXmQEcFMu0eOBaxM{{` ziFk}wEs^^w99^>HBrH}Jv_VvUwx0Owko4m5rM*-Kl(gY}rI10x87IL+?IpHQC1mU8 zs+v%m`&SbmyLh4evU`0Xhp3og${Qgf3m5idE^01pE*Q1n>S-mi7RqZG>Zk!kF&yYk zJ95tJAu<&U>>0~*9ASR*M%y<4-UVayd){7I9w83+cka*?e+q4fH*6nM<$??5JPMx7 z__DnC5oHqJ9+MwS^|ge9-4_LQzv1(<&ln*ScCBMUpclQWWgaf_O80||FA65PL2W3dr@_eS6&=_ShN0%PTZI`?Bac;~RU{qyW% z#ldCpEGd_DztY2kJnndOywtbV8VOvZEh(Rr#B0*s^~7+!@w|5v-P%-VeAS;qSHGp6 z-;&QF<26H`jO-py)l8KE1!vS^o3A(Tnlr?dso5 zykhV9M8HH^1`JOtu|G zJp-PhxfDKaLeO5*uz`<>M!ta8#w5dyrU_t4<-N5P=?dH|jL#D7ewxvE3o^&LH7L#7m?ya-2{zmF@b+jO z@uuf_4f-yuZQe37_w{pgvMhz*0>{g0f?blWlxx9uq9agj$x$VBD<(##42kC4fPc8~ zPsmMGUU`nztdBf}bd!UtkJw$A7ZE04ojxQP0g(1i0^tc zsT=ZVw45UXyldhq>>n-P&Zo^fuPrUtC@b$Zv=TY(=d)p97ZeG&9V!JhHSh;ocw=)W zdija?h8U;@1opJegAq3q20Aerxc$68yLr!KpG2>aY}eoYHJ7@k7m{h|_@DeYEVj1j zOfq`ae?!q*ZlR=C8!CCfS0P3- z*=}yd>L1{`nBEq*Zszpc!rOcW&(}XcU`RYSj$>j_kd@DgQ<9R6M5!;N>&Sh{_3SMH-`OHiQiOV~iag3FI@~;2 z7g5O!oe}&4yx16v`>r3m>_-!)MG@@VYatZ}VUc=!(N9}$t?%Ap-4b{C^BV#E4X1;@ zb#=F^Yik>GHrWp9Z=2F;QtacDA1qR9fdUzW8#20zh2e#1$_*YKMU|t2#Pxjdc(R$} zN(r^-sm?Aj&YWlCxIO2TseRq6(6=GIMjl+YeZG^GH zXk#o~Br&?%XjcS)oOnH9ZPE21?YrtX-o7g4@+Yy*aKj7lxs%oM=nor0F%O#$02z2` zLJd8V<;3CdL&q9KyAC%;f$2v9qcftY4(33CW7UG5>k~y70!419Cu)j^pp*)c8x1BH z4ckPp-q>abtIole6|e<_sALDR%|Yrrb9NL!`|RuK z1q!yIq!kiF88I`CV78%YnsQ6#gQb*@XdTQ2I;TfSx1q|n!6rG=ISjf@_R(*|t+j!> zvLJgJgI@N#@JEE#gV8m>{oIA+k1VT)vb`Z#7U9bNVM87EI9mkOVQM7M3)P(Hsc@DA54iFqSZL*Vd*c?L3mkrYS+uc0>wENIT(S zQ6!Ae(7?c0!lY1Ds2cf_%mywedD)&})lhzhi#7zIxydlAH7te5z%-9H2UoNrl0`shT|mYk&XXW}@pL9ol!$PC(?XsJQq=ZSA8Ymjoduqu3B+EF~y{ z@r)WQtABx}o>tizTU&f^8lRGQN+i9Y7OTJzSv3XGM|H{~uYl*L!mM+`DUqCMCV{qV zD_>bBy@VFrzdrF6Re4RAX(uHLurrp7(GsT>S<{3u(bDSbic3rjHPRwXUwnMg8@w?Lo?6vZEf@C6NzeO8-dPtxTA@w?I95aa6@u-G0m$V)mLpcZTc&g)-dU zmL*}DASn$til7}Bc3DCl*ia3zxgokPV*$?7F?`JO*n9iS&7S zM+jnHH3Cf=b}04Z`Ob zbC*{B>PV;|TTQ@FE|NM*%sKmeAca;jx6_!1;o6u-@$$|CK=3+9aAZ9kAGmDQ3!TLN z3*jEd>QDYnQaz4HW!RnDteA&qN(j{WzinANyyD14R?o}J)kq&EM2rXLm_y3bZpYPz zH`BX8fgM#o^%+$Q1U@@!K&1N2st`LZj)d@P+UQfsCbH2SNY0dAVy}`A?^K4Xa0!^G zp!b0qTNq*kN6ekDEHpKd+dbuK@u$*|(;YRMf%UmguN7c0P%YVri5j=ABqFW-d@Dmc z2o}cN98vHnlp2FdYup^XhvrT;F_;+wLFEJ{83jv&+b7e(u)Cc4@M7lhvNC-0x?PZv z<yI#@MLbyX#G9o=r#-_+|v_oWG?27TtaFDzyu_8=BT zA_}n}oXI34%9jZO+6%-Q1UnGQE2m>0+KgK-I_dN}B+xG0(K^=Utq9bVfN!NjJ5>OQ zd21I?1d(%NcLdou`N!}+hV)6usj>IZ@Ei~9>j;QZM+?#eLFUB~Kp zk9lV$Z_S$#9SFHmDx1*n1{TY_r0iAjz=pV%ZCqWyanQ?ymBZCqieJWupIr5Csnb1W zXGi7z){`+wR{~l*&Ld1|7Zgzf{R3l|NtboNWUb4l+s6U?&#$2{5&g$P=8f#r$Hn%R z_qqj?fqs%_PiM)|V5w)oW=W5BgLK}t$>*gh@wn}y2HbJ$li)_?Q_?&>afkB_QwLY> zCdcC0!U)sKO!N3vg0H@*Ef;jBqQCoVf96kUY(H{N3k82`2dfvw&vp{GfBGdKvJU#d zwBR;AKH~=F=ZENf2{>_=*GGHFRzKd{Xh5O{R!){*$6NIH%0$oV?GeKa*4F*av|_Cl zqA3%c{Z;K|*D!k9liT{5YexHs5bo>0+h@LF_@Tw|{#jc-z{Bd*dOM+K#FENKGY5vi z?`(I_|42!H&&6sx=yDWsIHdec-1ZcRT4{C2md)8Hl`cJo@jSYH+8WQg`H*q(Tq`54 z)xF;UPsEwxYdd>d=nT-}V>b12dRnx`H}Jb)UXx!DdN^4wct<|(eWCU(tp4b)$`i`q z?`iwg3`g+0Tvh};4-TJkk-J%IFK0SmF3+su7x)&&w|d?pUPFFA;R*HnJgNgLb8*0i z-_zU3+c8p#1^?&9QP+^ZVX2Vomms6}-$_Z;e#aJ1^L{IUOgD8G$H;fw@yq_RRC_;Q zqsX8AXqFAxZ{XN>ldplorh4o7(=Nw8&UO0qFsz`TubstVGZ8B-Lfbx)qYo2`@0I>N z#LmF)6Nbg>`kg{C+o2i8O%1R?{bSxN-)K!H8SCcw=+?1OT|VpLW}}iMU!T2wG6vDr z?EXPk0(;ca`@y(|^iIkyT*cy|VI^74u4dv}Z~P=N+gvc6)fx8`KD{?p+3 z{E%x}&gLJTz)E%Z%Tl{8HZgD1@%Dm?9c$+vv>ib`Sx2XmyfPzJ2@Zvt zZ`;=I$p0;dXzwqd0Q+Km$EVc5@&fV6(v<$fhN@`!6ixD3Sky3bh7dY^!NKEn@=4Zg z>`atNqNoSWBuoVuTAm&vN;JWN9;lc@&^y6_U=kW>;nY#fp^%XJny5l+Y-1!3Uzkoo zu5C|?>Fn3eW4WWaHoy-wOj&kr*bekh2-{Q-v{`10d5l>ia(0hCxr{tNfcENa5Xc2c2ixp8VOaK4OrO*1_gY z_KqtgUQHH4LP{Pa{)uj2Y-0 z!5&6IPKkxSNQK@qEq!EWDa_JwJTP>nWdgJin>xC4`SN{m#sX~vMPOP~^~yDp410F7 zM0E!ov6zWF34NoM+48Qv>N3S5#MURa^sB3AMw%xJ`1o4kqo?@)|s%6jHuvL!2K3t$0a=-h%3W2$oUoRoaY z#*TA5OoB=~hCX(s9*aDb9mDo8KGmcdik&@pMdofPSr8Rjn!!ntM*AmcGpVHQJr)C_ z7>0>@QGJPQ=2+$W^`L;)$$d81t;GE7G1Rk=aO5xE7pE`p&M zSt5hfzcs8=u?0b>8^f#<>R9!UaP$!-Q%=W&-K%!CWXb4J6pV0FTk6ZD$b4+6 zgX3IQzlWew(u%9|@}m3^75ktlmC+$Oh5r^QT%hjQV1=kApG-JH(X8hn_R#G-Fu?0D zs|2J%MT?t(LrX7$RwkZfx_$$<#w5%UQz}QBLy>oEU;hegY(N??`suOZe+bpQ0VkGl zUJ@q7IQIly`|_#sjI~qMJE^%X_9DnV7jDuZ1FzW(GG)GxoBH@<|0)C+pCu~G$Em6HRb zldBNCEmA`D5}n+ss=v^r4brl!>%+Pl-h(K-OiW-%20&_av}z8o%8%uh}D{ z`>BG+>C%Zv1TX~<#mjaYg?(te;H3b^;Vo=(-G+&O1jCH4=Vd1v@gGsS(1~?J7T`1| zdyPtS7y8S1AgoFmbY~&S?Y{)I<__J%ss9<149nEsc9iJ5&}hDGEUBk7e!)C6`qOCk zIVDDtz1T21-vC+a4jpa9W%VL&)VFd2$h!w^{9Lac(Llz0Muo1#PRj!yn$u}pRZfh*BLeavBs-V=z!7h2CprgPwAu$HSTle$YBZxy&FA)zks)i6@dSCzcN*Q zQ`d8ITib%cF#T@obqZWk-Oa6q!!AhnPDr88A`q-u{?N`S+EZRd6$o!?zTOrgt8c6xo)+iXK)p*>St5hyhI7|1JqyV=?K zGqKJ5v!?xBeK$5-SMWTe<8HbmE1b)6Z%;i13v~}E9Tuohh|5WE-v{tarv%A7^E^*mZt*SC`KSYX{Oz+;2JB}3m zyXG0!)p6{1wV<*aFkQ2oSnx$NqFZ8mkEDsr0JxG3m`Mg3CPK_($I3e`%@9xb;`d_v0e1 zUX^&bE~c2Bv-j3+`LLmMs6jgGQf|!Q&zzR?&FZ*}{)aALy+N44VfB!y?dkExZhynN zUgj%6m8-3C4y1=TJWi48Mt(CT^7eE2Q*>p=-P}{__tsOgGO@zBt_}R|pRFISnlUgS z>R~nC+Z%fCM7AINiN)Hk*<$OErf2&v{C#IxcO;Lf$8vZ&628;|K`-}%&49dmGcXpZ zqw`TDRAnVphH1>*L8FJo+?Q9Xwy=!a^jEGHZ4}ss7!d8}vf`~ygwWsG`xXdIeg677 zb1bJ@{S|9l@H#rvL&U8Q74M$CvNQz!O%&s(Kccg&@WhFWXqxc4Ur=`EZxP7azbf=_ z_&mXGKec?K-xk}tnhOxejDk2;L+s#pQFl?d=gM?`Eg>xQgM0j1KZR#;k=iYwvYlk$ z`Yn6?FaWrYb|)>UeIjJZiEvQvdhSEjBsK))j`kCr?TD0vS8$U6;~uV)RgO%c5X}I zT!VK{bbD%nCCtvNeO?vzHF&JV0Rk+?mHt+qn`URh?%p#N>$*Rm85!Mbus!xy!#mc` zTFz=~^O7saHrD#H`S=3pp5h!nv+SYq>!xeYS{0!g0G?4=4!WL#%<3? ztQj(EtQEQ9`I0i?%2dWq7>#fm0#{bmEd3;xh?PP_~qyxS*T@8C8<%Xhm^S zH3hy@?tKy{tN1jDWzx??*HP~SJr|1hAC!7hjAWm}jIX_8zw1B2{<~8s@z6L7{^IRq z!~ee%2ni7u5m-FJZJklDJHAYOnoeUvix6X!htr#ujzb$y1E)CsKA@se+;aAJBb>?E z#nRBuFn@uvhZA$IAQXwcU4Fg1#0ottlk6g-mat%RoXkGnp0-JKr9pnP$!xw{^81{c z`^=f^z}!1aWKyng-jjF0%(3mOzfVtnV-88zNQ=YOC2-Z^;g0&FER-Z-+C@xy2$9D! zW&&4$N2V&%#+gTqSW`91IF%BS!hvQBY_uuxX;_uU8+B*yy8sO##a&o|6&6<6QjCd; zSd@CAviyXZWD1qsW_@|GO}$pxa3h>RVO3_`4qJt-wR<@$K0sD5+KITNlFe@xQzADE zH^hd^1MpOne}CwrC`-=PuEfb`<2;BI-)Oo`&1CVfOkFCNL!Az+epM5oQ+jc zPh+zwY$Ca%ytSb`9AdV9BX&b@jNF;}Tj3{}&`=5{lMwwVdH~$aJxWpH2I&1zkD1k) z!DO8{5yMcjFQz_WFlv3h(VKR@RG*@lX)-@Z0TSK#O=;O3GIi~A8WIN$$|Op2xf0=^ zaYu2@^~RDZ_bS?0)b`Z$6Q*sYWtTX3G9txvmB>pv3;2vKBA90@=m~TZ3JI4Vr4sVv z$s6PqX&^)>cDzNzcRj(%VMo7{;d=+uq0;AFR zh6FZG5CTFpO6?mrcDv<4n=g2#y3g?{ShPfEmkFBq*jCz zaUHY1xeV7Bjt_L3Bp1|q(*!hFU<76X35Y(YV}BthoA`nvB7A0Q@d zP%^~8{wR2RRcIF4VO^kDjQVrpgP0SNQNh*xS|bTLBC(0wK_+z>xA2~2`hMU>a|=C+ zn-zEg7o43GoGgDXtT{>tiAq+tcR*0#lwy`J6(-C`l8ET`9Fj~N?5T=@2+JSFrLee=ls_!t;$J>=p7|K7BlY&q-IMAMFL+cKc zaMlOiuBgeHGkjG3(f}yNGB`9|TfzaK=(35RBFv zAtG+Uby%lPc6`V@(($q>7$Hd|fKxbmVolt$t#cTMiuTYHIN1v0V+Z|T7|50=v$Qof zr4Sf~inH4l)lCdR4M$jA!X0m7H1b@=Y!_$nzosANtM4wpcy@e!9ujH21x9@SRW)}z z80(xvZxanQMv6i9RI8jG&zdSu^Z&@N2ciA7ZF=r-u(Il6o*`kxPz;-5fbeU04?|99 zI$Wq0C>VAKL~*bbkQ6X)y#?K9Vfbg< zqn-|-!Bf4T*`vwR`D)(t$Hy_3Q0L)DXX$*WB3zv>qu?)#j{#j^z0#1#=x5hUzfi6a z-&@st+9$199*^HAPP6mXb+js9jO~M=V6WW+18X~4wR)Hym7{K;DAmg zTODQ@RQ6pWmFL3n{#j5=2!gfcvM@51kYN90Z9N;i88ZRI43dCj?^5?y+v=`k*`B!- z`yg${QHG@yN9f3>P3ie@>81H_LN`JaMc$K7qT$GuszCgtLQDT<#5$*Pxp{W7sBGfT zUZp)3cT%6LUO2c`jXISjxyYWVd^~>{Gd>N10-07p{f|0=#b|D@bp0;hW=u}7IeFyI z`t6=uYm*W%NA0}wdDk$+h!|_noDeHad?k%gQSbM(1ClL#oI7^RXh#jGir;5{hL#B+ z#}U?IjE^&B3%*M}>*rkyNqv~P^5_b(7Y>Kmy zu$hMnyh)BBgS{g~w_ba*`2BX2l|Bv^dA)SoqstwgHokTay&vf99u5MYT&)S~Lk~_* zF5Sc%0(xAnDeE4cHQzqq|NFk~Mu=i+t-ydqfCKt^# zZqxJ-w%4Mg>)EFH%l+w5(mqma5i8o`PjYzd;1Q`KOCBPLKWCp*ROA56KrwMR3XD4x zdJll_y!cLyQPOcb7W07|gMU5>AgK-RdyFk20U$Eo*FhfTJ*Lmo`i^p=erwa#&}*Bz z9G>+4%(}B@+b355Y2yd{hiA?VhdFD8?n}qVK0=P*x&Pm!DLN)T%2-zV`r0jxce8fW zv(uetj;)KifJ~o>>!p@$JVwXfGGR?OD?rKX_@e!_L=$nuaD!{s^?55U$`m<3yXWi! z-8$zv&#~OYu{xL2>8FQj?P2rPE+{WJ`KIdkzH21k>=INGpBD314+(o9tQh7 zZHTS=eAk;^pdT~_KLl38Db7bW+n||-m9zW&y?8!&3?emmUaxh!km^RB_7T0yVPDV&CT%&^p*Lk61(#*+V znL*FfQpsTJ0JX~%=UuR%*)o=HoN@6y2g#5~B}&|=SKegikx_6ZXV876`wl7e!9C-4 zPuL*Oarf)v?=;`3LY^k}Nph!mzz?rbUgOYEB6rhe zz_4Ox>$^JB;%Q1V&xXT~(Z4fv<-W?~-Ff;Ydp@Dk1A^0?ug3W}88T2zv#_-78|k8I zApL)s>E*Q2>#YhRWUv}Fej)H}+sHLs>q|BY4q6S+s0JmNr+^{`RmfTEX$-i3{NoQpvGd$dS4q`QSC+}bw$gYD+M9UBBzM>0;w@7 z14LFN9mq1#Hj-tng;Imm_f)MgN>p(6=ip8m@GMx8NvS~4s^Lc}qc{JpWfsk>578f*u1p42gkFxSn;n;1Ft315lpO!5t+#6JdyU&LRI@yZo0SC!I$S zCB8NiT=A5ZgAi;wED-lbo|cdC0&hVWr|-{!v1{J5+W$Z~}G~?ZABm@*Qq9vTg;_;m6k82!^jYVH`sS z5jtDKclWGVRg1cUC!LVSyzq}l!FMKMwK0=%;bFaw8OUK&cs|CAY9t&%vuWLMkMn0G zT!gGTL1-Ac{_INqN%K>5q`1A$G}vC{8i4q*QmCRE4)VQkTb9zXi>@A z7@ zx_9Xpre1xuQa(uhojOj&;l^5#vx;|}uMSh*(w*v^DcV@V@ z6NKb5d!LHEj|*a2n2?Cx_6E%5FLG8SmjR(I8iekrmiRv=6;oqt_8b2Wo9VFgo=>Ld zFVE30B=>*c&!y2!w0l=E-V@dkbUp29tRGUWFB6)BnQPv4T4HT>@1s7xh3aer1V5)Q zt(f?i>w7GkJ;&zBM#3(B{sYSQ|4eNkpLei3*-6S=+CSsB`t@F&^&i_Xb@92{C*GJn z$-Z+r^nEPd|Eb&7y8c_){z}}-o7!A5>(%nN0(nT5P;3IP_3>)e`<1Qt(_zwSrvcl6 zr(OEf>9Dq;j&Q|(OuyZX4;QEM+2i-f2&2J;zSv@~N6X9bH%Q$cSs%c3p-A&FC*Wjk zqTSqZx>IL`_d|vf0A@zp`JmrX^)czP%Y^t`BYf^Aqnfg^G~AmRJKb&+Lr%qdD?i@i zf}g_kT8cmKY91ZiZhj3a3b?&qCU#C61XTL~Pd(5p=5hQVZ=+22cSR+6dhIX9N8kdc zzQllIoo9q#gYnI5nhuAh!o}tD^@2T>L*0E4CZ13*x7~iyL!6r@KMOQZWI&Srz z9V*}9+C8fotV+L@$};7dDZ7*zka1OSw-%SO?0z}S6{Z+T3Y@_wXys(eSmJMg$Vl1y z(=cdYMS*t|%@wGp=Rh2rez&_Q*=YS?1xU<6Wsq-D@@FISyS4bRzE^PGJ2J#b5Rmtg zBm)op!O70O#3A_JN`bP!zPD$LTpdQy&jzQg>xwD+Ms`cvVV=v^)FcXEC7h#Z~1g5u=1_d<2-*lphp?Ys@4BZU!gUal8tw+Fbwm8~EX@!ZPnxu>m(edS+E z6{GpC<9%GfNc0S%q z_I6xdKh`+v2fR<7R5ueZaE)?k*5(-2pONPQX#9jpYA5BF^}5pa_J!tLLKpu4*B8in{{qp#izpRAh#(wO&udA+Ql?ZGu@=kEHi*j= z9RkIrg~eow!(@qt7U7sQ#nN|j#g#$lFcM__+JW+0#?hmGTDjQ>6vBimYBXpFH2XFh z{G~QF9_&~vl-S6bYnUm!zG5DE1=e4rf7_Ix2_=&RN zhE)?YF;n&v+Q3U&WsRqX6vGnN648(;egpQ+&Dvh*v>aHnvuOO(5>X4%6kk5!P_;;v z6lTckrqW{aPBQuaBXX!2h;J;A8L!}DNOZA8^=+19Dk>ZpM$>^ZSfb6}_el}?h0}*- znT1VY9F!>7zg5~WVq~C1Ts5HzfCp!cdc&Clm|yP>kxKT5E{AO0Id|Z%J-qhUji1sD_!qg zi}fKB2Sog1i6Ab*D0w|6AXVv-Qf+mCh=GW^!=-d6)`L)dahp5pNcuKRKwPi(H^f81 zDy94ojlxa&hi>(O1Xsz=`2mq@<7|{ozgk_zKahq-KhRziF?gsoG$J^ArS4kcvU`%S z4EOwg80UF7^Yc_9*OrbJ_ly8XK0)6+UBIB@?o757WVU-nP{ssajI*K-AzXksl87$+ z&haCa7w1mq2wa{7s5?K#nweGqqM+~8=hN0O5*%%0Dh>%{_iP@FkquxT!TWAujqrRT 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

      `)wR` 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 LUKWZXaHaeYYPtPH delta 679856 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≀ul%X&b)T}}f_vC#QyI%~F-V#t}T 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%0AB=p`0`lgC?tORZ>!sZtJI_ePT+&1HMu>Pd( z*_qW@}V#smbkx&fnBw2j=n26W1K5MO2~!T#8m6`LUb$+{4i)7zEa@56=Scf20R$x{e)XT zp=tK@EC8*!q+QPp6Nj!8e~RnRVc8sSPneqJVMCHq-tYxrdkLAvs*E0t-pIa}!LoiM zn0h0<==%v(98>^IC=m6}ViZd;ozqy$jsD&ryb9zE49uU_Jq-{K*bJ+wHqPWt$RFb;(|Fz?oAbiSLs|2^IF)%48sI{Anh{ zRKk56YZqz9f7v2DfNk+HozCgF?xM<877achpvZJaB1m|RLG3@+xX@fyd5Et|A`(N} zM!aPB8wx~+NDIg4ZSY^j!+Aq;_2gDdg23V~4eSnSHf=PLd^bWgncOU$PdKCX-FBDq zQfNtf#^E<$R~O(TQSR%m3$OcjfWVTXSis}=Hdzy3e^{I{?qTgKu~VCYZ^c07eOExL zDQ5Y{*aA%+A`=!uNrk!iAy~!OPAm&TY8n`P}GH2W%IHtNoNPkYvx-OPk07(*)zBS{rUp zXnVH7rP8|#VH~|Hq;l5J&4yQuf-?V>-jQ3if7-4`?anr!gAaIcKZfe}uc_95##|*_ z)uQIALfLWX%6SYkJW_J-59{qCvb3xndtP%V`qnFB=nQy$_%VhO2Td>4-6+r&DgZyRN?Tmm0E`A z3mJk0ld{~`iX1o@{oL17Ln$pZD?Uy#f4pNq2yUJqzlEHAop&@qrIUaETtWs!(>mwT zv}NZJjWPwMEv)dK6-*#}syiWVCb@=UJs!hHv`ms6Y;;&8Pd=WqvHrevl2O5P2V2T& zCcCmvz-E_^lvy*EtPU(X6yP4*&8G-df?O5xG&Qnzpnpdv@RNX?qDGdMM%HEqc>D%> zhDKH|Kj>K-{+)ti)((zlj!v(QP!2x|lW2ZdlJx5=!2jA=e%q4n$CTU)f3|?r>tQp1bpK7f3UQ zR91g)2370>L1gLGA^fjye{Ek)0OglV1PGhfv<>^%cAtnBn@sU1ZHXqMDEe$UCHg`I zMe#)K7^G(9W44!QunafowPdu9_ZE;7UnC zfWsV0lp3Ov?KzDK8QJ5b4iWIfh9f1hr6^jZ4sO2x2Bb>x@wE;ee~!)%6zU~@xcHkb z|Klq3r~eTP;QJ9EzgPh4zjBs;V#@UN4D`P<g>Y@R*kSNGL(Vu+;*djYD!{;BxU3~OJ)ByB{YpBpk z-Z)3}_mKkSSt}{uf6ETGpf5iS8%JZTUlKBBx&-neB7+1%j@NdkfJx?ftMPqkNTC@? z3NV;8ju=y*nP5ILH$j_YfnkYf{}kTn$Z>x^5c#7F&A064mQZ%~I~ShOZ`=bbP&!brcli}F7Tp@Wu^CQEnNimcRR`YIsq zRECRc(F>w(e}(tD8ze}O(@6(N>!WLPjV4CtdjlS%uiu1)tPm%0$JBbAES$;7c~X<~ zo2luomzdX6upqo~mu+DPXr*1YpP9o(5!n_o#^b$A=qZl`bkB!#H@t#D3tA`(p1BL? z;Al4^qdtc*l`G!Lcj?WGhRtRTqbC&UfB-+RzIIKWfAf0?z)KcGuSFEDycbeJDath} zNdtrXX0eP*18RR57>u}0y`%#|yL}2gMZ&n}(>WrLjmiY|U!LFkJ#_4lP5S!>TAZ}( z$Jx-#(=Y6Z6ruhszHw@@Qj{o$R~2SD*PlaS(E`_=vFs0OsiqM=r@wjsO`s+gMQJ%3 z8Zm28f6og}Rn@`JzHeVBa=GZ7gtyl%yix(2(YHbwsdZOQb3PSPMj}mF0qCpDcNpDo zQUXf*?=kW5r!YB&UC!&H&rJJn)t~ODFWUyLgfK_h;3-%`-Eyn9AS^!w#y*E6kh=Ot znQRF=Dn>5Am~Dz*N;v|*7|l_3Dv^pZQ@YZDN!9I7(FHzHcXRu4hG>TC>4cy!W1_Lh==yoCpVN{;qvWa z0gAV@JX=bI%f^)p8#?n}!qu46@;=L0HsPWzIenfViW!Mx(}M*A#g!0-KSOSf_@K!t ze@^M^23KvCDJGjJbq%Ym)gEu&$sI&ej?ERxb%HQGbGe+S&Kc#C5FG2jY|tp9;z zcn&LCxj@H;<4yC3YY0>%9Bpo~Ob#X@Hwri(+?lZCT(Jju2jrC%=_*jvU{?+0;MaqG zd~h<&xFR`^c-i$#bt=$1{hc$inS3VzW&~BU|v5We|&yl zqb>P6DO)9LGj}6Ln?LSsszAg4_tI-5oL7K4S^cxV@82r9fsrtO{o;>OP9sA+X(LA$ z8+(hNtBV9^a4+n9-A{&vj*ankqVV+zCYIkl@&CeY{uSC=Ze4G7XMCUy(*rRR3{7|m zIB=W*Jx}g6O~MC;H7$xh?luVQf8a@^E~a`kBx^0C`bf+L@KKUZ?Kjdj@jze{h{c~! z@)30=_7xnb5}y=80wjJ=FHT=3AJ}9DJFt}!pY8afT%XO)mO61y?;W+Svr)+l7l|UK zI|mwpc3VsW|CwTHe8MCGQ@B-xZidEwqQ_uy&%o`SmxKXPNFWUpFS(?Ae;7qU`{qZo zkcM`RTkM5B($eP?pu~<|*_c!ys+OV#CN;>m07*c$zX0*)wWlwc2MZbNNrZ==EL>11 zmWE3?vGRhJg&nlf^-YCTwxj(7ngnJ~_0~Ibxs7wRF42yI2O>~~$dehIfas6ON%}2- zc5C#7yjhXe2~9($c~+%KD^B^Kn}4NHhoo}8;EaQ+uY8XkQ*lbZx(mcGasASk@Wiy- zvL~;+^JT}$V~+nL$g-B%Ry>Sg!-IbUd%TCGkGc$!eeawnx%<0D`8cU|h2PAid0{{R3|Nj60AphUB6~3(k0C_jFPjobW zlfvJ3BAp)3ha1L&G=@Rpb({Q|>$FW)MGlii&+@X7pGw2^BiWT?*ijlP4bq?M{u8wS z9p$yzitIpLS-g><&3Dr`Sbv`;IA9rA4zO5iH+?nkT!ePb=2pCntUWp-?vtJBX4`_N`c>IS%S;~UQ2^MB)_!R-w=*|oH2 zt}+Gj@K?ZoZnK_KC zz%1*Q^NMig1H9uvG_dl=z4AtpX~aYXf~_2}ILp1dIEhB;yhX+^$xrW|)wz1H4d-j< zw?A>Y7pg!l9qC~VoqvrwxESOG*+|N<&2H=TW!CyqY=01SQ`P3YSpxDi>0n>#a+Kg^ z!MP=m4K~#%e20#ITCnd6L$x2vQq5X5Sb<66oAbrD-6lf- zKFMh}K1{dys0VQ_baW<3Q#k>+=hy|5`FU*nm={U!cxjRP!|6y_dKDUkP*+U0J?eu< zZ59;OS@)`-DSx=R4(F+}!Tm5O)u-M~*qVk`qNvwJQ0Et{+rQvO{U_Sr@`P%E9V$&S z%+zhw>Hr>4FK^Fo|6>Lq_eX6061#k@3gs=zs5r{~ee7t5wswW**r>i4ne< zQN6u{!RqWqXo8Bn8V_dxmvE>t&%(fA61iBf^m9py|(>m4eC8pi-JbFplNYS1I!nwWg~k*sB@#WS903_XRD?)4mZHdY8u$iUvnuuqRFbH+8JevQ!1zHw@IIi5|T%S z*R9@5=CI{~+MZtWBOLOIMDW@N-EuzW*-$C~tUt3in1jI{U}JsHv5y||<3{icn{3LY zD1XP_H3&?1LqEB0f@Y5H3O$m6yBbDZ$m40sdccd)NKWw}f9qi2Ll!X}>wV-XG*iF^mv5De zv|xU)PM}FP_inYOUM>u;D2BQ1>#BKQ72vA0EPSgg%lxXG9yzK%~cT; z@3hv&SU~0`dZ$k4EFR95L*1+EHN3c9&5P@$|B9-dEAiwVPd@|+f4L#V_}X1immOl!$LH=4{7Cgb+=ZmmAsXt-2b zSl162UT+NY3&WDzjW-ZJ4EX9uUw_-IwFQ(q7&g@jM4Ek{cEBDNO#G zpkSO2TVEAsQv1Vz4O|b_(Z#KsXe}5GRbxxd+M+N|{6zbHx~m+W3?0-D?|=MN(D0vx z4a{);EC$+}xreu$#>k^`@>?HMxc@}c`%k==Px3yfD%m&ME4`xTl3kinVuO*jlKt2Q!pyZ zKdnrBV~Z>doHRYzrdXY&>M3uts7#_iJ--w}Z-aG8&^e`##XKTuhJUPx5uLPpfTJ_$ z(l->zEohdOqB>5*xrWJ?;Kf|(+b3<;7>x9q6McNii6UM+*y*SDzCjZop8ZFURsLh! z8XXe|-=e;&el5u9QC2OP>W%eaVo57|FEwm;+s=}RhRb7a)k7eV;WP*Jv zQNuwWU6eWq3xD+9F$qu1;S^*Nvob5U4%2oj*sMW)mhDo1nK;a~?PlMrUUMK`MyG(f z0ncL0V&w|v(y#8a%9sY8?0cfRM*>O|AUd_BwKuyesG&cgzkioh%nCzqP#)`7l+j{p z({e~(BM#e+)KV!c#X$;ci4T}xe0FVxU@WwmPrW(o(|@+#*oGhy$1Xx96X=>7=t?_- zCP}yWmtw1i5`UQNGs2;c>|Lwv-S7^5gO5z^c*>I&oeoWN7RsYu3=M(PH^Y^Cl-PyC zbjNlJ4!hN^Md?4GY(7w1sHi~W%3#9n=j}LtzflXK+hDsC33ZF4YGbDhFAv|)!4Gj_ zk848j`hT1N67lz@-rslaZaq;yl8r;vG}h*Hw}BRegvZ{~{wp!XpZ@)y%v2HgHd-76 z4XygICvcy>E3gP~0A5X}lxf8CZg#C2ORT_5yO?vMxe~3Nyhjb*opR?rQa~Etq&0UN z0w5&Y#bH%p4hiUVmSJKkHR&4V2MzAIKAy*@pMQn&mVJ&bMwJLZJd)R~$^-o-eQ;@k z{&;YOu}(~pvfRhda^3F;62KnMJ`2T}M|uZ7uZeT>Mpqtzj12hsM8Oy!Uz`cW`28b9 zURj0-h7CWI1t?N#RG=M5HEl$QF(bLNVhX|y>0K4?$MsPd%nLe<(l!Du%&9hF5UGtA z41e$BOs;pagVTIsmOepqZ#cRbyTf1*a21Ads!(f9UDVg7hx)%WfmVqGa=75MevTK=66@P5cMdu6pk>HzJ=^{D}L1#omc+k3Wvjd?H zzM+AS=v5XM8h2d3C_gq|qxRF2GJAIan05xbp)mX+>c=_|pOUcT7|*?&c`zsz(mhc( z-O#Q%B+VOpzBTcov19;904Rj`MP(u2V8~39@fo+u!U#Sqm`-=Ty9*sdk(eQchJPlt zQJKeaWCg(awS$FS=aX^5Ce9+aFEc>oBO$p7aN^8+(gN*HBVc2@R0ke3uPbqnFD$x! zdHDRKG7P|{FgJ35mw&S3A8-HA(c;_o$1(&Iy0<^$7Z@RH$JePEDm*c31Df9=6euKI z1tTN8*IFE-pT}vejT~t$jZE|`sec`f?5!MLla-&pNk?Wt{yKBdfcJ+};Zfrm+t}mj z{iLkBks+RwgAtyMwWS+9BOU$EFo@#UU;O9NhtzmNfvsW21LKWW{2rT@;|EGQ#y}WEml`2vB3t#Ho@eJkJ(*eGHDc7O8$B4=Cb@o2m)e%vaP6|+x(7z$Qo9eLNaQt4VLFd8$#R!aIn*M zL`Yt!i}0$I-U-mvea+hNlYjK{Q_*e#5S>Qy+y_?B8V~Tt1JW?@xZ91pf=CkZ{r54Z zRu1zvBqjJj^~rT4{2Ii%W#gh4$DprWqylt)Z+Kqf5|UqWiMT>I*?(BVYyI!G3_AAz zvSs{g<_AV1|1VmG$dBm)I`$t+d#nu1%uGLuKwnPuGGu-o{_lT*e}9$jGzQe#FJ(Ym zY$kuD11xa<#!w&6k1?>QC#`Bf_VnG)t<6CX6f&Q5{)^6(kTjP4tTe;9eJI?uKl-@2 zj}L$lPDS5dN*kgIDORp2Eo4xOxdp7Y(FK;v%=Cu{Tm0%T40~ZYGlA?tmGzS%quT>w z-JAuh_llk>t*86eoqujs98gM|vPmcmNSd^+${n3?U(VIHNmDY3=6VmuQ;GeyhC923 zdcqUkK`kf{GK(OsMLBJjrV-EuuA{)(t`v0AcrHxzSZsTG%+=!hn1zt z?bUhJC{!{M>{yN2a$($Urkd3HUqq|k(72$~84exqw{kwT*u;($;hIB|va9KlZ6 ze%>Nu8(u{F4YeCeF=HAtA&HTzuv9+>!1=S9nKdZ3S9im^h@^7FX}u*#bYYQ;gKL8h zJ`leA$-2v$6n~bsqG0FXH%f0P(}KJ)Sh>8Y^D*Y9L$n85O1LfOt;%OEoZ&_|gV_ku zEn`!0R3Q)6l=e1rj|c331GTS^VrOt|<3UJ+%1ckdzc@{WqH|s9 zSPl|=YBoq2?CHcB=!r#+r;@(+PZ)*fGJgwFbjWk)jD41aFF{rWoPPkR z49WI(^iL6+TbA|+6}1Ty`u>{Un7^bq#xEF={xvxP2`JzL001aNI41o5<>T}}$kIvu z(cutZ$o<3NAjAxftbZ(h&{NQn{qzI;zdeU1>!fdKX7F0@=lDxP=kMJTOmy`0EH56- z_;d2%_kY9x+n4*x9TN%S9`Z!X_eCrq?@67v&v`>R-NmWsDZ(Qvin{163SFE7NNP)b z1z^ArlvJDCZ<>uf&$Fz;3Prx^JL4c6gTI}qdWUlPZTt?0R(om4fxoO7phBFIuc~B& zQ=*ePeLFk#5Q78f6#UEhHW4#eW?J=tywwueV1HDN#;N~>OdoZAf9X&>ULHM}imLi{ z1ZK+T3>fHhNJe%7cF07U3k8>kcS4T=Lo9f{YSbwZ(Ai8PrsgBd@F{XH<*FQNWul}kcV)cVdk{}* z{272YK$9G8k58KC*92$LFtJO;@8pb!J)MCM%nK>l&=Z|uEJF2eo4+4BKiX2RkaOKY z;%Eq9g(=f2VPa*|)bye3-V}4iM4HtCc7N0ariZ{mvBfFwe_PJrCT>`xm2A#)$Vx{AR*%f>>sEsWszz<|Bg=3zE^o zpOMwFMHINKg(N0?p7cx5I(Y%N@-p1 zz$Pl9`-uiAh8G(q&#ONL1NNxqCsz_G64sexhq&cK`c29St~|6Jz-?}LUyjq zT|=ji4w z7gF1AUQgF=&emm}vB8S+4Mbm315xCtp!$oda-Z0RH=-#7z1^wRjkL)9?1$qXRX+4Q z?1EbfLDpqcb(yh)PD97lYUG7WMMVr+thq!x#puWdymSRh@6S=2-+$8clJ<&Q!x!A@zTj5$A936N zuIA5hEB@E~`?XRHjD+)d{t4PxSsB^?nELrM*0Rz6Ce``7;s4cZ{iU9!Ecz;MGWRs2 z@R^OAo?lgwOq5B8R)4^P!U{Cm!rbX|S-hZq@@=<-4*{fAcuXG)T1UNQkM$h=i!s4M_Z*ZUsmybA3jnrTPFfyGcxJK2rneB6OQ5 zdRt#crlULz))BRE!amsC9Z+nzTG*`@wQ?~D2TbkG3IBu9O0@Fm{pWn$^zQUq`HHZX zpxY=)LP$bq&VOshjRAlQvs;Orb?IiWSoQ$0>vy(ZPhjdhl_e8s!{^L9Vq)Nf$^+c@ zaA=-koE=D=Qc(jku&iHkvtiBG^l65eLFL@2`ia>t?<5LBG}9)xVAuo29pBHW1$FXD zLu<-ka$n2)oqfwKc@$&9AiLlX=0G~$Uwux-)@dBt$A39*kkxIcpK{naY0WxfgmP@f z!|OJ&JOu}KSMu=|mQE-=$Do~g+wKA9YLnO;n{u0m813rr6NEfx z@0h0K=vvvhVQu@SQ6{U=w9Dg}{?vh+JC33fiXS%XNh;XL!i}+d?%x9K(L40^sZ-Ff z<2;X6fqy*`#r{YZ=RX52Oj$I;_fHb<-#Me};gFJzXe*u&H*bMQ-;&RjnSyV`0jQqP z(0D1xhu3O?eG6_(4wH?W^YdBLg8+yvg?YO>+HuYr=USnY_9e%mJ_;n3Z6t!HqW->p ztn&Pjni_NXusG#Qv92E`HD^}m|pPC}qp z-hUS04WZ=|SHs)_p5{zm0`xmZW>bhp8Z9ApZxW+=9<&B&pyDaY#fmEcLmg@jG9Kwa z3iZ)yEURYuu=5+&TK#CCGG|B>NaqUsxhRkp6-W~%{4 z4s%E|-mLy__EF&mfrKqqTnQQR>td3{Ie!flm}xA&u18(_!kZ*&@0@TJoI>PA-~-b2 zbceKV6A7dulXkbfziTv=jSPzWT4+OE$Za@Me)S?PSV$I=zRCAlB8I~<&<`D8G_l}< z_wOxTEgV6Kj5q~jwaYyJ{J?+J5q1c`ss*tl?Q?QhsmTVKk14*f%tp<%{24bIV}C|G z?Rdi0a`^aCaX+|ASof@AK|L{JK#x6(&Nx!{hU5WR&dnQ zbHp<=vd5D)diidtXZ=FE-x^qeq4ECo_}}-@`njg|ny9kT)6=svyzZvK!0>BG$H1ok z-+1M}0`FFzSI8}q1ji(!KQoot;eRqj-j-Y;F{N8QIQRO;#()pKAMyrw2WS-X28eJT zm5lAQsCslw-_$L1%9F4K=go5Red-+H9Z8D)qWD%dL1{+zDX=upz*{rud*m)@j0tKC z5HQv9tg++Kipg__UW9=RT&fi+9m&b(NnH4>+a7NeGhbklBOKER`)sKyl7HStOC77( z@`*~M$fD8y^}950Hq-H{PwoX1^etYYs-%Kn8W}%M6(k{RrtD6^IW0W!CnfR}6E8)@ z&{TLp>zo-BvEHUSnMsn75PvVuoFm!_DQ&GeXtQ47TSiARs}D>O9!#~jx|Rr#sT$`C zTiF85!QVlwhI9AC5z%iSrkk@Cd^E<3a5*$ zLw(93kY*e2;G%1`jiPcI9`6a4 ze&W}((Y$HTuYn&oCBzyxu?E4ewMST-f<0(e2pRYx)UQQB}=Wu73*o)?y< zUY{b47v@G)QTL0;%N#_5_EHC}$+Hc0(2=goK;fU|dQ+v8h<{~bli>jsoX(I&`#$mW zPqqc;dka03)aTbQLi=^!gMByOAr8<19qb5XM_5uFap9!ul!Vhx**g8qqlYO=)Y*P{ zhJK1bUYm~wlsac1X&Ww*3oNMFpe39IWAm&Q*}9Tx-=#sh7OpY611)SBQw5nTsVIPk zjEL5<_|WKR{eRq1n`Jm(q@z@pscG(~@o>d_ali*NY@uC3}Wjrq7gOH6wWX+Z^sD2A>m_t;!M)A2OYl zgK3P%G-?O(D&{~MH%Mt?n@A{fVk=V1TkX93FKb z?A7Gbq4R-L3e%Dqc#C2ae;9|_~NtepA;g4tY9>57Wn8*-|35pAX=J+6PoSCi`E0w4R8Yup+ zMo-+k!n`$MhO0m#GCualub{>fur|^ zQ-4Ds#9_({S$o=A(op_s8qVZd5G45K`apDclQmJA-#9m1AwCp3#c=j(K8l{eI1&_s zZ(8?=jrKt|7wDOtU2|?w4Bb**7)P_ds#EQ}n8?Pg9p_E9KP;OYTvR>zTAu zUL6VX87BGTYF+Rjlh9xPli)~@(ncagi)=%{|aDa1dH{eQ?^U*FDuGC%(_hNENno8rVT3t?km{Hay^|In@e z69QqBD5@9TniB50&k)%t^s3KGeD0m8o!E7-D_cpMh1Ppq$_fFl2YGv_GJ34VyNUm0 z^m;nfZ9UiDi#l;!ulp={nfRl@XK%XPYTL~K00960001EW-@a_dw2L+xO@D<-oiCmY z-l0reZf^e|+{m#35jZ`D-kIR+DCWGp&fIHYkn-1N`5*Q1SWL1}z?ZiZ0r;_{TQ>{< z$2f}x5Dc@@6B!t ztiRr7F`g6zwIRgvXh`NTchTYZv5w`lsmfUoRx$)ikwy02W)Adfoqta)p6R&;0=3TP zMVyo$Z#Hel4^i-^b6Xk%7#gb7@Jy_iybOwng!KD9mlyb9QO z=wDKR{Z0K%bNW5Z*fpRhf3gv@Lyvss(9Kvfs5j=KAb)aZ29T0U!rL=>F4CYlvLjp$ zK-L`R2L;*ofYe?K>Bew;nVd)^{f`%B$n(v?TiwM_k0*s+C6p*Y@vM|w$=rkpW z5R{&YQmnNpD376}GQF<>+2Y>D3xYx1>lPhjeMSt=O3^MzGFP(-;|0I(pAafXLpF>? zgmWOH>3`WIl73J;<_|3d}WfX6jTF!`u(t4*DM-?>%_!>)hifaX)XY~0WDDuTp|$TA2cpEXG>HY#K;z>WcErqzOm3Sn_%m?i6|sDN5elkCEpeb_Rq5fS#K&GGv@W$@0n zJK~v|v9UDDqsBJ4j0b&;k8J*-Ke|aPnczx(SG5N>m|pNW7<;Zal1tDWy8vy~lN;qs z|8_9C@bMM%%P*Lpf5CkFFU(68-wrMr*nh0!UQ5qw00*Z32h4x?eYdaxJtiIcPj(`T z*c<6N8rkDX=~)|?8acfD__u9Ok-!x6ERAjK4e2rH(0=k0K~P3Y=AF!IpeSi(W#(vP zNdGGP^MjoPzmEMi<6k4vf5Q0xNAB~l0RM4cF=i4{xv~U?Xr*WDorz;IC2OuHp?@ua zU9-Yk_ZT_*R1w-$S8 zUp{2{xjUEJMb8~R!rY}<-mO*mUB30YZSDR9Xt1Ub@X zldeIUT8nSOeSLUYmAFQ$qTr2r(naU~!mI%Y`@_DXf+o`T6sejml9*(nngkxzpOY4j z*X8`XAcUo@c#`kpQ5WAcs_=6~$Q?n|YL-(OV63V1^EQ9g>P{^eO5V&>Cx5DLEK=qk zvnhTSQ*Avhe7>wN{mOdZSbqt{al0=lfD4RX)!U<`JJ zyC@-Bw1w-syat9qvK_(qP?_`lRL-VGUDX=``FNjLv;9a(qqC2|)V7X5-@;6g$<5?} zn&#GI&6R}PvU17vyluz3a({}c@QX!8$7Kx8LC;m-iyRPF`DefQ~%D;V~)l!rXhFKt64>&-OoMltocCawp%+ zJ3y!kTYpNsoFkozUw>rvx5t`tSkDnj24>Tm5px3|$Lc#w#lr$4GE;G_Vt?QW$f`+u zAJIk=t4~_TzKDue*1`p0`W%qTH8TqZyrq)y_Ilz#roSbKu&!22(Cvd}<3S8mcJIDv zp(IKrMl$5S0#!^?HUydzv{9kQ5MdogC)tNC%;#}R{gXToh<}esCgE=ZM@&J@4e*_S zeS$-+eS1Hg7v)j!UFH+Pi}(+YTt>L5R)VJPVNfij1J1>H9s!FFo-XYd0rFfaClBC6 zig7pXKs2n&h{bTD`0))7tM%@393j$}aaqP!J{Dtpcn7xPz%mHm-y=mic}s>#2pc>B zF!9-TbTwqJe1EdteDj6B`K!;zZ-!~^8w9{bY1THdMlzN`LE0DAS+`F4seJniRix?S z4ec)Y5zj&AtIgpjsB3j%P!s3YbWj+u(#}T+4_9B6t32EKtRQ2<^T*q3v0FK$<8tP# zEulI?-{0X~bZ_sBz!VOBjH!J8;jrednK7*2-pFV_^?xThZ~P8sg%6zpDuIVYf_`UaV)kQWCoyY- zzljGT!M|3E8NM9)A376VwwSb?(@)jwayLl0&dmM&M6~h9+&|z-E_DY zn0ag{2g<#PR@k4b+|CCPCbxBFLAd1M%^eux zCg9(})2#VjfCcP2a$4DKQbS`NRJt1g?=bJt4=u)OFGoiCEY^NZ z;){0ca_y_F?5;6KV*`edn4f0NqXF>@zVhRN|7iPJ$&a65Zt0B!h4n|k_xO_2&1IOt zPJddi#tR(u?@}1~+Q8@3#qv6Li?U2s@<^MrW!P&FR8g;qG=-xKuRF|wos*oo)wBeh zgF+I`+(l2Phw&?GPsukwuOj8YE#~!Q+l<>RZr?!9WXBR ztVz5981}@9?~1y{uc|_*Yw|vy3Ad%<*MBXpG(dY7kKwHE_1&l9e&6sD<3tG9MoZnU zU>;iiCl|mCxHxEh>?%ca;t=&K90S zcp?i#S7$%Jx}d!9+KM^ty?W?u4qNhtYuKgKBp%f2o8$0Q5np?l_O}ctbZRtZ>vreL z+vbTjF|t+(5vJ}bRV;7aLC=XAAP{8dz$@!R+ye;p1ju)CM{@A^=O)q&7k|EyWQV<- zlSHqQ<+tPJm9ixagce`+og8L}3xENKNW_w9KeoVgq?=r4XM+ELj|>RDuf(uwC$>O_ zDl4_yDmCF$GCp|EUoV(nJkAv8_zA&OBlynKN1gZ!oC*~hg&f=@~BehALZP<;Jg6S-#huN z2qc#oLe)3?Zg6Tp5Dc?=xLho#{5&S&Quo3IoTQ3Rk`6_|NHc52<*{g!mrZaP1WbrW?_6}&M1iOnMmari5#_gbR zS^on4Z|MxnMzIKA1}mW=m&}WA%sewe0PIHUpAEw6(`6S6r^K?4dKSmTJTZXldjle+ z!-8HFCKrWtjeh|(Un{OBZ>hUglVd!OpN)BXxJNwICCA_D5h%x(?E<8t%ti`>N?fR$ ztv|lj|6jk44FCUErN8zZZ)6=}T68t*t1^iy6?b?P{zM4&OaSSf<=E0!hE_ zg=^+D$GMgK*Nr`bF9JMS>`Bz-&EZg0nVZkVmOkS5Rl|u;aVOC=YBbhP609X@D+r@4 zn53MZ1EzTB*TenNH$vv;<9V1-^0ZICS<70B@FS^UNw-CoL3GBUV9;TcW;mQxMkHlf zp?_5J+dKqO^~xX;D9xOs3T>?lUhD_PF~q_@C zh)@*>^3F{so3bihg6n2|>N&()QsKUKG( z-_#N&OYH`CC9_scuzZLl)BN!7@NW1&Rey-Th1vQ22!1;|2ivCxubAL}8}a|4%lI!a zkG0cOB4~ItRL}e7HoQ`$NRS2`?d$~R5z#)QR!?5r$OC_C5nIR^X0TfUIxSoiWUfec z8AR>vO)7KKy5mYzOG()!07&J?B_ym`bJ8?9)Rf~8!`m_df= zOG2X_y8U?lw}wJ7alkdtluv%5e1H5?mGbymonmn~rrC}6jfq=3%9Af7{z&=%$gTWq z(*K7pvmJ~lk6i_p)6ygJ9?GBD5krKUOLh}U1IG*15!oIm|7_T2}{C`N@0O)GJ zMHZ?gcJR^>P=&l(d9-;Y8_L)o@{2a03Y=F+^G?<*DP_aXfr~!Y+feq_N~YyGCK;_u zADyeu(yS?!E{Y%HbkFI#VjCxds2bB+ZPk=*IC&?}$Dki5PI8XtlFC6RB6aG{ zVzMfmgM;w_Lmm0FdW>c0Ab(DRYCGQ0Tm^!(&h@-tO&XbjYuM#-5krU6H`fmqryOn{ zLN|@$=)?ad+7EY#HzX;Y)i3C@7I`!)*CwzO{BdaiciQ*oDTQtH@>`mc7dRlDa0Ref zji+_LW5YF#&yF#rWiwB42b&DetE6WQ=_4F0HXjPbNuF*M9cM6V4}WPpr{g$j+n9_F z7?a%qU9fYq5@%O9S|;nMbuWMQddxv@L;Mv;kF3P1>3Y05yr2=HU}P!y!L@TqKK3pv zQ<_4b?uTsoa&c?)fX^Jgl_=IMvm?hB&`eY6lJ}6Q*`MZsZ8grN+Lz!fao{@jTS_lb zZ-WoB`Qar8dsX;GEq_5j48cYOCncGmaskTOR;-$GS||y~i|rp#h~6zH$SdLb)+!Q! z9+$PrC@-@Pc6fdOBX68=s@GemsXFX^;=zk@#YL)Q{X#X@DuH~G8HimOxb^-xx<}rop%HytBQy(7mS_EmP3=py&9AvYqROv zrWuXrJvs|&zyuFOZnxhwe1$!AeO1|JP1(VxN5d&Tx2m{2uK|9vIPyw zR~Ig`b$@ny0ZM3CR=0+eS4ovkzib5dwatFlX8Dm@bugX`In+N+I1<6^A1u8 z(Xa~lav#6~5!8R^%VQXNZF?0@khzX$luX>$D}S0&V0K8b8wW4z}j6they?|{Zn5r8lP^z?X-2tc-<+^W&q{s@QI23 zXe~hqnr^a3Kw?ebXUE&YPXP469Nlhvlr6K99JGDV2b55Q&58E$UB6qgF+?e6qk|9k z7vc1H)~Kb6%f={@-e|f_b#u{9Hdx*|jenw^e1@s#KoPo^Q*Y9fUv|SFl4F(U47*;V)l1{8keC(s84xHJYS*SmWL0vF>F{y|; z*NBH$bI%@h_xx86c#Iblq6womF{cRZJWOwK+-J{-${I~C7;ExHmBtX@$#xGv!q61> zGY{RX_GXL?@u*QUHE{b4R~k;LMt?^uI}o-zrGIl-(@C2s1;e~>JJ5=aR1hbkycT`M zBNb4h?l}OFq^dLf#xO2iaO|t62f3$vnb#$xcX^{+V93&>6#{$ZT=zXg8`e+OE6HfHu;K>M5cZ!GDrK$}%YS_O=`sDBc~D}3;+ zeEopfW<7aK*N9O2LpizJmL)d&B#palg@RM_I}V+71CSKAfRyQ%5v7m#Xr5DXc*q0W zsD5DWD=gLM86g{e3yDm_vy2!N!gmFIr{gtKQc$*H-_8Oziss$3+|8;uNQ*4w1xv15 zEN>U{?V_V}^FdJw&UONGf`3X&Gs7P9VMygkchG^S2I`r;VRJZ7*VgXTG>5%xEUv|h zc{o4S&v*gf<{hY4cWLQR(Px&k?hRLI{$WzJa{ z^2&e}y~Vls(kfnmGZkhd-h*HIz@J?0t9j<9e3GXkFicq*R;<+8d4H=8yhKcx^#&-S zWArV`5y}SgE3ZZ4?YOETJR(b~YyQczepJZt5GCYp)64n*6FLR0it!JG?TOof4P&LA z6w4BVcYT|bIMxoi;l$7GC`C+Sn4f^YD)kMaU zF}=qp;14}-`8lH|Uuab6yp1~T9R}6=7J77RNwo+e#YKq_j2`kvQWRm=Pj{coHs5LU zby-l3z#C_evVZt+Hh-CT3FI{}8Zc9F;H!!Jlg4DqR-uhdQBT?t?X_>y2KWfRNOUu&83{M_^Z^Xo@ zYisufT|)#yQ4GlC4RQtaiT{0NJ)^_hSRCYS9W5(d&woCA;sHP13_KsfZ`!4LN+ikh ziAQofSsn=-+jRIy^9o+n{^`Zchzms8Z@aV-6wVkxpa3~Ia43*q3A2l zcSlB@5zeN*%bsC>2HJOTv}sGJu_QKFA(@#_C~D&;4P*aTKuiDkpk-xXWn%gpXn%SFEUQ;m^_fhC?k$pMGlph@z;!M+R@cbxUq_1OTAJF+7+Lx>g$DQ`^D=H-gywjc<5*idRum!7&p@VlOLW zYVL?9My3E=K%&1o$;DRFxl&%_glbX|uHLbKP?&#r_ZWEzrO>1a4mOe{9vSNB1DAC@ z-h=9-9>oIbox%fgBd?|3l@IigwK-t89KIw$RMR1O2EM-hR=WKuL`#?0OcTHYIkd9<9@o*De2ywL)#nY zJYbg{AuUC6tF;N%VvC(mP9vt4y00960001EW-wPa$R?ur~q`IBx zg>>_aw<}=~iJ+x}6eoEi=L-K4Xmb*#&$Y4<*NTNQxG)U3j)ARH2mcJTm^bPUcRYVC zJ=#t^{VOBd9mt)0nv)D4>fg>xp`i&U66bA4sbeNdZj`>x@u6o48rr+<1dA691?~w4 z9#Ln6h!-}p$CWv1|JYCir#qD+o@}D5o||n>Poy!CGqpjdZhA z=PYG65$0%Di7ki^?+1=-4x$A5r5E}g4yX+}6g284tLQ~WKE!gD2MV+FDXx2UX%YuP z=p)}W*+Rqskw;$+ur8cl(ql>)E1J_;8Gc*fJ|sNUy0{4K*D+KavoW~%mY;v)&B(%N zbDH~3Te{SjaG6Ogd{?z3?aWb)YFb%ifH;K}?QxCsP!wZFwd2j@ zsd*Z3)J=NSRjTcX$b1L>CNqJ;nc~=ru5UibIw{+-KLd@HU6j1$>&{_riM4N7ez;TF zvV;7${HPtx(|u|=`bHpL&ES6=oFb`*KxC4aL2|8y#GaUt6);DkWLX9iy5a{K8Ozn> z#-P>sOBR}@CZ@$&9EWbEO+B3c(&=aoHE1#&aV~FW`poyt8_p^9wQ8tOX}FKn3|EWP z`96y#d0V98Lr`%c*MuUZWRslchflk#N_;ek*N^l2EIx!oOA^Sav(tf~?aM zZnS@Z_Js!HfF8AWHNzj_%JnJo_aN_Z-(y~aLBoPQZ~ujmf7HrE6o7PJV!MVlDr2y{*|u1jk&;=ugt-StLcYIS*%3afna~&)FSRRI1PG~Mil*Z zYq6KP??ICqto>`ZMfbyH@8*^Vtsvo-U~JR80O*i$ycF>FT@Eq|)Aq?VB(xDA(Ibvs zDR@fusqY9YPieluWPF~A$HYHXBytIZ`~eYnfa@=eD9D4Tq|S%ZIUY;cvo34m#4=wX z{71(88bR<+k9dFfQ^X|zLjpYKZGrh7w6uZ-6bu;nA1r%+V!9)9Vp@1F8bHOLM$H2e zrPCQ!0;5=u-{3j{$-a5R<66ZneUw4moN#WYadLdmm%ow~n*|+EazZfb4BY(gE7mLt zJrfvk{wK8L4)VoW8H7Ph{l_E(_-Hc+^fkh}S+X9Hy8M5UH?}q&pVp+}L^%7(EwXCb z4}-625ZG$h4Hij9@)r)0HIlNrUM$~l&reOO3Bh*OeXd14sX=;#N2|TOTU*#i_(#c7~xLE5wa^*rg{bJnWj-!lCG z|3jECpTDc@Km9+UVTlxJ6r7)w#KP`52$rF(wXLb0A%TLSt)r>Fp&fyUg`Oxq{`Wf$ z1_O)!x1E0r3}N_u3_U4;_=nozDAFhznj0z@>i>WCF7rn-#a!3U?negt=X|e#=j?$1 z`tPB>7@x)8{aycWxX8c4zz6MlZ0%jU=&gB;i|lQYt#cD49dKNb-0Bq7bG(pprqVmO z&vT+!$EJ~e1b2iVAhC`rG)fG6w2wgCT-|7}r$04#ea7@b_q#Ewc+ss$?7cbEAjW$o zW66IiO2LNE)v{w^eb1gCHQtjLE&HKUu$tJNU1U#QZyGsPtByYYHTbP#0bb7K=es?Z zF7qNAnf-xxO*-X0%NKJ4Egp<{mhXK}nQjP+_akgGd2^Qm>L&qGZ{ySj1Pc+-aJGO| zx)Q%^Lr_G2An2-7Ad?fQf-IM;s`?&f`NYn^WO@G@dfo4LEnipi}-RAya` zeP%Z8U3x|U52zMas9^R~&%e}`XjLU(0dmgFBr*$|I@2AmrylST|1({t2hG-n!MESF zW$Cu~CY63eRJi7?JTlanv0ogG#a8~o4NdC&V@`P9MZ}e0QNb=@TqzHb9(vFz$ftih zUE*!V6o88vi=JyK7_r|Q!}Wz%Av>fBta=LCP4mEdl-c>@HrpIT9_?1Ran=OlkW4H4 zk7!<7pJrTU)g9cxT_{C7_zLM!oQC)~Yve>+XpuHVke1VoMnk6*jc$CE_T4^H24nA8 zRS&O&`}NWByz|$y?9*<4r*HqJO%#6>MSbUl?$Xw50Ni84Oa>& z88>Eik$_uoZ?Qond`@dBb{b$|eiV!L1J{>ZMlZ+Bp;9avaPkP0EX&W&S-WHaJ`fTB zA27z>o~3V1cv9t31{D55rK^6?7RA5iyn=<`w=~nW)%}^R3L2JGh(^(&GsAyYmq6&X z2*GPpbJMO2Qwst`L$l|EC~r;84Q)*c91RIXOv|Z`6^ke{%A3BBmd0yd`p=1?b-NW5ByVH$cEBT1*RJ{o| z`U>er%d#zt!@D3r($#+&AmUu@jPq6P0_D*Bns;3lKkoQ7PeW-TgTGjU@Ph<>q}o8K zy$JqZblnOC7*XaVg66uj%)YsQKyzXK@a9d&T6Nhnm)!9HiW{(}AH1gA`*al8kFeNIul!ldR zh-}o=VNORDGj$F2i)Kuq^$S+vcr(i$p7)Dba75T;=ED6f1;*mO(O_h=Tmsm`QstEg5({tnqgU9JNLbv*D~~ahV)2M= zVr7eG@8MQ;N!L$iTrnO+7lkL%%d{m{q?TD=T&xStk*_8@1lUvXhTcom=z!k%}mO^NpnGx z4ZQ%j9%O&#b!^U?FeU>I$X6KG;dB%5R0?T|d)ZFGE{QKN9(`e}8q%PA$6J#&Z=LF> z7A7Ej909PET6q-v+FfKkXHf!zw9bJ}TJYw@fRzG&swkU?3FFvIPvoRM;baGRl*{9A zd{8ACr6zIls7@BL%<=`s5W`kqYp+1*J#EC7^7Vg<#2aLMg4wnLSpTl53r?DNvP$X} z$>M{`@sPfScPI#WP-zyCKp7zO?Kk)?E>NA~+d)(b8Ns3VtlHWf!)&Sn66H29HM3{d zG8qgg8x;jATl4b*1Aa_r6rKAP7gQ(hW{&f>9*zE7;|iapT5Q&Y#_oxY;ZPiIM+}XL z(#n4-pvIscahX~lh!a@H*>AX?8qYNgoH@l-8n_=lcB_4ujvzEho(*AK03UF+r#2$N z&rH&BE$EqFX@$SIvisQHgbv03T5-Ui9xkju$Bsh7!aOyWOm!8kEDfLV`&%mu^r@Bg zx3#|;qa43SAp4%Bk?q-gg86$Njo}yZUq65GUuI5hIUqkJ%sDqDQ}RgbQbLc`xIZCm zRq%458IKOrr$0R;Iqk?Bw{=6bxL~c@+IDl^53BVFEff7%0<>u8a7ZPk-5z*JVED?r zP=qI#I1Ydw<+-Z@DY}DI)+%IN$%+j@^|1V{#NGE+>(gdrf^myPM7RN@3Y(HC6AOPg zis*^V`h*c)?#RnJEf&Vf8i;00;Cm-OSs=#(B(~@%qnp2$1BXf3kJ1_KJ`3mBpRi4Eq zE|JVe=8*M7lhBr}R@>w8o4h0Bqq~1Z%px+!MG6T-0-Om?bSIi4E3dC&jSAq6nkGGy zy$!&cHp3;z+ zDYylPF?_Z>z>+g_PaHL8MGgk@mK}bLhU&@uKBA$k%cy5Y zbqy6Or*&wGdc&)_!zwxC1O-a9$x~#+MH!GrZUamOn*3 ziU0>gyuH${ih5fOk`EHpS}lL#K{YpZWAct!>IY(3VXNJ!z5)*cXqd6R;+mv0_BLg5*|>7R$ay!-a!zcbCZ! zTTZCa2WkASNmPDYk9UOanx~uiDs>J;S=u0Ek25`ArI%%{zv2kDxyXO;Q4=wrVpWcs z8B9GGF;=Xl#_fe)mw&2PeA^=jV7OcjBwi?eYk(EJhpYG7Y;;uDBrutz)Y< z6b(6@*V>z8cGQWrT`Y;j)@4P%ZYkEw>*z%WN=CWLa&<+Zuz_LCgpsCif@gNvAr(-M z0-)0rh7%E(!v3HN-=KdH4k21cebpNqX8H5DT;6$aW>^w&hC#8U}R>CXAVFjyj@tyda zRvY-&p>FpSnWLip^PS$3joEgwWW5Kl(_}#(+ek(lo7E2--1mQ8L?Y2r?SG0zTxOO4m|p$S-=}9%*jo-h`coQ z=tV~oS>A4{+qr+b)Y|Fo(Yal$P&6CS(z^Xw)u73!R`lw*y%JSj#a^6G{q6m04Fr;r z9I?T9nS-qpR}Q%j@fOO@02O)yDE|{cDSrSI1h(a$Wzteq`6aZXBEOglzch^i|IZt|Na(Yi~+#H!1^??F*1MtZttRJ{?T9lUnuggC|d!( z(0dTpX&FLz5+Rjp1C1|lePrR2n$R^PDJ>*6!1uZqnaLdMvwbeTwm(S1p#USa!gy*} zL|wh}!mFvbXAwr7$FG1PVUrz8kXj7hM0dS}?6Z6rUkMFTqPS>LaB5(Sq5y{0QPnO!h_*_rkL?y9O{0saqGs-{wlVIR?9V=rF)6=72FE<9;sy% z0Qs4+0!o@}aU;7h`YrzFXrUmDt;BkpJT$C6HwS;DL2G*%niSkoF7069-%_A774S>k>by=iygzI?St7%Fs zqO#+%hezgpb|9Is;`izaKTvw)v$aG}iW3?+<5zdoLK!blPeKZxQ_XJ^vFZ$Xe?-Vc z*z13d^K4a$26q|ZMr*TLhI$X|JHv!M$d`9opJF_f7|mJW_b!esSMA01EBhKCFs_w) z)QH`cqHuHL7)IQ-y79x9-WI4s8_Q1& zApAcX%lWe@s?Fr>coL60wN*O@qVI>^UY2PsSMXI*gt-@HhJriTX6^$c|2`_VIU!J+ z`D-kX3{!Q2*DKlM^PO%965$oQCB4UareI0XG5N*hv@fN+Tm2@j@k&J=?#0s>SI>VM zI)z>kLeHC;+S$UjFg?5vE$zT#p2_w-*<$O-^T#h9VLIfcc!2$)5+L2D^c81vHqRZx z#cFB=am8Dj(6I938isS65X7+d;G%G_zKLLX?1h1KCU+VIcn7<6y`C$<{pP~ni>&%| zZm1raTk7jrNB(8`)isszG|(oe^oM_RO0BQ$ayt0S^DtF34s`;eu{&4J-F}*0sygrQ z-X%tI#mXJ=MM16@=#vac+kj`yynh+Q@P){ps4Opk7THu%CkN#C)#0Rm42)I_ougUK zN3y0!&{^m+Ndw_#cD=3m115bWiov)qr6(tgUT;MABjg!0ev$A+F5M3Gn@<0H;ES2@wh@~|htYcQ@GHZ)#+A8`lCFG&HI+|2cu@{h+PrbP zui80>wyI5ZM}^6X2<1&_4rqUS4xEPbIch-}WgN$LG!%g~2i{%u!M2VdM_|wpo4nsC zekiJX1u+UX^h8p~8GsMu#1l;$e=~1rb=2hxc;>GDu?712C(l4(q4)&^l;!!w)aZZb z87!o%gxK@yUrqYY;@^lUr10Ad1Lmg>J0mM2>+b;lP5if%@mIu5DJp+%)fG=Dr%NzO zw$~n=i@zUP-!wYG#}{GzESR&Byo_I~xP<0r%8X>y*b5u+787qaat^%-QItjFRKGe( zO@oAWCTDs8%BJB9u&rN(`+}6$(A|Vp-}U@Qc%N}0|3Yk&LhjuQLG$LU&jX+>VLT{6 zek*R4kmM z-fh*^aLzVKhErq}

      }YktQ9ZDmy9zC8{?gKmbrE#(AzD4?`QJjq%Y~5|yXDYzN00 zw`x1fxOS}ud3`Hegi8~PKwRA2ju7)WnvHg;0A+*oD1_p-O{RZ!y&8lAeTV+B&<>*h zRNoIIvs>+O$9~1SEXS90f4V0jFt(sOB!n?RhZT`0fya^(Z8{5KEQlI8!|FqB_v-`x z?2R~q31EMVh(^wHVwRo<&ebeZNYUcHVEe}xkzTEB@rLKehY}{uX+a(I)qG!eN3Pf! zQ#Z#vC%4|DxZQtDp2Md&L~nkQr^WIZyBt!(y88ribt_*ekp#AM{jDZcHb+`7_%x8@ z#`kr5;LQ{bC6$_ui^1C&avgoRg<-MFaQvuX28?Svf%H3#T@XCucT8Jhzz z(rIWlm)NZa2@F1j%8w0~%QB0r)g_!r);fOT0+vYxZIpjD&~1i4i0K0|@Khsu0PYYk zUO_z7Z%ANZFdKjsK=P*y014nTvA4J8prd>CAJ^5_cceA6qcbu!H`Fz-Ftw!Px79Z> zb+odh)BkCOGI$bfbxmEK_ob)Rx3vf0|9&>$0F>X(W~Fau{quCcG=9eeYc^I`$zzqS zl=r>2SO$N?@OYd5x&7f!kMIGu`|<9^2l(xiVDvQUL4ZB2cs7{7c{Zm1yd)5iCkYkL z2N)5EAIJg79>@yF7RVIH07&;~B6yk%pS}g2zHOhjnF1L-P5MvU^q=PEK$cJ2Xg&17ZSV0RjNgKYf^=mV|&PfoQ*PmjzOInj3yUkIB;+ z?18L-IDqJ$K2G01wBJk82XcH`G6b>%0Dk|EfYC|*q!O4L8k^dg>*||YS!(Okn%G+a zl%9Y8bbK&rfFwXXQ#4aJK=6N3ceD)*ZJ+9o`9D0}7aX;T=S{;6*=roEzh!UTA+I>oxf-6b<%CFDf}fk%8bN?X<%Ob15A@ zEHME^{rUC5PexlZf-dTFZ@pjfO?iF;CVxZSdn6j|#+wf`(n)ED#IhWK#glf76@oog zaTLLwO4SB8%Wbs51=l?FUSoZ|fEgPM=!#b@d|#khI~cd9y<#wFT?z<#zK>je2PJ<> zWAlfomtNvHi}Uz-yk z<5EqvG@V&{=UVHufY+v^g9*0i5|@AM<&lITdA(Q5&TbGJZ(kfMIHE_QPRGhWUQ=3Y z+aH1R+r+5LcFS8e@fobw}M_!Y&G$ z+L;;?=+fHJ{&bQ8ML~S(yZnDx|Gn!X&+uDsiItumz)sKn-8+EkSMh(P%)fg0XXkVR zK~4K>(paEgeeSSJXZ~!XakeoxqW=WW?EBtdY)} zqc8KbG3|%mjqQS=>eBFgl=L`B56CIrYQ@~+QpJiO> zWB2<~%LKm&cdPUeFE}v^yLHzXypHqs^8;FNt2yiuR!6Yj8nsP~f`KJR{822&U25>^ z=~SlK_(k2oXz)$J7mV%m4KEBQ%c@x54nDDcg563P|Ov4KBt+i4!aT1wNY`fQ~0u@daKZ#$qN*@&-j2kFRL2sHG{Sar7@0;zdv#0x~m zknf#_h-`1lHomv(reLAEfAadW+EmXs4nZS{O$J4`P4m=hcy5gBDkkJ+4)6k{E(#pBCmamWgtT#mlp=G^e$k^*+IhTsTf$d^c1$_06(^QLY|55rI zMMol)u4D}fa)`SH66)8~+WzgPbn*yEtlpw#m$n%ecng1jTg$@kY>TTKJAKb4OXn9j zX(1UeLlp978|RpnDv`R1K&zEG8~kF4v^?6ckmW=7sg0W+SR^m&N5-nfVmK!#;ghiA zzv|X=cE0-f&b)@$>hyl1O3ML1DXy^OYJRPY-t~4&xO%+FxJFO$6VzAzirDPrZ+r5z zp*qOLcb9)U$|r~#p`9;ZFZ!w*zz@_mP0O^qaao3=SlqfE07e(3%DbjM=1HpC^zG8O z?6N_KX1!eBA74ghfAjLu3*N_JyRHw?9RB2y?MtFfXPqZJ+9;`MGf~>BBk(I>k&>gf z(@DM$Gt+i}orqwq!BiD8*yfLUVCho* zRV@p$wdi%sxeignCTbRBinL=}g!_FiX^+U!Bfee9U`O7b6?8<3;b&R@+MG-UlyCc7!4eqsa!#eQGN&qRddhF$~Dx}77pBo5%tQq z4>gs-1lhNEoYp6?iSA)`@n>Bp{?>n`lw@~!U_3aPvj_w7zItxQp$c(PMJn0*y5O_l zq&mrOEK85R&B%Q<%loa90Zj7rj}ZK`xWE(dLnQT3sIX`U%WXs4S!R-P7LES_Mczw4 znwQ>F0Pk^tcVMQsU#7QrfTy{E?sFT{z|{78(k*9N1Dd~O*b|WE{_Q@JG5~*`@8r|$ z`@MXcGd?f#KYcMgO+w1g3r}~IT88_#3h}h!xk^wAa0?3Y{@zBlH?%c$wEFS3-Q3j9 z9w3}4nECqex=FuYz*7U3?l)Q6_Njbr{pZrP8MXCwwHdSx9krj!{NBv{6UP&#BUd%9 z-1k8zFOeJ|>8c;NZt&#D4g!C#D3@2iOm>q%?X{06Vb=iWhF?BF$mOHu(wtODv=UH| zijC#7I5F)StjJd)_1L)#v8R774YMIUQ!^`H;gVJ=uktfQ4Q_B6prUUX$*~x*5`E7g zY_($(mYMH|#R_=_Dg^Z^z`<=r+f)T;!E!d=mPkT&(jifKr4I8^KtO-C%tg@k)LCvu zfV*JAd*ZZDreVH2Az;*}WAnAeL&ds*G(6c39}`*ai{P0T`uc3-4tR|FmW4|hNiz0Q z-oaiHOUVh88gwn*{0(7``|dgr=|eNz6SO&KO@-TJTUH&5^`M0N8R%cA6>Fba!usrV z^28GC-&u10&r-wv*P4I*GldW=-hZvxe*_65Gc(&SAo(u-yNmlPicD0AkGP1OIHVBY zaL`T53I#KBbek?wMF*l3T(rEvY~ZS#u&#Jjd-HBHJ;p2!0@mF1LC(0xjS2op6gk3^W&#E(+#zz9b_ zG{d6Q0`-%bcbdVzSBrZ;FPr@3G4GWTeQqCH<_a!;JrwPE!LG4jep2dsakSvxoH{`lpHqiP0lLqDeN?Ryo(T5ZQxx(YEx_g9!;pUo9|D>DnY;nq z{}Mj_89O`^7682~xvB1iE?(BdsK};4sBt=iz$I0C0GWRj+0RC^9^rsmYx=!))1Gtd z1p>5yQMl8V5?}|vVUG-{);b-|)boDabuE+GoV0{3KAmwE!iUkCdW?Dd9M8#>ibRkS zD>E}{QWD!N!(&plt!;*#vz218oAW4B;svm|9gR14hLZ^`gLkyhgQQfOQk8B^J6Jlxnz;P)&7jHPR$~)&$~?MB z5<+yfqa%!BpaNNjLQ`mXuH+_VCsiq$ea{9dTonQ=X32uAXZE9qcpCcKqAbFd>l zcR|WpDanesQm`Rc6C>6a^0l+EU>m{#HvHnRPN}GsK&M4JR@vE(&NR4q1)E~Ib&I8k z;95=z$lt&VdV;+S%$tcvWr-RUbIo$NeQ9P_c|BYNMSZ3))qyHlACPwy`igx%hf#6v z#`b^ZS0Xf=plCBsqpgm&UKJ$gD*-}5_gJ0|f%y29*wA()>J5gg)QY`26Gj-kYlDi6 zcF`al`JS$h?AiG7AKA)kdt>c!(;I5GbkgXQ$5s!t)FqLvVa){zijih7u&%~a6rV&*D(!iBsi}PfS?>miKkbWG{jY!ZsX)Iva_aiLMgD-PZ~#j9zV%_a|Ic(; znfv7ZRP(%D)ti>GsM198ga_ct3VEPVbdDIgP{UTTWXIDF=4WhhF=yiYX z78m%VsDeHPY}7c53I&|i9`klM}X;L<}f#iTA=V=@~Bm9n!zf%xC=DSl5&WtI!T5@Nj=>=Z^Ck6HeyjdRK3iH40~t{SJ>(I<_NM5mo)! zilYhe0aty}Xa3)G`5!VCO8=VLN`@X6fc-;DP+vPZTR&G~egztKHb#0DMn(qK-{V}t zV*K3v^U3`8sk8tLEC4nJw(rdVreDQ>dwG9lwaJ@@jzgE-h&$6tbEJo0a7lmpg6LQe zlw2#%GDIR$k%4K@lzeqFicFTz9)&9>*9F>o_e6GmfI z1(FJIIn>GOL?MM4z1=z`e{Vx$&9l?p8M1Lo0dwJ)m=zkRRKyy&?nRl#qcsZ9 zLFFZ*i^R0jHF&s$X~ktV1&ao1r<|RX8O#?Z$OR1cnMDd$v&)Qg+ID{#3@XI)!T#NY zd$VHNFpW4xR z(&1(n%Hix;EjGfv9-NU0knnFveNW;X>26jeWPcT6AxVt!_@sLyr7GgSyqlW=;*nktkio^pU=3ip)+Q^w;I*w zNvU%Slx#>Cu6kk4n%-W=mQ+E0*3MWM><#(Q^44li3~`Wt#;dWhcQzZ|KxIGs@^cYA z+Bm`6!#g5iijjYSdM~`9L8LscGxTbaw7YRH!p?zF5o`XeeqXE?)D~x&PN^ZND3dHW zF{fJ)tc&^EQ7LSZ8fMtS0RpeJd4M4m6g3UqzlPXlB`d1oQwpGxfA&YH4RU?S`MwTU zr=T`3vBwXGLo)QoE}a*0Ow$xg_7)Yezx<>L3hNX%u!$5h0icH@EXr6 zEMO~OIuia)fm&x5UH4@+kAUkCyN=@9%d=oIU=v@_Y{uO_u;?lzCM2HyQ2{J`(AX&0 zM>%el3x0pgwSml*gFgKsi^0unmJcRrN6nfE)`D;!;h7iLU^N>v<=zi?pdTR7<-`c} zO4`gd^(D!x2-C@qG&7rCaH9=FGHe7-ZLr5 zm&-ns*X?TaN5|XbTDwA{X*hC)CdGmqqoHp%t~q}j7o}zl&g5FQKNPF&(H}!J*|nnR zL1*+dB>V>n%kXD}Wn=>|{zBOA;=jGTzas2RkJi_A$VsPL0m6%mOViC`2H=I90Q^l= zxKBF{zVgqJY0yL)aUuJ|$|@G))Al=bVgh_9>{68>9wiJ;VX0WfYPUvU-HyMAH`)OV z&!>Ord_Q_@>|CZ7>wKH|k``khvWXL4qVBaM**p>y}`Zef4qc2OWPZ{WYY8dF4b=UV$(gZ0{2Ps?dF zTj}uQoGHc>N4emUcvt$S3%T2t!_0>P(w!AE=mi9+Sn0ydAy?WnRp7UEaP^Sh9-(a5 zY}?Q(N!-VTyE&Jz=u4r8OcAM6I6!C^;U>Q0))|;DhLB9A`po2qI)x(_YtLs@?C^i~ z-m` zvX_X!FoP?>MXLrZ9}RW3vL8MR!KeQLY4f3jH62x+_hNnUOgDDy-q>tLzO2=xm`@;6 zg<0Xfq+&}=(sxJ$xj`wvq4wxD7QJ=(Z>`aSnc(T9x3 zmlida0F&k3X|f6jE!P@Ig2XIGhI%P;ng14H`@Ec1^QflzM^shmT;vdq5+A%*b1_{)XysEWF;kVD%Sl?Z zdzA@4p6pzyCxFH9t zbVjpJ8f+;gSSHiKIZ%I=%g@>0%;7C~)Ls0dCS}e*EO1;>czi6548^5s^SQ8&%~P+$6b$lyv6(Umiw z3ETSYVe~}UoZq~RRG^U(UUzQ%aR58O>=*EfDbm9OV1EoZ0+)X>HP^MICk7Dy0O3o1 zeS2MVQ#%3$T5DQtDBQqN_1Av`{^%wio&z+u!20iupevTCSmBRD@b_RwYVa>j~ zBmE-&XD{Y2(|31w=27NSpKM`vRmkR8$#G^ttMz>rWrO~VlZojWT^rcI$Ge1Ug8#yI ziUuzz^Ey&F(jtEeBqj=dO8bR*@XT6C6T#=oRbROfQz@W$H7mL{L602x&FG;w$BVZ; zctRpeFZpTcB=0FoS3^pP{y*~G0;;NQ?*pYfrMtWKrn|e55|C!oCEeZK zNH<6-9ZD!5E!_fA(kLm-1LGXex!&u&UyS#?@zgywbH#t0OV<4TJL)t*F(GQPiDGn% zJd$n&0E(8O&)yiC9lB$IR?_laQ1rjW$&@be72%bpeF$2FB13^g~)JW+Zrh@?r2o`Frb zs~UgNjp$o^QHRy9b+ZZ)QVlbT9nKliNP24+4U7bwNGNr3px3dH=#OCF2r!QFwpM zE3ncxevV4a9m2Edp3>VM5FO(?wBXc_oL+Z0lG`LEU-Njsq+dM^SY=GrS0sr~y0~F1 zm~p{xQmElp%D5nsHgKn2Il3+#N#C@OmGPKbZ$&_vXF7^*-&rm69_UGavN>1a)&1to zDFKQgq@s{qRk)$zM&4!kGKsZ=BgcP5$aX!>Hn*5MzlpJJlp*-K#Jsl!oT1v0^ZSZyzf#n*xy4${gZ$0kMs~I4iNnoy}>69vbF}$Av^61p2yz4&IvAUi%GiH8I$1b5-_t|KuUVbUe`a(3$S{S(;QCKyxhJdlo`!qd z;#WF;1-*c|2;&I?*JvDq5zxF4UZib~4-5pk9h&g+i zU0bBybgt+x2b>0S)QkbyBW_2?sK$jVfaP-rng_5m+pV}pPhV(pdAIE!k*bJl2YyOy zvA{Yo%F0RO3CL@7Vvc{D=tlHp`P_>zC*Y2do=8|k>);qKmR>Td5FFH8>J*D9-1C01 zLd3+n4le`3*oM+1R=kF4`<<>6k}>P!=+O0VB+)+{;2-jDCm9vTi(X?G%2H&*71FKG zU_epqi%0P9s=^47>11{dO)Ogu@+b25rk+8q5;!md{Qb?Y?6LjZ!$Ls8)v$k6KN+gt)cUOSG=&%ZXR=@! zCJQ+{a-%fUP508D_MP;naYsD_zZaU`XAsz#AX~(IW>f)nw9p0q4}|3CFEQOfJ^;@* zK(dOMfozQ}3`xZd?}RBsTSHP4(4T4G#uj#@w2Cs4q$*5b%SUr@GRe^W$Qwt*Ai4Js zfbJwPWoLgQYYSt?zuybw0I+?#l2HR>26867_e?o{cTL?%YhUX}-@B$LC@#Dckjz3cAAu(Vi#F#|H#J+k%*Z@EP7c1M3 zy4S$3L)P!!kpEx)R(?kWYsq_*R#HWi!=wU*PlGqKi=9l^bIx9$6g-)xmn)s?vw;I@%6D!e zK3abl^?ts06d`S*8-STO)3J72tL$*-a$2h^s_Z_JBxr>M);42>qDa3hI5rrNj|*bM zaLrEF#mAWGoEPX#_1L%HEBWX(|74gc$!N)D>V&&Zs3;f#uj$zgytAl%*Y>9YlwS5{ z56GV)HDM$*$nAa}iQAz0P6Ss0{vW=PIdp$0YyhVJ1CX)4p|P>>PjBcy@z3OTMv9kl z6-l(G`e~0IxaDVT=|%&5zlD~&0bBr1-^&7>xPe20BLF}E#-C!Qf4fBh96v>&)8W(n zn;Yv_rFLp5zu`?mTC-yjcslHSzZr#5gM-ErcXYj35YT#P?|0~+*SoTNIF=%ihPuhbw#vfRIXdt}jkO{43Z-#*gYDjDy%NgG zd>z{4VFc{H5v$ao> zR7siP^A_A~yN^*cdO#}c%3)#cqLY6N0_*23+03>5$BqdQh;8zwJES+w1NCXX9~&?( z`sEa6_f;if_}(g3CTjcpSkuc{LQ6y)k`)5uLajlWSw#lPybpa(M$6%BkM?!W!vuVq z>}(;|M1N83>#u^@y;iOJ6XB3m{^9sUz#vqW5K~h4?iKyvBNbC(W|UVGXa0Yox*}o_ ztAdQ3?`0ZNF*_R@XWO4uS22-qb%b~T9ISUA0Dz6>YuLz7!~gB&e@7ukuy`I;Kdf!( z)(Ys-eOSdS2J(~ZIZSyq&zU+^Y!dZM@AE1G;g_XU0lBJE-CeSJk@BHtAD5iAb3sn_ zT)x+*Ky(SGL;+2|?(^`p{`G%y%Zd6qkvO#1Q&XbhZ`zN!A0*4GL4V;~lL++01Wmn1 zQW#zIK`Q6#!fNByDAu-fv3OYO(cHUZnXdbAgbBfl0~;PKXvDIg7Y2+=YRyMeNhos1 ztSPLlyG>QSCcewN`9&}uj2rX3A^t`1iEMn{2KHo3KF?B8lRXKoP~?A=u%2-se;_@6 zn$_^4mL=bn9riTIwJh3>VgNR81r3twLFFXn3oA(F*G&A_3*ziF_|BKVY6poBTIm6?QX<*n$#_aHbfcJK!i@{6T0};!a5J+*7Ori3NTnQ93ferQD_;& zk_ImSBHgGmHa&k@uM%&X9k8lsu6z9X-r?^KgAm5Q3bweHXY_xa7>x9b#9*X95`+JY z$NZWY{O#~RFXMl6$J@DCx$mR}_FrTs|F1v5?=bkn$DyeZGU;Q`#zda_dk>FGgw~ zDtV{{;^D5saTK@wiU;yfx(duKg|~zv!Kqo2DkrqP5D{pmHVH&v*%aOW>e?SFO3(VSt{s*8Mp0Y24B@ z8;dsBV>1A(g17|ULPK=iTm`pHExlb_q(!EUw8i4_ev|9aJ8P24z!Y3>lzL2_paa@1 zrh;rwVh;!Hz*={^Pjy!#2t|*SB$qC2+_esa$RAdr4qkfkZCLh88FqS{jVC~nG?4}^ zbE;wY2ru$~ML51+dJ8YVv^#e@p(>i!cW6XJ9>|~CeU4{DQvo8M9_N3%9#f+_DD&Womg4#(_+46zq0at1?jip|Lf29I}ER0dKWmfy!qUR8G2#`uDEO~4BKKu zqwD)chpAS(M@7H9khRz_w80iNWDEe2dNysLnTN}xYiZ*C7F?@>A1KT1H3l^%N4rU? z&j*`-Kd9h1e^jN^qcN#nk`jJ#RBk>&5u!yi3{Uf_!qy>>5a6)%A%AOZ*~uBNl|I`O zOAU%(T8yVsowj=g|K)MVS{1hp+n`Hu4v)lGVfNvJD3vp>H74Ja3jH1IoNA`gmce*Y zS9z+wIBvW7&x4mS#Hm_>lLm?(p=tMI+%e>TTBPS$&K<^i`fo^P*d0#lgolCPox6+Z zOgOqEP0FKscqJB#uxzyb%E{*?Y6EH^$`YmLGXIv749;a}0QQ#hw0mgpW!$TkATCMg zFaOHG`UAto&nn5^feRED+!~EYXGQ8cyl@j=eNXrt{+dGiqLsd@Sskh#tst6a5i!7j zcw~POiOXF?hrH%Ry2#^V`wtT%t^*X~U>~eCSe7l2k!Q==$^4aPVTzvJCUcFH-K^A} zq%lbZMXZa$Pdh=ddPaAr;+%EJ^4(j9Ez7TnOySq;-O1zh%RtF4{tNY7|U; z>#|9cQee8UTy-d-)BjW>(9wP^1b+;FDAK~x#)P5mVyC#N=#L_#14*9ypw09Vy6gaC zR~S1`2Q;qB=KJR$a zXSoklz9=!?w>P`bNWHoH1b=rDIi*rX^ay#V{iUs$#9zBV{aL+8#MIQn!RG6KzW&K0 z{?k!XWe1Rr#ogYQ_@-=sjWpx|vaGGKWR&b4A3LM%7PrpbLVK} zCfprI?y>ds8s-9ot8Jk zlT}mvzt;x;u`L-6{84C_vi9@d4$*cg{S#};kPlrnPHWt%)6l*I?5l5CYWv~&xw57= znj{ad^H!cf07SJy#U@miTE^j7wcmyLXbNQNi&~w)GSz<$NIciFt1`KNc(fi#ylUK5 z?>}S*5#@ewEs_NUKug|{bLQ{cz$OY)vbq>y|LoH(a*a82w>y< zX%~DQ{!c9NJHKAngQZga8A4*=;1wa@t#( z567q!1nZbV<)TsA>Cy&&yiV1ek*33FSZ<3~SPDi`#Z4!s%vXy2oF9xha7^brR`_V2 zTA{D(nP>X!1^1%3Cf52{RPU_x3Nkhg5pi!|FjZqqnYzdzB)J?@e01c;@aLvITel2b z{1tO!wVli6nc-(1U>b|Z>dDrZEhY;_kxPiKtUE@7)ae;7%ZvhlRWhVWn8a5F(<@9M>DawdVUgX z=XjYubM9EecsQcDPpe3+9~);5&(d`E9%hR`NB~v+hpvG3<(1@(sX$N7U-lVs)*3WniJfb6p4H z$v9=gIom3|7ewMyL>^1uBzhdsIH4NnrpSbU?QbVO%?Iw3BKiSrh1qJmd*7krW&6!` z*|W3vr#0>o4Q9X6&ayhpijl}?sZS)zi$M?3X=WrUjDL^UU-X2o)l@(;QsiB$*lr?x z&Pvf+E2FJ{lIcPl?OvuSi8Fcf@U&5U6HdGxH)sseZ>amhHJCcIVW`Oaddh76u9@CT z`)n4slt5C>MK4qfjIbhS&Zlt2Zbk`Or*y?%pmH2$Er$THEuq6$Z1T`O++#IT`#T; zMgWB|y--G_U3(mh9;tgM+*Sv{nS&m7}% zgwtG1gQ?TWLW5a;1NN+mP!<9KbL6#1|78>hnRfv9VX0a?9!Fx5jU{h)&B)8}ki^Z5 zK2+X+5|5_5&u)?zS6nRX5kW^wH&C;A=D94CEAYuMlga(dlqox2r-{%n_Z+vFMxA-4 zHz?<46!pbovqvy_+STo)(=>r~nftO&AyWV(1~B^s6gU0`6!=m`!9|03?0$B&75J+; zpFO23C&6dU8cH1!x0y`qYns*s_-j7NM{Vzaz_yojq^pO#!Y!_UrdJneZDk=mp7Z{o z)55BG*#`djpiJ2X!Nc1FCr>>^Gz|#9V1OPC4eV!lUkB0m0atY`PB(P4MP;gt%h&lCkm~DV4t?H|*bk z$*GqT6c6D<8q?p!WAT57*8N!)@Ml{0U5K=>HT#*O-sz+4e`=!NhW|sW{7zJ@3mRm@ zVYW)LwlaK}yHhaio+Q7XBbHcC@) zY$J2-jcvYg-3t$8G-ao*-d|K0`8Pz>aLpQQk7sYLr)D!U*xzK$X1bP;<(`YF+WRT0acIkfXNkq4i%t z#R=g28C3Vf|DjcW2dYzl0wpt8hCHkj81exU@S0Ue2^eu1#+Ncwm{adM8_OA$-ioj$ zXB_R&MD=DjIYSu@Nc=J4%!=07sC7}`5VYQB|K>yGa{Vmb9q|M&Nb8=~u zx9jC^8Eh({KVM8D4yUhwRxXU>lPaRn@$fif6KeXDmbyy%dWtrGd^qW{Sz>Qh7zcgA z=`$j5g@M{KLteA0f>f|Y!UOuKHNyg{%3G1txQoMu7Z#$A>$*p3fAheF$Pw!>wXnX| z!+ln?jKTNu%{ywP0#kpE=i)7D#DoA=P}WEOL_K9ik5%3Y+d=%x^D(X}O8Rn5NOD?a z8E4-{+BxU;nAP`xDDJ>ta_Ypls*!sA&xLY`QP5 zi*P;Bf~`;2>S><#NM@{#h)cnj##<6bSL|&Fv!G)QwYO4YX+sx%dO2AtX7ys!czHP1 zj1}d?0e00);o}Kkm6$zT@ajb4)>mhSe(BlO??mlaO1)u!sJv?t`4;;1WrY<8b|uLqq~1g@v#t-BE_DT1HAjs_v5| zJ9?i&`k+>S;}k@;wj!uLsfu8U?gjQiJ6JX>FOEq)R6PY*8bUH(s@JD`P#xWY>eC&l zrvI5A!~f}DH~M#*B^(B{1@K-MOIv86EH zHwHX`rfn{z;pM17YG3SaNctL+zaLZ@T30@_mfDx zUG(RQD<^GusroTts?{Vy1H(C_7&dggy{O*&U#wiXjb}Lxo@MAg2J@?7(egbFJ*N^2 z*{~pZm>#$MWOarKS<&vaS7x^12w$U$p}`4rXZVtO6~Bcjh1rttQBt^+#w}HDqP=S1 zT#yrgW~W&;lsWHGjIcJ5tm3d(Jl}@K6qx-DLZjUhm}V*8K!KR;R=G0G8GOQIAUcMpAEo zg;yTx58hyHw|=oqX0~?9878bd>;^9g9&r$?bSy{Aa7MC`XpBj!Na3o_9f`$~LRsAm zT!_8?Bm(X_NKH8<^-%(Lzl6>`TUfDjVtS-M9JYjHz<2%^Lx`_Lt5PjWz~mHN?Hm zTQkq>AR^6>6{t0z%#mKbmQ{|frfs>${qh~|7w&N1{ZDZp`@abuRsi4|cttM6=`^mJccT`_FC5;}7^d!@Y6tDw;x&gez7Nuwbh@OI9TE#r}a;Npg0e5T}Fn#);ciq)vwhD0nSPq6PC8{5 z+6SmF9}ayd$`EcviMaNElGaVM9+0|nkFyGL`#YyNUYN&L54A4!FleYK5C3lZ0<<_1spWPH?{XcqfLsiD9K0vP#KkLLiqi3B2_u>TitFV>T% z{f}b2>G$Kb98JzSo%E>kPE4VheR;4-=`WQdV}dR2yX->t-J!gH`wr!m{}knc|0T@e ze{ENFhZ%G!J8?r36L)4~JDcx70RmXQ0fkn|j`Zuv|30$+Pdw%C(A@sS2=3rQi~S2h zA8x@HKbc2c%Qe!Yb|`UnsF?0mwJX z@ieSf{9vz+u$}#XcvL*s&p8^L6icH6FxDD`N+AO;^4lV?EPWRdI~(vYq5HQxpFt(@ zNqVs&AAy;Y_eNXTa7LlyHjdX28q{%LKt#P8Uyy`dL=fE3_3HJye8Hevm|$d~LIrJz zFYX`3SSpr6u~fn9pN>M;O<206OWcs14M5;|cM#@xDW^Ms$hsSBBu2#!p+N&4U&m)p zFJxQ2nHdJ|oilMhuWDnE)y}x_sJuyE^6Fg|0VF^Cjtuazg=Fmqss9q1dDDYo(adNY zKApBgi`bIBPMSkq{1uwh=5^gC&r`L`APoRMC7QBu7&(8krf;%i~_q_?>U&Xm4@ll&>vW z*9PNc3CvO|xyN%%=|k=K1(v5nFx8_S&&2gWISTJNQ0129>}HpnKS&lQ-gX#A5o`gePA-wUyX{yjWoxrXUgGW+0EwQRg z3j+0fgsrTIw>|!{O?Yx|q(1=!Kp)&8diHxrC)kTdZER`%_T_<-$Z5Qf-hT%-_g`Zd z|5QCHHXz%5gu{10ejRYJa%lfIX8xUN zzHi*4AC4+?M9)Wh-F zfC$x^%>@xpJ9qimyOTvMe4O9#lXe@ns7U3K#wF&($sH+r1xu)8V{Jfff0f}G7_@wp` z4?fI)KE;dN^R%CanA!`)rDcSoly_Z|j=+D*mp*~of8jg^F038x-X1wDH(Z8){W^KA zQa(ZuCw`*ZXgy%v52_H-C%S#kHy<@s327Ypa(Z;#!H2Nd^;RbxwXq6Xa{b^L_O4VR z&iByDQ-J>w!2iX!*h>Fr0RJL?R0~^EJ7J4Iwo;*gJitE&ClYgjmc-O+PHCMiQlCy<2)sTvT#!9gm?$x5oq4HN^2+)o6L z#4F-rav#oXO{xGgv2X%8I2hW3>_{c53v zQhCC)X07?<`Q&N5 zch!?4p;{ET;Ed!#8Zs$SSubhc6A7(36MQ|qTugPXR0sq z6P68ZsywXV%ihxMo6DF1{3tzu*gQHu2ZYQE*6@{wz}Eqa%`eZ}+UbLZI)n>&wXU?} z_-QHU>#&@wki%M-9XncoABC=q9`5Mv69dT82DnDM$gKT$+ia*m60V7oW=p-O2-LD? zfowNR=(=v8TllU=N$_&BC;ws_v3tyqko{ z&X=Cu%6S)H&zYFcx0FJ*s?~@z7ti(iT1&e&t=Ga@j2fK7*g!oTlGk~rMRr#0c7M@t zhG~?0QjZDoskfl@{1tUr&wW2UTtEN}<{jm~`fmDE-R0YVzpRng|GPgy<*#)4ju(HU zz&v-N%-udUF*Nym7`QE|q=kcxp}m8hDai3|XlVTnIh?GVZ0rC|?mq%e0rz?GK#o7_ z$A26CZ!Gyc9?_p-6|;SId63WX!B>9nL+8V3?*_D92)$Y{`Yt8QntnoE+H^N`dH;$miHoE!fy;N= zpJ~0T`GX+)joGoF>FD^e@UWf{JE}d5AStf)yDtuZ1XR|EPMC=Wj@2k-p=cCZ`lQf! zQhVkx2@m>pucjDk68K4nm-U~Mw&l9`x~%WwhZwR6Zg|!S<)X&qH(S~@hf>>#ScerW zUt1a@o+M%u;KkPLWn}cloq!`P;R&D$a#QrN#3GGC+z_ZwDUL+*KUXR|x_M4N4xQx= zmp5>K?>*~{t1&yq#ZKhClA0NHO97I!Fd*scrd1k;Yg3ZC%q(4(D;ATNW$AsSiSRb3 zE7*u=nnQny!<3eVK`HsAdu1jk#fA4GB8!+zV;OR;V^YP*Qzm)ALev}MSX5=R)kL^B<3u_9*t#7QPqo`~I> zv*2Mo_^BZ#B9nZfNVXTKZ(F4?+j$fwvPBwVQ;3XH5@(ZP+<@lUTrhlo;Sz>C6g>pu z1z78ZX9<9p-+9C*fdB4S!Q&gjg#*CceL?&~!`z=~E@)_{oP!ul&}Y)AgRss~3I*SP zgazPV{4K`bKO5km0q}qNy>`2Q?4646XMjD$Pc_p_|F(bc*%6Dey(8f9Pcin&#EM|b zV1{6hU?4ENzg27(y*pxi_tSkvc9*Y5*ul8I9ybJY05iV3()#-qcMk%_{k6h6*RLv$ z<9O$u*DZ8+?^McB*5^T#FBFBz)}X3?%Q0w1@vQ?FZn{_xHgrr1tu4pmSj_*ZXvS8gAlYkXVo4oJnvLQ zA)(eoeqS5CJLzw~IHp7iePpe8A}?baJ$gHaNF^eDqZ0I1^tm6@@Q9Cz%-Z2n{%*B= z2R+e7T{S4b>(#;2<1%|#Ddhusyl(!I&(&Zr;!3*;X+xaejj@~Dk zP+bzy8_k4~+1u03qYl-J&f*)Q-Yc3`-tW_12?Ww^`z1zq%Y$Cq`!{i4i2-X)A=#yB zDlW-k28b7MqzLs*o5%6<=g_MQUs3d}wT0d`CpDbulFCl#Z?u|wf)25Nh{t$KnYL!E zC@WGQiAz;#;U18I>=)m$8$1&}IN~qtq@{?upGt8dt+gE_T?`wKL}$!ev!->~)q|8>)wfJ*l-A8j#+UC^&CN6f1Dl39$U6JX zZ{E$lQ7s#ci`e?CD;br%;PHqSpM_{~2#iZ4c2C@9T9r1{=g16-7;8ErrEYvto~BTq zz|qm=7$@z24T%TJDid5K0wLoqf4MpeYP=8UPN$|!00030{{R3W|KHm(Gn1D=WT%J< z21VApFRWHc;Lp-F7}-d8`KZQ1gx~QohPd?^vS7CC&#T)l1?@w_E40$iIJ_G-QU($4 zB%}rcXKU;Gr5*|C-{)eZ00N*8?r?Vaqq6@SA2BF@MJXY?e_7{IS{;b~^$kG5BEg9| zn;6=I9G!sJ0L*V%3$lWRv4fo>$e2{#$%Of*(iMLk2QjI7-0gq6KX7wjhx4mv`NyL0 z;Mizil_L<7&7Hr4lM~1Zyi?nO+&?0p0pExJHy-kLnBF>zJuK77FZEUklsDO@}%yBZOan3EoNedv#UFR8Lsx+q6rr2+A(4L1i@K zn6gs*7eV+T=lUhzkc%7))lIssJe4Oyot(toCR(>5Ce0ERs>NSP? z)kQC5VDeGDr3(0n>(thRymS1(%K(Dr7pccCFl=HnxwnY*7xmvI9Y282f1+6qpuSyy z5)~U17^s(~$iw$2rhmz9{+Egrzr29po3f1wc;Nq!FX|U0p>GsLk9l&i)=O~UO5hfm zHaQWhw|#ENy-6(Yb79-3!%t*SUrkKt!kq4l?gFfH%S!tXo=02=Av#(LZZiw}kW{G| zy6-T+RWBDh&*!eFVOF<)5YiRmo<3;F$HZI(a`Xz{HhzG1(R@v)b$Hgk zwnt_3IOwyF4@qs?c_SJ6ASAekeF<6uF#)?jab+fcClvo4gy9r1%#l8C=pn;_MCiIe z#b}RaP^(qd`izfeHriPABj)faX{9qO84vUa^Ar>LR$$={-|PTx06PaK`?t)7 zpN9X7EB_9(*REwngmKV(1M(SvY?0cS5``Oa*rQ9DV`ONBIM+)RQzRv8^Il(emzp5w zk{(^_I(S71>4Td&VWq4>@Q2P<4S>hIIWm14EO89+mbc!h=J`ctd*R0kKfu!?A7w2r<#q6|55JWAGx=A+}NhfB^o4TnJ^bb zd(GtC+|)CQO1lNV?u(LSd7-YcuyE-$h276lS)U?$nbI|6cvC%;5i6HxX0Y|Je~yi^ z3SoUI`VluvVn)4plW$>T`Is4zko~dsBiYNSFlGH@!uGv#@_JBzZE#CAYE$L92SJ1~ zFHtMbbc7m7ugwZEKnBUBTrdHEMS6sfPC4R$`E%;bj(#J+&=TAjqDz zKGfRs<{0RG*zfCqGix>e1$~cd>1^Y?@WLTANENwggcVoCMGMm!b!S)KFUnagurv7S zt$a2U@|tU4qGEl23Tz}TMn)7~v8`fcK%5tlx(0 z9IUK7+W&J4{SH(Wx7-a|rVui#`E|>2=fbh>=PRx5HxR9V`;-YpYd6V&2-dnR%de$EFft~{UpelG)nl?k~PS+NNATxNCj;2Iol|5t8MG6 zX@q!G;kU~zH=SzUfF8%Rdv&@64P|3roiHnr(!=Gr9(5CUr9U(!meyNEgNY@7x(tdT z(4{ctYbs)YRp|{W%PY`0~H+@l)%R_&CQep{P;$w=D`dghc`Jhq*>oM$y$`%j;xHZV7s(M%M}ToWdO zT(U)3-jiFWD;;WM@l-#VW>DF*A$-~~OMjdf;5peRl1~Bd#H}8Q+RSX0PYT5~mx(xz zL-rwmHr1WoE=U@Jl#SpcyLe8#{jr~3kk}i#G3y7IYlhJkXmQy=$}c~s*h%C>9Q9i( zU7+(~VM%rlkp${6i9Fa-HWR@RAS+LbC{y%$U42Z)vWe^y#$MQC&6Of0q6P~aA0Ia7}vni{y}^# z`K@I5XBPrRkdwTfu@$MDsS`7h3&8PJ-9utlGqmk&aqO&ga_P*ob+@uGH0i9hBBlK` z*P;7SxB?Q1@yC234u-bwcQ<@3swrh>Z9+#X*&XlnmubIe_pt(jcN1{40`Jku{k7(Q z(6{0LhyEwOgMSyLo@1Mw4Q6NF@oH+E?HE9Un1A1F*5m_zgl|8fKX8@w_3AP2c#=N8 zmyS(4Kq-jkG>1gy)!Q_LxI@$vU$G!AW0gpcBKs?kM?*0gd!3TjLH4?HN8oW3SBijA zpJf{3jXe|o+@?M@;~VU_+ZRpO)6Y78I+DZ?8z!}ivo%I2N$lO9&-17ugPdovM3TUt z>+POKAKX@&+>oYEKi;`1CV?|4h;&h}B<7kK5A`oZ;lT^D#Lo>)BSjs=N2=FRs!M^>DZdhC%YF9= zu}d@gRlssP(BYs<(mvXOhuyvUgJ#@H*~%M#VTvS{OJ^?@S~(+1{{X}j!vjLwCPVHW z{|lo$K5e7%Bv9A#N1K2%7ApIH8ZzqF4k{#3jGaMoo!YT2!^b6{qMfIsm(Vqm&R7(d zcEQE~zt5A|By@yttY0W=>Bi~sJwpZzw|o1(JID%b?US@6Ej~9?X(40rY%9Vt&YMUM zJ;-i83O^DEZfcrut8b<|pW}iClSzUM65nVS0}eY!QjH!Lo17$^mP7A<2y7K0avIGI z!sv5GHs}GH=r8q7pDc+}XLo%>j;~{OPWDr=lmisMFv?3j$e4N8W$Y}ZB~^XTR{8JP z>b>!u^gDGRg@MMlhxj{d<@*Uz50!pE3IPM|zIKSJjFjS!UU7&RXg>~-K2%at`;m^z z3E%>-1G(-LMD}mxcK#fH{`V&T9flg&ntghyWMk^*>u3qeG~+f$$;VAv#uGOuDnbl} zEe$ly)q)gWS*k%m-!5gO(^u)j#>#fm`hL1(xNtw{sr-zlN*Nbv+V?E1{JC}k*j8JM zH;L#1!`sM?=kj>yb=<*|N17@W({4 z`e|L&mGfa_J8^IUen)@;v5#>9RqC`ddpgslXxu0_vGO_@lG`FDFW{UyN5a?|yr!L& z-Up3}p*Zv8Q3=y-yA7Z)GV^3bMcQH$vQP)0t*nBQ5TH8rzUb(H)_WjYG7hCa=I>r-KwUaVlN{Z|EN|IR=E1ki`5jCm@V+5@kUsT$Ex#1X69*|lG> zSHUsDaAuCHGv|emzM!yU2l+n6X;#If1w41D))+pWL{w!NN(?JZ7>7^r<9T_j!a;o- zxU5e6(zd8MauZ*O#}h+L)KZNdlqc1PFGv$1@-sRq5*4w3)m?J!-ED@*NQPOMUg52V z0nfDX{o#94i=BE5x^xCLV``kQ2_WF-wd@=cExrInroy<}Lu*>G-OtO`+QO(73~49` z>w&OPoOSqdt+`H5l*4UaVXmTvR2`HH_T<737D$hNm^ax-s2_grAZ8zV-WkM?QRb77 zp{bg9VgDw79tC)wVWzv4!mX!Y>!=upWww~@f@Vb8rf!ie2F9asy8l93QAS+tk-li) zeSAh8AOQNs9f+QOkI%sBZ3Rg^e%_P{rnd$&_A2Y|P}2Krg@`|En~Iq`+nSlX8j{|( z$S}6EAr-S@X8dM*`CcFb5s3_>EGP5(3Ki`4byWd>_pwx8TR;Ci{9j-HcYeHOD%Abx z`7kzTv!O~7Z(c>4tZ^31BV(rla577-?I2}XIcgnvF>A7H%ic-I69bFb!O!GtBpY8W z$$^cGSce~Oz%0dXLqTur@n4t7+mPFnMF0;|oxBRPXtL(|CV7;LJehUXrW({8otY+t}a-VrGzaX){y>!xBK z@fa;oh3pHu0DFkuy7W-0e*lL(-Y)3WsvA0QUkYQYmW(C|4Plm&ucb{KLlPjA%0Dwb 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

      Mn-z|u0K-+) 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

      g(PTpuC*(EVNvVC~Z=MfGa>^vFi3cJ+VL8fo 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%0Du;L~Z%wYd#ERP;fQ2?ID;f=z^{SR8$yJS|#*B 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�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 Date: Tue, 28 Dec 2021 22:58:53 +0200 Subject: [PATCH 282/831] refactor and repair release assembly --- rel/files/riak-cs | 17 ++++++++------- rel/files/riak-cs-admin | 28 ++++++++---------------- rel/files/riak-cs-debug | 41 ++++++++++++++++++++++++++++++------ rel/pkg/deb/vars.config | 24 +++++++-------------- rel/pkg/fbsdng/vars.config | 24 +++++++++------------ rel/pkg/rpm/vars.config | 26 +++++++---------------- rel/vars.config | 14 ++++++------ rel/vars/dev_vars.config.src | 13 ++---------- 8 files changed, 88 insertions(+), 99 deletions(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 84739449f..f58161b6b 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -36,7 +36,7 @@ function write_pid_file { # relx doesn't seem to write the pid file, does it? while [[ $c -ne 0 ]]; do if [ "`maybe_su ${RELX_RIAK} ping`" = "pong" ]; then maybe_su ${RELX_RIAK} pid >$PID_DIR/riak-cs.pid - chown root:root $PID_DIR/riak-cs.pid 2&>1 >/dev/null \ + chown root $PID_DIR/riak-cs.pid 2> /dev/null \ || true # systemd wants it to be owned by root break fi @@ -67,19 +67,20 @@ function maybe_su { # (previously implicitly done by su -, which option we have # removed in order to allow any env vars to be available for # the ultimate invocation of riak/riak-cs/stanchion) - cd {{platform_base_dir}} + cd "{{platform_base_dir}}" # freebsd su is fairly limited, so: - mkdir -p $RUNNER_GEN_DIR - chown riak_cs:riak_cs $RUNNER_GEN_DIR - f=`mktemp $RUNNER_GEN_DIR/su_piggy-XXXXXXX` - cat >$f <"$f" < /dev/null | cut -d = -f 2 | tr -d ' '` -# NODE={{node}} -# HOST=${NODE#*@} -# BOOT_FILE="{{runner_base_dir}}/releases/{{release_version}}/start_clean" -# -# for something like this: -# -# $ERTS_PATH/erl -noshell -name riak_test@$HOST -setcookie $COOKIE \ -# -pa {{runner_patch_dir}} \ -# -boot $BOOT_FILE \ -# -eval "case catch(riak:client_test(\"$NODE\")) of \ -# ok -> init:stop(); \ -# _ -> init:stop(1) \ -# end." -# +# can via rpc, see how this is done in riak/rel/files/riak-admin # relx provides a 60 sec value hardcoded for RPC timeout, with no easy # way to supply an 'infinity' from the script. Much as I hate to diff --git a/rel/files/riak-cs-debug b/rel/files/riak-cs-debug index 3f646c626..e0df6df40 100755 --- a/rel/files/riak-cs-debug +++ b/rel/files/riak-cs-debug @@ -132,13 +132,42 @@ exit ### Set up variables ### +is_relative() { + if [ "${1#/}" = "$1" ]; then + return 0 + else + return 1 + fi +} + RCS_PATH="${RCS_PATH:-$(cd $(dirname "$0")/.. && pwd -P)}" -cs_base_dir={{platform_base_dir}} -cs_bin_dir={{platform_bin_dir}} -cs_etc_dir={{platform_etc_dir}} -cs_log_dir={{platform_log_dir}} -cs_lib_dir={{platform_lib_dir}} -cs_gen_dir={{platform_gen_dir}} +PLATFORM_BASE_DIR={{platform_base_dir}} +cs_base_dir=$PLATFORM_BASE_DIR +if is_relative "{{platform_bin_dir}}"; then + cs_bin_dir="$PLATFORM_BASE_DIR/{{platform_bin_dir}}" +else + cs_bin_dir="{{platform_bin_dir}}" +fi +if is_relative "{{platform_etc_dir}}"; then + cs_etc_dir="$PLATFORM_BASE_DIR/{{platform_etc_dir}}" +else + cs_etc_dir="{{platform_etc_dir}}" +fi +if is_relative "{{platform_log_dir}}"; then + cs_log_dir="$PLATFORM_BASE_DIR/{{platform_log_dir}}" +else + cs_log_dir="{{platform_log_dir}}" +fi +if is_relative "{{platform_lib_dir}}"; then + cs_lib_dir="$PLATFORM_BASE_DIR/{{platform_lib_dir}}" +else + cs_lib_dir="{{platform_lib_dir}}" +fi +if is_relative "{{platform_gen_dir}}"; then + cs_gen_dir="$PLATFORM_BASE_DIR/{{platform_gen_dir}}" +else + cs_gen_dir="{{platform_gen_dir}}" +fi cuttlefish_conf_dir=${cs_gen_dir}/generated.conf diff --git a/rel/pkg/deb/vars.config b/rel/pkg/deb/vars.config index b533d8910..189145731 100644 --- a/rel/pkg/deb/vars.config +++ b/rel/pkg/deb/vars.config @@ -4,13 +4,14 @@ {rel_vsn, "{{release_version}}"}. %% Platform-specific installation paths -{platform_bin_dir, "/usr/lib/riak-cs/bin"}. -{platform_data_dir, "/var/lib/riak-cs"}. -{platform_etc_dir, "/etc/riak-cs"}. -{platform_base_dir, "/usr/lib/riak-cs"}. -{platform_lib_dir, "/usr/lib/riak-cs/lib"}. -{platform_log_dir, "/var/log/riak-cs"}. -{platform_gen_dir, "/var/lib/riak-cs/releases/{{release_version}}"}. +{platform_bin_dir, "/usr/lib/riak-cs/bin"}. +{platform_data_dir, "/var/lib/riak-cs"}. +{platform_etc_dir, "/etc/riak-cs"}. +{platform_base_dir, "/usr/lib/riak-cs"}. +{platform_lib_dir, "/usr/lib/riak-cs/lib"}. +{platform_log_dir, "/var/log/riak-cs"}. +{platform_gen_dir, "{{platform_data_dir}}"}. +{platform_patch_dir, "{{platform_lib_dir}}/patches"}. %% %% riak-cs.conf @@ -33,17 +34,8 @@ {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{runner_script_dir, "/usr/lib/riak-cs/bin"}. -{runner_base_dir, "/usr/lib/riak-cs"}. -{runner_etc_dir, "/etc/riak-cs"}. -{runner_log_dir, "/var/log/riak-cs"}. -{runner_user, "riak_cs"}. -{runner_lib_dir, "/usr/lib/riak-cs/lib"}. -{runner_patch_dir, "/usr/lib/riak-cs/lib/patches"}. {pipe_dir, "/tmp/riak-cs"}. {pid_dir, "/run/riak-cs"}. -{package_replacement_line, ""}. -{package_conflicts_line, ""}. {sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. {sasl_log_dir, "{{platform_log_dir}}/sasl"}. diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config index 7579a1bd9..80821b48d 100644 --- a/rel/pkg/fbsdng/vars.config +++ b/rel/pkg/fbsdng/vars.config @@ -4,13 +4,15 @@ {rel_vsn, "{{release_version}}"}. %% Platform-specific installation paths -{platform_bin_dir, "/usr/local/lib/riak-cs/bin"}. -{platform_data_dir, "/usr/local/var/lib/riak-cs"}. -{platform_etc_dir, "/usr/local/etc/riak-cs"}. -{platform_base_dir, "/usr/local/lib/riak-cs"}. -{platform_lib_dir, "/usr/local/lib/riak-cs/lib"}. -{platform_log_dir, "/var/log/riak-cs"}. -{platform_gen_dir, "/usr/local/var/lib/riak-cs/releases/{{release_version}}"}. +{platform_bin_dir, "/usr/local/lib/riak-cs/bin"}. +{platform_data_dir, "/usr/local/var/lib/riak-cs"}. +{platform_etc_dir, "/usr/local/etc/riak-cs"}. +{platform_base_dir, "/usr/local/lib/riak-cs"}. +{platform_lib_dir, "/usr/local/lib/riak-cs/lib"}. +{platform_log_dir, "/var/log/riak-cs"}. +{platform_gen_dir, "{{platform_data_dir}}"}. +{platform_patch_dir, "{{platform_lib_dir}}/patches"}. + {cs_ip, "127.0.0.1"}. {cs_port, 8080}. @@ -30,16 +32,10 @@ {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{runner_script_dir, "{{platform_bin_dir}}"}. -{runner_base_dir, "{{platform_base_dir}}"}. -{runner_etc_dir, "{{platform_etc_dir}}"}. -{runner_log_dir, "{{platform_log_dir}}"}. -{runner_lib_dir, "{{platform_lib_dir}}"}. -{runner_patch_dir, "{{platform_lib_dir}}/patches"}. {pid_dir, "/var/run/riak-cs"}. {pipe_dir, "/tmp/riak-cs"}. -%% {runner_wait_process, "riak_cs_put_fsm_sup"}. %% a fossil bone +%% {runner_wait_process, "riak_cs_put_fsm_sup"}. {console_log_default, file}. diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index bd008c445..b7af9ab86 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -4,13 +4,14 @@ {rel_vsn, "{{release_version}}"}. %% Platform-specific installation paths -{platform_bin_dir, "/usr/lib64/riak-cs/bin"}. -{platform_data_dir, "/var/lib/riak-cs"}. -{platform_etc_dir, "/etc/riak-cs"}. -{platform_base_dir, "/usr/lib64/riak-cs"}. -{platform_lib_dir, "/usr/lib64/riak-cs/lib"}. -{platform_log_dir, "/var/log/riak-cs"}. -{platform_gen_dir, "/var/lib/riak-cs/releases/{{release_version}}"}. +{platform_bin_dir, "/usr/lib64/riak-cs/bin"}. +{platform_data_dir, "/var/lib/riak-cs"}. +{platform_etc_dir, "/etc/riak-cs"}. +{platform_base_dir, "/usr/lib64/riak-cs"}. +{platform_lib_dir, "/usr/lib64/riak-cs/lib"}. +{platform_log_dir, "/var/log/riak-cs"}. +{platform_gen_dir, "{{platform_data_dir}}"}. +{platform_patch_dir, "{{platform_lib_dir}}/patches"}. %% %% riak-cs.conf @@ -33,23 +34,12 @@ {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{runner_script_dir, "/usr/lib64/riak-cs/bin"}. -{runner_base_dir, "/usr/lib64/riak-cs"}. -{runner_etc_dir, "/etc/riak-cs"}. -{runner_log_dir, "/var/log/riak-cs"}. -{runner_user, "riak_cs"}. -{runner_lib_dir, "/usr/lib64/riak-cs/lib"}. -{runner_patch_dir, "/usr/lib64/riak-cs/lib/patches"}. {pipe_dir, "/tmp/riak-cs"}. {pid_dir, "/run/riak-cs"}. -{package_replacement_line, ""}. -{package_conflicts_line, ""}. {sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. {sasl_log_dir, "{{platform_log_dir}}/sasl"}. -{runner_wait_process, "riak_cs_put_fsm_sup"}. - %% %% cuttlefish %% diff --git a/rel/vars.config b/rel/vars.config index e4b079a84..b0a11265e 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -4,13 +4,13 @@ %% Platform-specific installation paths {platform_base_dir, "${RCS_PATH:-$RELEASE_ROOT_DIR}"}. -{platform_bin_dir, "{{platform_base_dir}}/bin"}. -{platform_data_dir, "{{platform_base_dir}}/data"}. -{platform_etc_dir, "{{platform_base_dir}}/etc"}. -{platform_lib_dir, "{{platform_base_dir}}/lib"}. -{platform_log_dir, "{{platform_base_dir}}/log"}. -{platform_gen_dir, "{{platform_base_dir}}/releases/{{release_version}}"}. -{platform_patch_dir, "{{platform_lib_dir}}/patches"}. +{platform_bin_dir, "./bin"}. +{platform_data_dir, "./data"}. +{platform_etc_dir, "./etc"}. +{platform_lib_dir, "./lib"}. +{platform_log_dir, "./log"}. +{platform_gen_dir, "."}. +{platform_patch_dir, "./lib/patches"}. %% %% riak-cs.conf diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index 6ac02a068..c6c0a450e 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -12,7 +12,8 @@ {platform_etc_dir, "{{platform_base_dir}}/etc"}. {platform_lib_dir, "{{platform_base_dir}}/lib"}. {platform_log_dir, "{{platform_base_dir}}/log"}. -{platform_gen_dir, "{{platform_base_dir}}/releases/{{release_version}}"}. +{platform_gen_dir, "{{platform_data_dir}}"}. +{platform_patch_dir, "{{platform_lib_dir}}/patches"}. %% %% etc/app.config @@ -38,16 +39,6 @@ {node, "@NODE@"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -%% -%% bin/riak_cs -%% -{runner_script_dir, "`dirname $0`"}. -{runner_base_dir, "{{runner_script_dir}}/.."}. -{pipe_dir, "/tmp/riak-cs-{{node}}"}. -{pid_dir, "/run/riak-cs-{{node}}"}. -{runner_user, ""}. -{runner_wait_process, "riak_cs_put_fsm_sup"}. - %% %% cuttlefish %% From ce3bf7f1dc041d3f6bb61edc99af048e2f57a241 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 31 Dec 2021 14:22:55 +0200 Subject: [PATCH 283/831] unbreak riak-cs-supercluster --- rel/files/riak-cs-supercluster | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/rel/files/riak-cs-supercluster b/rel/files/riak-cs-supercluster index b6bccc1fd..6f104e390 100755 --- a/rel/files/riak-cs-supercluster +++ b/rel/files/riak-cs-supercluster @@ -24,16 +24,24 @@ ## ------------------------------------------------------------------- SCRIPT="riak-cs-supercluster" -PLATFORM_BASE_DIR=${RCS_PATH:-$(cd $(dirname "$0")/.. && pwd -P)} -RPC_HOP="$PLATFORM_BASE_DIR/bin/riak-cs rpc" +# if we are called as `riak admin`, PLATFORM_BASE_DIR will have been set +PLATFORM_BASE_DIR={{platform_base_dir}} +PLATFORM_BASE_DIR=${PLATFORM_BASE_DIR:-$(cd $(dirname "$0")/.. && pwd -P)} + +PLATFORM_BIN_DIR={{platform_bin_dir}} +if [ "$PLATFORM_BIN_DIR" = "${PLATFORM_BIN_DIR#/}" ]; then + PLATFORM_BIN_DIR=$PLATFORM_BASE_DIR/$PLATFORM_BIN_DIR +fi + +RPC_HOP="${PLATFORM_BIN_DIR}/riak-cs rpc" # Check the first argument for instructions case "$1" in list-members|weight|weight-manifest|weight-block|refresh) - $RPC_HOP rpc riak_cs_multibag_console "$@" + $RPC_HOP riak_cs_multibag_console "$@" ;; *) - echo "Usage: $SCRIPT { list-members | weight | weight-manifest | weight-block | refresh }" + echo "Usage: $SCRIPT { list-members | weight | weight-manifest | weight-block | refresh }" exit 1 ;; esac From 7f3e73437e020cba8702eee389fe57cf6c3a8bd5 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 31 Dec 2021 17:16:29 +0200 Subject: [PATCH 284/831] bump riak_pb to version in current riak --- rebar.config | 2 +- rebar.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rebar.config b/rebar.config index 1dd906cdb..37e97f734 100644 --- a/rebar.config +++ b/rebar.config @@ -29,7 +29,7 @@ , {riakc, ".*", {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.7"}}} , {poolboy, "0.8.*", {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, ".*", {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {riak_repl_pb_api,".*", {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} + , {riak_repl_pb_api,".*", {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.8"}}} , {riak_cs_multibag,".*", {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} , {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.2"}}} diff --git a/rebar.lock b/rebar.lock index 2938eaa08..e577851a1 100644 --- a/rebar.lock +++ b/rebar.lock @@ -45,11 +45,11 @@ 0}, {<<"riak_pb">>, {git,"git://github.com/basho/riak_pb.git", - {ref,"3129374435d67086e05f97a92482ef7f280aa7c7"}}, + {ref,"b7abca90e4c708073021d2c4e18c896f1a10b838"}}, 1}, {<<"riak_repl_pb_api">>, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", - {ref,"64476172209242af64ed78db7dd705d07189316a"}}, + {ref,"edea2b7d2ca06374fef81308cd146a1f0ff15ecb"}}, 0}, {<<"riakc">>, {git,"https://github.com/basho/riak-erlang-client", From 7652e9aeec8f2870d36596ce9fb9395c3454fd4d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 2 Jan 2022 21:04:14 +0200 Subject: [PATCH 285/831] update tags for riakc and riak_cs_multibag --- rebar.config | 4 ++-- rebar.lock | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rebar.config b/rebar.config index 37e97f734..04dcc5030 100644 --- a/rebar.config +++ b/rebar.config @@ -26,11 +26,11 @@ , {mochiweb, "v2.20.1"} , {exometer_core, "v1.5.7"} , {uuid, ".*", {git, "https://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} - , {riakc, ".*", {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.7"}}} + , {riakc, ".*", {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.8+p1"}}} , {poolboy, "0.8.*", {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, ".*", {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {riak_repl_pb_api,".*", {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.8"}}} - , {riak_cs_multibag,".*", {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} + , {riak_cs_multibag,".*", {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.6"}}} , {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.2"}}} ] diff --git a/rebar.lock b/rebar.lock index e577851a1..f59e2d279 100644 --- a/rebar.lock +++ b/rebar.lock @@ -41,7 +41,7 @@ 0}, {<<"riak_cs_multibag">>, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", - {ref,"0e3cac45f8e138b1ac8eee1519d2f3da7b5273f6"}}, + {ref,"4bbb50de791f6b05adf1d92eb3845fbe6606d348"}}, 0}, {<<"riak_pb">>, {git,"git://github.com/basho/riak_pb.git", @@ -53,7 +53,7 @@ 0}, {<<"riakc">>, {git,"https://github.com/basho/riak-erlang-client", - {ref,"07c9582c9fd97f8252e0a3e488d6ebc08a9a4172"}}, + {ref,"d9fa46335fda4704fda71cbc011ab6a11e50e3f3"}}, 0}, {<<"setup">>,{pkg,<<"setup">>,<<"2.0.2">>},1}, {<<"syslog">>, From 82e58bfbf4c1590174cdfc119f566b4fd7b7fe40 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 2 Jan 2022 21:06:03 +0200 Subject: [PATCH 286/831] update rebar3 to 3.18.0 --- rebar3 | Bin 945532 -> 953221 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rebar3 b/rebar3 index caa7e66d30e85950bdde96fd562bc69fbe1e20de..c1597bbc58723757ff36e45d811ced14b9932d4f 100755 GIT binary patch delta 261008 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

      9`Rmj;V{}XP1+u=93 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

    1. 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 Date: Mon, 3 Jan 2022 15:05:15 +0200 Subject: [PATCH 287/831] fix eunit tests --- apps/riak_cs/src/riak_cs_get_fsm.erl | 1 + apps/riak_cs/src/riak_cs_manifest_utils.erl | 9 ++- apps/riak_cs/src/riak_cs_wm_bucket_delete.erl | 2 +- apps/riak_cs/src/riak_cs_xml.erl | 3 +- .../test/prop_riak_cs_gc_single_run.erl | 2 +- apps/riak_cs/test/prop_riak_cs_lfs_utils.erl | 3 +- .../test/prop_riak_cs_list_objects_fsm_v2.erl | 5 +- .../test/prop_riak_cs_manifest_resolution.erl | 8 +-- .../test/prop_riak_cs_manifest_utils.erl | 14 ++-- apps/riak_cs/test/riak_cs_dummy_reader.erl | 1 + ...k_cs_dummy_riak_client_list_objects_v2.erl | 2 +- apps/riak_cs/test/riak_cs_s3_rewrite_test.erl | 66 +++++++++---------- 12 files changed, 60 insertions(+), 56 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl index 3c3813e04..08e62b536 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm.erl @@ -169,6 +169,7 @@ init([test, Bucket, Key, Caller, ContentLength, riak_cs_dummy_reader:start_link([self(), Bucket, Key, + ?LFS_DEFAULT_OBJECT_VERSION, ContentLength, BlockSize]), link(ReaderPid), diff --git a/apps/riak_cs/src/riak_cs_manifest_utils.erl b/apps/riak_cs/src/riak_cs_manifest_utils.erl index ee97c5241..b7564f8cc 100644 --- a/apps/riak_cs/src/riak_cs_manifest_utils.erl +++ b/apps/riak_cs/src/riak_cs_manifest_utils.erl @@ -156,7 +156,6 @@ leeway_elapsed(Timestamp) -> Now > (riak_cs_utils:second_resolution_timestamp(Timestamp) + riak_cs_gc:leeway_seconds()). - %% =================================================================== %% EUnit tests %% =================================================================== @@ -194,12 +193,12 @@ cleanup(_Ctx) -> wrong_state_for_pruning() -> Mani = new_mani_helper(), Mani2 = Mani?MANIFEST{state=active}, - ?assert(not needs_pruning(Mani2, erlang:timestamp())). + ?assert(not rcs_common_manifest_utils:needs_pruning(Mani2, erlang:timestamp(), 5)). wrong_state_for_pruning_2() -> Mani = new_mani_helper(), Mani2 = Mani?MANIFEST{state=pending_delete}, - ?assert(not needs_pruning(Mani2, erlang:timestamp())). + ?assert(not rcs_common_manifest_utils:needs_pruning(Mani2, erlang:timestamp(), 5)). does_need_pruning() -> application:set_env(riak_cs, leeway_seconds, 1), @@ -209,7 +208,7 @@ does_need_pruning() -> Mani = new_mani_helper(), Mani2 = Mani?MANIFEST{state=scheduled_delete, scheduled_delete_time=ScheduledDeleteTime}, - ?assert(needs_pruning(Mani2, Now)). + ?assert(rcs_common_manifest_utils:needs_pruning(Mani2, Now, 5)). not_old_enough_for_pruning() -> application:set_env(riak_cs, leeway_seconds, 2), @@ -219,6 +218,6 @@ not_old_enough_for_pruning() -> Mani = new_mani_helper(), Mani2 = Mani?MANIFEST{state=scheduled_delete, scheduled_delete_time=ScheduledDeleteTime}, - ?assert(not needs_pruning(Mani2, Now)). + ?assert(not rcs_common_manifest_utils:needs_pruning(Mani2, Now, 5)). -endif. diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl index 7588ad05f..c96444e3a 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl @@ -193,6 +193,6 @@ key_and_version_from_xml_node(Node) -> parse_body_test() -> Body = " </Key> ", - ?assertEqual({ok, [<<"">>]}, parse_body(Body)). + ?assertEqual({ok, [{<<"">>, ?LFS_DEFAULT_OBJECT_VERSION}]}, parse_body(Body)). -endif. diff --git a/apps/riak_cs/src/riak_cs_xml.erl b/apps/riak_cs/src/riak_cs_xml.erl index c78d5f9ec..1623242e6 100644 --- a/apps/riak_cs/src/riak_cs_xml.erl +++ b/apps/riak_cs/src/riak_cs_xml.erl @@ -397,8 +397,7 @@ list_objects_response_to_xml_test() -> size = 54321, owner = Owner2, storage_class = <<"STANDARD">>}, - ListObjectsResponse = ?LORESP{resp_type = objects, - name = <<"bucket">>, + ListObjectsResponse = ?LORESP{name = <<"bucket">>, max_keys = 1000, prefix = undefined, delimiter = undefined, diff --git a/apps/riak_cs/test/prop_riak_cs_gc_single_run.erl b/apps/riak_cs/test/prop_riak_cs_gc_single_run.erl index 614248a06..be3f2d988 100644 --- a/apps/riak_cs/test/prop_riak_cs_gc_single_run.erl +++ b/apps/riak_cs/test/prop_riak_cs_gc_single_run.erl @@ -330,7 +330,7 @@ dummy_start_delete_fsm(_Node, [_RcPid, {_UUID, ?MANIFEST{bkey={_, K}}=_Manifest} {match, _} -> 0 end, DummyDeleteFsmPid = - spawn(fun() -> FinishFun({self(), {ok, {b, k, uuid, NumDeleted, TotalBlocks}}}) end), + spawn(fun() -> FinishFun({self(), {ok, {b, k, vsn, uuid, NumDeleted, TotalBlocks}}}) end), {ok, DummyDeleteFsmPid}. %% ==================================================================== diff --git a/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl b/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl index 649ec734a..7e39fe329 100644 --- a/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl +++ b/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl @@ -72,7 +72,7 @@ prop_block_count() -> %% all of the blocks calculated by `initial_blocks` %% have been removed from the manifest prop_manifest_manipulation() -> - ?FORALL({Bucket, FileName, UUID, CLength, Md5, MD}, + ?FORALL({Bucket, FileName, Vsn, UUID, CLength, Md5, MD}, {riak_cs_gen:bucket(), riak_cs_gen:file_name(), riak_cs_gen:vsn(), @@ -86,6 +86,7 @@ prop_manifest_manipulation() -> Manifest = riak_cs_lfs_utils:new_manifest( Bucket, FileName, + Vsn, UUID, CLength, <<"ctype">>, diff --git a/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl index 67b415735..7c3f0c834 100644 --- a/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/test/prop_riak_cs_list_objects_fsm_v2.erl @@ -250,6 +250,7 @@ raw_manifest(Key, State) -> ?MANIFEST{uuid = <<"uuid-1">>, bkey={<<"bucket">>, bin_key(Key)}, state=State, + created = "20221111T010101", content_md5 = <<"Content-MD5">>, content_length=100, acl=?ACL{owner={"display-name", "canonical-id", "key-id"}}}. @@ -300,7 +301,7 @@ active_manifest_keys(KeysAndStates, <<$/>>=_Delimiter, undefined=_Prefix) -> {lists:usort(CommonPrefixes), lists:usort(Keys)}. keys_in_list({CPrefixes, Contents}) -> - {CPrefixes, [Key || #list_objects_key_content_v1{key=Key} <- Contents]}. + {CPrefixes, [Key || #list_objects_key_content{key=Key} <- Contents]}. list_manifests(Manifests, Opts, UserPage, BatchSize) -> {ok, DummyRc} = riak_cs_dummy_riak_client_list_objects_v2:start_link([Manifests]), @@ -337,7 +338,7 @@ list_manifests_to_the_end(DummyRc, Opts, UserPage, BatchSize, CPrefixesAcc, Cont create_marker(?LORESP{next_marker=undefined, contents=Contents}) -> LastEntry = lists:last(Contents), - LastEntry#list_objects_key_content_v1.key; + LastEntry#list_objects_key_content.key; create_marker(?LORESP{next_marker=NextMarker}) -> NextMarker. diff --git a/apps/riak_cs/test/prop_riak_cs_manifest_resolution.erl b/apps/riak_cs/test/prop_riak_cs_manifest_resolution.erl index 9c568d008..8d80919a3 100644 --- a/apps/riak_cs/test/prop_riak_cs_manifest_resolution.erl +++ b/apps/riak_cs/test/prop_riak_cs_manifest_resolution.erl @@ -69,12 +69,12 @@ prop_resolution_commutative() -> ?FORALL(Manifests, resize(50, manifests()), begin MapFun = fun(Mani) -> - riak_cs_manifest_utils:new_dict(Mani?MANIFEST.uuid, Mani) + rcs_common_manifest_utils:new_dict(Mani?MANIFEST.uuid, Mani) end, Filtered = only_one_active(Manifests), WrappedManifests = lists:map(MapFun, Filtered), - Resolved = riak_cs_manifest_resolution:resolve(WrappedManifests), - ReversedResolved = riak_cs_manifest_resolution:resolve(lists:reverse(WrappedManifests)), + Resolved = rcs_common_manifest_resolution:resolve(WrappedManifests), + ReversedResolved = rcs_common_manifest_resolution:resolve(lists:reverse(WrappedManifests)), Resolved == ReversedResolved end). @@ -85,7 +85,7 @@ prop_resolution_commutative() -> raw_manifest() -> ?MANIFEST{uuid = riak_cs_gen:bounded_uuid(), bkey = {<<"bucket">>, <<"key">>}, - object_version = <<"a">>, + vsn = <<"a">>, state = riak_cs_gen:manifest_state()}. manifest() -> diff --git a/apps/riak_cs/test/prop_riak_cs_manifest_utils.erl b/apps/riak_cs/test/prop_riak_cs_manifest_utils.erl index 8b88afdb2..e1ebdf2f3 100644 --- a/apps/riak_cs/test/prop_riak_cs_manifest_utils.erl +++ b/apps/riak_cs/test/prop_riak_cs_manifest_utils.erl @@ -72,8 +72,8 @@ prop_active_manifests() -> begin AlteredManifests = lists:map(fun(M) -> M?MANIFEST{uuid = uuid:get_v4()} end, Manifests), AsDict = orddict:from_list([{M?MANIFEST.uuid, M} || M <- AlteredManifests]), - ToGcUUIDs = lists:sort(riak_cs_manifest_utils:deleted_while_writing(AsDict)), - Active = riak_cs_manifest_utils:active_manifest(AsDict), + ToGcUUIDs = lists:sort(rcs_common_manifest_utils:deleted_while_writing(AsDict)), + Active = rcs_common_manifest_utils:active_manifest(AsDict), case Active of {error, no_active_manifest} -> %% If no manifest is returned then there should @@ -94,6 +94,8 @@ prop_active_manifests() -> end end). +-define(PRUNE_LEEWAY_SECS, 5). + prop_prune_manifests() -> ?FORALL({Manifests, MaxCount}, {resize(50, manifests()), frequency([{9, nat()}, {1, 'unlimited'}])}, @@ -105,19 +107,19 @@ prop_prune_manifests() -> 'unlimited' -> %% We should not prune any manifests if the prune %% count is set to `unlimited'. - AsDict =:= riak_cs_manifest_utils:prune(AsDict, NowTime, MaxCount); + AsDict =:= rcs_common_manifest_utils:prune(AsDict, NowTime, MaxCount, ?PRUNE_LEEWAY_SECS); _ -> prune_helper(AsDict, NowTime, MaxCount) end end). prune_helper(AsDict, NowTime, MaxCount) -> - Pruned = riak_cs_manifest_utils:prune(AsDict, NowTime, MaxCount), - RemainingScheduledDelete = riak_cs_manifest_utils:filter_manifests_by_state(Pruned, [scheduled_delete]), + Pruned = rcs_common_manifest_utils:prune(AsDict, NowTime, MaxCount, ?PRUNE_LEEWAY_SECS), + RemainingScheduledDelete = rcs_common_manifest_utils:filter_manifests_by_state(Pruned, [scheduled_delete]), RemainingScheduledDeleteUUIDs = [UUID || {UUID, _Mani} <- RemainingScheduledDelete], RemainingScheduledDeleteTimes = [M?MANIFEST.scheduled_delete_time || {_UUID, M} <- RemainingScheduledDelete], - AllScheduledDelete = riak_cs_manifest_utils:filter_manifests_by_state(AsDict, [scheduled_delete]), + AllScheduledDelete = rcs_common_manifest_utils:filter_manifests_by_state(AsDict, [scheduled_delete]), DroppedScheduledDelete = orddict:filter(fun (UUID, _) -> not lists:member(UUID, RemainingScheduledDeleteUUIDs) end, AllScheduledDelete), DroppedScheduledDeleteTimes = [M?MANIFEST.scheduled_delete_time || {_UUID, M} <- DroppedScheduledDelete], diff --git a/apps/riak_cs/test/riak_cs_dummy_reader.erl b/apps/riak_cs/test/riak_cs_dummy_reader.erl index df5d86050..f3d7f814c 100644 --- a/apps/riak_cs/test/riak_cs_dummy_reader.erl +++ b/apps/riak_cs/test/riak_cs_dummy_reader.erl @@ -103,6 +103,7 @@ handle_call(get_manifest, _From, #state{bucket = Bucket, Manifest = riak_cs_lfs_utils:new_manifest( Bucket, Key, + Vsn, uuid:get_v4(), ContentLength, "application/test", diff --git a/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl b/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl index c5f9ea926..5a69cc290 100644 --- a/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl +++ b/apps/riak_cs/test/riak_cs_dummy_riak_client_list_objects_v2.erl @@ -167,6 +167,6 @@ manifests_to_robjs(Manifests) -> %% TODO: Metadatas manifest_to_robj(?MANIFEST{bkey={Bucket, Key}, uuid=UUID}=M) -> - Dict = riak_cs_manifest_utils:new_dict(UUID, M), + Dict = rcs_common_manifest_utils:new_dict(UUID, M), ManifestBucket = riak_cs_utils:to_bucket_name(objects, Bucket), riakc_obj:new(ManifestBucket, Key, riak_cs_utils:encode_term(Dict)). diff --git a/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl b/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl index a7e11c0b3..6e420b41b 100644 --- a/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl +++ b/apps/riak_cs/test/riak_cs_s3_rewrite_test.erl @@ -126,153 +126,153 @@ rewrite_path(Mod) -> rewrite_with(Mod, 'POST', headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/?delete")), %% Object Operations - equal_paths("/buckets/testbucket/objects/testobject", + equal_paths("/buckets/testbucket/objects/testobject/versions/null", rewrite_with(Mod, headers([]), "/testbucket/testobject")), - equal_paths("/buckets/testbucket/objects/testdir%2F", + equal_paths("/buckets/testbucket/objects/testdir%2F/versions/null", rewrite_with(Mod, headers([]), "/testbucket/testdir/")), - equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject", + equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject/versions/null", rewrite_with(Mod, headers([]), "/testbucket/testdir/testobject")), - equal_paths("/buckets/testbucket/objects/testobject", + equal_paths("/buckets/testbucket/objects/testobject/versions/null", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testobject")), - equal_paths("/buckets/testbucket/objects/testdir%2F", + equal_paths("/buckets/testbucket/objects/testdir%2F/versions/null", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testdir/")), - equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject", + equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject/versions/null", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testdir/testobject")), - equal_paths("/buckets/testbucket/objects/testobject/acl", + equal_paths("/buckets/testbucket/objects/testobject/versions/null/acl", rewrite_with(Mod, headers([]), "/testbucket/testobject?acl")), - equal_paths("/buckets/testbucket/objects/testdir%2F/acl", + equal_paths("/buckets/testbucket/objects/testdir%2F/versions/null/acl", rewrite_with(Mod, headers([]), "/testbucket/testdir/?acl")), - equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject/acl", + equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject/versions/null/acl", rewrite_with(Mod, headers([]), "/testbucket/testdir/testobject?acl")), - equal_paths("/buckets/testbucket/objects/testobject/acl", + equal_paths("/buckets/testbucket/objects/testobject/versions/null/acl", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testobject?acl")), - equal_paths("/buckets/testbucket/objects/testdir%2F/acl", + equal_paths("/buckets/testbucket/objects/testdir%2F/versions/null/acl", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testdir/?acl")), - equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject/acl", + equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject/versions/null/acl", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testdir/testobject?acl")), - equal_paths("/buckets/testbucket/objects/testobject/uploads", + equal_paths("/buckets/testbucket/objects/testobject/versions/null/uploads", rewrite_with(Mod, headers([]), "/testbucket/testobject?uploads")), - equal_paths("/buckets/testbucket/objects/testobject/uploads", + equal_paths("/buckets/testbucket/objects/testobject/versions/null/uploads", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testobject?uploads")), - equal_paths("/buckets/testbucket/objects/testobject/uploads/2", + equal_paths("/buckets/testbucket/objects/testobject/versions/null/uploads/2", rewrite_with(Mod, headers([]), "/testbucket/testobject?uploadId=2")), - equal_paths("/buckets/testbucket/objects/testobject/uploads/2", + equal_paths("/buckets/testbucket/objects/testobject/versions/null/uploads/2", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testobject?uploadId=2")), - equal_paths("/buckets/testbucket/objects/testobject/uploads/2?partNumber=1", + equal_paths("/buckets/testbucket/objects/testobject/versions/null/uploads/2?partNumber=1", rewrite_with(Mod, headers([]), "/testbucket/testobject?partNumber=1&uploadId=2")), - equal_paths("/buckets/testbucket/objects/testobject/uploads/2?partNumber=1", + equal_paths("/buckets/testbucket/objects/testobject/versions/null/uploads/2?partNumber=1", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testobject?partNumber=1&uploadId=2")), - equal_paths("/buckets/testbucket/objects/testobject/uploads/2?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" + equal_paths("/buckets/testbucket/objects/testobject/versions/null/uploads/2?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" "&Expires=1364406757&Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D", rewrite_with(Mod, headers([]), "/testbucket/testobject?Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D" "&Expires=1364406757&AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR&uploadId=2")), - equal_paths("/buckets/testbucket/objects/testobject/uploads/2?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" + equal_paths("/buckets/testbucket/objects/testobject/versions/null/uploads/2?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" "&Expires=1364406757&Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testobject?Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D" "&Expires=1364406757&AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR&uploadId=2")), - equal_paths("/buckets/testbucket/objects/testobject/uploads/2?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" + equal_paths("/buckets/testbucket/objects/testobject/versions/null/uploads/2?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" "&Expires=1364406757&Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D&partNumber=1", rewrite_with(Mod, headers([]), "/testbucket/testobject?Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D" "&Expires=1364406757&AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR&partNumber=1&uploadId=2")), - equal_paths("/buckets/testbucket/objects/testobject/uploads/2?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" + equal_paths("/buckets/testbucket/objects/testobject/versions/null/uploads/2?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" "&Expires=1364406757&Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D&partNumber=1", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testobject?Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D" "&Expires=1364406757&AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR&partNumber=1&uploadId=2")), - equal_paths("/buckets/testbucket/objects/testobject?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" + equal_paths("/buckets/testbucket/objects/testobject/versions/null?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" "&Expires=1364406757&Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D", rewrite_with(Mod, headers([]), "/testbucket/testobject?Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D" "&Expires=1364406757&AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR")), - equal_paths("/buckets/testbucket/objects/testobject?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" + equal_paths("/buckets/testbucket/objects/testobject/versions/null?AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR" "&Expires=1364406757&Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D", rewrite_with(Mod, headers([{"host", "testbucket." ++ ?ROOT_HOST}]), "/testobject?Signature=x%2B0vteNN1YillZNw4yDGVQWrT2s%3D" "&Expires=1364406757&AWSAccessKeyId=BF_BI8XYKFJSIW-NNAIR")), %% Urlencoded path-style bucketname. - equal_paths("/buckets/testbucket/objects/testobject", + equal_paths("/buckets/testbucket/objects/testobject/versions/null", rewrite_with(Mod, headers([]), "/%74estbucket/testobject")), - equal_paths("/buckets/testbucket/objects/path%2Ftestobject", + equal_paths("/buckets/testbucket/objects/path%2Ftestobject/versions/null", rewrite_with(Mod, headers([]), "/%74estbucket/path/testobject")). strict_rewrite_path(Mod) -> - equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%252Bplus", + equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%252Bplus/versions/null", rewrite_with(Mod, headers([]), "/testbucket/testdir/testobject%2Bplus")), - equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%2Bplus", + equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%2Bplus/versions/null", rewrite_with(Mod, headers([]), "/testbucket/testdir/testobject+plus")), - equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%25%2500", + equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%25%2500/versions/null", rewrite_with(Mod, headers([]), "/testbucket/testdir/testobject%%00")). %% This should be buggy behaviour but also we have to preserve old behaviour legacy_rewrite_path(Mod) -> - equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%2Bplus", + equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%2Bplus/versions/null", rewrite_with(Mod, headers([]), "/testbucket/testdir/testobject%2Bplus")), - equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject+plus", + equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject+plus/versions/null", rewrite_with(Mod, headers([]), "/testbucket/testdir/testobject+plus")), - equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%2Bplus", + equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%2Bplus/versions/null", rewrite_with(Mod, headers([]), "/testbucket/testdir/testobject%2Bplus")), - equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%25%00", + equal_paths("/buckets/testbucket/objects/testdir%2Ftestobject%25%00/versions/null", rewrite_with(Mod, headers([]), "/testbucket/testdir/testobject%%00")). From c1b0e41e0ed5ec81729baea3ae92b6dcc3fcf830 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 3 Jan 2022 23:15:38 +0200 Subject: [PATCH 288/831] deal with dialyzer warnings Removing case clause in riak_cs_mb_helper:set_bag_id_to_manifest/1 is safe as any manifests read by 3.0 will have been upgraded, whereby props will be set to [] if it is originally undefined. --- apps/riak_cs/src/riak_cs_console.erl | 2 +- apps/riak_cs/src/riak_cs_mb_helper.erl | 12 ++++-------- apps/riak_cs/src/riak_cs_mp_utils.erl | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_console.erl b/apps/riak_cs/src/riak_cs_console.erl index 5aa21f2b1..6f904003b 100644 --- a/apps/riak_cs/src/riak_cs_console.erl +++ b/apps/riak_cs/src/riak_cs_console.erl @@ -112,7 +112,7 @@ rand_str(N) -> put_object(Bucket, Key, Value, Acl, RcPid) -> Args = [{Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION, - size(Value), "application/octet-stream", + size(Value), <<"application/octet-stream">>, [], riak_cs_lfs_utils:block_size(), Acl, timer:seconds(60), self(), RcPid}], {ok, Pid} = riak_cs_put_fsm_sup:start_put_fsm(node(), Args), ok = riak_cs_put_fsm:augment_data(Pid, Value), diff --git a/apps/riak_cs/src/riak_cs_mb_helper.erl b/apps/riak_cs/src/riak_cs_mb_helper.erl index 0b72f11d9..98160bbd2 100644 --- a/apps/riak_cs/src/riak_cs_mb_helper.erl +++ b/apps/riak_cs/src/riak_cs_mb_helper.erl @@ -58,14 +58,10 @@ set_bag_id_to_manifest(BagId, ?MANIFEST{props = Props} = Manifest) -spec bag_id_from_manifest(lfs_manifest()) -> bag_id(). bag_id_from_manifest(?MANIFEST{props = Props}) -> - case Props of - undefined -> - undefined; - _ -> - case lists:keyfind(block_bag, 1, Props) of - false -> undefined; - {block_bag, BagId} -> BagId - end + case lists:keyfind(block_bag, 1, Props) of + false -> undefined; + {block_bag, BagId} -> BagId + end. -spec cluster_id(bag_id()) -> cluster_id(). diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 007390a4e..10d0a2aeb 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -122,7 +122,7 @@ clean_multipart_unused_parts(?MANIFEST{bkey = {Bucket, Key}, -spec complete_multipart_upload(binary(), binary(), binary(), - binary(), binary(), string(), nopid | pid()) -> + binary(), [{integer(), binary()}], acl_owner3(), nopid | pid()) -> {ok, lfs_manifest()} | {error, atom()}. complete_multipart_upload(Bucket, Key, Vsn, UploadId, PartETags, Caller, RcPidUnW) -> Extra = {PartETags}, From a060dc74c4876316f23fa6f9671f8ea3e217b6cb Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 4 Jan 2022 11:01:30 +0200 Subject: [PATCH 289/831] bump rcs_common to 3.0.3 --- rebar.config | 2 +- rebar.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index 04dcc5030..8bc7f0750 100644 --- a/rebar.config +++ b/rebar.config @@ -32,7 +32,7 @@ , {riak_repl_pb_api,".*", {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.8"}}} , {riak_cs_multibag,".*", {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.6"}}} , {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} - , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.2"}}} + , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.3"}}} ] }. diff --git a/rebar.lock b/rebar.lock index f59e2d279..33174c21f 100644 --- a/rebar.lock +++ b/rebar.lock @@ -37,7 +37,7 @@ 1}, {<<"rcs_common">>, {git,"https://github.com/TI-Tokyo/rcs_common.git", - {ref,"5936595fc05bf13325590c88e7f3c561ff48a210"}}, + {ref,"d968d008372052482632886d763188d20d470cc8"}}, 0}, {<<"riak_cs_multibag">>, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", From 2fb3b8d54de3a275d74155349b9d2da27da8ca23 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 4 Jan 2022 11:01:55 +0200 Subject: [PATCH 290/831] group dialyzer under test target --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 625601a59..734619080 100644 --- a/Makefile +++ b/Makefile @@ -61,10 +61,10 @@ relclean: ## ## test targets ## -test: eunit proper - -eunit: +test: $(REBAR) eunit + $(REBAR) dialyzer + ## ## Developer targets From 9dbf71c789284266430989186241afcda7a179fa Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 4 Jan 2022 12:03:40 +0200 Subject: [PATCH 291/831] spruce up RELEASE-NOTES.md, prepare for release --- README.md | 4 ++- RELEASE-NOTES.md | 75 ++++++++++++++++++++++++++---------------------- rebar.config | 2 +- 3 files changed, 45 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index bc2159dc7..cf83f862b 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ using Riak CS. For more information, browse the following files: - README: this file - LICENSE: the license under which Riak CS is released +- RELEASE-NOTES: new features and changes for each release. # Operation @@ -56,7 +57,8 @@ These components need to be properly configured, at a minimum: ## Starting order -Riak must be started before Riak CS and Stanchion. +Riak must be started before Riak CS and Stanchion. Also, Stanchion +must be running before Riak CS can begin to serve user requests. ## Users and administrative access diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index d0c7aa168..731f752af 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,8 +1,8 @@ # Riak CS 3.0.0 Release Notes -Released November 11, 2021. +Released January 11, 2022. -## General Information +## General This release was originally envisaged as an uplift of 2.1.2 to OTP-22 and rebar3. There were no known critical bugs that needed fixing. We did, @@ -15,7 +15,39 @@ Bundle](https://github.com/TI-Tokyo/riak_cs_service_bundle), as a convenient way to set up the full Riak CS suite locally. All principal repositories are in [TI Tokyo -org](https://github.com/TI-Tokyo) on Gihub. +org](https://github.com/TI-Tokyo) on Github. + +## New features + +* Support for [object + versions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html), + including new S3 API calls: + - [`GetBucketVersioning`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html) + and + [`PutBucketVersioning`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html); + - [`ListObjectVersions`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html). + - For buckets with versioning enabled, `GetObject` will return the + specific version if it is given in the request, or the `null` + version if it is not. + - As a Riak CS extension, rather than generating a random id for the + new version, `PutObject` will read a `versionId` from header + `x-rcs-versionid`, and use that instead. +* Riak CS Suite as a [Docker + service](https://github.com/TI-Tokyo/riak_cs_service_bundle), + allowing the (prospective) users quickly to bring up a fully functional Riak + CS cluster running locally, complete with Riak CS Control, and + - properly configured and set up with a new user, whose credentials + will be shown; + - with riak data persisted. +* Packaging: + - New packages are provided for FreeBSD 13 and OSX 14 (in the latter + case, the package is the result of `make rel` tarred; no special + user is created). + - Packages have been verified for Centos 7 and 8, Debian 8 and 11, + FreeBSD 13 and OSX 14. +* `riak-cs-admin` has got a new option, `test`, which creates a bucket + and performs a basic write-read-delete cycle in it (useful to test + that the riak cluster is configured properly for use with Riak CS). ## Changes @@ -26,12 +58,9 @@ org](https://github.com/TI-Tokyo) on Gihub. * A change of internal structures needed to support object versions, meaning downgrade to 2.x is no longer possible (even if the objects created with 3.0 have no versions). Upgrade from 2.x is possible. -* The new rpm and deb packages are built for Centos 8 and Debian 11, - which in each case rely on systemd (old-style SysV init scripts are - no longer included). -* `riak-cs-admin` has got a new option, `test`, which creates a bucket - and performs a basic write-read-delete cycle in it (useful to test - that the riak cluster is configured properly for use with Riak CS). +* Packaging: + - The rpm and deb packages now rely on systemd (old-style SysV init + scripts are no longer included). ### Other changes @@ -41,7 +70,7 @@ org](https://github.com/TI-Tokyo) on Gihub. additions](https://github.com/TI-Tokyo/riak_cs_multibag)), has been upgraded to OTP-22/rebar3 and moved into a separate project, [riak_cs_test](https://github.com/TI-Tokyo/riak_cs_test). - - A new batch of tests is written for `s3cmd` as a client. + - A new battery of tests is written for `s3cmd` as a client. - The Python client tests have been upgraded to boto3 and python-3.9. * A refactoring of code shared between Riak CS and stanchion resulted in that code being collected into a separate dependency, @@ -52,29 +81,6 @@ org](https://github.com/TI-Tokyo) on Gihub. * All EQC tests have been converted to use PropEr (no shortcuts taken, all coverage is preserved). -## New features - -* Support for [object - versions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html), - including new S3 API calls: - - [`GetBucketVersioning`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html) - and - [`PutBucketVersioning`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html); - - [`ListObjectVersions`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html). - - For buckets with versioning enabled, `GetObject` will return the - specific version if it is given in the request, or the `null` - version if it is not. - - As a Riak CS extension, rather than generating a random id for the - new version, `PutObject` will read a `versionId` from header - `x-rcs-versionid`, and use that instead. -* Riak CS Suite as a [Docker - service](https://github.com/TI-Tokyo/riak_cs_service_bundle), - allowing the (prospective) users quickly to bring up a fully functional Riak - CS cluster running locally, complete with Riak CS Control, and - - properly configured and set up with a new user, whose credentials - will be shown; - - with riak data persisted. - ## Upgrading Existing data in the riak cluster underlying a 2.x instance of Riak CS @@ -87,7 +93,8 @@ that database cannot be used again with 2.x. Riak CS 3.0 has been tested with Riak versions 2.2.6, 2.9.8 through .10, and 3.0.7 and .9. It requires Stanchion 3.0.0 (2.x versions not -supported due to a change in manifest record). +supported due to a change in the manifest record). + # Riak CS 2.1.2 Release Notes diff --git a/rebar.config b/rebar.config index 8bc7f0750..0cafd37c8 100644 --- a/rebar.config +++ b/rebar.config @@ -37,7 +37,7 @@ }. -{relx, [ {release, {'riak-cs', "3.0"}, +{relx, [ {release, {'riak-cs', "3.0.0"}, [ sasl , riak_cs ] From 3b561a29bce85448e80f876ca9dd69bc51e0959f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 15 Feb 2022 01:12:25 +0200 Subject: [PATCH 292/831] modern child_spec maps (also in riak_cs_multibag) --- apps/riak_cs/src/riak_cs_sup.erl | 113 +++++++++++++++---------------- rebar.config | 2 +- rebar.lock | 2 +- 3 files changed, 57 insertions(+), 60 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index 74b58d6fa..010d8787d 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -69,44 +69,42 @@ init([]) -> -spec process_specs() -> [supervisor:child_spec()]. process_specs() -> - BagProcessSpecs = riak_cs_mb_helper:process_specs(), - Archiver = {riak_cs_access_archiver_manager, - {riak_cs_access_archiver_manager, start_link, []}, - permanent, 5000, worker, - [riak_cs_access_archiver_manager]}, - Storage = {riak_cs_storage_d, - {riak_cs_storage_d, start_link, []}, - permanent, 5000, worker, [riak_cs_storage_d]}, - GC = {riak_cs_gc_manager, - {riak_cs_gc_manager, start_link, []}, - permanent, 5000, worker, [riak_cs_gc_manager]}, - DeleteFsmSup = {riak_cs_delete_fsm_sup, - {riak_cs_delete_fsm_sup, start_link, []}, - permanent, 5000, worker, dynamic}, - ListObjectsETSCacheSup = {riak_cs_list_objects_ets_cache_sup, - {riak_cs_list_objects_ets_cache_sup, start_link, []}, - permanent, 5000, supervisor, dynamic}, - GetFsmSup = {riak_cs_get_fsm_sup, - {riak_cs_get_fsm_sup, start_link, []}, - permanent, 5000, worker, dynamic}, - PutFsmSup = {riak_cs_put_fsm_sup, - {riak_cs_put_fsm_sup, start_link, []}, - permanent, 5000, worker, dynamic}, - DiagsSup = {riak_cs_diags, {riak_cs_diags, start_link, []}, - permanent, 5000, worker, dynamic}, - QuotaSup = {riak_cs_quota_sup, - {riak_cs_quota_sup, start_link, []}, - permanent, 5000, supervisor, dynamic}, - BagProcessSpecs ++ - [Archiver, - Storage, - GC, - ListObjectsETSCacheSup, - DeleteFsmSup, - GetFsmSup, - PutFsmSup, - DiagsSup, - QuotaSup]. + [ #{id => riak_cs_access_archiver_manager, + start => {riak_cs_access_archiver_manager, start_link, []}}, + + #{id => riak_cs_storage_d, + start => {riak_cs_storage_d, start_link, []}}, + + #{id => riak_cs_gc_manager, + start => {riak_cs_gc_manager, start_link, []}}, + + #{id => riak_cs_delete_fsm_sup, + start => {riak_cs_delete_fsm_sup, start_link, []}, + modules => dynamic}, + + #{id => riak_cs_list_objects_ets_cache_sup, + start => {riak_cs_list_objects_ets_cache_sup, start_link, []}, + type => supervisor, + modules => dynamic}, + + #{id => riak_cs_get_fsm_sup, + start => {riak_cs_get_fsm_sup, start_link, []}, + modules => dynamic}, + + #{id => riak_cs_put_fsm_sup, + start => {riak_cs_put_fsm_sup, start_link, []}, + modules => dynamic}, + + #{id => riak_cs_diags, + start => {riak_cs_diags, start_link, []}, + modules => dynamic}, + + #{id => riak_cs_quota_sup, + start => {riak_cs_quota_sup, start_link, []}, + modules => dynamic}] + + ++ riak_cs_mb_helper:process_specs(). + -spec get_option_val({atom(), term()} | atom()) -> {atom(), term()}. get_option_val({Option, Default}) -> @@ -144,15 +142,14 @@ pool_specs(Options) -> rc_pool_specs(Options) -> WorkerStop = fun(Worker) -> riak_cs_riak_client:stop(Worker) end, MasterPools = proplists:get_value(connection_pools, Options), - [{Name, - {poolboy, start_link, [[{name, {local, Name}}, - {worker_module, riak_cs_riak_client}, - {size, Workers}, - {max_overflow, Overflow}, - {stop_fun, WorkerStop}], - []]}, - permanent, 5000, worker, [poolboy]} || - {Name, {Workers, Overflow}} <- MasterPools]. + [#{id => Name, + start => {poolboy, start_link, [[{name, {local, Name}}, + {worker_module, riak_cs_riak_client}, + {size, Workers}, + {max_overflow, Overflow}, + {stop_fun, WorkerStop}], + []]}} + || {Name, {Workers, Overflow}} <- MasterPools]. pbc_pool_specs(Options) -> WorkerStop = fun(Worker) -> riak_cs_riakc_pool_worker:stop(Worker) end, @@ -172,20 +169,20 @@ pbc_pool_specs(Options) -> supervisor:child_spec(). pbc_pool_spec(BagId, Fixed, Overflow, Address, Port, WorkerStop) -> Name = riak_cs_riak_client:pbc_pool_name(BagId), - {Name, - {poolboy, start_link, [[{name, {local, Name}}, - {worker_module, riak_cs_riakc_pool_worker}, - {size, Fixed}, - {max_overflow, Overflow}, - {stop_fun, WorkerStop}], - [{address, Address}, {port, Port}]]}, - permanent, 5000, worker, [poolboy]}. + #{id => Name, + start => {poolboy, start_link, [[{name, {local, Name}}, + {worker_module, riak_cs_riakc_pool_worker}, + {size, Fixed}, + {max_overflow, Overflow}, + {stop_fun, WorkerStop}], + [{address, Address}, + {port, Port}]]}}. -spec web_spec(atom(), proplist()) -> supervisor:child_spec(). web_spec(Name, Config) -> - {Name, - {webmachine_mochiweb, start, [Config]}, - permanent, 5000, worker, dynamic}. + #{id => Name, + start => {webmachine_mochiweb, start, [Config]}, + modules => dynamic}. -spec object_web_config(proplist()) -> proplist(). object_web_config(Options) -> diff --git a/rebar.config b/rebar.config index 0cafd37c8..0d03ef460 100644 --- a/rebar.config +++ b/rebar.config @@ -30,7 +30,7 @@ , {poolboy, "0.8.*", {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, ".*", {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {riak_repl_pb_api,".*", {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.8"}}} - , {riak_cs_multibag,".*", {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.6"}}} + , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.7"}}} , {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.3"}}} ] diff --git a/rebar.lock b/rebar.lock index 33174c21f..59cc8e0d1 100644 --- a/rebar.lock +++ b/rebar.lock @@ -41,7 +41,7 @@ 0}, {<<"riak_cs_multibag">>, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", - {ref,"4bbb50de791f6b05adf1d92eb3845fbe6606d348"}}, + {ref,"e9872b8ebbd34fe1c3963c6e44f2b52778745f88"}}, 0}, {<<"riak_pb">>, {git,"git://github.com/basho/riak_pb.git", From cb5ada890673656b2a8d78be75c2e0bc4e2abecd Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 15 Feb 2022 01:13:16 +0200 Subject: [PATCH 293/831] increase timeout in prop_riak_cs_get_fsm, for slow machines --- apps/riak_cs/test/prop_riak_cs_get_fsm.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/riak_cs/test/prop_riak_cs_get_fsm.erl b/apps/riak_cs/test/prop_riak_cs_get_fsm.erl index 3d134ebac..8e2f95594 100644 --- a/apps/riak_cs/test/prop_riak_cs_get_fsm.erl +++ b/apps/riak_cs/test/prop_riak_cs_get_fsm.erl @@ -68,7 +68,7 @@ proper_test_() -> fun setup/0, fun cleanup/1, [%% Run the quickcheck tests - {timeout, 30, + {timeout, 60, ?_assertEqual(true, proper:quickcheck(?QC_OUT(prop_get_fsm())))} ] } From c34020b26b32724db8ab3715978799230f8240f5 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 15 Feb 2022 01:13:59 +0200 Subject: [PATCH 294/831] ifdef out code used in tests only --- apps/riak_cs/src/riak_cs_get_fsm.erl | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl index 08e62b536..cbd1383dc 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm.erl @@ -125,6 +125,8 @@ chunk(Pid, ChunkSeq, ChunkValue) -> %% gen_fsm callbacks %% ==================================================================== +-ifndef(TEST). + init([Bucket, Key, ObjVsn, Caller, RcPid, FetchConcurrency, BufferFactor]) when is_binary(Bucket), is_binary(Key), is_pid(Caller), is_pid(RcPid), @@ -148,6 +150,25 @@ init([Bucket, Key, ObjVsn, Caller, RcPid, FetchConcurrency, BufferFactor]) %% an exit Reason of `noproc` process_flag(trap_exit, true), + State = #state{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn, + caller = CallerRef, + riak_client = RcPid, + buffer_factor = BufferFactor, + fetch_concurrency = FetchConcurrency}, + {ok, prepare, State, 0}. + +-else. + +init([Bucket, Key, ObjVsn, Caller, RcPid, FetchConcurrency, BufferFactor]) + when is_binary(Bucket), is_binary(Key), is_pid(Caller), + is_pid(RcPid), + FetchConcurrency > 0, BufferFactor > 0 -> + + CallerRef = erlang:monitor(process, Caller), + process_flag(trap_exit, true), + State = #state{bucket = Bucket, key = Key, obj_vsn = ObjVsn, @@ -156,6 +177,7 @@ init([Bucket, Key, ObjVsn, Caller, RcPid, FetchConcurrency, BufferFactor]) buffer_factor = BufferFactor, fetch_concurrency = FetchConcurrency}, {ok, prepare, State, 0}; + init([test, Bucket, Key, Caller, ContentLength, BlockSize, FetchConcurrency, BufferFactor]) -> {ok, prepare, State1, 0} = init([Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION, Caller, self(), @@ -180,6 +202,8 @@ init([test, Bucket, Key, Caller, ContentLength, manifest=Manifest, test=true}}. +-endif. + prepare(timeout, State) -> NewState = prepare(State), {next_state, waiting_value, NewState}. From ee876469100b25ce2ce70eb4afec8ed4f9dd50ff Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 15 Feb 2022 01:16:19 +0200 Subject: [PATCH 295/831] trivial housekeeping in rebar.config --- rebar.config | 142 ++++++++++++++++++++++++++++----------------------- 1 file changed, 79 insertions(+), 63 deletions(-) diff --git a/rebar.config b/rebar.config index 0d03ef460..794baf9bb 100644 --- a/rebar.config +++ b/rebar.config @@ -25,11 +25,11 @@ , {webmachine, "1.11.1"} , {mochiweb, "v2.20.1"} , {exometer_core, "v1.5.7"} - , {uuid, ".*", {git, "https://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} - , {riakc, ".*", {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.8+p1"}}} - , {poolboy, "0.8.*", {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} - , {cluster_info, ".*", {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {riak_repl_pb_api,".*", {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.8"}}} + , {uuid, {git, "https://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} + , {riakc, {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.8+p1"}}} + , {poolboy, {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} + , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} + , {riak_repl_pb_api, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.8"}}} , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.7"}}} , {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.3"}}} @@ -42,7 +42,6 @@ , riak_cs ] } - , {dev_mode, false} , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} , {template, "rel/files/riak-cs", "usr/bin/riak-cs"} , {template, "rel/files/riak-cs-admin", "bin/riak-cs-admin"} @@ -67,63 +66,80 @@ ] }. -{profiles, [ {rel, [ {relx, [ {overlay_vars, "rel/vars.config"} - , {mode, prod} - ] - } - ] - } - , {dev, [ {relx, [ {dev_mode, true} - ] - } - ] - } - , {test, [ {deps, [ {proper, "1.4.0"} - , {erlcloud, ".*", {git, "https://github.com/TI-Tokyo/erlcloud.git", {tag, "0.4.7"}}} - ] - } - ] - } - , {rpm, [ {relx, [ {overlay_vars, "rel/pkg/rpm/vars.config"} - , {mode, prod} - ] - } - ] - } - , {deb, [ {relx, [ {overlay_vars, "rel/pkg/deb/vars.config"} - , {mode, prod} - ] - } - ] - } - , {fbsdng, [ {relx, [ {overlay_vars, "rel/pkg/fbsdng/vars.config"} - , {mode, prod} - , {extended_start_script_hooks, - [ {post_start, - [ wait_for_vm_start - %% relx won't write this pid - %% (we do it in lancher script - %% instead, because of - %% that). Let's leave it here - %% in hope one day relx will - , {pid, "/var/run/riak-cs/riak-cs.pid"} - , {wait_for_process, stanchion_server_sup} - ] - } - ] - } - ] - } - ] - } - %% it's essentially `make rel` tarred - , {osx, [ {relx, [ {overlay_vars, "rel/pkg/osx/vars.config"} - , {mode, prod} - ] - } - ] - } - ] +{profiles, + [ {rel, + [ {relx, + [ {mode, prod} + , {overlay_vars, "rel/vars.config"} + ] + } + ] + } + + , {dev, + [ {relx, [{mode, dev}]} + ] + } + + , {test, + [ {relx, [{mode, dev}]} + , {deps, + [ {proper, "1.4.0"} + , {erlcloud, {git, "https://github.com/TI-Tokyo/erlcloud.git", {tag, "0.4.7"}}} + ] + } + ] + } + + , {rpm, + [ {relx, + [ {mode, prod} + , {overlay_vars, "rel/pkg/rpm/vars.config"} + ] + } + ] + } + + , {deb, + [ {relx, + [ {mode, prod} + , {overlay_vars, "rel/pkg/deb/vars.config"} + ] + } + ] + } + + , {fbsdng, + [ {relx, + [ {mode, prod} + , {overlay_vars, "rel/pkg/fbsdng/vars.config"} + , {extended_start_script_hooks, + [ {post_start, + [ wait_for_vm_start + %% relx won't write this pid (we do it in lancher + %% script instead, because of that). Let's leave it + %% here in hope one day relx will + , {pid, "/var/run/riak-cs/riak-cs.pid"} + , {wait_for_process, stanchion_server_sup} + ] + } + ] + } + ] + } + ] + } + + %% it's essentially `make rel` tarred + , {osx, + [ {relx, + [ {mode, prod} + , {overlay_vars, "rel/pkg/osx/vars.config"} + ] + } + ] + } + ] }. From 4676ced183aaf70fc65c3c11ea4f57b6758f3efc Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 15 Feb 2022 01:41:15 +0200 Subject: [PATCH 296/831] alpine target groundwork --- Makefile | 9 ++++-- rebar.config | 16 ++++++++++ rel/pkg/alpine/riak-cs.nosu | 58 +++++++++++++++++++++++++++++++++++++ rel/pkg/alpine/vars.config | 55 +++++++++++++++++++++++++++++++++++ 4 files changed, 136 insertions(+), 2 deletions(-) create mode 100755 rel/pkg/alpine/riak-cs.nosu create mode 100644 rel/pkg/alpine/vars.config diff --git a/Makefile b/Makefile index 734619080..c38d54650 100644 --- a/Makefile +++ b/Makefile @@ -48,8 +48,13 @@ rel-fbsdng: compile relclean @cp -a _build/fbsdng/rel/riak-cs rel/ rel-osx: compile relclean - $(REBAR) as osx release - cp -a _build/osx/rel/riak-cs rel/ + @$(REBAR) as osx release + @cp -a _build/osx/rel/riak-cs rel/ + +rel-alpine: compile relclean + @$(REBAR) as alpine release + @(cd _build/alpine/rel/riak-cs/usr/bin && mv riak-cs.nosu riak-cs) + @cp -a _build/alpine/rel/riak-cs rel/ rel-docker: compile relclean @REBAR_CONFIG=rebar.docker.config $(REBAR) release diff --git a/rebar.config b/rebar.config index 794baf9bb..99a449a47 100644 --- a/rebar.config +++ b/rebar.config @@ -130,6 +130,22 @@ ] } + , {alpine, + [ {relx, + [ {mode, prod} + , {overlay_vars, "rel/pkg/alpine/vars.config"} + , {overlay, + [ {template, "rel/pkg/alpine/riak-cs.nosu", "usr/bin/riak-cs.nosu"} + %% to be renamed to riak-cs in Makefile. We would rather + %% have a special version of riak-cs in pkg/alpine dir, + %% but relx seems to give precedence to to the template + %% entry in the common section. + ]} + ] + } + ] + } + %% it's essentially `make rel` tarred , {osx, [ {relx, diff --git a/rel/pkg/alpine/riak-cs.nosu b/rel/pkg/alpine/riak-cs.nosu new file mode 100755 index 000000000..e8e821947 --- /dev/null +++ b/rel/pkg/alpine/riak-cs.nosu @@ -0,0 +1,58 @@ +#!/bin/bash + +RUNNER_GEN_DIR={{platform_gen_dir}} +RELX_RIAK={{platform_bin_dir}}/riak-cs +export PID_DIR={{pid_dir}} +export PIPE_DIR={{pipe_dir}}/ # terminating / (relx treats it as a prefix) + +PID_FILE=$PID_DIR/riak-cs.pid + +mkdir -p $PID_DIR $PIPE_DIR + +function write_pid_file { # relx doesn't write the pid file + local c=3 + sleep 1 + while [[ $c -ne 0 ]]; do + if [ "`${RELX_RIAK} ping`" = "pong" ]; then + ${RELX_RIAK} pid >$PID_FILE + break + fi + sleep 2 + c=$(($c - 1)) + done +} + +function delete_pid_file { + rm -f $PID_FILE +} + +case "$1" in + start) + $RELX_RIAK $* -pa {{platform_patch_dir}} \ + && write_pid_file + test -r $PID_FILE && exit 0 + ;; + console|foreground) + $RELX_RIAK $* -pa {{platform_patch_dir}} + ;; + stop) + $RELX_RIAK $* \ + && delete_pid_file + ;; + admin) + shift + riak-cs-admin $* + ;; + supercluster) + shift + riak-cs-supercluster $* + ;; + debug) + shift + riak-cs-debug $* + ;; + *) + ESCAPED_ARGS=`echo "$@" | sed -e 's/\([\\\(\\\){}"\x27]\)/\\\\\1/g'` + $RELX_RIAK $ESCAPED_ARGS + ;; +esac diff --git a/rel/pkg/alpine/vars.config b/rel/pkg/alpine/vars.config new file mode 100644 index 000000000..53ba56d7f --- /dev/null +++ b/rel/pkg/alpine/vars.config @@ -0,0 +1,55 @@ +%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- +%% ex: ft=erlang ts=4 sw=4 et + +{rel_vsn, "{{release_version}}"}. + +%% Platform-specific installation paths +{platform_bin_dir, "/usr/lib/riak-cs/bin"}. +{platform_data_dir, "/var/lib/riak-cs"}. +{platform_etc_dir, "/etc/riak-cs"}. +{platform_base_dir, "/usr/lib/riak-cs"}. +{platform_lib_dir, "/usr/lib/riak-cs/lib"}. +{platform_log_dir, "/var/log/riak-cs"}. +{platform_gen_dir, "{{platform_data_dir}}"}. +{platform_patch_dir, "{{platform_lib_dir}}/patches"}. + +%% +%% riak-cs.conf +%% +{cs_ip, "127.0.0.1"}. +{cs_port, 8080}. +{admin_ip, "127.0.0.1"}. +{admin_port, 8000}. +{riak_ip, "127.0.0.1"}. +{riak_pb_port, 8087}. +{auth_bypass, false}. +{admin_key, "admin-key"}. +{stanchion_ip, "127.0.0.1"}. +{stanchion_port, 8085}. +{stanchion_ssl, off}. +{cs_version, 030000}. +{rewrite_module, riak_cs_s3_rewrite}. +{auth_module, riak_cs_s3_auth}. + +{node, "riak-cs@127.0.0.1"}. +{crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. + +{pipe_dir, "/tmp/riak-cs"}. +{pid_dir, "/run/riak-cs"}. + +{sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. +{sasl_log_dir, "{{platform_log_dir}}/sasl"}. + +%% +%% cuttlefish +%% +{cuttlefish, "on"}. +{cuttlefish_conf, "riak-cs.conf"}. + +%% lager +{console_log_default, file}. + +%% +%% etc/vm.args +%% +{node, "riak_cs@127.0.0.1"}. From 5cae2014ea235bc84888003b0919f43323ff1dc7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 15 Feb 2022 01:41:49 +0200 Subject: [PATCH 297/831] tweak .gitignore --- .gitignore | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 01d62760c..442b40b7e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,6 @@ _build/ -.eunit/ +log/ rel/riak-cs dev/ *-riak-cs-debug.tar.gz .local_dialyzer_plt - -*~ From 4ad1688a376589707ef2ab1fbab2deda0c928485 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 15 Feb 2022 17:57:29 +0200 Subject: [PATCH 298/831] bump rcs_common --- rebar.config | 2 +- rebar.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index 99a449a47..5f806d2a8 100644 --- a/rebar.config +++ b/rebar.config @@ -32,7 +32,7 @@ , {riak_repl_pb_api, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.8"}}} , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.7"}}} , {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} - , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.3"}}} + , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.4"}}} ] }. diff --git a/rebar.lock b/rebar.lock index 59cc8e0d1..e4f753c66 100644 --- a/rebar.lock +++ b/rebar.lock @@ -37,7 +37,7 @@ 1}, {<<"rcs_common">>, {git,"https://github.com/TI-Tokyo/rcs_common.git", - {ref,"d968d008372052482632886d763188d20d470cc8"}}, + {ref,"d0443b2892cbb6e38e4478e14c429a93de26fd2f"}}, 0}, {<<"riak_cs_multibag">>, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", From 1c812b98e5c5d7f661db49bb49835a6591996a08 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 18 Mar 2022 04:20:19 +0000 Subject: [PATCH 299/831] fix: Dockerfile to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-DEBIAN11-GNUTLS28-2419151 - https://snyk.io/vuln/SNYK-DEBIAN11-OPENSSL-2388380 - https://snyk.io/vuln/SNYK-DEBIAN11-OPENSSL-2426309 - https://snyk.io/vuln/SNYK-DEBIAN11-UTILLINUX-2401081 - https://snyk.io/vuln/SNYK-DEBIAN11-UTILLINUX-2401081 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e593dd4f5..d79d2a22a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ COPY . /usr/src/riak_cs # /sys.config.src. RUN make DEBUG=1 rel-docker -FROM debian:bullseye AS runtime-image +FROM debian:11.2 AS runtime-image COPY --from=compile-image /usr/src/riak_cs/rel/riak-cs /opt/riak-cs From 4b74a68122aee400b310288e8b12aa0f0ce2de85 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 14 Apr 2022 21:37:48 +0300 Subject: [PATCH 300/831] https fix for lager_syslog --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index 5f806d2a8..6a066546d 100644 --- a/rebar.config +++ b/rebar.config @@ -31,7 +31,7 @@ , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {riak_repl_pb_api, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.8"}}} , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.7"}}} - , {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} + , {lager_syslog, {git, "https://github.com/TI-Tokyo/lager_syslog.git", {tag, "3.1.0+https"}}} , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.4"}}} ] }. From dd5123f071c1dd695703eacd2702ecc76eb96376 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 15 Apr 2022 00:35:23 +0300 Subject: [PATCH 301/831] fix rebar3_cuttlefish version --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index 6a066546d..adbe71806 100644 --- a/rebar.config +++ b/rebar.config @@ -15,7 +15,7 @@ ] }. -{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/TI-Tokyo/rebar3_cuttlefish", {tag, "2.1.2"}}} +{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/TI-Tokyo/rebar3_cuttlefish", {tag, "0.2.1"}}} , rebar3_proper ] }. From 0b60db58f67ede64602d14e11a6dfd44de9c7131 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 15 Apr 2022 00:58:47 +0300 Subject: [PATCH 302/831] bump more deps, for https:// url deps --- rebar.config | 6 +++--- rebar.lock | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/rebar.config b/rebar.config index adbe71806..a6e703441 100644 --- a/rebar.config +++ b/rebar.config @@ -29,9 +29,9 @@ , {riakc, {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.8+p1"}}} , {poolboy, {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {riak_repl_pb_api, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.8"}}} - , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.7"}}} - , {lager_syslog, {git, "https://github.com/TI-Tokyo/lager_syslog.git", {tag, "3.1.0+https"}}} + , {riak_repl_pb_api, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.9"}}} + , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.8"}}} + , {lager_syslog, {git, "https://github.com/TI-Tokyo/lager_syslog.git", {tag, "3.1.1"}}} , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.4"}}} ] }. diff --git a/rebar.lock b/rebar.lock index e4f753c66..e455d9c4c 100644 --- a/rebar.lock +++ b/rebar.lock @@ -10,12 +10,12 @@ {<<"goldrush">>,{pkg,<<"goldrush">>,<<"0.1.9">>},2}, {<<"hut">>,{pkg,<<"hut">>,<<"1.2.1">>},1}, {<<"lager">>, - {git,"git://github.com/erlang-lager/lager.git", + {git,"https://github.com/erlang-lager/lager.git", {ref,"22e62f28e5afabe90a6f31bcde367a2b5799fc94"}}, 1}, {<<"lager_syslog">>, - {git,"https://github.com/basho/lager_syslog.git", - {ref,"152bb8eb254c225ebd8c579f9603f44b50df44ec"}}, + {git,"https://github.com/TI-Tokyo/lager_syslog.git", + {ref,"e9117a7e54de35c714fa8d1e6c054854c7c697df"}}, 0}, {<<"meck">>, {git,"https://github.com/eproxus/meck.git", @@ -41,15 +41,15 @@ 0}, {<<"riak_cs_multibag">>, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", - {ref,"e9872b8ebbd34fe1c3963c6e44f2b52778745f88"}}, + {ref,"0894619b1a0e91bda97808b1a402d52c237590f0"}}, 0}, {<<"riak_pb">>, - {git,"git://github.com/basho/riak_pb.git", + {git,"https://github.com/basho/riak_pb.git", {ref,"b7abca90e4c708073021d2c4e18c896f1a10b838"}}, 1}, {<<"riak_repl_pb_api">>, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", - {ref,"edea2b7d2ca06374fef81308cd146a1f0ff15ecb"}}, + {ref,"c12d05a3d14ca7324a4243d23ad3fc7c0adc7441"}}, 0}, {<<"riakc">>, {git,"https://github.com/basho/riak-erlang-client", @@ -57,8 +57,8 @@ 0}, {<<"setup">>,{pkg,<<"setup">>,<<"2.0.2">>},1}, {<<"syslog">>, - {git,"git://github.com/Vagabond/erlang-syslog", - {ref,"4a6c6f2c996483e86c1320e9553f91d337bcb6aa"}}, + {git,"https://github.com/TI-Tokyo/erlang-syslog", + {ref,"14bef508623260a78563d529ccd08e9c259b839e"}}, 1}, {<<"uuid">>, {git,"https://github.com/okeuday/uuid.git", From 470a62bb2fe8df9f0f9a9f93882878f9d29ae673 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 15 Apr 2022 04:23:22 +0300 Subject: [PATCH 303/831] adapt to rebar3.18 recommended way to start app in systemd env --- rel/pkg/deb/debian/riak-cs.service | 4 ++-- rel/pkg/rpm/riak-cs.service | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rel/pkg/deb/debian/riak-cs.service b/rel/pkg/deb/debian/riak-cs.service index 96872266f..7f82edc20 100644 --- a/rel/pkg/deb/debian/riak-cs.service +++ b/rel/pkg/deb/debian/riak-cs.service @@ -3,9 +3,9 @@ Description=Riak CS Database [Service] User=riak_cs -ExecStart=/usr/sbin/riak-cs start +ExecStart=/usr/sbin/riak-cs foreground ExecStop=/usr/sbin/riak-cs stop -Type=exec +Type=simple PIDFile=/run/riak-cs/riak-cs.pid EnvironmentFile=-/etc/default/riak-cs RuntimeDirectory=riak-cs diff --git a/rel/pkg/rpm/riak-cs.service b/rel/pkg/rpm/riak-cs.service index 96872266f..7f82edc20 100644 --- a/rel/pkg/rpm/riak-cs.service +++ b/rel/pkg/rpm/riak-cs.service @@ -3,9 +3,9 @@ Description=Riak CS Database [Service] User=riak_cs -ExecStart=/usr/sbin/riak-cs start +ExecStart=/usr/sbin/riak-cs foreground ExecStop=/usr/sbin/riak-cs stop -Type=exec +Type=simple PIDFile=/run/riak-cs/riak-cs.pid EnvironmentFile=-/etc/default/riak-cs RuntimeDirectory=riak-cs From 16087c7be68d1dd56cfecc4e588a5054a1733178 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 15 Apr 2022 04:32:04 +0300 Subject: [PATCH 304/831] undo pid file workarounds --- rel/files/riak-cs | 41 ++--------------------------------------- 1 file changed, 2 insertions(+), 39 deletions(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index f58161b6b..42d2180f4 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -30,25 +30,6 @@ export PIPE_DIR={{pipe_dir}}/ # terminating / (relx treats it as a prefix) mkdir -p $PID_DIR $PIPE_DIR chown riak_cs:riak_cs $PID_DIR $PIPE_DIR -function write_pid_file { # relx doesn't seem to write the pid file, does it? - local c=3 - sleep 1 - while [[ $c -ne 0 ]]; do - if [ "`maybe_su ${RELX_RIAK} ping`" = "pong" ]; then - maybe_su ${RELX_RIAK} pid >$PID_DIR/riak-cs.pid - chown root $PID_DIR/riak-cs.pid 2> /dev/null \ - || true # systemd wants it to be owned by root - break - fi - sleep 2 - c=$(($c - 1)) - done -} - -function delete_pid_file { - rm -f $PID_DIR/riak-cs.pid -} - # centos7-based distros have a su that contacts pam and prints the "Last logged in" message if [ "`cat /etc/redhat-release 2>&1`" = "CentOS Stream release 8" ] || [ "`cat /etc/system-release 2>&1`" = "Amazon Linux release 2 (Karoo)" ]; then @@ -68,7 +49,6 @@ function maybe_su { # removed in order to allow any env vars to be available for # the ultimate invocation of riak/riak-cs/stanchion) cd "{{platform_base_dir}}" - # freebsd su is fairly limited, so: mkdir -p "$RUNNER_GEN_DIR" chown riak_cs:riak_cs "$RUNNER_GEN_DIR" @@ -85,28 +65,11 @@ EOF } case "$1" in - start) - maybe_su $RELX_RIAK $* -pa {{platform_patch_dir}} \ - && write_pid_file - test -r $PID_DIR/riak-cs.pid && exit 0 - ;; - console|foreground) - maybe_su $RELX_RIAK $* -pa {{platform_patch_dir}} - ;; stop) maybe_su $RELX_RIAK $* \ - && delete_pid_file - ;; - admin) - shift - maybe_su `which riak-cs-admin` $* - ;; - debug) - shift - maybe_su `which riak-cs-debug` $* + && rm -f $PID_DIR/riak-cs.pid ;; *) - ESCAPED_ARGS=`echo "$@" | sed -e 's/\([\\\(\\\){}"\x27]\)/\\\\\1/g'` - maybe_su $RELX_RIAK $ESCAPED_ARGS + maybe_su $RELX_RIAK $* ;; esac From 09b97c88f8c914680e89f6093842c3a24414c346 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 15 Apr 2022 15:18:32 +0300 Subject: [PATCH 305/831] add config/vm.args --- config/vm.args | 2 ++ rebar.lock | 91 -------------------------------------------------- 2 files changed, 2 insertions(+), 91 deletions(-) create mode 100644 config/vm.args delete mode 100644 rebar.lock diff --git a/config/vm.args b/config/vm.args new file mode 100644 index 000000000..e742798b6 --- /dev/null +++ b/config/vm.args @@ -0,0 +1,2 @@ +-setcookie riak +-name riak-cs@127.0.0.1 diff --git a/rebar.lock b/rebar.lock deleted file mode 100644 index e455d9c4c..000000000 --- a/rebar.lock +++ /dev/null @@ -1,91 +0,0 @@ -{"1.2.0", -[{<<"bear">>,{pkg,<<"bear">>,<<"0.8.7">>},2}, - {<<"cluster_info">>, - {git,"https://github.com/basho/cluster_info", - {ref,"389d43af7ac1550b3c01cd55b8147bcc0e20022f"}}, - 0}, - {<<"exometer_core">>,{pkg,<<"exometer_core">>,<<"1.5.7">>},0}, - {<<"folsom">>,{pkg,<<"folsom">>,<<"0.8.7">>},1}, - {<<"getopt">>,{pkg,<<"getopt">>,<<"1.0.2">>},0}, - {<<"goldrush">>,{pkg,<<"goldrush">>,<<"0.1.9">>},2}, - {<<"hut">>,{pkg,<<"hut">>,<<"1.2.1">>},1}, - {<<"lager">>, - {git,"https://github.com/erlang-lager/lager.git", - {ref,"22e62f28e5afabe90a6f31bcde367a2b5799fc94"}}, - 1}, - {<<"lager_syslog">>, - {git,"https://github.com/TI-Tokyo/lager_syslog.git", - {ref,"e9117a7e54de35c714fa8d1e6c054854c7c697df"}}, - 0}, - {<<"meck">>, - {git,"https://github.com/eproxus/meck.git", - {ref,"4ecc1ae9089edc6977e8c8c4cd41081513cc5590"}}, - 2}, - {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"2.20.1">>},0}, - {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.0">>},0}, - {<<"poolboy">>, - {git,"https://github.com/basho/poolboy", - {ref,"032ea3186fda78b4913deb8932af318ebb9b1258"}}, - 0}, - {<<"protobuffs">>, - {git,"https://github.com/basho/erlang_protobuffs.git", - {ref,"098efad8f85dfe556d64e2cf6ce31f2075808f67"}}, - 1}, - {<<"quickrand">>, - {git,"https://github.com/okeuday/quickrand.git", - {ref,"c80077162f32c10002219f70e0afadb71e05f88c"}}, - 1}, - {<<"rcs_common">>, - {git,"https://github.com/TI-Tokyo/rcs_common.git", - {ref,"d0443b2892cbb6e38e4478e14c429a93de26fd2f"}}, - 0}, - {<<"riak_cs_multibag">>, - {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", - {ref,"0894619b1a0e91bda97808b1a402d52c237590f0"}}, - 0}, - {<<"riak_pb">>, - {git,"https://github.com/basho/riak_pb.git", - {ref,"b7abca90e4c708073021d2c4e18c896f1a10b838"}}, - 1}, - {<<"riak_repl_pb_api">>, - {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", - {ref,"c12d05a3d14ca7324a4243d23ad3fc7c0adc7441"}}, - 0}, - {<<"riakc">>, - {git,"https://github.com/basho/riak-erlang-client", - {ref,"d9fa46335fda4704fda71cbc011ab6a11e50e3f3"}}, - 0}, - {<<"setup">>,{pkg,<<"setup">>,<<"2.0.2">>},1}, - {<<"syslog">>, - {git,"https://github.com/TI-Tokyo/erlang-syslog", - {ref,"14bef508623260a78563d529ccd08e9c259b839e"}}, - 1}, - {<<"uuid">>, - {git,"https://github.com/okeuday/uuid.git", - {ref,"9312cc158a94c76e40c82ca45fd5056fb191c889"}}, - 0}, - {<<"webmachine">>,{pkg,<<"webmachine">>,<<"1.11.1">>},0}]}. -[ -{pkg_hash,[ - {<<"bear">>, <<"16264309AE5D005D03718A5C82641FCC259C9E8F09ADEB6FD79CA4271168656F">>}, - {<<"exometer_core">>, <<"AB97E34A5D69AB14E6AE161DB4CCA5B5E655E635B842F830EE6AB2CBFCFDC30A">>}, - {<<"folsom">>, <<"A885F0AEEE4C84270954C88A55A5A473D6B2C7493E32FFDC5765412DD555A951">>}, - {<<"getopt">>, <<"33D9B44289FE7AD08627DDFE1D798E30B2DA0033B51DA1B3A2D64E72CD581D02">>}, - {<<"goldrush">>, <<"F06E5D5F1277DA5C413E84D5A2924174182FB108DABB39D5EC548B27424CD106">>}, - {<<"hut">>, <<"08D46679523043424870723923971889E8A34D63B2F946A35B46CF921D1236E7">>}, - {<<"mochiweb">>, <<"E4DBD0ED716F076366ECF62ADA5755A844E1D95C781E8C77DF1D4114BE868CDF">>}, - {<<"parse_trans">>, <<"09765507A3C7590A784615CFD421D101AEC25098D50B89D7AA1D66646BC571C1">>}, - {<<"setup">>, <<"1203F4CDA11306C2E34434244576DED0A7BBFB0908D9A572356C809BD0CDF085">>}, - {<<"webmachine">>, <<"422BEAD629F3D6C10FB0F24BE4CEE9648338F90099072AE091FADF86BA70C53F">>}]}, -{pkg_hash_ext,[ - {<<"bear">>, <<"534217DCE6A719D59E54FB0EB7A367900DBFC5F85757E8C1F94269DF383F6D9B">>}, - {<<"exometer_core">>, <<"6AFBD8F6B1AAF7443D6A5A05BBBCD15285622353550F3077C87176E25BE99C1E">>}, - {<<"folsom">>, <<"F7B644FC002A75AF00B8BFBD3CC5C2BD955E09A118D2982D9A6C04E5646FF367">>}, - {<<"getopt">>, <<"A0029AEA4322FB82A61F6876A6D9C66DC9878B6CB61FAA13DF3187384FD4EA26">>}, - {<<"goldrush">>, <<"99CB4128CFFCB3227581E5D4D803D5413FA643F4EB96523F77D9E6937D994CEB">>}, - {<<"hut">>, <<"953FC447514BAF9CC79FA147D66469243C94DFA1593779614E070C692D0BF0F3">>}, - {<<"mochiweb">>, <<"D1AEEE7870470D2FA9EAE0B3D5AB6C33801AA2D82B10E9DADE885C5C921B36AA">>}, - {<<"parse_trans">>, <<"17EF63ABDE837AD30680EA7F857DD9E7CED9476CDD7B0394432AF4BFC241B960">>}, - {<<"setup">>, <<"7D6AAF5281D0B0C40980E128F9DC410DACD03799A8577201D4C8B43E7F97509A">>}, - {<<"webmachine">>, <<"4914961217736701CADA1345D7C79C6DB50A636CF7BC6C757DE923B7C7D70B21">>}]} -]. From 6e6185a83023ef4715318fdfb6d69828735002ec Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 15 Apr 2022 16:44:14 +0300 Subject: [PATCH 306/831] restore extended_start_script_extensions --- rebar.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rebar.config b/rebar.config index a6e703441..0013df921 100644 --- a/rebar.config +++ b/rebar.config @@ -63,6 +63,12 @@ } , {generate_start_script, true} , {extended_start_script, true} + , {extended_start_script_extensions, + [ {admin, "riak-cs-admin"} + , {supercluster, "riak-supercluster"} + , {debug, "riak-debug"} + ] + } ] }. From 130fc5bf3b274b35f4d30a1833aeff36a2c78f47 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 15 Apr 2022 18:10:14 +0300 Subject: [PATCH 307/831] no rpcterms option (unused anyway) --- rel/files/riak-cs-admin | 1 - 1 file changed, 1 deletion(-) diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index e39fc0f29..0fdd7ec61 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -34,7 +34,6 @@ if [ "$PLATFORM_BIN_DIR" = "${PLATFORM_BIN_DIR#/}" ]; then fi RPC_HOP="${PLATFORM_BIN_DIR}/riak-cs rpc" -RPCt_HOP="${PLATFORM_BIN_DIR}/riak-cs rpcterms" # if we ever need to start a separate node to do fancier stuff than we # can via rpc, see how this is done in riak/rel/files/riak-admin From cea642df1b5546595226e9c3cc82189fe4f87865 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 15 Apr 2022 18:25:42 +0300 Subject: [PATCH 308/831] inconsistent node names --- rel/pkg/deb/vars.config | 3 +-- rel/pkg/rpm/vars.config | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/rel/pkg/deb/vars.config b/rel/pkg/deb/vars.config index 189145731..ad92a8e44 100644 --- a/rel/pkg/deb/vars.config +++ b/rel/pkg/deb/vars.config @@ -31,7 +31,6 @@ {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. -{node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. {pipe_dir, "/tmp/riak-cs"}. @@ -54,4 +53,4 @@ %% %% etc/vm.args %% -{node, "riak_cs@127.0.0.1"}. +{node, "riak-cs@127.0.0.1"}. diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index b7af9ab86..64e1a11e4 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -31,7 +31,6 @@ {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. -{node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. {pipe_dir, "/tmp/riak-cs"}. @@ -52,4 +51,4 @@ %% %% etc/vm.args %% -{node, "riak_cs@127.0.0.1"}. +{node, "riak-cs@127.0.0.1"}. From a8a23fe9195547ad1af2a96729b8ff87e9f9fcf0 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 15 Apr 2022 18:54:38 +0300 Subject: [PATCH 309/831] correct specs for extended_start_script_hooks --- rebar.config | 32 +++++++++++++++++++++++++------- rel/pkg/fbsdng/vars.config | 2 -- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/rebar.config b/rebar.config index 0013df921..d389ef500 100644 --- a/rebar.config +++ b/rebar.config @@ -77,6 +77,12 @@ [ {relx, [ {mode, prod} , {overlay_vars, "rel/vars.config"} + , {extended_start_script_hooks, + [ {post_start, + [{wait_for_process, riak_cs_sup}] + } + ] + } ] } ] @@ -110,6 +116,12 @@ [ {relx, [ {mode, prod} , {overlay_vars, "rel/pkg/deb/vars.config"} + , {extended_start_script_hooks, + [ {post_start, + [{wait_for_process, riak_cs_sup}] + } + ] + } ] } ] @@ -121,13 +133,7 @@ , {overlay_vars, "rel/pkg/fbsdng/vars.config"} , {extended_start_script_hooks, [ {post_start, - [ wait_for_vm_start - %% relx won't write this pid (we do it in lancher - %% script instead, because of that). Let's leave it - %% here in hope one day relx will - , {pid, "/var/run/riak-cs/riak-cs.pid"} - , {wait_for_process, stanchion_server_sup} - ] + [{wait_for_process, riak_cs_sup}] } ] } @@ -147,6 +153,12 @@ %% but relx seems to give precedence to to the template %% entry in the common section. ]} + , {extended_start_script_hooks, + [ {post_start, + [{wait_for_process, riak_cs_sup}] + } + ] + } ] } ] @@ -157,6 +169,12 @@ [ {relx, [ {mode, prod} , {overlay_vars, "rel/pkg/osx/vars.config"} + , {extended_start_script_hooks, + [ {post_start, + [{wait_for_process, riak_cs_sup}] + } + ] + } ] } ] diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config index 80821b48d..323b2db79 100644 --- a/rel/pkg/fbsdng/vars.config +++ b/rel/pkg/fbsdng/vars.config @@ -35,8 +35,6 @@ {pid_dir, "/var/run/riak-cs"}. {pipe_dir, "/tmp/riak-cs"}. -%% {runner_wait_process, "riak_cs_put_fsm_sup"}. - {console_log_default, file}. {cuttlefish, "on"}. From afdbdd0b4bd8b1936283cc3ea36551640a44ef2e Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 16 Apr 2022 00:55:05 +0300 Subject: [PATCH 310/831] drop PIPE_DIR --- rel/files/riak-cs | 5 ++--- rel/pkg/deb/vars.config | 1 - rel/pkg/fbsdng/vars.config | 1 - rel/pkg/rpm/vars.config | 1 - 4 files changed, 2 insertions(+), 6 deletions(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index 42d2180f4..dec72dc65 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -25,10 +25,9 @@ RUNNER_GEN_DIR={{platform_gen_dir}} RELX_RIAK={{platform_bin_dir}}/riak-cs export PID_DIR={{pid_dir}} -export PIPE_DIR={{pipe_dir}}/ # terminating / (relx treats it as a prefix) -mkdir -p $PID_DIR $PIPE_DIR -chown riak_cs:riak_cs $PID_DIR $PIPE_DIR +mkdir -p $PID_DIR +chown riak_cs:riak_cs $PID_DIR # centos7-based distros have a su that contacts pam and prints the "Last logged in" message if [ "`cat /etc/redhat-release 2>&1`" = "CentOS Stream release 8" ] || diff --git a/rel/pkg/deb/vars.config b/rel/pkg/deb/vars.config index ad92a8e44..1b9c910d2 100644 --- a/rel/pkg/deb/vars.config +++ b/rel/pkg/deb/vars.config @@ -33,7 +33,6 @@ {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{pipe_dir, "/tmp/riak-cs"}. {pid_dir, "/run/riak-cs"}. {sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config index 323b2db79..1e02f68dc 100644 --- a/rel/pkg/fbsdng/vars.config +++ b/rel/pkg/fbsdng/vars.config @@ -33,7 +33,6 @@ {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. {pid_dir, "/var/run/riak-cs"}. -{pipe_dir, "/tmp/riak-cs"}. {console_log_default, file}. diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index 64e1a11e4..4fa6de230 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -33,7 +33,6 @@ {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{pipe_dir, "/tmp/riak-cs"}. {pid_dir, "/run/riak-cs"}. {sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. From ceb4840d205c7430e4b279a0cbb208b6ab0e834a Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 20 Apr 2022 20:46:18 +0300 Subject: [PATCH 311/831] more enterprisey polish in riak-cs-admin --- rebar.config | 1 + rel/files/lib.sh | 26 ++++++++++++++++++++++++ rel/files/riak-cs | 1 + rel/files/riak-cs-admin | 37 +++++++++++++++------------------- rel/files/riak-cs-supercluster | 8 ++++++-- rel/pkg/alpine/vars.config | 1 - 6 files changed, 50 insertions(+), 24 deletions(-) create mode 100644 rel/files/lib.sh diff --git a/rebar.config b/rebar.config index d389ef500..b049797c2 100644 --- a/rebar.config +++ b/rebar.config @@ -47,6 +47,7 @@ , {template, "rel/files/riak-cs-admin", "bin/riak-cs-admin"} , {template, "rel/files/riak-cs-debug", "bin/riak-cs-debug"} , {template, "rel/files/riak-cs-supercluster", "bin/riak-cs-supercluster"} + , {copy, "rel/files/lib.sh", "lib/lib.sh"} , {copy, "rel/files/cert.pem", "etc/cert.pem"} , {copy, "rel/files/key.pem", "etc/key.pem"} , {copy, "rel/files/app_epath.sh", "lib/app_epath.sh"} diff --git a/rel/files/lib.sh b/rel/files/lib.sh new file mode 100644 index 000000000..ac794632a --- /dev/null +++ b/rel/files/lib.sh @@ -0,0 +1,26 @@ +fmt() { + echo -n "[[" + local n=$# + if [ $n -ne 0 ]; then + echo -n "\"$1\"" + shift + n=$((n-1)) + fi + while [ $n -ne 0 ]; do + echo -n ", \"$1\"" + shift + n=$((n-1)) + done + echo "]]" +} + +rpc() { + local mod=$1 + local fun=$2 + shift 2 + if [ $# -gt 0 ]; then + "${PLATFORM_BIN_DIR}/riak-cs" rpc $mod $fun `fmt "$@"` + else + "${PLATFORM_BIN_DIR}/riak-cs" rpc $mod $fun "[[]]" + fi +} diff --git a/rel/files/riak-cs b/rel/files/riak-cs index dec72dc65..cd65ae8c7 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -25,6 +25,7 @@ RUNNER_GEN_DIR={{platform_gen_dir}} RELX_RIAK={{platform_bin_dir}}/riak-cs export PID_DIR={{pid_dir}} +export RUNNER_LOG_DIR={{platform_log_dir}} mkdir -p $PID_DIR chown riak_cs:riak_cs $PID_DIR diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index 0fdd7ec61..c9b5b6ab1 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -26,6 +26,7 @@ SCRIPT="riak-cs-admin" # if we are called as `riak admin`, PLATFORM_BASE_DIR will have been set +PLATFORM_BASE_DIR={{platform_base_dir}} PLATFORM_BASE_DIR=${PLATFORM_BASE_DIR:-$(cd $(dirname "$0")/.. && pwd -P)} PLATFORM_BIN_DIR={{platform_bin_dir}} @@ -33,17 +34,11 @@ if [ "$PLATFORM_BIN_DIR" = "${PLATFORM_BIN_DIR#/}" ]; then PLATFORM_BIN_DIR=$PLATFORM_BASE_DIR/$PLATFORM_BIN_DIR fi -RPC_HOP="${PLATFORM_BIN_DIR}/riak-cs rpc" - -# if we ever need to start a separate node to do fancier stuff than we -# can via rpc, see how this is done in riak/rel/files/riak-admin - -# relx provides a 60 sec value hardcoded for RPC timeout, with no easy -# way to supply an 'infinity' from the script. Much as I hate to -# pretend 60 sec is long enough, here's a TODO note to have it fixed -# (best would be to patch relx/nodetool upstream). The only call -# affected is `riak-cs-admin cluster-info`. -RPC_HOP_INF=$RPC_HOP +PLATFORM_LIB_DIR={{platform_lib_dir}} +if [ "$PLATFORM_LIB_DIR" = "${PLATFORM_LIB_DIR#/}" ]; then + PLATFORM_LIB_DIR=$PLATFORM_BASE_DIR/$PLATFORM_LIB_DIR +fi +. $PLATFORM_LIB_DIR/lib.sh usage() { echo "Usage: $SCRIPT { version | status | gc | access | storage |" @@ -55,17 +50,17 @@ usage() { case "$1" in version) shift - $RPC_HOP riak_cs_console version + rpc riak_cs_console version ;; status) shift - $RPC_HOP riak_cs_console status + rpc riak_cs_console status ;; gc) shift case "$1" in batch|status|pause|resume|cancel|set-interval|set-leeway|earliest-keys) - $RPC_HOP riak_cs_gc_console "$@" + rpc riak_cs_gc_console "$@" ;; *) echo "Usage: $SCRIPT gc { batch [|--help] | status | pause | resume | cancel |" @@ -79,7 +74,7 @@ case "$1" in shift case "$1" in batch|status|pause|resume|cancel) - $RPC_HOP riak_cs_storage_console "$@" + rpc riak_cs_storage_console "$@" ;; *) echo "Usage: $SCRIPT storage $1 { batch | status | pause | resume | cancel }" @@ -91,7 +86,7 @@ case "$1" in shift case "$1" in flush) - $RPC_HOP riak_cs_access_console flush "$@" + rpc riak_cs_access_console flush "$@" ;; *) echo "Usage: $SCRIPT access $1 { flush }" @@ -103,7 +98,7 @@ case "$1" in shift case "$1" in switch|show) - $RPC_HOP riak_cs_stanchion_console "$@" + rpc riak_cs_stanchion_console "$@" ;; *) echo "Usage: $SCRIPT stanchion $1 { switch HOST PORT | show }" @@ -113,7 +108,7 @@ case "$1" in ;; 'test') shift - $RPC_HOP riak_cs_console test + rpc riak_cs_console test ;; cluster[_-]info) if [ $# -lt 2 ]; then @@ -122,16 +117,16 @@ case "$1" in fi shift - $RPC_HOP_INF riak_cs_console cluster_info "$@" + rpc riak_cs_console cluster_info "$@" ;; cleanup[_-]orphan[_-]multipart) shift - $RPC_HOP riak_cs_console cleanup_orphan_multipart "$@" + rpc riak_cs_console cleanup_orphan_multipart "$@" ;; audit[_-]bucket[_-]ownership) shift - $RPC_HOP riak_cs_console audit_bucket_ownership "$@" + rpc riak_cs_console audit_bucket_ownership "$@" ;; *) usage diff --git a/rel/files/riak-cs-supercluster b/rel/files/riak-cs-supercluster index 6f104e390..fd98f6ebd 100755 --- a/rel/files/riak-cs-supercluster +++ b/rel/files/riak-cs-supercluster @@ -33,12 +33,16 @@ if [ "$PLATFORM_BIN_DIR" = "${PLATFORM_BIN_DIR#/}" ]; then PLATFORM_BIN_DIR=$PLATFORM_BASE_DIR/$PLATFORM_BIN_DIR fi -RPC_HOP="${PLATFORM_BIN_DIR}/riak-cs rpc" +PLATFORM_LIB_DIR={{platform_lib_dir}} +if [ "$PLATFORM_LIB_DIR" = "${PLATFORM_LIB_DIR#/}" ]; then + PLATFORM_LIB_DIR=$PLATFORM_BASE_DIR/$PLATFORM_LIB_DIR +fi +. $PLATFORM_LIB_DIR/lib.sh # Check the first argument for instructions case "$1" in list-members|weight|weight-manifest|weight-block|refresh) - $RPC_HOP riak_cs_multibag_console "$@" + rpc riak_cs_multibag_console "$@" ;; *) echo "Usage: $SCRIPT { list-members | weight | weight-manifest | weight-block | refresh }" diff --git a/rel/pkg/alpine/vars.config b/rel/pkg/alpine/vars.config index 53ba56d7f..34f77b415 100644 --- a/rel/pkg/alpine/vars.config +++ b/rel/pkg/alpine/vars.config @@ -34,7 +34,6 @@ {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -{pipe_dir, "/tmp/riak-cs"}. {pid_dir, "/run/riak-cs"}. {sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. From 94e5ea36df76faf70e16d4fb464e2e0c9422cd9d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 22 Apr 2022 01:38:14 +0300 Subject: [PATCH 312/831] fix su workaround for centos7 --- rel/files/riak-cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index cd65ae8c7..c019f2047 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -31,11 +31,11 @@ mkdir -p $PID_DIR chown riak_cs:riak_cs $PID_DIR # centos7-based distros have a su that contacts pam and prints the "Last logged in" message -if [ "`cat /etc/redhat-release 2>&1`" = "CentOS Stream release 8" ] || +if [ "`cat /etc/redhat-release 2>&1`" = "CentOS Stream release 7" ] || [ "`cat /etc/system-release 2>&1`" = "Amazon Linux release 2 (Karoo)" ]; then - SU="su --session-command" + COPTION="--session-command" else - SU=su + COPTION="-c" fi function maybe_su { @@ -59,7 +59,7 @@ $* EOF chmod +x "$f" chown riak_cs:riak_cs "$f" - $SU riak_cs -c "$f" + su riak_cs $COPTION "$f" rm -f "$f" fi } From 3941beb2e076a2f67a492d2be0723e53f89e090e Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 24 Apr 2022 20:18:48 +0300 Subject: [PATCH 313/831] less artsy rewrite of app_epath --- rebar.config | 36 +++++++++++----------- rel/files/app_epath.escript | 9 ++++++ rel/files/lib.sh | 61 +++++++++++++++++++++++++++++++++++++ rel/files/riak-cs-debug | 28 ++++++----------- 4 files changed, 98 insertions(+), 36 deletions(-) create mode 100644 rel/files/app_epath.escript diff --git a/rebar.config b/rebar.config index b049797c2..75579dd2c 100644 --- a/rebar.config +++ b/rebar.config @@ -47,29 +47,29 @@ , {template, "rel/files/riak-cs-admin", "bin/riak-cs-admin"} , {template, "rel/files/riak-cs-debug", "bin/riak-cs-debug"} , {template, "rel/files/riak-cs-supercluster", "bin/riak-cs-supercluster"} - , {copy, "rel/files/lib.sh", "lib/lib.sh"} - , {copy, "rel/files/cert.pem", "etc/cert.pem"} - , {copy, "rel/files/key.pem", "etc/key.pem"} - , {copy, "rel/files/app_epath.sh", "lib/app_epath.sh"} - , {mkdir, "priv/tools/internal"} - , {mkdir, "log"} - , {copy, "priv/tools/repair_gc_bucket.erl", "priv/tools/repair_gc_bucket.erl"} - , {copy, "priv/tools/internal/README.md", "priv/tools/internal/README.md"} - , {copy, "priv/tools/internal/block_audit.erl", "priv/tools/internal/block_audit.erl"} - , {copy, "priv/tools/internal/ensure_orphan_blocks.erl", "priv/tools/internal/ensure_orphan_blocks.erl"} - , {copy, "priv/tools/internal/offline_delete.erl", "priv/tools/internal/offline_delete.erl"} - , {copy, "priv/tools/internal/riak_cs_inspector.erl", "priv/tools/internal/riak_cs_inspector.erl"} - , {copy, "priv/tools/internal/select_gc_bucket.erl", "priv/tools/internal/select_gc_bucket.erl"} + , {template, "rel/files/lib.sh", "lib/lib.sh"} + , {copy, "rel/files/app_epath.escript", "lib/app_epath.escript"} + , {copy, "rel/files/cert.pem", "etc/cert.pem"} + , {copy, "rel/files/key.pem", "etc/key.pem"} + , {mkdir, "priv/tools/internal"} + , {mkdir, "log"} + , {copy, "priv/tools/repair_gc_bucket.erl", "priv/tools/repair_gc_bucket.erl"} + , {copy, "priv/tools/internal/README.md", "priv/tools/internal/README.md"} + , {copy, "priv/tools/internal/block_audit.erl", "priv/tools/internal/block_audit.erl"} + , {copy, "priv/tools/internal/ensure_orphan_blocks.erl", "priv/tools/internal/ensure_orphan_blocks.erl"} + , {copy, "priv/tools/internal/offline_delete.erl", "priv/tools/internal/offline_delete.erl"} + , {copy, "priv/tools/internal/riak_cs_inspector.erl", "priv/tools/internal/riak_cs_inspector.erl"} + , {copy, "priv/tools/internal/select_gc_bucket.erl", "priv/tools/internal/select_gc_bucket.erl"} ] } , {generate_start_script, true} , {extended_start_script, true} , {extended_start_script_extensions, - [ {admin, "riak-cs-admin"} - , {supercluster, "riak-supercluster"} - , {debug, "riak-debug"} - ] - } + [ {admin, "riak-cs-admin"} + , {supercluster, "riak-cs-supercluster"} + , {debug, "riak-cs-debug"} + ] + } ] }. diff --git a/rel/files/app_epath.escript b/rel/files/app_epath.escript new file mode 100644 index 000000000..f84608c9a --- /dev/null +++ b/rel/files/app_epath.escript @@ -0,0 +1,9 @@ +-module(app_epath). +-export([main/1]). + +main([AdvancedConfig]) -> + {ok, [AA]} = file:consult(AdvancedConfig), + [p(A) || A <- AA]. + +p({App, CC}) -> + [io:format("~s ~s ~9999p\n", [App, K, V]) || {K, V} <- CC]. diff --git a/rel/files/lib.sh b/rel/files/lib.sh index ac794632a..dc14492ab 100644 --- a/rel/files/lib.sh +++ b/rel/files/lib.sh @@ -24,3 +24,64 @@ rpc() { "${PLATFORM_BIN_DIR}/riak-cs" rpc $mod $fun "[[]]" fi } + + +## Example usage: +# +# #!/bin/sh +# +# # Load the functions +# . path/to/app_epath.sh +# +# # Build the path info +# epaths=`make_app_epaths path/to/app.config` +# +# # View all of the settings. Quotes are important. +# echo "$epaths" +# +# # Grep around in the paths for various items. +# echo "$epaths" | grep 'riak_core ring_creation_size' +# echo "$epaths" | grep "lager handlers lager_file_backend" | grep info +# +# # Use the epath function to get directly at settings +# epath 'riak_core ring_creation_size' "$epaths" +# epath 'riak_core platform_bin_dir' "$epaths" +# epath 'riak_kv storage_backend' "$epaths" +# +# # Use epath to view all of the riak_core settings +# epath riak_core +# +## End example + +## Here is a command you can put in your path for general cli use. +# +# #!/bin/sh +# +# # $1 quoted eterm path for search: 'riak_core ring_creation_size' +# # $2 path/to/app.config +# +# . path/to/app_epath.sh +# +# epaths=`make_app_epaths "$2"` +# epath "$1" "$epaths" +# +## End epath command + +# make_app_epaths takes a path to an app.config file as its argument and +# and returns (prints) a flattened text structure of configuration settings. + +make_app_epaths () { + ERTS_VER=$(cd ${PLATFORM_BASE_DIR} && ls -d erts-*) + ERTS_PATH="${PLATFORM_BASE_DIR}/$ERTS_VER/bin" + $ERTS_PATH/escript $cs_lib_dir/app_epath.escript "$1" +} + +epath () { + # arg1 - a pattern to search for + # arg2 - output of make_app_epaths, passed in quoted + # output - search of arg2 for arg1, trimming arg1 from the beginning + # Note: there may be multiple lines of output. + pat=$1 + shift + echo "$*" | grep "$pat " | sed "s/^${pat} *//" +} diff --git a/rel/files/riak-cs-debug b/rel/files/riak-cs-debug index e0df6df40..7e0d36d66 100755 --- a/rel/files/riak-cs-debug +++ b/rel/files/riak-cs-debug @@ -23,6 +23,12 @@ ## ## ------------------------------------------------------------------- +set +e +# this is to revert the effect of `set -e`, set by relx-generated code +# when we are invoked via `riak-cs debug` (otherwise, non-zero exits, +# which occur normally, will silently cause riak-cs-debug to +# terminate) + # /bin/sh on Solaris is not a POSIX compatible shell, but /usr/bin/ksh is. if [ `uname -s` = 'SunOS' -a "${POSIX_SHELL}" != "true" ]; then POSIX_SHELL="true" @@ -140,8 +146,8 @@ is_relative() { fi } -RCS_PATH="${RCS_PATH:-$(cd $(dirname "$0")/.. && pwd -P)}" PLATFORM_BASE_DIR={{platform_base_dir}} +PLATFORM_BASE_DIR=${PLATFORM_BASE_DIR:-$(cd $(dirname "$0")/.. && pwd -P)} cs_base_dir=$PLATFORM_BASE_DIR if is_relative "{{platform_bin_dir}}"; then cs_bin_dir="$PLATFORM_BASE_DIR/{{platform_bin_dir}}" @@ -169,6 +175,8 @@ else cs_gen_dir="{{platform_gen_dir}}" fi +cd $PLATFORM_BASE_DIR + cuttlefish_conf_dir=${cs_gen_dir}/generated.conf get_cfgs=0 @@ -276,24 +284,8 @@ if [ 0 -eq $get_cfgs -a 1 -eq $get_ssl_certs ]; then fi if [ 0 -ne $(( $get_cfgs + $get_logs + $get_riakcmds + $get_extracmds )) ]; then - # Information specific to Riak requested. Need app_epath.sh and must have - # valid base and etc paths defined. - # app_epath.sh provides make_app_epaths and epath functions. - # Allow overriding with APP_EPATH - if [ -n "$APP_EPATH" ]; then - epath_file="$APP_EPATH" - else - epath_file="${cs_lib_dir}/app_epath.sh" - fi - - if [ ! -f "$epath_file" ]; then - echoerr "Required file app_epath.sh not found. Expected here:" - echoerr "$epath_file" - echoerr "See 'riak-cs-debug -h' and manpage for help." - exit 1 - fi - . "$epath_file" + . $cs_lib_dir/lib.sh # Allow overriding cs_base_dir and cs_etc_dir from the environment if [ -n "$cs_base_dir" ]; then From c5693bf5ab3898d3454f90ad498f99b2532803da Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 24 Apr 2022 23:54:02 +0300 Subject: [PATCH 314/831] add misc/smoke-test --- misc/smoke-test | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100755 misc/smoke-test diff --git a/misc/smoke-test b/misc/smoke-test new file mode 100755 index 000000000..25569f564 --- /dev/null +++ b/misc/smoke-test @@ -0,0 +1,59 @@ +#!/bin/bash + +# A minimal smoke test for Riak CS Suite, intended for a quick sanity +# check of Riak CS components. After installing riak, riak-cs and +# stanchion from packages, make sure you run ./prepare-riak-for-cs. + +set -e + +echo "Smoke testing Riak CS Suite" + +echo +echo "1. using systemctl" +systemctl start riak +riak admin wait-for-service riak_kv +riak admin ringready +riak admin test +#riak admin status + +systemctl start stanchion riak-cs + +while [[ x`riak-cs ping` != x"pong" ]]; do + sleep 2 +done + +riak-cs admin test + +riak-cs admin status +stanchion status + +for s in riak-cs stanchion riak; do + echo "Stopping $s" + systemctl stop $s +done + +echo "2. using cmd start/stop" +riak start +riak pid +riak-admin wait-for-service riak_kv +riak-admin test + +for s in stanchion riak-cs; do + $s start + $s pid +done +riak-cs-admin test + +rm -f /usr/lib{,64}/riak/*.tar.gz +riak-debug -v +rm -f /usr/lib{,64}/riak-cs/*.tar.gz +riak-cs-debug -v +rm -f /usr/lib{,64}/stanchion/*.tar.gz +stanchion-debug -v + +for s in riak-cs stanchion riak; do + echo "Stopping $s" + $s stop +done + +echo "All good." From 6e620e74b5049485848453ac3547e487828b4024 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 25 Apr 2022 13:14:44 +0000 Subject: [PATCH 315/831] add freebsd variation of misc/smoke-test --- misc/smoke-test.freebsd | 60 +++++++++++++++++++++++++++ misc/{smoke-test => smoke-test.linux} | 0 2 files changed, 60 insertions(+) create mode 100755 misc/smoke-test.freebsd rename misc/{smoke-test => smoke-test.linux} (100%) diff --git a/misc/smoke-test.freebsd b/misc/smoke-test.freebsd new file mode 100755 index 000000000..b98859dea --- /dev/null +++ b/misc/smoke-test.freebsd @@ -0,0 +1,60 @@ +#!/bin/bash + +# A minimal smoke test for Riak CS Suite, intended for a quick sanity +# check of Riak CS components. After installing riak, riak-cs and +# stanchion from packages, make sure you run ./prepare-riak-for-cs. + +set -e + +echo "Smoke testing Riak CS Suite" + +echo +echo "1. using service" +service riak start +riak admin wait-for-service riak_kv +riak admin ringready +riak admin test +#riak admin status + +service stanchion start +service riak-cs start + +while [[ x`riak-cs ping` != x"pong" ]]; do + sleep 2 +done + +riak-cs admin test + +riak-cs admin status +stanchion status + +for s in riak-cs stanchion riak; do + echo "Stopping $s" + service $s stop +done + +echo "2. using cmd start/stop" +riak start +riak pid +riak-admin wait-for-service riak_kv +riak-admin test + +for s in stanchion riak-cs; do + $s start + $s pid +done +riak-cs-admin test + +rm -f /usr/local/lib/riak/*.tar.gz +riak-debug -v +rm -f /usr/local/lib/riak-cs/*.tar.gz +riak-cs-debug -v +rm -f /usr/local/lib/stanchion/*.tar.gz +stanchion-debug -v + +for s in riak-cs stanchion riak; do + echo "Stopping $s" + $s stop +done + +echo "All good." diff --git a/misc/smoke-test b/misc/smoke-test.linux similarity index 100% rename from misc/smoke-test rename to misc/smoke-test.linux From 796ffceb94c9da03db942906c04c5bba6acfb9b7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 25 Apr 2022 17:45:41 +0300 Subject: [PATCH 316/831] smoketest: ensure /tmp/erl_pipes mode is 777 to allow CS apps to coexist --- misc/smoke-test.freebsd | 3 +++ misc/smoke-test.linux | 3 +++ 2 files changed, 6 insertions(+) diff --git a/misc/smoke-test.freebsd b/misc/smoke-test.freebsd index b98859dea..ea8ddeec9 100755 --- a/misc/smoke-test.freebsd +++ b/misc/smoke-test.freebsd @@ -16,6 +16,9 @@ riak admin ringready riak admin test #riak admin status +# allow all three apps to coexist +chmod 777 /tmp/erl_pipes + service stanchion start service riak-cs start diff --git a/misc/smoke-test.linux b/misc/smoke-test.linux index 25569f564..361a093a3 100755 --- a/misc/smoke-test.linux +++ b/misc/smoke-test.linux @@ -16,6 +16,9 @@ riak admin ringready riak admin test #riak admin status +# allow all three apps to coexist +chmod 777 /tmp/erl_pipes + systemctl start stanchion riak-cs while [[ x`riak-cs ping` != x"pong" ]]; do From e5d1466cfd79c07ef7e8fa010b92f4c756f28724 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 30 Apr 2022 17:34:44 +0300 Subject: [PATCH 317/831] port fixes to alpine build; re-add rebar.lock --- rebar.lock | 91 +++++++++++++++++++++++++++++++++++++ rel/pkg/alpine/riak-cs.nosu | 40 ++-------------- rel/pkg/alpine/vars.config | 5 -- 3 files changed, 95 insertions(+), 41 deletions(-) create mode 100644 rebar.lock diff --git a/rebar.lock b/rebar.lock new file mode 100644 index 000000000..e455d9c4c --- /dev/null +++ b/rebar.lock @@ -0,0 +1,91 @@ +{"1.2.0", +[{<<"bear">>,{pkg,<<"bear">>,<<"0.8.7">>},2}, + {<<"cluster_info">>, + {git,"https://github.com/basho/cluster_info", + {ref,"389d43af7ac1550b3c01cd55b8147bcc0e20022f"}}, + 0}, + {<<"exometer_core">>,{pkg,<<"exometer_core">>,<<"1.5.7">>},0}, + {<<"folsom">>,{pkg,<<"folsom">>,<<"0.8.7">>},1}, + {<<"getopt">>,{pkg,<<"getopt">>,<<"1.0.2">>},0}, + {<<"goldrush">>,{pkg,<<"goldrush">>,<<"0.1.9">>},2}, + {<<"hut">>,{pkg,<<"hut">>,<<"1.2.1">>},1}, + {<<"lager">>, + {git,"https://github.com/erlang-lager/lager.git", + {ref,"22e62f28e5afabe90a6f31bcde367a2b5799fc94"}}, + 1}, + {<<"lager_syslog">>, + {git,"https://github.com/TI-Tokyo/lager_syslog.git", + {ref,"e9117a7e54de35c714fa8d1e6c054854c7c697df"}}, + 0}, + {<<"meck">>, + {git,"https://github.com/eproxus/meck.git", + {ref,"4ecc1ae9089edc6977e8c8c4cd41081513cc5590"}}, + 2}, + {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"2.20.1">>},0}, + {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.0">>},0}, + {<<"poolboy">>, + {git,"https://github.com/basho/poolboy", + {ref,"032ea3186fda78b4913deb8932af318ebb9b1258"}}, + 0}, + {<<"protobuffs">>, + {git,"https://github.com/basho/erlang_protobuffs.git", + {ref,"098efad8f85dfe556d64e2cf6ce31f2075808f67"}}, + 1}, + {<<"quickrand">>, + {git,"https://github.com/okeuday/quickrand.git", + {ref,"c80077162f32c10002219f70e0afadb71e05f88c"}}, + 1}, + {<<"rcs_common">>, + {git,"https://github.com/TI-Tokyo/rcs_common.git", + {ref,"d0443b2892cbb6e38e4478e14c429a93de26fd2f"}}, + 0}, + {<<"riak_cs_multibag">>, + {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", + {ref,"0894619b1a0e91bda97808b1a402d52c237590f0"}}, + 0}, + {<<"riak_pb">>, + {git,"https://github.com/basho/riak_pb.git", + {ref,"b7abca90e4c708073021d2c4e18c896f1a10b838"}}, + 1}, + {<<"riak_repl_pb_api">>, + {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", + {ref,"c12d05a3d14ca7324a4243d23ad3fc7c0adc7441"}}, + 0}, + {<<"riakc">>, + {git,"https://github.com/basho/riak-erlang-client", + {ref,"d9fa46335fda4704fda71cbc011ab6a11e50e3f3"}}, + 0}, + {<<"setup">>,{pkg,<<"setup">>,<<"2.0.2">>},1}, + {<<"syslog">>, + {git,"https://github.com/TI-Tokyo/erlang-syslog", + {ref,"14bef508623260a78563d529ccd08e9c259b839e"}}, + 1}, + {<<"uuid">>, + {git,"https://github.com/okeuday/uuid.git", + {ref,"9312cc158a94c76e40c82ca45fd5056fb191c889"}}, + 0}, + {<<"webmachine">>,{pkg,<<"webmachine">>,<<"1.11.1">>},0}]}. +[ +{pkg_hash,[ + {<<"bear">>, <<"16264309AE5D005D03718A5C82641FCC259C9E8F09ADEB6FD79CA4271168656F">>}, + {<<"exometer_core">>, <<"AB97E34A5D69AB14E6AE161DB4CCA5B5E655E635B842F830EE6AB2CBFCFDC30A">>}, + {<<"folsom">>, <<"A885F0AEEE4C84270954C88A55A5A473D6B2C7493E32FFDC5765412DD555A951">>}, + {<<"getopt">>, <<"33D9B44289FE7AD08627DDFE1D798E30B2DA0033B51DA1B3A2D64E72CD581D02">>}, + {<<"goldrush">>, <<"F06E5D5F1277DA5C413E84D5A2924174182FB108DABB39D5EC548B27424CD106">>}, + {<<"hut">>, <<"08D46679523043424870723923971889E8A34D63B2F946A35B46CF921D1236E7">>}, + {<<"mochiweb">>, <<"E4DBD0ED716F076366ECF62ADA5755A844E1D95C781E8C77DF1D4114BE868CDF">>}, + {<<"parse_trans">>, <<"09765507A3C7590A784615CFD421D101AEC25098D50B89D7AA1D66646BC571C1">>}, + {<<"setup">>, <<"1203F4CDA11306C2E34434244576DED0A7BBFB0908D9A572356C809BD0CDF085">>}, + {<<"webmachine">>, <<"422BEAD629F3D6C10FB0F24BE4CEE9648338F90099072AE091FADF86BA70C53F">>}]}, +{pkg_hash_ext,[ + {<<"bear">>, <<"534217DCE6A719D59E54FB0EB7A367900DBFC5F85757E8C1F94269DF383F6D9B">>}, + {<<"exometer_core">>, <<"6AFBD8F6B1AAF7443D6A5A05BBBCD15285622353550F3077C87176E25BE99C1E">>}, + {<<"folsom">>, <<"F7B644FC002A75AF00B8BFBD3CC5C2BD955E09A118D2982D9A6C04E5646FF367">>}, + {<<"getopt">>, <<"A0029AEA4322FB82A61F6876A6D9C66DC9878B6CB61FAA13DF3187384FD4EA26">>}, + {<<"goldrush">>, <<"99CB4128CFFCB3227581E5D4D803D5413FA643F4EB96523F77D9E6937D994CEB">>}, + {<<"hut">>, <<"953FC447514BAF9CC79FA147D66469243C94DFA1593779614E070C692D0BF0F3">>}, + {<<"mochiweb">>, <<"D1AEEE7870470D2FA9EAE0B3D5AB6C33801AA2D82B10E9DADE885C5C921B36AA">>}, + {<<"parse_trans">>, <<"17EF63ABDE837AD30680EA7F857DD9E7CED9476CDD7B0394432AF4BFC241B960">>}, + {<<"setup">>, <<"7D6AAF5281D0B0C40980E128F9DC410DACD03799A8577201D4C8B43E7F97509A">>}, + {<<"webmachine">>, <<"4914961217736701CADA1345D7C79C6DB50A636CF7BC6C757DE923B7C7D70B21">>}]} +]. diff --git a/rel/pkg/alpine/riak-cs.nosu b/rel/pkg/alpine/riak-cs.nosu index e8e821947..1e65412a7 100755 --- a/rel/pkg/alpine/riak-cs.nosu +++ b/rel/pkg/alpine/riak-cs.nosu @@ -3,33 +3,14 @@ RUNNER_GEN_DIR={{platform_gen_dir}} RELX_RIAK={{platform_bin_dir}}/riak-cs export PID_DIR={{pid_dir}} -export PIPE_DIR={{pipe_dir}}/ # terminating / (relx treats it as a prefix) PID_FILE=$PID_DIR/riak-cs.pid -mkdir -p $PID_DIR $PIPE_DIR - -function write_pid_file { # relx doesn't write the pid file - local c=3 - sleep 1 - while [[ $c -ne 0 ]]; do - if [ "`${RELX_RIAK} ping`" = "pong" ]; then - ${RELX_RIAK} pid >$PID_FILE - break - fi - sleep 2 - c=$(($c - 1)) - done -} - -function delete_pid_file { - rm -f $PID_FILE -} +mkdir -p $PID_DIR case "$1" in start) - $RELX_RIAK $* -pa {{platform_patch_dir}} \ - && write_pid_file + $RELX_RIAK $* -pa {{platform_patch_dir}} test -r $PID_FILE && exit 0 ;; console|foreground) @@ -37,22 +18,9 @@ case "$1" in ;; stop) $RELX_RIAK $* \ - && delete_pid_file - ;; - admin) - shift - riak-cs-admin $* - ;; - supercluster) - shift - riak-cs-supercluster $* - ;; - debug) - shift - riak-cs-debug $* + && rm -f $PID_FILE ;; *) - ESCAPED_ARGS=`echo "$@" | sed -e 's/\([\\\(\\\){}"\x27]\)/\\\\\1/g'` - $RELX_RIAK $ESCAPED_ARGS + $RELX_RIAK $* ;; esac diff --git a/rel/pkg/alpine/vars.config b/rel/pkg/alpine/vars.config index 34f77b415..8296e152d 100644 --- a/rel/pkg/alpine/vars.config +++ b/rel/pkg/alpine/vars.config @@ -47,8 +47,3 @@ %% lager {console_log_default, file}. - -%% -%% etc/vm.args -%% -{node, "riak_cs@127.0.0.1"}. From b98255023a7f843b6e06f4deb68da6f28c1272b2 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 30 Apr 2022 19:26:05 +0300 Subject: [PATCH 318/831] add missing pid file entry in distro rels --- rebar.config | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/rebar.config b/rebar.config index 75579dd2c..fafd213b6 100644 --- a/rebar.config +++ b/rebar.config @@ -108,6 +108,13 @@ [ {relx, [ {mode, prod} , {overlay_vars, "rel/pkg/rpm/vars.config"} + , {extended_start_script_hooks, + [ {post_start, + [{pid, "/run/riak-cs/riak-cs.pid"}, + {wait_for_process, riak_cs_sup}] + } + ] + } ] } ] @@ -119,7 +126,8 @@ , {overlay_vars, "rel/pkg/deb/vars.config"} , {extended_start_script_hooks, [ {post_start, - [{wait_for_process, riak_cs_sup}] + [{pid, "/run/riak-cs/riak-cs.pid"}, + {wait_for_process, riak_cs_sup}] } ] } @@ -134,7 +142,8 @@ , {overlay_vars, "rel/pkg/fbsdng/vars.config"} , {extended_start_script_hooks, [ {post_start, - [{wait_for_process, riak_cs_sup}] + [{pid, "/run/riak-cs/riak-cs.pid"}, + {wait_for_process, riak_cs_sup}] } ] } @@ -156,7 +165,8 @@ ]} , {extended_start_script_hooks, [ {post_start, - [{wait_for_process, riak_cs_sup}] + [{pid, "/run/riak-cs/riak-cs.pid"}, + {wait_for_process, riak_cs_sup}] } ] } From deb4f3dbb4d53da6bd52c464db689d923d1f95d6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 30 Apr 2022 20:24:41 +0300 Subject: [PATCH 319/831] explicit exit 0 in riak-cs-admin at end --- rel/files/riak-cs-admin | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index c9b5b6ab1..bdc407e06 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -133,3 +133,6 @@ case "$1" in exit 1 ;; esac + +# No explicit exit from within script or nodetool, assumed to have succeeded. +exit 0 From 012c085fde7dbe6ff7a9f64d9508c6dfaef462a4 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 30 Apr 2022 21:07:14 +0300 Subject: [PATCH 320/831] console_log_default settign was ignored --- priv/riak_cs.schema | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/riak_cs.schema b/priv/riak_cs.schema index ea4af55b7..b64a8ab9d 100644 --- a/priv/riak_cs.schema +++ b/priv/riak_cs.schema @@ -442,7 +442,7 @@ %% console: to standard output (seen when using `riak attach-direct`) %% both: log.console.file and standard out. {mapping, "log.console", "lager.handlers", [ - {default, console }, + {default, {{console_log_default}} }, {datatype, {enum, [off, file, console, both]}} ]}. From 44586db69319d4d3160a0012dfed4b879a619b53 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Thu, 12 May 2022 04:03:21 +0000 Subject: [PATCH 321/831] fix: Dockerfile to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-DEBIAN11-GLIBC-1296898 - https://snyk.io/vuln/SNYK-DEBIAN11-GLIBC-2340908 - https://snyk.io/vuln/SNYK-DEBIAN11-GLIBC-2340908 - https://snyk.io/vuln/SNYK-DEBIAN11-GLIBC-2340922 - https://snyk.io/vuln/SNYK-DEBIAN11-GLIBC-2340922 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d79d2a22a..8e0255673 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ COPY . /usr/src/riak_cs # /sys.config.src. RUN make DEBUG=1 rel-docker -FROM debian:11.2 AS runtime-image +FROM debian:11 AS runtime-image COPY --from=compile-image /usr/src/riak_cs/rel/riak-cs /opt/riak-cs From 29c38d977851f7ddf87dc6a664a168a54d9b0eca Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 18 May 2022 23:54:02 +0300 Subject: [PATCH 322/831] don't forget to set console_log_default in dev_vars.config, too --- rel/vars/dev_vars.config.src | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index c6c0a450e..b285e9f13 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -33,6 +33,8 @@ {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. +{console_log_default, file}. + %% %% etc/vm.args %% From 92834cda609d9924bf1c80a78386b98d7ffa5e73 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 19 May 2022 00:53:17 +0300 Subject: [PATCH 323/831] magically fix rpc calls for devrel --- rel/vars/dev_vars.config.src | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index b285e9f13..3446ed351 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -12,7 +12,7 @@ {platform_etc_dir, "{{platform_base_dir}}/etc"}. {platform_lib_dir, "{{platform_base_dir}}/lib"}. {platform_log_dir, "{{platform_base_dir}}/log"}. -{platform_gen_dir, "{{platform_data_dir}}"}. +{platform_gen_dir, "{{platform_base_dir}}"}. {platform_patch_dir, "{{platform_lib_dir}}/patches"}. %% From 88cb048769a29d976adfbfd65dfe6d08779614e5 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 20 May 2022 04:05:32 +0000 Subject: [PATCH 324/831] fix: Dockerfile to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-DEBIAN11-GLIBC-1296898 - https://snyk.io/vuln/SNYK-DEBIAN11-GLIBC-2340908 - https://snyk.io/vuln/SNYK-DEBIAN11-GLIBC-2340922 - https://snyk.io/vuln/SNYK-DEBIAN11-GLIBC-2340922 - https://snyk.io/vuln/SNYK-DEBIAN11-OPENSSL-2807596 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d79d2a22a..8e0255673 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ COPY . /usr/src/riak_cs # /sys.config.src. RUN make DEBUG=1 rel-docker -FROM debian:11.2 AS runtime-image +FROM debian:11 AS runtime-image COPY --from=compile-image /usr/src/riak_cs/rel/riak-cs /opt/riak-cs From 7ad88402a3031c203eb1f461a103eadbb787a897 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 30 May 2022 13:29:26 +0300 Subject: [PATCH 325/831] update release notes --- Dockerfile | 2 +- RELEASE-NOTES.md | 67 ++++++++++++++++++++++++++---------------------- 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/Dockerfile b/Dockerfile index d79d2a22a..3cb11ea20 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ COPY . /usr/src/riak_cs # rebar.config. Configuration from environment now becomes possible, # via rebar's own method of generating sys.config from # /sys.config.src. -RUN make DEBUG=1 rel-docker +RUN make rel-docker FROM debian:11.2 AS runtime-image diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 731f752af..fe384fa29 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,6 +1,6 @@ # Riak CS 3.0.0 Release Notes -Released January 11, 2022. +Released May 30, 2022. ## General @@ -17,35 +17,43 @@ convenient way to set up the full Riak CS suite locally. All principal repositories are in [TI Tokyo org](https://github.com/TI-Tokyo) on Github. +This release was [presented](https://youtu.be/CmmeYza5HPg) at Code +BEAM America 2021. + ## New features -* Support for [object - versions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html), +* Support for **[object + versions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)**, including new S3 API calls: - - [`GetBucketVersioning`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html) - and - [`PutBucketVersioning`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html); - - [`ListObjectVersions`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html). - - For buckets with versioning enabled, `GetObject` will return the - specific version if it is given in the request, or the `null` - version if it is not. - - As a Riak CS extension, rather than generating a random id for the - new version, `PutObject` will read a `versionId` from header - `x-rcs-versionid`, and use that instead. + - [`GetBucketVersioning`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html), + [`PutBucketVersioning`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html) and + [`ListObjectVersions`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html). + - For buckets with versioning enabled, `GetObject` will return the + specific version if it is given in the request, or the `null` + version if it is not. + - As a Riak CS extension, rather than generating a random id for the + new version, `PutObject` will read a `versionId` from header + `x-rcs-versionid`, and use that instead. * Riak CS Suite as a [Docker service](https://github.com/TI-Tokyo/riak_cs_service_bundle), allowing the (prospective) users quickly to bring up a fully functional Riak CS cluster running locally, complete with Riak CS Control, and - properly configured and set up with a new user, whose credentials will be shown; - - with riak data persisted. + - with riak data persisted; + - ready for a [load-test](https://github.com/TI-Tokyo/s3-benchmark). * Packaging: - - New packages are provided for FreeBSD 13 and OSX 14 (in the latter + - **New packages** are provided for FreeBSD 13 and OSX 14 (in the latter case, the package is the result of `make rel` tarred; no special user is created). - - Packages have been verified for Centos 7 and 8, Debian 8 and 11, - FreeBSD 13 and OSX 14. -* `riak-cs-admin` has got a new option, `test`, which creates a bucket + - Packages have been verified for: + o RPM-based: Centos 7 and 8, Amazon Linux 2, SLES 15, Oracle + Linux 8; + o DEB-based: Debian 8 and 11, Ubuntu Bionic and Xenial; + o Other: FreeBSD 13, OSX 14; Alpine Linux 3.15. +* A **Dockerfile**, bypassing cuttlefish mechanism to enable run-time + configuration via environment variables. +* `riak-cs-admin` now has a new option, **`test`**, which creates a bucket and performs a basic write-read-delete cycle in it (useful to test that the riak cluster is configured properly for use with Riak CS). @@ -58,9 +66,8 @@ org](https://github.com/TI-Tokyo) on Github. * A change of internal structures needed to support object versions, meaning downgrade to 2.x is no longer possible (even if the objects created with 3.0 have no versions). Upgrade from 2.x is possible. -* Packaging: - - The rpm and deb packages now rely on systemd (old-style SysV init - scripts are no longer included). +* The rpm and deb packages now rely on systemd (old-style SysV init + scripts are no longer included). ### Other changes @@ -75,9 +82,9 @@ org](https://github.com/TI-Tokyo) on Github. * A refactoring of code shared between Riak CS and stanchion resulted in that code being collected into a separate dependency, [rcs_common](https://github.com/TI-Tokyo/rcs_common). -* Riak CS Control application has been upgraded to OTP-22/rebar3, too, - however without any new features. -* All dependencies upgraded to their current versions. +* [Riak CS Control](https://github.com/TI-Tokyo/riak_cs_control) + application has been upgraded to OTP-22/rebar3, too, however without + any new features. * All EQC tests have been converted to use PropEr (no shortcuts taken, all coverage is preserved). @@ -93,7 +100,7 @@ that database cannot be used again with 2.x. Riak CS 3.0 has been tested with Riak versions 2.2.6, 2.9.8 through .10, and 3.0.7 and .9. It requires Stanchion 3.0.0 (2.x versions not -supported due to a change in the manifest record). +supported due to changes in the manifest record). # Riak CS 2.1.2 Release Notes @@ -106,13 +113,13 @@ Riak CS 2.1 is designed to work with Riak KV 2.1.1+. >*This release is backwards compatible only with the Riak CS 2.x series. -###Upgrading +### Upgrading **For anyone updating to 2.1.2 from 2.1.1 and older versions.** During the update to 2.1.2, a '==' omitted upload ID might be passed to a Riak CS node running an older version of CS. This may lead to process-crash by failing on decoding upload ID. -##Changes +## Changes * For s3cmd users, experimental signature_v4 support has been made available through a simple on/off toggle in riak-cs.conf. With a default setting of "off", it allows in-situ upgrades without the need to change s3cfg files until after all nodes have been upgraded. Note: this function is currently unfinished and suffers from compatibility issues with some clients ([#1058](https://github.com/basho/riak_cs/issues/1058) / [#1060](https://github.com/basho/riak_cs/issues/1060)) and one potential security issue ([#1059](https://github.com/basho/riak_cs/issues/1059) * Experimental support for Leveled (the alternative to LevelDB to be released with Riak KV 2.9) has been successfully tested with the Riak KV 2.9.0 Release Candidates. * Due to a recent [Product Advisory](http://docs.basho.com/riak/latest/community/product-advisories/codeinjectioninitfiles/), node_package was bumped to version 3.0.0 to prevent a potential code injection on the riak init file. [[Issue 1297](https://github.com/basho/riak_cs/issues/1297), [PR 1306](https://github.com/basho/riak_cs/pull/1306), & [PR 109](https://github.com/basho/stanchion/pull/109)] @@ -128,7 +135,7 @@ During the update to 2.1.2, a '==' omitted upload ID might be passed to a Riak C * [[Issue 1025](https://github.com/basho/riak_cs/issues/1025)/[PR 1300](https://github.com/basho/riak_cs/pull/1300)] Copying an object used to fail when connecting via HTTPS. -#Riak S2 (Riak CS) 2.1.1 Release Notes +# Riak S2 (Riak CS) 2.1.1 Release Notes ## General Information This is a bugfix release. @@ -203,8 +210,8 @@ cs_version = 20100 If you need storage calculation, you will still require the `add_paths` config to load MapReduce codes into Riak KV. -##New Features -###Metrics +## New Features +### Metrics New metrics have been added that enable you to determine the health of your Riak S2 system, as well as get reports on your storage utilization per bucket or user. The following stats items are available: * All calls, latencies, and counters in the S3 API * All calls, latencies, and counters in Stanchion From a225c17db5250be090cfb79733deef93f12e491f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 31 May 2022 18:26:48 +0300 Subject: [PATCH 326/831] allow use of new cuttelfish fqdn data type, for riak_host and stanchion_host --- priv/riak_cs.schema | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/priv/riak_cs.schema b/priv/riak_cs.schema index b64a8ab9d..2a8f3dbf9 100644 --- a/priv/riak_cs.schema +++ b/priv/riak_cs.schema @@ -21,7 +21,7 @@ %% @doc Riak node to which Riak CS accesses {mapping, "riak_host", "riak_cs.riak_host", [ {default, {"{{riak_ip}}", {{riak_pb_port}} }}, - {datatype, ip}, + {datatype, [fqdn, ip]}, {validators, ["valid_host"]} ]}. @@ -29,7 +29,7 @@ %% serialization service {mapping, "stanchion_host", "riak_cs.stanchion_host", [ {default, {"{{stanchion_ip}}", {{stanchion_port}} }}, - {datatype, ip}, + {datatype, [fqdn, ip]}, {validators, ["valid_host"]} ]}. From ffeaad9bf7bb6057ec3ac7745a384ceca6d7d799 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 10 Jun 2022 17:33:27 +0300 Subject: [PATCH 327/831] increase timeout in prop_riak_cs_get_fsm --- apps/riak_cs/test/prop_riak_cs_get_fsm.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/riak_cs/test/prop_riak_cs_get_fsm.erl b/apps/riak_cs/test/prop_riak_cs_get_fsm.erl index 8e2f95594..b11df0a98 100644 --- a/apps/riak_cs/test/prop_riak_cs_get_fsm.erl +++ b/apps/riak_cs/test/prop_riak_cs_get_fsm.erl @@ -68,7 +68,7 @@ proper_test_() -> fun setup/0, fun cleanup/1, [%% Run the quickcheck tests - {timeout, 60, + {timeout, 60 * 10, ?_assertEqual(true, proper:quickcheck(?QC_OUT(prop_get_fsm())))} ] } From aa1c442b00988f871271423ca48d34faed50c085 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 10 Jun 2022 17:37:42 +0300 Subject: [PATCH 328/831] update release notes --- RELEASE-NOTES.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index fe384fa29..fd1097a25 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,18 @@ +# Riak CS 3.0.1 Release Notes + +Released June 10, 2022. + +## General + +This is a correction release that includes one feature that slipped +from 3.0.0. + +## New features + +* Support for fqdn data type for `riak_host` and `stanchion_host` + configuration items in riak-cs.conf. + + # Riak CS 3.0.0 Release Notes Released May 30, 2022. From 76b8b694bf349f26df73254d2466ab3da20c2ab7 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 19 Oct 2022 22:06:09 +0300 Subject: [PATCH 329/831] merge rcs_common, preparing for stanchion merge --- apps/riak_cs/src/rcs_common_manifest.erl | 48 +++ .../src/rcs_common_manifest_resolution.erl | 216 ++++++++++ .../riak_cs/src/rcs_common_manifest_utils.erl | 384 ++++++++++++++++++ 3 files changed, 648 insertions(+) create mode 100644 apps/riak_cs/src/rcs_common_manifest.erl create mode 100644 apps/riak_cs/src/rcs_common_manifest_resolution.erl create mode 100644 apps/riak_cs/src/rcs_common_manifest_utils.erl diff --git a/apps/riak_cs/src/rcs_common_manifest.erl b/apps/riak_cs/src/rcs_common_manifest.erl new file mode 100644 index 000000000..30476f274 --- /dev/null +++ b/apps/riak_cs/src/rcs_common_manifest.erl @@ -0,0 +1,48 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(rcs_common_manifest). + +-export([make_versioned_key/2, + decompose_versioned_key/1]). + +-include("rcs_common_defs.hrl"). +-include("rcs_common_manifest.hrl"). + + +-spec make_versioned_key(binary(), binary()) -> binary(). +make_versioned_key(Key, ?LFS_DEFAULT_OBJECT_VERSION) -> +%% old keys written without a version should continue to be accessible +%% for reads with the default version + Key; +make_versioned_key(Key, Vsn) -> + <>. + + +-spec decompose_versioned_key(binary()) -> {binary(), binary()}. +decompose_versioned_key(VK) -> + case binary:split(VK, ?VERSIONED_KEY_SEPARATOR) of + [K, V] -> + {K, V}; + [K] -> + {K, ?LFS_DEFAULT_OBJECT_VERSION} + end. + diff --git a/apps/riak_cs/src/rcs_common_manifest_resolution.erl b/apps/riak_cs/src/rcs_common_manifest_resolution.erl new file mode 100644 index 000000000..4642786cf --- /dev/null +++ b/apps/riak_cs/src/rcs_common_manifest_resolution.erl @@ -0,0 +1,216 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc Module to resolve siblings with manifest records + +-module(rcs_common_manifest_resolution). + +-include("rcs_common_manifest.hrl"). + +%% export Public API +-export([resolve/1]). + +%% =================================================================== +%% Public API +%% =================================================================== + +%% @doc Take a list of siblings +%% and resolve them to a single +%% value. In this case, siblings +%% and values are dictionaries whose +%% keys are UUIDs and whose values +%% are manifests. +-spec resolve([wrapped_manifest()]) -> wrapped_manifest(). +resolve(Siblings) -> + lists:foldl(fun resolve_dicts/2, orddict:new(), Siblings). + +%% ==================================================================== +%% Internal functions +%% ==================================================================== + +%% @doc Take two dictionaries +%% of manifests and resolve them. +%% @private +resolve_dicts(A, B) -> + orddict:merge(fun resolve_manifests/3, A, B). + +%% @doc Take two manifests with +%% the same UUID and resolve them +%% @private +resolve_manifests(_Key, A, B) -> + AState = state_to_stage_number(A?MANIFEST.state), + BState = state_to_stage_number(B?MANIFEST.state), + resolve_manifests(AState, BState, A, B). + +state_to_stage_number(writing) -> 10; +state_to_stage_number(active) -> 20; +state_to_stage_number(pending_delete) -> 30; +state_to_stage_number(scheduled_delete) -> 40. + +%% @doc Return a new, resolved manifest. +%% The first two args are the state that +%% manifest A and B are in, respectively. +%% The third and fourth args, A, B, are the +%% manifests themselves. +%% @private +resolve_manifests(StageA, StageB, A, _B) when StageA > StageB -> + A; +resolve_manifests(StageA, StageB, _A, B) when StageB > StageA -> + B; +resolve_manifests(StageX, StageX, A, A) -> + A; +resolve_manifests(_, _, + ?MANIFEST{state = writing} = A, + ?MANIFEST{state = writing} = B) -> + WriteBlocksRemaining = resolve_written_blocks(A, B), + LastBlockWrittenTime = resolve_last_written_time(A, B), + Props = resolve_props(A, B), + A?MANIFEST{write_blocks_remaining = WriteBlocksRemaining, + last_block_written_time = LastBlockWrittenTime, + props = Props}; + +resolve_manifests(_, _, + ?MANIFEST{state = active, acl = A1Acl} = A, + ?MANIFEST{state = active, acl = A2Acl} = B) -> + Props = resolve_props(A, B), + case A1Acl?ACL.creation_time >= A2Acl?ACL.creation_time of + true -> + A?MANIFEST{props = Props}; + false -> + B?MANIFEST{props = Props} + end; + +resolve_manifests(_, _, + ?MANIFEST{state = pending_delete} = A, + ?MANIFEST{state = pending_delete} = B) -> + BlocksLeftToDelete = resolve_deleted_blocks(A, B), + LastDeletedTime = resolve_last_deleted_time(A, B), + A?MANIFEST{delete_blocks_remaining = BlocksLeftToDelete, + last_block_deleted_time = LastDeletedTime}; + +resolve_manifests(_, _, + ?MANIFEST{state = scheduled_delete} = A, + ?MANIFEST{state = scheduled_delete} = B) -> + BlocksLeftToDelete = resolve_deleted_blocks(A, B), + LastDeletedTime = resolve_last_deleted_time(A, B), + A?MANIFEST{delete_blocks_remaining = BlocksLeftToDelete, + last_block_deleted_time = LastDeletedTime}. + +resolve_written_blocks(A, B) -> + AWritten = A?MANIFEST.write_blocks_remaining, + BWritten = B?MANIFEST.write_blocks_remaining, + ordsets:intersection(AWritten, BWritten). + +resolve_deleted_blocks(A, B) -> + ADeleted = A?MANIFEST.delete_blocks_remaining, + BDeleted = B?MANIFEST.delete_blocks_remaining, + safe_intersection(ADeleted, BDeleted). + +resolve_props(A, B) -> + Ps_A = A?MANIFEST.props, + Ps_B = B?MANIFEST.props, + {_, _, New} = lists:foldl(fun resolve_a_prop/2, + {Ps_A, Ps_B, []}, + [fun resolve_prop_multipart/2, + fun resolve_prop_multipart_cleanup/2, + fun resolve_prop_block_bag/2]), + New. + +resolve_a_prop(Resolver, {Ps_A, Ps_B, Ps_merged}) -> + {_, _, New} = Resolver(Ps_A, Ps_B), + {Ps_A, Ps_B, New ++ Ps_merged}. + +resolve_prop_multipart(Ps_A, Ps_B) -> + case {proplists:get_value(multipart, Ps_A), + proplists:get_value(multipart, Ps_B)} of + {undefined, undefined} -> + {Ps_A, Ps_B, []}; + {undefined, B} -> + {Ps_A, Ps_B, [{multipart, B}]}; + {A, undefined} -> + {Ps_A, Ps_B, [{multipart, A}]}; + {A, B} -> + Parts = ordsets:union(A?MULTIPART_MANIFEST.parts, + B?MULTIPART_MANIFEST.parts), + DParts = ordsets:union(A?MULTIPART_MANIFEST.done_parts, + B?MULTIPART_MANIFEST.done_parts), + CParts = ordsets:union(A?MULTIPART_MANIFEST.cleanup_parts, + B?MULTIPART_MANIFEST.cleanup_parts), + MM = A?MULTIPART_MANIFEST{parts = Parts, done_parts = DParts, + cleanup_parts = CParts}, + {Ps_A, Ps_B, [{multipart, MM}]} + end. + +resolve_prop_multipart_cleanup(Ps_A, Ps_B) -> + case proplists:get_value(multipart_clean, Ps_A, false) orelse + proplists:get_value(multipart_clean, Ps_B, false) of + true -> + {Ps_A, Ps_B, [multipart_clean]}; + false -> + {Ps_A, Ps_B, []} + end. + +resolve_prop_block_bag(Ps_A, Ps_B) -> + case {proplists:get_value(block_bag, Ps_A), + proplists:get_value(block_bag, Ps_B)} of + {undefined, undefined} -> + {Ps_A, Ps_B, []}; + {BagId, BagId} when BagId =/= undefined -> + %% BagId is set at the start and not modified. + {Ps_A, Ps_B, [{block_bag, BagId}]} + end. + + +%% NOTE: +%% There was a bit of a gaff +%% and delete_blocks_remaining +%% was not set to an ordset +%% when the state was set to +%% pending_delete, so we have +%% to account for it being +%% `undefined` +safe_intersection(undefined, undefined) -> + %% if these are both + %% undefined, then + %% neither have ever had + %% delete_blocks_remaining set + %% as something meaningful, + %% so don't just change it + %% to they empty set. + undefined; +safe_intersection(A, undefined) -> + safe_intersection(A, []); +safe_intersection(undefined, B) -> + safe_intersection([], B); +safe_intersection(A, B) -> + ordsets:intersection(A, B). + +resolve_last_written_time(A, B) -> + ALastWritten = A?MANIFEST.last_block_written_time, + BLastWritten = B?MANIFEST.last_block_written_time, + latest_date(ALastWritten, BLastWritten). + +resolve_last_deleted_time(A, B) -> + ALastDeleted = A?MANIFEST.last_block_deleted_time, + BLastDeleted = B?MANIFEST.last_block_deleted_time, + latest_date(ALastDeleted, BLastDeleted). + +latest_date(A, B) -> erlang:max(A, B). diff --git a/apps/riak_cs/src/rcs_common_manifest_utils.erl b/apps/riak_cs/src/rcs_common_manifest_utils.erl new file mode 100644 index 000000000..7f40acacf --- /dev/null +++ b/apps/riak_cs/src/rcs_common_manifest_utils.erl @@ -0,0 +1,384 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc Module for choosing and manipulating lists (well, orddict) of manifests + +-module(rcs_common_manifest_utils). + +-include("rcs_common_manifest.hrl"). + +-export([new_dict/2, + active_manifest/1, + active_manifests/1, + active_and_writing_manifests/1, + deleted_while_writing/1, + filter_manifests_by_state/2, + mark_deleted/2, + mark_pending_delete/2, + mark_scheduled_delete/2, + needs_pruning/3, + prune/4, + upgrade_wrapped_manifests/1, + upgrade_manifest/1]). + +%% @doc Return a new orddict of manifest (only +%% one in this case). Used when storing something +%% in Riak when the previous GET returned notfound, +%% so we're (maybe) creating a new object. +-spec new_dict(binary(), lfs_manifest()) -> orddict:orddict(). +new_dict(UUID, Manifest) -> + orddict:store(UUID, Manifest, orddict:new()). + + +-spec upgrade_wrapped_manifests([wrapped_manifest()]) -> [wrapped_manifest()]. +upgrade_wrapped_manifests(ListofOrdDicts) -> + DictMapFun = fun(_Key, Value) -> upgrade_manifest(Value) end, + MapFun = fun(Value) -> orddict:map(DictMapFun, Value) end, + lists:map(MapFun, ListofOrdDicts). + +%% @doc Upgrade the manifest to the most recent +%% version of the manifest record. This is so that +%% _most_ of the codebase only has to deal with +%% the most recent version of the record. +-spec upgrade_manifest(#lfs_manifest_v2{} | #lfs_manifest_v3{} | #lfs_manifest_v4{}) -> lfs_manifest(). +upgrade_manifest(#lfs_manifest_v2{block_size = BlockSize, + bkey = Bkey, + metadata = Metadata, + created = Created, + uuid = UUID, + content_length = ContentLength, + content_type = ContentType, + content_md5 = ContentMd5, + state = State, + write_start_time = WriteStartTime, + last_block_written_time = LastBlockWrittenTime, + write_blocks_remaining = WriteBlocksRemaining, + delete_marked_time = DeleteMarkedTime, + last_block_deleted_time = LastBlockDeletedTime, + delete_blocks_remaining = DeleteBlocksRemaining, + acl = Acl, + props = Props, + cluster_id = ClusterID}) -> + + upgrade_manifest(#lfs_manifest_v3{block_size = BlockSize, + bkey = Bkey, + metadata = Metadata, + created = Created, + uuid = UUID, + content_length = ContentLength, + content_type = ContentType, + content_md5 = ContentMd5, + state = State, + write_start_time = WriteStartTime, + last_block_written_time = LastBlockWrittenTime, + write_blocks_remaining = WriteBlocksRemaining, + delete_marked_time = DeleteMarkedTime, + last_block_deleted_time = LastBlockDeletedTime, + delete_blocks_remaining = DeleteBlocksRemaining, + acl = Acl, + props = Props, + cluster_id = ClusterID}); + +upgrade_manifest(#lfs_manifest_v3{block_size = BlockSize, + bkey = Bkey, + metadata = Metadata, + created = Created, + uuid = UUID, + content_length = ContentLength, + content_type = ContentType, + content_md5 = ContentMd5, + state = State, + write_start_time = WriteStartTime, + last_block_written_time = LastBlockWrittenTime, + write_blocks_remaining = WriteBlocksRemaining, + delete_marked_time = DeleteMarkedTime, + last_block_deleted_time = LastBlockDeletedTime, + delete_blocks_remaining = DeleteBlocksRemaining, + scheduled_delete_time = ScheduledDeleteTime, + acl = Acl, + props = Props, + cluster_id = ClusterID}) -> + + upgrade_manifest(#lfs_manifest_v4{block_size = BlockSize, + bkey = Bkey, + vsn = ?LFS_DEFAULT_OBJECT_VERSION, + metadata = Metadata, + created = Created, + uuid = UUID, + content_length = ContentLength, + content_type = ContentType, + content_md5 = ContentMd5, + state = State, + write_start_time = WriteStartTime, + last_block_written_time = LastBlockWrittenTime, + write_blocks_remaining = WriteBlocksRemaining, + delete_marked_time = DeleteMarkedTime, + last_block_deleted_time = LastBlockDeletedTime, + delete_blocks_remaining = DeleteBlocksRemaining, + scheduled_delete_time = ScheduledDeleteTime, + acl = Acl, + props = fixup_props(Props), + cluster_id = ClusterID}); +upgrade_manifest(M = #lfs_manifest_v4{}) -> + M. + + +fixup_props(undefined) -> + []; +fixup_props(Props) when is_list(Props) -> + Props. + + +%% @doc Return the current active manifest +%% from an orddict of manifests. +-spec active_manifest(orddict:orddict()) -> {ok, lfs_manifest()} | {error, no_active_manifest}. +active_manifest(Dict) -> + live_manifest(lists:foldl(fun most_recent_active_manifest/2, + {no_active_manifest, undefined}, orddict_values(Dict))). + +%% @doc Ensure the manifest hasn't been deleted during upload. +-spec live_manifest(tuple()) -> {ok, lfs_manifest()} | {error, no_active_manifest}. +live_manifest({no_active_manifest, _}) -> + {error, no_active_manifest}; +live_manifest({Manifest, undefined}) -> + {ok, Manifest}; +live_manifest({Manifest, DeleteTime}) -> + case DeleteTime > Manifest?MANIFEST.write_start_time of + true -> + {error, no_active_manifest}; + false -> + {ok, Manifest} + end. + +%% NOTE: This is a foldl function, initial acc = {no_active_manifest, undefined} +%% Return the most recent active manifest as well as the most recent manifest delete time +-spec most_recent_active_manifest(lfs_manifest(), { + no_active_manifest | lfs_manifest(), undefined | erlang:timestamp()}) -> + {no_active_manifest | lfs_manifest(), erlang:timestamp() | undefined}. +most_recent_active_manifest(Manifest = ?MANIFEST{state = scheduled_delete}, + {MostRecent, undefined}) -> + {MostRecent, delete_time(Manifest)}; +most_recent_active_manifest(Manifest = ?MANIFEST{state = scheduled_delete}, + {MostRecent, DeleteTime}) -> + Dt = delete_time(Manifest), + {MostRecent, later(Dt, DeleteTime)}; +most_recent_active_manifest(Manifest = ?MANIFEST{state = pending_delete}, + {MostRecent, undefined}) -> + {MostRecent, delete_time(Manifest)}; +most_recent_active_manifest(Manifest = ?MANIFEST{state = pending_delete}, + {MostRecent, DeleteTime}) -> + Dt = delete_time(Manifest), + {MostRecent, later(Dt, DeleteTime)}; +most_recent_active_manifest(Manifest = ?MANIFEST{state = active}, + {no_active_manifest, undefined}) -> + {Manifest, undefined}; +most_recent_active_manifest(Man1 = ?MANIFEST{state = active}, + {Man2 = ?MANIFEST{state = active}, DeleteTime}) + when Man1?MANIFEST.write_start_time > Man2?MANIFEST.write_start_time -> + {Man1, DeleteTime}; +most_recent_active_manifest(_Man1 = ?MANIFEST{state = active}, + {Man2 = ?MANIFEST{state = active}, DeleteTime}) -> + {Man2, DeleteTime}; +most_recent_active_manifest(Man1 = ?MANIFEST{state = active}, + {no_active_manifest, DeleteTime}) -> + {Man1, DeleteTime}; +most_recent_active_manifest(_Man1, {Man2 = ?MANIFEST{state = active}, DeleteTime}) -> + {Man2, DeleteTime}; +most_recent_active_manifest(_Manifest, {MostRecent, DeleteTime}) -> + {MostRecent, DeleteTime}. + +delete_time(Manifest) -> + case proplists:is_defined(deleted, Manifest?MANIFEST.props) of + true -> + Manifest?MANIFEST.delete_marked_time; + false -> + undefined + end. + +%% @doc Return the later of two times, accounting for undefined +later(undefined, undefined) -> + undefined; +later(undefined, DeleteTime2) -> + DeleteTime2; +later(DeleteTime1, undefined) -> + DeleteTime1; +later(DeleteTime1, DeleteTime2) -> + case DeleteTime1 > DeleteTime2 of + true -> + DeleteTime1; + false -> + DeleteTime2 + end. + + +%% @doc Return all active manifests +-spec active_manifests(orddict:orddict()) -> [lfs_manifest()] | []. +active_manifests(Dict) -> + lists:filter(fun manifest_is_active/1, orddict_values(Dict)). + +manifest_is_active(?MANIFEST{state = active}) -> true; +manifest_is_active(_Manifest) -> false. + + + +%% @doc Return a list of all manifests in the +%% `active' or `writing' state +-spec active_and_writing_manifests(orddict:orddict()) -> [{binary(), lfs_manifest()}]. +active_and_writing_manifests(Dict) -> + orddict:to_list(filter_manifests_by_state(Dict, [active, writing])). + + + +%% @doc Return `Dict' with the manifests in +%% `UUIDsToMark' with their state changed to +%% `pending_delete' +-spec mark_pending_delete(orddict:orddict(), list(binary())) -> + orddict:orddict(). +mark_pending_delete(Dict, UUIDsToMark) -> + MapFun = fun(K, V) -> + case lists:member(K, UUIDsToMark) of + true -> + V?MANIFEST{state=pending_delete, + delete_marked_time=os:timestamp()}; + false -> + V + end + end, + orddict:map(MapFun, Dict). + +%% @doc Return `Dict' with the manifests in +%% `UUIDsToMark' with their state changed to +%% `pending_delete' and {deleted, true} added to props. +-spec mark_deleted(orddict:orddict(), list(binary())) -> + orddict:orddict(). +mark_deleted(Dict, UUIDsToMark) -> + MapFun = fun(K, V) -> + case lists:member(K, UUIDsToMark) of + true -> + V?MANIFEST{state = pending_delete, + delete_marked_time = os:timestamp(), + props=[{deleted, true} | V?MANIFEST.props]}; + false -> + V + end + end, + orddict:map(MapFun, Dict). + +%% @doc Return `Dict' with the manifests in +%% `UUIDsToMark' with their state changed to +%% `scheduled_delete' +-spec mark_scheduled_delete(orddict:orddict(), list(cs_uuid())) -> + orddict:orddict(). +mark_scheduled_delete(Dict, UUIDsToMark) -> + MapFun = fun(K, V) -> + case lists:member(K, UUIDsToMark) of + true -> + V?MANIFEST{state=scheduled_delete, + scheduled_delete_time = os:timestamp()}; + false -> + V + end + end, + orddict:map(MapFun, Dict). + + + +%% @doc Return all active manifests that have timestamps before the latest deletion +%% This happens when a manifest is still uploading while it is deleted. The upload +%% is allowed to complete, but is not visible afterwards. +-spec deleted_while_writing(orddict:orddict()) -> [binary()]. +deleted_while_writing(Manifests) -> + ManifestList = orddict_values(Manifests), + DeleteTime = latest_delete_time(ManifestList), + find_deleted_active_manifests(ManifestList, DeleteTime). + +-spec find_deleted_active_manifests([lfs_manifest()], term()) -> [cs_uuid()]. +find_deleted_active_manifests(_Manifests, undefined) -> + []; +find_deleted_active_manifests(Manifests, DeleteTime) -> + [M?MANIFEST.uuid || M <- Manifests, M?MANIFEST.state =:= active, + M?MANIFEST.write_start_time < DeleteTime]. + + + +-spec prune(orddict:orddict(), + erlang:timestamp(), + unlimited | non_neg_integer(), non_neg_integer()) -> orddict:orddict(). +prune(Dict, Time, MaxCount, LeewaySeconds) -> + Filtered = orddict:filter(fun (_Key, Value) -> not needs_pruning(Value, Time, LeewaySeconds) end, + Dict), + prune_count(Filtered, MaxCount). + +-spec prune_count(orddict:orddict(), unlimited | non_neg_integer()) -> + orddict:orddict(). +prune_count(Manifests, unlimited) -> + Manifests; +prune_count(Manifests, MaxCount) -> + ScheduledDelete = filter_manifests_by_state(Manifests, [scheduled_delete]), + UUIDAndTime = [{M?MANIFEST.uuid, M?MANIFEST.scheduled_delete_time} || + {_UUID, M} <- ScheduledDelete], + case length(UUIDAndTime) > MaxCount of + true -> + SortedByTimeRecentFirst = lists:keysort(2, UUIDAndTime), + UUIDsToPrune = sets:from_list([UUID || {UUID, _ScheduledDeleteTime} <- + lists:nthtail(MaxCount, SortedByTimeRecentFirst)]), + orddict:filter(fun (UUID, _Value) -> not sets:is_element(UUID, UUIDsToPrune) end, + Manifests); + false -> + Manifests + end. + +-spec needs_pruning(lfs_manifest(), erlang:timestamp(), non_neg_integer()) -> boolean(). +needs_pruning(?MANIFEST{state = scheduled_delete, + scheduled_delete_time = ScheduledDeleteTime}, Time, LeewaySeconds) -> + seconds_diff(Time, ScheduledDeleteTime) > LeewaySeconds; +needs_pruning(_Manifest, _, _) -> + false. + +seconds_diff(T2, T1) -> + TimeDiffMicrosends = timer:now_diff(T2, T1), + SecondsTime = TimeDiffMicrosends / (1000 * 1000), + erlang:trunc(SecondsTime). + + + +-spec latest_delete_time([lfs_manifest()]) -> term() | undefined. +latest_delete_time(Manifests) -> + lists:foldl(fun(M, Acc) -> + DeleteTime = delete_time(M), + later(DeleteTime, Acc) + end, undefined, Manifests). + + + +%% @doc Filter an orddict manifests and accept only manifests whose +%% current state is specified in the `AcceptedStates' list. +filter_manifests_by_state(Dict, AcceptedStates) -> + AcceptManifest = + fun(_, ?MANIFEST{state = State}) -> + lists:member(State, AcceptedStates) + end, + orddict:filter(AcceptManifest, Dict). + + + +orddict_values(OrdDict) -> + [V || {_K, V} <- orddict:to_list(OrdDict)]. From 873cdbbb2afac27ade53bb52e913cff19dc53b76 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 19 Oct 2022 22:21:52 +0300 Subject: [PATCH 330/831] initial merge of stanchion --- apps/riak_cs/include/acl.hrl | 46 + apps/riak_cs/include/defs.hrl | 27 + apps/riak_cs/include/manifest.hrl | 342 +++++++ apps/riak_cs/include/moss.hrl | 100 ++ apps/riak_cs/include/riak_cs.hrl | 4 +- apps/riak_cs/src/rcs_common_manifest.erl | 4 +- .../src/rcs_common_manifest_resolution.erl | 2 +- .../riak_cs/src/rcs_common_manifest_utils.erl | 2 +- apps/riak_cs/src/riak_cs.app.src | 58 +- apps/stanchion/include/stanchion.hrl | 34 + apps/stanchion/src/stanchion.app.src | 29 + apps/stanchion/src/stanchion_acl_utils.erl | 397 ++++++++ apps/stanchion/src/stanchion_app.erl | 102 ++ apps/stanchion/src/stanchion_auth.erl | 162 +++ .../stanchion/src/stanchion_blockall_auth.erl | 28 + apps/stanchion/src/stanchion_console.erl | 41 + apps/stanchion/src/stanchion_multipart.erl | 79 ++ .../stanchion/src/stanchion_passthru_auth.erl | 28 + apps/stanchion/src/stanchion_response.erl | 119 +++ apps/stanchion/src/stanchion_server.erl | 265 +++++ apps/stanchion/src/stanchion_server_sup.erl | 60 ++ apps/stanchion/src/stanchion_stats.erl | 269 +++++ apps/stanchion/src/stanchion_sup.erl | 92 ++ apps/stanchion/src/stanchion_utils.erl | 964 ++++++++++++++++++ apps/stanchion/src/stanchion_web.erl | 43 + apps/stanchion/src/stanchion_wm_acl.erl | 102 ++ apps/stanchion/src/stanchion_wm_bucket.erl | 128 +++ apps/stanchion/src/stanchion_wm_buckets.erl | 100 ++ .../src/stanchion_wm_error_handler.erl | 35 + apps/stanchion/src/stanchion_wm_policy.erl | 117 +++ apps/stanchion/src/stanchion_wm_stats.erl | 76 ++ apps/stanchion/src/stanchion_wm_user.erl | 91 ++ apps/stanchion/src/stanchion_wm_users.erl | 95 ++ apps/stanchion/src/stanchion_wm_utils.erl | 76 ++ .../stanchion/src/stanchion_wm_versioning.erl | 86 ++ apps/stanchion/test/stanchion_config_test.erl | 31 + config/sys.config.defaults | 7 +- config/sys.docker.config.src | 11 +- priv/stanchion.schema | 391 +++++++ rebar.config | 2 +- rebar.docker.config | 1 - 41 files changed, 4606 insertions(+), 40 deletions(-) create mode 100644 apps/riak_cs/include/acl.hrl create mode 100644 apps/riak_cs/include/defs.hrl create mode 100644 apps/riak_cs/include/manifest.hrl create mode 100644 apps/riak_cs/include/moss.hrl create mode 100644 apps/stanchion/include/stanchion.hrl create mode 100644 apps/stanchion/src/stanchion.app.src create mode 100644 apps/stanchion/src/stanchion_acl_utils.erl create mode 100644 apps/stanchion/src/stanchion_app.erl create mode 100644 apps/stanchion/src/stanchion_auth.erl create mode 100644 apps/stanchion/src/stanchion_blockall_auth.erl create mode 100644 apps/stanchion/src/stanchion_console.erl create mode 100644 apps/stanchion/src/stanchion_multipart.erl create mode 100644 apps/stanchion/src/stanchion_passthru_auth.erl create mode 100644 apps/stanchion/src/stanchion_response.erl create mode 100644 apps/stanchion/src/stanchion_server.erl create mode 100644 apps/stanchion/src/stanchion_server_sup.erl create mode 100644 apps/stanchion/src/stanchion_stats.erl create mode 100644 apps/stanchion/src/stanchion_sup.erl create mode 100644 apps/stanchion/src/stanchion_utils.erl create mode 100644 apps/stanchion/src/stanchion_web.erl create mode 100644 apps/stanchion/src/stanchion_wm_acl.erl create mode 100644 apps/stanchion/src/stanchion_wm_bucket.erl create mode 100644 apps/stanchion/src/stanchion_wm_buckets.erl create mode 100644 apps/stanchion/src/stanchion_wm_error_handler.erl create mode 100644 apps/stanchion/src/stanchion_wm_policy.erl create mode 100644 apps/stanchion/src/stanchion_wm_stats.erl create mode 100644 apps/stanchion/src/stanchion_wm_user.erl create mode 100644 apps/stanchion/src/stanchion_wm_users.erl create mode 100644 apps/stanchion/src/stanchion_wm_utils.erl create mode 100644 apps/stanchion/src/stanchion_wm_versioning.erl create mode 100644 apps/stanchion/test/stanchion_config_test.erl create mode 100644 priv/stanchion.schema diff --git a/apps/riak_cs/include/acl.hrl b/apps/riak_cs/include/acl.hrl new file mode 100644 index 000000000..8b905b302 --- /dev/null +++ b/apps/riak_cs/include/acl.hrl @@ -0,0 +1,46 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-ifndef(RCS_COMMON_ACL_HRL). +-define(RCS_COMMON_ACL_HRL, included). + +-type acl_perm() :: 'READ' | 'WRITE' | 'READ_ACP' | 'WRITE_ACP' | 'FULL_CONTROL'. +-type acl_perms() :: [acl_perm()]. +-type group_grant() :: 'AllUsers' | 'AuthUsers'. +-type acl_grantee() :: {DisplayName :: string(), + CanonicalID :: string()} | + group_grant(). +-type acl_grant() :: {acl_grantee(), acl_perms()}. +%% acl_v1 owner fields: {DisplayName, CanonicalId} +-type acl_owner2() :: {string(), string()}. +%% acl_owner3: {display name, canonical id, key id} +-type acl_owner3() :: {string(), string(), string()}. +-type acl_owner() :: acl_owner2() | acl_owner3(). +-record(acl_v1, {owner={"", ""} :: acl_owner(), + grants=[] :: [acl_grant()], + creation_time = erlang:timestamp() :: erlang:timestamp()}). +%% acl_v2 owner fields: {DisplayName, CanonicalId, KeyId} +-record(acl_v2, {owner={"", "", ""} :: acl_owner(), + grants=[] :: [acl_grant()], + creation_time = erlang:timestamp() :: erlang:timestamp()}). +-type acl() :: #acl_v1{} | #acl_v2{}. + +-endif. diff --git a/apps/riak_cs/include/defs.hrl b/apps/riak_cs/include/defs.hrl new file mode 100644 index 000000000..547d13d71 --- /dev/null +++ b/apps/riak_cs/include/defs.hrl @@ -0,0 +1,27 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + + +-ifndef(RCS_COMMON_DEFS_HRL). +-define(RCS_COMMON_DEFS_HRL, included). + +-define(VERSIONED_KEY_SEPARATOR, <<5>>). + +-endif. diff --git a/apps/riak_cs/include/manifest.hrl b/apps/riak_cs/include/manifest.hrl new file mode 100644 index 000000000..859f1b47f --- /dev/null +++ b/apps/riak_cs/include/manifest.hrl @@ -0,0 +1,342 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-ifndef(RCS_COMMON_MANIFEST_HRL). +-define(RCS_COMMON_MANIFEST_HRL, included). + +-include("acl.hrl"). + + +-define(MANIFEST, #lfs_manifest_v4). +-define(MULTIPART_MANIFEST, #multipart_manifest_v1). +-define(MULTIPART_MANIFEST_RECNAME, multipart_manifest_v1). +-define(PART_MANIFEST, #part_manifest_v2). +-define(PART_MANIFEST_RECNAME, part_manifest_v2). +-define(MULTIPART_DESCR, #multipart_descr_v1). +-define(ACL, #acl_v2). +-define(PART_DESCR, #part_descr_v1). + +-define(LFS_DEFAULT_OBJECT_VERSION, <<"null">>). + + +-type lfs_manifest_state() :: writing | active | + pending_delete | scheduled_delete | deleted. + + +-type cluster_id() :: undefined | binary(). %% flattened string as binary +-type cs_uuid() :: binary(). +-type bag_id() :: undefined | binary(). + +-record(lfs_manifest_v2, { + version = 2 :: 2, + block_size :: integer(), + bkey :: {binary(), binary()}, + metadata :: orddict:orddict(), + created :: string(), + uuid :: cs_uuid(), + content_length :: non_neg_integer(), + content_type :: binary(), + content_md5 :: term(), + state = undefined :: undefined | lfs_manifest_state(), + write_start_time :: term(), %% immutable + last_block_written_time :: term(), + write_blocks_remaining :: ordsets:ordset(integer()), + delete_marked_time :: term(), + last_block_deleted_time :: term(), + delete_blocks_remaining :: ordsets:ordset(integer()), + acl :: acl(), + props = [] :: proplists:proplist(), + cluster_id :: cluster_id() + }). + +-record(lfs_manifest_v3, { + version = 3 :: 3, + + block_size :: undefined | integer(), + + bkey :: {binary(), binary()}, + + metadata :: orddict:orddict(), + + created :: string(), + uuid :: cs_uuid(), + + content_length :: non_neg_integer(), + content_type :: binary(), + content_md5 :: term(), + + state :: undefined | lfs_manifest_state(), + + write_start_time :: term(), %% immutable + last_block_written_time :: term(), + write_blocks_remaining :: undefined | ordsets:ordset(integer()), + delete_marked_time :: term(), + last_block_deleted_time :: term(), + delete_blocks_remaining :: undefined | ordsets:ordset(integer()), + scheduled_delete_time :: term(), %% new in v3 + + acl = no_acl_yet :: acl() | no_acl_yet, + + props = [] :: undefined | proplists:proplist(), + + cluster_id :: cluster_id() + }). + +-record(lfs_manifest_v4, { + %% "global" properties + %% ----------------------------------------------------------------- + + %% this isn't as important anymore + %% since we're naming the record + %% to include the version number, + %% but I figured it's worth keeping + %% in case we change serialization + %% formats in the future. + version = 4 :: 4, + + %% the block_size setting when this manifest + %% was written. Needed if the user + %% ever changes the block size after writing + %% data + block_size :: undefined | integer(), + + %% identifying properties + %% ----------------------------------------------------------------- + bkey :: {binary(), binary()}, + %% added in v4: + %% there's always a primary version, which is head of a + %% double-linked list of all versions + vsn = ?LFS_DEFAULT_OBJECT_VERSION :: binary(), + + %% user metadata that would normally + %% be placed on the riak_object. We avoid + %% putting it on the riak_object so that + %% we can use that metadata ourselves + metadata :: orddict:orddict(), + + %% the date the manifest was created. + %% not sure if we need both this and + %% write_start_time. My thought was that + %% write_start_time would have millisecond + %% resolution, but I suppose there's no + %% reason we can't change created + %% to have millisecond as well. + created :: string(), + uuid :: cs_uuid(), + + %% content properties + %% ----------------------------------------------------------------- + content_length :: non_neg_integer(), + content_type :: binary(), + content_md5 :: term(), + + %% state properties + %% ----------------------------------------------------------------- + state :: undefined | lfs_manifest_state(), + + %% writing/active state + %% ----------------------------------------------------------------- + write_start_time :: term(), %% immutable + + %% used for two purposes + %% 1. to mark when a file has finished uploading + %% 2. to decide if a write crashed before completing + %% and needs to be garbage collected + last_block_written_time :: term(), + + %% a shrink-only (during resolution) + %% set to denote which blocks still + %% need to be written. We use a shrinking + %% (rather than growing) set to that the + %% set is empty after the write has completed, + %% which should be most of the lifespan on disk + write_blocks_remaining :: undefined | ordsets:ordset(integer()), + + %% pending_delete/deleted state + %% ----------------------------------------------------------------- + %% set to the current time + %% when a manifest is marked as deleted + %% and enters the pending_delete state + delete_marked_time :: term(), + + %% the timestamp serves a similar + %% purpose to last_block_written_time, + %% in that it's used for figuring out + %% when delete processes have died + %% and garbage collection needs to + %% pick up where they left off. + last_block_deleted_time :: term(), + + %% a shrink-only (during resolution) + %% set to denote which blocks + %% still need to be deleted. + %% See write_blocks_remaining for + %% an explanation of why we chose + %% a shrinking set + delete_blocks_remaining :: undefined | ordsets:ordset(integer()), + + %% the time the manifest was put + %% into the scheduled_delete + %% state + scheduled_delete_time :: term(), + + %% The ACL for the version of the object represented + %% by this manifest. + acl = no_acl_yet :: acl() | no_acl_yet, + + %% There are a couple of cases where we want to add record + %% member'ish data without adding new members to the record, + %% e.g. + %% 1. Data for which the common value is 'undefined' or not + %% used/set for this particular manifest + %% 2. Cases where we do want to change the structure of the + %% record but don't want to go through the full code + %% refactoring and backward-compatibility tap dance + %% until sometime later. + %% 'undefined' is for backward compatibility with v3 manifests + %% written with Riak CS 1.2.2 or earlier. + props = [] :: proplists:proplist(), + + %% cluster_id: A couple of uses, both short- and longer-term + %% possibilities: + %% + %% 1. We don't have a good story in early 2012 for how to + %% build a stable 2,000 node Riak cluster. If MOSS can + %% talk to multiple Riak clusters, then each individual + %% cluster can be a size that we're comfortable + %% supporting. + %% + %% 2. We may soon have Riak EE's replication have full + %% plumbing to make it feasible to forward arbitrary + %% traffic between clusters. Then if a slave cluster is + %% missing a data block, and read-repair cannot + %% automagically fix the 'not_found' problem, then perhaps + %% forwarding a get request to the source Riak cluster can + %% fetch us the missing data. + cluster_id :: cluster_id() + }). +-type lfs_manifest() :: #lfs_manifest_v4{}. + +-type cs_uuid_and_manifest() :: {cs_uuid(), lfs_manifest()}. +-type wrapped_manifest() :: orddict:orddict(cs_uuid(), lfs_manifest()). + +-record(part_manifest_v1, { + bucket :: binary(), + key :: binary(), + start_time :: erlang:timestamp(), + part_number :: integer(), + part_id :: binary(), + content_length :: integer(), + content_md5 :: undefined | binary(), + block_size :: integer() +}). + +-record(part_manifest_v2, { + bucket :: binary(), + key :: binary(), + %% new in v2 + vsn = ?LFS_DEFAULT_OBJECT_VERSION :: binary(), + + %% used to judge races between concurrent uploads + %% of the same part_number + start_time :: erlang:timestamp(), + + %% one-of 1-10000, inclusive + part_number :: integer(), + + %% a UUID to prevent conflicts with concurrent + %% uploads of the same {upload_id, part_number}. + part_id :: binary(), + + %% each individual part upload always has a content-length + %% content_md5 is used for the part ETag, alas. + content_length :: integer(), + content_md5 :: undefined | binary(), + + %% block size just like in `lfs_manifest_v2'. Concievably, + %% parts for the same upload id could have different block_sizes. + block_size :: integer() +}). +-type part_manifest() :: #part_manifest_v2{}. + +-record(multipart_manifest_v1, { + upload_id :: binary(), + owner :: acl_owner3(), + + %% since we don't have any point of strong + %% consistency (other than stanchion), we + %% can get concurrent `complete' and `abort' + %% requests. There are still some details to + %% work out, but what we observe here will + %% affect whether we accept future `complete' + %% or `abort' requests. + + %% Stores references to all of the parts uploaded + %% with this `upload_id' so far. A part + %% can be uploaded more than once with the same + %% part number. type = #part_manifest_vX + parts = ordsets:new() :: ordsets:ordset(?PART_MANIFEST{}), + %% List of UUIDs for parts that are done uploading. + %% The part number is redundant, so we only store + %% {UUID::binary(), PartETag::binary()} here. + done_parts = ordsets:new() :: ordsets:ordset({binary(), binary()}), + %% type = #part_manifest_vX + cleanup_parts = ordsets:new() :: ordsets:ordset(?PART_MANIFEST{}), + + %% a place to stuff future information + %% without having to change + %% the record format + props = [] :: proplists:proplist() +}). +-type multipart_manifest() :: #multipart_manifest_v1{}. + +%% Basis of list multipart uploads output +-record(multipart_descr_v1, { + %% Object key for the multipart upload + key :: binary(), + + %% UUID of the multipart upload + upload_id :: binary(), + + %% User that initiated the upload + owner_display :: string(), + owner_key_id :: string(), + + %% storage class: no real options here + storage_class = standard, + + %% Time that the upload was initiated + initiated :: string() %% conflict of func vs. type: riak_cs_wm_utils:iso_8601_datetime() +}). +-type multipart_descr() :: #multipart_descr_v1{}. + +%% Basis of multipart list parts output +-record(part_descr_v1, { + part_number :: integer(), + last_modified :: string(), % TODO ?? + etag :: binary(), + size :: integer() +}). + +-type part_descr() :: #part_descr_v1{}. + + +-endif. diff --git a/apps/riak_cs/include/moss.hrl b/apps/riak_cs/include/moss.hrl new file mode 100644 index 000000000..3b49b56fe --- /dev/null +++ b/apps/riak_cs/include/moss.hrl @@ -0,0 +1,100 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-ifndef(RCS_COMMON_MOSS_HRL). +-define(RCS_COMMON_MOSS_HRL, included). + +-include("acl.hrl"). + +-define(RCS_BUCKET, #moss_bucket_v1). +-define(MOSS_USER, #rcs_user_v2). +-define(RCS_USER, #rcs_user_v2). + +-record(moss_user, { name :: string() + , key_id :: string() + , key_secret :: string() + , buckets = [] + }). + +-record(moss_user_v1, { name :: string() + , display_name :: string() + , email :: string() + , key_id :: string() + , key_secret :: string() + , canonical_id :: string() + , buckets = [] :: [cs_bucket()] + }). + +-record(rcs_user_v2, { name :: string() + , display_name :: string() + , email :: string() + , key_id :: string() + , key_secret :: string() + , canonical_id :: string() + , buckets=[] :: [cs_bucket()] + , status = enabled :: enabled | disabled + }). + +-type moss_user() :: #rcs_user_v2{} | #moss_user_v1{}. +-type rcs_user() :: #rcs_user_v2{} | #moss_user_v1{}. + + + +-record(moss_bucket, { name :: string() + , creation_date :: term() + , acl :: acl()}). + +-record(moss_bucket_v1, { name :: string() | binary() + , last_action :: undefined | created | deleted + , creation_date :: undefined | string() + , modification_time :: undefined | erlang:timestamp() + , acl :: undefined | acl() + }). + +-type cs_bucket() :: #moss_bucket_v1{}. + +-type bucket_operation() :: create | delete | update_acl | update_policy + | delete_policy | update_versioning. +-type bucket_action() :: created | deleted. + +-record(bucket_versioning, { status = suspended :: enabled | suspended + , mfa_delete = disabled :: disabled | enabled + %% Riak CS extensions + , use_subversioning = false :: boolean() + , can_update_versions = false :: boolean() + , repl_siblings = true :: boolean() + }). +-type bucket_versioning() :: #bucket_versioning{}. + + +-define(USER_BUCKET, <<"moss.users">>). +-define(ACCESS_BUCKET, <<"moss.access">>). +-define(STORAGE_BUCKET, <<"moss.storage">>). +-define(BUCKETS_BUCKET, <<"moss.buckets">>). +-define(GC_BUCKET, <<"riak-cs-gc">>). +-define(FREE_BUCKET_MARKER, <<"0">>). + +-define(MD_BAG, <<"X-Rcs-Bag">>). +-define(MD_ACL, <<"X-Moss-Acl">>). +-define(MD_POLICY, <<"X-Rcs-Policy">>). +-define(MD_VERSIONING, <<"X-Rcs-Versioning">>). + +-endif. diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index 11d42cea8..1109760c3 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -19,8 +19,8 @@ %% %% --------------------------------------------------------------------- --include_lib("rcs_common/include/rcs_common_manifest.hrl"). --include_lib("rcs_common/include/rcs_common_moss.hrl"). +-include("manifest.hrl"). +-include("moss.hrl"). -type riak_client() :: pid(). diff --git a/apps/riak_cs/src/rcs_common_manifest.erl b/apps/riak_cs/src/rcs_common_manifest.erl index 30476f274..cfa52cbf8 100644 --- a/apps/riak_cs/src/rcs_common_manifest.erl +++ b/apps/riak_cs/src/rcs_common_manifest.erl @@ -24,8 +24,8 @@ -export([make_versioned_key/2, decompose_versioned_key/1]). --include("rcs_common_defs.hrl"). --include("rcs_common_manifest.hrl"). +-include("defs.hrl"). +-include("manifest.hrl"). -spec make_versioned_key(binary(), binary()) -> binary(). diff --git a/apps/riak_cs/src/rcs_common_manifest_resolution.erl b/apps/riak_cs/src/rcs_common_manifest_resolution.erl index 4642786cf..32bfc1ce1 100644 --- a/apps/riak_cs/src/rcs_common_manifest_resolution.erl +++ b/apps/riak_cs/src/rcs_common_manifest_resolution.erl @@ -23,7 +23,7 @@ -module(rcs_common_manifest_resolution). --include("rcs_common_manifest.hrl"). +-include("manifest.hrl"). %% export Public API -export([resolve/1]). diff --git a/apps/riak_cs/src/rcs_common_manifest_utils.erl b/apps/riak_cs/src/rcs_common_manifest_utils.erl index 7f40acacf..333a782d1 100644 --- a/apps/riak_cs/src/rcs_common_manifest_utils.erl +++ b/apps/riak_cs/src/rcs_common_manifest_utils.erl @@ -23,7 +23,7 @@ -module(rcs_common_manifest_utils). --include("rcs_common_manifest.hrl"). +-include("manifest.hrl"). -export([new_dict/2, active_manifest/1, diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index 87bcc959f..019a9972f 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -2,7 +2,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -26,32 +26,32 @@ {vsn, git}, {modules, []}, {registered, []}, - {applications, [ - kernel, - stdlib, - inets, - crypto, - uuid, - getopt, - mochiweb, - webmachine, - poolboy, - cluster_info, - exometer_core, - lager, - riakc, - rcs_common, - riak_repl_pb_api, - riak_cs_multibag - ]}, - {mod, { riak_cs_app, []}}, - {env, [ - {put_fsm_buffer_size_max, 10485760}, - {access_archive_period, 3600}, - {access_log_flush_factor, 1}, - {access_log_flush_size, 1000000}, - {access_archiver_max_backlog, 2}, - {storage_archive_period, 86400}, - {usage_request_limit, 744} - ]} + {applications, + [kernel, + stdlib, + inets, + crypto, + uuid, + getopt, + mochiweb, + webmachine, + poolboy, + cluster_info, + exometer_core, + lager, + riakc, + riak_repl_pb_api, + riak_cs_multibag, + stanchion + ]}, + {mod, {riak_cs_app, []}}, + {env, + [{put_fsm_buffer_size_max, 10485760}, + {access_archive_period, 3600}, + {access_log_flush_factor, 1}, + {access_log_flush_size, 1000000}, + {access_archiver_max_backlog, 2}, + {storage_archive_period, 86400}, + {usage_request_limit, 744} + ]} ]}. diff --git a/apps/stanchion/include/stanchion.hrl b/apps/stanchion/include/stanchion.hrl new file mode 100644 index 000000000..4fff460a7 --- /dev/null +++ b/apps/stanchion/include/stanchion.hrl @@ -0,0 +1,34 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-record(context, {auth_bypass :: boolean(), + bucket :: undefined | binary(), + owner_id :: undefined | all | string()}). + +-define(TURNAROUND_TIME(Call), + begin + StartTime_____tat = os:timestamp(), + Result_____tat = (Call), + EndTime_____tat = os:timestamp(), + {Result_____tat, + timer:now_diff(EndTime_____tat, + StartTime_____tat)} + end). diff --git a/apps/stanchion/src/stanchion.app.src b/apps/stanchion/src/stanchion.app.src new file mode 100644 index 000000000..18bdcdf58 --- /dev/null +++ b/apps/stanchion/src/stanchion.app.src @@ -0,0 +1,29 @@ +%%-*- mode: erlang -*- +{application, stanchion, + [ + {description, "stanchion"}, + %% 'git' may introduce a '+' character (when building not from a + %% tag), and that plus sign will not go down well with freebsd pkg + %% ('+' is not allowed in +MANIFEST file). Hence we produce a + %% version of vsn that doesn't have it. + {vsn, git}, + {modules, []}, + {registered, []}, + {applications, [ + kernel, + stdlib, + inets, + crypto, + mochiweb, + webmachine, + exometer_core, + lager, + riakc, + rcs_common + ]}, + {mod, { stanchion_app, []}}, + {env, [ + {listener, {"127.0.0.1", 8085}}, + {riak_host, {"127.0.0.1", 8087}} + ]} + ]}. diff --git a/apps/stanchion/src/stanchion_acl_utils.erl b/apps/stanchion/src/stanchion_acl_utils.erl new file mode 100644 index 000000000..3ffd757e7 --- /dev/null +++ b/apps/stanchion/src/stanchion_acl_utils.erl @@ -0,0 +1,397 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc ACL utility functions + +-module(stanchion_acl_utils). + +-include_lib("riak_cs/include/manifest.hrl"). +-include_lib("xmerl/include/xmerl.hrl"). + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). +-endif. + +%% Public API +-export([acl/5, + acl_from_json/1, + acl_to_json_term/1 + ]). + +%% =================================================================== +%% Public API +%% =================================================================== + +%% @doc Construct an acl. The structure is the same for buckets +%% and objects. +-spec acl(string(), string(), string(), [acl_grant()], erlang:timestamp()) -> acl(). +acl(DisplayName, CanonicalId, KeyId, Grants, CreationTime) -> + OwnerData = {DisplayName, CanonicalId, KeyId}, + ?ACL{owner=OwnerData, + grants=Grants, + creation_time=CreationTime}. + +%% @doc Convert a set of JSON terms representing an ACL into +%% an internal representation. +-spec acl_from_json(term()) -> acl(). +acl_from_json({struct, Json}) -> + process_acl_contents(Json, ?ACL{}); +acl_from_json(Json) -> + process_acl_contents(Json, ?ACL{}). + +%% @doc Convert an internal representation of an ACL into +%% erlang terms that can be encoded using `mochijson2:encode'. +-spec acl_to_json_term(acl()) -> term(). +acl_to_json_term(?ACL{owner={DisplayName, CanonicalId, KeyId}, + grants=Grants, + creation_time=CreationTime}) -> + {<<"acl">>, + {struct, [{<<"version">>, 1}, + owner_to_json_term(DisplayName, CanonicalId, KeyId), + grants_to_json_term(Grants, []), + erlang_time_to_json_term(CreationTime)]} + }. + +%% =================================================================== +%% Internal functions +%% =================================================================== + +%% @doc Convert an information from an ACL into erlang +%% terms that can be encoded using `mochijson2:encode'. +-spec erlang_time_to_json_term(erlang:timestamp()) -> term(). +erlang_time_to_json_term({MegaSecs, Secs, MicroSecs}) -> + {<<"creation_time">>, + {struct, [{<<"mega_seconds">>, MegaSecs}, + {<<"seconds">>, Secs}, + {<<"micro_seconds">>, MicroSecs}]} + }. + +%% @doc Convert grantee information from an ACL into erlang +%% terms that can be encoded using `mochijson2:encode'. +-spec grantee_to_json_term(acl_grant()) -> term(). +grantee_to_json_term({Group, Perms}) when is_atom(Group) -> + {struct, [{<<"group">>, list_to_binary( + atom_to_list(Group))}, + {<<"permissions">>, permissions_to_json_term(Perms)}]}; +grantee_to_json_term({{DisplayName, CanonicalId}, Perms}) -> + {struct, [{<<"display_name">>, list_to_binary(DisplayName)}, + {<<"canonical_id">>, list_to_binary(CanonicalId)}, + {<<"permissions">>, permissions_to_json_term(Perms)}]}. + +%% @doc Convert owner information from an ACL into erlang +%% terms that can be encoded using `mochijson2:encode'. +-spec grants_to_json_term([acl_grant()], [term()]) -> term(). +grants_to_json_term([], GrantTerms) -> + {<<"grants">>, GrantTerms}; +grants_to_json_term([HeadGrant | RestGrants], GrantTerms) -> + grants_to_json_term(RestGrants, + [grantee_to_json_term(HeadGrant) | GrantTerms]). + +%% @doc Convert owner information from an ACL into erlang +%% terms that can be encoded using `mochijson2:encode'. +-spec owner_to_json_term(string(), string(), string()) -> term(). +owner_to_json_term(DisplayName, CanonicalId, KeyId) -> + {<<"owner">>, + {struct, [{<<"display_name">>, list_to_binary(DisplayName)}, + {<<"canonical_id">>, list_to_binary(CanonicalId)}, + {<<"key_id">>, list_to_binary(KeyId)}]} + }. + +%% @doc Convert a list of permissions into binaries +%% that can be encoded using `mochijson2:encode'. +-spec permissions_to_json_term(acl_perms()) -> term(). +permissions_to_json_term(Perms) -> + [list_to_binary(atom_to_list(Perm)) || Perm <- Perms]. + +%% @doc Process the top-level elements of the +-spec process_acl_contents([term()], acl()) -> acl(). +process_acl_contents([], Acl) -> + Acl; +process_acl_contents([{Name, Value} | RestObjects], Acl) -> + _ = lager:debug("Object name: ~p", [Name]), + case Name of + <<"owner">> -> + {struct, OwnerData} = Value, + UpdAcl = process_owner(OwnerData, Acl); + <<"grants">> -> + UpdAcl = process_grants(Value, Acl); + <<"creation_time">> -> + {struct, TimeData} = Value, + CreationTime = process_creation_time(TimeData, {1,1,1}), + UpdAcl = Acl?ACL{creation_time=CreationTime}; + _ -> + UpdAcl = Acl + end, + process_acl_contents(RestObjects, UpdAcl). + +%% @doc Process an JSON element containing acl owner information. +-spec process_owner([term()], acl()) -> acl(). +process_owner([], Acl) -> + Acl; +process_owner([{Name, Value} | RestObjects], Acl) -> + Owner = Acl?ACL.owner, + case Name of + <<"key_id">> -> + _ = lager:debug("Owner Key ID value: ~p", [Value]), + {OwnerName, OwnerCID, _} = Owner, + UpdOwner = {OwnerName, OwnerCID, binary_to_list(Value)}; + <<"canonical_id">> -> + _ = lager:debug("Owner ID value: ~p", [Value]), + {OwnerName, _, OwnerId} = Owner, + UpdOwner = {OwnerName, binary_to_list(Value), OwnerId}; + <<"display_name">> -> + _ = lager:debug("Owner Name content: ~p", [Value]), + {_, OwnerCID, OwnerId} = Owner, + UpdOwner = {binary_to_list(Value), OwnerCID, OwnerId}; + _ -> + _ = lager:debug("Encountered unexpected element: ~p", [Name]), + UpdOwner = Owner + end, + process_owner(RestObjects, Acl?ACL{owner=UpdOwner}). + +%% @doc Process an JSON element containing the grants for the acl. +-spec process_grants([term()], acl()) -> acl(). +process_grants([], Acl) -> + Acl; +process_grants([{_, Value} | RestObjects], Acl) -> + Grant = process_grant(Value, {{"", ""}, []}), + UpdAcl = Acl?ACL{grants=[Grant | Acl?ACL.grants]}, + process_grants(RestObjects, UpdAcl). + +%% @doc Process an JSON element containing information about +%% an ACL permission grants. +-spec process_grant([term()], acl_grant()) -> acl_grant(). +process_grant([], Grant) -> + Grant; +process_grant([{Name, Value} | RestObjects], Grant) -> + case Name of + <<"canonical_id">> -> + _ = lager:debug("ID value: ~p", [Value]), + {{DispName, _}, Perms} = Grant, + UpdGrant = {{DispName, binary_to_list(Value)}, Perms}; + <<"display_name">> -> + _ = lager:debug("Name value: ~p", [Value]), + {{_, Id}, Perms} = Grant, + UpdGrant = {{binary_to_list(Value), Id}, Perms}; + <<"group">> -> + _ = lager:debug("Group value: ~p", [Value]), + {_, Perms} = Grant, + UpdGrant = {list_to_atom( + binary_to_list(Value)), Perms}; + <<"permissions">> -> + {Grantee, _} = Grant, + Perms = process_permissions(Value), + _ = lager:debug("Perms value: ~p", [Value]), + UpdGrant = {Grantee, Perms}; + _ -> + UpdGrant = Grant + end, + process_grant(RestObjects, UpdGrant). + +%% @doc Process a list of JSON elements containing +%% ACL permissions. +-spec process_permissions([binary()]) -> acl_perms(). +process_permissions(Perms) -> + lists:usort( + lists:filter(fun(X) -> X /= undefined end, + [binary_perm_to_atom(Perm) || Perm <- Perms])). + +%% @doc Convert a binary permission type to a +%% corresponding atom or return `undefined' if +%% the permission is invalid. +-spec binary_perm_to_atom(binary()) -> atom(). +binary_perm_to_atom(Perm) -> + case Perm of + <<"FULL_CONTROL">> -> + 'FULL_CONTROL'; + <<"READ">> -> + 'READ'; + <<"READ_ACP">> -> + 'READ_ACP'; + <<"WRITE">> -> + 'WRITE'; + <<"WRITE_ACP">> -> + 'WRITE_ACP'; + _ -> + undefined + end. + +%% @doc Process the JSON element containing creation time +%% data for an ACL. +-spec process_creation_time([term()], erlang:timestamp()) -> erlang:timestamp(). +process_creation_time([], CreationTime) -> + CreationTime; +process_creation_time([{Name, Value} | RestObjects], CreationTime) -> + case Name of + <<"mega_seconds">> -> + {_, Secs, MicroSecs} = CreationTime, + UpdCreationTime = {Value, Secs, MicroSecs}; + <<"seconds">> -> + {MegaSecs, _, MicroSecs} = CreationTime, + UpdCreationTime = {MegaSecs, Value, MicroSecs}; + <<"micro_seconds">> -> + {MegaSecs, Secs, _} = CreationTime, + UpdCreationTime = {MegaSecs, Secs, Value} + end, + process_creation_time(RestObjects, UpdCreationTime). + +%% =================================================================== +%% Eunit tests +%% =================================================================== + +-ifdef(TEST). + +acl_from_json_test() -> + CreationTime = erlang:timestamp(), + {AclMegaSecs, AclSecs, AclMicroSecs} = CreationTime, + JsonTerm = [{<<"version">>,1}, + {<<"owner">>, + {struct, + [{<<"display_name">>,<<"tester1">>}, + {<<"canonical_id">>,<<"TESTID1">>}, + {<<"key_id">>,<<"TESTKEYID1">>}]}}, + {<<"grants">>, + [{struct, + [{<<"group">>,<<"AllUsers">>}, + {<<"permissions">>,[<<"WRITE_ACP">>]}]}, + {struct, + [{<<"display_name">>,<<"tester2">>}, + {<<"canonical_id">>,<<"TESTID2">>}, + {<<"permissions">>,[<<"WRITE">>]}]}, + {struct, + [{<<"display_name">>,<<"tester1">>}, + {<<"canonical_id">>,<<"TESTID1">>}, + {<<"permissions">>,[<<"READ">>]}]}]}, + {<<"creation_time">>, + {struct, + [{<<"mega_seconds">>, AclMegaSecs}, + {<<"seconds">>, AclSecs}, + {<<"micro_seconds">>, AclMicroSecs}]}}], + Acl = acl_from_json(JsonTerm), + ExpectedAcl = acl("tester1", + "TESTID1", + "TESTKEYID1", + [{{"tester1", "TESTID1"}, ['READ']}, + {{"tester2", "TESTID2"}, ['WRITE']}, + {'AllUsers', ['WRITE_ACP']}], + CreationTime), + ?assertEqual(ExpectedAcl, Acl). + +acl_to_json_term_test() -> + CreationTime = erlang:timestamp(), + Acl = acl("tester1", + "TESTID1", + "TESTKEYID1", + [{{"tester1", "TESTID1"}, ['READ']}, + {{"tester2", "TESTID2"}, ['WRITE']}], + CreationTime), + JsonTerm = acl_to_json_term(Acl), + {AclMegaSecs, AclSecs, AclMicroSecs} = CreationTime, + ExpectedTerm = {<<"acl">>, + {struct, + [{<<"version">>,1}, + {<<"owner">>, + {struct, + [{<<"display_name">>,<<"tester1">>}, + {<<"canonical_id">>,<<"TESTID1">>}, + {<<"key_id">>,<<"TESTKEYID1">>}]}}, + {<<"grants">>, + [{struct, + [{<<"display_name">>,<<"tester2">>}, + {<<"canonical_id">>,<<"TESTID2">>}, + {<<"permissions">>,[<<"WRITE">>]}]}, + {struct, + [{<<"display_name">>,<<"tester1">>}, + {<<"canonical_id">>,<<"TESTID1">>}, + {<<"permissions">>,[<<"READ">>]}]}]}, + {<<"creation_time">>, + {struct, + [{<<"mega_seconds">>, AclMegaSecs}, + {<<"seconds">>, AclSecs}, + {<<"micro_seconds">>, AclMicroSecs}]}}]}}, + ?assertEqual(ExpectedTerm, JsonTerm). + +owner_to_json_term_test() -> + JsonTerm = owner_to_json_term("name", "cid123", "keyid123"), + ExpectedTerm = {<<"owner">>, + {struct, [{<<"display_name">>, <<"name">>}, + {<<"canonical_id">>, <<"cid123">>}, + {<<"key_id">>, <<"keyid123">>}]} + }, + ?assertEqual(ExpectedTerm, JsonTerm). + +grants_to_json_term_test() -> + CreationTime = erlang:timestamp(), + Acl = acl("tester1", + "TESTID1", + "TESTKEYID1", + [{{"tester1", "TESTID1"}, ['READ']}, + {{"tester2", "TESTID2"}, ['WRITE']}], + CreationTime), + JsonTerm = grants_to_json_term(Acl?ACL.grants, []), + ExpectedTerm = + {<<"grants">>, [{struct, + [{<<"display_name">>,<<"tester2">>}, + {<<"canonical_id">>,<<"TESTID2">>}, + {<<"permissions">>,[<<"WRITE">>]}]}, + {struct, + [{<<"display_name">>,<<"tester1">>}, + {<<"canonical_id">>,<<"TESTID1">>}, + {<<"permissions">>,[<<"READ">>]}]}]}, + + ?assertEqual(ExpectedTerm, JsonTerm). + +grantee_to_json_term_test() -> + JsonTerm1 = grantee_to_json_term({{"tester1", "TESTID1"}, ['READ']}), + JsonTerm2 = grantee_to_json_term({'AllUsers', ['WRITE']}), + ExpectedTerm1 = {struct, + [{<<"display_name">>,<<"tester1">>}, + {<<"canonical_id">>,<<"TESTID1">>}, + {<<"permissions">>,[<<"READ">>]}]}, + ExpectedTerm2 = {struct, + [{<<"group">>,<<"AllUsers">>}, + {<<"permissions">>,[<<"WRITE">>]}]}, + ?assertEqual(ExpectedTerm1, JsonTerm1), + ?assertEqual(ExpectedTerm2, JsonTerm2). + +permissions_to_json_term_test() -> + JsonTerm = permissions_to_json_term(['READ', + 'WRITE', + 'READ_ACP', + 'WRITE_ACP', + 'FULL_CONTROL']), + ExpectedTerm = [<<"READ">>, + <<"WRITE">>, + <<"READ_ACP">>, + <<"WRITE_ACP">>, + <<"FULL_CONTROL">>], + ?assertEqual(ExpectedTerm, JsonTerm). + +erlang_time_to_json_term_test() -> + JsonTerm = erlang_time_to_json_term({1000, 100, 10}), + ExpectedTerm = {<<"creation_time">>, + {struct, + [{<<"mega_seconds">>, 1000}, + {<<"seconds">>, 100}, + {<<"micro_seconds">>, 10}]}}, + ?assertEqual(ExpectedTerm, JsonTerm). + +-endif. diff --git a/apps/stanchion/src/stanchion_app.erl b/apps/stanchion/src/stanchion_app.erl new file mode 100644 index 000000000..976135e3f --- /dev/null +++ b/apps/stanchion/src/stanchion_app.erl @@ -0,0 +1,102 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc Callbacks for the stanchion application. + +-module(stanchion_app). + +-behaviour(application). + +-include_lib("riak_cs/include/moss.hrl"). + +%% application API +-export([start/2, + stop/1]). + + +-type start_type() :: normal | {takeover, node()} | {failover, node()}. +-type start_args() :: term(). + +%% =================================================================== +%% Public API +%% =================================================================== + +%% @doc application start callback for stanchion. +-spec start(start_type(), start_args()) -> {ok, pid()} | + {error, term()}. +start(_Type, _StartArgs) -> + case stanchion_utils:riak_connection() of + {ok, Pid} -> + try + case check_admin_creds(Pid) of + ok -> + stanchion_sup:start_link(); + Error -> + Error + end + after + stanchion_utils:close_riak_connection(Pid) + end; + {error, Reason} -> + lager:error("Couldn't connect to Riak: ~p", [Reason]), + {error, Reason} + end. + +%% @doc application stop callback for stanchion. +-spec stop(term()) -> ok. +stop(_State) -> + ok. + +check_admin_creds(Pid) -> + case application:get_env(stanchion, admin_key) of + {ok, "admin-key"} -> + lager:warning("admin.key is defined as default. Please create" + " admin user and configure it.", []), + application:set_env(stanchion, admin_secret, "admin-secret"); + {ok, KeyId} -> + case application:get_env(stanchion, admin_secret) of + {ok, _} -> + lager:warning("admin.secret is ignored."); + _ -> + ok + end, + StrongOpts = [{r, quorum}, {pr, one}, {notfound_ok, false}], + case riakc_pb_socket:get(Pid, ?USER_BUCKET, KeyId, StrongOpts) of + {ok, Obj} -> + case stanchion_utils:from_riakc_obj(Obj, false) of + {ok, {User, _}} -> + Secret = User?RCS_USER.key_secret, + application:set_env(stanchion, admin_secret, Secret); + Error -> + Error + end; + {error, notfound} -> + lager:error("admin.key defined in stanchion.conf was not found." + "Please create it."), + {error, admin_not_configured}; + Error -> + lager:error("Error loading administrator configuration: ~p", + [Error]), + Error + end; + Error -> + Error + end. diff --git a/apps/stanchion/src/stanchion_auth.erl b/apps/stanchion/src/stanchion_auth.erl new file mode 100644 index 000000000..3d9d41af5 --- /dev/null +++ b/apps/stanchion/src/stanchion_auth.erl @@ -0,0 +1,162 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_auth). + +-include("stanchion.hrl"). + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). +-endif. + +-export([authenticate/2, + request_signature/4]). + +%% =================================================================== +%% Public API +%% =================================================================== + +-spec authenticate(term(), [string()]) -> ok | {error, atom()}. +authenticate(RD, [KeyId, Signature]) -> + case stanchion_utils:get_admin_creds() of + {ok, {AdminKeyId, AdminSecret}} -> + CalculatedSignature = signature(AdminSecret, RD), + _ = lager:debug("Presented Signature: ~p~nCalculated Signature: ~p~n", + [Signature, CalculatedSignature]), + case KeyId == AdminKeyId andalso + check_auth(Signature, CalculatedSignature) of + true -> + ok; + _ -> + {error, invalid_authentication} + end; + _ -> + {error, invalid_authentication} + end. + +%% Calculate a signature for inclusion in a client request. +-type http_verb() :: 'GET' | 'HEAD' | 'PUT' | 'POST' | 'DELETE'. +-spec request_signature(http_verb(), + [{string(), string()}], + string(), + string()) -> string(). +request_signature(HttpVerb, RawHeaders, Path, KeyData) -> + Headers = normalize_headers(RawHeaders), + BashoHeaders = extract_basho_headers(Headers), + case proplists:is_defined("x-basho-date", Headers) of + true -> + Date = "\n"; + false -> + Date = [proplists:get_value("date", Headers), "\n"] + end, + case proplists:get_value("content-md5", Headers) of + undefined -> + CMD5 = []; + CMD5 -> + ok + end, + case proplists:get_value("content-type", Headers) of + undefined -> + ContentType = []; + ContentType -> + ok + end, + STS = [atom_to_list(HttpVerb), + "\n", + CMD5, + "\n", + ContentType, + "\n", + Date, + BashoHeaders, + Path], + base64:encode_to_string(stanchion_utils:sha_mac(KeyData, STS)). + +%% =================================================================== +%% Internal functions +%% =================================================================== + +signature(KeyData, RD) -> + Headers = normalize_headers(get_request_headers(RD)), + BashoHeaders = extract_basho_headers(Headers), + Resource = wrq:path(RD), + case proplists:is_defined("x-basho-date", Headers) of + true -> + Date = "\n"; + false -> + Date = [wrq:get_req_header("date", RD), "\n"] + end, + case wrq:get_req_header("content-md5", RD) of + undefined -> + CMD5 = []; + CMD5 -> + ok + end, + case wrq:get_req_header("content-type", RD) of + undefined -> + ContentType = []; + ContentType -> + ok + end, + STS = [atom_to_list(wrq:method(RD)), "\n", + CMD5, + "\n", + ContentType, + "\n", + Date, + BashoHeaders, + Resource], + base64:encode_to_string(stanchion_utils:sha_mac(KeyData, STS)). + +check_auth(PresentedSignature, CalculatedSignature) -> + PresentedSignature == CalculatedSignature. + +get_request_headers(RD) -> + mochiweb_headers:to_list(wrq:req_headers(RD)). + +normalize_headers(Headers) -> + FilterFun = + fun({K, V}, Acc) -> + LowerKey = string:to_lower(any_to_list(K)), + [{LowerKey, V} | Acc] + end, + ordsets:from_list(lists:foldl(FilterFun, [], Headers)). + +extract_basho_headers(Headers) -> + FilterFun = + fun({K, V}, Acc) -> + case lists:prefix("x-basho-", K) of + true -> + [[K, ":", V, "\n"] | Acc]; + false -> + Acc + end + end, + ordsets:from_list(lists:foldl(FilterFun, [], Headers)). + +any_to_list(V) when is_list(V) -> + V; +any_to_list(V) when is_atom(V) -> + atom_to_list(V); +any_to_list(V) when is_binary(V) -> + binary_to_list(V); +any_to_list(V) when is_integer(V) -> + integer_to_list(V). diff --git a/apps/stanchion/src/stanchion_blockall_auth.erl b/apps/stanchion/src/stanchion_blockall_auth.erl new file mode 100644 index 000000000..cab0af3f6 --- /dev/null +++ b/apps/stanchion/src/stanchion_blockall_auth.erl @@ -0,0 +1,28 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_blockall_auth). + +-export([authenticate/2]). + +-spec authenticate(term(), [string()]) -> {error, atom()}. +authenticate(_RD, [Reason]) -> + {error, Reason}. diff --git a/apps/stanchion/src/stanchion_console.erl b/apps/stanchion/src/stanchion_console.erl new file mode 100644 index 000000000..62f2cfb5c --- /dev/null +++ b/apps/stanchion/src/stanchion_console.erl @@ -0,0 +1,41 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc Callbacks for the stanchion application. + +-module(stanchion_console). + +-export([version/1, + status/1]). + +%% =================================================================== +%% Public API +%% =================================================================== + +version(_) -> + {ok, Vsn} = application:get_env(stanchion, stanchion_version), + io:format("version : ~p~n", [Vsn]), + ok. + +status(_) -> + Stats = stanchion_stats:get_stats(), + [io:format("~s : ~p~n", [Key,Value]) || {Key,Value} <- Stats], + ok. diff --git a/apps/stanchion/src/stanchion_multipart.erl b/apps/stanchion/src/stanchion_multipart.erl new file mode 100644 index 000000000..17c38135b --- /dev/null +++ b/apps/stanchion/src/stanchion_multipart.erl @@ -0,0 +1,79 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_multipart). + +-export([check_no_multipart_uploads/2]). + +-include("stanchion.hrl"). +-include_lib("riak_cs/include/manifest.hrl"). + + +check_no_multipart_uploads(Bucket, RiakPid) -> + HashBucket = stanchion_utils:to_bucket_name(objects, Bucket), + + {{ok, Keys}, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:list_keys(RiakPid, HashBucket)), + stanchion_stats:update([riakc, list_all_manifest_keys], TAT), + + %% check all up + lists:all(fun(VKey) -> + {Key, Vsn} = rcs_common_manifest:decompose_versioned_key(VKey), + GetResult = stanchion_utils:get_manifests_raw(RiakPid, Bucket, Key, Vsn), + has_no_upload(GetResult) + end, Keys). + +has_no_upload({ok, Obj}) -> + Manifests = manifests_from_riak_object(Obj), + lists:all(fun({_UUID,Manifest}) -> + case Manifest?MANIFEST.state of + writing -> + %% if this is mp => false + not proplists:is_defined(multipart, Manifest?MANIFEST.props); + _ -> + true + end + end, Manifests); +has_no_upload({error, notfound}) -> true. + +-spec manifests_from_riak_object(riakc_obj:riakc_obj()) -> orddict:orddict(). +manifests_from_riak_object(RiakObject) -> + %% For example, riak_cs_manifest_fsm:get_and_update/4 may wish to + %% update the #riakc_obj without a roundtrip to Riak first. So we + %% need to see what the latest + Contents = try + %% get_update_value will return the updatevalue or + %% a single old original value. + [{riakc_obj:get_update_metadata(RiakObject), + riakc_obj:get_update_value(RiakObject)}] + catch throw:_ -> + %% Original value had many contents + riakc_obj:get_contents(RiakObject) + end, + DecodedSiblings = [binary_to_term(V) || + {_, V}=Content <- Contents, + not stanchion_utils:has_tombstone(Content)], + + %% Upgrade the manifests to be the latest erlang + %% record version + Upgraded = rcs_common_manifest_utils:upgrade_wrapped_manifests(DecodedSiblings), + + %% resolve the siblings + rcs_common_manifest_resolution:resolve(Upgraded). diff --git a/apps/stanchion/src/stanchion_passthru_auth.erl b/apps/stanchion/src/stanchion_passthru_auth.erl new file mode 100644 index 000000000..6665b3b93 --- /dev/null +++ b/apps/stanchion/src/stanchion_passthru_auth.erl @@ -0,0 +1,28 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_passthru_auth). + +-export([authenticate/2]). + +-spec authenticate(term(), [string()]) -> ok. +authenticate(_RD, _) -> + ok. diff --git a/apps/stanchion/src/stanchion_response.erl b/apps/stanchion/src/stanchion_response.erl new file mode 100644 index 000000000..a99910f9a --- /dev/null +++ b/apps/stanchion/src/stanchion_response.erl @@ -0,0 +1,119 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_response). + +-export([api_error/3, + respond/4, + error_response/5, + list_buckets_response/3]). + +-define(xml_prolog, ""). + +error_message(invalid_access_key_id) -> + "The AWS Access Key Id you provided does not exist in our records."; +error_message(access_denied) -> + "Access Denied"; +error_message(bucket_not_empty) -> + "The bucket you tried to delete is not empty."; +error_message(bucket_already_exists) -> + "The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again."; +error_message(user_already_exists) -> + "The specified email address has already been registered. Email addresses must be unique among all users of the system. Please try again with a different email address."; +error_message(entity_too_large) -> + "Your proposed upload exceeds the maximum allowed object size."; +error_message(no_such_bucket) -> + "The specified bucket does not exist."; +error_message({riak_connect_failed, Reason}) -> + io_lib:format("Unable to establish connection to Riak. Reason: ~p", [Reason]); +error_message({unsatisfied_constraint, Constraint}) -> + io_lib:format("Unable to complete operation due to ~s constraint violation.", [Constraint]); +error_message(multipart_upload_remains) -> + "Multipart uploads still remaining."; +error_message(unknown_error) -> + "Unexpected error occurred. Please see the stanchion error log for more details.". + +error_code(invalid_access_key_id) -> "InvalidAccessKeyId"; +error_code(access_denied) -> "AccessDenied"; +error_code(bucket_not_empty) -> "BucketNotEmpty"; +error_code(bucket_already_exists) -> "BucketAlreadyExists"; +error_code(user_already_exists) -> "UserAlreadyExists"; +error_code(entity_too_large) -> "EntityTooLarge"; +error_code(no_such_bucket) -> "NoSuchBucket"; +error_code({riak_connect_failed, _}) -> "RiakConnectFailed"; +error_code({unsatisfied_constraint, _}) -> "UnsatisfiedConstraint"; +error_code(multipart_upload_remains) -> "MultipartUploadRemaining"; +error_code(unknown_error) -> "UnexpectedError". + +status_code(access_denied) -> 403; +status_code(bucket_not_empty) -> 409; +status_code(bucket_already_exists) -> 409; +status_code(user_already_exists) -> 409; +status_code(entity_too_large) -> 400; +status_code(invalid_access_key_id) -> 403; +status_code(no_such_bucket) -> 404; +status_code({riak_connect_failed, _}) -> 503; +status_code({unsatisfied_constraint, _}) -> 500; +status_code(multipart_upload_remains) -> 409; +status_code(unknown_error) -> 500. + +respond(StatusCode, Body, ReqData, Ctx) -> + {{halt, StatusCode}, wrq:set_resp_body(Body, ReqData), Ctx}. + +api_error(Error, ReqData, Ctx) when is_binary(Error) -> + api_error(binary_to_list(Error), ReqData, Ctx); +api_error(Error, ReqData, Ctx) when is_list(Error) -> + api_error(error_string_to_atom(Error), ReqData, Ctx); +api_error(Error, ReqData, Ctx) -> + error_response(status_code(Error), error_code(Error), error_message(Error), + ReqData, Ctx). + +error_response(StatusCode, Code, Message, RD, Ctx) -> + XmlDoc = [{'Error', [{'Code', [Code]}, + {'Message', [Message]}, + {'Resource', [wrq:path(RD)]}, + {'RequestId', [""]}]}], + respond(StatusCode, export_xml(XmlDoc), RD, Ctx). + + +list_buckets_response(BucketData, RD, Ctx) -> + BucketsDoc = [{'Bucket', + [{'Name', [binary_to_list(Bucket)]}, + {'Owner', [binary_to_list(Owner)]}]} + || {Bucket, Owner} <- BucketData], + Contents = [{'Buckets', BucketsDoc}], + XmlDoc = [{'ListBucketsResult', Contents}], + respond(200, export_xml(XmlDoc), RD, Ctx). + +export_xml(XmlDoc) -> + unicode:characters_to_binary( + xmerl:export_simple(XmlDoc, xmerl_xml, [{prolog, ?xml_prolog}])). + +error_string_to_atom("{r_val_unsatisfied," ++ _) -> + {unsatisfied_constraint, "r"}; +error_string_to_atom("{w_val_unsatisfied," ++ _) -> + {unsatisfied_constraint, "w"}; +error_string_to_atom("{pr_val_unsatisfied," ++ _) -> + {unsatisfied_constraint, "pr"}; +error_string_to_atom("{pw_val_unsatisfied," ++ _) -> + {unsatisfied_constraint, "pw"}; +error_string_to_atom(_) -> + unknown_error. diff --git a/apps/stanchion/src/stanchion_server.erl b/apps/stanchion/src/stanchion_server.erl new file mode 100644 index 000000000..755b3dc7a --- /dev/null +++ b/apps/stanchion/src/stanchion_server.erl @@ -0,0 +1,265 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc Module to process bucket creation requests. + +-module(stanchion_server). + +-behaviour(gen_server). + +-include("stanchion.hrl"). + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). + +%% Test API +-export([test_link/0]). + +-endif. + +%% API +-export([start_link/0, + create_bucket/1, + create_user/1, + delete_bucket/2, + set_bucket_acl/2, + set_bucket_policy/2, + set_bucket_versioning/2, + delete_bucket_policy/2, + stop/1, + update_user/2, + msgq_len/0]). + +%% gen_server callbacks +-export([init/1, + handle_call/3, + handle_cast/2, + handle_info/2, + terminate/2, + code_change/3]). + +-record(state, {riak_ip :: undefined | string(), + riak_port :: undefined | pos_integer()}). +-type state() :: #state{}. + +%% This ?TURNAROUND_TIME has another ?TURNAROUND_TIME at gen_server +%% process, to measure both waiting time and service time. +-define(MEASURE(Name, Call), + begin + {{Result_____, ServiceTime____}, + TATus_____} = ?TURNAROUND_TIME(Call), + WaitingTime____ = TATus_____ - ServiceTime____, + _ = lager:debug("~p ~p ~p", [Name, Result_____, ServiceTime____]), + stanchion_stats:update(Name, ServiceTime____, WaitingTime____), + Result_____ + end). + +%% =================================================================== +%% Public API +%% =================================================================== + +%% @doc Start a `stanchion_server'. +-spec start_link() -> {ok, pid()} | {error, term()}. +start_link() -> + gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). + +%% @doc Attempt to create a bucket +-spec create_bucket([{term(), term()}]) -> ok | {error, term()}. +create_bucket(BucketData) -> + ?MEASURE([bucket, create], + gen_server:call(?MODULE, + {create_bucket, BucketData}, + infinity)). + +%% @doc Attempt to create a bucket +-spec create_user([{term(), term()}]) -> + ok | + {error, term()} | + {error, stanchion_utils:riak_connect_failed()}. +create_user(UserData) -> + ?MEASURE([user, create], + gen_server:call(?MODULE, + {create_user, UserData}, + infinity)). + +%% @doc Attempt to delete a bucket +-spec delete_bucket(binary(), binary()) -> ok | {error, term()}. +delete_bucket(Bucket, UserId) -> + ?MEASURE([bucket, delete], + gen_server:call(?MODULE, + {delete_bucket, Bucket, UserId}, + infinity)). + +%% @doc Set the ACL for a bucket +-spec set_bucket_acl(binary(), term()) -> ok | {error, term()}. +set_bucket_acl(Bucket, FieldList) -> + ?MEASURE([bucket, put_acl], + gen_server:call(?MODULE, + {set_acl, Bucket, FieldList}, + infinity)). + +%% @doc Set the policy for a bucket +-spec set_bucket_policy(binary(), term()) -> ok | {error, term()}. +set_bucket_policy(Bucket, FieldList) -> + ?MEASURE([bucket, set_policy], + gen_server:call(?MODULE, + {set_policy, Bucket, FieldList}, + infinity)). + +%% @doc Set the versioning option for a bucket +-spec set_bucket_versioning(binary(), term()) -> ok | {error, term()}. +set_bucket_versioning(Bucket, FieldList) -> + ?MEASURE([bucket, set_versioning], + gen_server:call(?MODULE, + {set_versioning, Bucket, FieldList}, + infinity)). + +%% @doc delete the policy for a bucket +-spec delete_bucket_policy(binary(), binary()) -> ok | {error, term()}. +delete_bucket_policy(Bucket, RequesterId) -> + ?MEASURE([bucket, delete_policy], + gen_server:call(?MODULE, + {delete_policy, Bucket, RequesterId}, + infinity)). + +stop(Pid) -> + gen_server:cast(Pid, stop). + +%% @doc Attempt to update a bucket +-spec update_user(string(), [{term(), term()}]) -> + ok | + {error, term()} | + {error, stanchion_utils:riak_connect_failed()}. +update_user(KeyId, UserData) -> + ?MEASURE([user, update], + gen_server:call(?MODULE, + {update_user, KeyId, UserData}, + infinity)). + +-spec msgq_len() -> non_neg_integer(). +msgq_len() -> + Pid = whereis(?MODULE), + {message_queue_len, Len} = erlang:process_info(Pid, message_queue_len), + Len. + +%% =================================================================== +%% gen_server callbacks +%% =================================================================== + +%% @doc Initialize the server. +-spec init([] | test) -> {ok, state()}. +init([]) -> + {ok, #state{}}; +init(test) -> + {ok, #state{}}. + +%% @doc Handle synchronous commands issued via exported functions. +-spec handle_call(term(), {pid(), term()}, state()) -> + {reply, ok, state()}. +handle_call({create_bucket, BucketData}, + _From, + State=#state{}) -> + Result = ?TURNAROUND_TIME(stanchion_utils:create_bucket(BucketData)), + {reply, Result, State}; +handle_call({create_user, UserData}, + _From, + State=#state{}) -> + Result = ?TURNAROUND_TIME(stanchion_utils:create_user(UserData)), + {reply, Result, State}; +handle_call({update_user, KeyId, UserData}, + _From, + State=#state{}) -> + Result = ?TURNAROUND_TIME(stanchion_utils:update_user(KeyId, UserData)), + {reply, Result, State}; +handle_call({delete_bucket, Bucket, OwnerId}, + _From, + State=#state{}) -> + Result = ?TURNAROUND_TIME(stanchion_utils:delete_bucket(Bucket, OwnerId)), + {reply, Result, State}; +handle_call({set_acl, Bucket, FieldList}, + _From, + State=#state{}) -> + Result = ?TURNAROUND_TIME(stanchion_utils:set_bucket_acl(Bucket, FieldList)), + {reply, Result, State}; +handle_call({set_policy, Bucket, FieldList}, + _From, + State=#state{}) -> + Result = ?TURNAROUND_TIME(stanchion_utils:set_bucket_policy(Bucket, FieldList)), + {reply, Result, State}; +handle_call({set_versioning, Bucket, FieldList}, + _From, + State=#state{}) -> + Result = ?TURNAROUND_TIME(stanchion_utils:set_bucket_versioning(Bucket, FieldList)), + {reply, Result, State}; +handle_call({delete_policy, Bucket, RequesterId}, + _From, + State=#state{}) -> + Result = ?TURNAROUND_TIME(stanchion_utils:delete_bucket_policy(Bucket, RequesterId)), + {reply, Result, State}; +handle_call(_Msg, _From, State) -> + {reply, ok, State}. + +%% @doc Handle asynchronous commands issued via +%% the exported functions. +-spec handle_cast(term(), state()) -> + {noreply, state()}. +handle_cast(list_buckets, State) -> + %% @TODO Handle bucket listing and reply + {noreply, State}; +handle_cast(stop, State) -> + {stop, normal, State}; +handle_cast(Event, State) -> + _ = lager:warning("Received unknown cast event: ~p", [Event]), + {noreply, State}. + +%% @doc @TODO +-spec handle_info(term(), state()) -> + {noreply, state()}. +handle_info(_Info, State) -> + {noreply, State}. + +%% @doc Unused. +-spec terminate(term(), state()) -> ok. +terminate(_Reason, _State) -> + ok. + +%% @doc Unused. +-spec code_change(term(), state(), term()) -> + {ok, state()}. +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%% ==================================================================== +%% Internal functions +%% ==================================================================== + +%% =================================================================== +%% Test API +%% =================================================================== + +-ifdef(TEST). + +%% @doc Start a `stanchion_server' for testing. +-spec test_link() -> {ok, pid()} | {error, term()}. +test_link() -> + gen_server:start_link(?MODULE, test, []). + +-endif. diff --git a/apps/stanchion/src/stanchion_server_sup.erl b/apps/stanchion/src/stanchion_server_sup.erl new file mode 100644 index 000000000..e2bcae50d --- /dev/null +++ b/apps/stanchion/src/stanchion_server_sup.erl @@ -0,0 +1,60 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_server_sup). + +-behaviour(supervisor). + +%% API +-export([start_link/0]). + +%% Supervisor callbacks +-export([init/1]). + +%% =================================================================== +%% API functions +%% =================================================================== + +%% @doc API for starting the supervisor. +-spec start_link() -> {ok, pid()} | ignore | {error, term()}. +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +%% =================================================================== +%% Supervisor callbacks +%% =================================================================== + +%% @doc Initialize this supervisor. This is a `one_for_one', +%% whose child spec is for starting a `stanchion_server' process. +-spec init([]) -> {ok, {supervisor:sup_flags(), [supervisor:child_spec()]}}. +init([]) -> + SupFlags = #{strategy => one_for_one, + intensity => 1000, + period => 3600}, + + ServerSpec = #{id => stanchion_server, + start => {stanchion_server, start_link, []}, + restart => permanent, + shutdown => 2000, + type => worker, + modules => [stanchion_server]}, + + {ok, {SupFlags, [ServerSpec]}}. diff --git a/apps/stanchion/src/stanchion_stats.erl b/apps/stanchion/src/stanchion_stats.erl new file mode 100644 index 000000000..8348a81e8 --- /dev/null +++ b/apps/stanchion/src/stanchion_stats.erl @@ -0,0 +1,269 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_stats). + +%% API +-export([safe_update/2, + update/2, + update/3, + update_with_start/2, + report_json/0, + %% report_pretty_json/0, + get_stats/0]). + +-export([init/0]). + +-type key() :: [atom()]. +-export_type([key/0]). + +-spec duration_metrics() -> [key()]. +duration_metrics() -> + [ + [bucket, create], + [bucket, delete], + [bucket, put_acl], + [bucket, set_policy], + [bucket, delete_policy], + [bucket, set_versioning], + [user, create], + [user, update], + + %% Riak PB client, per key operations + [riakc, get_cs_bucket], + [riakc, put_cs_bucket], %% Always strong put + [riakc, get_cs_user_strong], + [riakc, put_cs_user], + [riakc, get_manifest], + + %% Riak PB client, coverage operations + [riakc, list_all_manifest_keys], + [riakc, get_user_by_index] + ]. + +duration_only_metrics() -> + [[waiting]]. + +duration_subkeys() -> + [{[], spiral}, + {[time], histogram}]. + +duration_only_subkeys() -> + [{[time], histogram}]. + +%% ==================================================================== +%% API +%% ==================================================================== + + + +-spec safe_update(key(), integer()) -> ok | {error, any()}. +safe_update(BaseId, ElapsedUs) -> + %% Just in case those metrics happen to be not registered; should + %% be a bug and also should not interrupt handling requests by + %% crashing. + try + update(BaseId, ElapsedUs) + catch T:E -> + lager:error("Failed on storing some metrics: ~p,~p", [T,E]) + end. + +-spec update(key(), integer()) -> ok | {error, any()}. +update(BaseId, ElapsedUs) -> + _ = lager:debug("Updating ~p (~p)", [BaseId, ElapsedUs]), + ok = exometer:update([stanchion|BaseId], 1), + ok = exometer:update([stanchion,time|BaseId], ElapsedUs). + +update(BaseId, ServiceTime, WaitingTime) -> + update(BaseId, ServiceTime), + ok = exometer:update([stanchion, time, waiting], WaitingTime). + +-spec update_with_start(key(), erlang:timestamp()) -> + ok | {error, any()}. +update_with_start(BaseId, StartTime) -> + update(BaseId, timer:now_diff(os:timestamp(), StartTime)). + +-spec report_json() -> string(). +report_json() -> + lists:flatten(mochijson2:encode({struct, get_stats()})). + +all_metrics() -> + Metrics0 = [{Subkey ++ Metric, Type, [], []} + || Metric <- duration_only_metrics(), + {Subkey, Type} <- duration_only_subkeys()], + Metrics1 = [{Subkey ++ Metric, Type, [], []} + || Metric <- duration_metrics(), + {Subkey, Type} <- duration_subkeys()], + Metrics0 ++ Metrics1. + +-spec get_stats() -> proplists:proplist(). +get_stats() -> + DurationStats = + [report_exometer_item(Key, SubKey, ExometerType) || + Key <- duration_metrics(), + {SubKey, ExometerType} <- duration_subkeys()], + DurationOnlyStats = + [report_exometer_item(Key, SubKey, ExometerType) || + Key <- duration_only_metrics(), + {SubKey, ExometerType} <- duration_only_subkeys()], + MsgStats = [{stanchion_server_msgq_len, stanchion_server:msgq_len()}], + lists:flatten([DurationStats, MsgStats, DurationOnlyStats, + report_mochiweb(), report_memory(), + report_system()]). + +init() -> + _ = [init_item(I) || I <- all_metrics()], + ok. + +%% ==================================================================== +%% Internal +%% ==================================================================== + +init_item({Name, Type, Opts, _Aliases}) -> + ok = exometer:re_register([stanchion|Name], Type, Opts). + +-spec report_exometer_item(key(), [atom()], exometer:type()) -> [{atom(), integer()}]. +report_exometer_item(Key, SubKey, ExometerType) -> + _ = lager:debug("~p", [{Key, SubKey, ExometerType}]), + AtomKeys = [metric_to_atom(Key ++ SubKey, Suffix) || + Suffix <- suffixes(ExometerType)], + {ok, Values} = exometer:get_value([stanchion | SubKey ++ Key], + datapoints(ExometerType)), + [{AtomKey, Value} || + {AtomKey, {_DP, Value}} <- lists:zip(AtomKeys, Values)]. + +datapoints(histogram) -> + [mean, median, 95, 99, max]; +datapoints(spiral) -> + [one, count]. + +suffixes(histogram) -> + ["mean", "median", "95", "99", "100"]; +suffixes(spiral) -> + ["one", "total"]. + +-spec report_mochiweb() -> [[{atom(), integer()}]]. +report_mochiweb() -> + [report_mochiweb(webmachine_mochiweb)]. + +report_mochiweb(Id) -> + Children = supervisor:which_children(stanchion_sup), + case lists:keyfind(Id, 1, Children) of + false -> []; + {_, Pid, _, _} -> report_mochiweb(Id, Pid) + end. + +report_mochiweb(Id, Pid) -> + [{metric_to_atom([Id], PropKey), gen_server:call(Pid, {get, PropKey})} || + PropKey <- [active_sockets, waiting_acceptors, port]]. + +-spec report_memory() -> [{atom(), integer()}]. +report_memory() -> + lists:map(fun({K, V}) -> {metric_to_atom([memory], K), V} end, erlang:memory()). + +-spec report_system() -> [{atom(), integer()}]. +report_system() -> + [{nodename, erlang:node()}, + {connected_nodes, erlang:nodes()}, + {sys_driver_version, list_to_binary(erlang:system_info(driver_version))}, + {sys_heap_type, erlang:system_info(heap_type)}, + {sys_logical_processors, erlang:system_info(logical_processors)}, + {sys_monitor_count, system_monitor_count()}, + {sys_otp_release, list_to_binary(erlang:system_info(otp_release))}, + {sys_port_count, erlang:system_info(port_count)}, + {sys_process_count, erlang:system_info(process_count)}, + {sys_smp_support, erlang:system_info(smp_support)}, + {sys_system_version, system_version()}, + {sys_system_architecture, system_architecture()}, + {sys_threads_enabled, erlang:system_info(threads)}, + {sys_thread_pool_size, erlang:system_info(thread_pool_size)}, + {sys_wordsize, erlang:system_info(wordsize)}]. + +system_monitor_count() -> + lists:foldl(fun(Pid, Count) -> + case erlang:process_info(Pid, monitors) of + {monitors, Mons} -> + Count + length(Mons); + _ -> + Count + end + end, 0, processes()). + +system_version() -> + list_to_binary(string:strip(erlang:system_info(system_version), right, $\n)). + +system_architecture() -> + list_to_binary(erlang:system_info(system_architecture)). + +metric_to_atom(Key, Suffix) when is_atom(Suffix) -> + metric_to_atom(Key, atom_to_list(Suffix)); +metric_to_atom(Key, Suffix) -> + StringKey = string:join([atom_to_list(Token) || Token <- Key], "_"), + list_to_atom(lists:flatten([StringKey, $_, Suffix])). + +-ifdef(TEST). + +-include_lib("eunit/include/eunit.hrl"). + +stats_metric_test() -> + [begin + case hd(Key) of + time -> + ?assertEqual(histogram, Type); + _ -> + ?assertNotEqual(false, lists:keyfind(Key, 1, all_metrics())), + ?assertEqual(spiral, Type) + end, + ?assertEqual([], Options) + end || {Key, Type, Options, _} <- all_metrics()]. + +stats_test_() -> + Apps = [setup, compiler, syntax_tools, exometer_core], + {setup, + fun() -> + [application:ensure_all_started(App) || App <- Apps], + ok = stanchion_stats:init() + end, + fun(_) -> + [ok = application:stop(App) || App <- Apps] + end, + [{inparallel, [fun() -> + %% ?debugVal(Key), + case hd(Key) of + time -> ok; + _ -> stanchion_stats:update(Key, 16#deadbeef, 16#deadbeef) + end + end || {Key, _, _, _} <- all_metrics()]}, + fun() -> + [begin + ?debugVal(Key), + CountItems = report_exometer_item(Key, [], spiral), + DurationItems = report_exometer_item(Key, [time], histogram), + ?debugVal(CountItems), + ?debugVal(DurationItems), + ?assertMatch([1, 1], + [N || {_, N} <- CountItems]), + ?assertMatch([16#deadbeef, 16#deadbeef, 16#deadbeef, 16#deadbeef, 16#deadbeef], + [N || {_, N} <- DurationItems]) + end || Key <- duration_metrics()] + end]}. + +-endif. diff --git a/apps/stanchion/src/stanchion_sup.erl b/apps/stanchion/src/stanchion_sup.erl new file mode 100644 index 000000000..3373761aa --- /dev/null +++ b/apps/stanchion/src/stanchion_sup.erl @@ -0,0 +1,92 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc Supervisor for the `stanchion' application. + +-module(stanchion_sup). + +-behaviour(supervisor). + +%% Public API +-export([start_link/0]). + +%% supervisor callbacks +-export([init/1]). + +-type startlink_err() :: {'already_started', pid()} | 'shutdown' | term(). +-type startlink_ret() :: {'ok', pid()} | 'ignore' | {'error', startlink_err()}. + +%% =================================================================== +%% Public API +%% =================================================================== + +%% @doc API for starting the supervisor. +-spec start_link() -> startlink_ret(). +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +%% @doc supervisor callback. +-spec init([]) -> {ok, {supervisor:sup_flags(), + [supervisor:child_spec()]}} | ignore. +init([]) -> + {Ip, Port} = case application:get_env(stanchion, host) of + {ok, {_, _} = HostPort} -> HostPort; + undefined -> {"0.0.0.0", 80} + end, + + stanchion_stats:init(), + %% Hide any bags from user-facing parts. + case application:get_env(stanchion, supercluster_members) of + undefined -> ok; + {ok, Bags} -> application:set_env(stanchion, bags, Bags) + end, + + %% Create child specifications + WebConfig1 = [ + {dispatch, stanchion_web:dispatch_table()}, + {ip, Ip}, + {port, Port}, + {nodelay, true}, + {log_dir, "log"}, + %% {rewrite_module, stanchion_wm_rewrite}, + {error_handler, stanchion_wm_error_handler} + ], + WebConfig = + case application:get_env(stanchion, ssl) of + {ok, SSLOpts} -> + WebConfig1 ++ [{ssl, true}, + {ssl_opts, SSLOpts}]; + undefined -> + WebConfig1 + end, + Web = #{id => webmachine_mochiweb, + start => {webmachine_mochiweb, start, [WebConfig]}, + restart => permanent, + shutdown => 5000, + modules => dynamic}, + ServerSup = #{id => stanchion_server_sup, + start => {stanchion_server_sup, start_link, []}, + restart => permanent, + shutdown => 5000, + modules => dynamic}, + Processes = [ServerSup, Web], + {ok, { #{strategy => one_for_one, + intensity => 10, + period => 10}, Processes} }. diff --git a/apps/stanchion/src/stanchion_utils.erl b/apps/stanchion/src/stanchion_utils.erl new file mode 100644 index 000000000..076609b8a --- /dev/null +++ b/apps/stanchion/src/stanchion_utils.erl @@ -0,0 +1,964 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc stanchion utility functions + +-module(stanchion_utils). + +%% Public API +-export([binary_to_hexlist/1, + close_riak_connection/1, + create_bucket/1, + create_user/1, + get_user/2, + from_riakc_obj/2, + delete_bucket/2, + from_bucket_name/1, + get_admin_creds/0, + get_keys_and_values/1, + get_manifests/4, + get_manifests_raw/4, + has_tombstone/1, + pow/2, + pow/3, + riak_connection/0, + riak_connection/2, + set_bucket_acl/2, + set_bucket_policy/2, + set_bucket_versioning/2, + delete_bucket_policy/2, + timestamp/1, + to_bucket_name/2, + update_user/2, + sha_mac/2, + md5/1 + ]). + +-include("stanchion.hrl"). +-include_lib("riak_cs/include/manifest.hrl"). +-include_lib("riak_cs/include/moss.hrl"). +-include_lib("riakc/include/riakc.hrl"). +-include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). + +-define(EMAIL_INDEX, <<"email_bin">>). +-define(ID_INDEX, <<"c_id_bin">>). +-define(OBJECT_BUCKET_PREFIX, <<"0o:">>). % Version # = 0 +-define(BLOCK_BUCKET_PREFIX, <<"0b:">>). % Version # = 0 + +-type bucket_op() :: create | update_acl | delete | update_policy | delete_policy | update_versioning. +-type bucket_op_option() :: {acl, acl()} + | {policy, binary()} + | delete_policy + | {bag, binary()} + | {versioning, binary()}. +-type bucket_op_options() :: [bucket_op_option()]. + +%% =================================================================== +%% Public API +%% =================================================================== + +%% @doc Convert the passed binary into a string where the numbers are represented in hexadecimal (lowercase and 0 prefilled). +-spec binary_to_hexlist(binary()) -> string(). +binary_to_hexlist(Bin) -> + XBin = + [ begin + Hex = erlang:integer_to_list(X, 16), + if + X < 16 -> + lists:flatten(["0" | Hex]); + true -> + Hex + end + end || X <- binary_to_list(Bin)], + string:to_lower(lists:flatten(XBin)). + +%% @doc Close a protobufs connection to the riak cluster. +-spec close_riak_connection(pid()) -> ok. +close_riak_connection(Pid) -> + riakc_pb_socket:stop(Pid). + +%% @doc Create a bucket in the global namespace or return +%% an error if it already exists. +-spec create_bucket([{term(), term()}]) -> ok | {error, term()}. +create_bucket(BucketFields) -> + %% @TODO Check for missing fields + Bucket = proplists:get_value(<<"bucket">>, BucketFields, <<>>), + BagId = proplists:get_value(<<"bag">>, BucketFields, undefined), + OwnerId = proplists:get_value(<<"requester">>, BucketFields, <<>>), + AclJson = proplists:get_value(<<"acl">>, BucketFields, []), + Acl = stanchion_acl_utils:acl_from_json(AclJson), + do_bucket_op(Bucket, OwnerId, [{acl, Acl}, {bag, BagId}], create). + +%% @doc Attmpt to create a new user +-spec create_user([{term(), term()}]) -> ok | {error, riak_connect_failed() | term()}. +create_user(UserFields) -> + %% @TODO Check for missing fields + UserName = binary_to_list(proplists:get_value(<<"name">>, UserFields, <<>>)), + DisplayName = binary_to_list(proplists:get_value(<<"display_name">>, UserFields, <<>>)), + Email = proplists:get_value(<<"email">>, UserFields, <<>>), + KeyId = binary_to_list(proplists:get_value(<<"key_id">>, UserFields, <<>>)), + KeySecret = binary_to_list(proplists:get_value(<<"key_secret">>, UserFields, <<>>)), + CanonicalId = binary_to_list(proplists:get_value(<<"id">>, UserFields, <<>>)), + case riak_connection() of + {ok, RiakPid} -> + try + case email_available(Email, RiakPid) of + true -> + User = ?MOSS_USER{name=UserName, + display_name=DisplayName, + email=binary_to_list(Email), + key_id=KeyId, + key_secret=KeySecret, + canonical_id=CanonicalId}, + save_user(User, RiakPid); + {false, Reason1} -> + {error, Reason1} + end + catch T:E -> + _ = lager:error("Error on creating user ~s: ~p", + [KeyId, {T, E}]), + {error, {T, E}} + after + close_riak_connection(RiakPid) + end; + {error, _} = Else -> + Else + end. + +%% @doc Delete a bucket +-spec delete_bucket(binary(), binary()) -> ok | {error, term()}. +delete_bucket(Bucket, OwnerId) -> + do_bucket_op(Bucket, OwnerId, [{acl, ?ACL{}}], delete). + +%% Get the root bucket name for either a MOSS object +%% bucket or the data block bucket name. +-spec from_bucket_name(binary()) -> {'blocks' | 'objects', binary()}. +from_bucket_name(BucketNameWithPrefix) -> + BlocksName = ?BLOCK_BUCKET_PREFIX, + ObjectsName = ?OBJECT_BUCKET_PREFIX, + BlockByteSize = byte_size(BlocksName), + ObjectsByteSize = byte_size(ObjectsName), + + case BucketNameWithPrefix of + <> -> + {blocks, BucketName}; + <> -> + {objects, BucketName} + end. + +%% @doc Return the credentials of the admin user +-spec get_admin_creds() -> {ok, {string(), string()}} | {error, term()}. +get_admin_creds() -> + case application:get_env(stanchion, admin_key) of + {ok, KeyId} -> + case application:get_env(stanchion, admin_secret) of + {ok, Secret} -> + {ok, {KeyId, Secret}}; + undefined -> + _ = lager:warning("The admin user's secret has not been defined."), + {error, secret_undefined} + end; + undefined -> + _ = lager:warning("The admin user's key id has not been defined."), + {error, key_id_undefined} + end. + +%% @doc +-spec get_manifests(pid(), binary(), binary(), binary()) -> + {ok, term(), term()} | {error, notfound}. +get_manifests(RiakcPid, Bucket, Key, Vsn) -> + case get_manifests_raw(RiakcPid, Bucket, Key, Vsn) of + {ok, Object} -> + DecodedSiblings = [binary_to_term(V) || + {_, V}=Content <- riakc_obj:get_contents(Object), + not has_tombstone(Content)], + + %% Upgrade the manifests to be the latest erlang + %% record version + Upgraded = rcs_common_manifest_utils:upgrade_wrapped_manifests(DecodedSiblings), + + %% resolve the siblings + Resolved = rcs_common_manifest_resolution:resolve(Upgraded), + + %% prune old scheduled_delete manifests + + %% commented out because we don't have the + %% riak_cs_gc module + Pruned = rcs_common_manifest_utils:prune( + Resolved, erlang:timestamp(), + 50, %% riak_cs defaults for max_scheduled_delete_manifests and + 86400), %% leeway_seconds + {ok, Object, Pruned}; + {error, notfound} = NotFound -> + NotFound + end. + +%% @doc Determine if a set of contents of a riak object has a tombstone. +-spec has_tombstone({dict:dict(), binary()}) -> boolean(). +has_tombstone({_, <<>>}) -> + true; +has_tombstone({MD, _V}) -> + dict:is_key(<<"X-Riak-Deleted">>, MD) =:= true. + +%% @doc List the keys from a bucket +list_keys(BucketName, RiakPid) -> + case ?TURNAROUND_TIME(riakc_pb_socket:list_keys(RiakPid, BucketName)) of + {{ok, Keys}, TAT} -> + stanchion_stats:update([riakc, list_all_manifest_keys], TAT), + {ok, lists:sort(Keys)}; + {{error, _} = ER, TAT} -> + stanchion_stats:update([riakc, list_all_manifest_keys], TAT), + ER + end. + +%% @doc Integer version of the standard pow() function; call the recursive accumulator to calculate. +-spec pow(integer(), integer()) -> integer(). +pow(Base, Power) -> + pow(Base, Power, 1). + +%% @doc Integer version of the standard pow() function. +-spec pow(integer(), integer(), integer()) -> integer(). +pow(Base, Power, Acc) -> + case Power of + 0 -> + Acc; + _ -> + pow(Base, Power - 1, Acc * Base) + end. + +%% @doc Store a new bucket in Riak +%% though whole metadata itself is a dict, a metadata of ?MD_USERMETA is +%% proplists of {?MD_ACL, ACL::binary()}|{?MD_POLICY, PolicyBin::binary()}| +%% {?MD_BAG, BagId::binary()}, {?MD_VERSIONING, bucket_versioning_option()}}. +%% should preserve other metadata. ACL and Policy can be overwritten. +-spec put_bucket(term(), binary(), bucket_op_options(), pid()) -> + ok | {error, term()}. +put_bucket(BucketObj, OwnerId, Opts, RiakPid) -> + PutOptions = [{w, all}, {pw, all}], + UpdBucketObj0 = riakc_obj:update_value(BucketObj, OwnerId), + MD = case riakc_obj:get_metadatas(UpdBucketObj0) of + [] -> % create + dict:from_list([{?MD_USERMETA, []}]); + [MD0] -> MD0; + _E -> + MsgData = {siblings, riakc_obj:key(BucketObj)}, + _ = lager:error("bucket has siblings: ~p", [MsgData]), + throw(MsgData) % @TODO: data broken; handle this + end, + MetaData = make_new_metadata(MD, Opts), + UpdBucketObj = riakc_obj:update_metadata(UpdBucketObj0, MetaData), + {Result, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:put(RiakPid, UpdBucketObj, PutOptions)), + stanchion_stats:update([riakc, put_cs_bucket], TAT), + Result. + +-spec make_new_metadata(dict:dict(), bucket_op_options()) -> dict:dict(). +make_new_metadata(MD, Opts) -> + MetaVals = dict:fetch(?MD_USERMETA, MD), + UserMetaData = make_new_user_metadata(MetaVals, Opts), + dict:store(?MD_USERMETA, UserMetaData, dict:erase(?MD_USERMETA, MD)). + +-spec make_new_user_metadata(proplists:proplist(), bucket_op_options()) -> proplists:proplist(). +make_new_user_metadata(MetaVals, [])-> + MetaVals; +make_new_user_metadata(MetaVals, [{acl, Acl} | Opts]) -> + make_new_user_metadata(replace_meta(?MD_ACL, Acl, MetaVals), Opts); +make_new_user_metadata(MetaVals, [{policy, Policy} | Opts]) -> + make_new_user_metadata(replace_meta(?MD_POLICY, Policy, MetaVals), Opts); +make_new_user_metadata(MetaVals, [{bag, undefined} | Opts]) -> + make_new_user_metadata(MetaVals, Opts); +make_new_user_metadata(MetaVals, [{bag, BagId} | Opts]) -> + make_new_user_metadata(replace_meta(?MD_BAG, BagId, MetaVals), Opts); +make_new_user_metadata(MetaVals, [delete_policy | Opts]) -> + make_new_user_metadata(proplists:delete(?MD_POLICY, MetaVals), Opts); +make_new_user_metadata(MetaVals, [{versioning, VsnOpt} | Opts]) -> + make_new_user_metadata(replace_meta(?MD_VERSIONING, VsnOpt, MetaVals), Opts). + +replace_meta(Key, NewValue, MetaVals) -> + [{Key, term_to_binary(NewValue)} | proplists:delete(Key, MetaVals)]. + +%% @doc Get a protobufs connection to the riak cluster +%% using information from the application environment. +-type riak_connect_failed() :: {riak_connect_failed, tuple()}. +-spec riak_connection() -> {ok, pid()} | {error, riak_connect_failed()}. +riak_connection() -> + {Host, Port} = case application:get_env(stanchion, riak_host) of + {ok, {_, _} = HostPort} -> HostPort; + undefined -> {"127.0.0.1", 8087} + end, + riak_connection(Host, Port). + +%% @doc Get a protobufs connection to the riak cluster. +-spec riak_connection(string(), pos_integer()) -> {ok, pid()} | {error, riak_connect_failed()}. +riak_connection(Host, Port) -> + %% We use start() here instead of start_link() because if we can't + %% connect to Host & Port for whatever reason (e.g. service down, + %% host down, host unreachable, ...), then we'll be crashed by the + %% newly-spawned-gen_server-proc's link to us. + %% + %% There is still a race condition if the PB socket proc's init() + %% is successful but then dies immediately *before* we call the + %% link() BIF. That's life in the big city. + case riakc_pb_socket:start(Host, Port) of + {ok, Pid} = Good -> + true = link(Pid), + Good; + {error, Else} -> + {error, {riak_connect_failed, {Else, Host, Port}}} + end. + +%% @doc Set the ACL for a bucket +-spec set_bucket_acl(binary(), term()) -> ok | {error, term()}. +set_bucket_acl(Bucket, FieldList) -> + %% @TODO Check for missing fields + OwnerId = proplists:get_value(<<"requester">>, FieldList, <<>>), + AclJson = proplists:get_value(<<"acl">>, FieldList, []), + Acl = stanchion_acl_utils:acl_from_json(AclJson), + do_bucket_op(Bucket, OwnerId, [{acl, Acl}], update_acl). + +%% @doc add bucket policy in the global namespace +%% FieldList.policy has JSON-encoded policy from user +-spec set_bucket_policy(binary(), term()) -> ok | {error, term()}. +set_bucket_policy(Bucket, FieldList) -> + OwnerId = proplists:get_value(<<"requester">>, FieldList, <<>>), + PolicyJson = proplists:get_value(<<"policy">>, FieldList, []), + + % @TODO: Already Checked at Riak CS, so store as it is JSON here + % if overhead of parsing JSON were expensive, need to import + % code of JSON parse from riak_cs_s3_policy + do_bucket_op(Bucket, OwnerId, [{policy, PolicyJson}], update_policy). + +%% @doc set bucket versioning option +-spec set_bucket_versioning(binary(), term()) -> ok | {error, term()}. +set_bucket_versioning(Bucket, FieldList) -> + OwnerId = proplists:get_value(<<"requester">>, FieldList, <<>>), + Json = proplists:get_value(<<"versioning">>, FieldList, []), + do_bucket_op(Bucket, OwnerId, [{versioning, Json}], update_versioning). + + +%% @doc Delete a bucket +-spec delete_bucket_policy(binary(), binary()) -> ok | {error, term()}. +delete_bucket_policy(Bucket, OwnerId) -> + do_bucket_op(Bucket, OwnerId, [delete_policy], delete_policy). + +%% @doc Generate a key for storing a set of manifests for deletion. +-spec timestamp(erlang:timestamp()) -> non_neg_integer(). +timestamp({MegaSecs, Secs, _MicroSecs}) -> + (MegaSecs * 1000000) + Secs. + +%% Get the proper bucket name for either the MOSS object +%% bucket or the data block bucket. +-spec to_bucket_name(objects | blocks, binary()) -> binary(). +to_bucket_name(Type, Bucket) -> + case Type of + objects -> + Prefix = ?OBJECT_BUCKET_PREFIX; + blocks -> + Prefix = ?BLOCK_BUCKET_PREFIX + end, + BucketHash = md5(Bucket), + <>. + +%% @doc Attmpt to create a new user +-spec update_user(string(), [{term(), term()}]) -> + ok | {error, riak_connect_failed() | term()}. +update_user(KeyId, UserFields) -> + case riak_connection() of + {ok, RiakPid} -> + try + case get_user(KeyId, RiakPid) of + {ok, {User, UserObj}} -> + + {UpdUser, EmailUpdated} = + update_user_record(UserFields, User, false), + save_user(EmailUpdated, + UpdUser, + UserObj, + RiakPid); + {error, _}=Error -> + Error + end + catch T:E:_ST -> + _ = lager:error("Error on updating user ~s: ~p", + [KeyId, {T, E}]), + {error, {T, E}} + after + close_riak_connection(RiakPid) + end; + {error, _} = Else -> + Else + end. + + +sha_mac(KeyData, STS) -> + crypto:hmac(sha, KeyData, STS). + +md5(Bin) -> + crypto:hash(md5, Bin). + +%% =================================================================== +%% Internal functions +%% =================================================================== + +%% @doc Check if a bucket is empty +-spec bucket_empty(binary(), pid()) -> boolean(). +bucket_empty(Bucket, RiakcPid) -> + ManifestBucket = to_bucket_name(objects, Bucket), + %% @TODO Use `stream_list_keys' instead and + ListKeysResult = list_keys(ManifestBucket, RiakcPid), + bucket_empty_handle_list_keys(RiakcPid, + Bucket, + ListKeysResult). + +-spec bucket_empty_handle_list_keys(pid(), binary(), + {ok, list()} | + {error, term()}) -> + boolean(). +bucket_empty_handle_list_keys(RiakcPid, Bucket, {ok, Keys}) -> + AnyPred = bucket_empty_any_pred(RiakcPid, Bucket), + %% `lists:any/2' will break out early as soon + %% as something returns `true' + not lists:any(AnyPred, Keys); +bucket_empty_handle_list_keys(_RiakcPid, _Bucket, _Error) -> + false. + +-spec bucket_empty_any_pred(RiakcPid :: pid(), Bucket :: binary()) -> + fun((Key :: binary()) -> boolean()). +bucket_empty_any_pred(RiakcPid, Bucket) -> + fun (Key) -> + key_exists(RiakcPid, Bucket, Key) + end. + +%% @private +%% `Bucket' should be the raw bucket name, +%% we'll take care of calling `to_bucket_name' +-spec key_exists(pid(), binary(), binary()) -> boolean(). +key_exists(RiakcPid, Bucket, Key) -> + key_exists_handle_get_manifests( + get_manifests(RiakcPid, Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION)). + +%% @private +-spec key_exists_handle_get_manifests({ok, riakc_obj:riakc_obj(), list()} | + {error, term()}) -> + boolean(). +key_exists_handle_get_manifests({ok, _Object, Manifests}) -> + active_to_bool(active_manifest_from_response({ok, Manifests})); +key_exists_handle_get_manifests(Error) -> + active_to_bool(active_manifest_from_response(Error)). + +%% @private +-spec active_to_bool({ok, term()} | {error, notfound}) -> boolean(). +active_to_bool({ok, _Active}) -> + true; +active_to_bool({error, notfound}) -> + false. + +-spec active_manifest_from_response({ok, orddict:orddict()} | + {error, notfound}) -> + {ok, term()} | {error, notfound}. +active_manifest_from_response({ok, Manifests}) -> + handle_active_manifests(rcs_common_manifest_utils:active_manifest(Manifests)); +active_manifest_from_response({error, notfound}=NotFound) -> + NotFound. + +%% @private +-spec handle_active_manifests({ok, term()} | + {error, no_active_manifest}) -> + {ok, term()} | {error, notfound}. +handle_active_manifests({ok, _Active}=ActiveReply) -> + ActiveReply; +handle_active_manifests({error, no_active_manifest}) -> + {error, notfound}. + +%% @doc Determine if a bucket is exists and is available +%% for creation or deletion by the inquiring user. +-spec bucket_available(binary(), fun(), bucket_op(), pid()) -> {true, term()} | {false, atom()}. +bucket_available(Bucket, RequesterId, BucketOp, RiakPid) -> + GetOptions = [{pr, all}], + case ?TURNAROUND_TIME(riakc_pb_socket:get(RiakPid, ?BUCKETS_BUCKET, Bucket, GetOptions)) of + {{ok, BucketObj}, TAT} -> + stanchion_stats:update([riakc, get_cs_bucket], TAT), + OwnerId = riakc_obj:get_value(BucketObj), + case {OwnerId, BucketOp} of + {?FREE_BUCKET_MARKER, create} -> + is_bucket_ready_to_create(Bucket, RiakPid, BucketObj); + {?FREE_BUCKET_MARKER, _} -> + {false, no_such_bucket}; + + {RequesterId, delete} -> + is_bucket_ready_to_delete(Bucket, RiakPid, BucketObj); + {RequesterId, _} -> + {true, BucketObj}; + _ -> + {false, bucket_already_exists} + end; + + {{error, notfound}, TAT} -> + stanchion_stats:update([riakc, get_cs_bucket], TAT), + case BucketOp of + create -> + BucketObj = riakc_obj:new(?BUCKETS_BUCKET, Bucket, RequesterId), + {true, BucketObj}; + update_acl -> + {false, no_such_bucket}; + update_policy -> + {false, no_such_bucket}; + update_versioning -> + {false, no_such_bucket}; + delete -> + {false, no_such_bucket} + end; + {{error, Reason}, TAT} -> + stanchion_stats:update([riakc, get_cs_bucket], TAT), + %% @TODO Maybe bubble up this error info + _ = lager:warning("Error occurred trying to check if the bucket ~p exists. Reason: ~p", + [Bucket, Reason]), + {false, Reason} + end. + +%% @doc Perform an operation on a bucket. +-spec do_bucket_op(binary(), binary(), bucket_op_options(), bucket_op()) -> + ok | {error, term()}. +do_bucket_op(<<"riak-cs">>, _OwnerId, _Opts, _BucketOp) -> + {error, access_denied}; +do_bucket_op(Bucket, OwnerId, Opts, BucketOp) -> + case riak_connection() of + {ok, RiakPid} -> + %% Buckets operations can only be completed if the bucket exists + %% and the requesting party owns the bucket. + try + case bucket_available(Bucket, OwnerId, BucketOp, RiakPid) of + {true, BucketObj} -> + Value = case BucketOp of + create -> OwnerId; + update_acl -> OwnerId; + update_policy -> OwnerId; + delete_policy -> OwnerId; + update_versioning -> OwnerId; + delete -> ?FREE_BUCKET_MARKER + end, + put_bucket(BucketObj, Value, Opts, RiakPid); + {false, Reason1} -> + {error, Reason1} + end + catch T:E -> + _ = lager:error("Error on updating bucket ~s: ~p", + [Bucket, {T, E}]), + {error, {T, E}} + after + close_riak_connection(RiakPid) + end; + {error, _} = Else -> + Else + end. + +%% @doc bucket is ok to delete when bucket is empty. Ongoing multipart +%% uploads are all supposed to be automatically aborted by Riak CS. +%% If the bucket still has active objects, just fail. Else if the +%% bucket still has ongoing multipart, Stanchion returns error and +%% Riak CS retries some times, in case of concurrent multipart +%% initiation occuring. After a few retry Riak CS will eventually +%% returns error to the client (maybe 500?) Or fallback to heavy +%% abort-all-multipart and then deletes bucket? This will be a big +%% TODO. +-spec is_bucket_ready_to_delete(binary(), pid(), riakc_obj()) -> + {false, multipart_upload_remains|bucket_not_empty} | + {true, riakc_obj()}. +is_bucket_ready_to_delete(Bucket, RiakPid, BucketObj) -> + is_bucket_clean(Bucket, RiakPid, BucketObj). + +%% @doc ensure there are no multipart uploads in creation time because +%% multipart uploads remains in deleted buckets in former versions +%% before 1.5.0 (or 1.4.6) where the bug (identified in riak_cs/#475). +-spec is_bucket_ready_to_create(binary(), pid(), riakc_obj()) -> + {false, multipart_upload_remains|bucket_not_empty} | + {true, riakc_obj()}. +is_bucket_ready_to_create(Bucket, RiakPid, BucketObj) -> + is_bucket_clean(Bucket, RiakPid, BucketObj). + +%% @doc here runs two list_keys, one in bucket_empty/2, another in +%% stanchion_multipart:check_no_multipart_uploads/2. If there are +%% bunch of pending_delete manifests this may slow (twice as before +%% #475 fix). If there are bunch of scheduled_delete manifests, this +%% may also slow, but wait for Garbage Collection to collect those +%% trashes may improve the speed. => TODO. +-spec is_bucket_clean(binary(), pid(), riakc_obj()) -> + {false, multipart_upload_remains|bucket_not_empty} | + {true, riakc_obj()}. +is_bucket_clean(Bucket, RiakPid, BucketObj) -> + {ok, ManifestRiakPid} = manifest_connection(RiakPid, BucketObj), + try + case bucket_empty(Bucket, ManifestRiakPid) of + false -> + {false, bucket_not_empty}; + true -> + case stanchion_multipart:check_no_multipart_uploads(Bucket, ManifestRiakPid) of + false -> + {false, multipart_upload_remains}; + true -> + {true, BucketObj} + end + end + catch T:E:ST -> + _ = lager:error("Could not check whether bucket was empty. Reason: ~p:~p - ~p", + [T, E, ST]), + error({T, E}) + after + close_manifest_connection(RiakPid, ManifestRiakPid) + end. + +-spec manifest_connection(pid(), riakc_obj:riakc_obj()) -> {ok, pid()} | {error, term()}. +manifest_connection(RiakPid, BucketObj) -> + case bag_id_from_bucket(BucketObj) of + undefined -> {ok, RiakPid}; + BagId -> + case conn_info_from_bag(BagId, application:get_env(stanchion, bags)) of + %% No connection information for the bag. Mis-configuration. Stop processing. + undefined -> {error, {no_bag, BagId}}; + {Address, Port} -> riak_connection(Address, Port) + end + end. + +conn_info_from_bag(_BagId, undefined) -> + undefined; +conn_info_from_bag(BagId, {ok, Bags}) -> + BagIdStr = binary_to_list(BagId), + case lists:keyfind(BagIdStr, 1, Bags) of + false -> + {error, no_bag}; + {BagIdStr, Address, Port} -> + {Address, Port} + end. + +bag_id_from_bucket(BucketObj) -> + Contents = riakc_obj:get_contents(BucketObj), + bag_id_from_contents(Contents). + +bag_id_from_contents([]) -> + undefined; +bag_id_from_contents([{MD, _} | Contents]) -> + case bag_id_from_meta(dict:fetch(?MD_USERMETA, MD)) of + undefined -> + bag_id_from_contents(Contents); + BagId -> + BagId + end. + +bag_id_from_meta([]) -> + undefined; +bag_id_from_meta([{?MD_BAG, Value} | _]) -> + binary_to_term(Value); +bag_id_from_meta([_MD | MDs]) -> + bag_id_from_meta(MDs). + +close_manifest_connection(RiakPid, RiakPid) -> + ok; +close_manifest_connection(_RiakPid, ManifestRiakPid) -> + close_riak_connection(ManifestRiakPid). + +%% @doc Determine if a user with the specified email +%% address already exists. There could be consistency +%% issues here since secondary index queries use +%% coverage and only consult a single vnode +%% for a particular key. +%% @TODO Consider other options that would give more +%% assurance that a particular email address is available. +-spec email_available(string() | binary(), pid()) -> true | {false, user_already_exists | term()}. +email_available(Email_, RiakPid) -> + + %% this is to pacify dialyzer, which makes an issue of + %% Email::string() (coming from #rcs_user_v2.email type) as + %% conflicting with binary() as the type appropriate for 4th arg + %% in get_index_eq + Email = iolist_to_binary([Email_]), + + {Res, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:get_index_eq(RiakPid, ?USER_BUCKET, ?EMAIL_INDEX, Email)), + stanchion_stats:update([riakc, get_user_by_index], TAT), + case Res of + {ok, ?INDEX_RESULTS{keys=[]}} -> + true; + {ok, _} -> + {false, user_already_exists}; + {error, Reason} -> + %% @TODO Maybe bubble up this error info + lager:warning("Error occurred trying to check if the address ~p has been registered. Reason: ~p", + [Email, Reason]), + {false, Reason} + end. + +%% @doc Return a list of keys for a bucket along +%% with their associated values +-spec get_keys_and_values(binary()) -> {ok, [{binary(), binary()}]} | {error, term()}. +get_keys_and_values(BucketName) -> + case riak_connection() of + {ok, RiakPid} -> + Res = + case list_keys(BucketName, RiakPid) of + {ok, Keys} -> + KeyValuePairs = + [{Key, get_value(BucketName, Key, RiakPid)} + || Key <- Keys], + {ok, KeyValuePairs}; + {error, Reason1} -> + {error, Reason1} + end, + close_riak_connection(RiakPid), + Res; + {error, _} = Else -> + Else + end. + +%% internal fun to retrieve the riak object +%% at a bucket/key +-spec get_manifests_raw(pid(), binary(), binary(), binary()) -> + {ok, riakc_obj:riakc_obj()} | {error, notfound}. +get_manifests_raw(RiakcPid, Bucket, Key, Vsn) -> + ManifestBucket = to_bucket_name(objects, Bucket), + {Res, TAT} = ?TURNAROUND_TIME( + riakc_pb_socket:get(RiakcPid, ManifestBucket, + rcs_common_manifest:make_versioned_key(Key, Vsn))), + stanchion_stats:update([riakc, get_manifest], TAT), + Res. + +%% @doc Extract the value from a Riak object. +-spec get_value(binary(), binary(), pid()) -> + binary(). +get_value(BucketName, Key, RiakPid) -> + {Res, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:get(RiakPid, BucketName, Key)), + stanchion_stats:update([riakc, get_manifest], TAT), + case Res of + %% case get_object(BucketName, Key, RiakPid) of + {ok, RiakObj} -> + riakc_obj:get_value(RiakObj); + {error, Reason} -> + _ = lager:warning("Failed to retrieve value for ~p. Reason: ~p", [Key, Reason]), + <<"unknown">> + end. + +%% @doc Save information about a user +-spec save_user(moss_user(), pid()) -> ok. +save_user(User, RiakPid) -> + Indexes = [{?EMAIL_INDEX, User?MOSS_USER.email}, + {?ID_INDEX, User?MOSS_USER.canonical_id}], + Meta = dict:store(?MD_INDEX, Indexes, dict:new()), + Obj = riakc_obj:new(?USER_BUCKET, iolist_to_binary(User?MOSS_USER.key_id), term_to_binary(User)), + UserObj = riakc_obj:update_metadata(Obj, Meta), + %% @TODO Error handling + {Res, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:put(RiakPid, UserObj)), + stanchion_stats:update([riakc, put_cs_user], TAT), + Res. + +%% @doc Save information about a Riak CS user +-spec save_user(boolean(), rcs_user(), riakc_obj:riakc_obj(), pid()) -> + + ok | {error, term()}. +save_user(true, User=?RCS_USER{email=Email}, UserObj, RiakPid) -> + case email_available(Email, RiakPid) of + true -> + Indexes = [{?EMAIL_INDEX, Email}, + {?ID_INDEX, User?RCS_USER.canonical_id}], + MD = dict:store(?MD_INDEX, Indexes, dict:new()), + UpdUserObj = riakc_obj:update_metadata( + riakc_obj:update_value(UserObj, + term_to_binary(User)), + MD), + {Res, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:put(RiakPid, UpdUserObj)), + stanchion_stats:update([riakc, put_cs_user], TAT), + Res; + {false, Reason} -> + {error, Reason} + end; +save_user(false, User, UserObj, RiakPid) -> + Indexes = [{?EMAIL_INDEX, User?RCS_USER.email}, + {?ID_INDEX, User?RCS_USER.canonical_id}], + MD = dict:store(?MD_INDEX, Indexes, dict:new()), + UpdUserObj = riakc_obj:update_metadata( + riakc_obj:update_value(UserObj, + term_to_binary(User)), + MD), + {Res, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:put(RiakPid, UpdUserObj)), + stanchion_stats:update([riakc, put_cs_user], TAT), + Res. + +%% @doc Retrieve a Riak CS user's information based on their id string. +-spec get_user('undefined' | list(), pid()) -> {ok, {rcs_user(), riakc_obj:riakc_obj()}} | {error, term()}. +get_user(undefined, _RiakPid) -> + {error, no_user_key}; +get_user(KeyId, RiakPid) -> + %% Check for and resolve siblings to get a + %% coherent view of the bucket ownership. + BinKey = list_to_binary(KeyId), + case fetch_user(BinKey, RiakPid) of + {ok, {Obj, KeepDeletedBuckets}} -> + from_riakc_obj(Obj, KeepDeletedBuckets); + Error -> + Error + end. + +from_riakc_obj(Obj, KeepDeletedBuckets) -> + case riakc_obj:value_count(Obj) of + 1 -> + User = binary_to_term(riakc_obj:get_value(Obj)), + {ok, {User, Obj}}; + 0 -> + {error, no_value}; + _ -> + Values = [binary_to_term(Value) || + Value <- riakc_obj:get_values(Obj), + Value /= <<>> % tombstone + ], + User = hd(Values), + Buckets = resolve_buckets(Values, [], KeepDeletedBuckets), + {ok, {User?RCS_USER{buckets=Buckets}, Obj}} + end. + +%% @doc Perform an initial read attempt with R=PR=N. +%% If the initial read fails retry using +%% R=quorum and PR=1, but indicate that bucket deletion +%% indicators should not be cleaned up. +-spec fetch_user(binary(), pid()) -> + {ok, {term(), boolean()}} | {error, term()}. +fetch_user(Key, RiakPid) -> + StrongOptions = [{r, all}, {pr, all}, {notfound_ok, false}], + {Res0, TAT0} = ?TURNAROUND_TIME(riakc_pb_socket:get(RiakPid, ?USER_BUCKET, Key, StrongOptions)), + stanchion_stats:update([riakc, get_cs_user_strong], TAT0), + case Res0 of + {ok, Obj} -> + {ok, {Obj, true}}; + {error, _} -> + weak_fetch_user(Key, RiakPid) + end. + +weak_fetch_user(Key, RiakPid) -> + WeakOptions = [{r, quorum}, {pr, one}, {notfound_ok, false}], + {Res, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:get(RiakPid, ?USER_BUCKET, Key, WeakOptions)), + stanchion_stats:update([riakc, get_user], TAT), + case Res of + {ok, Obj} -> + {ok, {Obj, false}}; + {error, Reason} -> + {error, Reason} + end. + +%% @doc Resolve the set of buckets for a user when +%% siblings are encountered on a read of a user record. +-spec resolve_buckets([rcs_user()], [cs_bucket()], boolean()) -> + [cs_bucket()]. +resolve_buckets([], Buckets, true) -> + lists:sort(fun bucket_sorter/2, Buckets); +resolve_buckets([], Buckets, false) -> + lists:sort(fun bucket_sorter/2, [Bucket || Bucket <- Buckets, not cleanup_bucket(Bucket)]); +resolve_buckets([HeadUserRec | RestUserRecs], Buckets, _KeepDeleted) -> + HeadBuckets = HeadUserRec?RCS_USER.buckets, + UpdBuckets = lists:foldl(fun bucket_resolver/2, Buckets, HeadBuckets), + resolve_buckets(RestUserRecs, UpdBuckets, _KeepDeleted). + +%% @doc Check for and resolve any conflict between +%% a bucket record from a user record sibling and +%% a list of resolved bucket records. +-spec bucket_resolver(cs_bucket(), [cs_bucket()]) -> [cs_bucket()]. +bucket_resolver(Bucket, ResolvedBuckets) -> + case lists:member(Bucket, ResolvedBuckets) of + true -> + ResolvedBuckets; + false -> + case [RB || RB <- ResolvedBuckets, + RB?RCS_BUCKET.name =:= + Bucket?RCS_BUCKET.name] of + [] -> + [Bucket | ResolvedBuckets]; + [ExistingBucket] -> + case keep_existing_bucket(ExistingBucket, + Bucket) of + true -> + ResolvedBuckets; + false -> + [Bucket | lists:delete(ExistingBucket, + ResolvedBuckets)] + end + end + end. + +%% @doc Determine if an existing bucket from the resolution list +%% should be kept or replaced when a conflict occurs. +-spec keep_existing_bucket(cs_bucket(), cs_bucket()) -> boolean(). +keep_existing_bucket(?RCS_BUCKET{last_action=LastAction1, + modification_time=ModTime1}, + ?RCS_BUCKET{last_action=LastAction2, + modification_time=ModTime2}) -> + if + LastAction1 == LastAction2 + andalso + ModTime1 =< ModTime2 -> + true; + LastAction1 == LastAction2 -> + false; + ModTime1 > ModTime2 -> + true; + true -> + false + end. + +%% @doc Return true if the last action for the bucket +%% is deleted and the action occurred over 24 hours ago. +-spec cleanup_bucket(cs_bucket()) -> boolean(). +cleanup_bucket(?RCS_BUCKET{last_action=created}) -> + false; +cleanup_bucket(?RCS_BUCKET{last_action=deleted, + modification_time=ModTime}) -> + timer:now_diff(os:timestamp(), ModTime) > 86400. + +%% @doc Ordering function for sorting a list of bucket records +%% according to bucket name. +-spec bucket_sorter(cs_bucket(), cs_bucket()) -> boolean(). +bucket_sorter(?RCS_BUCKET{name=Bucket1}, + ?RCS_BUCKET{name=Bucket2}) -> + Bucket1 =< Bucket2. + +update_user_record([], User, EmailUpdated) -> + {User, EmailUpdated}; +update_user_record([{<<"name">>, Name} | RestUserFields], User, EmailUpdated) -> + update_user_record(RestUserFields, + User?RCS_USER{name=binary_to_list(Name)}, EmailUpdated); +update_user_record([{<<"email">>, Email} | RestUserFields], + User, _) -> + UpdEmail = binary_to_list(Email), + EmailUpdated = not (User?RCS_USER.email =:= UpdEmail), + update_user_record(RestUserFields, + User?RCS_USER{email=UpdEmail}, EmailUpdated); +update_user_record([{<<"display_name">>, Name} | RestUserFields], User, EmailUpdated) -> + update_user_record(RestUserFields, + User?RCS_USER{display_name=binary_to_list(Name)}, EmailUpdated); +update_user_record([{<<"key_secret">>, KeySecret} | RestUserFields], User, EmailUpdated) -> + update_user_record(RestUserFields, + User?RCS_USER{key_secret=binary_to_list(KeySecret)}, EmailUpdated); +update_user_record([{<<"status">>, Status} | RestUserFields], User, EmailUpdated) -> + case Status of + <<"enabled">> -> + update_user_record(RestUserFields, + User?RCS_USER{status=enabled}, EmailUpdated); + <<"disabled">> -> + update_user_record(RestUserFields, + User?RCS_USER{status=disabled}, EmailUpdated); + _ -> + update_user_record(RestUserFields, User, EmailUpdated) + end; +update_user_record([_ | RestUserFields], User, EmailUpdated) -> + + update_user_record(RestUserFields, User, EmailUpdated). diff --git a/apps/stanchion/src/stanchion_web.erl b/apps/stanchion/src/stanchion_web.erl new file mode 100644 index 000000000..cb2e5dafc --- /dev/null +++ b/apps/stanchion/src/stanchion_web.erl @@ -0,0 +1,43 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc Convenience functions for setting up the stanchion HTTP interface. + +-module(stanchion_web). + +-export([dispatch_table/0]). + +dispatch_table() -> + AuthBypass = + case application:get_env(stanchion, auth_bypass) of + {ok, AuthBypass0} -> AuthBypass0; + undefined -> false + end, + [ + {["buckets"], stanchion_wm_buckets, [{auth_bypass, AuthBypass}]}, + {["buckets", bucket, "acl"], stanchion_wm_acl, [{auth_bypass, AuthBypass}]}, + {["buckets", bucket, "policy"], stanchion_wm_policy, [{auth_bypass, AuthBypass}]}, + {["buckets", bucket, "versioning"], stanchion_wm_versioning, [{auth_bypass, AuthBypass}]}, + {["buckets", bucket], stanchion_wm_bucket, [{auth_bypass, AuthBypass}]}, + {["users", key_id], stanchion_wm_user, [{auth_bypass, AuthBypass}]}, + {["users"], stanchion_wm_users, [{auth_bypass, AuthBypass}]}, + {["stats"], stanchion_wm_stats, [{auth_bypass, AuthBypass}]} + ]. diff --git a/apps/stanchion/src/stanchion_wm_acl.erl b/apps/stanchion/src/stanchion_wm_acl.erl new file mode 100644 index 000000000..e7dd2ebce --- /dev/null +++ b/apps/stanchion/src/stanchion_wm_acl.erl @@ -0,0 +1,102 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_wm_acl). + +-export([init/1, + service_available/2, + is_authorized/2, + content_types_provided/2, + malformed_request/2, + to_json/2, + allowed_methods/2, + content_types_accepted/2, + accept_body/2]). + +-include("stanchion.hrl"). +-include_lib("webmachine/include/webmachine.hrl"). + +init(Config) -> + %% Check if authentication is disabled and + %% set that in the context. + AuthBypass = proplists:get_value(auth_bypass, Config), + {ok, #context{auth_bypass=AuthBypass}}. + +-spec service_available(term(), term()) -> {true, term(), term()}. +service_available(RD, Ctx) -> + stanchion_wm_utils:service_available(RD, Ctx). + +-spec malformed_request(term(), term()) -> {false, term(), term()}. +malformed_request(RD, Ctx) -> + {false, RD, Ctx}. + +%% @doc Check that the request is from the admin user +is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> + AuthHeader = wrq:get_req_header("authorization", RD), + case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of + {ok, AuthMod, Args} -> + case AuthMod:authenticate(RD, Args) of + ok -> + %% Authentication succeeded + {true, RD, Ctx}; + {error, _Reason} -> + %% Authentication failed, deny access + stanchion_response:api_error(access_denied, RD, Ctx) + end + end. + +%% @doc Get the list of methods this resource supports. +-spec allowed_methods(term(), term()) -> {[atom()], term(), term()}. +allowed_methods(RD, Ctx) -> + {['GET', 'PUT'], RD, Ctx}. + +-spec content_types_provided(term(), term()) -> + {[{string(), atom()}], term(), term()}. +content_types_provided(RD, Ctx) -> + {[{"application/json", to_xml}], RD, Ctx}. + +-spec content_types_accepted(term(), term()) -> + {[{string(), atom()}], term(), term()}. +content_types_accepted(RD, Ctx) -> + {[{"application/json", accept_body}], RD, Ctx}. + +-spec to_json(term(), term()) -> + {{'halt', term()}, #wm_reqdata{}, term()}. +to_json(RD, Ctx) -> + Bucket = wrq:path_info(bucket, RD), + stanchion_response:list_buckets_response(Bucket, + RD, + Ctx). + +%% @doc Process the request body on `PUT'. +accept_body(RD, Ctx) -> + Bucket = list_to_binary(wrq:path_info(bucket, RD)), + Body = wrq:req_body(RD), + %% @TODO Handle json decoding exceptions + ParsedBody = mochijson2:decode(Body), + FieldList = stanchion_wm_utils:json_to_proplist(ParsedBody), + case stanchion_server:set_bucket_acl(Bucket, + FieldList) of + ok -> + {true, RD, Ctx}; + {error, Reason} -> + stanchion_response:api_error(Reason, RD, Ctx) + end. diff --git a/apps/stanchion/src/stanchion_wm_bucket.erl b/apps/stanchion/src/stanchion_wm_bucket.erl new file mode 100644 index 000000000..275e98638 --- /dev/null +++ b/apps/stanchion/src/stanchion_wm_bucket.erl @@ -0,0 +1,128 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_wm_bucket). + +-export([init/1, + service_available/2, + is_authorized/2, + content_types_provided/2, + malformed_request/2, + to_xml/2, + allowed_methods/2, + content_types_accepted/2, + %% accept_body/2, + delete_resource/2]). + +-include("stanchion.hrl"). +-include_lib("webmachine/include/webmachine.hrl"). + + +init(Config) -> + %% Check if authentication is disabled and + %% set that in the context. + AuthBypass = proplists:get_value(auth_bypass, Config), + {ok, #context{auth_bypass=AuthBypass}}. + +-spec service_available(term(), term()) -> {true, term(), term()}. +service_available(RD, Ctx) -> + stanchion_wm_utils:service_available(RD, Ctx). + +-spec malformed_request(term(), term()) -> {false, term(), term()}. +malformed_request(RD, Ctx) -> + {false, RD, Ctx}. + +%% @doc Check that the request is from the admin user +is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> + AuthHeader = wrq:get_req_header("authorization", RD), + case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of + {ok, AuthMod, Args} -> + case AuthMod:authenticate(RD, Args) of + ok -> + %% Authentication succeeded + {true, RD, Ctx}; + {error, _Reason} -> + %% Authentication failed, deny access + stanchion_response:api_error(access_denied, RD, Ctx) + end + end. + +%% @doc Get the list of methods this resource supports. +-spec allowed_methods(term(), term()) -> {[atom()], term(), term()}. +allowed_methods(RD, Ctx) -> + {['GET', 'PUT', 'DELETE'], RD, Ctx}. + +-spec content_types_provided(term(), term()) -> + {[{string(), atom()}], term(), term()}. +content_types_provided(RD, Ctx) -> + %% @TODO Add JSON support + {[{"application/xml", to_xml}], RD, Ctx}. + +%% @spec content_types_accepted(reqdata(), context()) -> +%% {[{ContentType::string(), Acceptor::atom()}], +%% reqdata(), context()} +content_types_accepted(RD, Ctx) -> + case wrq:get_req_header("content-type", RD) of + undefined -> + {[{"application/octet-stream", accept_body}], RD, Ctx}; + CType -> + {[{CType, accept_body}], RD, Ctx} + end. + + +-spec to_xml(term(), term()) -> + {{'halt', _}, #wm_reqdata{}, term()}. +to_xml(RD, Ctx) -> + Bucket = wrq:path_info(bucket, RD), + stanchion_response:list_buckets_response(Bucket, RD, Ctx). + +%% SLF: Dialyzer note: As far as I can tell, the func +%% stanchion_utils:update_bucket_owner() has never existed. +%% So this function is darn broken, so I'm commenting the +%% whole thing out so that the breakage is even more visible +%% at runtime. + +%% TODO: +%% Add content_types_accepted when we add +%% in PUT and POST requests. +%% accept_body(ReqData, Ctx) -> +%% Bucket = wrq:path_info(bucket, ReqData), +%% NewOwnerId = list_to_binary(wrq:get_qs_value("owner", "", ReqData)), +%% case stanchion_utils:update_bucket_owner(Bucket, +%% NewOwnerId) of +%% ok -> +%% {true, ReqData, Ctx}; +%% {error, Reason} -> +%% stanchion_response:api_error(Reason, ReqData, Ctx) +%% end. + +%% @doc Callback for deleting a bucket. +-spec delete_resource(term(), term()) -> {'true' | {'halt', term()}, #wm_reqdata{}, term()}. +delete_resource(ReqData, Ctx) -> + Bucket = list_to_binary(wrq:path_info(bucket, ReqData)), + RequesterId = list_to_binary(wrq:get_qs_value("requester", "", ReqData)), + _ = lager:debug("Bucket: ~p Requester: ~p", [Bucket, RequesterId]), + case stanchion_server:delete_bucket(Bucket, RequesterId) of + ok -> + {true, ReqData, Ctx}; + {error, Reason} -> + stanchion_response:api_error(Reason, ReqData, Ctx) + end. diff --git a/apps/stanchion/src/stanchion_wm_buckets.erl b/apps/stanchion/src/stanchion_wm_buckets.erl new file mode 100644 index 000000000..2831e76ee --- /dev/null +++ b/apps/stanchion/src/stanchion_wm_buckets.erl @@ -0,0 +1,100 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_wm_buckets). + +-export([init/1, + service_available/2, + allowed_methods/2, + is_authorized/2, + content_types_accepted/2, + post_is_create/2, + create_path/2, + accept_body/2]). + +-include("stanchion.hrl"). +-include_lib("webmachine/include/webmachine.hrl"). + +init(Config) -> + %% Check if authentication is disabled and + %% set that in the context. + AuthBypass = proplists:get_value(auth_bypass, Config), + {ok, #context{auth_bypass=AuthBypass}}. + +-spec service_available(term(), term()) -> {true, term(), term()}. +service_available(RD, Ctx) -> + stanchion_wm_utils:service_available(RD, Ctx). + +%% @doc Get the list of methods this resource supports. +-spec allowed_methods(term(), term()) -> {[atom()], term(), term()}. +allowed_methods(RD, Ctx) -> + {['POST'], RD, Ctx}. + +%% @doc Check that the request is from the admin user +is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> + AuthHeader = wrq:get_req_header("authorization", RD), + case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of + {ok, AuthMod, Args} -> + case AuthMod:authenticate(RD, Args) of + ok -> + %% Authentication succeeded + {true, RD, Ctx}; + {error, _Reason} -> + %% Authentication failed, deny access + stanchion_response:api_error(access_denied, RD, Ctx) + end + end. + +-spec post_is_create(term(), term()) -> {true, term(), term()}. +post_is_create(_RD, _Ctx) -> + {true, _RD, _Ctx}. + +%% @doc Set the path for the new bucket resource and set +%% the Location header to generate a 201 Created response. +%% -spec create_path(term(), term()) -> {string(), term(), term()}. +create_path(RD, Ctx) -> + {wrq:disp_path(RD), RD, Ctx}. + +-spec content_types_accepted(term(), term()) -> + {[{string(), atom()}], term(), term()}. +content_types_accepted(RD, Ctx) -> + {[{"application/json", accept_body}], RD, Ctx}. + +%% @doc Create a bucket from a POST +-spec accept_body(term(), term()) -> + {true | {halt, pos_integer()}, + term(), + term()}. +accept_body(RD, Ctx) -> + %% @TODO POST is not the best method to use to + %% handle creation of named buckets. Change the + %% interface so that a PUT to /buckets/ + %% is the method for creating a specific bucket. + Body = wrq:req_body(RD), + %% @TODO Handle json decoding exceptions + ParsedBody = mochijson2:decode(Body), + FieldList = stanchion_wm_utils:json_to_proplist(ParsedBody), + case stanchion_server:create_bucket(FieldList) of + ok -> + {true, RD, Ctx}; + {error, Reason} -> + stanchion_response:api_error(Reason, RD, Ctx) + end. diff --git a/apps/stanchion/src/stanchion_wm_error_handler.erl b/apps/stanchion/src/stanchion_wm_error_handler.erl new file mode 100644 index 000000000..e8634615f --- /dev/null +++ b/apps/stanchion/src/stanchion_wm_error_handler.erl @@ -0,0 +1,35 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_wm_error_handler). +-export([render_error/3]). + +render_error(500, Req, Reason) -> + {ok, ReqState} = Req:add_response_header("Content-Type", "text/html"), + {Path,_} = Req:path(), + lager:error("webmachine error: path=~p~n~p~n", [Path, Reason]), + STString = io_lib:format("~p", [Reason]), + ErrorStart = "500 Internal Server Error

      Internal Server Error

      The server encountered an error while processing this request:
      ",
      +    ErrorEnd = "


      mochiweb+webmachine web server
      ", + ErrorIOList = [ErrorStart,STString,ErrorEnd], + {erlang:iolist_to_binary(ErrorIOList), ReqState}; +render_error(_Code, Req, _Reason) -> + Req:response_body(). diff --git a/apps/stanchion/src/stanchion_wm_policy.erl b/apps/stanchion/src/stanchion_wm_policy.erl new file mode 100644 index 000000000..37a3836d1 --- /dev/null +++ b/apps/stanchion/src/stanchion_wm_policy.erl @@ -0,0 +1,117 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_wm_policy). + +-export([init/1, + service_available/2, + is_authorized/2, + content_types_provided/2, + malformed_request/2, + to_json/2, + allowed_methods/2, + content_types_accepted/2, + accept_body/2, + delete_resource/2]). + +-include("stanchion.hrl"). +-include_lib("webmachine/include/webmachine.hrl"). + +init(Config) -> + %% Check if authentication is disabled and + %% set that in the context. + AuthBypass = proplists:get_value(auth_bypass, Config), + % eval every atoms to make binary_to_existing_atom/2 work. + {ok, #context{auth_bypass=AuthBypass}}. + +-spec service_available(term(), term()) -> {true, term(), term()}. +service_available(RD, Ctx) -> + stanchion_wm_utils:service_available(RD, Ctx). + +-spec malformed_request(term(), term()) -> {false, term(), term()}. +malformed_request(RD, Ctx) -> + {false, RD, Ctx}. + +%% @doc Check that the request is from the admin user +is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> + AuthHeader = wrq:get_req_header("authorization", RD), + case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of + {ok, AuthMod, Args} -> + case AuthMod:authenticate(RD, Args) of + ok -> + %% Authentication succeeded + {true, RD, Ctx}; + {error, _Reason} -> + %% Authentication failed, deny access + stanchion_response:api_error(access_denied, RD, Ctx) + end + end. + +%% @doc Get the list of methods this resource supports. +-spec allowed_methods(term(), term()) -> {[atom()], term(), term()}. +allowed_methods(RD, Ctx) -> + {['GET', 'PUT', 'DELETE'], RD, Ctx}. + +-spec content_types_provided(term(), term()) -> + {[{string(), atom()}], term(), term()}. +content_types_provided(RD, Ctx) -> + {[{"application/json", to_xml}], RD, Ctx}. + +-spec content_types_accepted(term(), term()) -> + {[{string(), atom()}], term(), term()}. +content_types_accepted(RD, Ctx) -> + {[{"application/json", accept_body}], RD, Ctx}. + +-spec to_json(term(), term()) -> + {{'halt', term()}, #wm_reqdata{}, term()}. +to_json(RD, Ctx) -> + Bucket = wrq:path_info(bucket, RD), + stanchion_response:list_buckets_response(Bucket, RD, Ctx). + +%% @doc Process the request body on `PUT'. +accept_body(RD, Ctx) -> + Bucket = list_to_binary(wrq:path_info(bucket, RD)), + Body = wrq:req_body(RD), + %% @TODO Handle json decoding exceptions + ParsedBody = mochijson2:decode(Body), + FieldList = stanchion_wm_utils:json_to_proplist(ParsedBody), + case stanchion_server:set_bucket_policy(Bucket, + FieldList) of + ok -> + {true, RD, Ctx}; + {error, Reason} -> + stanchion_response:api_error(Reason, RD, Ctx) + end. + +%% @doc Callback for deleting an object. +-spec delete_resource(#wm_reqdata{}, #context{}) -> {{halt, 204}, #wm_reqdata{}, #context{}} | {true, #wm_reqdata{}, #context{}}. +delete_resource(RD, Ctx) -> + Bucket = list_to_binary(wrq:path_info(bucket, RD)), + RequesterId = list_to_binary(wrq:get_qs_value("requester", "", RD)), + _ = lager:debug("Bucket: ~p Requester: ~p", [Bucket, RequesterId]), + + case stanchion_server:delete_bucket_policy(Bucket, RequesterId) of + ok -> + % @TODO: does 204 really good? how does s3 works? + {{halt, 204}, RD, Ctx}; + {error, Reason} -> + stanchion_response:api_error(Reason, RD, Ctx) + end. diff --git a/apps/stanchion/src/stanchion_wm_stats.erl b/apps/stanchion/src/stanchion_wm_stats.erl new file mode 100644 index 000000000..29b9fe9de --- /dev/null +++ b/apps/stanchion/src/stanchion_wm_stats.erl @@ -0,0 +1,76 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_wm_stats). + +-export([init/1, + service_available/2, + allowed_methods/2, + is_authorized/2, + content_types_provided/2, + produce_body/2]). + +-include("stanchion.hrl"). +-include_lib("webmachine/include/webmachine.hrl"). + +init(Config) -> + %% Check if authentication is disabled and + %% set that in the context. + AuthBypass = proplists:get_value(auth_bypass, Config), + {ok, #context{auth_bypass=AuthBypass}}. + +-spec service_available(term(), term()) -> {true, term(), term()}. +service_available(RD, Ctx) -> + stanchion_wm_utils:service_available(RD, Ctx). + +-spec allowed_methods(term(), term()) -> {[atom()], term(), term()}. +allowed_methods(RD, Ctx) -> + {['GET'], RD, Ctx}. + +%% @doc Check that the request is from the admin user +is_authorized(RD, Ctx) -> + #context{auth_bypass=AuthBypass} = Ctx, + AuthHeader = wrq:get_req_header("authorization", RD), + case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of + {ok, AuthMod, Args} -> + case AuthMod:authenticate(RD, Args) of + ok -> + %% Authentication succeeded + {true, RD, Ctx}; + {error, _Reason} -> + %% Authentication failed, deny access + stanchion_response:api_error(access_denied, RD, Ctx) + end + end. + +-spec content_types_provided(term(), term()) -> + {[{string(), atom()}], term(), term()}. +content_types_provided(RD, Ctx) -> + {[{"application/json", produce_body}, + {"text/plain", produce_body}], + RD, Ctx}. + +-spec produce_body(term(), term()) -> + {{'halt', term()}, #wm_reqdata{}, term()}. +produce_body(RD, Ctx) -> + Stats = stanchion_stats:get_stats(), + JSON = mochijson2:encode({struct, Stats}), + {JSON, RD, Ctx}. diff --git a/apps/stanchion/src/stanchion_wm_user.erl b/apps/stanchion/src/stanchion_wm_user.erl new file mode 100644 index 000000000..68360e025 --- /dev/null +++ b/apps/stanchion/src/stanchion_wm_user.erl @@ -0,0 +1,91 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_wm_user). + +-export([init/1, + service_available/2, + allowed_methods/2, + is_authorized/2, + create_path/2, + content_types_accepted/2, + accept_body/2]). + +-include("stanchion.hrl"). +-include_lib("webmachine/include/webmachine.hrl"). + +init(Config) -> + %% Check if authentication is disabled and + %% set that in the context. + AuthBypass = proplists:get_value(auth_bypass, Config), + {ok, #context{auth_bypass=AuthBypass}}. + +-spec service_available(term(), term()) -> {true, term(), term()}. +service_available(RD, Ctx) -> + stanchion_wm_utils:service_available(RD, Ctx). + +-spec allowed_methods(term(), term()) -> {[atom()], term(), term()}. +allowed_methods(RD, Ctx) -> + {['PUT'], RD, Ctx}. + +%% @doc Check that the request is from the admin user +is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> + AuthHeader = wrq:get_req_header("authorization", RD), + case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of + {ok, AuthMod, Args} -> + case AuthMod:authenticate(RD, Args) of + ok -> + %% Authentication succeeded + {true, RD, Ctx}; + {error, _Reason} -> + %% Authentication failed, deny access + stanchion_response:api_error(access_denied, RD, Ctx) + end + end. + +%% @doc Set the path for the new user resource and set +%% the Location header to generate a 201 Created response. +%% -spec create_path(term(), term()) -> {string(), term(), term()}. +create_path(RD, Ctx) -> + {wrq:disp_path(RD), RD, Ctx}. + +-spec content_types_accepted(term(), term()) -> + {[{string(), atom()}], term(), term()}. +content_types_accepted(RD, Ctx) -> + {[{"application/json", accept_body}], RD, Ctx}. + +%% @doc Create a user from a POST +-spec accept_body(term(), term()) -> + {true | {halt, pos_integer()}, + term(), + term()}. +accept_body(RD, Ctx) -> + Body = wrq:req_body(RD), + KeyId = wrq:path_info(key_id, RD), + %% @TODO Handle json decoding exceptions + ParsedBody = mochijson2:decode(Body), + FieldList = stanchion_wm_utils:json_to_proplist(ParsedBody), + case stanchion_server:update_user(KeyId, FieldList) of + ok -> + {true, RD, Ctx}; + {error, Reason} -> + stanchion_response:api_error(Reason, RD, Ctx) + end. diff --git a/apps/stanchion/src/stanchion_wm_users.erl b/apps/stanchion/src/stanchion_wm_users.erl new file mode 100644 index 000000000..b6598ecf1 --- /dev/null +++ b/apps/stanchion/src/stanchion_wm_users.erl @@ -0,0 +1,95 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_wm_users). + +-export([init/1, + service_available/2, + allowed_methods/2, + is_authorized/2, + post_is_create/2, + create_path/2, + content_types_accepted/2, + accept_body/2]). + +-include("stanchion.hrl"). +-include_lib("webmachine/include/webmachine.hrl"). + +init(Config) -> + %% Check if authentication is disabled and + %% set that in the context. + AuthBypass = proplists:get_value(auth_bypass, Config), + {ok, #context{auth_bypass=AuthBypass}}. + +-spec service_available(term(), term()) -> {true, term(), term()}. +service_available(RD, Ctx) -> + stanchion_wm_utils:service_available(RD, Ctx). + +-spec allowed_methods(term(), term()) -> {[atom()], term(), term()}. +allowed_methods(RD, Ctx) -> + {['POST'], RD, Ctx}. + +%% @doc Check that the request is from the admin user +is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> + AuthHeader = wrq:get_req_header("authorization", RD), + case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of + {ok, AuthMod, Args} -> + case AuthMod:authenticate(RD, Args) of + ok -> + %% Authentication succeeded + {true, RD, Ctx}; + {error, _Reason} -> + %% Authentication failed, deny access + stanchion_response:api_error(access_denied, RD, Ctx) + end + end. + +-spec post_is_create(term(), term()) -> {true, term(), term()}. +post_is_create(RD, Ctx) -> + {true, RD, Ctx}. + +%% @doc Set the path for the new user resource and set +%% the Location header to generate a 201 Created response. +%% -spec create_path(term(), term()) -> {string(), term(), term()}. +create_path(RD, Ctx) -> + {wrq:disp_path(RD), RD, Ctx}. + +-spec content_types_accepted(term(), term()) -> + {[{string(), atom()}], term(), term()}. +content_types_accepted(RD, Ctx) -> + {[{"application/json", accept_body}], RD, Ctx}. + +%% @doc Create a user from a POST +-spec accept_body(term(), term()) -> + {true | {halt, pos_integer()}, + term(), + term()}. +accept_body(RD, Ctx) -> + Body = wrq:req_body(RD), + %% @TODO Handle json decoding exceptions + ParsedBody = mochijson2:decode(Body), + FieldList = stanchion_wm_utils:json_to_proplist(ParsedBody), + case stanchion_server:create_user(FieldList) of + ok -> + {true, RD, Ctx}; + {error, Reason} -> + stanchion_response:api_error(Reason, RD, Ctx) + end. diff --git a/apps/stanchion/src/stanchion_wm_utils.erl b/apps/stanchion/src/stanchion_wm_utils.erl new file mode 100644 index 000000000..4685799f1 --- /dev/null +++ b/apps/stanchion/src/stanchion_wm_utils.erl @@ -0,0 +1,76 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_wm_utils). + +-export([service_available/2, + parse_auth_header/2, + iso_8601_datetime/0, + json_to_proplist/1]). + +-include("stanchion.hrl"). +-include_lib("webmachine/include/webmachine.hrl"). + +service_available(RD, Ctx) -> + {true, RD, Ctx}. + +%% @doc Parse an authentication header string and determine +%% the appropriate module to use to authenticate the request. +%% The passthru auth can be used either with a KeyID or +%% anonymously by leving the header empty. +-spec parse_auth_header(string(), boolean()) -> {ok, atom(), [string()]} | {error, term()}. +parse_auth_header(_, true) -> + {ok, stanchion_passthru_auth, []}; +parse_auth_header("MOSS " ++ Key, _) -> + case string:tokens(Key, ":") of + [KeyId, KeyData] -> + {ok, stanchion_auth, [KeyId, KeyData]}; + _Other -> + {error, {bad_key, Key}} + end; +parse_auth_header(_, false) -> + {ok, stanchion_blockall_auth, ["unkown_auth_scheme"]}. + +%% @doc Get an ISO 8601 formatted timestamp representing +%% current time. +-spec iso_8601_datetime() -> [non_neg_integer()]. +iso_8601_datetime() -> + {{Year, Month, Day}, {Hour, Min, Sec}} = erlang:universaltime(), + io_lib:format("~4.10.0B-~2.10.0B-~2.10.0BT~2.10.0B:~2.10.0B:~2.10.0B.000Z", + [Year, Month, Day, Hour, Min, Sec]). + +%% @doc Convert a list of mochijson2-decoded JSON objects +%% into a standard propllist. +-type json_term() :: {struct, [{term(), term()}]}. +-type json_terms() :: [{struct, [{term(), term()}]}]. +-spec json_to_proplist(json_term() | json_terms()) -> [{term(), term()}]. +json_to_proplist({struct, JsonObject}) -> + JsonObject; +json_to_proplist([{struct, JsonObjects}]) -> + json_to_proplist(JsonObjects, []). + +%% @doc Convert a list of mochijson2-decoded JSON objects +%% into a standard propllist. +-spec json_to_proplist([{'struct',[any(),...]}],[any()]) -> [any()]. +json_to_proplist([], Acc) -> + lists:flatten(Acc); +json_to_proplist([{struct, [ObjContents]} | RestObjs], Acc) -> + json_to_proplist(RestObjs, [ObjContents | Acc]). diff --git a/apps/stanchion/src/stanchion_wm_versioning.erl b/apps/stanchion/src/stanchion_wm_versioning.erl new file mode 100644 index 000000000..ebb589be1 --- /dev/null +++ b/apps/stanchion/src/stanchion_wm_versioning.erl @@ -0,0 +1,86 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. +%% 2021 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_wm_versioning). + +-export([init/1, + service_available/2, + is_authorized/2, + malformed_request/2, + allowed_methods/2, + content_types_accepted/2, + accept_body/2]). + +-include("stanchion.hrl"). +-include_lib("webmachine/include/webmachine.hrl"). + +init(Config) -> + %% Check if authentication is disabled and + %% set that in the context. + AuthBypass = proplists:get_value(auth_bypass, Config), + % eval every atoms to make binary_to_existing_atom/2 work. + {ok, #context{auth_bypass=AuthBypass}}. + +-spec service_available(term(), term()) -> {true, term(), term()}. +service_available(RD, Ctx) -> + stanchion_wm_utils:service_available(RD, Ctx). + +-spec malformed_request(term(), term()) -> {false, term(), term()}. +malformed_request(RD, Ctx) -> + {false, RD, Ctx}. + +%% @doc Check that the request is from the admin user +is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> + AuthHeader = wrq:get_req_header("authorization", RD), + case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of + {ok, AuthMod, Args} -> + case AuthMod:authenticate(RD, Args) of + ok -> + {true, RD, Ctx}; + {error, _Reason} -> + stanchion_response:api_error(access_denied, RD, Ctx) + end + end. + +%% @doc Get the list of methods this resource supports. +-spec allowed_methods(term(), term()) -> {[atom()], term(), term()}. +allowed_methods(RD, Ctx) -> + {['PUT'], RD, Ctx}. + +-spec content_types_accepted(term(), term()) -> + {[{string(), atom()}], term(), term()}. +content_types_accepted(RD, Ctx) -> + {[{"application/json", accept_body}], RD, Ctx}. + +%% @doc Process the request body on `PUT'. +accept_body(RD, Ctx) -> + Bucket = list_to_binary(wrq:path_info(bucket, RD)), + Body = wrq:req_body(RD), + %% @TODO Handle json decoding exceptions + ParsedBody = mochijson2:decode(Body), + FieldList = stanchion_wm_utils:json_to_proplist(ParsedBody), + case stanchion_server:set_bucket_versioning(Bucket, + FieldList) of + ok -> + {true, RD, Ctx}; + {error, Reason} -> + stanchion_response:api_error(Reason, RD, Ctx) + end. diff --git a/apps/stanchion/test/stanchion_config_test.erl b/apps/stanchion/test/stanchion_config_test.erl new file mode 100644 index 000000000..7ae3693f4 --- /dev/null +++ b/apps/stanchion/test/stanchion_config_test.erl @@ -0,0 +1,31 @@ +-module(stanchion_config_test). +-compile(export_all). +-compile(nowarn_export_all). + +-include_lib("eunit/include/eunit.hrl"). + +default_config_test() -> + Config = cuttlefish_unit:generate_templated_config(schema_files(), [], context()), + cuttlefish_unit:assert_config(Config, "stanchion.host", {"127.0.0.1", 8085}), + cuttlefish_unit:assert_config(Config, "stanchion.riak_host", {"127.0.0.1", 8087}), + cuttlefish_unit:assert_not_configured(Config, "stanchion.ssl"), + cuttlefish_unit:assert_config(Config, "stanchion.admin_key", "admin-key"), + cuttlefish_unit:assert_not_configured(Config, "stanchion.admin_secret"), + cuttlefish_unit:assert_config(Config, "stanchion.auth_bypass", false), + + ok. + +ssl_config_test() -> + Conf = [{["ssl", "certfile"], "path/certfile"}, + {["ssl", "keyfile"], "path/keyfile"}], + Config = cuttlefish_unit:generate_templated_config(schema_files(), Conf, context()), + cuttlefish_unit:assert_config(Config, "stanchion.ssl", [{keyfile, "path/keyfile"}, + {certfile, "path/certfile"}]), + ok. + +schema_files() -> + ["priv/stanchion.schema"]. + +context() -> + {ok, Context} = file:consult("rel/vars.config"), + Context. diff --git a/config/sys.config.defaults b/config/sys.config.defaults index ff28b3e27..6269aaed4 100644 --- a/config/sys.config.defaults +++ b/config/sys.config.defaults @@ -5,8 +5,11 @@ PLATFORM_BIN_DIR="./bin" ADMIN_KEY="admin-key" RIAK_HOST="127.0.0.1" RIAK_PORT=8087 -LISTENER_HOST="127.0.0.1" -LISTENER_PORT=8080 +RCS_LISTENER_HOST="127.0.0.1" +RCS_LISTENER_PORT=8080 +STANCHION_LISTENER_HOST="127.0.0.1" +STANCHION_LISTENER_PORT=8085 + STANCHION_HOST="127.0.0.1" STANCHION_PORT=8085 STANCHION_SSL=false diff --git a/config/sys.docker.config.src b/config/sys.docker.config.src index e4c50a5cd..1362accd0 100644 --- a/config/sys.docker.config.src +++ b/config/sys.docker.config.src @@ -35,8 +35,17 @@ {stanchion_ssl, ${STANCHION_SSL}}, {stanchion_host,{${STANCHION_HOST}, ${STANCHION_PORT}}}, {riak_host, {${RIAK_HOST}, ${RIAK_PORT}}}, - {listener, {${LISTENER_HOST}, ${LISTENER_PORT}}}, + {listener, {${RCS_LISTENER_HOST}, ${RCS_LISTENER_PORT}}}, {connection_pools,[{request_pool,{128,0}},{bucket_list_pool,{5,0}}]}]}, + {stanchion, + [{platform_log_dir, ${PLATFORM_LOG_DIR}}, + {platform_lib_dir, ${PLATFORM_LIB_DIR}}, + {platform_etc_dir, ${PLATFORM_ETC_DIR}}, + {platform_bin_dir, ${PLATFORM_BIN_DIR}}, + {auth_bypass, ${AUTH_BYPASS}}, + {admin_key, ${ADMIN_KEY}}, + {riak_host, {${RIAK_HOST}, ${RIAK_PORT}}}, + {host, {${STANCHION_LISTENER_HOST}, ${STANCHION_LISTENER_PORT}}}]} {lager, [{error_logger_hwm,100}, {error_logger_redirect,true}, diff --git a/priv/stanchion.schema b/priv/stanchion.schema new file mode 100644 index 000000000..f5eb42792 --- /dev/null +++ b/priv/stanchion.schema @@ -0,0 +1,391 @@ +%%-*- mode: erlang -*- + +%% @doc Version number. Intended use is to facilitate selective +%% support of features in the context of migration, where nodes +%% running different versions coexist in the same cluster. As +%% stanchion is not intended to ever run in clusters, this setting is +%% only used for reporting (via `stanchion admin version`). +{mapping, "stanchion_version", "stanchion.stanchion_version", [ + {default, {{stanchion_version}} }, + {datatype, integer} +]}. + +%% @doc listen port and IP address +{mapping, "listener", "stanchion.host", [ + {default, {"{{stanchion_ip}}" , {{stanchion_port}} }}, + {datatype, ip}, + {validators, ["valid_host"]} +]}. + +%% @doc Default cert location for https can be overridden +%% with the ssl config variable, for example: +{mapping, "ssl.certfile", "stanchion.ssl.certfile", [ + {datatype, file}, + {commented, "$(platform_etc_dir)/cert.pem"} +]}. + +%% @doc Default key location for https can be overridden with the ssl +%% config variable, for example: +{mapping, "ssl.keyfile", "stanchion.ssl.keyfile", [ + {datatype, file}, + {commented, "$(platform_etc_dir)/key.pem"} +]}. + +%% @doc Riak IP address and port number where Stanchion connects +{mapping, "riak_host", "stanchion.riak_host", [ + {default, {"{{riak_ip}}", {{riak_pb_port}} }}, + {datatype, ip}, + {validators, ["valid_host"]} +]}. + +%% @doc Admin user credentials. The credentials specified here must +%% match the admin credentials specified in the riak-cs.conf for the +%% system to function properly. +{mapping, "admin.key", "stanchion.admin_key", [ + {default, "{{admin_key}}"}, + {datatype, string} +]}. + +%% @doc admin.secret is deprecated and will be removed at next version. +{mapping, "admin.secret", "stanchion.admin_secret", [ + {datatype, string}, + hidden +]}. + +%% @doc {auth_bypass, {{auth_bypass}} } , +{mapping, "auth_bypass", "stanchion.auth_bypass", [ + {datatype, {flag, on, off}}, + {default, off}, + hidden +]}. + +%% @doc Platform-specific installation paths +{mapping, "platform_bin_dir", "stanchion.platform_bin_dir", [ + {datatype, directory}, + {default, "{{platform_bin_dir}}"} +]}. + +%% @see platform_bin_dir +{mapping, "platform_data_dir", "stanchion.platform_data_dir", [ + {datatype, directory}, + {default, "{{platform_data_dir}}"} +]}. + +%% @see platform_bin_dir +{mapping, "platform_etc_dir", "stanchion.platform_etc_dir", [ + {datatype, directory}, + {default, "{{platform_etc_dir}}"} +]}. + +%% @see platform_bin_dir +{mapping, "platform_lib_dir", "stanchion.platform_lib_dir", [ + {datatype, directory}, + {default, "{{platform_lib_dir}}"} +]}. + +%% @see platform_bin_dir +{mapping, "platform_log_dir", "stanchion.platform_log_dir", [ + {datatype, directory}, + {default, "{{platform_log_dir}}"} +]}. + + +%% @doc Where to emit the default log messages (typically at 'info' +%% severity): +%% off: disabled +%% file: the file specified by log.console.file +%% console: to standard output (seen when using `riak attach-direct`) +%% both: log.console.file and standard out. +{mapping, "log.console", "lager.handlers", [ + {default, {{console_log_default}} }, + {datatype, {enum, [off, file, console, both]}} +]}. + +%% @doc The severity level of the console log, default is 'info'. +{mapping, "log.console.level", "lager.handlers", [ + {default, info}, + {datatype, {enum, [debug, info, notice, warning, error, critical, alert, emergency, none]}} +]}. + +%% @doc When 'log.console' is set to 'file' or 'both', the file where +%% console messages will be logged. +{mapping, "log.console.file", "lager.handlers", [ + {default, "$(platform_log_dir)/console.log"}, + {datatype, file} +]}. + +%% @doc Maximum size of the console log in bytes, before it is rotated +{mapping, "log.console.size", "lager.handlers", [ + {default, "10MB"}, + {datatype, bytesize} +]}. + +%% @doc The schedule on which to rotate the console log. For more +%% information see: +%% https://github.com/basho/lager/blob/master/README.md#internal-log-rotation +{mapping, "log.console.rotation", "lager.handlers", [ + {default, "$D0"} +]}. + +%% @doc The number of rotated console logs to keep. When set to +%% 'current', only the current open log file is kept. +{mapping, "log.console.rotation.keep", "lager.handlers", [ + {default, 5}, + {datatype, [integer, {atom, current}]}, + {validators, ["rotation_count"]} +]}. + +%% @doc The file where error messages will be logged. +{mapping, "log.error.file", "lager.handlers", [ + {default, "$(platform_log_dir)/error.log"}, + {datatype, file} +]}. + +%% @doc Maximum size of the error log in bytes, before it is rotated +{mapping, "log.error.size", "lager.handlers", [ + {default, "10MB"}, + {datatype, bytesize} +]}. + +%% @doc The schedule on which to rotate the error log. For more +%% information see: +%% https://github.com/basho/lager/blob/master/README.md#internal-log-rotation +{mapping, "log.error.rotation", "lager.handlers", [ + {default, "$D0"} +]}. + +%% @doc The number of rotated error logs to keep. When set to +%% 'current', only the current open log file is kept. +{mapping, "log.error.rotation.keep", "lager.handlers", [ + {default, 5}, + {datatype, [integer, {atom, current}]}, + {validators, ["rotation_count"]} +]}. + +%% @doc When set to 'on', enables log output to syslog. +{mapping, "log.syslog", "lager.handlers", [ + {default, off}, + {datatype, flag} +]}. + +%% @doc Syslog default identifier +{mapping, "log.syslog.ident", "lager.handlers", [ + {default, "stanchion"}, + hidden +]}. + +%% @doc Syslog facility to log entries from Stanchion. +{mapping, "log.syslog.facility", "lager.handlers", [ + {default, daemon}, + {datatype, {enum,[kern, user, mail, daemon, auth, syslog, + lpr, news, uucp, clock, authpriv, ftp, + cron, local0, local1, local2, local3, + local4, local5, local6, local7]}}, + hidden +]}. + +%% @doc The severity level at which to log entries to syslog, default is 'info'. +{mapping, "log.syslog.level", "lager.handlers", [ + {default, info}, + {datatype, {enum, [debug, info, notice, warning, error, critical, alert, emergency, none]}}, + hidden +]}. + +{translation, + "lager.handlers", + fun(Conf) -> + SyslogHandler = case cuttlefish:conf_get("log.syslog", Conf) of + true -> + Ident = cuttlefish:conf_get("log.syslog.ident", Conf), + Facility = cuttlefish:conf_get("log.syslog.facility", Conf), + LogLevel = cuttlefish:conf_get("log.syslog.level", Conf), + [{lager_syslog_backend, [Ident, Facility, LogLevel]}]; + _ -> [] + end, + + TranslateKeep = fun(current) -> 0; + (Int) -> Int + end, + ErrorHandler = case cuttlefish:conf_get("log.error.file", Conf) of + undefined -> []; + ErrorLogFilename -> + ErrorLogRotation = cuttlefish:conf_get("log.error.rotation", Conf), + ErrorLogRotationKeep = TranslateKeep(cuttlefish:conf_get("log.error.rotation.keep", Conf)), + + ErrorLogSize = cuttlefish:conf_get("log.error.size", Conf), + [{lager_file_backend, [{file, ErrorLogFilename}, + {level, error}, + {size, ErrorLogSize}, + {date, ErrorLogRotation}, + {count, ErrorLogRotationKeep}]}] + end, + + ConsoleLogLevel = cuttlefish:conf_get("log.console.level", Conf), + ConsoleLogFile = cuttlefish:conf_get("log.console.file", Conf), + ConsoleLogSize = cuttlefish:conf_get("log.console.size", Conf), + ConsoleLogRotation = cuttlefish:conf_get("log.console.rotation", Conf), + ConsoleLogRotationKeep = TranslateKeep(cuttlefish:conf_get("log.console.rotation.keep", Conf)), + + ConsoleHandler = {lager_console_backend, ConsoleLogLevel}, + ConsoleFileHandler = {lager_file_backend, [{file, ConsoleLogFile}, + {level, ConsoleLogLevel}, + {size, ConsoleLogSize}, + {date, ConsoleLogRotation}, + {count, ConsoleLogRotationKeep}]}, + + ConsoleHandlers = case cuttlefish:conf_get("log.console", Conf) of + off -> []; + file -> [ConsoleFileHandler]; + console -> [ConsoleHandler]; + both -> [ConsoleHandler, ConsoleFileHandler]; + _ -> [] + end, + SyslogHandler ++ ConsoleHandlers ++ ErrorHandler + end +}. + + +%% @doc Whether to enable Erlang's built-in error logger. +{mapping, "sasl", "sasl.sasl_error_logger", [ + {default, off}, + {datatype, flag}, + hidden +]}. + +%% @doc Whether to enable the crash log. +{mapping, "log.crash", "lager.crash_log", [ + {default, on}, + {datatype, flag} +]}. + +%% @doc If the crash log is enabled, the file where its messages will +%% be written. +{mapping, "log.crash.file", "lager.crash_log", [ + {default, "$(platform_log_dir)/crash.log"}, + {datatype, file} +]}. + +{translation, + "lager.crash_log", + fun(Conf) -> + case cuttlefish:conf_get("log.crash", Conf) of + false -> undefined; + _ -> + cuttlefish:conf_get("log.crash.file", Conf, "{{platform_log_dir}}/crash.log") + end + end}. + +%% @doc Maximum size in bytes of individual messages in the crash log +{mapping, "log.crash.maximum_message_size", "lager.crash_log_msg_size", [ + {default, "64KB"}, + {datatype, bytesize} +]}. + +%% @doc Maximum size of the crash log in bytes, before it is rotated +{mapping, "log.crash.size", "lager.crash_log_size", [ + {default, "10MB"}, + {datatype, bytesize} +]}. + +%% @doc The schedule on which to rotate the crash log. For more +%% information see: +%% https://github.com/basho/lager/blob/master/README.md#internal-log-rotation +{mapping, "log.crash.rotation", "lager.crash_log_date", [ + {default, "$D0"} +]}. + +%% @doc The number of rotated crash logs to keep. When set to +%% 'current', only the current open log file is kept. +{mapping, "log.crash.rotation.keep", "lager.crash_log_count", [ + {default, 5}, + {datatype, [integer, {atom, current}]}, + {validators, ["rotation_count"]} +]}. + +{validator, + "rotation_count", + "must be 'current' or a positive integer", + fun(current) -> true; + (Int) when is_integer(Int) andalso Int >= 0 -> true; + (_) -> false + end}. + +{translation, + "lager.crash_log_count", + fun(Conf) -> + case cuttlefish:conf_get("log.crash.rotation.keep", Conf) of + current -> 0; + Int -> Int + end + end}. + +%% @doc Whether to redirect error_logger messages into lager - +%% defaults to true +{mapping, "log.error.redirect", "lager.error_logger_redirect", [ + {default, on}, + {datatype, flag}, + hidden +]}. + +%% @doc Maximum number of error_logger messages to handle in a second +{mapping, "log.error.messages_per_second", "lager.error_logger_hwm", [ + {default, 100}, + {datatype, integer}, + hidden +]}. + +%% == Supercluster aka Multi-bug Support == + +%% @doc IP and port for supercluster members. Specify one member for +%% each line, in which the last token of key is member identifier and +%% value is a PB address of Riak node to connect. +{mapping, "supercluster.member.$member_id", "stanchion.supercluster_members", [ + {datatype, ip}, + {include_default, "bag-A"}, + {commented, {"192.168.0.101", 8087}}, + hidden +]}. + +{translation, + "stanchion.supercluster_members", + fun(Conf) -> + Keys = cuttlefish_variable:fuzzy_matches(["supercluster", "member", "$member_id"], Conf), + case Keys of + [] -> undefined; + [_|_] -> [begin + {Host, Port} = cuttlefish:conf_get( + "supercluster.member." ++ MemberId, Conf), + {MemberId, Host, Port} + end || {Key, MemberId} <- Keys] + end + end +}. + +%% @doc Cookie for distributed node communication. All nodes in the +%% same cluster should use the same cookie or they will not be able to +%% communicate. +{mapping, "distributed_cookie", "vm_args.-setcookie", [ + {default, "riak"} +]}. + + +%% VM scheduler collapse, part 1 of 2 +{mapping, "erlang.schedulers.force_wakeup_interval", "vm_args.+sfwi", [ + {default, 500}, + {datatype, integer}, + merge +]}. + +%% VM scheduler collapse, part 2 of 2 +{mapping, "erlang.schedulers.compaction_of_load", "vm_args.+scl", [ + {default, "false"}, + merge +]}. + +{{#devrel}} +%% @doc erlang vm shutdown_time is useful when running a riak_test devrel +{mapping, "erlang.shutdown_time", "vm_args.-shutdown_time", [ + {default, "10s"}, + {datatype, {duration, ms}} +]}. +{{/devrel}} diff --git a/rebar.config b/rebar.config index fafd213b6..60d11a237 100644 --- a/rebar.config +++ b/rebar.config @@ -32,7 +32,6 @@ , {riak_repl_pb_api, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.9"}}} , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.8"}}} , {lager_syslog, {git, "https://github.com/TI-Tokyo/lager_syslog.git", {tag, "3.1.1"}}} - , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.4"}}} ] }. @@ -40,6 +39,7 @@ {relx, [ {release, {'riak-cs', "3.0.0"}, [ sasl , riak_cs + , stanchion ] } , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} diff --git a/rebar.docker.config b/rebar.docker.config index f83b74e94..7e7f7e686 100644 --- a/rebar.docker.config +++ b/rebar.docker.config @@ -27,7 +27,6 @@ , {riak_repl_pb_api,".*", {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} , {riak_cs_multibag,".*", {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} , {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} - , {rcs_common, {git, "https://github.com/TI-Tokyo/rcs_common.git", {tag, "3.0.2"}}} ] }. From 273d69daeab18d46b486fdec72ef68423165188f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 22 Oct 2022 13:08:29 +0300 Subject: [PATCH 331/831] delagerify code --- apps/riak_cs/src/riak_cs.app.src | 3 +- apps/riak_cs/src/riak_cs_access.erl | 4 +- apps/riak_cs/src/riak_cs_access_archiver.erl | 7 +- .../src/riak_cs_access_archiver_manager.erl | 30 ++++---- .../src/riak_cs_access_log_handler.erl | 16 ++-- apps/riak_cs/src/riak_cs_acl.erl | 21 +++--- apps/riak_cs/src/riak_cs_acl_utils.erl | 60 +++++++-------- apps/riak_cs/src/riak_cs_app.erl | 44 ++++------- apps/riak_cs/src/riak_cs_block_server.erl | 75 +++++++++---------- apps/riak_cs/src/riak_cs_bucket.erl | 34 ++++----- apps/riak_cs/src/riak_cs_config.erl | 14 ++-- apps/riak_cs/src/riak_cs_console.erl | 54 ++++++------- apps/riak_cs/src/riak_cs_copy_object.erl | 8 +- apps/riak_cs/src/riak_cs_delete_fsm.erl | 8 +- apps/riak_cs/src/riak_cs_gc.erl | 20 +++-- apps/riak_cs/src/riak_cs_gc_batch.erl | 55 +++++++------- apps/riak_cs/src/riak_cs_gc_key_list.erl | 13 ++-- apps/riak_cs/src/riak_cs_gc_manager.erl | 18 ++--- apps/riak_cs/src/riak_cs_gc_worker.erl | 7 +- apps/riak_cs/src/riak_cs_get_fsm.erl | 21 +++--- apps/riak_cs/src/riak_cs_json.erl | 2 +- apps/riak_cs/src/riak_cs_keystone_auth.erl | 3 +- apps/riak_cs/src/riak_cs_kv_multi_backend.erl | 16 ++-- apps/riak_cs/src/riak_cs_lfs_utils.erl | 14 ++-- .../src/riak_cs_list_objects_ets_cache.erl | 10 +-- apps/riak_cs/src/riak_cs_list_objects_fsm.erl | 16 ++-- .../src/riak_cs_list_objects_fsm_v2.erl | 9 +-- apps/riak_cs/src/riak_cs_manifest.erl | 4 +- apps/riak_cs/src/riak_cs_manifest_fsm.erl | 2 +- apps/riak_cs/src/riak_cs_mb_helper.erl | 2 +- apps/riak_cs/src/riak_cs_mp_utils.erl | 10 +-- apps/riak_cs/src/riak_cs_oos_response.erl | 6 +- apps/riak_cs/src/riak_cs_oos_utils.erl | 6 +- apps/riak_cs/src/riak_cs_pbc.erl | 14 ++-- apps/riak_cs/src/riak_cs_put_fsm.erl | 9 +-- apps/riak_cs/src/riak_cs_quota.erl | 4 +- apps/riak_cs/src/riak_cs_riak_client.erl | 2 +- apps/riak_cs/src/riak_cs_s3_auth.erl | 12 +-- apps/riak_cs/src/riak_cs_s3_policy.erl | 18 ++--- apps/riak_cs/src/riak_cs_s3_response.erl | 8 +- apps/riak_cs/src/riak_cs_s3_rewrite.erl | 4 +- apps/riak_cs/src/riak_cs_simple_bwlimiter.erl | 22 +++--- apps/riak_cs/src/riak_cs_simple_quota.erl | 14 ++-- .../riak_cs/src/riak_cs_stanchion_console.erl | 2 +- apps/riak_cs/src/riak_cs_stats.erl | 4 +- apps/riak_cs/src/riak_cs_storage.erl | 5 +- apps/riak_cs/src/riak_cs_storage_d.erl | 70 +++++++---------- apps/riak_cs/src/riak_cs_storage_mr.erl | 7 +- apps/riak_cs/src/riak_cs_user.erl | 7 +- apps/riak_cs/src/riak_cs_utils.erl | 12 +-- apps/riak_cs/src/riak_cs_wm_bucket_delete.erl | 4 +- apps/riak_cs/src/riak_cs_wm_common.erl | 18 ++--- apps/riak_cs/src/riak_cs_wm_error_handler.erl | 2 +- apps/riak_cs/src/riak_cs_wm_object.erl | 22 +++--- .../src/riak_cs_wm_object_upload_part.erl | 10 +-- apps/riak_cs/src/riak_cs_wm_user.erl | 4 +- apps/riak_cs/src/riak_cs_wm_users.erl | 4 +- apps/riak_cs/src/riak_cs_wm_utils.erl | 19 +++-- .../src/riak_cs_yessir_riak_client.erl | 10 +-- apps/stanchion/src/stanchion.app.src | 38 +++++----- apps/stanchion/src/stanchion_auth.erl | 4 +- rebar.config | 5 +- 62 files changed, 451 insertions(+), 515 deletions(-) diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index 019a9972f..5ce99041a 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -23,7 +23,7 @@ {application, riak_cs, [ {description, "riak_cs"}, - {vsn, git}, + {vsn, "3.1.0"}, {modules, []}, {registered, []}, {applications, @@ -38,7 +38,6 @@ poolboy, cluster_info, exometer_core, - lager, riakc, riak_repl_pb_api, riak_cs_multibag, diff --git a/apps/riak_cs/src/riak_cs_access.erl b/apps/riak_cs/src/riak_cs_access.erl index 87719323e..04db5a7d7 100644 --- a/apps/riak_cs/src/riak_cs_access.erl +++ b/apps/riak_cs/src/riak_cs_access.erl @@ -177,8 +177,8 @@ flush_access_object_to_log(User, RiakObj, Slice) -> Start = rts:iso8601(Start0), End = rts:iso8601(End0), Accesses = riakc_obj:get_update_value(RiakObj), - _ = lager:warning("lost access stat: User=~s, Slice=(~s, ~s), Accesses:'~s'", - [User, Start, End, Accesses]). + logger:warning("lost access stat: User=~s, Slice=(~s, ~s), Accesses:'~s'", + [User, Start, End, Accesses]). -ifdef(TEST). diff --git a/apps/riak_cs/src/riak_cs_access_archiver.erl b/apps/riak_cs/src/riak_cs_access_archiver.erl index ef600dfad..54e27be51 100644 --- a/apps/riak_cs/src/riak_cs_access_archiver.erl +++ b/apps/riak_cs/src/riak_cs_access_archiver.erl @@ -157,8 +157,8 @@ terminate(Reason, StateName, #state{table=Table, terminate(_Reason, _StateName, #state{table=Table, riak_client=RcPid, mon=Mon}) -> - _ = lager:warning("Access archiver stopping with work left to do;" - " logs will be dropped"), + logger:warning("Access archiver stopping with work left to do;" + " logs will be dropped"), cleanup(Table, RcPid, Mon), ok. @@ -206,8 +206,7 @@ store(User, RcPid, Record, Slice) -> Timeout = riak_cs_config:put_access_timeout(), case catch riak_cs_pbc:put(MasterPbc, Record, Timeout, [riakc, put_access]) of ok -> - ok = lager:debug("Archived access stats for ~s ~p", - [User, Slice]); + logger:debug("Archived access stats for ~s ~p", [User, Slice]); {error, Reason} -> riak_cs_pbc:check_connection_status(MasterPbc, "riak_cs_access_archiver:store/4"), diff --git a/apps/riak_cs/src/riak_cs_access_archiver_manager.erl b/apps/riak_cs/src/riak_cs_access_archiver_manager.erl index 4693ec562..a72869796 100644 --- a/apps/riak_cs/src/riak_cs_access_archiver_manager.erl +++ b/apps/riak_cs/src/riak_cs_access_archiver_manager.erl @@ -70,8 +70,8 @@ archive(Table, Slice) -> ets:give_away(Table, Pid, Slice) catch error:badarg -> - _ = lager:error("~p was not available, access stats for ~p lost", - [?MODULE, Slice]), + logger:error("~p was not available, access stats for ~p lost", + [?MODULE, Slice]), riak_cs_access:flush_to_log(Table, Slice), %% if the archiver had been alive just now, but crashed %% during operation, the stats also would have been lost, @@ -84,8 +84,8 @@ archive(Table, Slice) -> false %% opposite of ets:give_away/3 success end; _ -> - _ = lager:error("~p was not available, access stats for ~p lost", - [?MODULE, Slice]), + logger:error("~p was not available, access stats for ~p lost", + [?MODULE, Slice]), riak_cs_access:flush_to_log(Table, Slice), ets:delete(Table), false @@ -125,20 +125,18 @@ init([]) -> riak_cs, access_archiver_max_workers) of {ok, Workers} when is_integer(Workers) -> Workers; _ -> - _ = lager:warning( - "access_archiver_max_workers was unset or" - " invalid; overriding with default of ~b", - [?DEFAULT_MAX_ARCHIVERS]), + logger:warning("access_archiver_max_workers was unset or" + " invalid; overriding with default of ~b", + [?DEFAULT_MAX_ARCHIVERS]), ?DEFAULT_MAX_ARCHIVERS end, MaxBacklog = case application:get_env( riak_cs, access_archiver_max_backlog) of {ok, MB} when is_integer(MB) -> MB; _ -> - _ = lager:warning( - "access_archiver_max_backlog was unset or" - " invalid; overriding with default of ~b", - [?DEFAULT_MAX_BACKLOG]), + logger:warning("access_archiver_max_backlog was unset or" + " invalid; overriding with default of ~b", + [?DEFAULT_MAX_BACKLOG]), ?DEFAULT_MAX_BACKLOG end, {ok, #state{max_workers=MaxWorkers, @@ -181,9 +179,8 @@ handle_info({'ETS-TRANSFER', Table, _From, Slice}, State) -> false -> %% too much in the backlog, drop the first item in the backlog [{_DropTable, DropSlice}|RestBacklog] = Backlog, - ok = lager:error("Skipping archival of accesses ~p to" - " catch up on backlog", - [DropSlice]), + logger:error("Skipping archival of accesses ~p to catch up on backlog", + [DropSlice]), State#state{backlog=RestBacklog++[{Table, Slice}]} end, {noreply, NewState}; @@ -193,8 +190,7 @@ handle_info(_Info, State) -> terminate(_Reason, #state{backlog=[]}) -> ok; terminate(_Reason, _State) -> - _ = lager:warning("Access archiver manager stopping with a backlog;" - " logs will be dropped"), + logger:warning("Access archiver manager stopping with a backlog; logs will be dropped"), ok. code_change(_OldVsn, State, _Extra) -> diff --git a/apps/riak_cs/src/riak_cs_access_log_handler.erl b/apps/riak_cs/src/riak_cs_access_log_handler.erl index 8a86c97b1..96a05916a 100644 --- a/apps/riak_cs/src/riak_cs_access_log_handler.erl +++ b/apps/riak_cs/src/riak_cs_access_log_handler.erl @@ -164,7 +164,7 @@ init(_) -> end, {ok, SchedState}; {{error, Reason}, _} -> - _ = lager:error("Error starting access logger: ~s", [Reason]), + logger:error("Error starting access logger: ~s", [Reason]), %% can't simply {error, Reason} out here, because %% webmachine/mochiweb will just ignore the failed %% startup; using init:stop/0 here so that the user isn't @@ -172,7 +172,7 @@ init(_) -> init:stop(), {error, doesnt_matter_as_node_is_going_down}; {_, {error, Reason}} -> - _ = lager:error("Error starting access logger: ~s", [Reason]), + logger:error("Error starting access logger: ~s", [Reason]), init:stop(), {error, doesnt_matter_as_node_is_going_down} end. @@ -188,7 +188,7 @@ handle_call(_Request, State) -> handle_event({log_access, #wm_log_data{notes=undefined, method=Method, path=Path, headers=Headers}}, State) -> - lager:debug("No WM route: ~p ~s ~p\n", [Method, Path, Headers]), + logger:debug("No WM route: ~p ~s ~p", [Method, Path, Headers]), {ok, State}; handle_event({log_access, LogData}, #state{table=T, size=S, max_size=MaxS}=State) -> @@ -232,9 +232,9 @@ handle_info({archive, Ref}, #state{archive=Ref}=State) -> %% simple "missed window" is too lossy [{message_queue_len, MessageCount}] = process_info(self(), [message_queue_len]), - _ = lager:error("Access logger is running ~b seconds behind," - " skipping ~p log messages to catch up", - [Behind, MessageCount]), + logger:error("Access logger is running ~b seconds behind," + " skipping ~p log messages to catch up", + [Behind, MessageCount]), remove_handler end; handle_info(_Info, State) -> @@ -268,7 +268,7 @@ schedule_archival(#state{current={_,E}}=State) -> TL = calendar:datetime_to_gregorian_seconds(E)-Now, case TL < 0 of false -> - _ = lager:debug("Next access archival in ~b seconds", [TL]), + logger:debug("Next access archival in ~b seconds", [TL]), %% time left is in seconds, we need milliseconds erlang:send_after(TL*1000, self(), {archive, Ref}), @@ -290,7 +290,7 @@ force_archive(#state{current=C}=State, FlushEnd) -> %% for storage. Create a clean table to store the next slice's accesses. -spec do_archive(state()) -> state(). do_archive(#state{period=P, table=T, current=C}=State) -> - _ = lager:debug("Rolling access for ~p", [C]), + logger:debug("Rolling access for ~p", [C]), %% archiver takes ownership of the table, and deletes it when done riak_cs_access_archiver_manager:archive(T, C), diff --git a/apps/riak_cs/src/riak_cs_acl.erl b/apps/riak_cs/src/riak_cs_acl.erl index 5f959f22d..d34b71ce5 100644 --- a/apps/riak_cs/src/riak_cs_acl.erl +++ b/apps/riak_cs/src/riak_cs_acl.erl @@ -70,7 +70,7 @@ anonymous_bucket_access(Bucket, RequestedAccess, RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - _ = lager:error("Anonymous bucket access check failed due to error. Reason: ~p", [Reason]), + logger:error("Anonymous bucket access check failed due to error. Reason: ~p", [Reason]), false end; anonymous_bucket_access(_Bucket, RequestedAccess, RcPid, BucketAcl) -> @@ -109,7 +109,7 @@ anonymous_object_access(BucketObj, ObjAcl, 'WRITE', RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - _ = lager:error("Anonymous object access check failed due to error. Reason: ~p", [Reason]), + logger:error("Anonymous object access check failed due to error. Reason: ~p", [Reason]), false end; anonymous_object_access(_BucketObj, _ObjAcl, 'WRITE', RcPid, BucketAcl) -> @@ -151,7 +151,7 @@ bucket_access(Bucket, RequestedAccess, CanonicalId, RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - _ = lager:error("Bucket access check failed due to error. Reason: ~p", [Reason]), + logger:error("Bucket access check failed due to error. Reason: ~p", [Reason]), false end; bucket_access(_, RequestedAccess, CanonicalId, RcPid, Acl) -> @@ -181,9 +181,8 @@ fetch_bucket_acl(Bucket, RcPid) -> {ok, Obj} -> bucket_acl(Obj); {error, Reason} -> - _ = lager:debug("Failed to fetch ACL. Bucket ~p " - " does not exist. Reason: ~p", - [Bucket, Reason]), + logger:debug("Failed to fetch ACL. Bucket ~p does not exist. Reason: ~p", + [Bucket, Reason]), {error, notfound} end. @@ -261,7 +260,7 @@ object_access(BucketObj, ObjAcl, 'WRITE', CanonicalId, RcPid, undefined) -> {error, Reason} -> %% @TODO Think about bubbling this error up and providing %% feedback to requester. - _ = lager:error("Object access check failed due to error. Reason: ~p", [Reason]), + logger:error("Object access check failed due to error. Reason: ~p", [Reason]), false end; object_access(_BucketObj, _ObjAcl, 'WRITE', CanonicalId, RcPid, BucketAcl) -> @@ -279,13 +278,13 @@ object_access(_BucketObj, _ObjAcl, 'WRITE', CanonicalId, RcPid, BucketAcl) -> false end; object_access(_BucketObj, ObjAcl, RequestedAccess, CanonicalId, RcPid, _) -> - _ = lager:debug("ObjAcl: ~p~nCanonicalId: ~p", [ObjAcl, CanonicalId]), + logger:debug("ObjAcl: ~p; CanonicalId: ~p", [ObjAcl, CanonicalId]), IsObjOwner = is_owner(ObjAcl, CanonicalId), HasObjPerm = has_permission(acl_grants(ObjAcl), RequestedAccess, CanonicalId), - _ = lager:debug("IsObjOwner: ~p", [IsObjOwner]), - _ = lager:debug("HasObjPerm: ~p", [HasObjPerm]), + logger:debug("IsObjOwner: ~p", [IsObjOwner]), + logger:debug("HasObjPerm: ~p", [HasObjPerm]), if (RequestedAccess == 'READ_ACP' orelse RequestedAccess == 'WRITE_ACP') andalso @@ -315,7 +314,7 @@ owner_id(#acl_v1{owner=OwnerData}, RcPid) -> {ok, {Owner, _}} -> Owner?RCS_USER.key_id; {error, _} -> - _ = lager:warning("Failed to retrieve key_id for user ~p with canonical_id ~p", [Name, CanonicalId]), + logger:warning("Failed to retrieve key_id for user ~p with canonical_id ~p", [Name, CanonicalId]), [] end. diff --git a/apps/riak_cs/src/riak_cs_acl_utils.erl b/apps/riak_cs/src/riak_cs_acl_utils.erl index cb3f9a0bc..4d984b5c3 100644 --- a/apps/riak_cs/src/riak_cs_acl_utils.erl +++ b/apps/riak_cs/src/riak_cs_acl_utils.erl @@ -471,7 +471,7 @@ canonical_for_email(Email, RcPid) -> {ok, {User, _}} -> {ok, User?RCS_USER.canonical_id}; {error, Reason} -> - _ = lager:debug("Failed to retrieve canonical id for ~p. Reason: ~p", [Email, Reason]), + logger:debug("Failed to retrieve canonical id for ~p. Reason: ~p", [Email, Reason]), {error, unresolved_grant_email} end. @@ -499,7 +499,7 @@ process_acl_contents([], Acl, _) -> process_acl_contents([#xmlElement{content=Content, name=ElementName} | RestElements], Acl, RcPid) -> - _ = lager:debug("Element name: ~p", [ElementName]), + logger:debug("Element name: ~p", [ElementName]), UpdAclRes = case ElementName of 'Owner' -> @@ -507,7 +507,7 @@ process_acl_contents([#xmlElement{content=Content, 'AccessControlList' -> process_grants(Content, Acl, RcPid); _ -> - _ = lager:debug("Encountered unexpected element: ~p", [ElementName]), + logger:debug("Encountered unexpected element: ~p", [ElementName]), Acl end, case UpdAclRes of @@ -542,15 +542,15 @@ process_owner([#xmlElement{content=[Content], UpdOwner = case ElementName of 'ID' -> - _ = lager:debug("Owner ID value: ~p", [Value]), + logger:debug("Owner ID value: ~p", [Value]), {OwnerName, _, OwnerKeyId} = Owner, {OwnerName, Value, OwnerKeyId}; 'DisplayName' -> - _ = lager:debug("Owner Name content: ~p", [Value]), + logger:debug("Owner Name content: ~p", [Value]), {_, OwnerId, OwnerKeyId} = Owner, {Value, OwnerId, OwnerKeyId}; _ -> - _ = lager:debug("Encountered unexpected element: ~p", [ElementName]), + logger:debug("Encountered unexpected element: ~p", [ElementName]), Owner end, process_owner(RestElements, Acl?ACL{owner=UpdOwner}, RcPid); @@ -582,7 +582,7 @@ process_grants([#xmlElement{content=Content, Acl?ACL{grants=add_grant(Grant, Acl?ACL.grants)} end; _ -> - _ = lager:debug("Encountered unexpected grants element: ~p", [ElementName]), + logger:debug("Encountered unexpected grants element: ~p", [ElementName]), Acl end, case UpdAcl of @@ -602,8 +602,8 @@ process_grant([], Grant, _, _) -> process_grant([#xmlElement{content=Content, name=ElementName} | RestElements], Grant, AclOwner, RcPid) -> - _ = lager:debug("ElementName: ~p", [ElementName]), - _ = lager:debug("Content: ~p", [Content]), + logger:debug("ElementName: ~p", [ElementName]), + logger:debug("Content: ~p", [Content]), UpdGrant = case ElementName of 'Grantee' -> @@ -611,7 +611,7 @@ process_grant([#xmlElement{content=Content, 'Permission' -> process_permission(Content, Grant); _ -> - _ = lager:debug("Encountered unexpected grant element: ~p", [ElementName]), + logger:warning("Encountered unexpected grant element: ~p", [ElementName]), Grant end, case UpdGrant of @@ -650,21 +650,21 @@ process_grantee([#xmlElement{content=[Content], Value = Content#xmlText.value, case ElementName of 'ID' -> - _ = lager:debug("ID value: ~p", [Value]), + logger:debug("ID value: ~p", [Value]), {{Name, _}, Perms} = Grant, UpdGrant = {{Name, Value}, Perms}; 'EmailAddress' -> - _ = lager:debug("Email value: ~p", [Value]), + logger:debug("Email value: ~p", [Value]), UpdGrant = - case canonical_for_email(Value, RcPid) of - {ok, Id} -> - %% Get the canonical id for a given email address - _ = lager:debug("ID value: ~p", [Id]), - {{Name, _}, Perms} = Grant, - {{Name, Id}, Perms}; - {error, _}=Error -> - Error - end; + case canonical_for_email(Value, RcPid) of + {ok, Id} -> + %% Get the canonical id for a given email address + logger:debug("ID value: ~p", [Id]), + {{Name, _}, Perms} = Grant, + {{Name, Id}, Perms}; + {error, _}=Error -> + Error + end; 'URI' -> {_, Perms} = Grant, case Value of @@ -781,7 +781,7 @@ acl_from_json(Json) -> process_acl_contents([], Acl) -> Acl; process_acl_contents([{Name, Value} | RestObjects], Acl) -> - _ = lager:debug("Object name: ~p", [Name]), + logger:debug("Object name: ~p", [Name]), case Name of <<"owner">> -> {struct, OwnerData} = Value, @@ -805,19 +805,19 @@ process_owner([{Name, Value} | RestObjects], Acl) -> Owner = Acl?ACL.owner, case Name of <<"key_id">> -> - _ = lager:debug("Owner Key ID value: ~p", [Value]), + logger:debug("Owner Key ID value: ~p", [Value]), {OwnerName, OwnerCID, _} = Owner, UpdOwner = {OwnerName, OwnerCID, binary_to_list(Value)}; <<"canonical_id">> -> - _ = lager:debug("Owner ID value: ~p", [Value]), + logger:debug("Owner ID value: ~p", [Value]), {OwnerName, _, OwnerId} = Owner, UpdOwner = {OwnerName, binary_to_list(Value), OwnerId}; <<"display_name">> -> - _ = lager:debug("Owner Name content: ~p", [Value]), + logger:debug("Owner Name content: ~p", [Value]), {_, OwnerCID, OwnerId} = Owner, UpdOwner = {binary_to_list(Value), OwnerCID, OwnerId}; _ -> - _ = lager:debug("Encountered unexpected element: ~p", [Name]), + logger:debug("Encountered unexpected element: ~p", [Name]), UpdOwner = Owner end, process_owner(RestObjects, Acl?ACL{owner=UpdOwner}). @@ -839,22 +839,22 @@ process_grant([], Grant) -> process_grant([{Name, Value} | RestObjects], Grant) -> case Name of <<"canonical_id">> -> - _ = lager:debug("ID value: ~p", [Value]), + logger:debug("ID value: ~p", [Value]), {{DispName, _}, Perms} = Grant, UpdGrant = {{DispName, binary_to_list(Value)}, Perms}; <<"display_name">> -> - _ = lager:debug("Name value: ~p", [Value]), + logger:debug("Name value: ~p", [Value]), {{_, Id}, Perms} = Grant, UpdGrant = {{binary_to_list(Value), Id}, Perms}; <<"group">> -> - _ = lager:debug("Group value: ~p", [Value]), + logger:debug("Group value: ~p", [Value]), {_, Perms} = Grant, UpdGrant = {list_to_atom( binary_to_list(Value)), Perms}; <<"permissions">> -> {Grantee, _} = Grant, Perms = process_permissions(Value), - _ = lager:debug("Perms value: ~p", [Value]), + logger:debug("Perms value: ~p", [Value]), UpdGrant = {Grantee, Perms}; _ -> UpdGrant = Grant diff --git a/apps/riak_cs/src/riak_cs_app.erl b/apps/riak_cs/src/riak_cs_app.erl index 5a25e873e..bd5feb3a3 100644 --- a/apps/riak_cs/src/riak_cs_app.erl +++ b/apps/riak_cs/src/riak_cs_app.erl @@ -59,29 +59,29 @@ check_admin_creds() -> case riak_cs_config:admin_creds() of {ok, {"admin-key", _}} -> %% The default key - lager:warning("admin.key is defined as default. Please create" - " admin user and configure it.", []), + logger:warning("admin.key is defined as default. Please create" + " admin user and configure it.", []), application:set_env(riak_cs, admin_secret, "admin-secret"), ok; {ok, {undefined, _}} -> - _ = lager:warning("The admin user's key id has not been specified."), + logger:warning("The admin user's key id has not been specified."), {error, admin_key_undefined}; {ok, {[], _}} -> - _ = lager:warning("The admin user's key id has not been specified."), + logger:warning("The admin user's key id has not been specified."), {error, admin_key_undefined}; {ok, {Key, undefined}} -> fetch_and_cache_admin_creds(Key); {ok, {Key, []}} -> fetch_and_cache_admin_creds(Key); {ok, {Key, _}} -> - _ = lager:warning("The admin user's secret is specified. Ignoring."), + logger:warning("The admin user's secret is specified. Ignoring."), fetch_and_cache_admin_creds(Key) end. fetch_and_cache_admin_creds(Key) -> %% Not using as the master pool might not be initialized {ok, MasterPbc} = riak_connection(), - _ = lager:debug("setting admin as ~s", [Key]), + logger:debug("setting admin as ~s", [Key]), try %% Do we count this into stats?; This is a startup query and %% system latency is expected to be low. So get timeout can be @@ -94,13 +94,11 @@ fetch_and_cache_admin_creds(Key) -> Secret = User?RCS_USER.key_secret, application:set_env(riak_cs, admin_secret, Secret); Error -> - _ = lager:error("Couldn't get admin user (~s) record: ~p", - [Key, Error]), + logger:error("Couldn't get admin user (~s) record: ~p", [Key, Error]), Error end catch T:E -> - _ = lager:error("Couldn't get admin user (~s) record: ~p", - [Key, {T, E}]), + logger:error("Couldn't get admin user (~s) record: ~p", [Key, {T, E}]), {error, {T, E}} after riakc_pb_socket:stop(MasterPbc) @@ -113,22 +111,18 @@ fetch_and_cache_admin_creds(Key) -> sanity_check(true, ok, {ok, true}) -> riak_cs_sup:start_link(); sanity_check(false, _, _) -> - _ = lager:error("You must update your Riak CS app.config. Please see the" - "release notes for more information on updating you" - "configuration."), + logger:error("You must update your Riak CS app.config. Please see the" + "release notes for more information on updating you configuration."), {error, bad_config}; sanity_check(true, _, {ok, false}) -> - _ = lager:error("Invalid Riak bucket properties detected. Please " - "verify that allow_mult is set to true for all " - "buckets."), + logger:error("Invalid Riak bucket properties detected. Please " + "verify that allow_mult is set to true for all buckets."), {error, invalid_bucket_props}; sanity_check(true, _, {error, Reason}) -> - _ = lager:error("Could not verify bucket properties. Error was" - " ~p.", [Reason]), + logger:error("Could not verify bucket properties. Error was ~p.", [Reason]), {error, error_verifying_props}; sanity_check(_, {error, Reason}, _) -> - _ = lager:error("Admin credentials are not properly set: ~p.", - [Reason]), + logger:error("Admin credentials are not properly set: ~p.", [Reason]), {error, Reason}. -spec is_config_valid() -> boolean(). @@ -176,24 +170,18 @@ check_bucket_props(Bucket, MasterPbc) -> {ok, Props} -> case lists:keyfind(allow_mult, 1, Props) of {allow_mult, true} -> - _ = lager:debug("~s bucket was" - " already configured correctly.", - [Bucket]), {ok, true}; _ -> - _ = lager:warning("~p is misconfigured", [Bucket]), + logger:warning("~p is misconfigured", [Bucket]), {ok, false} end; {error, Reason}=E -> - _ = lager:warning( - "Unable to verify ~s bucket settings (~p).", - [Bucket, Reason]), + logger:warning("Unable to verify ~s bucket settings (~p).", [Bucket, Reason]), E end. riak_connection() -> {Host, Port} = riak_cs_config:riak_host_port(), - lager:debug("connecting to ~p", [{Host, Port}]), Timeout = case application:get_env(riak_cs, riakc_connect_timeout) of {ok, ConfigValue} -> ConfigValue; diff --git a/apps/riak_cs/src/riak_cs_block_server.erl b/apps/riak_cs/src/riak_cs_block_server.erl index 32b9f1b6b..289498013 100644 --- a/apps/riak_cs/src/riak_cs_block_server.erl +++ b/apps/riak_cs/src/riak_cs_block_server.erl @@ -191,8 +191,8 @@ handle_cast({put_block, ReplyPid, Bucket, Key, UUID, BlockNumber, Value, BCSum}, {?USERMETA_KEY, Key}, {?USERMETA_BCSUM, BCSum}]), FailFun = fun(Error) -> - _ = lager:error("Put ~p ~p UUID ~p block ~p failed: ~p\n", - [Bucket, Key, UUID, BlockNumber, Error]) + logger:error("Put ~p ~p UUID ~p block ~p failed: ~p", + [Bucket, Key, UUID, BlockNumber, Error]) end, %% TODO: Handle put failure here. ok = do_put_block(FullBucket, FullKey, <<>>, Value, MD, @@ -207,22 +207,22 @@ handle_cast({delete_block, ReplyPid, Bucket, Key, UUID, BlockNumber}, State=#sta %% do a get first to get the vclock (only do a head request though) GetOptions = [head | pr_quorum_options()], - _ = case riak_cs_pbc:get(block_pbc(RcPid), FullBucket, FullKey, - GetOptions, Timeout, [riakc, head_block]) of - {ok, RiakObject} -> - ok = delete_block(RcPid, ReplyPid, RiakObject, {UUID, BlockNumber}); - {error, notfound} -> - %% If the block isn't found, assume it's been - %% previously deleted by another delete FSM, and - %% move on to the next block. - riak_cs_delete_fsm:block_deleted(ReplyPid, {ok, {UUID, BlockNumber}}); - {error, _} = Error -> - %% Report errors in HEADs to prevent crashing block - %% servers, as crash logs forces lager to sync log - %% files at each line. - Result = format_delete_result(Error, {UUID, BlockNumber}), - riak_cs_delete_fsm:block_deleted(ReplyPid, Result) - end, + case riak_cs_pbc:get(block_pbc(RcPid), FullBucket, FullKey, + GetOptions, Timeout, [riakc, head_block]) of + {ok, RiakObject} -> + ok = delete_block(RcPid, ReplyPid, RiakObject, {UUID, BlockNumber}); + {error, notfound} -> + %% If the block isn't found, assume it's been + %% previously deleted by another delete FSM, and + %% move on to the next block. + riak_cs_delete_fsm:block_deleted(ReplyPid, {ok, {UUID, BlockNumber}}); + {error, _} = Error -> + %% Report errors in HEADs to prevent crashing block + %% servers, as crash logs forces lager to sync log + %% files at each line. + Result = format_delete_result(Error, {UUID, BlockNumber}), + riak_cs_delete_fsm:block_deleted(ReplyPid, Result) + end, dt_return(<<"delete_block">>, [BlockNumber], [Bucket, Key]), {noreply, State}; handle_cast(_Msg, State) -> @@ -254,14 +254,14 @@ do_get_block(ReplyPid, _Bucket, _Key, _ClusterID, _UseProxyGet, _ProxyActive, when is_list(ErrorReasons) andalso is_atom(LastReason) -> %% Not worth retrying, 'failure' comes as LastReason Sorry = {error, ErrorReasons}, - _ = lager:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), + logger:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), ok = riak_cs_get_fsm:chunk(ReplyPid, {UUID, BlockNumber}, Sorry); do_get_block(ReplyPid, _Bucket, _Key, _ClusterID, _UseProxyGet, _ProxyActive, UUID, BlockNumber, _RcPid, MaxRetries, ErrorReasons) when is_list(ErrorReasons) andalso length(ErrorReasons) > MaxRetries -> Sorry = {error, ErrorReasons}, - _ = lager:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), + logger:error("do_get_block/11 failed. Errors: ~p", [ErrorReasons]), ok = riak_cs_get_fsm:chunk(ReplyPid, {UUID, BlockNumber}, Sorry); do_get_block(ReplyPid, Bucket, Key, ClusterID, UseProxyGet, ProxyActive, @@ -307,7 +307,7 @@ try_local_get(RcPid, FullBucket, FullKey, GetOptions1, GetOptions2, [{local_one, Why}|ErrorReasons], UseProxyGet, ProxyActive, ClusterID); {error, Other} -> - _ = lager:error("do_get_block: other error 1: ~p\n", [Other]), + logger:error("do_get_block: other error 1: ~p", [Other]), RetryFun({failure, [{local_one, Other}|ErrorReasons]}) end. @@ -328,7 +328,7 @@ handle_local_notfound(RcPid, FullBucket, FullKey, GetOptions2, {error, Why} when Why == disconnected; Why == timeout -> - _ = lager:debug("get_block_local() failed: {error, ~p}", [Why]), + logger:warning("get_block_local() failed: ~p", [Why]), _ = riak_cs_pbc:pause_to_reconnect(block_pbc(RcPid), Why, Timeout), RetryFun([{local_quorum, Why}|ErrorReasons]); @@ -347,7 +347,7 @@ handle_local_notfound(RcPid, FullBucket, FullKey, GetOptions2, {error, notfound} -> RetryFun({failure, [{local_quorum, notfound}|ErrorReasons]}); {error, Other} -> - _ = lager:error("do_get_block: other error 2: ~p\n", [Other]), + logger:error("do_get_block: other error 2: ~p", [Other]), RetryFun({failure, [{local_quorum, Other}|ErrorReasons]}) end. @@ -421,7 +421,7 @@ secondary_delete_check({error, {unsatisfied_constraint, _, _}}, RcPid, RiakObjec StatsKey = [riakc, delete_block_secondary], riak_cs_pbc:delete_obj(block_pbc(RcPid), RiakObject, [], Timeout, StatsKey); secondary_delete_check({error, Reason} = E, _, _) -> - _ = lager:warning("Constrained block deletion failed. Reason: ~p", [Reason]), + logger:warning("Constrained block deletion failed. Reason: ~p", [Reason]), E; secondary_delete_check(_, _, _) -> ok. @@ -510,30 +510,29 @@ find_md_usermeta(MD) -> resolve_block_object(RObj, RcPid) -> {{MD, Value}, NeedRepair} = riak_cs_utils:resolve_robj_siblings(riakc_obj:get_contents(RObj)), - _ = if NeedRepair andalso is_binary(Value) -> + if NeedRepair andalso is_binary(Value) -> RBucket = riakc_obj:bucket(RObj), RKey = riakc_obj:key(RObj), [MD1|_] = riakc_obj:get_metadatas(RObj), S3Info = case find_md_usermeta(MD1) of - {ok, Ps} -> - Ps; - error -> - [] - end, - _ = lager:info("Repairing riak ~p ~p for ~p\n", - [RBucket, RKey, S3Info]), + {ok, Ps} -> + Ps; + error -> + [] + end, + logger:info("Repairing riak ~p ~p for ~p", [RBucket, RKey, S3Info]), Bucket = proplists:get_value(<>, S3Info), Key = proplists:get_value(<>, S3Info), VClock = riakc_obj:vclock(RObj), FailFun = fun(Error) -> - _ = lager:error("Put S3 ~p ~p Riak ~p ~p failed: ~p\n", - [Bucket, Key, RBucket, RKey, Error]) - end, + logger:error("Put S3 ~p ~p Riak ~p ~p failed: ~p", + [Bucket, Key, RBucket, RKey, Error]) + end, do_put_block(RBucket, RKey, VClock, Value, MD, RcPid, [riakc, put_block_resolved], FailFun); - NeedRepair andalso not is_binary(Value) -> - _ = lager:error("All checksums fail: ~P\n", [RObj, 200]); - true -> + NeedRepair andalso not is_binary(Value) -> + logger:error("All checksums fail: ~P", [RObj, 200]); + true -> ok end, if is_binary(Value) -> diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl index 860e1e128..6c06391d8 100644 --- a/apps/riak_cs/src/riak_cs_bucket.erl +++ b/apps/riak_cs/src/riak_cs_bucket.erl @@ -178,7 +178,7 @@ delete_bucket(User, UserObj, Bucket, RcPid) -> %% TODO: output log if failed in cleaning up existing uploads. %% The number of retry is hardcoded. {ok, Count} = delete_all_uploads(Bucket, RcPid), - _ = lager:debug("deleted ~p multiparts before bucket deletion.", [Count]), + logger:debug("deleted ~p multiparts before bucket deletion.", [Count]), %% This call still may return {error, remaining_multipart_upload} %% even if all uploads cleaned up above, because concurrent %% multiple deletion may happen. Then Riak CS returns 409 confliction @@ -230,13 +230,13 @@ fold_delete_uploads(Bucket, RcPid, [?MULTIPART_DESCR{key = VKey, {ok, _NewObj} -> fold_delete_uploads(Bucket, RcPid, Ds, Timestamp, Count+1); E -> - lager:debug("cannot delete multipart manifest: ~s (~s/~s:~s): ~p", - [M?MANIFEST.uuid, Bucket, Key, Vsn, E]), + logger:debug("cannot delete multipart manifest: ~s (~s/~s:~s): ~p", + [M?MANIFEST.uuid, Bucket, Key, Vsn, E]), E end; _E -> - lager:debug("skipping multipart manifest: ~p ~p (~p)", - [{Bucket, Key}, UploadId, _E]), + logger:debug("skipping multipart manifest: ~p ~p (~p)", + [{Bucket, Key}, UploadId, _E]), fold_delete_uploads(Bucket, RcPid, Ds, Timestamp, Count) end. @@ -268,7 +268,7 @@ iterate_csbuckets(RcPid, Acc0, Fun, Cont0) -> end; Error -> - _ = lager:error("iterating CS buckets: ~p", [Error]), + logger:error("iterating CS buckets: ~p", [Error]), {error, {Error, Acc0}} end. @@ -505,17 +505,17 @@ fetch_bucket_object_raw(BucketName, RcPid) -> -spec maybe_log_sibling_warning(binary(), list(riakc_obj:value())) -> ok. maybe_log_sibling_warning(Bucket, Values) when length(Values) > 1 -> - _ = lager:warning("The bucket ~s has ~b siblings that may need resolution.", - [binary_to_list(Bucket), length(Values)]), + logger:warning("The bucket ~s has ~b siblings that may need resolution.", + [binary_to_list(Bucket), length(Values)]), ok; maybe_log_sibling_warning(_, _) -> ok. -spec maybe_log_bucket_owner_error(binary(), list(riakc_obj:value())) -> ok. maybe_log_bucket_owner_error(Bucket, Values) when length(Values) > 1 -> - _ = lager:error("The bucket ~s has ~b owners." - " This situation requires administrator intervention.", - [binary_to_list(Bucket), length(Values)]), + logger:error("The bucket ~s has ~b owners." + " This situation requires administrator intervention.", + [binary_to_list(Bucket), length(Values)]), ok; maybe_log_bucket_owner_error(_, _) -> ok. @@ -780,21 +780,21 @@ handle_stanchion_response(409, ErrorDoc, Op, Bucket) Value = riak_cs_s3_response:xml_error_code(ErrorDoc), case {lists:flatten(Value), Op} of {"MultipartUploadRemaining", delete} -> - _ = lager:error("Concurrent multipart upload might have" - " happened on deleting bucket '~s'.", [Bucket]), + logger:error("Concurrent multipart upload might have" + " happened on deleting bucket '~s'.", [Bucket]), {error, remaining_multipart_upload}; {"MultipartUploadRemaining", create} -> %% might be security issue - _ = lager:critical("Multipart upload remains in deleted bucket (~s)" - " Clean up the deleted buckets now.", [Bucket]), + logger:critical("Multipart upload remains in deleted bucket (~s)" + " Clean up the deleted buckets now.", [Bucket]), %% Broken, returns 500 throw({remaining_multipart_upload_on_deleted_bucket, Bucket}); Other -> - _ = lager:debug("errordoc: ~p => ~s", [Other, ErrorDoc]), + logger:debug("errordoc: ~p => ~s", [Other, ErrorDoc]), riak_cs_s3_response:error_response(ErrorDoc) end; handle_stanchion_response(_C, ErrorDoc, _M, _) -> - %% _ = lager:error("unexpected errordoc: (~p, ~p) ~s", [_C, _M, ErrorDoc]), + %% logger:error("unexpected errordoc: (~p, ~p) ~s", [_C, _M, ErrorDoc]), riak_cs_s3_response:error_response(ErrorDoc). %% @doc Update a bucket record to convert the name from binary diff --git a/apps/riak_cs/src/riak_cs_config.erl b/apps/riak_cs/src/riak_cs_config.erl index 0dcc9369d..e09155ce4 100644 --- a/apps/riak_cs/src/riak_cs_config.erl +++ b/apps/riak_cs/src/riak_cs_config.erl @@ -117,8 +117,10 @@ -define(MAYBE_WARN(Bool, Msg), case (Bool) of - true -> _ = lager:warning((Msg)); - _ -> ok + true -> + logger:warning((Msg)); + _ -> + ok end). -spec warnings() -> ok. @@ -270,8 +272,7 @@ proxy_get_active() -> disabled -> false; Flag when is_boolean(Flag) -> Flag; Other -> - _ = lager:warning("proxy_get value in advanced.config is invalid: ~p", - [Other]), + logger:warning("proxy_get value in advanced.config is invalid: ~p", [Other]), false end. @@ -281,7 +282,7 @@ trust_x_forwarded_for() -> {ok, true} -> true; {ok, false} -> false; {ok, _} -> - _ = lager:warning("trust_x_forwarded_for value in app.config is invalid"), + logger:warning("trust_x_forwarded_for value in app.config is invalid"), false; undefined -> false %% secure by default! end. @@ -376,13 +377,12 @@ stanchion() -> {Host, Port} = case application:get_env(riak_cs, stanchion_host) of {ok, HostPort} -> HostPort; undefined -> - _ = lager:warning("No stanchion access defined. Using default."), {?DEFAULT_STANCHION_IP, ?DEFAULT_STANCHION_PORT} end, SSL = case application:get_env(riak_cs, stanchion_ssl) of {ok, SSL0} -> SSL0; undefined -> - _ = lager:warning("No ssl flag for stanchion access defined. Using default."), + logger:warning("No ssl flag for stanchion access defined. Using default."), ?DEFAULT_STANCHION_SSL end, {Host, Port, SSL}. diff --git a/apps/riak_cs/src/riak_cs_console.erl b/apps/riak_cs/src/riak_cs_console.erl index 6f904003b..e881c8726 100644 --- a/apps/riak_cs/src/riak_cs_console.erl +++ b/apps/riak_cs/src/riak_cs_console.erl @@ -85,7 +85,7 @@ test([]) -> ok catch E:R:T -> - lager:error("self-test failed: ~p:~p", [E, R]), + logger:error("self-test failed: ~p:~p", [E, R]), io:format("self-test failed: ~p:~p\nStacktrace: ~p\n", [E, R, T]) end. @@ -166,7 +166,7 @@ cluster_info([OutFile]) -> error:{badmatch, {error, enotdir}} -> io:format("Cluster_info failed, not a directory ~p~n", [filename:dirname(OutFile)]); Exception:Reason -> - lager:error("Cluster_info failed ~p:~p", [Exception, Reason]), + logger:error("Cluster_info failed ~p:~p", [Exception, Reason]), io:format("Cluster_info failed, see log for details~n"), error end. @@ -192,28 +192,24 @@ audit_bucket_ownership() -> audit_bucket_ownership0(RcPid) -> FromUsers = ownership_from_users(RcPid), {FromBuckets, OwnedBy} = ownership_from_buckets(RcPid), - lager:debug("FromUsers: ~p~n", [lists:usort(gb_sets:to_list(FromUsers))]), - lager:debug("FromBuckets: ~p~n", [lists:usort(gb_sets:to_list(FromBuckets))]), - lager:debug("OwnedBy: ~p~n", [lists:usort(gb_trees:to_list(OwnedBy))]), + logger:debug("FromUsers: ~p", [lists:usort(gb_sets:to_list(FromUsers))]), + logger:debug("FromBuckets: ~p", [lists:usort(gb_sets:to_list(FromBuckets))]), + logger:debug("OwnedBy: ~p", [lists:usort(gb_trees:to_list(OwnedBy))]), Inconsistencies0 = gb_sets:fold( fun ({U, B}, Acc) -> - lager:info( - "Bucket is not tracked by user: {User, Bucket} = {~s, ~s}", - [U, B]), + logger:info("Bucket is not tracked by user: {User, Bucket} = {~s, ~s}", [U, B]), [{not_tracked, {U, B}} | Acc] end, [], gb_sets:subtract(FromBuckets, FromUsers)), gb_sets:fold( fun({U,B}, Acc) -> case gb_trees:lookup(B, OwnedBy) of none -> - lager:info( - "Bucket does not exist: {User, Bucket} = {~s, ~s}", [U, B]), + logger:info("Bucket does not exist: {User, Bucket} = {~s, ~s}", [U, B]), [{no_bucket_object, {U, B}} | Acc]; {value, DifferentUser} -> - lager:info( - "Bucket is owned by different user: {User, Bucket, DifferentUser} = " - "{~s, ~s, ~s}", [U, B, DifferentUser]), + logger:info("Bucket is owned by different user: {User, Bucket, DifferentUser} = " + "{~s, ~s, ~s}", [U, B, DifferentUser]), [{different_user, {U, B, DifferentUser}} | Acc] end end, Inconsistencies0, gb_sets:subtract(FromUsers, FromBuckets)). @@ -277,8 +273,8 @@ cleanup_orphan_multipart(Timestamp) when is_list(Timestamp) -> cleanup_orphan_multipart(Timestamp) when is_binary(Timestamp) -> {ok, RcPid} = riak_cs_riak_client:start_link([]), - _ = lager:info("cleaning up with timestamp ~s", [Timestamp]), - _ = io:format("cleaning up with timestamp ~s", [Timestamp]), + logger:info("cleaning up with timestamp ~s", [Timestamp]), + io:format("cleaning up with timestamp ~s", [Timestamp]), Fun = fun(RcPidForOneBucket, BucketName, GetResult, Acc0) -> ok = maybe_cleanup_csbucket(RcPidForOneBucket, BucketName, GetResult, Timestamp), @@ -287,8 +283,8 @@ cleanup_orphan_multipart(Timestamp) when is_binary(Timestamp) -> _ = riak_cs_bucket:fold_all_buckets(Fun, [], RcPid), ok = riak_cs_riak_client:stop(RcPid), - _ = lager:info("All old unaborted orphan multipart uploads have been deleted.", []), - _ = io:format("~nAll old unaborted orphan multipart uploads have been deleted.~n", []). + logger:info("All old unaborted orphan multipart uploads have been deleted.", []), + io:format("~nAll old unaborted orphan multipart uploads have been deleted.~n", []). -spec resolve_siblings(binary(), binary()) -> any(). @@ -331,24 +327,23 @@ resolve_siblings(Pid, RawBucket, RawKey) -> resolve_siblings(Pid, RawBucket, RawKey, GetOptions, GetTimeout, PutOptions, PutTimeout) when is_integer(GetTimeout) andalso is_integer(PutTimeout) -> - _ = lager:info("Getting ~p:~p~n", [RawBucket, RawKey]), case riakc_pb_socket:get(Pid, RawBucket, RawKey, GetOptions, GetTimeout) of {ok, RiakObj} -> - _ = lager:info("Trying to resolve ~p sibling(s) of ~p:~p", - [riakc_obj:value_count(RiakObj), RawBucket, RawKey]), + logger:info("Trying to resolve ~p sibling(s) of ~p:~p", + [riakc_obj:value_count(RiakObj), RawBucket, RawKey]), case resolve_ro_siblings(RiakObj, RawBucket, RawKey) of {ok, RiakObj2} -> R = riakc_pb_socket:put(Pid, RiakObj2, PutOptions, PutTimeout), - _ = lager:info("Resolution result: ~p~n", [R]), + logger:info("Resolution result: ~p", [R]), R; ok -> - lager:info("No siblings in ~p:~p~n", [RawBucket, RawKey]); + logger:info("No siblings in ~p:~p", [RawBucket, RawKey]); {error, _} = E -> - _ = lager:info("Not updating ~p:~p: ~p~n", [RawBucket, RawKey, E]), + logger:info("Not updating ~p:~p: ~p", [RawBucket, RawKey, E]), E end; {error, Reason} = E -> - _ = lager:info("Failed to get an object before resolution: ~p~n", [Reason]), + logger:info("Failed to get an object before resolution: ~p", [Reason]), E end. @@ -389,7 +384,7 @@ resolve_ro_siblings(RO, <<"0b:", _/binary>>, _) -> RO1 = riakc_obj:update_metadata(RO, MD), {ok, riakc_obj:update_value(RO1, Value)}; {E, true} -> - _ = lager:info("Cannot resolve: ~p~n", [E]), + logger:info("Cannot resolve: ~p", [E]), {error, E}; {_, false} -> ok @@ -397,8 +392,7 @@ resolve_ro_siblings(RO, <<"0b:", _/binary>>, _) -> resolve_ro_siblings(RiakObject, <<"0o:", _/binary>>, _RawKey) -> [{_, Manifest}|_] = Manifests = riak_cs_manifest:manifests_from_riak_object(RiakObject), - _ = lager:info("Number of histories after sibling resolution: ~p.~n", - [length(Manifests)]), + logger:info("Number of histories after sibling resolution: ~p.", [length(Manifests)]), ObjectToWrite0 = riak_cs_utils:update_obj_value( RiakObject, riak_cs_utils:encode_term(Manifests)), @@ -421,8 +415,8 @@ maybe_cleanup_csbucket(RcPidForOneBucket, BucketName, {ok, RiakObj}, Timestamp) {ok, Count} -> io:format(" aborted ~p uploads.~n", [Count]); Error -> - lager:warning("Error in deleting old uploads: ~p~n", [Error]), - io:format("Error in deleting old uploads: ~p <<< ~n", [Error]), + logger:warning("Error in deleting old uploads: ~p", [Error]), + io:format("Error in deleting old uploads: ~p <<< \n", [Error]), Error end; @@ -438,6 +432,6 @@ maybe_cleanup_csbucket(RcPidForOneBucket, BucketName, {ok, RiakObj}, Timestamp) maybe_cleanup_csbucket(_, _, {error, notfound}, _) -> ok; maybe_cleanup_csbucket(_, BucketName, {error, _} = Error, _) -> - lager:error("~p on processing ~s", [Error, BucketName]), + logger:error("~p on processing ~s", [Error, BucketName]), io:format("Error: ~p on processing ~s\n", [Error, BucketName]), Error. diff --git a/apps/riak_cs/src/riak_cs_copy_object.erl b/apps/riak_cs/src/riak_cs_copy_object.erl index db725744f..d6152749f 100644 --- a/apps/riak_cs/src/riak_cs_copy_object.erl +++ b/apps/riak_cs/src/riak_cs_copy_object.erl @@ -77,7 +77,7 @@ authorize_on_src(RcPid, SrcManifest, RD, {undefined, undefined} end, - lager:debug("UserKey: ~p / ~p", [UserKey, User]), + logger:debug("UserKey: ~p / ~p", [UserKey, User]), %% Build fake context for checking read access to the src object OtherLocalCtx = LocalCtx#key_context{bucket = SrcBucket, @@ -92,8 +92,8 @@ authorize_on_src(RcPid, SrcManifest, RD, %% TODO: use unicode module for for key? or is this encoded? Path = string:join(["/buckets", binary_to_list(SrcBucket), "objects", binary_to_list(SrcKey)], "/"), - _ = lager:debug("raw path: ~p => ~p", [wrq:raw_path(RD), Path]), - _ = lager:debug("src bucket obj: ~p", [SrcBucketObj]), + logger:debug("raw path: ~p => ~p", [wrq:raw_path(RD), Path]), + logger:debug("src bucket obj: ~p", [SrcBucketObj]), OtherRD0 = wrq:create('GET', wrq:version(RD), Path, wrq:req_headers(RD)), OtherRD = wrq:load_dispatch_data([{bucket, binary_to_list(SrcBucket)}, {object, binary_to_list(SrcKey)}], @@ -239,7 +239,7 @@ get_and_put(GetPid, PutPid, MD5, ContFun) -> get_and_put(GetPid, PutPid, MD5, ContFun) end; false -> - _ = lager:debug("Connection lost during a copy", []), + logger:warning("Connection lost during a copy", []), catch riak_cs_get_fsm:stop(GetPid), catch riak_cs_put_fsm:force_stop(PutPid), {error, connection_lost} diff --git a/apps/riak_cs/src/riak_cs_delete_fsm.erl b/apps/riak_cs/src/riak_cs_delete_fsm.erl index d2968c435..51c25d90d 100644 --- a/apps/riak_cs/src/riak_cs_delete_fsm.erl +++ b/apps/riak_cs/src/riak_cs_delete_fsm.erl @@ -205,9 +205,9 @@ handle_receiving_manifest(State = #state{manifest = Manifest, {error, invalid_state} -> {Bucket, Key} = Manifest?MANIFEST.bkey, ObjVsn = Manifest?MANIFEST.vsn, - _ = lager:warning("Invalid state manifest in GC bucket at ~p, " - "b/k:v \"~s/~s:~s\": ~p", - [GCKey, Bucket, Key, ObjVsn, Manifest]), + logger:warning("Invalid state manifest in GC bucket at ~p, " + "b/k:v \"~s/~s:~s\": ~p", + [GCKey, Bucket, Key, ObjVsn, Manifest]), %% If total blocks and deleted blocks are the same, %% gc worker attempt to delete the manifest in fileset. %% Then manifests and blocks becomes orphan. @@ -259,7 +259,7 @@ maybe_delete_blocks(State = #state{bucket = Bucket, NewUnackedDeletes = ordsets:add_element(BlockID, UnackedDeletes), NewDeleteBlocksRemaining = ordsets:del_element(BlockID, DeleteBlocksRemaining), {UUID, Seq} = BlockID, - lager:debug("Deleting block #~b (~p) of \"~s/~s:~s\"", [Seq, UUID, Bucket, Key, ObjVsn]), + logger:debug("Deleting block #~b (~p) of \"~s/~s:~s\"", [Seq, UUID, Bucket, Key, ObjVsn]), riak_cs_block_server:delete_block(DeleterPid, Bucket, Key, UUID, Seq), NewFreeDeleters = ordsets:del_element(DeleterPid, FreeDeleters), maybe_delete_blocks(State#state{unacked_deletes = NewUnackedDeletes, diff --git a/apps/riak_cs/src/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl index 3a22bf8ea..1bbe4fcb4 100644 --- a/apps/riak_cs/src/riak_cs_gc.erl +++ b/apps/riak_cs/src/riak_cs_gc.erl @@ -216,7 +216,7 @@ handle_mark_as_pending_delete({ok, RiakObject}, Bucket, UUIDsToMark, RcPid) -> end; handle_mark_as_pending_delete({error, _Error}=Error, _Bucket, _UUIDsToMark, _RcPid) -> - lager:warning("Failed to mark as pending_delete, reason: ~p", [Error]), + logger:warning("Failed to mark as pending_delete, reason: ~p", [Error]), Error. %% @doc Return the number of seconds to wait after finishing garbage @@ -389,7 +389,7 @@ maybe_delete_small_objects(Manifests, RcPid, Threshold) -> when ContentLength < Threshold -> %% actually this won't be scheduled :P UUIDManifest = {UUID, Manifest?MANIFEST{state=scheduled_delete}}, - _ = lager:debug("trying to delete ~p at ~p", [UUIDManifest, BagId]), + logger:debug("trying to delete ~p at ~p", [UUIDManifest, BagId]), case try_delete_blocks(BagId, UUIDManifest) of ok -> {Survivors, [UUID|UUIDsToDelete]}; @@ -399,8 +399,8 @@ maybe_delete_small_objects(Manifests, RcPid, Threshold) -> end; ({UUID, M}, {Survivors, UUIDsToDelete}) -> ContentLength = M?MANIFEST.content_length, - _ = lager:debug("~p is not being deleted: (CL, threshold)=(~p, ~p)", - [UUID, ContentLength, Threshold]), + logger:debug("~p is not being deleted: (CL, threshold)=(~p, ~p)", + [UUID, ContentLength, Threshold]), {[{UUID, M}|Survivors], UUIDsToDelete} end, %% Obtain a new history! @@ -415,18 +415,16 @@ try_delete_blocks(BagId, {UUID, _} = UUIDManifest) -> case riak_cs_delete_fsm:sync_delete(Pid) of {Pid, {ok, {_, _, _, _, TotalBlocks, TotalBlocks}}} -> %% all the blocks are successfully deleted - _ = lager:debug("Active deletion of ~p succeeded", [UUID]), + logger:debug("Active deletion of ~p succeeded", [UUID]), ok; {Pid, {ok, {_, _, _, _, NumDeleted, TotalBlocks}}} -> - _ = lager:debug("Only ~p/~p blocks of ~p deleted", - [NumDeleted, TotalBlocks, UUID]), + logger:debug("Only ~p/~p blocks of ~p deleted", [NumDeleted, TotalBlocks, UUID]), {error, partially_deleted}; {Pid, {error, _} = E} -> - _ = lager:warning("Active deletion of ~p failed. Reason: ~p", - [UUID, E]), + logger:warning("Active deletion of ~p failed. Reason: ~p", [UUID, E]), E; Other -> - _ = lager:error("Active deletion failed. Reason: ~p", [Other]), + logger:error("Active deletion failed. Reason: ~p", [Other]), {error, Other} end. @@ -459,7 +457,7 @@ move_manifests_to_gc_bucket(Manifests, RcPid) -> end, %% Create a set from the list of manifests - lager:debug("Manifests scheduled for deletion: ~p", [Manifests]), + logger:debug("Manifests scheduled for deletion: ~p", [Manifests]), Timeout1 = riak_cs_config:put_gckey_timeout(), riak_cs_pbc:put(ManifestPbc, ObjectToWrite, [], Timeout1, [riakc, put_gc_manifest_set]). diff --git a/apps/riak_cs/src/riak_cs_gc_batch.erl b/apps/riak_cs/src/riak_cs_gc_batch.erl index d32d6d606..79706333a 100644 --- a/apps/riak_cs/src/riak_cs_gc_batch.erl +++ b/apps/riak_cs/src/riak_cs_gc_batch.erl @@ -101,22 +101,19 @@ init([#gc_batch_state{ 1000000000 =< EndKey -> %% StartKey < EndKey %% EndKey <= BatchStart - Leeway - _ = lager:info("Starting garbage collection: " - "(start, end) = (~p, ~p), " - "leeway=~p, batch_start=~p, max_workers=~p, page-size=~p", - [StartKey, EndKey, Leeway, BatchStart, MaxWorkers, BatchSize]), + logger:info("Starting garbage collection: (start, end) = (~p, ~p), " + "leeway=~p, batch_start=~p, max_workers=~p, page-size=~p", + [StartKey, EndKey, Leeway, BatchStart, MaxWorkers, BatchSize]), {ok, prepare, State, 0}; DefaultEndKey -> - _ = lager:error("GC did not start: " - "End of GC target period was too recent (~p > ~p)", - [EndKey, DefaultEndKey]), + logger:error("GC did not start: End of GC target period was too recent (~p > ~p)", + [EndKey, DefaultEndKey]), {stop, {error, invalid_gc_end_key}} end; init([#gc_batch_state{start_key=StartKey, end_key=EndKey}]) -> - _ = lager:error("GC did not start due to wrong GC target period: " - "(start, end) = (~p, ~p)", - [StartKey, EndKey]), + logger:error("GC did not start due to wrong GC target period: (start, end) = (~p, ~p)", + [StartKey, EndKey]), {stop, {error, invalid_gc_start_key}}. @@ -178,20 +175,20 @@ handle_info(_Info, StateName, State) -> %% @doc TODO: log warnings if this fsm is asked to terminate in the %% middle of running a gc batch terminate(normal, _StateName, State) -> - lager:info("Finished garbage collection: " - "~b seconds, ~p batch_count, ~p batch_skips, " - "~p manif_count, ~p block_count", - [elapsed(State?STATE.batch_start), State?STATE.batch_count, - State?STATE.batch_skips, State?STATE.manif_count, - State?STATE.block_count]), + logger:info("Finished garbage collection: " + "~b seconds, ~p batch_count, ~p batch_skips, " + "~p manif_count, ~p block_count", + [elapsed(State?STATE.batch_start), State?STATE.batch_count, + State?STATE.batch_skips, State?STATE.manif_count, + State?STATE.block_count]), riak_cs_gc_manager:finished(State); terminate(cancel, _StateName, State) -> - lager:warning("Garbage collection has been canceled: " - "~b seconds, ~p batch_count, ~p batch_skips, " - "~p manif_count, ~p block_count\n", - [elapsed(State?STATE.batch_start), State?STATE.batch_count, - State?STATE.batch_skips, State?STATE.manif_count, - State?STATE.block_count]), + logger:warning("Garbage collection has been canceled: " + "~b seconds, ~p batch_count, ~p batch_skips, " + "~p manif_count, ~p block_count", + [elapsed(State?STATE.batch_start), State?STATE.batch_count, + State?STATE.batch_skips, State?STATE.manif_count, + State?STATE.block_count]), ok; terminate(_Reason, _StateName, _State) -> ok. @@ -231,7 +228,7 @@ fetch_first_keys(?STATE{batch_start=_BatchStart, {KeyListRes, KeyListState} = riak_cs_gc_key_list:new(StartKey, EndKey, BatchSize), #gc_key_list_result{bag_id=BagId, batch=Batch} = KeyListRes, - _ = lager:debug("Initial batch keys: ~p", [Batch]), + logger:debug("Initial batch keys: ~p", [Batch]), State?STATE{batch=Batch, key_list_state=KeyListState, bag_id=BagId}. @@ -249,7 +246,7 @@ handle_batch_complete(WorkerPid, WorkerState, State) -> batch_skips=WorkerBatchSkips, manif_count=WorkerManifestCount, block_count=WorkerBlockCount} = WorkerState, - _ = lager:debug("~p completed (~p)", [WorkerPid, WorkerState]), + logger:debug("~p completed (~p)", [WorkerPid, WorkerState]), UpdWorkerPids = lists:delete(WorkerPid, WorkerPids), %% @TODO Workout the terminiology for these stats. i.e. Is batch %% count just an increment or represenative of something else. @@ -268,7 +265,7 @@ start_worker(?STATE{batch=[NextBatch|RestBatches], worker_pids=WorkerPids} = State) -> case ?GC_WORKER:start_link(BagId, NextBatch) of {ok, Pid} -> - _ = lager:debug("GC worker ~p for bag ~p has started", [Pid, BagId]), + logger:debug("GC worker ~p for bag ~p has started", [Pid, BagId]), State?STATE{batch=RestBatches, worker_pids=[Pid | WorkerPids]}; {error, _Reason} -> @@ -280,8 +277,8 @@ start_worker(?STATE{batch=[NextBatch|RestBatches], cancel_batch(?STATE{batch_start=BatchStart, worker_pids=WorkerPids}=_State) -> %% Interrupt the batch of deletes - _ = lager:info("Canceled garbage collection batch after ~b seconds.", - [elapsed(BatchStart)]), + logger:info("Canceled garbage collection batch after ~b seconds.", + [elapsed(BatchStart)]), [riak_cs_gc_worker:stop(P) || P <- WorkerPids]. -spec ok_reply(atom(), ?STATE{}) -> {reply, ok, atom(), ?STATE{}}. @@ -306,7 +303,7 @@ maybe_start_workers(?STATE{max_workers=MaxWorkers, %% Fetch the next set of manifests for deletion {KeyListRes, UpdKeyListState} = riak_cs_gc_key_list:next(KeyListState), #gc_key_list_result{bag_id=BagId, batch=Batch} = KeyListRes, - lager:debug("Next batch keys: ~p", [Batch]), + logger:debug("Next batch keys: ~p", [Batch]), State2 = State?STATE{batch=Batch, key_list_state=UpdKeyListState, bag_id=BagId}, @@ -318,7 +315,7 @@ maybe_start_workers(?STATE{max_workers=MaxWorkers, worker_pids=WorkerPids, batch=Batch} = State) when MaxWorkers > length(WorkerPids) -> - lager:debug("Batch: ~p, WorkerPids: ~p", [Batch, WorkerPids]), + logger:debug("Batch: ~p, WorkerPids: ~p", [Batch, WorkerPids]), State2 = start_worker(State), maybe_start_workers(State2). diff --git a/apps/riak_cs/src/riak_cs_gc_key_list.erl b/apps/riak_cs/src/riak_cs_gc_key_list.erl index e983d88f3..79f9ad3d0 100644 --- a/apps/riak_cs/src/riak_cs_gc_key_list.erl +++ b/apps/riak_cs/src/riak_cs_gc_key_list.erl @@ -58,7 +58,7 @@ next(#gc_key_list_state{current_riak_client=RcPid, continuation=Continuation} = State) -> {Batch, UpdContinuation} = fetch_eligible_manifest_keys(RcPid, StartKey, EndKey, BatchSize, Continuation), - lager:debug("next Batch: ~p~n", [Batch]), + logger:debug("next Batch: ~p", [Batch]), {#gc_key_list_result{bag_id=BagId, batch=Batch}, State#gc_key_list_state{continuation=UpdContinuation}}. @@ -82,15 +82,15 @@ next_pool(#gc_key_list_state{ ok = riak_cs_riak_client:set_manifest_bag(RcPid, BagId), {Batch, Continuation} = fetch_eligible_manifest_keys(RcPid, StartKey, EndKey, BatchSize, undefined), - lager:debug("next_bag ~s Batch: ~p~n", [BagId, Batch]), + logger:debug("next_bag ~s Batch: ~p", [BagId, Batch]), {#gc_key_list_result{bag_id=BagId, batch=Batch}, State#gc_key_list_state{remaining_bags=Rest, current_riak_client=RcPid, current_bag_id=BagId, continuation=Continuation}}; {error, Reason} -> - lager:error("Connection error for bag ~s in garbage collection: ~p", - [BagId, Reason]), + logger:error("Connection error for bag ~s in garbage collection: ~p", + [BagId, Reason]), next_pool(State#gc_key_list_state{remaining_bags=Rest}) end. @@ -122,9 +122,8 @@ eligible_manifest_keys({{ok, ?INDEX_RESULTS{keys=Keys}}, _}, false, BatchSize) -> split_eligible_manifest_keys(BatchSize, Keys, []); eligible_manifest_keys({{error, Reason}, {StartKey, EndKey}}, _, _) -> - _ = lager:warning("Error occurred trying to query from time ~p to ~p" - "in gc key index. Reason: ~p", - [StartKey, EndKey, Reason]), + logger:warning("Error occurred trying to query from time ~p to ~p" + "in gc key index. Reason: ~p", [StartKey, EndKey, Reason]), []. %% @doc Break a list of gc-eligible keys from the GC bucket into smaller sets diff --git a/apps/riak_cs/src/riak_cs_gc_manager.erl b/apps/riak_cs/src/riak_cs_gc_manager.erl index 2ff044296..cc686b699 100644 --- a/apps/riak_cs/src/riak_cs_gc_manager.erl +++ b/apps/riak_cs/src/riak_cs_gc_manager.erl @@ -141,8 +141,8 @@ init([]) -> Interval2 = Interval + InitialDelay, Next = riak_cs_gc:timestamp() + Interval2, TimerRef = erlang:send_after(Interval2 * 1000, self(), {start, []}), - _ = lager:info("Scheduled next batch at ~s", - [riak_cs_gc_console:human_time(Next)]), + logger:info("Scheduled next batch at ~s", + [riak_cs_gc_console:human_time(Next)]), #gc_manager_state{next=Next, interval=Interval, @@ -223,7 +223,7 @@ handle_info({'EXIT', Pid, Reason}, _StateName, #gc_manager_state{gc_batch_pid=Pid} = State) -> case Reason of Reason when Reason =/= normal andalso Reason =/= cancel -> - _ = lager:warning("GC batch has terminated for reason: ~p", [Reason]); + logger:warning("GC batch has terminated for reason: ~p", [Reason]); _ -> ok end, @@ -234,7 +234,7 @@ handle_info({start, Options}, idle, State) -> {ok, NextState} -> {next_state, running, NextState}; Error -> - _ = lager:error("Cannot start batch. Reason: ~p", [Error]), + logger:error("Cannot start batch. Reason: ~p", [Error]), NextState = schedule_next(State), {next_state, idle, NextState} end; @@ -243,8 +243,8 @@ handle_info({start, _}, running, State) -> {next_state, running, State}; handle_info(Info, StateName, State) -> %% This is really unexpected and unknown - warning. - _ = lager:warning("Unexpected message received at GC process (~p): ~p", - [StateName, Info]), + logger:warning("Unexpected message received at GC process (~p): ~p", + [StateName, Info]), {next_state, StateName, State}. %% @private @@ -328,7 +328,7 @@ schedule_next(#gc_manager_state{timer_ref=Ref}=State) false -> schedule_next(State#gc_manager_state{timer_ref=undefined}); _ -> - _ = lager:debug("Timer is already scheduled, maybe manually triggered?"), + logger:debug("Timer is already scheduled, maybe manually triggered?"), %% Timer is already scheduled, do nothing State end; @@ -339,8 +339,8 @@ schedule_next(#gc_manager_state{interval=Interval}=State) -> RevisedNext = riak_cs_gc:timestamp() + Interval, TimerValue = Interval * 1000, TimerRef = erlang:send_after(TimerValue, self(), {start, []}), - _ = lager:info("Scheduled next batch at ~s", - [riak_cs_gc_console:human_time(RevisedNext)]), + logger:info("Scheduled next batch at ~s", + [riak_cs_gc_console:human_time(RevisedNext)]), State#gc_manager_state{next=RevisedNext, timer_ref=TimerRef}. diff --git a/apps/riak_cs/src/riak_cs_gc_worker.erl b/apps/riak_cs/src/riak_cs_gc_worker.erl index 2c33fd03d..306b29088 100644 --- a/apps/riak_cs/src/riak_cs_gc_worker.erl +++ b/apps/riak_cs/src/riak_cs_gc_worker.erl @@ -236,9 +236,8 @@ fetch_next_fileset(ManifestSetKey, RcPid) -> {error, notfound}=Error -> Error; {error, Reason}=Error -> - _ = lager:info("Error occurred trying to read the fileset" - " for ~p for gc. Reason: ~p", - [ManifestSetKey, Reason]), + logger:info("Error occurred trying to read the fileset" + " for ~p for gc. Reason: ~p", [ManifestSetKey, Reason]), riak_cs_pbc:check_connection_status(ManifestPbc, fetch_next_fileset), Error end. @@ -258,7 +257,7 @@ finish_file_delete(0, _, RiakObj, RcPid) -> Timeout, [riakc, delete_gc_manifest_set]), ok; finish_file_delete(_, FileSet, _RiakObj, _RcPid) -> - _ = lager:debug("Remaining file keys: ~p", [twop_set:to_list(FileSet)]), + logger:debug("Remaining file keys: ~p", [twop_set:to_list(FileSet)]), %% NOTE: we used to do a PUT here, but now with multidc replication %% we run garbage collection seprarately on each cluster, so we don't %% want to send this update to another data center. When we delete this diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl index cbd1383dc..20f3e6b0c 100644 --- a/apps/riak_cs/src/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/riak_cs_get_fsm.erl @@ -246,7 +246,7 @@ waiting_continue_or_stop({continue, Range}, #state{manifest = Manifest, [] -> %% We should never get here because empty %% files are handled by the wm resource. - _ = lager:warning("~p/~p:~p has no blocks", [BucketName, Key, ObjVsn]), + logger:warning("~p/~p:~p has no blocks", [BucketName, Key, ObjVsn]), {stop, normal, State}; [InitialBlock|_] -> TotalBlocks = length(BlocksOrder), @@ -257,7 +257,7 @@ waiting_continue_or_stop({continue, Range}, #state{manifest = Manifest, FreeReaders = riak_cs_block_server:start_block_servers(Manifest, RcPid, FetchConcurrency), - _ = lager:debug("Block Servers: ~p", [FreeReaders]); + logger:debug("Block Servers: ~p", [FreeReaders]); _ -> FreeReaders = Readers end, @@ -273,8 +273,7 @@ waiting_continue_or_stop({continue, Range}, #state{manifest = Manifest, end. waiting_continue_or_stop(Event, From, State) -> - _ = lager:info("Pid ~p got unknown event ~p from ~p\n", - [self(), Event, From]), + logger:info("Pid ~p got unknown event ~p from ~p", [self(), Event, From]), {next_state, waiting_continue_or_stop, State}. waiting_chunks(get_next_chunk, From, State=#state{num_sent = TotalNumBlocks, @@ -308,7 +307,7 @@ perhaps_send_to_user(From, #state{got_blocks = Got, {{value, NextBlock}, UpdIntransit} -> case orddict:find(NextBlock, Got) of {ok, Block} -> - _ = lager:debug("Returning block ~p to client", [NextBlock]), + logger:debug("Returning block ~p to client", [NextBlock]), %% Must use gen_fsm:reply/2 here! We are shared %% with an async event func and must return next_state. gen_fsm:reply(From, {chunk, Block}), @@ -324,7 +323,7 @@ waiting_chunks(stop, State) -> {stop, normal, State}; waiting_chunks(timeout, State = #state{got_blocks = Got}) -> GotSize = orddict:size(Got), - _ = lager:debug("starting fetch again with ~p left in queue", [GotSize]), + logger:debug("starting fetch again with ~p left in queue", [GotSize]), UpdState = read_blocks(State), {next_state, waiting_chunks, UpdState}; @@ -337,12 +336,12 @@ waiting_chunks({chunk, Pid, {NextBlock, BlockReturnValue}}, skip_bytes_initial = SkipInitial, keep_bytes_final = KeepFinal } = State) -> - _ = lager:debug("Retrieved block ~p", [NextBlock]), + logger:debug("Retrieved block ~p", [NextBlock]), case BlockReturnValue of {error, _} = ErrorRes -> #state{bucket = Bucket, key = Key, obj_vsn = ObjVsn} = State, - _ = lager:error("Cannot get S3 ~s/~s:~s block# ~p: ~p", - [Bucket, Key, ObjVsn, NextBlock, ErrorRes]), + logger:error("Cannot get S3 ~s/~s:~s block# ~p: ~p", + [Bucket, Key, ObjVsn, NextBlock, ErrorRes]), %% Our terminate() will explicitly stop dependent processes, %% we don't need an abnormal exit to kill them for us. exit(normal); @@ -355,7 +354,7 @@ waiting_chunks({chunk, Pid, {NextBlock, BlockReturnValue}}, {InitialBlock, FinalBlock}, {SkipInitial, KeepFinal}), UpdGot = orddict:store(NextBlock, BlockValue, Got), - %% TODO: _ = lager:debug("BlocksLeft: ~p", [BlocksLeft]), + %% TODO: logger:debug("BlocksLeft: ~p", [BlocksLeft]), GotSize = orddict:size(UpdGot), UpdState0 = State#state{got_blocks = UpdGot, free_readers = [Pid|FreeReaders]}, MaxGotSize = riak_cs_lfs_utils:get_fsm_buffer_size_factor(), @@ -435,7 +434,7 @@ prepare(#state{bucket = Bucket, {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, Vsn, RcPid), case riak_cs_manifest_fsm:get_active_manifest(ManiPid) of {ok, Manifest} -> - lager:debug("Manifest: ~p", [Manifest]), + logger:debug("Manifest: ~p", [Manifest]), case riak_cs_mp_utils:clean_multipart_unused_parts(Manifest, RcPid) of same -> State#state{manifest = Manifest, diff --git a/apps/riak_cs/src/riak_cs_json.erl b/apps/riak_cs/src/riak_cs_json.erl index d9023d9cc..134e867ac 100644 --- a/apps/riak_cs/src/riak_cs_json.erl +++ b/apps/riak_cs/src/riak_cs_json.erl @@ -89,7 +89,7 @@ to_json([]) -> -spec value_or_default({ok, term()} | {error, term()}, term()) -> term(). value_or_default({error, Reason}, Default) -> - _ = lager:debug("JSON error: ~p", [Reason]), + logger:debug("JSON error: ~p", [Reason]), Default; value_or_default({ok, Value}, _) -> Value. diff --git a/apps/riak_cs/src/riak_cs_keystone_auth.erl b/apps/riak_cs/src/riak_cs_keystone_auth.erl index 5202da453..a66e11a90 100644 --- a/apps/riak_cs/src/riak_cs_keystone_auth.erl +++ b/apps/riak_cs/src/riak_cs_keystone_auth.erl @@ -131,8 +131,7 @@ handle_token_info_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, TokenInfo} handle_token_info_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, _}}) -> failed; handle_token_info_response({error, Reason}) -> - _ = lager:warning("Error occurred requesting token from keystone. Reason: ~p", - [Reason]), + logger:warning("Error occurred requesting token from keystone. Reason: ~p", [Reason]), failed. parse_auth_header("AWS " ++ Key) -> diff --git a/apps/riak_cs/src/riak_cs_kv_multi_backend.erl b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl index 2a7ffa6ae..f46292cac 100644 --- a/apps/riak_cs/src/riak_cs_kv_multi_backend.erl +++ b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl @@ -422,18 +422,18 @@ maybe_mark_indexes_fixed(Mod, ModState, ForUpgrade) -> end. fix_index(BKeys, ForUpgrade, State) -> - % Group keys per bucket + % Group keys per bucket PerBucket = lists:foldl(fun(BK={B,_},D) -> dict:append(B,BK,D) end, dict:new(), BKeys), - Result = + Result = dict:fold( fun(Bucket, StorageKey, Acc = {Success, Ignore, Errors}) -> {_, Mod, ModState} = Backend = get_backend(Bucket, State), case backend_can_index_reformat(Mod, ModState) of - true -> - {S, I, E} = backend_fix_index(Backend, Bucket, + true -> + {S, I, E} = backend_fix_index(Backend, Bucket, StorageKey, ForUpgrade), {Success + S, Ignore + I, Errors + E}; - false -> + false -> Acc end end, {0, 0, 0}, PerBucket), @@ -441,11 +441,11 @@ fix_index(BKeys, ForUpgrade, State) -> backend_fix_index({_, Mod, ModState}, Bucket, StorageKey, ForUpgrade) -> case Mod:fix_index(StorageKey, ForUpgrade, ModState) of - {reply, Reply, _UpModState} -> + {reply, Reply, _UpModState} -> Reply; {error, Reason} -> - _ = lager:error("Failed to fix index for bucket ~p, key ~p, backend ~p: ~p", - [Bucket, StorageKey, Mod, Reason]), + logger:error("Failed to fix index for bucket ~p, key ~p, backend ~p: ~p", + [Bucket, StorageKey, Mod, Reason]), {0, 0, length(StorageKey)} end. diff --git a/apps/riak_cs/src/riak_cs_lfs_utils.erl b/apps/riak_cs/src/riak_cs_lfs_utils.erl index 56e4677c4..ae551fa10 100644 --- a/apps/riak_cs/src/riak_cs_lfs_utils.erl +++ b/apps/riak_cs/src/riak_cs_lfs_utils.erl @@ -120,9 +120,9 @@ initial_blocks(ContentLength, SafeBlockSize, UUID) -> range_blocks(Start, End, SafeBlockSize, UUID) -> SkipInitial = Start rem SafeBlockSize, KeepFinal = (End rem SafeBlockSize) + 1, - _ = lager:debug("InitialBlock: ~p, FinalBlock: ~p~n", - [Start div SafeBlockSize, End div SafeBlockSize]), - _ = lager:debug("SkipInitial: ~p, KeepFinal: ~p~n", [SkipInitial, KeepFinal]), + logger:debug("InitialBlock: ~p, FinalBlock: ~p", + [Start div SafeBlockSize, End div SafeBlockSize]), + logger:debug("SkipInitial: ~p, KeepFinal: ~p", [SkipInitial, KeepFinal]), {[{UUID, B} || B <- lists:seq(Start div SafeBlockSize, End div SafeBlockSize)], SkipInitial, KeepFinal}. @@ -168,8 +168,8 @@ block_sort_fun(SafeBlockSize) -> block_sequences_for_part_manifests_skip(SafeBlockSize, [PM | Rest], StartOffset, EndOffset) -> - _ = lager:debug("StartOffset: ~p, EndOffset: ~p, PartLength: ~p~n", - [StartOffset, EndOffset, PM?PART_MANIFEST.content_length]), + logger:debug("StartOffset: ~p, EndOffset: ~p, PartLength: ~p", + [StartOffset, EndOffset, PM?PART_MANIFEST.content_length]), case PM?PART_MANIFEST.content_length of %% Skipped PartLength when PartLength =< StartOffset -> @@ -192,8 +192,8 @@ block_sequences_for_part_manifests_skip(SafeBlockSize, [PM | Rest], block_sequences_for_part_manifests_keep(SafeBlockSize, SkipInitial, [PM | Rest], EndOffset, ListOfBlocks) -> - _ = lager:debug("EndOffset: EndOffset: ~p, PartLength: ~p~n", - [EndOffset, PM?PART_MANIFEST.content_length]), + logger:debug("EndOffset: EndOffset: ~p, PartLength: ~p", + [EndOffset, PM?PART_MANIFEST.content_length]), case PM?PART_MANIFEST.content_length of %% More blocks needed PartLength when PartLength =< EndOffset -> diff --git a/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl index 306f6ceae..a9e0b65ee 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl @@ -73,11 +73,11 @@ start_link() -> -spec lookup(binary()) -> cache_lookup_result(). lookup(Key) -> try - _ = lager:debug("Reading info for ~p from cache", [Key]), + logger:debug("Reading info for ~p from cache", [Key]), format_lookup_result(ets:lookup(default_ets_table(), Key)) catch _:Reason -> - _ = lager:warning("List objects cache lookup failed. Reason: ~p", [Reason]), + logger:warning("List objects cache lookup failed. Reason: ~p", [Reason]), false end. @@ -101,7 +101,7 @@ write(Key, Value) -> unsafe_write(Key, Value) catch _:Reason -> - _ = lager:warning("List objects cache write failed. Reason: ~p", [Reason]), + logger:warning("List objects cache write failed. Reason: ~p", [Reason]), ok end. @@ -137,7 +137,7 @@ handle_call({can_write, {CacheKey, MonitorPid, NumKeys}}, end, {reply, Bool, NewState}; handle_call(Msg, _From, State) -> - _ = lager:debug("got unknown message: ~p", [Msg]), + logger:warning("got unknown message: ~p", [Msg]), {reply, ok, State}. handle_cast(_Msg, State) -> @@ -228,7 +228,7 @@ num_keys_to_bytes(NumKeys) -> unsafe_write(Key, Value) -> TS = riak_cs_utils:second_resolution_timestamp(os:timestamp()), - _ = lager:debug("Writing entry for ~p to LO Cache", [Key]), + logger:debug("Writing entry for ~p to LO Cache", [Key]), ets:insert(default_ets_table(), {Key, Value, TS}), ok. diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl index 8e86b1997..140ec82e9 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl @@ -230,7 +230,7 @@ handle_sync_event(get_internal_state, _From, StateName, State) -> Reply = {StateName, State}, {reply, Reply, StateName, State}; handle_sync_event(Event, _From, StateName, State) -> - _ = lager:debug("got unknown event ~p in state ~p", [Event, StateName]), + logger:warning("got unknown event ~p in state ~p", [Event, StateName]), Reply = ok, {reply, Reply, StateName, State}. @@ -243,7 +243,7 @@ handle_info(Info, waiting_map_reduce, State) -> waiting_map_reduce(Info, State). terminate(normal, _StateName, #state{req_profiles=Profilings}) -> - _ = print_profiling(Profilings), + print_profiling(Profilings), ok; terminate(_Reason, _StateName, _State) -> ok. @@ -277,10 +277,10 @@ maybe_write_to_cache(#state{cache_key=CacheKey, CallerPid, ListOfListOfKeysLength) of true -> - _ = lager:debug("writing to the cache"), + logger:debug("writing to cache"), riak_cs_list_objects_ets_cache:write(CacheKey, ListofListofKeys); false -> - _ = lager:debug("not writing to the cache"), + logger:debug("not writing to cache"), ok end. @@ -290,12 +290,12 @@ maybe_write_to_cache(#state{cache_key=CacheKey, -spec fetch_key_list(riak_client(), list_object_request(), state(), cache_lookup_result()) -> fsm_state_return(). fetch_key_list(_, _, State, {true, Value}) -> - _ = lager:debug("Using cached key list"), + logger:debug("Using cached key list"), NewState = prepare_state_for_first_mapred(Value, State#state{key_buffer=Value}), maybe_map_reduce(NewState); fetch_key_list(RcPid, Request, State, false) -> - _ = lager:debug("Requesting fresh key list"), + logger:debug("Requesting fresh key list"), handle_streaming_list_keys_call( make_list_keys_request(RcPid, Request), State). @@ -671,8 +671,8 @@ update_state_with_mr_end_profiling(State=#state{req_profiles=Profiling}) -> State#state{req_profiles=Profiling2}. print_profiling(Profiling) -> - _ = lager:debug(format_list_keys_profile(Profiling)), - _ = lager:debug(format_map_reduce_profile(Profiling)). + logger:debug(format_list_keys_profile(Profiling)), + logger:debug(format_map_reduce_profile(Profiling)). format_list_keys_profile(#profiling{list_keys_start_time=undefined, list_keys_num_results=NumResults}) -> diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl index 3cf9d6391..322c75bec 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl @@ -171,7 +171,7 @@ handle_sync_event(get_internal_state, _From, StateName, State) -> Reply = {StateName, State}, {reply, Reply, StateName, State}; handle_sync_event(Event, _From, StateName, State) -> - _ = lager:warning("got unknown event ~p in state ~p", [Event, StateName]), + logger:warning("got unknown event ~p in state ~p", [Event, StateName]), Reply = ok, {reply, Reply, StateName, State}. @@ -181,12 +181,11 @@ handle_sync_event(Event, _From, StateName, State) -> handle_info(Info, waiting_object_list, State) -> waiting_object_list(Info, State); handle_info(Info, StateName, _State) -> - _ = lager:warning("Received unknown info message ~p" - "in state ~p", [Info, StateName]), + logger:warning("Received unknown info message ~p in state ~p", [Info, StateName]), ok. terminate(normal, _StateName, State) -> - lager:debug(format_profiling_from_state(State)); + logger:debug(format_profiling_from_state(State)); terminate(_Reason, _StateName, _State) -> ok. @@ -227,7 +226,7 @@ handle_done(State=#state{object_buffer=ObjectBuffer, common_prefixes=NewPrefixes, reached_end_of_keyspace=ReachedEnd, object_buffer=[]}, - _ = lager:debug("Ranges: ~p", [NewStateData#state.object_list_ranges]), + logger:debug("Ranges: ~p", [NewStateData#state.object_list_ranges]), respond(NewStateData, NewManis, NewPrefixes). -spec reached_end_of_keyspace(non_neg_integer(), diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl index 54d487da0..960353d0f 100644 --- a/apps/riak_cs/src/riak_cs_manifest.erl +++ b/apps/riak_cs/src/riak_cs_manifest.erl @@ -152,6 +152,6 @@ maybe_warn_bloated_manifests(Bucket, Key, Actual, Threshold, Message, Unit) -> case Threshold of disabled -> ok; _ when Actual < Threshold -> ok; - _ -> _ = lager:warning("~s (~p ~s) for bucket=~p key=~p", - [Message, Actual, Unit, Bucket, Key]) + _ -> logger:warning("~s (~p ~s) for bucket=~p key=~p", + [Message, Actual, Unit, Bucket, Key]) end. diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl index a023c1468..a449a1bb8 100644 --- a/apps/riak_cs/src/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/riak_cs_manifest_fsm.erl @@ -396,7 +396,7 @@ maybe_backpressure_sleep(Siblings, _BackpressureThreshold) -> MeanSleepMS = min(Coefficient * Siblings, MaxSleep), Delta = MeanSleepMS div 2, SleepMS = MeanSleepMS - Delta + rand:uniform(MeanSleepMS + Delta), - lager:debug("maybe_backpressure_sleep: Siblings=~p, SleepMS=~p~n", [Siblings, SleepMS]), + logger:debug("maybe_backpressure_sleep: Siblings=~p, SleepMS=~p", [Siblings, SleepMS]), ok = riak_cs_stats:countup([manifest, siblings_bp_sleep]), ok = timer:sleep(SleepMS), true. diff --git a/apps/riak_cs/src/riak_cs_mb_helper.erl b/apps/riak_cs/src/riak_cs_mb_helper.erl index 98160bbd2..122f8558e 100644 --- a/apps/riak_cs/src/riak_cs_mb_helper.erl +++ b/apps/riak_cs/src/riak_cs_mb_helper.erl @@ -81,7 +81,7 @@ get_cluster_id(BagId) -> {ok, Pbc} = riak_cs_utils:riak_connection(PbcPool), try ClusterId = riak_cs_pbc:get_cluster_id(Pbc), - lager:info("Cluster ID for bag ~p : ~p", [BagId, ClusterId]), + logger:info("Cluster ID for bag ~p : ~p", [BagId, ClusterId]), ClusterId after riak_cs_utils:close_riak_connection(PbcPool, Pbc) diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 10d0a2aeb..fd0e799b4 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -109,9 +109,9 @@ clean_multipart_unused_parts(?MANIFEST{bkey = {Bucket, Key}, UpdManifest = Manifest?MANIFEST{props = [multipart_clean|Props]}, ok = update_manifest_with_confirmation(RcPid, UpdManifest) catch X:Y:ST -> - lager:debug("clean_multipart_unused_parts: " - "b/key:vsn ~s/~s:~s : ~p ~p @ ~p\n", - [Bucket, Key, ObjVsn, X, Y, ST]) + logger:debug("clean_multipart_unused_parts: " + "b/key:vsn ~s/~s:~s : ~p ~p @ ~p", + [Bucket, Key, ObjVsn, X, Y, ST]) end, %% Return same value to caller, regardless of ok/catch updated; @@ -339,7 +339,7 @@ new_manifest(Bucket, Key, Vsn, ContentType, {_, _, _} = Owner, Opts) -> MpM = ?MULTIPART_MANIFEST{upload_id = UUID, owner = Owner}, M9 = M0?MANIFEST{props = replace_mp_manifest(MpM, M0?MANIFEST.props)}, - lager:debug("created mp manifest for ~s/~s:~s", [Bucket, Key, Vsn]), + logger:debug("created mp manifest for ~s/~s:~s", [Bucket, Key, Vsn]), M9. @@ -711,7 +711,7 @@ comb_parts(MpM, PartETags) -> KeepPartIDs = [PM?PART_MANIFEST.part_id || PM <- KeepPMs], ToDelete = [PM || PM <- Parts, not lists:member(PM?PART_MANIFEST.part_id, KeepPartIDs)], - lager:debug("Part count to be deleted at completion = ~p~n", [length(ToDelete)]), + logger:debug("Part count to be deleted at completion = ~p", [length(ToDelete)]), {KeepBytes, riak_cs_utils:md5_final(MD5Context), lists:reverse(KeepPMs), ToDelete}. comb_parts_fold({LastPartNum, LastPartETag} = _K, diff --git a/apps/riak_cs/src/riak_cs_oos_response.erl b/apps/riak_cs/src/riak_cs_oos_response.erl index b5677cbc2..35cac59aa 100644 --- a/apps/riak_cs/src/riak_cs_oos_response.erl +++ b/apps/riak_cs/src/riak_cs_oos_response.erl @@ -167,7 +167,7 @@ error_message(invalid_range) -> "The requested range is not satisfiable"; error_message(invalid_bucket_name) -> "The specified bucket is not valid."; error_message(not_implemented) -> "A request you provided implies functionality that is not implemented"; error_message(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:warning("Unknown error: ~p", [ErrorName]), "Please reduce your request rate.". -spec error_code(atom() | {'riak_connect_failed', term()}) -> string(). @@ -203,7 +203,7 @@ error_code(invalid_bucket_name) -> "InvalidBucketName"; error_code(unresolved_grant_email) -> "UnresolvableGrantByEmailAddress"; error_code(not_implemented) -> "NotImplemented"; error_code(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:warning("Unknown error: ~p", [ErrorName]), "ServiceUnavailable". %% These should match: @@ -245,5 +245,5 @@ status_code(invalid_range) -> 416; status_code(invalid_bucket_name) -> 400; status_code(not_implemented) -> 501; status_code(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:warning("Unknown error: ~p", [ErrorName]), 503. diff --git a/apps/riak_cs/src/riak_cs_oos_utils.erl b/apps/riak_cs/src/riak_cs_oos_utils.erl index 74d2d4d71..508db3857 100644 --- a/apps/riak_cs/src/riak_cs_oos_utils.erl +++ b/apps/riak_cs/src/riak_cs_oos_utils.erl @@ -84,8 +84,7 @@ handle_user_data_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, _}}) -> %% @TODO Log error undefined; handle_user_data_response({error, Reason}) -> - _ = lager:warning("Error occurred requesting user data from keystone. Reason: ~p", - [Reason]), + logger:warning("Error occurred requesting user data from keystone. Reason: ~p", [Reason]), undefined. handle_ec2_creds_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, CredsInfo}}, TenantId) @@ -96,8 +95,7 @@ handle_ec2_creds_response({ok, {{_HTTPVer, _Status, _StatusLine}, _, _}}, _) -> %% @TODO Log error {undefined, []}; handle_ec2_creds_response({error, Reason}, _) -> - _ = lager:warning("Error occurred requesting user EC2 credentials from keystone. Reason: ~p", - [Reason]), + logger:warning("Error occurred requesting user EC2 credentials from keystone. Reason: ~p", [Reason]), {undefined, []}. ec2_creds_for_tenant({error, decode_failed}, _) -> diff --git a/apps/riak_cs/src/riak_cs_pbc.erl b/apps/riak_cs/src/riak_cs_pbc.erl index 08637993e..514f52ae2 100644 --- a/apps/riak_cs/src/riak_cs_pbc.erl +++ b/apps/riak_cs/src/riak_cs_pbc.erl @@ -96,9 +96,9 @@ repl_get(PbcPid, BucketName, Key, ClusterID, Opts, Timeout, StatsKey) -> %% TODO: two `put_object' are without stats yet. -spec put_object(pid(), binary(), undefined | binary(), binary(), [term()]) -> ok | {error, term()}. put_object(_PbcPid, BucketName, undefined, Value, Metadata) -> - error_logger:warning_msg("Attempt to put object into ~p with undefined key " - "and value ~P and dict ~p\n", - [BucketName, Value, 30, Metadata]), + logger:warning("Attempt to put object into ~p with undefined key " + "and value ~P and dict ~p", + [BucketName, Value, Metadata]), {error, bad_key}; put_object(PbcPid, BucketName, Key, Value, Metadata) -> RiakObject = riakc_obj:new(BucketName, Key, Value), @@ -203,13 +203,11 @@ check_connection_status(Pbc, Where) -> case riakc_pb_socket:is_connected(Pbc) of true -> ok; Other -> - _ = lager:warning("Connection status of ~p at ~p: ~p", - [Pbc, Where, Other]) + logger:warning("Connection status of ~p at ~p: ~p", [Pbc, Where, Other]) end catch Type:Error -> - _ = lager:warning("Connection status of ~p at ~p: ~p", - [Pbc, Where, {Type, Error}]) + logger:warning("Connection status of ~p at ~p: ~p", [Pbc, Where, {Type, Error}]) end. %% @doc Pause for a while so that underlying `riaic_pb_socket' can have @@ -226,7 +224,7 @@ pause_to_reconnect(_Pbc, _Other, _Timeout) -> ok. pause_to_reconnect0(Pbc, Timeout, Start) -> - lager:debug("riak_cs_pbc:pause_to_reconnect0"), + logger:debug("riak_cs_pbc:pause_to_reconnect0"), case riakc_pb_socket:is_connected(Pbc, ?FIRST_RECONNECT_INTERVAL) of true -> ok; {false, _} -> diff --git a/apps/riak_cs/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl index 4e83b3f07..40e80bc70 100644 --- a/apps/riak_cs/src/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/riak_cs_put_fsm.erl @@ -315,7 +315,7 @@ done(finalize, false, From, State=#state{manifest=Manifest, ok = maybe_update_manifest_with_confirmation(ManiPid, NotActive), gen_fsm:reply(From, {error, invalid_digest}), - _ = lager:debug("Invalid digest in the PUT FSM"), + logger:warning("Invalid digest in the PUT FSM"), {stop, normal, State}; done(finalize, true, From, State=#state{manifest=Manifest, mani_pid=ManiPid, @@ -334,12 +334,11 @@ done(finalize, true, From, State=#state{manifest=Manifest, -spec is_digest_valid(binary(), undefined | string()) -> boolean(). is_digest_valid(D1, undefined) -> %% reported MD5 is not in request header - _ = lager:debug("Calculated = ~p, Reported = undefined~n", [D1]), + logger:debug("Calculated = ~p, Reported = undefined", [D1]), true; is_digest_valid(CalculatedMD5, ReportedMD5) -> StringCalculatedMD5 = base64:encode(CalculatedMD5), - _ = lager:debug("Calculated = ~p, Reported = ~p~n", - [StringCalculatedMD5, ReportedMD5]), + logger:debug("Calculated = ~p, Reported = ~p", [StringCalculatedMD5, ReportedMD5]), StringCalculatedMD5 =:= list_to_binary(ReportedMD5). %%-------------------------------------------------------------------- @@ -357,7 +356,7 @@ handle_sync_event(current_state, _From, StateName, State) -> handle_sync_event(force_stop, _From, _StateName, State = #state{mani_pid = ManiPid, uuid = UUID}) -> Res = riak_cs_manifest_fsm:gc_specific_manifest(ManiPid, UUID), - lager:debug("Manifest collection on upload failure: ~p", [Res]), + logger:debug("Manifest collection on upload failure: ~p", [Res]), {stop, normal, Res, State}; handle_sync_event(_Event, _From, StateName, State) -> Reply = ok, diff --git a/apps/riak_cs/src/riak_cs_quota.erl b/apps/riak_cs/src/riak_cs_quota.erl index 7d0e4d428..a3a3c9273 100644 --- a/apps/riak_cs/src/riak_cs_quota.erl +++ b/apps/riak_cs/src/riak_cs_quota.erl @@ -118,7 +118,7 @@ invoke_all_callbacks(Owner, Access, Ctx0) -> {ok, _, _} = R-> R; {error, Reason} -> - lager:debug("quota check failed at ~p: ~p", [Module, Reason]), + logger:info("quota check failed at ~p: ~p", [Module, Reason]), {error, Module, Reason, RD, Ctx} end; (_, Other) -> @@ -129,7 +129,7 @@ invoke_all_callbacks(Owner, Access, Ctx0) -> update_all_states(User, LogData) -> Modules = riak_cs_config:quota_modules(), [begin - lager:debug("quota update at ~p: ~p", [Module, User]), + logger:debug("quota update at ~p: ~p", [Module, User]), (catch Module:update(list_to_binary(User), LogData)) end || Module <- Modules]. diff --git a/apps/riak_cs/src/riak_cs_riak_client.erl b/apps/riak_cs/src/riak_cs_riak_client.erl index 6eddcb3ad..22391c531 100644 --- a/apps/riak_cs/src/riak_cs_riak_client.erl +++ b/apps/riak_cs/src/riak_cs_riak_client.erl @@ -335,7 +335,7 @@ get_user_with_pbc(MasterPbc, Key, false) -> {error, <<"{pr_val_unsatisfied,", _/binary>>} -> weak_get_user_with_pbc(MasterPbc, Key); {error, Reason} -> - _ = lager:warning("Fetching user record with strong option failed: ~p", [Reason]), + logger:warning("Fetching user record with strong option failed: ~p", [Reason]), Timeout = riak_cs_config:get_user_timeout(), _ = riak_cs_pbc:pause_to_reconnect(MasterPbc, Reason, Timeout), weak_get_user_with_pbc(MasterPbc, Key) diff --git a/apps/riak_cs/src/riak_cs_s3_auth.erl b/apps/riak_cs/src/riak_cs_s3_auth.erl index d937a7349..382a75f95 100644 --- a/apps/riak_cs/src/riak_cs_s3_auth.erl +++ b/apps/riak_cs/src/riak_cs_s3_auth.erl @@ -140,7 +140,7 @@ parse_auth_v4_header(String) -> parse_auth_v4_header([], UserId, Acc) -> {UserId, {v4, lists:reverse(Acc)}}; parse_auth_v4_header([KV | KVs], UserId, Acc) -> - lager:debug("Auth header ~p~n", [KV]), + logger:debug("Auth header ~p", [KV]), case string:tokens(KV, "=") of [Key, Value] -> case Key of @@ -190,7 +190,7 @@ calculate_signature_v2(KeyData, RD) -> "\n", AmazonHeaders, Resource], - _ = lager:debug("STS: ~p", [STS]), + logger:debug("STS: ~p", [STS]), base64:encode_to_string(riak_cs_utils:sha_mac(KeyData, STS)). @@ -206,14 +206,14 @@ authenticate_v4(?RCS_USER{key_secret = SecretAccessKey} = _User, AuthAttrs, RD) authenticate_v4(SecretAccessKey, AuthAttrs, Method, Path, Qs, AllHeaders) -> CanonicalRequest = canonical_request_v4(AuthAttrs, Method, Path, Qs, AllHeaders), - _ = lager:debug("CanonicalRequest(v4):~n~s~nEND-OF-CANONICAL-REQUEST", [CanonicalRequest]), + logger:debug("CanonicalRequest(v4): ~s", [CanonicalRequest]), {StringToSign, Scope} = string_to_sign_v4(AuthAttrs, AllHeaders, CanonicalRequest), - _ = lager:debug("StringToSign(v4):~n~s~nEND-OF-STRING-TO-SIGN", [StringToSign]), + logger:debug("StringToSign(v4): ~s", [StringToSign]), CalculatedSignature = calculate_signature_v4(SecretAccessKey, Scope, StringToSign), - _ = lager:debug("CalculatedSignature(v4): ~s", [CalculatedSignature]), + logger:debug("CalculatedSignature(v4): ~s", [CalculatedSignature]), {"Signature", PresentedSignature} = lists:keyfind("Signature", 1, AuthAttrs), - _ = lager:debug("PresentedSignature(v4) : ~s", [PresentedSignature]), + logger:debug(" PresentedSignature(v4): ~s", [PresentedSignature]), case CalculatedSignature of PresentedSignature -> ok; _ -> {error, {unmatched_signature, PresentedSignature, CalculatedSignature}} diff --git a/apps/riak_cs/src/riak_cs_s3_policy.erl b/apps/riak_cs/src/riak_cs_s3_policy.erl index d09e2b833..5f7385bc7 100644 --- a/apps/riak_cs/src/riak_cs_s3_policy.erl +++ b/apps/riak_cs/src/riak_cs_s3_policy.erl @@ -130,7 +130,7 @@ check_version(?POLICY{version = ?AMZ_DEFAULT_VERSION}) -> check_version(?POLICY{version = ?AMZ_POLICY_OLD_VERSION}) -> true; check_version(?POLICY{version = Version}) -> - _ = lager:debug("unknown version: ~p", [Version]), + logger:info("unknown version: ~p", [Version]), false. % @doc confirm if forbidden action included in policy @@ -233,8 +233,7 @@ policy_from_json(JSON) -> {error, _Reason} = E -> E; {'EXIT', {{case_clause, B}, _}} when is_binary(B) -> - %% mochiweb failed to parse the JSON - _ = lager:debug("~p", [B]), + logger:debug("mochiweb failed to parse the JSON: ~p", [B]), {error, malformed_policy_json} end. @@ -259,10 +258,10 @@ supported_bucket_action() -> ?SUPPORTED_BUCKET_ACTION. %% to make policy json parser safer by using erlang:binary_to_existing_atom/2. -spec log_supported_actions() -> ok. log_supported_actions()-> - _ = lager:info("supported object actions: ~p", - [lists:map(fun atom_to_list/1, supported_object_action())]), - _ = lager:info("supported bucket actions: ~p", - [lists:map(fun atom_to_list/1, supported_bucket_action())]), + logger:info("supported object actions: ~p", + [lists:map(fun atom_to_list/1, supported_object_action())]), + logger:info("supported bucket actions: ~p", + [lists:map(fun atom_to_list/1, supported_bucket_action())]), ok. %% @doc Fetch the policy for a bucket @@ -280,9 +279,8 @@ fetch_bucket_policy(Bucket, RcPid) -> Contents = riakc_obj:get_contents(Obj), bucket_policy_from_contents(Bucket, Contents); {error, Reason} -> - _ = lager:debug("Failed to fetch policy. Bucket ~p " - " does not exist. Reason: ~p", - [Bucket, Reason]), + logger:debug("Failed to fetch policy. Bucket ~p does not exist. Reason: ~p", + [Bucket, Reason]), {error, notfound} end. diff --git a/apps/riak_cs/src/riak_cs_s3_response.erl b/apps/riak_cs/src/riak_cs_s3_response.erl index 23cd59f4e..f23f642a6 100644 --- a/apps/riak_cs/src/riak_cs_s3_response.erl +++ b/apps/riak_cs/src/riak_cs_s3_response.erl @@ -115,7 +115,7 @@ error_message(remaining_multipart_upload) -> "Concurrent multipart upload initia error_message(disconnected) -> "Please contact administrator."; error_message(not_implemented) -> "A request you provided implies functionality that is not implemented"; error_message(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:warning("Unknown error: ~p", [ErrorName]), "Please reduce your request rate.". -spec error_code(error_reason()) -> string(). @@ -166,7 +166,7 @@ error_code(remaining_multipart_upload) -> "MultipartUploadRemaining"; error_code(disconnected) -> "ServiceUnavailable"; error_code(not_implemented) -> "NotImplemented"; error_code(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:warning("Unknown error: ~p", [ErrorName]), "ServiceUnavailable". %% These should match: @@ -224,7 +224,7 @@ status_code(remaining_multipart_upload) -> 409; status_code(disconnected) -> 500; status_code(not_implemented) -> 501; status_code(ErrorName) -> - _ = lager:debug("Unknown error: ~p", [ErrorName]), + logger:warning("Unknown error: ~p", [ErrorName]), 503. -spec respond(term(), #wm_reqdata{}, #context{}) -> @@ -415,7 +415,7 @@ process_xml_error([]) -> process_xml_error([#xmlText{value=" "}|Rest]) -> process_xml_error(Rest); process_xml_error([HeadElement | RestElements]) -> - _ = lager:debug("Element name: ~p", [HeadElement#xmlElement.name]), + logger:debug("Element name: ~p", [HeadElement#xmlElement.name]), ElementName = HeadElement#xmlElement.name, case ElementName of 'Code' -> diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/riak_cs_s3_rewrite.erl index 464e8bbf6..39589bda2 100644 --- a/apps/riak_cs/src/riak_cs_s3_rewrite.erl +++ b/apps/riak_cs/src/riak_cs_s3_rewrite.erl @@ -167,8 +167,8 @@ extract_bucket_from_host(Host, RootHost) -> if RootHost == M2 -> M1; el/=se -> - lager:warning("accepting request sent to a (legitimate) AWS host" - " \"~s\" not matching cs_root_host (\"~s\")", [Host, RootHost]), + logger:warning("accepting request sent to a (legitimate) AWS host" + " \"~s\" not matching cs_root_host (\"~s\")", [Host, RootHost]), M1 end; _ -> diff --git a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl index 9e91a956e..de377f2db 100644 --- a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl +++ b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl @@ -114,12 +114,12 @@ refresher() -> end, receive reset -> - lager:debug("reset received: ~p", [?MODULE]), + logger:debug("reset received: ~p", [?MODULE]), refresher(); _ -> ets:delete(?MODULE) after IntervalSec * 1000 -> - lager:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), + logger:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), ets:delete_all_objects(?MODULE), refresher() end. @@ -128,7 +128,7 @@ refresher() -> allow(Owner, #access_v1{req = RD} = _Access, Ctx) -> OwnerKey = list_to_binary(riak_cs_user:key_id(Owner)), - lager:debug("access => ~p", [OwnerKey]), + logger:debug("access => ~p", [OwnerKey]), UserState = case ets:lookup(?MODULE, OwnerKey) of [UserState0] -> UserState0; [] -> new_user_state(OwnerKey) @@ -144,20 +144,20 @@ allow(Owner, #access_v1{req = RD} = _Access, Ctx) -> ok -> {ok, RD, Ctx}; {error, {_, Current, Threshold}} = Error -> - lager:warning("User ~p has exceeded access limit: usage, limit = ~p, ~p (/sec)", - [OwnerKey, Current, Threshold]), + logger:info("User ~p has exceeded access limit: usage, limit = ~p, ~p (/sec)", + [OwnerKey, Current, Threshold]), Error end; {error, {_, Current, Threshold}} = Error2 -> - lager:warning("User ~p has exceeded bandwidth limit: usage, limit = ~p, ~p (bytes/sec)", - [OwnerKey, Current, Threshold]), + logger:info("User ~p has exceeded bandwidth limit: usage, limit = ~p, ~p (bytes/sec)", + [OwnerKey, Current, Threshold]), Error2 end. -spec new_user_state(binary()) -> #user_state{}. new_user_state(User) -> UserState = #user_state{user = User}, - lager:debug("quota init: ~p => ~p", [User, UserState]), + logger:debug("quota init: ~p => ~p", [User, UserState]), %% Here's a race condition where if so many concurrent access %% come, each access can yield a new fresh state and then %% receives not access limitation. @@ -211,16 +211,16 @@ update(User, [_, _] -> ok; Error0 -> - lager:warning("something wrong? ~p", [Error0]), + logger:warning("something wrong? ~p", [Error0]), {error, Error0} end catch error:badarg -> %% record not just found here - lager:debug("Cache of ~p (maybe not found)", [User]), + logger:debug("Cache of ~p (maybe not found)", [User]), ok; Type:Error -> %% TODO: show out stacktrace heah - _ = lager:warning("something wrong? ~p", [Error]), + logger:warning("something wrong? ~p", [Error]), {error, {Type, Error}} end. diff --git a/apps/riak_cs/src/riak_cs_simple_quota.erl b/apps/riak_cs/src/riak_cs_simple_quota.erl index aa0e0a248..ff690e4f9 100644 --- a/apps/riak_cs/src/riak_cs_simple_quota.erl +++ b/apps/riak_cs/src/riak_cs_simple_quota.erl @@ -102,12 +102,12 @@ refresher() -> end, receive reset -> - lager:debug("reset received: ~p", [?MODULE]), + logger:debug("reset received: ~p", [?MODULE]), refresher(); _ -> ets:delete(?MODULE) after IntervalSec * 1000 -> - lager:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), + logger:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), ets:delete_all_objects(?MODULE), refresher() end. @@ -119,7 +119,7 @@ refresher() -> {error, {disk_quota, non_neg_integer(), non_neg_integer()}}. allow(Owner, #access_v1{req = RD, method = 'PUT'} = _Access, Ctx) -> OwnerKey = iolist_to_binary(riak_cs_user:key_id(Owner)), - lager:debug("access => ~p", [OwnerKey]), + logger:debug("access => ~p", [OwnerKey]), {_, Usage} = case ets:lookup(?MODULE, OwnerKey) of [{OwnerKey, _Usage} = UserState0] -> UserState0; @@ -134,8 +134,8 @@ allow(Owner, #access_v1{req = RD, method = 'PUT'} = _Access, Ctx) -> Quota < 0 -> {ok, RD, Ctx}; Usage < Quota -> {ok, RD, Ctx}; true -> - lager:warning("User ~s has exceeded it's quota: usage, quota = ~p, ~p (bytes)", - [OwnerKey, Usage, Quota]), + logger:info("User ~s has exceeded it's quota: usage, quota = ~p, ~p (bytes)", + [OwnerKey, Usage, Quota]), {error, {disk_quota, Usage, Quota}} end; allow(_Owner, #access_v1{req = RD} = _Access, Ctx) -> @@ -149,7 +149,7 @@ maybe_usage(User0, _Ctx = #context{riak_client=RiakClient}) -> User = binary_to_list(User0), Usage = case get_latest_usage(RiakClient, User) of {error, notfound} -> - lager:warning("No storage stats data was found. Starting as no usage."), + logger:warning("No storage stats data was found. Starting as no usage."), 0; {ok, Usages} -> sum_all_buckets(lists:last(Usages)) @@ -186,7 +186,7 @@ update(User, ets:update_counter(?MODULE, User, Bytes) catch Type:Error -> %% TODO: show out stacktrace heah - lager:warning("something wrong? ~p", [Error]), + logger:warning("something wrong? ~p", [Error]), {error, {Type, Error}} end; update(_, _) -> diff --git a/apps/riak_cs/src/riak_cs_stanchion_console.erl b/apps/riak_cs/src/riak_cs_stanchion_console.erl index 94737eb47..19a7ef451 100644 --- a/apps/riak_cs/src/riak_cs_stanchion_console.erl +++ b/apps/riak_cs/src/riak_cs_stanchion_console.erl @@ -61,7 +61,7 @@ switch([Host, Port]) -> ok = application:set_env(riak_cs, stanchion_host, {Host, NewPort}), Msg2 = io_lib:format("Succesfully switched stanchion to ~s:~s: This change is only effective until restart.", [Host, Port]), - _ = lager:info(Msg2), + logger:info(Msg2), io:format("~s~nTo make permanent change, be sure to edit configuration file.~n", [Msg2]) end, Msg); switch(_) -> diff --git a/apps/riak_cs/src/riak_cs_stats.erl b/apps/riak_cs/src/riak_cs_stats.erl index 61f49562b..2dae3b8cb 100644 --- a/apps/riak_cs/src/riak_cs_stats.erl +++ b/apps/riak_cs/src/riak_cs_stats.erl @@ -235,7 +235,7 @@ safe_update(ExometerKey, Arg) -> case exometer:update(ExometerKey, Arg) of ok -> ok; {error, Reason} -> - lager:warning("Stats update for key ~p error: ~p", [ExometerKey, Reason]), + logger:warning("Stats update for key ~p error: ~p", [ExometerKey, Reason]), ok end. @@ -338,8 +338,6 @@ stats_test_() -> Apps = [setup, compiler, syntax_tools, exometer_core], {setup, fun() -> - application:ensure_all_started(lager), - lager:set_loglevel(lager_console_backend, alert), [application:ensure_all_started(App) || App <- Apps], ok = init() end, diff --git a/apps/riak_cs/src/riak_cs_storage.erl b/apps/riak_cs/src/riak_cs_storage.erl index 3a2eb95bf..636c9fe6c 100644 --- a/apps/riak_cs/src/riak_cs_storage.erl +++ b/apps/riak_cs/src/riak_cs_storage.erl @@ -79,9 +79,8 @@ maybe_sum_bucket(User, ?RCS_BUCKET{name=Name} = _Bucket, Detailed, LeewayEdge) case sum_bucket(Name, Detailed, LeewayEdge) of {struct, _} = BucketUsage -> {Name, BucketUsage}; {error, _} = E -> - _ = lager:error("failed to calculate usage of " - "bucket '~s' of user '~s'. Reason: ~p", - [Name, User, E]), + logger:error("failed to calculate usage of bucket \"~s\" of user \"~s\". Reason: ~p", + [Name, User, E]), {Name, iolist_to_binary(io_lib:format("~p", [E]))} end. diff --git a/apps/riak_cs/src/riak_cs_storage_d.erl b/apps/riak_cs/src/riak_cs_storage_d.erl index 05c96603c..9c3a29e68 100644 --- a/apps/riak_cs/src/riak_cs_storage_d.erl +++ b/apps/riak_cs/src/riak_cs_storage_d.erl @@ -150,8 +150,8 @@ idle(_, State) -> %% from the outside world (like `status'). calculating(continue, #state{batch=[], current=Current}=State) -> %% finished with this batch - _ = lager:info("Finished storage calculation in ~b seconds.", - [elapsed(State#state.batch_start)]), + logger:info("Finished storage calculation in ~b seconds", + [elapsed(State#state.batch_start)]), riak_cs_riak_client:stop(State#state.riak_client), NewState = State#state{riak_client=undefined, last=Current, @@ -201,12 +201,12 @@ calculating({manual_batch, _Options}, _From, State) -> %% this is the manual user request to begin a batch {reply, {error, already_calculating}, calculating, State}; calculating(pause_batch, _From, State) -> - _ = lager:info("Pausing storage calcluation"), + logger:info("Pausing storage calcluation"), {reply, ok, paused, State}; calculating(cancel_batch, _From, #state{current=Current}=State) -> %% finished with this batch - _ = lager:info("Canceled storage calculation after ~b seconds.", - [elapsed(State#state.batch_start)]), + logger:info("Canceled storage calculation after ~b seconds", + [elapsed(State#state.batch_start)]), riak_cs_riak_client:stop(State#state.riak_client), NewState = State#state{riak_client=undefined, last=Current, @@ -220,7 +220,7 @@ paused(status, From, State) -> {reply, {ok, {_, Status}}, _, State} = calculating(status, From, State), {reply, {ok, {paused, Status}}, paused, State}; paused(resume_batch, _From, State) -> - _ = lager:info("Resuming storage calculation"), + logger:info("Resuming storage calculation"), gen_fsm:send_event(?SERVER, continue), {reply, ok, calculating, State}; paused(cancel_batch, From, State) -> @@ -244,9 +244,9 @@ handle_info({start_batch, Next}, idle, #state{next=Next}=State) -> {next_state, calculating, NewState}; handle_info({start_batch, Next}, InBatch, #state{next=Next, current=Current}=State) -> - _ = lager:error("Unable to start storage calculation for ~p" - " because ~p is still working. Skipping forward...", - [Next, Current]), + logger:error("Unable to start storage calculation for ~p" + " because ~p is still working. Skipping forward...", + [Next, Current]), NewState = schedule_next(State, Next), {next_state, InBatch, NewState}; handle_info(_Info, StateName, State) -> @@ -281,8 +281,8 @@ read_storage_schedule() -> read_storage_schedule1() -> case application:get_env(riak_cs, storage_schedule) of undefined -> - _ = lager:warning("No storage schedule defined." - " Calculation must be triggered manually."), + logger:warning("No storage schedule defined." + " Calculation must be triggered manually."), []; {ok, Sched} -> case catch parse_time(Sched) of @@ -294,23 +294,19 @@ read_storage_schedule1() -> _ = case [ X || {X,{'EXIT',_}} <- Times ] of [] -> ok; Bad -> - _ = lager:error( - "Ignoring bad storage schedule elements ~p", - [Bad]) + logger:error("Ignoring bad storage schedule elements ~p", [Bad]) end, case [ Parsed || {_, {ok, Parsed}} <- Times] of [] -> - _ = lager:warning( - "No storage schedule defined." - " Calculation must be triggered manually."), + logger:warning("No storage schedule defined." + " Calculation must be triggered manually."), []; Good -> Good end; _ -> - _ = lager:error( - "Invalid storage schedule defined." - " Calculation must be triggered manually."), + logger:error("Invalid storage schedule defined." + " Calculation must be triggered manually."), [] end end. @@ -339,15 +335,13 @@ start_batch(Options, Time, State) -> Now = riak_cs_utils:second_resolution_timestamp(os:timestamp()), LeewayEdgeTs = Now - riak_cs_gc:leeway_seconds(), LeewayEdge = {LeewayEdgeTs div 1000000, LeewayEdgeTs rem 1000000, 0}, - _ = case Detailed of - true -> - lager:info("Starting storage calculation: " - "recalc=~p, detailed=~p, leeway edge=~p", - [Recalc, Detailed, - calendar:now_to_universal_time(LeewayEdge)]); - _ -> - lager:info("Starting storage calculation: recalc=~p", [Recalc]) - end, + case Detailed of + true -> + logger:info("Starting storage calculation: recalc=~p, detailed=~p, leeway edge=~p", + [Recalc, Detailed, calendar:now_to_universal_time(LeewayEdge)]); + _ -> + logger:info("Starting storage calculation: recalc=~p", [Recalc]) + end, %% TODO: probably want to do this fetch streaming, to avoid %% accidental memory pressure at other points @@ -362,9 +356,7 @@ start_batch(Options, Time, State) -> case riak_cs_user:fetch_user_keys(RcPid) of {ok, UserKeys} -> UserKeys; {error, Error} -> - _ = lager:error("Storage calculator was unable" - " to fetch list of users (~p)", - [Error]), + logger:error("Storage calculator was unable to fetch list of users (~p)", [Error]), [] end, @@ -393,8 +385,7 @@ calculate_next_user(#state{riak_client=RcPid, End = calendar:universal_time(), store_user(State, User, BucketList, Start, End); {error, Error} -> - _ = lager:error("Error computing storage for user ~s (~p)", - [User, Error]) + logger:error("Error computing storage for user ~s (~p)", [User, Error]) end, State#state{batch=Rest, batch_count=1+State#state.batch_count}; false -> @@ -425,8 +416,7 @@ store_user(#state{riak_client=RcPid}, User, BucketList, Start, End) -> case riak_cs_pbc:put(MasterPbc, Obj, Timeout, [riakc, put_storage]) of ok -> ok; {error, Error} -> - _ = lager:error("Error storing storage for user ~s (~p)", - [User, Error]) + logger:error("Error storing storage for user ~s (~p)", [User, Error]) end. %% @doc How many seconds have passed from `Time' to now. @@ -452,14 +442,12 @@ schedule_next(#state{schedule=Schedule}=State, Last) -> NextTime = next_target_time(Last, Schedule), case elapsed(calendar:universal_time(), NextTime) of D when D > 0 -> - _ = lager:info("Scheduling next storage calculation for ~p", - [NextTime]), + logger:info("Scheduling next storage calculation for ~p", [NextTime]), erlang:send_after(D*1000, self(), {start_batch, NextTime}), State#state{next=NextTime}; _ -> - _ = lager:error("Missed start time for storage calculation at ~p," - " skipping to next scheduled time...", - [NextTime]), + logger:error("Missed start time for storage calculation at ~p," + " skipping to next scheduled time...", [NextTime]), %% just skip everything until the next scheduled time from now schedule_next(State, calendar:universal_time()) end. diff --git a/apps/riak_cs/src/riak_cs_storage_mr.erl b/apps/riak_cs/src/riak_cs_storage_mr.erl index 31e1afebd..3634af87f 100644 --- a/apps/riak_cs/src/riak_cs_storage_mr.erl +++ b/apps/riak_cs/src/riak_cs_storage_mr.erl @@ -163,7 +163,7 @@ objs_bytes_and_blocks_non_mp(?MANIFEST{state=State, content_length=CL, block_siz BlockCount = riak_cs_lfs_utils:block_count(CL, BS), {non_mp, State, {1, CL, BlockCount}}; objs_bytes_and_blocks_non_mp(?MANIFEST{state=State} = _M) -> - lager:debug("Strange manifest: ~p~n", [_M]), + logger:info("Strange manifest: ~p", [_M]), %% The branch above is for content_length is properly set. This %% is true for non-MP v2 auth case but not always true for v4 of %% streaming sha256 check of writing. To avoid error, ignore @@ -264,9 +264,8 @@ count_multipart_parts({_UUID, ?MANIFEST{props=Props, state=writing} = M}, Acc; Other -> %% strange thing happened - _ = lager:log(warning, self(), - "strange writing multipart manifest detected at ~p: ~p", - [M?MANIFEST.bkey, Other]), + logger:warning("strange writing multipart manifest detected at ~p: ~p", + [M?MANIFEST.bkey, Other]), Acc end; count_multipart_parts(_, Acc) -> diff --git a/apps/riak_cs/src/riak_cs_user.erl b/apps/riak_cs/src/riak_cs_user.erl index 6b034726b..32e888333 100644 --- a/apps/riak_cs/src/riak_cs_user.erl +++ b/apps/riak_cs/src/riak_cs_user.erl @@ -164,7 +164,7 @@ from_riakc_obj(Obj, KeepDeletedBuckets) -> User = update_user_record(hd(Values)), KeyId = User?RCS_USER.key_id, - _ = lager:warning("User object of '~s' has ~p siblings", [KeyId, N]), + logger:warning("User object of '~s' has ~p siblings", [KeyId, N]), Buckets = riak_cs_bucket:resolve_buckets(Values, [], KeepDeletedBuckets), User?RCS_USER{buckets=Buckets} @@ -196,9 +196,8 @@ get_user_index(Index, Value, RcPid) -> {ok, ?INDEX_RESULTS{keys=[Key | _]}} -> {ok, binary_to_list(Key)}; {error, Reason}=Error -> - _ = lager:warning("Error occurred trying to query ~p in user" - "index ~p. Reason: ~p", - [Value, Index, Reason]), + logger:warning("Error occurred trying to query ~p in user index ~p. Reason: ~p", + [Value, Index, Reason]), Error end. diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index b88150064..f9821fa79 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -198,12 +198,12 @@ maybe_process_resolved(Object, ResolvedManifestsHandler, ErrorReturn) -> Resolved = rcs_common_manifest_resolution:resolve(Upgraded), ResolvedManifestsHandler(Resolved) catch Type:Reason:StackTrace -> - lager:error("Riak CS object mapreduce failed for ~p:~p with reason ~p:~p at ~p", - [riak_object:bucket(Object), - riak_object:key(Object), - Type, - Reason, - StackTrace]), + logger:error("Riak CS object mapreduce failed for ~p:~p with reason ~p:~p at ~p", + [riak_object:bucket(Object), + riak_object:key(Object), + Type, + Reason, + StackTrace]), ErrorReturn end. diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl index c96444e3a..9aaf536f6 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl @@ -78,7 +78,7 @@ handle_with_bucket_obj({error, notfound}, RD, handle_with_bucket_obj({error, _} = Error, RD, #context{response_module=ResponseMod} = Ctx) -> - _ = lager:debug("bucket error: ~p", [Error]), + logger:debug("bucket error: ~p", [Error]), ResponseMod:api_error(Error, RD, Ctx); handle_with_bucket_obj({ok, BucketObj}, @@ -94,7 +94,7 @@ handle_with_bucket_obj({ok, BucketObj}, %% Delete Multiple Objects accepts a request to delete up to 1000 Objects. ResponseMod:api_error(malformed_xml, RD, Ctx); {ok, Keys} -> - lager:debug("deleting keys at ~p: ~p", [Bucket, Keys]), + logger:debug("deleting keys at ~p: ~p", [Bucket, Keys]), Policy = riak_cs_wm_utils:translate_bucket_policy(PolicyMod, BucketObj), CanonicalId = riak_cs_wm_utils:extract_canonical_id(User), diff --git a/apps/riak_cs/src/riak_cs_wm_common.erl b/apps/riak_cs/src/riak_cs_wm_common.erl index 632cd1e9b..421e9bfc5 100644 --- a/apps/riak_cs/src/riak_cs_wm_common.erl +++ b/apps/riak_cs/src/riak_cs_wm_common.erl @@ -222,8 +222,8 @@ maybe_create_user({error, disconnected}=Error, _, _, _, _, RcPid) -> riak_cs_pbc:check_connection_status(MasterPid, maybe_create_user), Error; maybe_create_user({error, Reason}=Error, _, Api, _, _, _) -> - _ = lager:error("Retrieval of user record for ~p failed. Reason: ~p", - [Api, Reason]), + logger:error("Retrieval of user record for ~p failed. Reason: ~p", + [Api, Reason]), Error. %% @doc Get the list of methods a resource supports. @@ -479,31 +479,31 @@ post_authentication({ok, User, UserObj}, RD, Ctx, Authorize, _) -> user_object=UserObj}); post_authentication({error, no_user_key}, RD, Ctx, Authorize, true) -> %% no keyid was given, proceed anonymously - _ = lager:debug("No user key"), + logger:debug("No user key"), Authorize(RD, Ctx); post_authentication({error, no_user_key}, RD, Ctx, _, false) -> %% no keyid was given, deny access - _ = lager:debug("No user key, deny"), + logger:debug("No user key, deny"), riak_cs_wm_utils:deny_access(RD, Ctx); post_authentication({error, bad_auth}, RD, Ctx, _, _) -> %% given keyid was found, but signature didn't match - _ = lager:debug("bad_auth"), + logger:debug("bad_auth"), riak_cs_wm_utils:deny_access(RD, Ctx); post_authentication({error, reqtime_tooskewed} = Error, RD, #context{response_module = ResponseMod} = Ctx, _, _) -> - _ = lager:debug("reqtime_tooskewed"), + logger:debug("reqtime_tooskewed"), ResponseMod:api_error(Error, RD, Ctx); post_authentication({error, {auth_not_supported, AuthType}}, RD, #context{response_module=ResponseMod} = Ctx, _, _) -> - _ = lager:debug("auth_not_supported: ~s", [AuthType]), + logger:debug("auth_not_supported: ~s", [AuthType]), ResponseMod:api_error({auth_not_supported, AuthType}, RD, Ctx); post_authentication({error, notfound}, RD, Ctx, _, _) -> - _ = lager:debug("User does not exist"), + logger:debug("User does not exist"), riak_cs_wm_utils:deny_invalid_key(RD, Ctx); post_authentication({error, Reason}, RD, #context{response_module=ResponseMod} = Ctx, _, _) -> %% Lookup failed, basically due to disconnected stuff - _ = lager:debug("Authentication error: ~p", [Reason]), + logger:debug("Authentication error: ~p", [Reason]), ResponseMod:api_error(Reason, RD, Ctx). update_stats_inflow(_RD, undefined = _StatsPrefix) -> diff --git a/apps/riak_cs/src/riak_cs_wm_error_handler.erl b/apps/riak_cs/src/riak_cs_wm_error_handler.erl index 0683e721a..b1cfcae60 100644 --- a/apps/riak_cs/src/riak_cs_wm_error_handler.erl +++ b/apps/riak_cs/src/riak_cs_wm_error_handler.erl @@ -31,7 +31,7 @@ render_error(500, Req, Reason) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"render_error">>), {ok, ReqState} = Req:add_response_header("Content-Type", "text/html"), {Path,_} = Req:path(), - error_logger:error_msg("webmachine error: path=~p~n~p~n", [Path, {error, {error, Reason, erlang:get_stacktrace()}}]), + logger:error("webmachine error: path=~p; ~p", [Path, Reason]), ErrorOne = <<"500 Internal Server Error">>, ErrorTwo = <<"

      Internal Server Error

      ">>, diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index a5d8e17b7..3a9ddcdea 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -249,7 +249,7 @@ delete_resource(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> %% @private handle_delete_object({error, Error}, UserName, BFile_str, RD, Ctx) -> - _ = lager:error("delete object failed with reason: ~p", [Error]), + logger:error("delete object failed with reason: ~p", [Error]), riak_cs_dtrace:dt_object_return(?MODULE, <<"object_delete">>, [0], [UserName, BFile_str]), {false, RD, Ctx}; handle_delete_object({ok, _UUIDsMarkedforDelete}, UserName, BFile_str, RD, Ctx) -> @@ -360,7 +360,7 @@ handle_normal_put(RD, Ctx0) -> %% einval} or disconnected stuff, any errors prevents this %% manifests from being uploaded anymore Res = riak_cs_put_fsm:force_stop(Pid), - _ = lager:debug("PUT FSM force_stop: ~p Reason: ~p", [Res, {Type, Error}]), + logger:debug("PUT FSM force_stop: ~p Reason: ~p", [Res, {Type, Error}]), error({Type, Error}) end. @@ -368,18 +368,18 @@ determine_object_version(Vsn0, Bucket, Key, RcPid) -> case {Vsn0, riak_cs_bucket:get_bucket_versioning(Bucket, RcPid)} of {?LFS_DEFAULT_OBJECT_VERSION, {ok, #bucket_versioning{status = enabled}}} -> Vsn1 = list_to_binary(riak_cs_utils:binary_to_hexlist(uuid:get_v4())), - lager:info("bucket \"~s\" has object versioning enabled," - " autogenerating version ~p for key ~p", [Bucket, Vsn1, Key]), + logger:info("bucket \"~s\" has object versioning enabled," + " autogenerating version ~p for key ~p", [Bucket, Vsn1, Key]), Vsn1; {_, {ok, #bucket_versioning{status = enabled}}} -> - lager:info("bucket \"~s\" has object versioning enabled" - " but using ~p as supplied in request for key ~p", [Bucket, Vsn0, Key]), + logger:info("bucket \"~s\" has object versioning enabled" + " but using ~p as supplied in request for key ~p", [Bucket, Vsn0, Key]), Vsn0; {?LFS_DEFAULT_OBJECT_VERSION, {ok, #bucket_versioning{status = suspended}}} -> Vsn0; {Vsn3, {ok, #bucket_versioning{status = suspended}}} -> - lager:warning("ignoring object version ~p in request for key ~p in bucket \"~s\"" - " as the bucket has object versioning suspended", [Vsn3, Key, Bucket]), + logger:warning("ignoring object version ~p in request for key ~p in bucket \"~s\"" + " as the bucket has object versioning suspended", [Vsn3, Key, Bucket]), Vsn0 end. @@ -414,8 +414,8 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey, SrcObjVsn) -> {false, _, _} -> %% start copying - _ = lager:debug("copying! > ~s/~s/~s => ~s/~s/~s via ~p", - [SrcBucket, SrcKey, SrcObjVsn, Bucket, Key, ObjVsn, ReadRcPid]), + logger:debug("copying! > ~s/~s/~s => ~s/~s/~s via ~p", + [SrcBucket, SrcKey, SrcObjVsn, Bucket, Key, ObjVsn, ReadRcPid]), {ContentType, Metadata} = riak_cs_copy_object:new_metadata(SrcManifest, RD), @@ -443,7 +443,7 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey, SrcObjVsn) -> %% in different return value ResponseMod:api_error(copy_source_access_denied, RD, Ctx); {Result, _, _} = Error -> - _ = lager:debug("~p on ~s ~s", [Result, SrcBucket, SrcKey]), + logger:debug("~p on ~s ~s", [Result, SrcBucket, SrcKey]), Error end; diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl index ccbe3378b..d1106d447 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl @@ -131,7 +131,7 @@ process_post(RD, Ctx = #context{riak_client = RcPid, RcPid) of {ok, NewManifest} -> ETag = riak_cs_manifest:etag(NewManifest), - _ = lager:debug("checksum of all parts checksum: ~p", [ETag]), + logger:debug("checksum of all parts checksum: ~p", [ETag]), XmlDoc = {'CompleteMultipartUploadResult', [{'xmlns', "http://s3.amazonaws.com/doc/2006-03-01/"}], [ @@ -425,8 +425,8 @@ maybe_copy_part(PutPid, case riak_cs_copy_object:test_condition_and_permission(ReadRcPid, SrcManifest, RD, Ctx) of {false, _, _} -> - lager:debug("Start copying! > ~s/~s:~s => ~s/~s:~s via ~p", - [SrcBucket, SrcKey, SrcVsn, DstBucket, DstKey, DstVsn, ReadRcPid]), + logger:debug("Start copying! > ~s/~s:~s => ~s/~s:~s via ~p", + [SrcBucket, SrcKey, SrcVsn, DstBucket, DstKey, DstVsn, ReadRcPid]), %% Prepare for connection loss or client close FDWatcher = riak_cs_copy_object:connection_checker((RD#wm_reqdata.wm_state)#wm_reqstate.socket), @@ -454,10 +454,10 @@ maybe_copy_part(PutPid, {true, _RD, _OtherCtx} -> %% access to source object not authorized %% TODO: check the return value - _ = lager:debug("access to source object denied (~s/~s:~s)", [SrcBucket, SrcKey, SrcVsn]), + logger:debug("access to source object denied (~s/~s:~s)", [SrcBucket, SrcKey, SrcVsn]), {{halt, 403}, RD, Ctx}; Error -> - _ = lager:debug("unknown error: ~p", [Error]), + logger:debug("unknown error: ~p", [Error]), %% ResponseMod:api_error(Error, RD, Ctx#context{local_context=LocalCtx}) Error end. diff --git a/apps/riak_cs/src/riak_cs_wm_user.erl b/apps/riak_cs/src/riak_cs_wm_user.erl index 03e6d7dad..43ab9afe0 100644 --- a/apps/riak_cs/src/riak_cs_wm_user.erl +++ b/apps/riak_cs/src/riak_cs_wm_user.erl @@ -256,8 +256,8 @@ get_user(AdminCheckResult, _) -> handle_get_user_result({ok, {User, UserObj}}, RD, Ctx) -> {false, RD, Ctx#context{user=User, user_object=UserObj}}; handle_get_user_result({error, Reason}, RD, Ctx) -> - _ = lager:warning("Failed to fetch user record. KeyId: ~p" - " Reason: ~p", [user_key(RD), Reason]), + logger:warning("Failed to fetch user record. KeyId: ~p" + " Reason: ~p", [user_key(RD), Reason]), riak_cs_s3_response:api_error(invalid_access_key_id, RD, Ctx). -spec update_user([{atom(), term()}], #wm_reqdata{}, #context{}) -> diff --git a/apps/riak_cs/src/riak_cs_wm_users.erl b/apps/riak_cs/src/riak_cs_wm_users.erl index 630bd2761..a298244be 100644 --- a/apps/riak_cs/src/riak_cs_wm_users.erl +++ b/apps/riak_cs/src/riak_cs_wm_users.erl @@ -156,8 +156,8 @@ user_fold_fun(RcPid, Status) -> %% Status is defined and does not match the account status Users; {error, Reason} -> - _ = lager:warning("Failed to fetch user record. KeyId: ~p" - " Reason: ~p", [UserId, Reason]), + logger:warning("Failed to fetch user record. KeyId: ~p" + " Reason: ~p", [UserId, Reason]), Users end end. diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index 59523e15c..4d41fcb20 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -181,23 +181,23 @@ handle_validation_response({error, disconnected}, RD, Ctx, _Next, _, _Bool) -> {{halt, 503}, RD, Ctx}; handle_validation_response({error, Reason}, RD, Ctx, Next, _, true) -> %% no keyid was given, proceed anonymously - _ = lager:debug("No user key: ~p", [Reason]), + logger:debug("No user key: ~p", [Reason]), Next(RD, Ctx); handle_validation_response({error, no_user_key}, RD, Ctx, _, Conv2KeyCtx, false) -> %% no keyid was given, deny access - _ = lager:debug("No user key, deny"), + logger:debug("No user key, deny"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, bad_auth}, RD, Ctx, _, Conv2KeyCtx, _) -> %% given keyid was found, but signature didn't match - _ = lager:debug("bad_auth"), + logger:debug("bad_auth"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, notfound}, RD, Ctx, _, Conv2KeyCtx, _) -> %% no keyid was found - _ = lager:debug("key_id not found"), + logger:debug("key_id not found"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, Reason}, RD, Ctx, _, Conv2KeyCtx, _) -> %% no matching keyid was found, or lookup failed - _ = lager:debug("Authentication error: ~p", [Reason]), + logger:debug("Authentication error: ~p", [Reason]), deny_invalid_key(RD, Conv2KeyCtx(Ctx)). handle_auth_admin(RD, Ctx, undefined, true) -> @@ -259,8 +259,7 @@ validate_auth_header(RD, AuthBypass, RcPid, Ctx) -> {error, NE}; {error, Reason} -> %% other failures, like Riak fetch timeout, be loud about - _ = lager:error("Retrieval of user record for ~p failed. Reason: ~p", - [KeyId, Reason]), + logger:error("Retrieval of user record for ~p failed. Reason: ~p", [KeyId, Reason]), {error, Reason} end. @@ -451,7 +450,7 @@ extract_version_id(RD, Ctx = #context{local_context = LocalCtx0}) -> %% CS extension, for PutObject should probably be %% better done in s3_rewrite, but doing so will be too %% disruptive for the tidy rewriting flow - lager:debug("are we PutObject on a version? ~p", [Defined]), + logger:debug("are we PutObject on a version? ~p", [Defined]), list_to_binary(Defined); {V, _} -> list_to_binary(mochiweb_util:unquote(mochiweb_util:unquote(V))) @@ -501,7 +500,7 @@ maybe_update_context_with_acl_from_headers(RD, {ok, Ctx#context{acl=DefaultAcl}} end; {error, Reason} -> - _ = lager:error("Failed to retrieve bucket objects for reason ~p", [Reason]), + logger:error("Failed to retrieve bucket objects for reason ~p", [Reason]), {error, {{halt, 500}, RD, Ctx}} end. @@ -1047,7 +1046,7 @@ fetch_bucket_owner(Bucket, RcPid) -> {ok, Acl} -> Acl?ACL.owner; {error, Reason} -> - _ = lager:debug("Failed to retrieve owner info for bucket ~p. Reason ~p", [Bucket, Reason]), + logger:debug("Failed to retrieve owner info for bucket ~p. Reason ~p", [Bucket, Reason]), undefined end. diff --git a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl index 480f1e2a2..b6804118d 100644 --- a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl +++ b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl @@ -125,7 +125,7 @@ handle_call(block_pbc, _From, State) -> {reply, {ok, self()}, State}; handle_call(Request, _From, State) -> - lager:warning("Unknown request: ~p~n", [Request]), + logger:warning("Unknown request: ~p", [Request]), Reply = {error, {invalid_request, Request}}, {reply, Reply, State}. @@ -157,8 +157,8 @@ process_get_req(#rpbgetreq{bucket = RiakBucket, key = VKey} = _RpbGetReq, [{dict:new(), binary:copy(<<"a">>, 10)}]), {{ok, Obj}, State}; Other -> - lager:warning("Unknown #rpbgetreq{} for ~p, bucket=~p, key=~p~n", - [Other, RiakBucket, VKey]), + logger:warning("Unknown #rpbgetreq{} for ~p, bucket=~p, key=~p", + [Other, RiakBucket, VKey]), error({not_implemented, {rpbgetreq, Other, RiakBucket, VKey}}) end. @@ -170,8 +170,8 @@ process_put_req(#rpbputreq{bucket = RiakBucket, key = VKey, return_body = 1} = _ {M, RObj} = new_manifest_ro(BucketName, RiakBucket, Key, Vsn, Acl), {{ok, RObj}, State#state{manifest = M}}; Other -> - lager:warning("Unknown #rpbgetreq{} with return_body for ~p," " bucket=~p, key=~p~n", - [Other, RiakBucket, VKey]), + logger:warning("Unknown #rpbgetreq{} with return_body for ~p, bucket=~p, key=~p", + [Other, RiakBucket, VKey]), error({not_implemented, {rpbgetreq_with_return_body, Other, RiakBucket, VKey}}) end; process_put_req(_RpbPutReq, State) -> diff --git a/apps/stanchion/src/stanchion.app.src b/apps/stanchion/src/stanchion.app.src index 18bdcdf58..267a866aa 100644 --- a/apps/stanchion/src/stanchion.app.src +++ b/apps/stanchion/src/stanchion.app.src @@ -6,24 +6,24 @@ %% tag), and that plus sign will not go down well with freebsd pkg %% ('+' is not allowed in +MANIFEST file). Hence we produce a %% version of vsn that doesn't have it. - {vsn, git}, + {vsn, "3.1.0"}, {modules, []}, {registered, []}, - {applications, [ - kernel, - stdlib, - inets, - crypto, - mochiweb, - webmachine, - exometer_core, - lager, - riakc, - rcs_common - ]}, - {mod, { stanchion_app, []}}, - {env, [ - {listener, {"127.0.0.1", 8085}}, - {riak_host, {"127.0.0.1", 8087}} - ]} - ]}. + {applications, + [kernel, + stdlib, + inets, + crypto, + mochiweb, + webmachine, + exometer_core, + riakc, + rcs_common + ]}, + {mod, {stanchion_app, []}}, + {env, + [{listener, {"127.0.0.1", 8085}}, + {riak_host, {"127.0.0.1", 8087}} + ]} + ] +}. diff --git a/apps/stanchion/src/stanchion_auth.erl b/apps/stanchion/src/stanchion_auth.erl index 3d9d41af5..b94af4021 100644 --- a/apps/stanchion/src/stanchion_auth.erl +++ b/apps/stanchion/src/stanchion_auth.erl @@ -39,8 +39,8 @@ authenticate(RD, [KeyId, Signature]) -> case stanchion_utils:get_admin_creds() of {ok, {AdminKeyId, AdminSecret}} -> CalculatedSignature = signature(AdminSecret, RD), - _ = lager:debug("Presented Signature: ~p~nCalculated Signature: ~p~n", - [Signature, CalculatedSignature]), + logger:debug(" Presented Signature: ~p", [Signature]), + logger:debug("Calculated Signature: ~p", [CalculatedSignature]), case KeyId == AdminKeyId andalso check_auth(Signature, CalculatedSignature) of true -> diff --git a/rebar.config b/rebar.config index 60d11a237..cfb36d6ae 100644 --- a/rebar.config +++ b/rebar.config @@ -11,7 +11,6 @@ , {gen_fsm, sync_send_all_state_event, 3} , {gen_fsm, reply, 2} ]} - , {parse_transform, lager_transform} ] }. @@ -20,8 +19,7 @@ ] }. -{deps, [ {parse_trans, "3.3.0"} - , {getopt, "v1.0.2"} +{deps, [ {getopt, "v1.0.2"} , {webmachine, "1.11.1"} , {mochiweb, "v2.20.1"} , {exometer_core, "v1.5.7"} @@ -31,7 +29,6 @@ , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {riak_repl_pb_api, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.9"}}} , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.8"}}} - , {lager_syslog, {git, "https://github.com/TI-Tokyo/lager_syslog.git", {tag, "3.1.1"}}} ] }. From 80c1ba06de685e7decba6b3a0bc2d76cd454017d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 22 Oct 2022 13:09:13 +0300 Subject: [PATCH 332/831] bump some deps, float others --- rebar.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index cfb36d6ae..12ed8d25c 100644 --- a/rebar.config +++ b/rebar.config @@ -14,7 +14,7 @@ ] }. -{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/TI-Tokyo/rebar3_cuttlefish", {tag, "0.2.1"}}} +{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/TI-Tokyo/rebar3_cuttlefish", {tag, "0.2.2"}}} , rebar3_proper ] }. @@ -28,7 +28,7 @@ , {poolboy, {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {riak_repl_pb_api, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.9"}}} - , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.8"}}} + , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {branch, "develop"}}} ] }. From d38f28c3f20da69ac3e3abeaae55031725361b6f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 22 Oct 2022 22:29:10 +0300 Subject: [PATCH 333/831] delagerify code in stanchion --- apps/stanchion/src/stanchion.app.src | 3 +- apps/stanchion/src/stanchion_acl_utils.erl | 18 +++++------ apps/stanchion/src/stanchion_app.erl | 15 ++++----- apps/stanchion/src/stanchion_server.erl | 4 +-- apps/stanchion/src/stanchion_stats.erl | 6 ++-- apps/stanchion/src/stanchion_utils.erl | 32 +++++++++---------- apps/stanchion/src/stanchion_wm_bucket.erl | 2 +- .../src/stanchion_wm_error_handler.erl | 2 +- apps/stanchion/src/stanchion_wm_policy.erl | 2 +- 9 files changed, 40 insertions(+), 44 deletions(-) diff --git a/apps/stanchion/src/stanchion.app.src b/apps/stanchion/src/stanchion.app.src index 267a866aa..24bd2f7ea 100644 --- a/apps/stanchion/src/stanchion.app.src +++ b/apps/stanchion/src/stanchion.app.src @@ -17,8 +17,7 @@ mochiweb, webmachine, exometer_core, - riakc, - rcs_common + riakc ]}, {mod, {stanchion_app, []}}, {env, diff --git a/apps/stanchion/src/stanchion_acl_utils.erl b/apps/stanchion/src/stanchion_acl_utils.erl index 3ffd757e7..f07b548f7 100644 --- a/apps/stanchion/src/stanchion_acl_utils.erl +++ b/apps/stanchion/src/stanchion_acl_utils.erl @@ -126,7 +126,7 @@ permissions_to_json_term(Perms) -> process_acl_contents([], Acl) -> Acl; process_acl_contents([{Name, Value} | RestObjects], Acl) -> - _ = lager:debug("Object name: ~p", [Name]), + logger:debug("Object name: ~p", [Name]), case Name of <<"owner">> -> {struct, OwnerData} = Value, @@ -150,19 +150,19 @@ process_owner([{Name, Value} | RestObjects], Acl) -> Owner = Acl?ACL.owner, case Name of <<"key_id">> -> - _ = lager:debug("Owner Key ID value: ~p", [Value]), + logger:debug("Owner Key ID value: ~p", [Value]), {OwnerName, OwnerCID, _} = Owner, UpdOwner = {OwnerName, OwnerCID, binary_to_list(Value)}; <<"canonical_id">> -> - _ = lager:debug("Owner ID value: ~p", [Value]), + logger:debug("Owner ID value: ~p", [Value]), {OwnerName, _, OwnerId} = Owner, UpdOwner = {OwnerName, binary_to_list(Value), OwnerId}; <<"display_name">> -> - _ = lager:debug("Owner Name content: ~p", [Value]), + logger:debug("Owner Name content: ~p", [Value]), {_, OwnerCID, OwnerId} = Owner, UpdOwner = {binary_to_list(Value), OwnerCID, OwnerId}; _ -> - _ = lager:debug("Encountered unexpected element: ~p", [Name]), + logger:debug("Encountered unexpected element: ~p", [Name]), UpdOwner = Owner end, process_owner(RestObjects, Acl?ACL{owner=UpdOwner}). @@ -184,22 +184,22 @@ process_grant([], Grant) -> process_grant([{Name, Value} | RestObjects], Grant) -> case Name of <<"canonical_id">> -> - _ = lager:debug("ID value: ~p", [Value]), + logger:debug("ID value: ~p", [Value]), {{DispName, _}, Perms} = Grant, UpdGrant = {{DispName, binary_to_list(Value)}, Perms}; <<"display_name">> -> - _ = lager:debug("Name value: ~p", [Value]), + logger:debug("Name value: ~p", [Value]), {{_, Id}, Perms} = Grant, UpdGrant = {{binary_to_list(Value), Id}, Perms}; <<"group">> -> - _ = lager:debug("Group value: ~p", [Value]), + logger:debug("Group value: ~p", [Value]), {_, Perms} = Grant, UpdGrant = {list_to_atom( binary_to_list(Value)), Perms}; <<"permissions">> -> {Grantee, _} = Grant, Perms = process_permissions(Value), - _ = lager:debug("Perms value: ~p", [Value]), + logger:debug("Perms value: ~p", [Value]), UpdGrant = {Grantee, Perms}; _ -> UpdGrant = Grant diff --git a/apps/stanchion/src/stanchion_app.erl b/apps/stanchion/src/stanchion_app.erl index 976135e3f..a367a71b4 100644 --- a/apps/stanchion/src/stanchion_app.erl +++ b/apps/stanchion/src/stanchion_app.erl @@ -56,7 +56,7 @@ start(_Type, _StartArgs) -> stanchion_utils:close_riak_connection(Pid) end; {error, Reason} -> - lager:error("Couldn't connect to Riak: ~p", [Reason]), + logger:error("Couldn't connect to Riak: ~p", [Reason]), {error, Reason} end. @@ -68,13 +68,13 @@ stop(_State) -> check_admin_creds(Pid) -> case application:get_env(stanchion, admin_key) of {ok, "admin-key"} -> - lager:warning("admin.key is defined as default. Please create" - " admin user and configure it.", []), + logger:warning("admin.key is defined as default. Please create" + " admin user and configure it.", []), application:set_env(stanchion, admin_secret, "admin-secret"); {ok, KeyId} -> case application:get_env(stanchion, admin_secret) of {ok, _} -> - lager:warning("admin.secret is ignored."); + logger:warning("admin.secret is ignored."); _ -> ok end, @@ -89,12 +89,11 @@ check_admin_creds(Pid) -> Error end; {error, notfound} -> - lager:error("admin.key defined in stanchion.conf was not found." - "Please create it."), + logger:error("admin.key defined in stanchion.conf was not found." + "Please create it."), {error, admin_not_configured}; Error -> - lager:error("Error loading administrator configuration: ~p", - [Error]), + logger:error("Error loading administrator configuration: ~p", [Error]), Error end; Error -> diff --git a/apps/stanchion/src/stanchion_server.erl b/apps/stanchion/src/stanchion_server.erl index 755b3dc7a..6d4f2dc2f 100644 --- a/apps/stanchion/src/stanchion_server.erl +++ b/apps/stanchion/src/stanchion_server.erl @@ -67,7 +67,7 @@ {{Result_____, ServiceTime____}, TATus_____} = ?TURNAROUND_TIME(Call), WaitingTime____ = TATus_____ - ServiceTime____, - _ = lager:debug("~p ~p ~p", [Name, Result_____, ServiceTime____]), + logger:debug("~p ~p ~p", [Name, Result_____, ServiceTime____]), stanchion_stats:update(Name, ServiceTime____, WaitingTime____), Result_____ end). @@ -227,7 +227,7 @@ handle_cast(list_buckets, State) -> handle_cast(stop, State) -> {stop, normal, State}; handle_cast(Event, State) -> - _ = lager:warning("Received unknown cast event: ~p", [Event]), + logger:warning("Received unknown cast event: ~p", [Event]), {noreply, State}. %% @doc @TODO diff --git a/apps/stanchion/src/stanchion_stats.erl b/apps/stanchion/src/stanchion_stats.erl index 8348a81e8..861a78433 100644 --- a/apps/stanchion/src/stanchion_stats.erl +++ b/apps/stanchion/src/stanchion_stats.erl @@ -83,12 +83,12 @@ safe_update(BaseId, ElapsedUs) -> try update(BaseId, ElapsedUs) catch T:E -> - lager:error("Failed on storing some metrics: ~p,~p", [T,E]) + logger:error("Failed on storing some metrics: ~p,~p", [T,E]) end. -spec update(key(), integer()) -> ok | {error, any()}. update(BaseId, ElapsedUs) -> - _ = lager:debug("Updating ~p (~p)", [BaseId, ElapsedUs]), + logger:debug("Updating ~p (~p)", [BaseId, ElapsedUs]), ok = exometer:update([stanchion|BaseId], 1), ok = exometer:update([stanchion,time|BaseId], ElapsedUs). @@ -142,7 +142,7 @@ init_item({Name, Type, Opts, _Aliases}) -> -spec report_exometer_item(key(), [atom()], exometer:type()) -> [{atom(), integer()}]. report_exometer_item(Key, SubKey, ExometerType) -> - _ = lager:debug("~p", [{Key, SubKey, ExometerType}]), + logger:debug("~p", [{Key, SubKey, ExometerType}]), AtomKeys = [metric_to_atom(Key ++ SubKey, Suffix) || Suffix <- suffixes(ExometerType)], {ok, Values} = exometer:get_value([stanchion | SubKey ++ Key], diff --git a/apps/stanchion/src/stanchion_utils.erl b/apps/stanchion/src/stanchion_utils.erl index 076609b8a..1f6d13239 100644 --- a/apps/stanchion/src/stanchion_utils.erl +++ b/apps/stanchion/src/stanchion_utils.erl @@ -132,8 +132,7 @@ create_user(UserFields) -> {error, Reason1} end catch T:E -> - _ = lager:error("Error on creating user ~s: ~p", - [KeyId, {T, E}]), + logger:error("Error on creating user ~s: ~p", [KeyId, {T, E}]), {error, {T, E}} after close_riak_connection(RiakPid) @@ -172,11 +171,11 @@ get_admin_creds() -> {ok, Secret} -> {ok, {KeyId, Secret}}; undefined -> - _ = lager:warning("The admin user's secret has not been defined."), + logger:warning("The admin user's secret has not been defined."), {error, secret_undefined} end; undefined -> - _ = lager:warning("The admin user's key id has not been defined."), + logger:warning("The admin user's key id has not been defined."), {error, key_id_undefined} end. @@ -259,7 +258,7 @@ put_bucket(BucketObj, OwnerId, Opts, RiakPid) -> [MD0] -> MD0; _E -> MsgData = {siblings, riakc_obj:key(BucketObj)}, - _ = lager:error("bucket has siblings: ~p", [MsgData]), + logger:error("bucket has siblings: ~p", [MsgData]), throw(MsgData) % @TODO: data broken; handle this end, MetaData = make_new_metadata(MD, Opts), @@ -395,8 +394,7 @@ update_user(KeyId, UserFields) -> Error end catch T:E:_ST -> - _ = lager:error("Error on updating user ~s: ~p", - [KeyId, {T, E}]), + logger:error("Error on updating user ~s: ~p", [KeyId, {T, E}]), {error, {T, E}} after close_riak_connection(RiakPid) @@ -527,8 +525,8 @@ bucket_available(Bucket, RequesterId, BucketOp, RiakPid) -> {{error, Reason}, TAT} -> stanchion_stats:update([riakc, get_cs_bucket], TAT), %% @TODO Maybe bubble up this error info - _ = lager:warning("Error occurred trying to check if the bucket ~p exists. Reason: ~p", - [Bucket, Reason]), + logger:warning("Error occurred trying to check if the bucket ~p exists. Reason: ~p", + [Bucket, Reason]), {false, Reason} end. @@ -557,9 +555,9 @@ do_bucket_op(Bucket, OwnerId, Opts, BucketOp) -> {false, Reason1} -> {error, Reason1} end - catch T:E -> - _ = lager:error("Error on updating bucket ~s: ~p", - [Bucket, {T, E}]), + catch T:E:ST -> + logger:error("Error on updating bucket ~s: ~p. Stacktrace: ~p", + [Bucket, {T, E}, ST]), {error, {T, E}} after close_riak_connection(RiakPid) @@ -616,8 +614,8 @@ is_bucket_clean(Bucket, RiakPid, BucketObj) -> end end catch T:E:ST -> - _ = lager:error("Could not check whether bucket was empty. Reason: ~p:~p - ~p", - [T, E, ST]), + logger:error("Could not check whether bucket was empty. Reason: ~p:~p - ~p", + [T, E, ST]), error({T, E}) after close_manifest_connection(RiakPid, ManifestRiakPid) @@ -697,8 +695,8 @@ email_available(Email_, RiakPid) -> {false, user_already_exists}; {error, Reason} -> %% @TODO Maybe bubble up this error info - lager:warning("Error occurred trying to check if the address ~p has been registered. Reason: ~p", - [Email, Reason]), + logger:warning("Error occurred trying to check if the address ~p has been registered. Reason: ~p", + [Email, Reason]), {false, Reason} end. @@ -747,7 +745,7 @@ get_value(BucketName, Key, RiakPid) -> {ok, RiakObj} -> riakc_obj:get_value(RiakObj); {error, Reason} -> - _ = lager:warning("Failed to retrieve value for ~p. Reason: ~p", [Key, Reason]), + logger:warning("Failed to retrieve value for ~p. Reason: ~p", [Key, Reason]), <<"unknown">> end. diff --git a/apps/stanchion/src/stanchion_wm_bucket.erl b/apps/stanchion/src/stanchion_wm_bucket.erl index 275e98638..88861d6d0 100644 --- a/apps/stanchion/src/stanchion_wm_bucket.erl +++ b/apps/stanchion/src/stanchion_wm_bucket.erl @@ -119,7 +119,7 @@ to_xml(RD, Ctx) -> delete_resource(ReqData, Ctx) -> Bucket = list_to_binary(wrq:path_info(bucket, ReqData)), RequesterId = list_to_binary(wrq:get_qs_value("requester", "", ReqData)), - _ = lager:debug("Bucket: ~p Requester: ~p", [Bucket, RequesterId]), + logger:debug("Bucket: ~p Requester: ~p", [Bucket, RequesterId]), case stanchion_server:delete_bucket(Bucket, RequesterId) of ok -> {true, ReqData, Ctx}; diff --git a/apps/stanchion/src/stanchion_wm_error_handler.erl b/apps/stanchion/src/stanchion_wm_error_handler.erl index e8634615f..96e453557 100644 --- a/apps/stanchion/src/stanchion_wm_error_handler.erl +++ b/apps/stanchion/src/stanchion_wm_error_handler.erl @@ -25,7 +25,7 @@ render_error(500, Req, Reason) -> {ok, ReqState} = Req:add_response_header("Content-Type", "text/html"), {Path,_} = Req:path(), - lager:error("webmachine error: path=~p~n~p~n", [Path, Reason]), + logger:error("webmachine error: path=~p. Reason: ~p", [Path, Reason]), STString = io_lib:format("~p", [Reason]), ErrorStart = "500 Internal Server Error

      Internal Server Error

      The server encountered an error while processing this request:
      ",
           ErrorEnd = "


      mochiweb+webmachine web server
      ", diff --git a/apps/stanchion/src/stanchion_wm_policy.erl b/apps/stanchion/src/stanchion_wm_policy.erl index 37a3836d1..e18a2411a 100644 --- a/apps/stanchion/src/stanchion_wm_policy.erl +++ b/apps/stanchion/src/stanchion_wm_policy.erl @@ -106,7 +106,7 @@ accept_body(RD, Ctx) -> delete_resource(RD, Ctx) -> Bucket = list_to_binary(wrq:path_info(bucket, RD)), RequesterId = list_to_binary(wrq:get_qs_value("requester", "", RD)), - _ = lager:debug("Bucket: ~p Requester: ~p", [Bucket, RequesterId]), + logger:debug("Bucket: ~p Requester: ~p", [Bucket, RequesterId]), case stanchion_server:delete_bucket_policy(Bucket, RequesterId) of ok -> From 9997220d359127ddbeac410c7b8de919508911b9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 22 Oct 2022 23:28:27 +0300 Subject: [PATCH 334/831] merge and delagerify schemas --- priv/riak_cs.schema | 345 +++++++++++++++------------------------ priv/stanchion.schema | 368 +----------------------------------------- rel/vars.config | 10 +- 3 files changed, 133 insertions(+), 590 deletions(-) diff --git a/priv/riak_cs.schema b/priv/riak_cs.schema index 2a8f3dbf9..daacdd73d 100644 --- a/priv/riak_cs.schema +++ b/priv/riak_cs.schema @@ -435,253 +435,166 @@ {datatype, flag} ]}. -%% @doc Where to emit the default log messages (typically at 'info' -%% severity): -%% off: disabled -%% file: the file specified by log.console.file -%% console: to standard output (seen when using `riak attach-direct`) -%% both: log.console.file and standard out. -{mapping, "log.console", "lager.handlers", [ - {default, {{console_log_default}} }, - {datatype, {enum, [off, file, console, both]}} -]}. - %% @doc The severity level of the console log, default is 'info'. -{mapping, "log.console.level", "lager.handlers", [ - {default, info}, +{mapping, "logger.level", "kernel.logger_level", [ + {default, {{log_level}} }, {datatype, {enum, [debug, info, notice, warning, error, critical, alert, emergency, none]}} ]}. -%% @doc When 'log.console' is set to 'file' or 'both', the file where -%% console messages will be logged. -{mapping, "log.console.file", "lager.handlers", [ - {default, "$(platform_log_dir)/console.log"}, - {datatype, file} -]}. - -%% @doc Maximum size of the console log in bytes, before it is rotated -{mapping, "log.console.size", "lager.handlers", [ - {default, "10MB"}, - {datatype, bytesize} -]}. - -%% @doc The schedule on which to rotate the console log. For more -%% information see: -%% https://github.com/basho/lager/blob/master/README.md#internal-log-rotation -{mapping, "log.console.rotation", "lager.handlers", [ - {default, "$D0"} +%% @doc Format string for the messages emitted to default log. The string is passed into +%% the handler as a logger_formatter template, the format is a list containing strings +%% and atoms. The atoms denote the keys for retrieving metadata from the logger events. +%% More information on default metadata can be found here (https://www.erlang.org/doc/man/logger_formatter.html#type-template). +{mapping, "logger.format", "kernel.logger", [ + {default, "[time,\" [\",level,\"] \",pid,\"@\",mfa,\":\",line,\" \",msg,\"\\n\"]."} ]}. -%% @doc The number of rotated console logs to keep. When set to -%% 'current', only the current open log file is kept. -{mapping, "log.console.rotation.keep", "lager.handlers", [ - {default, 5}, - {datatype, [integer, {atom, current}]}, - {validators, ["rotation_count"]} -]}. - -%% @doc The file where error messages will be logged. -{mapping, "log.error.file", "lager.handlers", [ - {default, "$(platform_log_dir)/error.log"}, +%% @doc Filename to use for log files. +{mapping, "logger.file", "kernel.logger", [ + {default, "$(platform_log_dir)/console.log"}, {datatype, file} ]}. -%% @doc Maximum size of the error log in bytes, before it is rotated -{mapping, "log.error.size", "lager.handlers", [ - {default, "10MB"}, - {datatype, bytesize} -]}. - -%% @doc The schedule on which to rotate the error log. For more -%% information see: -%% https://github.com/basho/lager/blob/master/README.md#internal-log-rotation -{mapping, "log.error.rotation", "lager.handlers", [ - {default, "$D0"} +%% @doc With log rotation enabled, this decides the maximum number of log +%% files to store. +{mapping, "logger.max_files", "kernel.logger", [ + {default, 10}, + {datatype, integer} ]}. -%% @doc The number of rotated error logs to keep. When set to -%% 'current', only the current open log file is kept. -{mapping, "log.error.rotation.keep", "lager.handlers", [ - {default, 5}, - {datatype, [integer, {atom, current}]}, - {validators, ["rotation_count"]} +%% @doc The maximum size of a single log file. Total size used for log files will +%% be max_file_size * max_files. +{mapping, "logger.max_file_size", "kernel.logger", [ + {default, "1MB"}, + {datatype, bytesize} ]}. -%% @doc When set to 'on', enables log output to syslog. -{mapping, "log.syslog", "lager.handlers", [ +%% @doc Determines if messages should emit to syslog. +{mapping, "syslogger.enabled", "kernel.logger", [ {default, off}, - {datatype, flag} + {datatype, {flag, on, off}} ]}. -%% @doc When set to 'on', enables log output to syslog. -{mapping, "log.syslog.ident", "lager.handlers", [ - {default, "riak-cs"}, - hidden -]}. - -%% @doc Syslog facility to log entries from Riak CS. -{mapping, "log.syslog.facility", "lager.handlers", [ - {default, daemon}, - {datatype, {enum,[kern, user, mail, daemon, auth, syslog, - lpr, news, uucp, clock, authpriv, ftp, - cron, local0, local1, local2, local3, - local4, local5, local6, local7]}}, - hidden +%% @doc The severity level of the syslog log, default is 'notice'. +{mapping, "syslogger.level", "kernel.logger", [ + {default, notice}, + {datatype, {enum, [debug, info, notice, warning, error, critical, alert, emergency, none]}} ]}. -%% @doc The severity level at which to log entries to syslog, default is 'info'. -{mapping, "log.syslog.level", "lager.handlers", [ - {default, info}, - {datatype, {enum, [debug, info, notice, warning, error, critical, alert, emergency, none]}}, - hidden +%% @doc The syslog facility to use, default is 'user'. +{mapping, "syslogger.facility", "kernel.logger", [ + {default, user}, + {datatype, {enum, [user, local0]}} ]}. -{translation, - "lager.handlers", - fun(Conf) -> - SyslogHandler = case cuttlefish:conf_get("log.syslog", Conf) of - true -> - Ident = cuttlefish:conf_get("log.syslog.ident", Conf), - Facility = cuttlefish:conf_get("log.syslog.facility", Conf), - LogLevel = cuttlefish:conf_get("log.syslog.level", Conf), - [{lager_syslog_backend, [Ident, Facility, LogLevel]}]; - _ -> [] - end, - - TranslateKeep = fun(current) -> 0; - (Int) -> Int - end, - ErrorHandler = case cuttlefish:conf_get("log.error.file", Conf) of - undefined -> []; - ErrorLogFilename -> - ErrorLogRotation = cuttlefish:conf_get("log.error.rotation", Conf), - ErrorLogRotationKeep = TranslateKeep(cuttlefish:conf_get("log.error.rotation.keep", Conf)), - - ErrorLogSize = cuttlefish:conf_get("log.error.size", Conf), - [{lager_file_backend, [{file, ErrorLogFilename}, - {level, error}, - {size, ErrorLogSize}, - {date, ErrorLogRotation}, - {count, ErrorLogRotationKeep}]}] - end, - - ConsoleLogLevel = cuttlefish:conf_get("log.console.level", Conf), - ConsoleLogFile = cuttlefish:conf_get("log.console.file", Conf), - ConsoleLogSize = cuttlefish:conf_get("log.console.size", Conf), - ConsoleLogRotation = cuttlefish:conf_get("log.console.rotation", Conf), - ConsoleLogRotationKeep = TranslateKeep(cuttlefish:conf_get("log.console.rotation.keep", Conf)), - - ConsoleHandler = {lager_console_backend, ConsoleLogLevel}, - ConsoleFileHandler = {lager_file_backend, [{file, ConsoleLogFile}, - {level, ConsoleLogLevel}, - {size, ConsoleLogSize}, - {date, ConsoleLogRotation}, - {count, ConsoleLogRotationKeep}]}, - - ConsoleHandlers = case cuttlefish:conf_get("log.console", Conf) of - off -> []; - file -> [ConsoleFileHandler]; - console -> [ConsoleHandler]; - both -> [ConsoleHandler, ConsoleFileHandler]; - _ -> [] - end, - SyslogHandler ++ ConsoleHandlers ++ ErrorHandler - end -}. - -%% @doc Whether to enable Erlang's built-in error logger. -{mapping, "sasl", "sasl.sasl_error_logger", [ - {default, off}, - {datatype, flag}, - hidden +%% @doc Format string for the messages emitted to syslog. The string is passed into +%% the handler as a logger_formatter template, the format is a list containing strings +%% and atoms. The atoms denote the keys for retrieving metadata from the logger events. +%% More information on default metadata can be found here (https://www.erlang.org/doc/man/logger_formatter.html#type-template). +{mapping, "syslogger.format", "kernel.logger", [ + {default, "[\"severity=\",level,\" text=\",msg]."}, + {datatype, string} ]}. -%% @doc Whether to enable the crash log. -{mapping, "log.crash", "lager.crash_log", [ +%% @doc Filename to use for SASL reports. +{mapping, "logger.sasl.enabled", "kernel.logger", [ {default, on}, - {datatype, flag} + {datatype, {flag, on, off}} ]}. -%% @doc If the crash log is enabled, the file where its messages will -%% be written. -{mapping, "log.crash.file", "lager.crash_log", [ - {default, "$(platform_log_dir)/crash.log"}, +%% @doc Filename to use for SASL reports. +{mapping, "logger.sasl.file", "kernel.logger", [ + {default, "$(platform_log_dir)/reports.log"}, {datatype, file} ]}. -{translation, - "lager.crash_log", - fun(Conf) -> - case cuttlefish:conf_get("log.crash", Conf) of - false -> undefined; - _ -> - cuttlefish:conf_get("log.crash.file", Conf, "{{platform_log_dir}}/crash.log") - end - end}. - -%% @doc Maximum size in bytes of individual messages in the crash log -{mapping, "log.crash.maximum_message_size", "lager.crash_log_msg_size", [ - {default, "64KB"}, - {datatype, bytesize} -]}. - -%% @doc Maximum size of the crash log in bytes, before it is rotated -{mapping, "log.crash.size", "lager.crash_log_size", [ - {default, "10MB"}, - {datatype, bytesize} -]}. - -%% @doc The schedule on which to rotate the crash log. For more -%% information see: -%% https://github.com/basho/lager/blob/master/README.md#internal-log-rotation -{mapping, "log.crash.rotation", "lager.crash_log_date", [ - {default, "$D0"} -]}. - -%% @doc The number of rotated crash logs to keep. When set to -%% 'current', only the current open log file is kept. -{mapping, "log.crash.rotation.keep", "lager.crash_log_count", [ - {default, 5}, - {datatype, [integer, {atom, current}]}, - {validators, ["rotation_count"]} -]}. - -{validator, - "rotation_count", - "must be 'current' or a positive integer", - fun(current) -> true; - (Int) when is_integer(Int) andalso Int >= 0 -> true; - (_) -> false - end}. +%% @doc Default opts that need setting for the syslogger application to ensure that +%% the PID is printed with log messages, along with the correct process identifier. +{translation, "syslogger", + fun(_Conf) -> + [{log_opts, [pid]}, {ident, "riak"}] + end +}. {translation, - "lager.crash_log_count", + "kernel.logger", fun(Conf) -> - case cuttlefish:conf_get("log.crash.rotation.keep", Conf) of - current -> 0; - Int -> Int - end - end}. - -%% @doc Whether to redirect error_logger messages into lager - -%% defaults to true -{mapping, "log.error.redirect", "lager.error_logger_redirect", [ - {default, on}, - {datatype, flag}, - hidden -]}. - -%% @doc Maximum number of error_logger messages to handle in a second -{mapping, "log.error.messages_per_second", "lager.error_logger_hwm", [ - {default, 100}, - {datatype, integer}, - hidden -]}. + LogFile = cuttlefish:conf_get("logger.file", Conf), + MaxNumBytes = cuttlefish:conf_get("logger.max_file_size", Conf), + MaxNumFiles = cuttlefish:conf_get("logger.max_files", Conf), + + DefaultFormatStr = cuttlefish:conf_get("logger.format", Conf), + DefaultFormatTerm = + case erl_scan:string(DefaultFormatStr) of + {ok, DefaultTokens, _} -> + case erl_parse:parse_term(DefaultTokens) of + {ok, DefaultTerm} -> + DefaultTerm; + {error, {_, _, DefaultError}} -> + cuttlefish:error(foo) + end; + {error, {_, _, DefaultScanError}} -> + cuttlefish:error(foo) + end, + ConfigMap0 = #{config => #{file => LogFile, + max_no_bytes => MaxNumBytes, + max_no_files => MaxNumFiles}, + filters => [{no_sasl, {fun logger_filters:domain/2, {stop, super, [otp, sasl]}}}], + formatter => {logger_formatter, + #{template => DefaultFormatTerm} + } + }, + DefaultLog = [{handler, default, logger_std_h, ConfigMap0}], + + SaslLog = + case cuttlefish:conf_get("logger.sasl.enabled", Conf) of + true -> + SaslLogFile = cuttlefish:conf_get("logger.sasl.file", Conf), + SaslConfigMap = #{config => #{file => SaslLogFile, + max_no_bytes => MaxNumBytes, %% reuse + max_no_files => MaxNumFiles}, + filter_default => stop, + filters => [{sasl_here, {fun logger_filters:domain/2, {log, equal, [otp, sasl]}}}], + formatter => {logger_formatter, + #{legacy_header => true, + single_line => false} + } + }, + [{handler, sasl, logger_std_h, SaslConfigMap}]; + _ -> + [] + end, + + SyslogLog = + case cuttlefish:conf_get("syslogger.enabled", Conf) of + true -> + SyslogLevel = cuttlefish:conf_get("syslogger.level", Conf), + SyslogFacility = cuttlefish:conf_get("syslogger.facility", Conf), + SyslogFormatStr = cuttlefish:conf_get("syslogger.format", Conf), + SyslogFormatTerm = + case erl_scan:string(SyslogFormatStr) of + {ok, SyslogTokens, _} -> + case erl_parse:parse_term(SyslogTokens) of + {ok, SyslogTerm} -> + SyslogTerm; + {error, {_, _, SyslogError}} -> + cuttlefish:error(foo) + end; + {error, {_, _, SyslogScanError}} -> + cuttlefish:error(foo) + end, + ConfigMap1 = #{level => SyslogLevel, + formatter => {logger_formatter, + #{template => SyslogFormatTerm, + single_line => true}}, facility => SyslogFacility}, + [{handler, syslog, syslogger, ConfigMap1}]; + false -> + [] + end, + DefaultLog ++ SyslogLog ++ SaslLog + end +}. -{mapping, "platform_log_dir", "riak_cs.platform_log_dir", [ - {datatype, directory}, - {default, "{{platform_log_dir}}"} -]}. %% == Supercluster aka Multi-bug Support == @@ -711,7 +624,7 @@ }. %% @doc Interval to refresh weight information for every supercluster member. -{mapping, "supercluster.weight_refresh_interval", +{mapping, "supercluster.weight_refresh_interval", "riak_cs.supercluster_weight_refresh_interval", [ {default, "15m"}, {datatype, [{duration, s}]}, diff --git a/priv/stanchion.schema b/priv/stanchion.schema index f5eb42792..4f94da5cc 100644 --- a/priv/stanchion.schema +++ b/priv/stanchion.schema @@ -11,381 +11,15 @@ ]}. %% @doc listen port and IP address -{mapping, "listener", "stanchion.host", [ +{mapping, "stanchion_listener", "stanchion.host", [ {default, {"{{stanchion_ip}}" , {{stanchion_port}} }}, {datatype, ip}, {validators, ["valid_host"]} ]}. -%% @doc Default cert location for https can be overridden -%% with the ssl config variable, for example: -{mapping, "ssl.certfile", "stanchion.ssl.certfile", [ - {datatype, file}, - {commented, "$(platform_etc_dir)/cert.pem"} -]}. - -%% @doc Default key location for https can be overridden with the ssl -%% config variable, for example: -{mapping, "ssl.keyfile", "stanchion.ssl.keyfile", [ - {datatype, file}, - {commented, "$(platform_etc_dir)/key.pem"} -]}. - -%% @doc Riak IP address and port number where Stanchion connects -{mapping, "riak_host", "stanchion.riak_host", [ - {default, {"{{riak_ip}}", {{riak_pb_port}} }}, - {datatype, ip}, - {validators, ["valid_host"]} -]}. - -%% @doc Admin user credentials. The credentials specified here must -%% match the admin credentials specified in the riak-cs.conf for the -%% system to function properly. -{mapping, "admin.key", "stanchion.admin_key", [ - {default, "{{admin_key}}"}, - {datatype, string} -]}. - -%% @doc admin.secret is deprecated and will be removed at next version. -{mapping, "admin.secret", "stanchion.admin_secret", [ - {datatype, string}, - hidden -]}. - %% @doc {auth_bypass, {{auth_bypass}} } , {mapping, "auth_bypass", "stanchion.auth_bypass", [ {datatype, {flag, on, off}}, {default, off}, hidden ]}. - -%% @doc Platform-specific installation paths -{mapping, "platform_bin_dir", "stanchion.platform_bin_dir", [ - {datatype, directory}, - {default, "{{platform_bin_dir}}"} -]}. - -%% @see platform_bin_dir -{mapping, "platform_data_dir", "stanchion.platform_data_dir", [ - {datatype, directory}, - {default, "{{platform_data_dir}}"} -]}. - -%% @see platform_bin_dir -{mapping, "platform_etc_dir", "stanchion.platform_etc_dir", [ - {datatype, directory}, - {default, "{{platform_etc_dir}}"} -]}. - -%% @see platform_bin_dir -{mapping, "platform_lib_dir", "stanchion.platform_lib_dir", [ - {datatype, directory}, - {default, "{{platform_lib_dir}}"} -]}. - -%% @see platform_bin_dir -{mapping, "platform_log_dir", "stanchion.platform_log_dir", [ - {datatype, directory}, - {default, "{{platform_log_dir}}"} -]}. - - -%% @doc Where to emit the default log messages (typically at 'info' -%% severity): -%% off: disabled -%% file: the file specified by log.console.file -%% console: to standard output (seen when using `riak attach-direct`) -%% both: log.console.file and standard out. -{mapping, "log.console", "lager.handlers", [ - {default, {{console_log_default}} }, - {datatype, {enum, [off, file, console, both]}} -]}. - -%% @doc The severity level of the console log, default is 'info'. -{mapping, "log.console.level", "lager.handlers", [ - {default, info}, - {datatype, {enum, [debug, info, notice, warning, error, critical, alert, emergency, none]}} -]}. - -%% @doc When 'log.console' is set to 'file' or 'both', the file where -%% console messages will be logged. -{mapping, "log.console.file", "lager.handlers", [ - {default, "$(platform_log_dir)/console.log"}, - {datatype, file} -]}. - -%% @doc Maximum size of the console log in bytes, before it is rotated -{mapping, "log.console.size", "lager.handlers", [ - {default, "10MB"}, - {datatype, bytesize} -]}. - -%% @doc The schedule on which to rotate the console log. For more -%% information see: -%% https://github.com/basho/lager/blob/master/README.md#internal-log-rotation -{mapping, "log.console.rotation", "lager.handlers", [ - {default, "$D0"} -]}. - -%% @doc The number of rotated console logs to keep. When set to -%% 'current', only the current open log file is kept. -{mapping, "log.console.rotation.keep", "lager.handlers", [ - {default, 5}, - {datatype, [integer, {atom, current}]}, - {validators, ["rotation_count"]} -]}. - -%% @doc The file where error messages will be logged. -{mapping, "log.error.file", "lager.handlers", [ - {default, "$(platform_log_dir)/error.log"}, - {datatype, file} -]}. - -%% @doc Maximum size of the error log in bytes, before it is rotated -{mapping, "log.error.size", "lager.handlers", [ - {default, "10MB"}, - {datatype, bytesize} -]}. - -%% @doc The schedule on which to rotate the error log. For more -%% information see: -%% https://github.com/basho/lager/blob/master/README.md#internal-log-rotation -{mapping, "log.error.rotation", "lager.handlers", [ - {default, "$D0"} -]}. - -%% @doc The number of rotated error logs to keep. When set to -%% 'current', only the current open log file is kept. -{mapping, "log.error.rotation.keep", "lager.handlers", [ - {default, 5}, - {datatype, [integer, {atom, current}]}, - {validators, ["rotation_count"]} -]}. - -%% @doc When set to 'on', enables log output to syslog. -{mapping, "log.syslog", "lager.handlers", [ - {default, off}, - {datatype, flag} -]}. - -%% @doc Syslog default identifier -{mapping, "log.syslog.ident", "lager.handlers", [ - {default, "stanchion"}, - hidden -]}. - -%% @doc Syslog facility to log entries from Stanchion. -{mapping, "log.syslog.facility", "lager.handlers", [ - {default, daemon}, - {datatype, {enum,[kern, user, mail, daemon, auth, syslog, - lpr, news, uucp, clock, authpriv, ftp, - cron, local0, local1, local2, local3, - local4, local5, local6, local7]}}, - hidden -]}. - -%% @doc The severity level at which to log entries to syslog, default is 'info'. -{mapping, "log.syslog.level", "lager.handlers", [ - {default, info}, - {datatype, {enum, [debug, info, notice, warning, error, critical, alert, emergency, none]}}, - hidden -]}. - -{translation, - "lager.handlers", - fun(Conf) -> - SyslogHandler = case cuttlefish:conf_get("log.syslog", Conf) of - true -> - Ident = cuttlefish:conf_get("log.syslog.ident", Conf), - Facility = cuttlefish:conf_get("log.syslog.facility", Conf), - LogLevel = cuttlefish:conf_get("log.syslog.level", Conf), - [{lager_syslog_backend, [Ident, Facility, LogLevel]}]; - _ -> [] - end, - - TranslateKeep = fun(current) -> 0; - (Int) -> Int - end, - ErrorHandler = case cuttlefish:conf_get("log.error.file", Conf) of - undefined -> []; - ErrorLogFilename -> - ErrorLogRotation = cuttlefish:conf_get("log.error.rotation", Conf), - ErrorLogRotationKeep = TranslateKeep(cuttlefish:conf_get("log.error.rotation.keep", Conf)), - - ErrorLogSize = cuttlefish:conf_get("log.error.size", Conf), - [{lager_file_backend, [{file, ErrorLogFilename}, - {level, error}, - {size, ErrorLogSize}, - {date, ErrorLogRotation}, - {count, ErrorLogRotationKeep}]}] - end, - - ConsoleLogLevel = cuttlefish:conf_get("log.console.level", Conf), - ConsoleLogFile = cuttlefish:conf_get("log.console.file", Conf), - ConsoleLogSize = cuttlefish:conf_get("log.console.size", Conf), - ConsoleLogRotation = cuttlefish:conf_get("log.console.rotation", Conf), - ConsoleLogRotationKeep = TranslateKeep(cuttlefish:conf_get("log.console.rotation.keep", Conf)), - - ConsoleHandler = {lager_console_backend, ConsoleLogLevel}, - ConsoleFileHandler = {lager_file_backend, [{file, ConsoleLogFile}, - {level, ConsoleLogLevel}, - {size, ConsoleLogSize}, - {date, ConsoleLogRotation}, - {count, ConsoleLogRotationKeep}]}, - - ConsoleHandlers = case cuttlefish:conf_get("log.console", Conf) of - off -> []; - file -> [ConsoleFileHandler]; - console -> [ConsoleHandler]; - both -> [ConsoleHandler, ConsoleFileHandler]; - _ -> [] - end, - SyslogHandler ++ ConsoleHandlers ++ ErrorHandler - end -}. - - -%% @doc Whether to enable Erlang's built-in error logger. -{mapping, "sasl", "sasl.sasl_error_logger", [ - {default, off}, - {datatype, flag}, - hidden -]}. - -%% @doc Whether to enable the crash log. -{mapping, "log.crash", "lager.crash_log", [ - {default, on}, - {datatype, flag} -]}. - -%% @doc If the crash log is enabled, the file where its messages will -%% be written. -{mapping, "log.crash.file", "lager.crash_log", [ - {default, "$(platform_log_dir)/crash.log"}, - {datatype, file} -]}. - -{translation, - "lager.crash_log", - fun(Conf) -> - case cuttlefish:conf_get("log.crash", Conf) of - false -> undefined; - _ -> - cuttlefish:conf_get("log.crash.file", Conf, "{{platform_log_dir}}/crash.log") - end - end}. - -%% @doc Maximum size in bytes of individual messages in the crash log -{mapping, "log.crash.maximum_message_size", "lager.crash_log_msg_size", [ - {default, "64KB"}, - {datatype, bytesize} -]}. - -%% @doc Maximum size of the crash log in bytes, before it is rotated -{mapping, "log.crash.size", "lager.crash_log_size", [ - {default, "10MB"}, - {datatype, bytesize} -]}. - -%% @doc The schedule on which to rotate the crash log. For more -%% information see: -%% https://github.com/basho/lager/blob/master/README.md#internal-log-rotation -{mapping, "log.crash.rotation", "lager.crash_log_date", [ - {default, "$D0"} -]}. - -%% @doc The number of rotated crash logs to keep. When set to -%% 'current', only the current open log file is kept. -{mapping, "log.crash.rotation.keep", "lager.crash_log_count", [ - {default, 5}, - {datatype, [integer, {atom, current}]}, - {validators, ["rotation_count"]} -]}. - -{validator, - "rotation_count", - "must be 'current' or a positive integer", - fun(current) -> true; - (Int) when is_integer(Int) andalso Int >= 0 -> true; - (_) -> false - end}. - -{translation, - "lager.crash_log_count", - fun(Conf) -> - case cuttlefish:conf_get("log.crash.rotation.keep", Conf) of - current -> 0; - Int -> Int - end - end}. - -%% @doc Whether to redirect error_logger messages into lager - -%% defaults to true -{mapping, "log.error.redirect", "lager.error_logger_redirect", [ - {default, on}, - {datatype, flag}, - hidden -]}. - -%% @doc Maximum number of error_logger messages to handle in a second -{mapping, "log.error.messages_per_second", "lager.error_logger_hwm", [ - {default, 100}, - {datatype, integer}, - hidden -]}. - -%% == Supercluster aka Multi-bug Support == - -%% @doc IP and port for supercluster members. Specify one member for -%% each line, in which the last token of key is member identifier and -%% value is a PB address of Riak node to connect. -{mapping, "supercluster.member.$member_id", "stanchion.supercluster_members", [ - {datatype, ip}, - {include_default, "bag-A"}, - {commented, {"192.168.0.101", 8087}}, - hidden -]}. - -{translation, - "stanchion.supercluster_members", - fun(Conf) -> - Keys = cuttlefish_variable:fuzzy_matches(["supercluster", "member", "$member_id"], Conf), - case Keys of - [] -> undefined; - [_|_] -> [begin - {Host, Port} = cuttlefish:conf_get( - "supercluster.member." ++ MemberId, Conf), - {MemberId, Host, Port} - end || {Key, MemberId} <- Keys] - end - end -}. - -%% @doc Cookie for distributed node communication. All nodes in the -%% same cluster should use the same cookie or they will not be able to -%% communicate. -{mapping, "distributed_cookie", "vm_args.-setcookie", [ - {default, "riak"} -]}. - - -%% VM scheduler collapse, part 1 of 2 -{mapping, "erlang.schedulers.force_wakeup_interval", "vm_args.+sfwi", [ - {default, 500}, - {datatype, integer}, - merge -]}. - -%% VM scheduler collapse, part 2 of 2 -{mapping, "erlang.schedulers.compaction_of_load", "vm_args.+scl", [ - {default, "false"}, - merge -]}. - -{{#devrel}} -%% @doc erlang vm shutdown_time is useful when running a riak_test devrel -{mapping, "erlang.shutdown_time", "vm_args.-shutdown_time", [ - {default, "10s"}, - {datatype, {duration, ms}} -]}. -{{/devrel}} diff --git a/rel/vars.config b/rel/vars.config index b0a11265e..ac72db95d 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -26,19 +26,15 @@ {stanchion_ip, "127.0.0.1"}. {stanchion_port, 8085}. {stanchion_ssl, off}. -{cs_version, 030000}. +{cs_version, 030100}. +{stanchion_version, 030100}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -%% relocatable releases don't call the launcher script, because -%% launcher script requires a riak_cs user to exist. -%%{pipe_dir, "$PLATFORM_BASE_DIR/tmp/riak-cs"}. -%%{pid_dir, "$PLATFORM_BASE_DIR/var/run/riak-cs"}. - -{console_log_default, file}. +{log_level, info}. {cuttlefish, "on"}. {cuttlefish_conf, "riak-cs.conf"}. From 010bcb825ee8575098f23889080a447caf6af015 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 22 Oct 2022 23:44:16 +0300 Subject: [PATCH 335/831] future-proof calls to crypto functions --- apps/riak_cs/src/riak_cs_json.erl | 1 + apps/riak_cs/src/riak_cs_user.erl | 18 +++++++++--------- apps/stanchion/src/stanchion_utils.erl | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_json.erl b/apps/riak_cs/src/riak_cs_json.erl index 134e867ac..16922f75c 100644 --- a/apps/riak_cs/src/riak_cs_json.erl +++ b/apps/riak_cs/src/riak_cs_json.erl @@ -42,6 +42,7 @@ -type external_node() :: {atom(), [string()]}. -type internal_node() :: {atom(), [internal_node() | external_node()]} | {atom(), attributes(), [internal_node() | external_node()]}. +-export_type([attributes/0, external_node/0, internal_node/0]). %% =================================================================== %% Public API diff --git a/apps/riak_cs/src/riak_cs_user.erl b/apps/riak_cs/src/riak_cs_user.erl index 32e888333..85cb098e5 100644 --- a/apps/riak_cs/src/riak_cs_user.erl +++ b/apps/riak_cs/src/riak_cs_user.erl @@ -264,21 +264,21 @@ generate_canonical_id(KeyID) -> %% @doc Generate an access key for a user -spec generate_key(binary()) -> [byte()]. generate_key(UserName) -> - Ctx = crypto:hmac_init(sha, UserName), - Ctx1 = crypto:hmac_update(Ctx, uuid:get_v4()), - Key = crypto:hmac_final_n(Ctx1, 15), + Ctx = crypto:mac_init(hmac, sha, UserName), + Ctx1 = crypto:mac_update(Ctx, uuid:get_v4()), + Key = crypto:mac_finalN(Ctx1, 15), string:to_upper(base64url:encode_to_string(Key)). %% @doc Generate a secret access token for a user -spec generate_secret(binary(), string()) -> iodata(). generate_secret(UserName, Key) -> Bytes = 14, - Ctx = crypto:hmac_init(sha, UserName), - Ctx1 = crypto:hmac_update(Ctx, list_to_binary(Key)), - SecretPart1 = crypto:hmac_final_n(Ctx1, Bytes), - Ctx2 = crypto:hmac_init(sha, UserName), - Ctx3 = crypto:hmac_update(Ctx2, uuid:get_v4()), - SecretPart2 = crypto:hmac_final_n(Ctx3, Bytes), + Ctx = crypto:mac_init(hmac, sha, UserName), + Ctx1 = crypto:mac_update(Ctx, list_to_binary(Key)), + SecretPart1 = crypto:mac_finalN(Ctx1, Bytes), + Ctx2 = crypto:mac_init(hmac, sha, UserName), + Ctx3 = crypto:mac_update(Ctx2, uuid:get_v4()), + SecretPart2 = crypto:mac_finalN(Ctx3, Bytes), base64url:encode_to_string( iolist_to_binary(<< SecretPart1:Bytes/binary, SecretPart2:Bytes/binary >>)). diff --git a/apps/stanchion/src/stanchion_utils.erl b/apps/stanchion/src/stanchion_utils.erl index 1f6d13239..13fb65c3e 100644 --- a/apps/stanchion/src/stanchion_utils.erl +++ b/apps/stanchion/src/stanchion_utils.erl @@ -405,7 +405,7 @@ update_user(KeyId, UserFields) -> sha_mac(KeyData, STS) -> - crypto:hmac(sha, KeyData, STS). + crypto:mac(hmac, sha, KeyData, STS). md5(Bin) -> crypto:hash(md5, Bin). From 37def6b9a4abc038720662c303c3d21503ce3eab Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 22 Oct 2022 23:54:24 +0300 Subject: [PATCH 336/831] update deps --- rebar.config | 7 +++-- rebar.lock | 82 +++++++++++++++++++--------------------------------- 2 files changed, 34 insertions(+), 55 deletions(-) diff --git a/rebar.config b/rebar.config index 12ed8d25c..6260a8386 100644 --- a/rebar.config +++ b/rebar.config @@ -20,10 +20,11 @@ }. {deps, [ {getopt, "v1.0.2"} + , {parse_trans, "3.4.1"} , {webmachine, "1.11.1"} - , {mochiweb, "v2.20.1"} - , {exometer_core, "v1.5.7"} - , {uuid, {git, "https://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} + , {mochiweb, "3.1.1"} + , {uuid, "2.0.5", {pkg, uuid_erl}} + , {exometer_core, "1.6.1"} , {riakc, {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.8+p1"}}} , {poolboy, {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} diff --git a/rebar.lock b/rebar.lock index e455d9c4c..699e8b6d9 100644 --- a/rebar.lock +++ b/rebar.lock @@ -1,28 +1,19 @@ {"1.2.0", -[{<<"bear">>,{pkg,<<"bear">>,<<"0.8.7">>},2}, +[{<<"bear">>,{pkg,<<"bear">>,<<"1.0.0">>},2}, {<<"cluster_info">>, {git,"https://github.com/basho/cluster_info", {ref,"389d43af7ac1550b3c01cd55b8147bcc0e20022f"}}, 0}, - {<<"exometer_core">>,{pkg,<<"exometer_core">>,<<"1.5.7">>},0}, - {<<"folsom">>,{pkg,<<"folsom">>,<<"0.8.7">>},1}, + {<<"exometer_core">>,{pkg,<<"exometer_core">>,<<"1.6.1">>},0}, + {<<"folsom">>,{pkg,<<"folsom">>,<<"1.0.0">>},1}, {<<"getopt">>,{pkg,<<"getopt">>,<<"1.0.2">>},0}, - {<<"goldrush">>,{pkg,<<"goldrush">>,<<"0.1.9">>},2}, - {<<"hut">>,{pkg,<<"hut">>,<<"1.2.1">>},1}, - {<<"lager">>, - {git,"https://github.com/erlang-lager/lager.git", - {ref,"22e62f28e5afabe90a6f31bcde367a2b5799fc94"}}, - 1}, - {<<"lager_syslog">>, - {git,"https://github.com/TI-Tokyo/lager_syslog.git", - {ref,"e9117a7e54de35c714fa8d1e6c054854c7c697df"}}, - 0}, + {<<"hut">>,{pkg,<<"hut">>,<<"1.3.0">>},1}, {<<"meck">>, {git,"https://github.com/eproxus/meck.git", {ref,"4ecc1ae9089edc6977e8c8c4cd41081513cc5590"}}, 2}, - {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"2.20.1">>},0}, - {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.0">>},0}, + {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"3.1.1">>},0}, + {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.4.1">>},0}, {<<"poolboy">>, {git,"https://github.com/basho/poolboy", {ref,"032ea3186fda78b4913deb8932af318ebb9b1258"}}, @@ -31,18 +22,7 @@ {git,"https://github.com/basho/erlang_protobuffs.git", {ref,"098efad8f85dfe556d64e2cf6ce31f2075808f67"}}, 1}, - {<<"quickrand">>, - {git,"https://github.com/okeuday/quickrand.git", - {ref,"c80077162f32c10002219f70e0afadb71e05f88c"}}, - 1}, - {<<"rcs_common">>, - {git,"https://github.com/TI-Tokyo/rcs_common.git", - {ref,"d0443b2892cbb6e38e4478e14c429a93de26fd2f"}}, - 0}, - {<<"riak_cs_multibag">>, - {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", - {ref,"0894619b1a0e91bda97808b1a402d52c237590f0"}}, - 0}, + {<<"quickrand">>,{pkg,<<"quickrand">>,<<"2.0.5">>},1}, {<<"riak_pb">>, {git,"https://github.com/basho/riak_pb.git", {ref,"b7abca90e4c708073021d2c4e18c896f1a10b838"}}, @@ -55,37 +35,35 @@ {git,"https://github.com/basho/riak-erlang-client", {ref,"d9fa46335fda4704fda71cbc011ab6a11e50e3f3"}}, 0}, - {<<"setup">>,{pkg,<<"setup">>,<<"2.0.2">>},1}, - {<<"syslog">>, - {git,"https://github.com/TI-Tokyo/erlang-syslog", - {ref,"14bef508623260a78563d529ccd08e9c259b839e"}}, - 1}, - {<<"uuid">>, - {git,"https://github.com/okeuday/uuid.git", - {ref,"9312cc158a94c76e40c82ca45fd5056fb191c889"}}, - 0}, + {<<"setup">>,{pkg,<<"setup">>,<<"2.1.0">>},1}, + {<<"uuid">>,{pkg,<<"uuid_erl">>,<<"2.0.5">>},0}, + {<<"uuid_erl">>,{pkg,<<"uuid_erl">>,<<"2.0.5">>},0}, {<<"webmachine">>,{pkg,<<"webmachine">>,<<"1.11.1">>},0}]}. [ {pkg_hash,[ - {<<"bear">>, <<"16264309AE5D005D03718A5C82641FCC259C9E8F09ADEB6FD79CA4271168656F">>}, - {<<"exometer_core">>, <<"AB97E34A5D69AB14E6AE161DB4CCA5B5E655E635B842F830EE6AB2CBFCFDC30A">>}, - {<<"folsom">>, <<"A885F0AEEE4C84270954C88A55A5A473D6B2C7493E32FFDC5765412DD555A951">>}, + {<<"bear">>, <<"430419C1126B477686CDE843E88BA0F2C7DC5CDF0881C677500074F704339A99">>}, + {<<"exometer_core">>, <<"742ED00E1F10F8BEFF61A0F43E105C78C2F982E10F1C4E740D59DF89924C65EA">>}, + {<<"folsom">>, <<"50ECC998D2149939F1D5E0AA3E32788F8ED16A58E390D81B5C0BE4CC4EF25589">>}, {<<"getopt">>, <<"33D9B44289FE7AD08627DDFE1D798E30B2DA0033B51DA1B3A2D64E72CD581D02">>}, - {<<"goldrush">>, <<"F06E5D5F1277DA5C413E84D5A2924174182FB108DABB39D5EC548B27424CD106">>}, - {<<"hut">>, <<"08D46679523043424870723923971889E8A34D63B2F946A35B46CF921D1236E7">>}, - {<<"mochiweb">>, <<"E4DBD0ED716F076366ECF62ADA5755A844E1D95C781E8C77DF1D4114BE868CDF">>}, - {<<"parse_trans">>, <<"09765507A3C7590A784615CFD421D101AEC25098D50B89D7AA1D66646BC571C1">>}, - {<<"setup">>, <<"1203F4CDA11306C2E34434244576DED0A7BBFB0908D9A572356C809BD0CDF085">>}, + {<<"hut">>, <<"71F2F054E657C03F959CF1ACC43F436EA87580696528CA2A55C8AFB1B06C85E7">>}, + {<<"mochiweb">>, <<"C628CC4518A3CA0F2FB6B8973DCBDC9135635F834B64AEE846337583AFD42084">>}, + {<<"parse_trans">>, <<"6E6AA8167CB44CC8F39441D05193BE6E6F4E7C2946CB2759F015F8C56B76E5FF">>}, + {<<"quickrand">>, <<"06FCAD85CB47D5C85C51D6BC9C84A082501BA098A89D64AD0A2F69599E034C04">>}, + {<<"setup">>, <<"05F69185A5EB71474C9BC6BA892565651EC7507791F85632B7B914DBFE130510">>}, + {<<"uuid">>, <<"60FAEEB7EDFD40847ED13CB0DD1044BAABE4E79A00C0CA9C4D13A073914B1016">>}, + {<<"uuid_erl">>, <<"60FAEEB7EDFD40847ED13CB0DD1044BAABE4E79A00C0CA9C4D13A073914B1016">>}, {<<"webmachine">>, <<"422BEAD629F3D6C10FB0F24BE4CEE9648338F90099072AE091FADF86BA70C53F">>}]}, {pkg_hash_ext,[ - {<<"bear">>, <<"534217DCE6A719D59E54FB0EB7A367900DBFC5F85757E8C1F94269DF383F6D9B">>}, - {<<"exometer_core">>, <<"6AFBD8F6B1AAF7443D6A5A05BBBCD15285622353550F3077C87176E25BE99C1E">>}, - {<<"folsom">>, <<"F7B644FC002A75AF00B8BFBD3CC5C2BD955E09A118D2982D9A6C04E5646FF367">>}, + {<<"bear">>, <<"157B67901ADF84FF0DA6EAE035CA1292A0AC18AA55148154D8C582B2C68959DB">>}, + {<<"exometer_core">>, <<"EC1AF0A961F29B3854F61B594C79454D26AC7B1F6CB89BBF0688BFF65F6A6D6B">>}, + {<<"folsom">>, <<"DD6AB97278E94F9E4CFC43E188224A7B8C7EAEC0DD2E935007005177F3EEBB0E">>}, {<<"getopt">>, <<"A0029AEA4322FB82A61F6876A6D9C66DC9878B6CB61FAA13DF3187384FD4EA26">>}, - {<<"goldrush">>, <<"99CB4128CFFCB3227581E5D4D803D5413FA643F4EB96523F77D9E6937D994CEB">>}, - {<<"hut">>, <<"953FC447514BAF9CC79FA147D66469243C94DFA1593779614E070C692D0BF0F3">>}, - {<<"mochiweb">>, <<"D1AEEE7870470D2FA9EAE0B3D5AB6C33801AA2D82B10E9DADE885C5C921B36AA">>}, - {<<"parse_trans">>, <<"17EF63ABDE837AD30680EA7F857DD9E7CED9476CDD7B0394432AF4BFC241B960">>}, - {<<"setup">>, <<"7D6AAF5281D0B0C40980E128F9DC410DACD03799A8577201D4C8B43E7F97509A">>}, + {<<"hut">>, <<"7E15D28555D8A1F2B5A3A931EC120AF0753E4853A4C66053DB354F35BF9AB563">>}, + {<<"mochiweb">>, <<"8B5ECFECC26D5D083F9BEC5CE969D717676B6A4FACBDF5915E0498CDFE035A26">>}, + {<<"parse_trans">>, <<"620A406CE75DADA827B82E453C19CF06776BE266F5A67CFF34E1EF2CBB60E49A">>}, + {<<"quickrand">>, <<"252CF0493570EBF1A58985CB71990982CDDCD4396B6427F1E10CF58924C1C052">>}, + {<<"setup">>, <<"EFD072578F0CF85BEA96CAAFFC7ADB0992398272522660A136E10567377071C5">>}, + {<<"uuid">>, <<"E54373262CA88401689277947C54B95E9ECBC977BD5C57C9DD44AD9DA278E360">>}, + {<<"uuid_erl">>, <<"E54373262CA88401689277947C54B95E9ECBC977BD5C57C9DD44AD9DA278E360">>}, {<<"webmachine">>, <<"4914961217736701CADA1345D7C79C6DB50A636CF7BC6C757DE923B7C7D70B21">>}]} ]. From 1d00f453aa8fca4a37167fa1610761774f25f325 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 22 Oct 2022 23:55:04 +0300 Subject: [PATCH 337/831] assorted generally useful touchups --- .gitignore | 2 +- apps/riak_cs/src/riak_cs.app.src | 2 +- rebar.config | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 442b40b7e..5576dd63e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ _build/ +_checkouts/ log/ rel/riak-cs dev/ *-riak-cs-debug.tar.gz -.local_dialyzer_plt diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index 5ce99041a..3c45dab89 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -23,7 +23,7 @@ {application, riak_cs, [ {description, "riak_cs"}, - {vsn, "3.1.0"}, + {vsn, "3.1"}, {modules, []}, {registered, []}, {applications, diff --git a/rebar.config b/rebar.config index 6260a8386..d28143e9d 100644 --- a/rebar.config +++ b/rebar.config @@ -34,7 +34,7 @@ }. -{relx, [ {release, {'riak-cs', "3.0.0"}, +{relx, [ {release, {'riak-cs', "3.1"}, [ sasl , riak_cs , stanchion @@ -196,6 +196,7 @@ , {disable_bin_scripts, true} , {schema_discovery, true} , {schema_order, [ riak_cs + , stanchion , erlang_vm ]} ] @@ -206,5 +207,3 @@ [ {del, meck, [{erl_opts, [warnings_as_errors]}]} ] }. - -{dialyzer, [{plt_apps, all_deps}]}. From 099a9d270cd4a7b6fc644158a6b969f911a3cb29 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 23 Oct 2022 14:34:46 +0300 Subject: [PATCH 338/831] more fixups in schemas --- priv/riak_cs.schema | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/priv/riak_cs.schema b/priv/riak_cs.schema index daacdd73d..4fe36f4b6 100644 --- a/priv/riak_cs.schema +++ b/priv/riak_cs.schema @@ -44,14 +44,14 @@ %% with the ssl config variable, for example: {mapping, "ssl.certfile", "riak_cs.ssl.certfile", [ {datatype, file}, - {commented, "$(platform_etc_dir)/cert.pem"} + {commented, "{{platform_etc_dir}}/cert.pem"} ]}. %% @doc Default key location for https can be overridden with the ssl %% config variable, for example: {mapping, "ssl.keyfile", "riak_cs.ssl.keyfile", [ {datatype, file}, - {commented, "$(platform_etc_dir)/key.pem"} + {commented, "{{platform_etc_dir}}/key.pem"} ]}. %% @doc Enable this to allow the creation of an admin user when @@ -344,7 +344,7 @@ %% @doc Access log directory. {mapping, "log.access.dir", "webmachine.log_handlers", [ - {default, "$(platform_log_dir)" }, + {default, "{{platform_log_dir}}" }, {datatype, string} ]}. @@ -451,7 +451,7 @@ %% @doc Filename to use for log files. {mapping, "logger.file", "kernel.logger", [ - {default, "$(platform_log_dir)/console.log"}, + {default, "{{platform_log_dir}}/console.log"}, {datatype, file} ]}. @@ -504,7 +504,7 @@ %% @doc Filename to use for SASL reports. {mapping, "logger.sasl.file", "kernel.logger", [ - {default, "$(platform_log_dir)/reports.log"}, + {default, "{{platform_log_dir}}/reports.log"}, {datatype, file} ]}. From 7ce355430ed2ebc4b62b2000e4a52e1515d8d819 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 23 Oct 2022 14:56:29 +0300 Subject: [PATCH 339/831] set and read stanchion application env keys correctly after merge --- apps/stanchion/src/stanchion_app.erl | 4 ++-- apps/stanchion/src/stanchion_sup.erl | 2 +- apps/stanchion/src/stanchion_utils.erl | 6 +++--- priv/stanchion.schema | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/stanchion/src/stanchion_app.erl b/apps/stanchion/src/stanchion_app.erl index a367a71b4..ba02411c1 100644 --- a/apps/stanchion/src/stanchion_app.erl +++ b/apps/stanchion/src/stanchion_app.erl @@ -66,13 +66,13 @@ stop(_State) -> ok. check_admin_creds(Pid) -> - case application:get_env(stanchion, admin_key) of + case application:get_env(riak_cs, admin_key) of {ok, "admin-key"} -> logger:warning("admin.key is defined as default. Please create" " admin user and configure it.", []), application:set_env(stanchion, admin_secret, "admin-secret"); {ok, KeyId} -> - case application:get_env(stanchion, admin_secret) of + case application:get_env(riak_cs, admin_secret) of {ok, _} -> logger:warning("admin.secret is ignored."); _ -> diff --git a/apps/stanchion/src/stanchion_sup.erl b/apps/stanchion/src/stanchion_sup.erl index 3373761aa..20775a431 100644 --- a/apps/stanchion/src/stanchion_sup.erl +++ b/apps/stanchion/src/stanchion_sup.erl @@ -46,7 +46,7 @@ start_link() -> -spec init([]) -> {ok, {supervisor:sup_flags(), [supervisor:child_spec()]}} | ignore. init([]) -> - {Ip, Port} = case application:get_env(stanchion, host) of + {Ip, Port} = case application:get_env(stanchion, listener) of {ok, {_, _} = HostPort} -> HostPort; undefined -> {"0.0.0.0", 80} end, diff --git a/apps/stanchion/src/stanchion_utils.erl b/apps/stanchion/src/stanchion_utils.erl index 13fb65c3e..2fbf27b36 100644 --- a/apps/stanchion/src/stanchion_utils.erl +++ b/apps/stanchion/src/stanchion_utils.erl @@ -165,9 +165,9 @@ from_bucket_name(BucketNameWithPrefix) -> %% @doc Return the credentials of the admin user -spec get_admin_creds() -> {ok, {string(), string()}} | {error, term()}. get_admin_creds() -> - case application:get_env(stanchion, admin_key) of + case application:get_env(riak_cs, admin_key) of {ok, KeyId} -> - case application:get_env(stanchion, admin_secret) of + case application:get_env(riak_cs, admin_secret) of {ok, Secret} -> {ok, {KeyId, Secret}}; undefined -> @@ -297,7 +297,7 @@ replace_meta(Key, NewValue, MetaVals) -> -type riak_connect_failed() :: {riak_connect_failed, tuple()}. -spec riak_connection() -> {ok, pid()} | {error, riak_connect_failed()}. riak_connection() -> - {Host, Port} = case application:get_env(stanchion, riak_host) of + {Host, Port} = case application:get_env(riak_cs, riak_host) of {ok, {_, _} = HostPort} -> HostPort; undefined -> {"127.0.0.1", 8087} end, diff --git a/priv/stanchion.schema b/priv/stanchion.schema index 4f94da5cc..5af1698e6 100644 --- a/priv/stanchion.schema +++ b/priv/stanchion.schema @@ -11,7 +11,7 @@ ]}. %% @doc listen port and IP address -{mapping, "stanchion_listener", "stanchion.host", [ +{mapping, "stanchion_listener", "stanchion.listener", [ {default, {"{{stanchion_ip}}" , {{stanchion_port}} }}, {datatype, ip}, {validators, ["valid_host"]} From 6306e9bc5f174aae4c0bee525a21f65e267cb251 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 31 Oct 2022 14:26:38 +0200 Subject: [PATCH 340/831] disband stanchion app, adopt its sup tree into riak_cs_sup --- RELEASE-NOTES.md | 10 + .../include/stanchion.hrl | 0 apps/riak_cs/src/riak_cs.app.src | 3 +- apps/riak_cs/src/riak_cs_sup.erl | 93 ++++++++-- .../src/stanchion_acl_utils.erl | 0 .../src/stanchion_auth.erl | 0 .../src/stanchion_blockall_auth.erl | 0 .../src/stanchion_console.erl | 0 .../src/stanchion_multipart.erl | 0 .../src/stanchion_passthru_auth.erl | 0 .../src/stanchion_response.erl | 0 .../src/stanchion_server.erl | 0 .../src/stanchion_server_sup.erl | 0 .../src/stanchion_stats.erl | 0 .../src/stanchion_utils.erl | 0 .../src/stanchion_web.erl | 2 +- .../src/stanchion_wm_acl.erl | 0 .../src/stanchion_wm_bucket.erl | 0 .../src/stanchion_wm_buckets.erl | 0 .../src/stanchion_wm_error_handler.erl | 0 .../src/stanchion_wm_policy.erl | 0 .../src/stanchion_wm_stats.erl | 0 .../src/stanchion_wm_user.erl | 0 .../src/stanchion_wm_users.erl | 0 .../src/stanchion_wm_utils.erl | 0 .../src/stanchion_wm_versioning.erl | 0 apps/stanchion/src/stanchion.app.src | 28 --- apps/stanchion/src/stanchion_app.erl | 101 ---------- apps/stanchion/src/stanchion_sup.erl | 92 ---------- apps/stanchion/test/stanchion_config_test.erl | 31 ---- priv/riak_cs.schema | 57 +++++- priv/stanchion.schema | 25 --- rebar.config | 2 - rebar.docker.config | 2 - rel/files/app_epath.sh | 172 ------------------ rel/vars.config | 2 +- rel/vars/dev_vars.config.src | 17 +- 37 files changed, 157 insertions(+), 480 deletions(-) rename apps/{stanchion => riak_cs}/include/stanchion.hrl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_acl_utils.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_auth.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_blockall_auth.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_console.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_multipart.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_passthru_auth.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_response.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_server.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_server_sup.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_stats.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_utils.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_web.erl (96%) rename apps/{stanchion => riak_cs}/src/stanchion_wm_acl.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_wm_bucket.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_wm_buckets.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_wm_error_handler.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_wm_policy.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_wm_stats.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_wm_user.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_wm_users.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_wm_utils.erl (100%) rename apps/{stanchion => riak_cs}/src/stanchion_wm_versioning.erl (100%) delete mode 100644 apps/stanchion/src/stanchion.app.src delete mode 100644 apps/stanchion/src/stanchion_app.erl delete mode 100644 apps/stanchion/src/stanchion_sup.erl delete mode 100644 apps/stanchion/test/stanchion_config_test.erl delete mode 100644 priv/stanchion.schema delete mode 100644 rel/files/app_epath.sh diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index fd1097a25..4634e9995 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,13 @@ +# Riak CS 3.1.0 Release Notes + +Released Momtomber 11, 2023. + +## General + +* Stanchion is merged into riak_cs. +* De-lager-ification. + + # Riak CS 3.0.1 Release Notes Released June 10, 2022. diff --git a/apps/stanchion/include/stanchion.hrl b/apps/riak_cs/include/stanchion.hrl similarity index 100% rename from apps/stanchion/include/stanchion.hrl rename to apps/riak_cs/include/stanchion.hrl diff --git a/apps/riak_cs/src/riak_cs.app.src b/apps/riak_cs/src/riak_cs.app.src index 3c45dab89..07a91bfed 100644 --- a/apps/riak_cs/src/riak_cs.app.src +++ b/apps/riak_cs/src/riak_cs.app.src @@ -40,8 +40,7 @@ exometer_core, riakc, riak_repl_pb_api, - riak_cs_multibag, - stanchion + riak_cs_multibag ]}, {mod, {riak_cs_app, []}}, {env, diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index 010d8787d..f1421e9bf 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -38,6 +38,7 @@ admin_listener, ssl, admin_ssl, + {operation_mode, auto}, {rewrite_module, ?S3_API_MOD}]). -type startlink_err() :: {'already_started', pid()} | 'shutdown' | term(). @@ -58,17 +59,42 @@ start_link() -> [supervisor:child_spec()]}}. init([]) -> catch dyntrace:p(), % NIF load trigger (R15B01+) - riak_cs_stats:init(), Options = [get_option_val(Option) || Option <- ?OPTIONS], - PoolSpecs = pool_specs(Options), - application:set_env(webmachine, rewrite_module, proplists:get_value(rewrite_module, Options)), + init2(Options). + +init2(Options) -> + Mode = proplists:get_value(operation_mode, Options), + RCSChildren = + case Mode of + M when M == auto; + M == riak_cs_only -> + riak_cs_stats:init(), + application:set_env(webmachine, rewrite_module, + proplists:get_value(rewrite_module, Options)), + pool_specs(Options) ++ rcs_process_specs() ++ web_specs(Options); + _ -> + [] + end, + StanchionChildren = + case Mode of + stanchion_only -> + stanchion_stats:init(), + stanchion_process_specs(); + auto -> + case do_we_get_to_run_stanchion() of + true -> + stanchion_stats:init(), + stanchion_process_specs(); + false -> + [] + end + end, {ok, {#{strategy => one_for_one, intensity => 10, - period => 10}, - PoolSpecs ++ process_specs() ++ web_specs(Options)}}. + period => 10}, RCSChildren ++ StanchionChildren + }}. --spec process_specs() -> [supervisor:child_spec()]. -process_specs() -> +rcs_process_specs() -> [ #{id => riak_cs_access_archiver_manager, start => {riak_cs_access_archiver_manager, start_link, []}}, @@ -101,18 +127,63 @@ process_specs() -> #{id => riak_cs_quota_sup, start => {riak_cs_quota_sup, start_link, []}, - modules => dynamic}] - + modules => dynamic} + ] ++ riak_cs_mb_helper:process_specs(). +stanchion_process_specs() -> + {Ip, Port} = case application:get_env(riak_cs, stanchion_listener) of + {ok, {_, _} = HostPort} -> HostPort; + undefined -> {"0.0.0.0", 80} + end, + + %% Hide any bags from user-facing parts. + case application:get_env(riak_cs, supercluster_members) of + undefined -> ok; + {ok, Bags} -> application:set_env(riak_cs, bags, Bags) + end, + + WebConfig1 = [ + {dispatch, stanchion_web:dispatch_table()}, + {ip, Ip}, + {port, Port}, + {nodelay, true}, + {log_dir, "log"}, + %% {rewrite_module, stanchion_wm_rewrite}, + {error_handler, stanchion_wm_error_handler} + ], + WebConfig = + case application:get_env(riak_cs, stanchion_ssl) of + {ok, true} -> + {ok, CF} = application:get_env(riak_cs, stanchion_ssl_certfile), + {ok, KF} = application:get_env(riak_cs, stanchion_ssl_keyfile), + WebConfig1 ++ [{ssl, true}, + {ssl_opts, [{certfile, CF}, {keyfile, KF}]}]; + {ok, false} -> + WebConfig1 + end, + Web = #{id => webmachine_mochiweb, + start => {webmachine_mochiweb, start, [WebConfig]}, + restart => permanent, + shutdown => 5000, + modules => dynamic}, + ServerSup = #{id => stanchion_server_sup, + start => {stanchion_server_sup, start_link, []}, + restart => permanent, + shutdown => 5000, + modules => dynamic}, + [ServerSup, Web]. + + +do_we_get_to_run_stanchion() -> + logger:info("Do we get to run stanchion? yes"), + true. --spec get_option_val({atom(), term()} | atom()) -> {atom(), term()}. get_option_val({Option, Default}) -> handle_get_env_result(Option, get_env(Option), Default); get_option_val(Option) -> get_option_val({Option, undefined}). --spec get_env(atom()) -> 'undefined' | {ok, term()}. get_env(Key) -> application:get_env(riak_cs, Key). diff --git a/apps/stanchion/src/stanchion_acl_utils.erl b/apps/riak_cs/src/stanchion_acl_utils.erl similarity index 100% rename from apps/stanchion/src/stanchion_acl_utils.erl rename to apps/riak_cs/src/stanchion_acl_utils.erl diff --git a/apps/stanchion/src/stanchion_auth.erl b/apps/riak_cs/src/stanchion_auth.erl similarity index 100% rename from apps/stanchion/src/stanchion_auth.erl rename to apps/riak_cs/src/stanchion_auth.erl diff --git a/apps/stanchion/src/stanchion_blockall_auth.erl b/apps/riak_cs/src/stanchion_blockall_auth.erl similarity index 100% rename from apps/stanchion/src/stanchion_blockall_auth.erl rename to apps/riak_cs/src/stanchion_blockall_auth.erl diff --git a/apps/stanchion/src/stanchion_console.erl b/apps/riak_cs/src/stanchion_console.erl similarity index 100% rename from apps/stanchion/src/stanchion_console.erl rename to apps/riak_cs/src/stanchion_console.erl diff --git a/apps/stanchion/src/stanchion_multipart.erl b/apps/riak_cs/src/stanchion_multipart.erl similarity index 100% rename from apps/stanchion/src/stanchion_multipart.erl rename to apps/riak_cs/src/stanchion_multipart.erl diff --git a/apps/stanchion/src/stanchion_passthru_auth.erl b/apps/riak_cs/src/stanchion_passthru_auth.erl similarity index 100% rename from apps/stanchion/src/stanchion_passthru_auth.erl rename to apps/riak_cs/src/stanchion_passthru_auth.erl diff --git a/apps/stanchion/src/stanchion_response.erl b/apps/riak_cs/src/stanchion_response.erl similarity index 100% rename from apps/stanchion/src/stanchion_response.erl rename to apps/riak_cs/src/stanchion_response.erl diff --git a/apps/stanchion/src/stanchion_server.erl b/apps/riak_cs/src/stanchion_server.erl similarity index 100% rename from apps/stanchion/src/stanchion_server.erl rename to apps/riak_cs/src/stanchion_server.erl diff --git a/apps/stanchion/src/stanchion_server_sup.erl b/apps/riak_cs/src/stanchion_server_sup.erl similarity index 100% rename from apps/stanchion/src/stanchion_server_sup.erl rename to apps/riak_cs/src/stanchion_server_sup.erl diff --git a/apps/stanchion/src/stanchion_stats.erl b/apps/riak_cs/src/stanchion_stats.erl similarity index 100% rename from apps/stanchion/src/stanchion_stats.erl rename to apps/riak_cs/src/stanchion_stats.erl diff --git a/apps/stanchion/src/stanchion_utils.erl b/apps/riak_cs/src/stanchion_utils.erl similarity index 100% rename from apps/stanchion/src/stanchion_utils.erl rename to apps/riak_cs/src/stanchion_utils.erl diff --git a/apps/stanchion/src/stanchion_web.erl b/apps/riak_cs/src/stanchion_web.erl similarity index 96% rename from apps/stanchion/src/stanchion_web.erl rename to apps/riak_cs/src/stanchion_web.erl index cb2e5dafc..98d47e21c 100644 --- a/apps/stanchion/src/stanchion_web.erl +++ b/apps/riak_cs/src/stanchion_web.erl @@ -27,7 +27,7 @@ dispatch_table() -> AuthBypass = - case application:get_env(stanchion, auth_bypass) of + case application:get_env(riak_cs, auth_bypass) of {ok, AuthBypass0} -> AuthBypass0; undefined -> false end, diff --git a/apps/stanchion/src/stanchion_wm_acl.erl b/apps/riak_cs/src/stanchion_wm_acl.erl similarity index 100% rename from apps/stanchion/src/stanchion_wm_acl.erl rename to apps/riak_cs/src/stanchion_wm_acl.erl diff --git a/apps/stanchion/src/stanchion_wm_bucket.erl b/apps/riak_cs/src/stanchion_wm_bucket.erl similarity index 100% rename from apps/stanchion/src/stanchion_wm_bucket.erl rename to apps/riak_cs/src/stanchion_wm_bucket.erl diff --git a/apps/stanchion/src/stanchion_wm_buckets.erl b/apps/riak_cs/src/stanchion_wm_buckets.erl similarity index 100% rename from apps/stanchion/src/stanchion_wm_buckets.erl rename to apps/riak_cs/src/stanchion_wm_buckets.erl diff --git a/apps/stanchion/src/stanchion_wm_error_handler.erl b/apps/riak_cs/src/stanchion_wm_error_handler.erl similarity index 100% rename from apps/stanchion/src/stanchion_wm_error_handler.erl rename to apps/riak_cs/src/stanchion_wm_error_handler.erl diff --git a/apps/stanchion/src/stanchion_wm_policy.erl b/apps/riak_cs/src/stanchion_wm_policy.erl similarity index 100% rename from apps/stanchion/src/stanchion_wm_policy.erl rename to apps/riak_cs/src/stanchion_wm_policy.erl diff --git a/apps/stanchion/src/stanchion_wm_stats.erl b/apps/riak_cs/src/stanchion_wm_stats.erl similarity index 100% rename from apps/stanchion/src/stanchion_wm_stats.erl rename to apps/riak_cs/src/stanchion_wm_stats.erl diff --git a/apps/stanchion/src/stanchion_wm_user.erl b/apps/riak_cs/src/stanchion_wm_user.erl similarity index 100% rename from apps/stanchion/src/stanchion_wm_user.erl rename to apps/riak_cs/src/stanchion_wm_user.erl diff --git a/apps/stanchion/src/stanchion_wm_users.erl b/apps/riak_cs/src/stanchion_wm_users.erl similarity index 100% rename from apps/stanchion/src/stanchion_wm_users.erl rename to apps/riak_cs/src/stanchion_wm_users.erl diff --git a/apps/stanchion/src/stanchion_wm_utils.erl b/apps/riak_cs/src/stanchion_wm_utils.erl similarity index 100% rename from apps/stanchion/src/stanchion_wm_utils.erl rename to apps/riak_cs/src/stanchion_wm_utils.erl diff --git a/apps/stanchion/src/stanchion_wm_versioning.erl b/apps/riak_cs/src/stanchion_wm_versioning.erl similarity index 100% rename from apps/stanchion/src/stanchion_wm_versioning.erl rename to apps/riak_cs/src/stanchion_wm_versioning.erl diff --git a/apps/stanchion/src/stanchion.app.src b/apps/stanchion/src/stanchion.app.src deleted file mode 100644 index 24bd2f7ea..000000000 --- a/apps/stanchion/src/stanchion.app.src +++ /dev/null @@ -1,28 +0,0 @@ -%%-*- mode: erlang -*- -{application, stanchion, - [ - {description, "stanchion"}, - %% 'git' may introduce a '+' character (when building not from a - %% tag), and that plus sign will not go down well with freebsd pkg - %% ('+' is not allowed in +MANIFEST file). Hence we produce a - %% version of vsn that doesn't have it. - {vsn, "3.1.0"}, - {modules, []}, - {registered, []}, - {applications, - [kernel, - stdlib, - inets, - crypto, - mochiweb, - webmachine, - exometer_core, - riakc - ]}, - {mod, {stanchion_app, []}}, - {env, - [{listener, {"127.0.0.1", 8085}}, - {riak_host, {"127.0.0.1", 8087}} - ]} - ] -}. diff --git a/apps/stanchion/src/stanchion_app.erl b/apps/stanchion/src/stanchion_app.erl deleted file mode 100644 index ba02411c1..000000000 --- a/apps/stanchion/src/stanchion_app.erl +++ /dev/null @@ -1,101 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - -%% @doc Callbacks for the stanchion application. - --module(stanchion_app). - --behaviour(application). - --include_lib("riak_cs/include/moss.hrl"). - -%% application API --export([start/2, - stop/1]). - - --type start_type() :: normal | {takeover, node()} | {failover, node()}. --type start_args() :: term(). - -%% =================================================================== -%% Public API -%% =================================================================== - -%% @doc application start callback for stanchion. --spec start(start_type(), start_args()) -> {ok, pid()} | - {error, term()}. -start(_Type, _StartArgs) -> - case stanchion_utils:riak_connection() of - {ok, Pid} -> - try - case check_admin_creds(Pid) of - ok -> - stanchion_sup:start_link(); - Error -> - Error - end - after - stanchion_utils:close_riak_connection(Pid) - end; - {error, Reason} -> - logger:error("Couldn't connect to Riak: ~p", [Reason]), - {error, Reason} - end. - -%% @doc application stop callback for stanchion. --spec stop(term()) -> ok. -stop(_State) -> - ok. - -check_admin_creds(Pid) -> - case application:get_env(riak_cs, admin_key) of - {ok, "admin-key"} -> - logger:warning("admin.key is defined as default. Please create" - " admin user and configure it.", []), - application:set_env(stanchion, admin_secret, "admin-secret"); - {ok, KeyId} -> - case application:get_env(riak_cs, admin_secret) of - {ok, _} -> - logger:warning("admin.secret is ignored."); - _ -> - ok - end, - StrongOpts = [{r, quorum}, {pr, one}, {notfound_ok, false}], - case riakc_pb_socket:get(Pid, ?USER_BUCKET, KeyId, StrongOpts) of - {ok, Obj} -> - case stanchion_utils:from_riakc_obj(Obj, false) of - {ok, {User, _}} -> - Secret = User?RCS_USER.key_secret, - application:set_env(stanchion, admin_secret, Secret); - Error -> - Error - end; - {error, notfound} -> - logger:error("admin.key defined in stanchion.conf was not found." - "Please create it."), - {error, admin_not_configured}; - Error -> - logger:error("Error loading administrator configuration: ~p", [Error]), - Error - end; - Error -> - Error - end. diff --git a/apps/stanchion/src/stanchion_sup.erl b/apps/stanchion/src/stanchion_sup.erl deleted file mode 100644 index 20775a431..000000000 --- a/apps/stanchion/src/stanchion_sup.erl +++ /dev/null @@ -1,92 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - -%% @doc Supervisor for the `stanchion' application. - --module(stanchion_sup). - --behaviour(supervisor). - -%% Public API --export([start_link/0]). - -%% supervisor callbacks --export([init/1]). - --type startlink_err() :: {'already_started', pid()} | 'shutdown' | term(). --type startlink_ret() :: {'ok', pid()} | 'ignore' | {'error', startlink_err()}. - -%% =================================================================== -%% Public API -%% =================================================================== - -%% @doc API for starting the supervisor. --spec start_link() -> startlink_ret(). -start_link() -> - supervisor:start_link({local, ?MODULE}, ?MODULE, []). - -%% @doc supervisor callback. --spec init([]) -> {ok, {supervisor:sup_flags(), - [supervisor:child_spec()]}} | ignore. -init([]) -> - {Ip, Port} = case application:get_env(stanchion, listener) of - {ok, {_, _} = HostPort} -> HostPort; - undefined -> {"0.0.0.0", 80} - end, - - stanchion_stats:init(), - %% Hide any bags from user-facing parts. - case application:get_env(stanchion, supercluster_members) of - undefined -> ok; - {ok, Bags} -> application:set_env(stanchion, bags, Bags) - end, - - %% Create child specifications - WebConfig1 = [ - {dispatch, stanchion_web:dispatch_table()}, - {ip, Ip}, - {port, Port}, - {nodelay, true}, - {log_dir, "log"}, - %% {rewrite_module, stanchion_wm_rewrite}, - {error_handler, stanchion_wm_error_handler} - ], - WebConfig = - case application:get_env(stanchion, ssl) of - {ok, SSLOpts} -> - WebConfig1 ++ [{ssl, true}, - {ssl_opts, SSLOpts}]; - undefined -> - WebConfig1 - end, - Web = #{id => webmachine_mochiweb, - start => {webmachine_mochiweb, start, [WebConfig]}, - restart => permanent, - shutdown => 5000, - modules => dynamic}, - ServerSup = #{id => stanchion_server_sup, - start => {stanchion_server_sup, start_link, []}, - restart => permanent, - shutdown => 5000, - modules => dynamic}, - Processes = [ServerSup, Web], - {ok, { #{strategy => one_for_one, - intensity => 10, - period => 10}, Processes} }. diff --git a/apps/stanchion/test/stanchion_config_test.erl b/apps/stanchion/test/stanchion_config_test.erl deleted file mode 100644 index 7ae3693f4..000000000 --- a/apps/stanchion/test/stanchion_config_test.erl +++ /dev/null @@ -1,31 +0,0 @@ --module(stanchion_config_test). --compile(export_all). --compile(nowarn_export_all). - --include_lib("eunit/include/eunit.hrl"). - -default_config_test() -> - Config = cuttlefish_unit:generate_templated_config(schema_files(), [], context()), - cuttlefish_unit:assert_config(Config, "stanchion.host", {"127.0.0.1", 8085}), - cuttlefish_unit:assert_config(Config, "stanchion.riak_host", {"127.0.0.1", 8087}), - cuttlefish_unit:assert_not_configured(Config, "stanchion.ssl"), - cuttlefish_unit:assert_config(Config, "stanchion.admin_key", "admin-key"), - cuttlefish_unit:assert_not_configured(Config, "stanchion.admin_secret"), - cuttlefish_unit:assert_config(Config, "stanchion.auth_bypass", false), - - ok. - -ssl_config_test() -> - Conf = [{["ssl", "certfile"], "path/certfile"}, - {["ssl", "keyfile"], "path/keyfile"}], - Config = cuttlefish_unit:generate_templated_config(schema_files(), Conf, context()), - cuttlefish_unit:assert_config(Config, "stanchion.ssl", [{keyfile, "path/keyfile"}, - {certfile, "path/certfile"}]), - ok. - -schema_files() -> - ["priv/stanchion.schema"]. - -context() -> - {ok, Context} = file:consult("rel/vars.config"), - Context. diff --git a/priv/riak_cs.schema b/priv/riak_cs.schema index 4fe36f4b6..7eae88abe 100644 --- a/priv/riak_cs.schema +++ b/priv/riak_cs.schema @@ -5,6 +5,23 @@ %% == Basic Configuration == +%% @doc Whether to run stanchion on this node (auto means we will +%% check if stanchion is already started on any connected nodes, and +%% only start it here if it is not). +{mapping, "operation_mode", "riak_cs.operation_mode", [ + {default, {{ operation_mode }} }, + {datatype, {enum, [auto, riak_cs_with_stanchion, + riak_cs_only, stanchion_only]}}, + {validators, ["valid_operation_mode"]} +]}. + +{validator, + "valid_operation_mode", + "should be one of: auto, riak_cs_with_stanchion, riak_cs_only, stanchion_only", + fun(A) -> lists:member(A, [auto, riak_cs_with_stanchion, + riak_cs_only, stanchion_only]) end +}. + %% @doc Riak CS http/https port and IP address to listen at for object %% storage activity {mapping, "listener", "riak_cs.listener", [ @@ -33,6 +50,29 @@ {validators, ["valid_host"]} ]}. +%% @doc Default cert location for https can be overridden +%% with the ssl config variable, for example: +{mapping, "ssl.certfile", "riak_cs.ssl.certfile", [ + {datatype, file}, + {commented, "{{platform_etc_dir}}/cert.pem"} +]}. + +%% @doc Default key location for https can be overridden with the ssl +%% config variable, for example: +{mapping, "ssl.keyfile", "riak_cs.ssl.keyfile", [ + {datatype, file}, + {commented, "{{platform_etc_dir}}/key.pem"} +]}. + + + +%% @doc Stanchion http/https port and IP address to listen at +{mapping, "stanchion.listener", "riak_cs.stanchion_listener", [ + {default, {"{{stanchion_ip}}", {{stanchion_port}} }}, + {datatype, ip}, + {validators, ["valid_host"]} +]}. + %% @doc SSL configuration for access to request serialization %% service. With `on`, Riak CS connects to Stanchion with SSL. {mapping, "stanchion.ssl", "riak_cs.stanchion_ssl", [ @@ -42,18 +82,20 @@ %% @doc Default cert location for https can be overridden %% with the ssl config variable, for example: -{mapping, "ssl.certfile", "riak_cs.ssl.certfile", [ +{mapping, "stanchion.ssl_certfile", "riak_cs.stanchion_ssl_certfile", [ {datatype, file}, - {commented, "{{platform_etc_dir}}/cert.pem"} + {commented, "$(platform_etc_dir)/stanchion_cert.pem"} ]}. %% @doc Default key location for https can be overridden with the ssl %% config variable, for example: -{mapping, "ssl.keyfile", "riak_cs.ssl.keyfile", [ +{mapping, "stanchion.ssl_keyfile", "riak_cs.stanchion_ssl_keyfile", [ {datatype, file}, - {commented, "{{platform_etc_dir}}/key.pem"} + {commented, "$(platform_etc_dir)/stanchion_key.pem"} ]}. + + %% @doc Enable this to allow the creation of an admin user when %% setting up a system. It is recommended to only enable this %% temporarily unless your use-case specifically dictates letting @@ -86,6 +128,13 @@ hidden ]}. +%% @doc {auth_bypass, {{auth_bypass}} } , +{mapping, "auth_bypass", "riak_cs.auth_bypass", [ + {datatype, {flag, on, off}}, + {default, off}, + hidden +]}. + %% @doc Enable experimental signature_v4 compatibility. %% Changing this setting to on will allow s3cmd to utilise %% signature_v4 and thus function without the need to manually add diff --git a/priv/stanchion.schema b/priv/stanchion.schema deleted file mode 100644 index 5af1698e6..000000000 --- a/priv/stanchion.schema +++ /dev/null @@ -1,25 +0,0 @@ -%%-*- mode: erlang -*- - -%% @doc Version number. Intended use is to facilitate selective -%% support of features in the context of migration, where nodes -%% running different versions coexist in the same cluster. As -%% stanchion is not intended to ever run in clusters, this setting is -%% only used for reporting (via `stanchion admin version`). -{mapping, "stanchion_version", "stanchion.stanchion_version", [ - {default, {{stanchion_version}} }, - {datatype, integer} -]}. - -%% @doc listen port and IP address -{mapping, "stanchion_listener", "stanchion.listener", [ - {default, {"{{stanchion_ip}}" , {{stanchion_port}} }}, - {datatype, ip}, - {validators, ["valid_host"]} -]}. - -%% @doc {auth_bypass, {{auth_bypass}} } , -{mapping, "auth_bypass", "stanchion.auth_bypass", [ - {datatype, {flag, on, off}}, - {default, off}, - hidden -]}. diff --git a/rebar.config b/rebar.config index d28143e9d..264690c37 100644 --- a/rebar.config +++ b/rebar.config @@ -37,7 +37,6 @@ {relx, [ {release, {'riak-cs', "3.1"}, [ sasl , riak_cs - , stanchion ] } , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} @@ -196,7 +195,6 @@ , {disable_bin_scripts, true} , {schema_discovery, true} , {schema_order, [ riak_cs - , stanchion , erlang_vm ]} ] diff --git a/rebar.docker.config b/rebar.docker.config index 7e7f7e686..c53d7bfab 100644 --- a/rebar.docker.config +++ b/rebar.docker.config @@ -11,7 +11,6 @@ , {gen_fsm, sync_send_all_state_event, 3} , {gen_fsm, reply, 2} ]} - , {parse_transform, lager_transform} ] }. @@ -26,7 +25,6 @@ , {cluster_info, ".*", {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {riak_repl_pb_api,".*", {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} , {riak_cs_multibag,".*", {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} - , {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.0"}}} ] }. diff --git a/rel/files/app_epath.sh b/rel/files/app_epath.sh deleted file mode 100644 index a825906cd..000000000 --- a/rel/files/app_epath.sh +++ /dev/null @@ -1,172 +0,0 @@ -#!/bin/sh - -## --------------------------------------------------------------------- -## -## app_epath.sh: Parse Erlang app.config with POSIX tools for automation -## -## Copyright (c) 2013 Basho Technologies, Inc. All Rights Reserved. -## -## This file is provided to you under the Apache License, -## Version 2.0 (the "License"); you may not use this file -## except in compliance with the License. You may obtain -## a copy of the License at -## -## http://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, -## software distributed under the License is distributed on an -## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -## KIND, either express or implied. See the License for the -## specific language governing permissions and limitations -## under the License. -## -## --------------------------------------------------------------------- - -## Example usage: -# -# #!/bin/sh -# -# # Load the functions -# . path/to/app_epath.sh -# -# # Build the path info -# epaths=`make_app_epaths path/to/app.config` -# -# # View all of the settings. Quotes are important. -# echo "$epaths" -# -# # Grep around in the paths for various items. -# echo "$epaths" | grep 'riak_core ring_creation_size' -# echo "$epaths" | grep "lager handlers lager_file_backend" | grep info -# -# # Use the epath function to get directly at settings -# epath 'riak_core ring_creation_size' "$epaths" -# epath 'riak_core platform_bin_dir' "$epaths" -# epath 'riak_kv storage_backend' "$epaths" -# -# # Use epath to view all of the riak_core settings -# epath riak_core -# -## End example - -## Here is a command you can put in your path for general cli use. -# -# #!/bin/sh -# -# # $1 quoted eterm path for search: 'riak_core ring_creation_size' -# # $2 path/to/app.config -# -# . path/to/app_epath.sh -# -# epaths=`make_app_epaths "$2"` -# epath "$1" "$epaths" -# -## End epath command - -# make_app_epaths takes a path to an app.config file as its argument and -# and returns (prints) a flattened text structure of configuration settings. - -make_app_epaths () { - # Remove all lines containing comments - # Remove all blank lines - # Remove the first [ - # Remove the last ]. - # Remove all blank lines again (just in case) - appconfig=`cat $1 \ - | sed '/^[ \t]*%/d' \ - | sed '/^[ \t]*$/d' \ - | sed -e '/\[/{s///;:a' -e '$!N;$!ba' -e '}' \ - | sed '$ s/\]\.//g' \ - | sed '/^[ \t]*$/d'` - - STACK= - INQUOTE=0 - # The awk puts each char, spaces included, on their own line for parsing. - echo "$appconfig" | awk '{gsub(//,"\n");print}' | while read i; do - case "x${i}x" in - "x\"x") - # Flip the INQUOTE state and echo the quote - if [ 1 -eq $INQUOTE ]; then - INQUOTE=0 - else - INQUOTE=1 - fi - STACK="${STACK}${i}" - ;; - "xx") - if [ 1 -eq $INQUOTE ]; then - # If in quotes, keep this space - STACK="${STACK} " - fi - ;; - "x,x") - if [ 1 -eq $INQUOTE ]; then - # If in quotes, keep this comma - STACK="${STACK}," - else - # Commas outside quotes means a new item is next - STACK="${STACK} " - fi - ;; - "x{x") - if [ 1 -eq $INQUOTE ]; then - # If in quotes, keep this bracket - STACK="${STACK}{" - else - # Add brace to the stack; will pop off from here on next } - STACK="${STACK} __EBRACE__ " - fi - ;; - "x}x") - if [ 1 -eq $INQUOTE ]; then - # If in quotes, keep this bracket - STACK="${STACK}}" - else - # We're only interested in printing leaves, not - # intermediates like 'riak_core http', which contain lists. - # See if the current stack ends with ] (end of list). - echo $STACK | grep -E "__EBRACKET__$" >/dev/null 2>&1 - if [ 1 -eq $? ]; then - # If not, print the stack without all of the mess. - echo "$STACK" | \ - sed 's/ *__EBRACE__//g;s/ *__EBRACKET__//g;s/^ *//' - fi - # Pop off everything from the last brace on. - STACK=`echo "$STACK" | sed 's/\(.*\) __EBRACE__.*/\1/g'` - fi - ;; - "x[x") - if [ 1 -eq $INQUOTE ]; then - # If in quotes, keep this bracket - STACK="${STACK}[" - else - # Add a placeholder to aid in determining whether or not to - # print. That is, we don't want to print 'riak_core http'. - STACK="${STACK} __EBRACKET__ " - fi - ;; - "x]x") - if [ 1 -eq $INQUOTE ]; then - # If in quotes, keep this bracket - STACK="${STACK}]" - fi - # Don't actually do anything with ], as the starting brackets - # are instead removed with }. - ;; - *) - # Anything else is just pushed. - STACK="${STACK}${i}" - ;; - esac - done -} - -epath () { - # arg1 - a pattern to search for - # arg2 - output of make_app_epaths, passed in quoted - # output - search of arg2 for arg1, trimming arg1 from the beginning - # Note: there may be multiple lines of output. - pat=$1 - shift - echo "$*" | grep "$pat " | sed "s/^${pat} *//" -} diff --git a/rel/vars.config b/rel/vars.config index ac72db95d..9b154d372 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -27,7 +27,7 @@ {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. -{stanchion_version, 030100}. +{operation_mode, auto}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index 3446ed351..b6a49007f 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -6,12 +6,12 @@ {devrel, true}. %% Platform-specific installation paths -{platform_base_dir, "@PLATFORM_BASE_DIR@"}. -{platform_bin_dir, "{{platform_base_dir}}/bin"}. -{platform_data_dir, "{{platform_base_dir}}/data"}. -{platform_etc_dir, "{{platform_base_dir}}/etc"}. -{platform_lib_dir, "{{platform_base_dir}}/lib"}. -{platform_log_dir, "{{platform_base_dir}}/log"}. +{platform_base_dir, "@PLATFORM_BASE_DIR@"}. +{platform_bin_dir, "{{platform_base_dir}}/bin"}. +{platform_data_dir, "{{platform_base_dir}}/data"}. +{platform_etc_dir, "{{platform_base_dir}}/etc"}. +{platform_lib_dir, "{{platform_base_dir}}/lib"}. +{platform_log_dir, "{{platform_base_dir}}/log"}. {platform_gen_dir, "{{platform_base_dir}}"}. {platform_patch_dir, "{{platform_lib_dir}}/patches"}. @@ -29,11 +29,12 @@ {stanchion_ip, "127.0.0.1"}. {stanchion_port, 8085}. {stanchion_ssl, off}. -{cs_version, 030000}. +{cs_version, 030100}. +{operation_mode, auto}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. -{console_log_default, file}. +{log_level, info}. %% %% etc/vm.args From f112a9e83fc348bff4bb46ba90e03f4bb3fc32fa Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 31 Oct 2022 21:43:36 +0200 Subject: [PATCH 341/831] non-essential edits --- .../riak_cs_list_objects_ets_cache_sup.erl | 33 +++++-------------- apps/riak_cs/src/riak_cs_sup.erl | 2 +- apps/riak_cs/src/stanchion_server_sup.erl | 2 +- 3 files changed, 10 insertions(+), 27 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl b/apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl index 88b1e8e55..86ad62a2e 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl @@ -19,42 +19,25 @@ %% %% --------------------------------------------------------------------- -%% @doc -module(riak_cs_list_objects_ets_cache_sup). -behaviour(supervisor). -%% API -export([start_link/0]). - -%% Supervisor callbacks -export([init/1]). -%%%=================================================================== -%%% API functions -%%%=================================================================== - start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). -%%%=================================================================== -%%% Supervisor callbacks -%%%=================================================================== - init([]) -> - RestartStrategy = one_for_one, - MaxRestarts = 1000, - MaxSecondsBetweenRestarts = 3600, + SupFlags = #{strategy => one_for_one, + intensity => 1000, + period => 3600}, - SupFlags = {RestartStrategy, MaxRestarts, MaxSecondsBetweenRestarts}, - - ETSCache = {riak_cs_list_objects_ets_cache, - {riak_cs_list_objects_ets_cache, start_link, []}, - permanent, 5000, worker, - [riak_cs_list_objects_ets_cache]}, + ETSCache = #{id => riak_cs_list_objects_ets_cache, + start => {riak_cs_list_objects_ets_cache, start_link, []}, + restart => permanent, + type => worker, + modules => [riak_cs_list_objects_ets_cache]}, {ok, {SupFlags, [ETSCache]}}. - -%%%=================================================================== -%%% Internal functions -%%%=================================================================== diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index f1421e9bf..1b3c2815c 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -162,7 +162,7 @@ stanchion_process_specs() -> {ok, false} -> WebConfig1 end, - Web = #{id => webmachine_mochiweb, + Web = #{id => stanchion_webmachine, start => {webmachine_mochiweb, start, [WebConfig]}, restart => permanent, shutdown => 5000, diff --git a/apps/riak_cs/src/stanchion_server_sup.erl b/apps/riak_cs/src/stanchion_server_sup.erl index e2bcae50d..f856713ad 100644 --- a/apps/riak_cs/src/stanchion_server_sup.erl +++ b/apps/riak_cs/src/stanchion_server_sup.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file From eb09c310fee4f57dae8acd26afbbd3fcb3f88f59 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 31 Oct 2022 21:44:20 +0200 Subject: [PATCH 342/831] fit supps tool to riak_cs_utils --- apps/riak_cs/src/riak_cs_utils.erl | 181 ++++++++++++++++++++++++++++- 1 file changed, 180 insertions(+), 1 deletion(-) diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index f9821fa79..ed6846b22 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -66,7 +66,8 @@ big_end_key/0, stanchion_data/0, camel_case/1, - capitalize/1 + capitalize/1, + supps/1 ]). -include("riak_cs.hrl"). @@ -528,6 +529,184 @@ camel_case(String) when is_list(String) -> capitalize("") -> ""; capitalize([H|T]) -> string:to_upper([H]) ++ T. + +-record(p, {name :: atom() | tuple(), + info :: undefined | proplists:proplist(), + total_mem = 0 :: non_neg_integer(), + type :: worker | supervisor, + pid :: pid() | undefined, + children = [] + } + ). + +sups() -> + [riak_cs_sup]. + + +-spec supps(proplists:proplist()) -> ok. +supps(Options0) -> + Nodes = [node() | nodes()], + Options = extract_options(Options0), + + lists:foreach( + fun(Node) -> + io:format("============ Node: ~s ===========================\n", [Node]), + io:format("~11s\t~5s\t~8s\t~.14s~s\n" + "-------------------------------------------------------------\n", + [mem, mq, ths, pid, process]), + print( + reformat([get_info(Node, P) || P <- sups()], Options), + Options, 0) + end, Nodes + ), + ok. + +extract_options(PL) -> + Depth = + case proplists:get_value(depth, PL, 1) of + max -> + 9999; + V -> + V + end, + #{filter => proplists:get_value(filter, PL, ".+"), + format => proplists:get_value(format, PL, tree), + order_by => proplists:get_value(order_by, PL, memory), + depth => Depth + }. + + +get_info(Node, Name) -> + FF = + lists:foldl( + fun({SubName, Pid, worker, _MM}, Q) -> + Info = rpc:call(Node, erlang, process_info, + [Pid, [memory, message_queue_len, messages, total_heap_size]]), + [#p{name = SubName, info = Info, type = worker, pid = Pid, + total_mem = proplists:get_value(memory, Info, 0)} | Q]; + ({SubName, _Pid, supervisor, _MM}, Q) -> + [get_info(Node, SubName) | Q] + end, + [], + case rpc:call(Node, supervisor, which_children, [Name]) of + Children when is_list(Children) -> + Children; + _ -> + [] + end + ), + #p{name = Name, + total_mem = lists:foldl(fun(#p{total_mem = TM}, Q) -> + Q + TM + end, 0, FF), + type = supervisor, + children = FF}. + + +print(_p, #{depth := MaxDepth}, Depth) when MaxDepth < Depth -> + ok; +print(PP, Options, Depth) when is_list(PP) -> + lists:foreach(fun(P) -> print(P, Options, Depth) end, PP); +print(#p{name = Name, info = Info, type = worker, pid = Pid}, + #{filter := Filter}, Depth) -> + case re:run(printable(Name), Filter) of + nomatch -> + skip; + _ -> + Mem = integer_or_blank(memory, Info), + THS = integer_or_blank(total_heap_size, Info), + MQ = integer_or_blank(message_queue_len, Info), + io:format("~11s\t~5s\t~8s\t~.14s~s~s\n", [Mem, MQ, THS, pid_to_list(Pid), pad(Depth * 2), printable(Name)]) + end; +print(#p{name = Name, children = FF, total_mem = Mem} = P, + Options = #{filter := Filter}, Depth) -> + case has_printable_children(P, Filter) of + no -> + skip; + Yes -> + io:format("~11b\t~5s\t~8s\t~14s~s~s (~b)\n", + [Mem, "", "", "", pad(Depth * 2), printable(Name), length(FF)]), + lists:foreach( + fun(F) -> print(F, Options#{filter => maybe_drop_filter(Yes, Filter)}, Depth + 1) end, + FF + ) + end. +maybe_drop_filter(all, _) -> ".+"; +maybe_drop_filter(yes, Filter) -> Filter. + + +integer_or_blank(F, Info) -> + A_ = proplists:get_value(F, Info, ""), + [integer_to_list(A_)||is_integer(A_)]. + +pad(N) -> + lists:duplicate(N, $ ). + +printable(Name) when is_atom(Name) -> atom_to_list(Name); +printable(Name) -> io_lib:format("~p", [Name]). + + +has_printable_children(#p{name = Name, type = worker}, Filter) -> + case re:run(printable(Name), Filter) of + nomatch -> + no; + _ -> + yes + end; +has_printable_children(#p{name = Name, children = FF}, Filter) -> + case re:run(printable(Name), Filter) of + nomatch -> + case lists:any( + fun(P) -> no /= has_printable_children(P, Filter) end, + FF) of + true -> + yes; + false -> + no + end; + _ -> + all + end. + +reformat(PP, #{format := tree, order_by := none}) -> + PP; +reformat(PP, #{format := tree, order_by := memory} = Options) -> + lists:map( + fun(P = #p{children = []}) -> + P; + (P = #p{children = FF}) -> + P#p{children = lists:sort( + fun(#p{total_mem = M1}, #p{total_mem = M2}) -> + M1 > M2 + end, + reformat(FF, Options))} + end, + PP); +reformat(#p{children = PP}, Options) -> + reformat(PP, Options); +reformat(PP, #{format := flat, order_by := OrderBy} = Options) -> + PP1 = + lists:flatten( + lists:foldl( + fun(#p{type = worker} = P, Q) -> + [P | Q]; + (#p{type = supervisor, children = FF}, Q) -> + lists:concat([reformat(FF, Options), Q]) + end, + [], + PP + ) + ), + case OrderBy of + none -> + PP1; + memory -> + lists:sort(fun(#p{total_mem = M1}, #p{total_mem = M2}) -> + M1 > M2 + end, PP1) + end. + + -ifdef(TEST). camel_case_test() -> From b2127140bb432614dd7c5a5c1444fdf61b8167be Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 31 Oct 2022 22:08:17 +0200 Subject: [PATCH 343/831] merge stanchion bits for docker config files, too --- config/sys.config.defaults | 2 ++ config/sys.docker.config.src | 65 ++++++++++++++++++------------------ 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/config/sys.config.defaults b/config/sys.config.defaults index 6269aaed4..ce7bd78eb 100644 --- a/config/sys.config.defaults +++ b/config/sys.config.defaults @@ -40,3 +40,5 @@ MAX_KEY_LENGTH=1024 MAX_BUCKETS_PER_USER=100 CS_ROOT_HOST="s3.amazonaws.com" ANONYMOUS_USER_CREATION=false + +KERNEL_LOGGER_LEVEL=info diff --git a/config/sys.docker.config.src b/config/sys.docker.config.src index 1362accd0..02464d013 100644 --- a/config/sys.docker.config.src +++ b/config/sys.docker.config.src @@ -32,44 +32,45 @@ {auth_bypass, ${AUTH_BYPASS}}, {admin_key, ${ADMIN_KEY}}, {anonymous_user_creation, ${ANONYMOUS_USER_CREATION}}, - {stanchion_ssl, ${STANCHION_SSL}}, {stanchion_host,{${STANCHION_HOST}, ${STANCHION_PORT}}}, {riak_host, {${RIAK_HOST}, ${RIAK_PORT}}}, {listener, {${RCS_LISTENER_HOST}, ${RCS_LISTENER_PORT}}}, + {stanchion_listener, ${STANCHION_LISTENER_HOST}, ${STANCHION_LISTENER_PORT}}, + {stanchion_ssl, ${STANCHION_SSL}}, + {stanchion_ssl_certfile, ${STANCHION_SSL_CERTFILE}}, + {stanchion_ssl_keyfile, ${STANCHION_SSL_KEYFILE}}, {connection_pools,[{request_pool,{128,0}},{bucket_list_pool,{5,0}}]}]}, - {stanchion, - [{platform_log_dir, ${PLATFORM_LOG_DIR}}, - {platform_lib_dir, ${PLATFORM_LIB_DIR}}, - {platform_etc_dir, ${PLATFORM_ETC_DIR}}, - {platform_bin_dir, ${PLATFORM_BIN_DIR}}, - {auth_bypass, ${AUTH_BYPASS}}, - {admin_key, ${ADMIN_KEY}}, - {riak_host, {${RIAK_HOST}, ${RIAK_PORT}}}, - {host, {${STANCHION_LISTENER_HOST}, ${STANCHION_LISTENER_PORT}}}]} - {lager, - [{error_logger_hwm,100}, - {error_logger_redirect,true}, - {crash_log_date,"$D0"}, - {crash_log_size,10485760}, - {crash_log_msg_size,65536}, - {handlers, - [{lager_file_backend, - [{file, ${PLATFORM_LOG_DIR}"/console.log"}, - {level, info}, - {size, 10485760}, - {date, "$D0"}, - {count, 5}]}, - {lager_file_backend, - [{file, ${PLATFORM_LOG_DIR}"/error.log"}, - {level, error}, - {size, 10485760}, - {date, "$D0"}, - {count, 5}]}]}, - {crash_log, ${PLATFORM_LOG_DIR}"/crash.log"}, - {crash_log_count, 5}]}, {sasl,[{sasl_error_logger,false}]}, {webmachine, [{server_name,"Riak CS"}, {log_handlers, [{webmachine_access_log_handler,[${PLATFORM_LOG_DIR}"/log"]}, - {riak_cs_access_log_handler,[]}]}]}]. + {riak_cs_access_log_handler,[]}]}]}, + {kernel, + [{logger_level, ${KERNEL_LOGGER_LEVEL}}, + {logger, + [{handler,default,logger_std_h, + #{config => + #{type => standard_io}, + filters => + [{no_sasl, + {fun logger_filters:domain/2, + {stop,super,[otp,sasl]}}}], + formatter => + {logger_formatter, + #{template => + [time," [",level,"] ",pid,"@",mfa,":",line," ", + msg,"\n"]}}}}, + {handler,sasl,logger_std_h, + #{config => + #{type => standard_error}, + filter_default => stop, + filters => + [{sasl_here, + {fun logger_filters:domain/2, + {log,equal,[otp,sasl]}}}], + formatter => + {logger_formatter, + #{legacy_header => true,single_line => false}}}}]}]}, + {syslogger,[{log_opts,[pid]},{ident,"riak_cs"}]} +]. From bf07182a5c21df109872df25c560597df736bd3d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 3 Nov 2022 17:48:54 +0200 Subject: [PATCH 344/831] move schema to apps/riak_cs, where rebar as test rel expects it to be --- {priv => apps/riak_cs/priv}/riak_cs.schema | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {priv => apps/riak_cs/priv}/riak_cs.schema (100%) diff --git a/priv/riak_cs.schema b/apps/riak_cs/priv/riak_cs.schema similarity index 100% rename from priv/riak_cs.schema rename to apps/riak_cs/priv/riak_cs.schema From 8000c41b014cb1cb734aa37e5cfa13cb0c133ca8 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 3 Nov 2022 17:54:33 +0200 Subject: [PATCH 345/831] unify internal version value --- apps/riak_cs/include/riak_cs.hrl | 2 ++ apps/riak_cs/test/riak_cs_config_test.erl | 3 ++- config/sys.docker.config.src | 2 +- rel/pkg/alpine/vars.config | 2 +- rel/pkg/deb/vars.config | 2 +- rel/pkg/fbsdng/vars.config | 2 +- rel/pkg/rpm/vars.config | 2 +- rel/vars.config | 2 +- 8 files changed, 10 insertions(+), 7 deletions(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index 1109760c3..a48afe76c 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -22,6 +22,8 @@ -include("manifest.hrl"). -include("moss.hrl"). +-define(RCS_VERSION, 030100). + -type riak_client() :: pid(). -record(context, {start_time :: undefined | erlang:timestamp(), diff --git a/apps/riak_cs/test/riak_cs_config_test.erl b/apps/riak_cs/test/riak_cs_config_test.erl index 4741561ea..140af70c0 100644 --- a/apps/riak_cs/test/riak_cs_config_test.erl +++ b/apps/riak_cs/test/riak_cs_config_test.erl @@ -23,6 +23,7 @@ -compile(export_all). -compile(nowarn_export_all). +-include("riak_cs.hrl"). -include_lib("eunit/include/eunit.hrl"). default_config_test() -> @@ -38,7 +39,7 @@ default_config_test() -> cuttlefish_unit:assert_not_configured(Config, "riak_cs.admin_ip"), cuttlefish_unit:assert_not_configured(Config, "riak_cs.admin_port"), cuttlefish_unit:assert_config(Config, "riak_cs.cs_root_host", "s3.amazonaws.com"), - cuttlefish_unit:assert_config(Config, "riak_cs.cs_version", 030000), + cuttlefish_unit:assert_config(Config, "riak_cs.cs_version", ?RCS_VERSION), cuttlefish_unit:assert_config(Config, "riak_cs.proxy_get", false), cuttlefish_unit:assert_not_configured(Config, "riak_cs.rewrite_module"), cuttlefish_unit:assert_not_configured(Config, "riak_cs.auth_module"), diff --git a/config/sys.docker.config.src b/config/sys.docker.config.src index 02464d013..c77925a9f 100644 --- a/config/sys.docker.config.src +++ b/config/sys.docker.config.src @@ -6,7 +6,7 @@ {platform_bin_dir, ${PLATFORM_BIN_DIR}}, {dtrace_support, false}, {proxy_get, ${PROXY_GET}}, - {cs_version,30000}, + {cs_version,30100}, %% to match values in include/riak_cs.hrl and rel/vars.config and others in rel/pkg/ {fold_objects_for_list_keys, ${FOLD_OBJECTS_FOR_LIST_KEYS}}, {usage_request_limit, ${USAGE_REQUEST_LIMIT}}, {storage_archive_period, ${STORAGE_ARCHIVE_PERIOD}}, diff --git a/rel/pkg/alpine/vars.config b/rel/pkg/alpine/vars.config index 8296e152d..622d50df1 100644 --- a/rel/pkg/alpine/vars.config +++ b/rel/pkg/alpine/vars.config @@ -27,7 +27,7 @@ {stanchion_ip, "127.0.0.1"}. {stanchion_port, 8085}. {stanchion_ssl, off}. -{cs_version, 030000}. +{cs_version, 030100}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. diff --git a/rel/pkg/deb/vars.config b/rel/pkg/deb/vars.config index 1b9c910d2..49869906c 100644 --- a/rel/pkg/deb/vars.config +++ b/rel/pkg/deb/vars.config @@ -27,7 +27,7 @@ {stanchion_ip, "127.0.0.1"}. {stanchion_port, 8085}. {stanchion_ssl, off}. -{cs_version, 030000}. +{cs_version, 030100}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config index 1e02f68dc..df8be6bf8 100644 --- a/rel/pkg/fbsdng/vars.config +++ b/rel/pkg/fbsdng/vars.config @@ -25,7 +25,7 @@ {stanchion_ip, "127.0.0.1"}. {stanchion_port, 8085}. {stanchion_ssl, off}. -{cs_version, 030000}. +{cs_version, 030100}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index 4fa6de230..e3b05141c 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -27,7 +27,7 @@ {stanchion_ip, "127.0.0.1"}. {stanchion_port, 8085}. {stanchion_ssl, off}. -{cs_version, 030000}. +{cs_version, 030100}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. diff --git a/rel/vars.config b/rel/vars.config index 9b154d372..67195c6b9 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -26,7 +26,7 @@ {stanchion_ip, "127.0.0.1"}. {stanchion_port, 8085}. {stanchion_ssl, off}. -{cs_version, 030100}. +{cs_version, 030100}. %% to match values in config/sys.docker.config, include/riak_ts.hrl {operation_mode, auto}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. From 7a621d98256a08a612037224a2cd08c3d2bb755c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 3 Nov 2022 18:00:12 +0200 Subject: [PATCH 346/831] move tools out of top-level priv --- rebar.config | 14 +++++++------- rebar.docker.config | 14 +++++++------- {priv/tools => tools}/internal/README.md | 0 {priv/tools => tools}/internal/block_audit.erl | 0 .../internal/ensure_orphan_blocks.erl | 0 {priv/tools => tools}/internal/offline_delete.erl | 0 .../tools => tools}/internal/riak_cs_inspector.erl | 0 .../tools => tools}/internal/select_gc_bucket.erl | 0 {priv/tools => tools}/repair_gc_bucket.erl | 0 9 files changed, 14 insertions(+), 14 deletions(-) rename {priv/tools => tools}/internal/README.md (100%) rename {priv/tools => tools}/internal/block_audit.erl (100%) rename {priv/tools => tools}/internal/ensure_orphan_blocks.erl (100%) rename {priv/tools => tools}/internal/offline_delete.erl (100%) rename {priv/tools => tools}/internal/riak_cs_inspector.erl (100%) rename {priv/tools => tools}/internal/select_gc_bucket.erl (100%) rename {priv/tools => tools}/repair_gc_bucket.erl (100%) diff --git a/rebar.config b/rebar.config index 264690c37..88a0a67b5 100644 --- a/rebar.config +++ b/rebar.config @@ -50,13 +50,13 @@ , {copy, "rel/files/key.pem", "etc/key.pem"} , {mkdir, "priv/tools/internal"} , {mkdir, "log"} - , {copy, "priv/tools/repair_gc_bucket.erl", "priv/tools/repair_gc_bucket.erl"} - , {copy, "priv/tools/internal/README.md", "priv/tools/internal/README.md"} - , {copy, "priv/tools/internal/block_audit.erl", "priv/tools/internal/block_audit.erl"} - , {copy, "priv/tools/internal/ensure_orphan_blocks.erl", "priv/tools/internal/ensure_orphan_blocks.erl"} - , {copy, "priv/tools/internal/offline_delete.erl", "priv/tools/internal/offline_delete.erl"} - , {copy, "priv/tools/internal/riak_cs_inspector.erl", "priv/tools/internal/riak_cs_inspector.erl"} - , {copy, "priv/tools/internal/select_gc_bucket.erl", "priv/tools/internal/select_gc_bucket.erl"} + , {copy, "tools/repair_gc_bucket.erl", "priv/tools/repair_gc_bucket.erl"} + , {copy, "tools/internal/README.md", "priv/tools/internal/README.md"} + , {copy, "tools/internal/block_audit.erl", "priv/tools/internal/block_audit.erl"} + , {copy, "tools/internal/ensure_orphan_blocks.erl", "priv/tools/internal/ensure_orphan_blocks.erl"} + , {copy, "tools/internal/offline_delete.erl", "priv/tools/internal/offline_delete.erl"} + , {copy, "tools/internal/riak_cs_inspector.erl", "priv/tools/internal/riak_cs_inspector.erl"} + , {copy, "tools/internal/select_gc_bucket.erl", "priv/tools/internal/select_gc_bucket.erl"} ] } , {generate_start_script, true} diff --git a/rebar.docker.config b/rebar.docker.config index c53d7bfab..af50010ab 100644 --- a/rebar.docker.config +++ b/rebar.docker.config @@ -45,13 +45,13 @@ , {copy, "rel/files/app_epath.sh", "lib/app_epath.sh"} , {mkdir, "priv/tools/internal"} , {mkdir, "log"} - , {copy, "rel/tools/repair_gc_bucket.erl", "priv/tools/repair_gc_bucket.erl"} - , {copy, "rel/tools/internal/README.md", "priv/tools/internal/README.md"} - , {copy, "rel/tools/internal/block_audit.erl", "priv/tools/internal/block_audit.erl"} - , {copy, "rel/tools/internal/ensure_orphan_blocks.erl", "priv/tools/internal/ensure_orphan_blocks.erl"} - , {copy, "rel/tools/internal/offline_delete.erl", "priv/tools/internal/offline_delete.erl"} - , {copy, "rel/tools/internal/riak_cs_inspector.erl", "priv/tools/internal/riak_cs_inspector.erl"} - , {copy, "rel/tools/internal/select_gc_bucket.erl", "priv/tools/internal/select_gc_bucket.erl"} + , {copy, "rel/tools/repair_gc_bucket.erl", "tools/repair_gc_bucket.erl"} + , {copy, "rel/tools/internal/README.md", "tools/internal/README.md"} + , {copy, "rel/tools/internal/block_audit.erl", "tools/internal/block_audit.erl"} + , {copy, "rel/tools/internal/ensure_orphan_blocks.erl", "tools/internal/ensure_orphan_blocks.erl"} + , {copy, "rel/tools/internal/offline_delete.erl", "tools/internal/offline_delete.erl"} + , {copy, "rel/tools/internal/riak_cs_inspector.erl", "tools/internal/riak_cs_inspector.erl"} + , {copy, "rel/tools/internal/select_gc_bucket.erl", "tools/internal/select_gc_bucket.erl"} ] } , {generate_start_script, true} diff --git a/priv/tools/internal/README.md b/tools/internal/README.md similarity index 100% rename from priv/tools/internal/README.md rename to tools/internal/README.md diff --git a/priv/tools/internal/block_audit.erl b/tools/internal/block_audit.erl similarity index 100% rename from priv/tools/internal/block_audit.erl rename to tools/internal/block_audit.erl diff --git a/priv/tools/internal/ensure_orphan_blocks.erl b/tools/internal/ensure_orphan_blocks.erl similarity index 100% rename from priv/tools/internal/ensure_orphan_blocks.erl rename to tools/internal/ensure_orphan_blocks.erl diff --git a/priv/tools/internal/offline_delete.erl b/tools/internal/offline_delete.erl similarity index 100% rename from priv/tools/internal/offline_delete.erl rename to tools/internal/offline_delete.erl diff --git a/priv/tools/internal/riak_cs_inspector.erl b/tools/internal/riak_cs_inspector.erl similarity index 100% rename from priv/tools/internal/riak_cs_inspector.erl rename to tools/internal/riak_cs_inspector.erl diff --git a/priv/tools/internal/select_gc_bucket.erl b/tools/internal/select_gc_bucket.erl similarity index 100% rename from priv/tools/internal/select_gc_bucket.erl rename to tools/internal/select_gc_bucket.erl diff --git a/priv/tools/repair_gc_bucket.erl b/tools/repair_gc_bucket.erl similarity index 100% rename from priv/tools/repair_gc_bucket.erl rename to tools/repair_gc_bucket.erl From 2ec44a9de37a31a56535f69620d0a2c4655d0195 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 3 Nov 2022 18:03:28 +0200 Subject: [PATCH 347/831] bump several deps --- rebar.config | 2 +- rebar.docker.config | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/rebar.config b/rebar.config index 88a0a67b5..2ec73c32f 100644 --- a/rebar.config +++ b/rebar.config @@ -19,7 +19,7 @@ ] }. -{deps, [ {getopt, "v1.0.2"} +{deps, [ {getopt, "1.0.2"} , {parse_trans, "3.4.1"} , {webmachine, "1.11.1"} , {mochiweb, "3.1.1"} diff --git a/rebar.docker.config b/rebar.docker.config index af50010ab..6bf56a810 100644 --- a/rebar.docker.config +++ b/rebar.docker.config @@ -14,17 +14,17 @@ ] }. -{deps, [ {parse_trans, "3.3.0"} - , {getopt, "v1.0.2"} +{deps, [ {parse_trans, "3.4.1"} + , {getopt, "1.0.2"} , {webmachine, "1.11.1"} - , {mochiweb, "v2.20.1"} + , {mochiweb, "3.1.1"} , {exometer_core, "v1.5.7"} - , {uuid, ".*", {git, "https://github.com/okeuday/uuid.git", {tag, "v2.0.1"}}} - , {riakc, ".*", {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.7"}}} - , {poolboy, "0.8.*", {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} - , {cluster_info, ".*", {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {riak_repl_pb_api,".*", {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.7"}}} - , {riak_cs_multibag,".*", {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.5"}}} + , {uuid, "2.0.5", {pkg, uuid_erl}} + , {riakc, {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.8+p1"}}} + , {poolboy, {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} + , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} + , {riak_repl_pb_api, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.9"}}} + , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {branch, "develop"}}} ] }. From 811f19ad9eefd45f82badfe0fe92b5eebeeeda86 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 3 Nov 2022 18:04:54 +0200 Subject: [PATCH 348/831] clean up some future-proofing defines that are no longer applicable --- .../src/riak_cs_list_objects_ets_cache.erl | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl index a9e0b65ee..86e041d49 100644 --- a/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl +++ b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl @@ -53,11 +53,9 @@ -define(DICTMODULE, dict). --type dictionary() :: dict:dict(). - -record(state, {tid :: ets:tid(), - monitor_to_timer = ?DICTMODULE:new() :: dictionary(), - key_to_monitor = ?DICTMODULE:new() :: dictionary()}). + monitor_to_timer = dict:new() :: dict:dict(), + key_to_monitor = dict:new() :: dict:dict()}). -type state() :: #state{}. -type cache_lookup_result() :: {true, [binary()]} | false. @@ -244,8 +242,8 @@ update_state_with_refs(CacheKey, MonitorPid, State) -> update_state_with_refs_helper(MonitorRef, TimerRef, CacheKey, State=#state{monitor_to_timer=MonToTimer, key_to_monitor=KeyToMon}) -> - NewMonToTimer = ?DICTMODULE:store(MonitorRef, {TimerRef, CacheKey}, MonToTimer), - NewKeyToMon = ?DICTMODULE:store(TimerRef, MonitorRef, KeyToMon), + NewMonToTimer = dict:store(MonitorRef, {TimerRef, CacheKey}, MonToTimer), + NewKeyToMon = dict:store(TimerRef, MonitorRef, KeyToMon), State#state{monitor_to_timer=NewMonToTimer, key_to_monitor=NewKeyToMon}. @@ -260,7 +258,7 @@ handle_down(MonitorRef, State=#state{monitor_to_timer=MonToTimer}) -> NewMonToTimer = remove_timer(MonitorRef, MonToTimer), State#state{monitor_to_timer=NewMonToTimer}. --spec remove_monitor(binary(), dictionary()) -> dictionary(). +-spec remove_monitor(binary(), dict:dict()) -> dict:dict(). remove_monitor(ExpiredKey, KeyToMon) -> RefResult = safe_fetch(ExpiredKey, KeyToMon), case RefResult of @@ -269,9 +267,9 @@ remove_monitor(ExpiredKey, KeyToMon) -> {error, _Reason} -> true end, - ?DICTMODULE:erase(ExpiredKey, KeyToMon). + dict:erase(ExpiredKey, KeyToMon). --spec remove_timer(reference(), dictionary()) -> dictionary(). +-spec remove_timer(reference(), dict:dict()) -> dict:dict(). remove_timer(MonitorRef, MonToTimer) -> RefResult = safe_fetch(MonitorRef, MonToTimer), _ = case RefResult of @@ -282,13 +280,13 @@ remove_timer(MonitorRef, MonToTimer) -> {error, _Reason} -> true end, - ?DICTMODULE:erase(MonitorRef, MonToTimer). + dict:erase(MonitorRef, MonToTimer). --spec safe_fetch(Key :: term(), Dict :: dictionary()) -> +-spec safe_fetch(Key :: term(), Dict :: dict:dict()) -> {ok, term()} | {error, term()}. safe_fetch(Key, Dict) -> try - {ok, ?DICTMODULE:fetch(Key, Dict)} + {ok, dict:fetch(Key, Dict)} catch error:Reason -> {error, Reason} end. From c2d543a1f8d7579ff5824af36fc059de7ab295a9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 3 Nov 2022 18:05:32 +0200 Subject: [PATCH 349/831] another instance of s/EQC/PROPER/ --- apps/riak_cs/src/rts.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/rts.erl b/apps/riak_cs/src/rts.erl index 12a415951..ba013a19d 100644 --- a/apps/riak_cs/src/rts.erl +++ b/apps/riak_cs/src/rts.erl @@ -53,9 +53,9 @@ -include("rts.hrl"). -ifdef(TEST). --ifdef(EQC). +-ifdef(PROPER). -compile([export_all]). --include_lib("eqc/include/eqc.hrl"). +-include_lib("proper/include/proper.hrl"). -endif. -include_lib("eunit/include/eunit.hrl"). -endif. From 9a7094a4561dd27a3b091ac1c0034a47c35e60e9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 3 Nov 2022 18:06:13 +0200 Subject: [PATCH 350/831] fix, remove lager bits in, riak_cs_config_test --- apps/riak_cs/test/riak_cs_config_test.erl | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/apps/riak_cs/test/riak_cs_config_test.erl b/apps/riak_cs/test/riak_cs_config_test.erl index 140af70c0..4abd1b85a 100644 --- a/apps/riak_cs/test/riak_cs_config_test.erl +++ b/apps/riak_cs/test/riak_cs_config_test.erl @@ -73,17 +73,6 @@ default_config_test() -> {riak_cs_access_log_handler, []}]), cuttlefish_unit:assert_config(Config, "webmachine.server_name", "Riak CS"), - %% {ok, [ConsoleLog, ErrorLog]} = cuttlefish_unit:path(cuttlefish_variable:tokenize("lager.handlers"), Config), - %% cuttlefish_unit:assert_config([ConsoleLog], "lager_file_backend", [{file, "./log/console.log"}, - %% {level, info}, - %% {size, 10485760}, - %% {date, "$D0"}, - %% {count, 5}]), - %% cuttlefish_unit:assert_config([ErrorLog], "lager_file_backend", [{file, "./log/error.log"}, - %% {level, error}, - %% {size, 10485760}, - %% {date, "$D0"}, - %% {count, 5}]), cuttlefish_unit:assert_not_configured(Config, "riak_cs.supercluster_members"), cuttlefish_unit:assert_config(Config, "riak_cs.supercluster_weight_refresh_interval", 900), %% cuttlefish_unit:assert_config(Config, "vm_args.+scl", false), @@ -182,7 +171,7 @@ wm_log_config_test_() -> end, fun(AssertAlog) -> [{"Default access log directory", - ?_test(AssertAlog([{["log", "access", "dir"], "$(platform_log_dir)"}], + ?_test(AssertAlog([{["log", "access", "dir"], "./log"}], ["./log"]))}, {"Customized access log directory", ?_test(AssertAlog([{["log", "access", "dir"], "/path/to/custom/dir/"}], @@ -191,7 +180,7 @@ wm_log_config_test_() -> ?_test(AssertAlog([], ["./log"]))}, {"Disable access log", - ?_test(AssertAlog([{["log", "access", "dir"], "$(platform_log_dir)"}, + ?_test(AssertAlog([{["log", "access", "dir"], "./log"}, {["log", "access"], "off"}], no_alog))} ] @@ -242,7 +231,7 @@ supercluster_weight_refresh_interval_test_() -> ]. schema_files() -> - ["priv/riak_cs.schema"]. + ["apps/riak_cs/priv/riak_cs.schema"]. context() -> {ok, Context} = file:consult("rel/vars.config"), From af8f586aed4e09b776f921a614ed917974b90082 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 3 Nov 2022 22:55:48 +0200 Subject: [PATCH 351/831] operation_mode being fleshed out --- apps/riak_cs/include/moss.hrl | 3 + apps/riak_cs/src/riak_cs_sup.erl | 116 +++++++++++++++++++++++++++---- 2 files changed, 105 insertions(+), 14 deletions(-) diff --git a/apps/riak_cs/include/moss.hrl b/apps/riak_cs/include/moss.hrl index 3b49b56fe..9732187eb 100644 --- a/apps/riak_cs/include/moss.hrl +++ b/apps/riak_cs/include/moss.hrl @@ -89,6 +89,7 @@ -define(ACCESS_BUCKET, <<"moss.access">>). -define(STORAGE_BUCKET, <<"moss.storage">>). -define(BUCKETS_BUCKET, <<"moss.buckets">>). +-define(SERVICE_BUCKET, <<"moss.service">>). -define(GC_BUCKET, <<"riak-cs-gc">>). -define(FREE_BUCKET_MARKER, <<"0">>). @@ -97,4 +98,6 @@ -define(MD_POLICY, <<"X-Rcs-Policy">>). -define(MD_VERSIONING, <<"X-Rcs-Versioning">>). +-define(STANCHION_DETAILS_KEY, <<"stanchion">>). + -endif. diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index 1b3c2815c..ca65d73fe 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -67,7 +67,8 @@ init2(Options) -> RCSChildren = case Mode of M when M == auto; - M == riak_cs_only -> + M == riak_cs_only; + M == riak_cs_with_stanchion -> riak_cs_stats:init(), application:set_env(webmachine, rewrite_module, proplists:get_value(rewrite_module, Options)), @@ -76,18 +77,17 @@ init2(Options) -> [] end, StanchionChildren = - case Mode of - stanchion_only -> + case do_we_get_to_run_stanchion(Mode) of + {use_this, HostPort} -> + ok = apply_cluster_stanchion_details(HostPort), stanchion_stats:init(), stanchion_process_specs(); - auto -> - case do_we_get_to_run_stanchion() of - true -> - stanchion_stats:init(), - stanchion_process_specs(); - false -> - [] - end + use_ours -> + Host = this_host_addr(), + {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), + ok = save_cluster_stanchion_details({Host, Port}), + stanchion_stats:init(), + stanchion_process_specs() end, {ok, {#{strategy => one_for_one, intensity => 10, @@ -175,9 +175,84 @@ stanchion_process_specs() -> [ServerSup, Web]. -do_we_get_to_run_stanchion() -> - logger:info("Do we get to run stanchion? yes"), - true. + +do_we_get_to_run_stanchion(Mode) -> + case read_cluster_stanchion_data() of + {ok, {Host, Port}} when Mode == auto -> + logger:info("found stanchion details, and will use ~s:~b", [Host, Port]), + {use_saved, {Host, Port}}; + {ok, {SavedHost, SavedPort}} + when Mode == riak_cs_with_stanchion; + Mode == stanchion_only -> + {ok, {ConfiguredHost, ConfiguredPort}} = application:get_env(riak_cs, stanchion_listener), + case this_host_addr() of + ConfiguredHost when ConfiguredPort == SavedPort -> + %% we read what we must have saved before + {use_saved, {SavedHost, SavedPort}}; + _ -> + logger:error("this node is configured to run stanchion but" + " stanchion has already been started at ~s:~b", [SavedHost, SavedPort]), + conflicting_stanchion_configuration + end; + {error, notfound} -> + logger:info("no stanchion_host saved; going to start stanchion on this node"), + use_ours + end. + +apply_cluster_stanchion_details({Host, Port}) -> + application:set_env(riak_cs, stanchion_host, Host), + application:set_env(riak_cs, stanchion_port, Port), + ok. + +read_cluster_stanchion_data() -> + {ok, Pbc} = riak_connection(), + case riak_cs_pbc:get_sans_stats(Pbc, ?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, + [{notfound_ok, false}], + riak_cs_config:get_user_timeout() div 10) of + {ok, Obj} -> + case riakc_obj:value_count(Obj) of + 1 -> + StanchionDetails = binary_to_term(riakc_obj:get_value(Obj)), + {ok, StanchionDetails}; + 0 -> + {error, notfound}; + N -> + Values = [binary_to_term(Value) || + Value <- riakc_obj:get_values(Obj), + Value /= <<>> % tombstone + ], + logger:warning("Read stanchion details riak object has ~b siblings." + " Please select a riak_cs node, reconfigure it with operation_mode = riak_cs_with_stanchion (or stanchion_only)," + " configure rest with operation_mode = riak_cs_only, and restart all nodes", [N]), + {ok, hd(Values)} + end; + _ -> + {error, notfound} + end. + +save_cluster_stanchion_details(HostPort) -> + logger:info("pretend we saved stanchion details: ~p", [HostPort]), + ok. + +this_host_addr() -> + {ok, Ifs} = inet:getifaddr(), + case lists:filtermap( + fun({_If, PL}) -> + case proplists:get_value(addr, PL) of + Defined when Defined /= {127,0,0,1}, + Defined /= {0,0,0,0} -> + Defined; + _ -> + false + end + end, Ifs) of + [IP] -> + IP; + [IP|_] -> + logger:warning("This host has multiple network interfaces configured." + " Selecting ~p to advrtise as stanchion_host to other cluster nodes", [IP]), + IP + end. get_option_val({Option, Default}) -> handle_get_env_result(Option, get_env(Option), Default); @@ -298,3 +373,16 @@ add_admin_dispatch_table(Config) -> UpdDispatchTable = proplists:get_value(dispatch, Config) ++ riak_cs_web:admin_api_dispatch_table(), [{dispatch, UpdDispatchTable} | proplists:delete(dispatch, Config)]. + + +riak_connection() -> + {Host, Port} = riak_cs_config:riak_host_port(), + Timeout = case application:get_env(riak_cs, riakc_connect_timeout) of + {ok, ConfigValue} -> + ConfigValue; + undefined -> + 10000 + end, + StartOptions = [{connect_timeout, Timeout}, + {auto_reconnect, true}], + riakc_pb_socket:start_link(Host, Port, StartOptions). From a7048fc40a30b38718ceaa89a2e8459302b8033b Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 6 Nov 2022 14:34:49 +0200 Subject: [PATCH 352/831] flesh out saving stanchion details to complete prev commit --- apps/riak_cs/src/riak_cs_sup.erl | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index ca65d73fe..1ad883da4 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -41,6 +41,8 @@ {operation_mode, auto}, {rewrite_module, ?S3_API_MOD}]). +-define(REASONABLY_SMALL_TIMEOUT, 1000). + -type startlink_err() :: {'already_started', pid()} | 'shutdown' | term(). -type startlink_ret() :: {'ok', pid()} | 'ignore' | {'error', startlink_err()}. -type proplist() :: proplists:proplist(). @@ -78,7 +80,7 @@ init2(Options) -> end, StanchionChildren = case do_we_get_to_run_stanchion(Mode) of - {use_this, HostPort} -> + {use_saved, HostPort} -> ok = apply_cluster_stanchion_details(HostPort), stanchion_stats:init(), stanchion_process_specs(); @@ -208,7 +210,7 @@ read_cluster_stanchion_data() -> {ok, Pbc} = riak_connection(), case riak_cs_pbc:get_sans_stats(Pbc, ?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, [{notfound_ok, false}], - riak_cs_config:get_user_timeout() div 10) of + ?REASONABLY_SMALL_TIMEOUT) of {ok, Obj} -> case riakc_obj:value_count(Obj) of 1 -> @@ -231,26 +233,33 @@ read_cluster_stanchion_data() -> end. save_cluster_stanchion_details(HostPort) -> - logger:info("pretend we saved stanchion details: ~p", [HostPort]), + {ok, Pbc} = riak_connection(), + ok = riak_cs_pbc:put_sans_stats( + Pbc, riakc_obj:new(?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, term_to_binary(HostPort)), + ?REASONABLY_SMALL_TIMEOUT), + logger:info("saved stanchion details: ~p", [HostPort]), ok. this_host_addr() -> - {ok, Ifs} = inet:getifaddr(), + {ok, Ifs} = inet:getifaddrs(), case lists:filtermap( fun({_If, PL}) -> case proplists:get_value(addr, PL) of - Defined when Defined /= {127,0,0,1}, + Defined when Defined /= undefined, + Defined /= {127,0,0,1}, Defined /= {0,0,0,0} -> - Defined; + {A1, A2, A3, A4} = Defined, + {true, {_If, io_lib:format("~b.~b.~b.~b", [A1, A2, A3, A4])}}; _ -> false end end, Ifs) of - [IP] -> + [{If, IP}] -> + logger:info("This host address is ~p on iface ~s", [IP, If]), IP; - [IP|_] -> + [{If, IP}|_] -> logger:warning("This host has multiple network interfaces configured." - " Selecting ~p to advrtise as stanchion_host to other cluster nodes", [IP]), + " Selecting ~p on ~s", [IP, If]), IP end. From 5aa8b7a3d3d4cd38c01844c30745fbedb7c775fe Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 6 Nov 2022 21:47:08 +0200 Subject: [PATCH 353/831] more future-proofing of crypto calls --- apps/riak_cs/src/riak_cs_s3_auth.erl | 2 +- apps/riak_cs/src/riak_cs_utils.erl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_s3_auth.erl b/apps/riak_cs/src/riak_cs_s3_auth.erl index 382a75f95..ed72d63ca 100644 --- a/apps/riak_cs/src/riak_cs_s3_auth.erl +++ b/apps/riak_cs/src/riak_cs_s3_auth.erl @@ -279,7 +279,7 @@ calculate_signature_v4(SecretAccessKey, mochihex:to_hex(hmac_sha256(SigningKey, StringToSign)). hmac_sha256(Key, Data) -> - crypto:hmac(sha256, Key, Data). + crypto:mac(hmac, sha256, Key, Data). hex_sha256hash(Data) -> mochihex:to_hex(crypto:hash(sha256, Data)). diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index ed6846b22..b8362c8e5 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -215,7 +215,7 @@ reduce_keys_and_manifests(Acc, _) -> Acc. -spec sha_mac(iolist() | binary(), iolist() | binary()) -> binary(). -sha_mac(Key,STS) -> crypto:hmac(sha, Key,STS). +sha_mac(Key,STS) -> crypto:mac(hmac, sha, Key,STS). -spec sha(binary()) -> binary(). sha(Bin) -> crypto:hash(sha, Bin). From a9b96128fc81c1425482eb7e86d17b39738e0ab2 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 6 Nov 2022 21:48:02 +0200 Subject: [PATCH 354/831] fix stanchion/ping wm handler --- apps/riak_cs/src/stanchion_web.erl | 1 + apps/riak_cs/src/stanchion_wm_ping.erl | 114 +++++++++++++++++++++++++ apps/riak_cs/src/velvet.erl | 2 +- 3 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 apps/riak_cs/src/stanchion_wm_ping.erl diff --git a/apps/riak_cs/src/stanchion_web.erl b/apps/riak_cs/src/stanchion_web.erl index 98d47e21c..8ee0f2234 100644 --- a/apps/riak_cs/src/stanchion_web.erl +++ b/apps/riak_cs/src/stanchion_web.erl @@ -32,6 +32,7 @@ dispatch_table() -> undefined -> false end, [ + {["ping"], stanchion_wm_ping, [{auth_bypass, true}]}, {["buckets"], stanchion_wm_buckets, [{auth_bypass, AuthBypass}]}, {["buckets", bucket, "acl"], stanchion_wm_acl, [{auth_bypass, AuthBypass}]}, {["buckets", bucket, "policy"], stanchion_wm_policy, [{auth_bypass, AuthBypass}]}, diff --git a/apps/riak_cs/src/stanchion_wm_ping.erl b/apps/riak_cs/src/stanchion_wm_ping.erl new file mode 100644 index 000000000..74377adee --- /dev/null +++ b/apps/riak_cs/src/stanchion_wm_ping.erl @@ -0,0 +1,114 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, +%% 2022 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(stanchion_wm_ping). + +-export([init/1, + service_available/2, + allowed_methods/2, + to_html/2, + finish_request/2]). + +-include("riak_cs.hrl"). +-include_lib("webmachine/include/webmachine.hrl"). + +-record(ping_context, {pool_pid=true :: boolean(), + riak_client :: undefined | riak_client()}). + +%% ------------------------------------------------------------------- +%% Webmachine callbacks +%% ------------------------------------------------------------------- + +init(_Config) -> + riak_cs_dtrace:dt_wm_entry(?MODULE, <<"init">>), + {ok, #ping_context{}}. + +-spec service_available(#wm_reqdata{}, #ping_context{}) -> {boolean(), #wm_reqdata{}, #ping_context{}}. +service_available(RD, Ctx) -> + riak_cs_dtrace:dt_wm_entry(?MODULE, <<"service_available">>), + {Available, UpdCtx} = riak_ping(get_connection_pid(), Ctx), + {Available, RD, UpdCtx}. + +-spec allowed_methods(term(), term()) -> {[atom()], term(), term()}. +allowed_methods(RD, Ctx) -> + riak_cs_dtrace:dt_wm_entry(?MODULE, <<"allowed_methods">>), + {['GET', 'HEAD'], RD, Ctx}. + +to_html(ReqData, Ctx) -> + {"OK", ReqData, Ctx}. + +finish_request(RD, Ctx=#ping_context{riak_client=undefined}) -> + riak_cs_dtrace:dt_wm_entry(?MODULE, <<"finish_request">>, [0], []), + {true, RD, Ctx}; +finish_request(RD, Ctx=#ping_context{riak_client=RcPid, + pool_pid=PoolPid}) -> + riak_cs_dtrace:dt_wm_entry(?MODULE, <<"finish_request">>, [1], []), + case PoolPid of + true -> + riak_cs_riak_client:checkin(RcPid); + false -> + riak_cs_riak_client:stop(RcPid) + end, + riak_cs_dtrace:dt_wm_return(?MODULE, <<"finish_request">>, [1], []), + {true, RD, Ctx#ping_context{riak_client=undefined}}. + +%% ------------------------------------------------------------------- +%% Internal functions +%% ------------------------------------------------------------------- + +-spec get_connection_pid() -> {riak_client(), boolean()}. +get_connection_pid() -> + case pool_checkout() of + full -> + non_pool_connection(); + RcPid -> + {RcPid, true} + end. + +-spec pool_checkout() -> full | riak_client(). +pool_checkout() -> + case riak_cs_riak_client:checkout(request_pool) of + {ok, RcPid} -> + RcPid; + {error, _Reason} -> + full + end. + +-spec non_pool_connection() -> {undefined | riak_client(), false}. +non_pool_connection() -> + case riak_cs_riak_client:start_link([]) of + {ok, RcPid} -> + {RcPid, false}; + {error, _} -> + {undefined, false} + end. + +-spec riak_ping({riak_client(), boolean()}, #ping_context{}) -> {boolean(), #ping_context{}}. +riak_ping({RcPid, PoolPid}, Ctx) -> + {ok, MasterPbc} = riak_cs_riak_client:master_pbc(RcPid), + Timeout = riak_cs_config:ping_timeout(), + Available = case catch riak_cs_pbc:ping(MasterPbc, Timeout, [riakc, ping]) of + pong -> + true; + _ -> + false + end, + {Available, Ctx#ping_context{riak_client=RcPid, pool_pid=PoolPid}}. diff --git a/apps/riak_cs/src/velvet.erl b/apps/riak_cs/src/velvet.erl index a77015a92..d67da611d 100644 --- a/apps/riak_cs/src/velvet.erl +++ b/apps/riak_cs/src/velvet.erl @@ -303,7 +303,7 @@ root_url(Ip, Port, false) -> %% @doc Assemble the URL for the ping resource -spec ping_url(string(), pos_integer(), boolean()) -> string(). ping_url(Ip, Port, Ssl) -> - lists:flatten([root_url(Ip, Port, Ssl), "ping/"]). + lists:flatten([root_url(Ip, Port, Ssl), "/ping"]). %% @doc Assemble the path for a bucket request -spec buckets_path(binary()) -> string(). From d3c662e645fc5cf0a501911e88df723c069500ef Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 6 Nov 2022 22:04:06 +0200 Subject: [PATCH 355/831] have all listeners listen on 0.0.0.0; add missing stanchion_host config entry --- config/sys.config.defaults | 4 ++-- config/sys.docker.config.src | 4 ++-- rel/pkg/deb/vars.config | 7 ++++--- rel/pkg/fbsdng/vars.config | 7 ++++--- rel/pkg/rpm/vars.config | 7 ++++--- rel/vars.config | 7 ++++--- rel/vars/dev_vars.config.src | 6 +++--- 7 files changed, 23 insertions(+), 19 deletions(-) diff --git a/config/sys.config.defaults b/config/sys.config.defaults index ce7bd78eb..b33826689 100644 --- a/config/sys.config.defaults +++ b/config/sys.config.defaults @@ -5,9 +5,9 @@ PLATFORM_BIN_DIR="./bin" ADMIN_KEY="admin-key" RIAK_HOST="127.0.0.1" RIAK_PORT=8087 -RCS_LISTENER_HOST="127.0.0.1" +RCS_LISTENER_IP="0.0.0.0" RCS_LISTENER_PORT=8080 -STANCHION_LISTENER_HOST="127.0.0.1" +STANCHION_LISTENER_IP="0.0.0.0" STANCHION_LISTENER_PORT=8085 STANCHION_HOST="127.0.0.1" diff --git a/config/sys.docker.config.src b/config/sys.docker.config.src index c77925a9f..4c1ad4fca 100644 --- a/config/sys.docker.config.src +++ b/config/sys.docker.config.src @@ -34,8 +34,8 @@ {anonymous_user_creation, ${ANONYMOUS_USER_CREATION}}, {stanchion_host,{${STANCHION_HOST}, ${STANCHION_PORT}}}, {riak_host, {${RIAK_HOST}, ${RIAK_PORT}}}, - {listener, {${RCS_LISTENER_HOST}, ${RCS_LISTENER_PORT}}}, - {stanchion_listener, ${STANCHION_LISTENER_HOST}, ${STANCHION_LISTENER_PORT}}, + {listener, {${RCS_LISTENER_IP}, ${RCS_LISTENER_PORT}}}, + {stanchion_listener, ${STANCHION_LISTENER_IP}, ${STANCHION_LISTENER_PORT}}, {stanchion_ssl, ${STANCHION_SSL}}, {stanchion_ssl_certfile, ${STANCHION_SSL_CERTFILE}}, {stanchion_ssl_keyfile, ${STANCHION_SSL_KEYFILE}}, diff --git a/rel/pkg/deb/vars.config b/rel/pkg/deb/vars.config index 49869906c..300bcd0af 100644 --- a/rel/pkg/deb/vars.config +++ b/rel/pkg/deb/vars.config @@ -16,15 +16,16 @@ %% %% riak-cs.conf %% -{cs_ip, "127.0.0.1"}. +{cs_ip, "0.0.0.0"}. {cs_port, 8080}. -{admin_ip, "127.0.0.1"}. +{admin_ip, "0.0.0.0"}. {admin_port, 8000}. {riak_ip, "127.0.0.1"}. {riak_pb_port, 8087}. {auth_bypass, false}. {admin_key, "admin-key"}. -{stanchion_ip, "127.0.0.1"}. +{stanchion_host, "127.0.0.1"}. +{stanchion_ip, "0.0.0.0"}. {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config index df8be6bf8..edf3dce08 100644 --- a/rel/pkg/fbsdng/vars.config +++ b/rel/pkg/fbsdng/vars.config @@ -14,15 +14,16 @@ {platform_patch_dir, "{{platform_lib_dir}}/patches"}. -{cs_ip, "127.0.0.1"}. +{cs_ip, "0.0.0.0"}. {cs_port, 8080}. -{admin_ip, "127.0.0.1"}. +{admin_ip, "0.0.0.0"}. {admin_port, 8000}. {riak_ip, "127.0.0.1"}. {riak_pb_port, 8087}. {auth_bypass, false}. {admin_key, "admin-key"}. -{stanchion_ip, "127.0.0.1"}. +{stanchion_host, "127.0.0.1"}. +{stanchion_ip, "0.0.0.0"}. {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index e3b05141c..93858f818 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -16,15 +16,16 @@ %% %% riak-cs.conf %% -{cs_ip, "127.0.0.1"}. +{cs_ip, "0.0.0.0"}. {cs_port, 8080}. -{admin_ip, "127.0.0.1"}. +{admin_ip, "0.0.0.0"}. {admin_port, 8000}. {riak_ip, "127.0.0.1"}. {riak_pb_port, 8087}. {auth_bypass, false}. {admin_key, "admin-key"}. -{stanchion_ip, "127.0.0.1"}. +{stanchion_host, "127.0.0.1"}. +{stanchion_ip, "0.0.0.0"}. {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. diff --git a/rel/vars.config b/rel/vars.config index 67195c6b9..6fe55495b 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -15,15 +15,16 @@ %% %% riak-cs.conf %% -{cs_ip, "127.0.0.1"}. +{cs_ip, "0.0.0.0"}. {cs_port, 8080}. -{admin_ip, "127.0.0.1"}. +{admin_ip, "0.0.0.0"}. {admin_port, 8000}. {riak_ip, "127.0.0.1"}. {riak_pb_port, 8087}. {auth_bypass, false}. {admin_key, "admin-key"}. -{stanchion_ip, "127.0.0.1"}. +{stanchion_host, "127.0.0.1"}. %% access stanchion when it runs on some other node +{stanchion_ip, "0.0.0.0"}. %% listen on this address {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. %% to match values in config/sys.docker.config, include/riak_ts.hrl diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index b6a49007f..e976869a4 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -18,15 +18,15 @@ %% %% etc/app.config %% -{cs_ip, "127.0.0.1"}. +{cs_ip, "0.0.0.0"}. {cs_port, @CSPORT@}. -{admin_ip, "127.0.0.1"}. +{admin_ip, "0.0.0.0"}. {admin_port, @ADMINPORT@}. {riak_ip, "127.0.0.1"}. {riak_pb_port, @RIAKPBPORT@}. {auth_bypass, false}. {admin_key, "admin-key"}. -{stanchion_ip, "127.0.0.1"}. +{stanchion_ip, "0.0.0.0"}. {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. From 9cb15f141d7434840fbc4bbf19ce7dd5436d5452 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 6 Nov 2022 22:05:35 +0200 Subject: [PATCH 356/831] make the two webmachines coexist --- apps/riak_cs/src/riak_cs_sup.erl | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index 1ad883da4..ffb1827c1 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -72,8 +72,6 @@ init2(Options) -> M == riak_cs_only; M == riak_cs_with_stanchion -> riak_cs_stats:init(), - application:set_env(webmachine, rewrite_module, - proplists:get_value(rewrite_module, Options)), pool_specs(Options) ++ rcs_process_specs() ++ web_specs(Options); _ -> [] From accd81fa66cfbacfc426d5895734baec59153c52 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 6 Nov 2022 22:06:10 +0200 Subject: [PATCH 357/831] die, lager, die! --- rel/pkg/deb/vars.config | 3 +-- rel/pkg/fbsdng/vars.config | 2 +- rel/pkg/rpm/vars.config | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/rel/pkg/deb/vars.config b/rel/pkg/deb/vars.config index 300bcd0af..517f2ac72 100644 --- a/rel/pkg/deb/vars.config +++ b/rel/pkg/deb/vars.config @@ -47,8 +47,7 @@ {cuttlefish, "on"}. {cuttlefish_conf, "riak-cs.conf"}. -%% lager -{console_log_default, file}. +{log_level, info}. %% %% etc/vm.args diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config index edf3dce08..488a8b09f 100644 --- a/rel/pkg/fbsdng/vars.config +++ b/rel/pkg/fbsdng/vars.config @@ -35,7 +35,7 @@ {pid_dir, "/var/run/riak-cs"}. -{console_log_default, file}. +{log_level, info}. {cuttlefish, "on"}. {cuttlefish_conf, "riak-cs.conf"}. diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index 93858f818..3e376cc3d 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -45,8 +45,7 @@ {cuttlefish, "on"}. {cuttlefish_conf, "riak-cs.conf"}. -%% lager -{console_log_default, file}. +{log_level, info}. %% %% etc/vm.args From 664ef8e18f431eb64e70c610299a602ed5c6693d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 6 Nov 2022 22:06:55 +0200 Subject: [PATCH 358/831] have devrel connect to riak on standard port 8087 --- rel/vars/dev_vars.config.src | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index e976869a4..550db659a 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -23,7 +23,7 @@ {admin_ip, "0.0.0.0"}. {admin_port, @ADMINPORT@}. {riak_ip, "127.0.0.1"}. -{riak_pb_port, @RIAKPBPORT@}. +{riak_pb_port, 8087}. {auth_bypass, false}. {admin_key, "admin-key"}. {stanchion_ip, "0.0.0.0"}. From 3bbc8bb0510e4acc30f5d7938425c4de207efffd Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 6 Nov 2022 22:07:12 +0200 Subject: [PATCH 359/831] have devrels log at debug level --- rel/vars/dev_vars.config.src | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index 550db659a..984b416f9 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -34,7 +34,7 @@ {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. -{log_level, info}. +{log_level, debug}. %% %% etc/vm.args From b6a093183057a423909398192c555cfe6db69f09 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 6 Nov 2022 22:11:21 +0200 Subject: [PATCH 360/831] expect listeners to be fully configured --- apps/riak_cs/src/riak_cs_sup.erl | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index ffb1827c1..5e0fb4c51 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -34,7 +34,7 @@ -include("riak_cs.hrl"). -define(OPTIONS, [connection_pools, - {listener, {"0.0.0.0", 80}}, + listener, admin_listener, ssl, admin_ssl, @@ -132,10 +132,7 @@ rcs_process_specs() -> ++ riak_cs_mb_helper:process_specs(). stanchion_process_specs() -> - {Ip, Port} = case application:get_env(riak_cs, stanchion_listener) of - {ok, {_, _} = HostPort} -> HostPort; - undefined -> {"0.0.0.0", 80} - end, + {ok, {Ip, Port}} = application:get_env(riak_cs, stanchion_listener), %% Hide any bags from user-facing parts. case application:get_env(riak_cs, supercluster_members) of From 8e7bd76c71a93555f9c14c951a7583b3d3e42d87 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 6 Nov 2022 22:12:17 +0200 Subject: [PATCH 361/831] operation_mode auto now functional --- apps/riak_cs/src/riak_cs_sup.erl | 84 +++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 29 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index 5e0fb4c51..9d6e4151b 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -66,6 +66,9 @@ init([]) -> init2(Options) -> Mode = proplists:get_value(operation_mode, Options), + ThisHostAddr = this_host_addr(), + {ok, Pbc} = riak_connection(), + ok = ensure_service_bucket_props(Pbc), RCSChildren = case Mode of M when M == auto; @@ -77,15 +80,13 @@ init2(Options) -> [] end, StanchionChildren = - case do_we_get_to_run_stanchion(Mode) of + case do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) of {use_saved, HostPort} -> - ok = apply_cluster_stanchion_details(HostPort), - stanchion_stats:init(), - stanchion_process_specs(); + ok = apply_stanchion_details(HostPort), + []; use_ours -> - Host = this_host_addr(), {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), - ok = save_cluster_stanchion_details({Host, Port}), + ok = save_stanchion_data(Pbc, {ThisHostAddr, Port}), stanchion_stats:init(), stanchion_process_specs() end, @@ -94,6 +95,9 @@ init2(Options) -> period => 10}, RCSChildren ++ StanchionChildren }}. +ensure_service_bucket_props(Pbc) -> + riakc_pb_socket:set_bucket(Pbc, ?SERVICE_BUCKET, [{allow_mult, false}]). + rcs_process_specs() -> [ #{id => riak_cs_access_archiver_manager, start => {riak_cs_access_archiver_manager, start_link, []}}, @@ -140,8 +144,7 @@ stanchion_process_specs() -> {ok, Bags} -> application:set_env(riak_cs, bags, Bags) end, - WebConfig1 = [ - {dispatch, stanchion_web:dispatch_table()}, + WebConfig1 = [{dispatch, stanchion_web:dispatch_table()}, {ip, Ip}, {port, Port}, {nodelay, true}, @@ -173,36 +176,53 @@ stanchion_process_specs() -> -do_we_get_to_run_stanchion(Mode) -> - case read_cluster_stanchion_data() of - {ok, {Host, Port}} when Mode == auto -> - logger:info("found stanchion details, and will use ~s:~b", [Host, Port]), - {use_saved, {Host, Port}}; - {ok, {SavedHost, SavedPort}} - when Mode == riak_cs_with_stanchion; - Mode == stanchion_only -> - {ok, {ConfiguredHost, ConfiguredPort}} = application:get_env(riak_cs, stanchion_listener), - case this_host_addr() of - ConfiguredHost when ConfiguredPort == SavedPort -> +do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) -> + {ok, {ConfiguredIP, ConfiguredPort}} = application:get_env(riak_cs, stanchion_listener), + case read_stanchion_data(Pbc) of + + {ok, {{Host, Port}, Node}} when Mode == auto, + Host == ThisHostAddr, + Node == node() -> + logger:info("read stanchion details previously saved by this host;" + " will start stanchion again at ~s:~b", [Host, Port]), + use_ours; + + {ok, {{Host, Port}, Node}} when Mode == auto -> + case check_stanchion_reachable(Host, Port) of + ok -> + logger:info("read stanchion details, and will use ~s:~b (on node ~s)", + [Host, Port, Node]), + {use_saved, {Host, Port}}; + Error -> + logger:warning("stanchion at ~s:~b not reachable (~p); will set it up here", [Host, Port, Error]), + use_ours + end; + + {ok, {{SavedHost, SavedPort}, Node}} when Mode == riak_cs_with_stanchion; + Mode == stanchion_only -> + case ThisHostAddr of + ConfiguredIP when ConfiguredPort == SavedPort, + Node == node() -> %% we read what we must have saved before {use_saved, {SavedHost, SavedPort}}; _ -> logger:error("this node is configured to run stanchion but" - " stanchion has already been started at ~s:~b", [SavedHost, SavedPort]), + " stanchion has already been started at ~s:~b", + [SavedHost, SavedPort]), conflicting_stanchion_configuration end; - {error, notfound} -> - logger:info("no stanchion_host saved; going to start stanchion on this node"), + + _ -> + logger:info("no previously saved stanchion details; going to start stanchion on this node"), use_ours end. -apply_cluster_stanchion_details({Host, Port}) -> +apply_stanchion_details({Host, Port}) -> application:set_env(riak_cs, stanchion_host, Host), application:set_env(riak_cs, stanchion_port, Port), ok. -read_cluster_stanchion_data() -> - {ok, Pbc} = riak_connection(), +read_stanchion_data(Pbc) -> case riak_cs_pbc:get_sans_stats(Pbc, ?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, [{notfound_ok, false}], ?REASONABLY_SMALL_TIMEOUT) of @@ -227,12 +247,12 @@ read_cluster_stanchion_data() -> {error, notfound} end. -save_cluster_stanchion_details(HostPort) -> - {ok, Pbc} = riak_connection(), +save_stanchion_data(Pbc, HostPort) -> ok = riak_cs_pbc:put_sans_stats( - Pbc, riakc_obj:new(?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, term_to_binary(HostPort)), + Pbc, riakc_obj:new(?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, + term_to_binary({HostPort, node()})), ?REASONABLY_SMALL_TIMEOUT), - logger:info("saved stanchion details: ~p", [HostPort]), + logger:info("saved stanchion details: ~p", [{HostPort, node()}]), ok. this_host_addr() -> @@ -258,6 +278,12 @@ this_host_addr() -> IP end. +check_stanchion_reachable(Host, Port) -> + {ok, UseSSL} = application:get_env(riak_cs, stanchion_ssl), + velvet:ping(Host, Port, UseSSL). + + + get_option_val({Option, Default}) -> handle_get_env_result(Option, get_env(Option), Default); get_option_val(Option) -> From 87cf5dc9f42d4c1c65868d673b65a50ab98ab598 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 6 Nov 2022 22:16:17 +0200 Subject: [PATCH 362/831] pin deps, update rebar.lock --- rebar.config | 2 +- rebar.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/rebar.config b/rebar.config index 2ec73c32f..cf819da3f 100644 --- a/rebar.config +++ b/rebar.config @@ -29,7 +29,7 @@ , {poolboy, {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {riak_repl_pb_api, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.9"}}} - , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {branch, "develop"}}} + , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.9rc1"}}} ] }. diff --git a/rebar.lock b/rebar.lock index 699e8b6d9..68df5e70f 100644 --- a/rebar.lock +++ b/rebar.lock @@ -23,6 +23,10 @@ {ref,"098efad8f85dfe556d64e2cf6ce31f2075808f67"}}, 1}, {<<"quickrand">>,{pkg,<<"quickrand">>,<<"2.0.5">>},1}, + {<<"riak_cs_multibag">>, + {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", + {ref,"0dcb8ef180d745ae7d8a57e21d4b2f97565271af"}}, + 0}, {<<"riak_pb">>, {git,"https://github.com/basho/riak_pb.git", {ref,"b7abca90e4c708073021d2c4e18c896f1a10b838"}}, @@ -37,7 +41,6 @@ 0}, {<<"setup">>,{pkg,<<"setup">>,<<"2.1.0">>},1}, {<<"uuid">>,{pkg,<<"uuid_erl">>,<<"2.0.5">>},0}, - {<<"uuid_erl">>,{pkg,<<"uuid_erl">>,<<"2.0.5">>},0}, {<<"webmachine">>,{pkg,<<"webmachine">>,<<"1.11.1">>},0}]}. [ {pkg_hash,[ @@ -51,7 +54,6 @@ {<<"quickrand">>, <<"06FCAD85CB47D5C85C51D6BC9C84A082501BA098A89D64AD0A2F69599E034C04">>}, {<<"setup">>, <<"05F69185A5EB71474C9BC6BA892565651EC7507791F85632B7B914DBFE130510">>}, {<<"uuid">>, <<"60FAEEB7EDFD40847ED13CB0DD1044BAABE4E79A00C0CA9C4D13A073914B1016">>}, - {<<"uuid_erl">>, <<"60FAEEB7EDFD40847ED13CB0DD1044BAABE4E79A00C0CA9C4D13A073914B1016">>}, {<<"webmachine">>, <<"422BEAD629F3D6C10FB0F24BE4CEE9648338F90099072AE091FADF86BA70C53F">>}]}, {pkg_hash_ext,[ {<<"bear">>, <<"157B67901ADF84FF0DA6EAE035CA1292A0AC18AA55148154D8C582B2C68959DB">>}, @@ -64,6 +66,5 @@ {<<"quickrand">>, <<"252CF0493570EBF1A58985CB71990982CDDCD4396B6427F1E10CF58924C1C052">>}, {<<"setup">>, <<"EFD072578F0CF85BEA96CAAFFC7ADB0992398272522660A136E10567377071C5">>}, {<<"uuid">>, <<"E54373262CA88401689277947C54B95E9ECBC977BD5C57C9DD44AD9DA278E360">>}, - {<<"uuid_erl">>, <<"E54373262CA88401689277947C54B95E9ECBC977BD5C57C9DD44AD9DA278E360">>}, {<<"webmachine">>, <<"4914961217736701CADA1345D7C79C6DB50A636CF7BC6C757DE923B7C7D70B21">>}]} ]. From 50dc76824dcdf1a6a73e2e58c0117ae9c3e7885a Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 7 Nov 2022 15:31:46 +0200 Subject: [PATCH 363/831] too many erl files in src/ --- apps/riak_cs/src/{ => common}/rcs_common_manifest.erl | 0 apps/riak_cs/src/{ => common}/rcs_common_manifest_resolution.erl | 0 apps/riak_cs/src/{ => common}/rcs_common_manifest_utils.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_access.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_access_archiver.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_access_archiver_manager.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_access_console.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_access_log_handler.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_acl.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_acl_utils.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_api.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_app.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_auth.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_block_server.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_bucket.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_config.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_console.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_copy_object.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_delete_fsm.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_delete_fsm_sup.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_diags.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_dtrace.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_gc.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_gc_batch.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_gc_console.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_gc_key_list.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_gc_manager.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_gc_worker.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_get_fsm.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_get_fsm_sup.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_json.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_keystone_auth.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_kv_multi_backend.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_lfs_utils.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_list_objects.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_list_objects_ets_cache.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_list_objects_ets_cache_sup.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_list_objects_fsm.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_list_objects_fsm_v2.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_list_objects_utils.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_manifest.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_manifest_fsm.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_manifest_utils.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_mb_helper.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_mp_utils.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_oos_response.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_oos_rewrite.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_oos_utils.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_pbc.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_policy.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_put_fsm.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_put_fsm_sup.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_quota.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_quota_sup.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_riak_client.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_riakc_pool_worker.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_s3_auth.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_s3_passthru_auth.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_s3_policy.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_s3_response.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_s3_rewrite.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_s3_rewrite_legacy.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_simple_bwlimiter.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_simple_quota.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_stanchion_console.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_stats.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_storage.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_storage_console.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_storage_d.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_storage_mr.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_sup.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_user.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_utils.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_web.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_xml.erl | 0 apps/riak_cs/src/{ => cs}/riak_cs_yessir_riak_client.erl | 0 apps/riak_cs/src/{ => cs}/velvet.erl | 0 apps/riak_cs/src/{ => cs}/velvet_auth.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_acl.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_delete.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_location.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_policy.erl | 0 .../riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_request_payment.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_uploads.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_versioning.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_buckets.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_common.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_error_handler.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_not_implemented.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_object.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_object_acl.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_object_upload.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_object_upload_part.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_object_versions.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_objects.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_ping.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_stats.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_usage.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_user.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_users.erl | 0 apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_utils.erl | 0 apps/riak_cs/src/{ => lib}/base64url.erl | 0 apps/riak_cs/src/{ => lib}/exprec.erl | 0 apps/riak_cs/src/{ => lib}/rts.erl | 0 apps/riak_cs/src/{ => lib}/table.erl | 0 apps/riak_cs/src/{ => lib}/twop_set.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_acl_utils.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_auth.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_blockall_auth.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_console.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_multipart.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_passthru_auth.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_response.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_server.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_server_sup.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_stats.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_utils.erl | 0 apps/riak_cs/src/{ => stanchion}/stanchion_web.erl | 0 apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_acl.erl | 0 apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_bucket.erl | 0 apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_buckets.erl | 0 .../riak_cs/src/{ => stanchion/wm}/stanchion_wm_error_handler.erl | 0 apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_ping.erl | 0 apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_policy.erl | 0 apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_stats.erl | 0 apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_user.erl | 0 apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_users.erl | 0 apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_utils.erl | 0 apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_versioning.erl | 0 130 files changed, 0 insertions(+), 0 deletions(-) rename apps/riak_cs/src/{ => common}/rcs_common_manifest.erl (100%) rename apps/riak_cs/src/{ => common}/rcs_common_manifest_resolution.erl (100%) rename apps/riak_cs/src/{ => common}/rcs_common_manifest_utils.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_access.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_access_archiver.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_access_archiver_manager.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_access_console.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_access_log_handler.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_acl.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_acl_utils.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_api.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_app.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_auth.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_block_server.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_bucket.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_config.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_console.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_copy_object.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_delete_fsm.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_delete_fsm_sup.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_diags.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_dtrace.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_gc.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_gc_batch.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_gc_console.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_gc_key_list.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_gc_manager.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_gc_worker.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_get_fsm.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_get_fsm_sup.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_json.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_keystone_auth.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_kv_multi_backend.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_lfs_utils.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_list_objects.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_list_objects_ets_cache.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_list_objects_ets_cache_sup.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_list_objects_fsm.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_list_objects_fsm_v2.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_list_objects_utils.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_manifest.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_manifest_fsm.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_manifest_utils.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_mb_helper.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_mp_utils.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_oos_response.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_oos_rewrite.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_oos_utils.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_pbc.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_policy.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_put_fsm.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_put_fsm_sup.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_quota.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_quota_sup.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_riak_client.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_riakc_pool_worker.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_s3_auth.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_s3_passthru_auth.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_s3_policy.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_s3_response.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_s3_rewrite.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_s3_rewrite_legacy.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_simple_bwlimiter.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_simple_quota.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_stanchion_console.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_stats.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_storage.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_storage_console.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_storage_d.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_storage_mr.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_sup.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_user.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_utils.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_web.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_xml.erl (100%) rename apps/riak_cs/src/{ => cs}/riak_cs_yessir_riak_client.erl (100%) rename apps/riak_cs/src/{ => cs}/velvet.erl (100%) rename apps/riak_cs/src/{ => cs}/velvet_auth.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_acl.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_delete.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_location.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_policy.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_request_payment.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_uploads.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_bucket_versioning.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_buckets.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_common.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_error_handler.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_not_implemented.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_object.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_object_acl.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_object_upload.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_object_upload_part.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_object_versions.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_objects.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_ping.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_stats.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_usage.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_user.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_users.erl (100%) rename apps/riak_cs/src/{ => cs/wm}/riak_cs_wm_utils.erl (100%) rename apps/riak_cs/src/{ => lib}/base64url.erl (100%) rename apps/riak_cs/src/{ => lib}/exprec.erl (100%) rename apps/riak_cs/src/{ => lib}/rts.erl (100%) rename apps/riak_cs/src/{ => lib}/table.erl (100%) rename apps/riak_cs/src/{ => lib}/twop_set.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_acl_utils.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_auth.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_blockall_auth.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_console.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_multipart.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_passthru_auth.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_response.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_server.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_server_sup.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_stats.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_utils.erl (100%) rename apps/riak_cs/src/{ => stanchion}/stanchion_web.erl (100%) rename apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_acl.erl (100%) rename apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_bucket.erl (100%) rename apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_buckets.erl (100%) rename apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_error_handler.erl (100%) rename apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_ping.erl (100%) rename apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_policy.erl (100%) rename apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_stats.erl (100%) rename apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_user.erl (100%) rename apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_users.erl (100%) rename apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_utils.erl (100%) rename apps/riak_cs/src/{ => stanchion/wm}/stanchion_wm_versioning.erl (100%) diff --git a/apps/riak_cs/src/rcs_common_manifest.erl b/apps/riak_cs/src/common/rcs_common_manifest.erl similarity index 100% rename from apps/riak_cs/src/rcs_common_manifest.erl rename to apps/riak_cs/src/common/rcs_common_manifest.erl diff --git a/apps/riak_cs/src/rcs_common_manifest_resolution.erl b/apps/riak_cs/src/common/rcs_common_manifest_resolution.erl similarity index 100% rename from apps/riak_cs/src/rcs_common_manifest_resolution.erl rename to apps/riak_cs/src/common/rcs_common_manifest_resolution.erl diff --git a/apps/riak_cs/src/rcs_common_manifest_utils.erl b/apps/riak_cs/src/common/rcs_common_manifest_utils.erl similarity index 100% rename from apps/riak_cs/src/rcs_common_manifest_utils.erl rename to apps/riak_cs/src/common/rcs_common_manifest_utils.erl diff --git a/apps/riak_cs/src/riak_cs_access.erl b/apps/riak_cs/src/cs/riak_cs_access.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_access.erl rename to apps/riak_cs/src/cs/riak_cs_access.erl diff --git a/apps/riak_cs/src/riak_cs_access_archiver.erl b/apps/riak_cs/src/cs/riak_cs_access_archiver.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_access_archiver.erl rename to apps/riak_cs/src/cs/riak_cs_access_archiver.erl diff --git a/apps/riak_cs/src/riak_cs_access_archiver_manager.erl b/apps/riak_cs/src/cs/riak_cs_access_archiver_manager.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_access_archiver_manager.erl rename to apps/riak_cs/src/cs/riak_cs_access_archiver_manager.erl diff --git a/apps/riak_cs/src/riak_cs_access_console.erl b/apps/riak_cs/src/cs/riak_cs_access_console.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_access_console.erl rename to apps/riak_cs/src/cs/riak_cs_access_console.erl diff --git a/apps/riak_cs/src/riak_cs_access_log_handler.erl b/apps/riak_cs/src/cs/riak_cs_access_log_handler.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_access_log_handler.erl rename to apps/riak_cs/src/cs/riak_cs_access_log_handler.erl diff --git a/apps/riak_cs/src/riak_cs_acl.erl b/apps/riak_cs/src/cs/riak_cs_acl.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_acl.erl rename to apps/riak_cs/src/cs/riak_cs_acl.erl diff --git a/apps/riak_cs/src/riak_cs_acl_utils.erl b/apps/riak_cs/src/cs/riak_cs_acl_utils.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_acl_utils.erl rename to apps/riak_cs/src/cs/riak_cs_acl_utils.erl diff --git a/apps/riak_cs/src/riak_cs_api.erl b/apps/riak_cs/src/cs/riak_cs_api.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_api.erl rename to apps/riak_cs/src/cs/riak_cs_api.erl diff --git a/apps/riak_cs/src/riak_cs_app.erl b/apps/riak_cs/src/cs/riak_cs_app.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_app.erl rename to apps/riak_cs/src/cs/riak_cs_app.erl diff --git a/apps/riak_cs/src/riak_cs_auth.erl b/apps/riak_cs/src/cs/riak_cs_auth.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_auth.erl rename to apps/riak_cs/src/cs/riak_cs_auth.erl diff --git a/apps/riak_cs/src/riak_cs_block_server.erl b/apps/riak_cs/src/cs/riak_cs_block_server.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_block_server.erl rename to apps/riak_cs/src/cs/riak_cs_block_server.erl diff --git a/apps/riak_cs/src/riak_cs_bucket.erl b/apps/riak_cs/src/cs/riak_cs_bucket.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_bucket.erl rename to apps/riak_cs/src/cs/riak_cs_bucket.erl diff --git a/apps/riak_cs/src/riak_cs_config.erl b/apps/riak_cs/src/cs/riak_cs_config.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_config.erl rename to apps/riak_cs/src/cs/riak_cs_config.erl diff --git a/apps/riak_cs/src/riak_cs_console.erl b/apps/riak_cs/src/cs/riak_cs_console.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_console.erl rename to apps/riak_cs/src/cs/riak_cs_console.erl diff --git a/apps/riak_cs/src/riak_cs_copy_object.erl b/apps/riak_cs/src/cs/riak_cs_copy_object.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_copy_object.erl rename to apps/riak_cs/src/cs/riak_cs_copy_object.erl diff --git a/apps/riak_cs/src/riak_cs_delete_fsm.erl b/apps/riak_cs/src/cs/riak_cs_delete_fsm.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_delete_fsm.erl rename to apps/riak_cs/src/cs/riak_cs_delete_fsm.erl diff --git a/apps/riak_cs/src/riak_cs_delete_fsm_sup.erl b/apps/riak_cs/src/cs/riak_cs_delete_fsm_sup.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_delete_fsm_sup.erl rename to apps/riak_cs/src/cs/riak_cs_delete_fsm_sup.erl diff --git a/apps/riak_cs/src/riak_cs_diags.erl b/apps/riak_cs/src/cs/riak_cs_diags.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_diags.erl rename to apps/riak_cs/src/cs/riak_cs_diags.erl diff --git a/apps/riak_cs/src/riak_cs_dtrace.erl b/apps/riak_cs/src/cs/riak_cs_dtrace.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_dtrace.erl rename to apps/riak_cs/src/cs/riak_cs_dtrace.erl diff --git a/apps/riak_cs/src/riak_cs_gc.erl b/apps/riak_cs/src/cs/riak_cs_gc.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_gc.erl rename to apps/riak_cs/src/cs/riak_cs_gc.erl diff --git a/apps/riak_cs/src/riak_cs_gc_batch.erl b/apps/riak_cs/src/cs/riak_cs_gc_batch.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_gc_batch.erl rename to apps/riak_cs/src/cs/riak_cs_gc_batch.erl diff --git a/apps/riak_cs/src/riak_cs_gc_console.erl b/apps/riak_cs/src/cs/riak_cs_gc_console.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_gc_console.erl rename to apps/riak_cs/src/cs/riak_cs_gc_console.erl diff --git a/apps/riak_cs/src/riak_cs_gc_key_list.erl b/apps/riak_cs/src/cs/riak_cs_gc_key_list.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_gc_key_list.erl rename to apps/riak_cs/src/cs/riak_cs_gc_key_list.erl diff --git a/apps/riak_cs/src/riak_cs_gc_manager.erl b/apps/riak_cs/src/cs/riak_cs_gc_manager.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_gc_manager.erl rename to apps/riak_cs/src/cs/riak_cs_gc_manager.erl diff --git a/apps/riak_cs/src/riak_cs_gc_worker.erl b/apps/riak_cs/src/cs/riak_cs_gc_worker.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_gc_worker.erl rename to apps/riak_cs/src/cs/riak_cs_gc_worker.erl diff --git a/apps/riak_cs/src/riak_cs_get_fsm.erl b/apps/riak_cs/src/cs/riak_cs_get_fsm.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_get_fsm.erl rename to apps/riak_cs/src/cs/riak_cs_get_fsm.erl diff --git a/apps/riak_cs/src/riak_cs_get_fsm_sup.erl b/apps/riak_cs/src/cs/riak_cs_get_fsm_sup.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_get_fsm_sup.erl rename to apps/riak_cs/src/cs/riak_cs_get_fsm_sup.erl diff --git a/apps/riak_cs/src/riak_cs_json.erl b/apps/riak_cs/src/cs/riak_cs_json.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_json.erl rename to apps/riak_cs/src/cs/riak_cs_json.erl diff --git a/apps/riak_cs/src/riak_cs_keystone_auth.erl b/apps/riak_cs/src/cs/riak_cs_keystone_auth.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_keystone_auth.erl rename to apps/riak_cs/src/cs/riak_cs_keystone_auth.erl diff --git a/apps/riak_cs/src/riak_cs_kv_multi_backend.erl b/apps/riak_cs/src/cs/riak_cs_kv_multi_backend.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_kv_multi_backend.erl rename to apps/riak_cs/src/cs/riak_cs_kv_multi_backend.erl diff --git a/apps/riak_cs/src/riak_cs_lfs_utils.erl b/apps/riak_cs/src/cs/riak_cs_lfs_utils.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_lfs_utils.erl rename to apps/riak_cs/src/cs/riak_cs_lfs_utils.erl diff --git a/apps/riak_cs/src/riak_cs_list_objects.erl b/apps/riak_cs/src/cs/riak_cs_list_objects.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_list_objects.erl rename to apps/riak_cs/src/cs/riak_cs_list_objects.erl diff --git a/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl rename to apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl diff --git a/apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache_sup.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl rename to apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache_sup.erl diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_list_objects_fsm.erl rename to apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl diff --git a/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl rename to apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl diff --git a/apps/riak_cs/src/riak_cs_list_objects_utils.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_utils.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_list_objects_utils.erl rename to apps/riak_cs/src/cs/riak_cs_list_objects_utils.erl diff --git a/apps/riak_cs/src/riak_cs_manifest.erl b/apps/riak_cs/src/cs/riak_cs_manifest.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_manifest.erl rename to apps/riak_cs/src/cs/riak_cs_manifest.erl diff --git a/apps/riak_cs/src/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_manifest_fsm.erl rename to apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl diff --git a/apps/riak_cs/src/riak_cs_manifest_utils.erl b/apps/riak_cs/src/cs/riak_cs_manifest_utils.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_manifest_utils.erl rename to apps/riak_cs/src/cs/riak_cs_manifest_utils.erl diff --git a/apps/riak_cs/src/riak_cs_mb_helper.erl b/apps/riak_cs/src/cs/riak_cs_mb_helper.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_mb_helper.erl rename to apps/riak_cs/src/cs/riak_cs_mb_helper.erl diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/cs/riak_cs_mp_utils.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_mp_utils.erl rename to apps/riak_cs/src/cs/riak_cs_mp_utils.erl diff --git a/apps/riak_cs/src/riak_cs_oos_response.erl b/apps/riak_cs/src/cs/riak_cs_oos_response.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_oos_response.erl rename to apps/riak_cs/src/cs/riak_cs_oos_response.erl diff --git a/apps/riak_cs/src/riak_cs_oos_rewrite.erl b/apps/riak_cs/src/cs/riak_cs_oos_rewrite.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_oos_rewrite.erl rename to apps/riak_cs/src/cs/riak_cs_oos_rewrite.erl diff --git a/apps/riak_cs/src/riak_cs_oos_utils.erl b/apps/riak_cs/src/cs/riak_cs_oos_utils.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_oos_utils.erl rename to apps/riak_cs/src/cs/riak_cs_oos_utils.erl diff --git a/apps/riak_cs/src/riak_cs_pbc.erl b/apps/riak_cs/src/cs/riak_cs_pbc.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_pbc.erl rename to apps/riak_cs/src/cs/riak_cs_pbc.erl diff --git a/apps/riak_cs/src/riak_cs_policy.erl b/apps/riak_cs/src/cs/riak_cs_policy.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_policy.erl rename to apps/riak_cs/src/cs/riak_cs_policy.erl diff --git a/apps/riak_cs/src/riak_cs_put_fsm.erl b/apps/riak_cs/src/cs/riak_cs_put_fsm.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_put_fsm.erl rename to apps/riak_cs/src/cs/riak_cs_put_fsm.erl diff --git a/apps/riak_cs/src/riak_cs_put_fsm_sup.erl b/apps/riak_cs/src/cs/riak_cs_put_fsm_sup.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_put_fsm_sup.erl rename to apps/riak_cs/src/cs/riak_cs_put_fsm_sup.erl diff --git a/apps/riak_cs/src/riak_cs_quota.erl b/apps/riak_cs/src/cs/riak_cs_quota.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_quota.erl rename to apps/riak_cs/src/cs/riak_cs_quota.erl diff --git a/apps/riak_cs/src/riak_cs_quota_sup.erl b/apps/riak_cs/src/cs/riak_cs_quota_sup.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_quota_sup.erl rename to apps/riak_cs/src/cs/riak_cs_quota_sup.erl diff --git a/apps/riak_cs/src/riak_cs_riak_client.erl b/apps/riak_cs/src/cs/riak_cs_riak_client.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_riak_client.erl rename to apps/riak_cs/src/cs/riak_cs_riak_client.erl diff --git a/apps/riak_cs/src/riak_cs_riakc_pool_worker.erl b/apps/riak_cs/src/cs/riak_cs_riakc_pool_worker.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_riakc_pool_worker.erl rename to apps/riak_cs/src/cs/riak_cs_riakc_pool_worker.erl diff --git a/apps/riak_cs/src/riak_cs_s3_auth.erl b/apps/riak_cs/src/cs/riak_cs_s3_auth.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_s3_auth.erl rename to apps/riak_cs/src/cs/riak_cs_s3_auth.erl diff --git a/apps/riak_cs/src/riak_cs_s3_passthru_auth.erl b/apps/riak_cs/src/cs/riak_cs_s3_passthru_auth.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_s3_passthru_auth.erl rename to apps/riak_cs/src/cs/riak_cs_s3_passthru_auth.erl diff --git a/apps/riak_cs/src/riak_cs_s3_policy.erl b/apps/riak_cs/src/cs/riak_cs_s3_policy.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_s3_policy.erl rename to apps/riak_cs/src/cs/riak_cs_s3_policy.erl diff --git a/apps/riak_cs/src/riak_cs_s3_response.erl b/apps/riak_cs/src/cs/riak_cs_s3_response.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_s3_response.erl rename to apps/riak_cs/src/cs/riak_cs_s3_response.erl diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/cs/riak_cs_s3_rewrite.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_s3_rewrite.erl rename to apps/riak_cs/src/cs/riak_cs_s3_rewrite.erl diff --git a/apps/riak_cs/src/riak_cs_s3_rewrite_legacy.erl b/apps/riak_cs/src/cs/riak_cs_s3_rewrite_legacy.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_s3_rewrite_legacy.erl rename to apps/riak_cs/src/cs/riak_cs_s3_rewrite_legacy.erl diff --git a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl b/apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_simple_bwlimiter.erl rename to apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl diff --git a/apps/riak_cs/src/riak_cs_simple_quota.erl b/apps/riak_cs/src/cs/riak_cs_simple_quota.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_simple_quota.erl rename to apps/riak_cs/src/cs/riak_cs_simple_quota.erl diff --git a/apps/riak_cs/src/riak_cs_stanchion_console.erl b/apps/riak_cs/src/cs/riak_cs_stanchion_console.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_stanchion_console.erl rename to apps/riak_cs/src/cs/riak_cs_stanchion_console.erl diff --git a/apps/riak_cs/src/riak_cs_stats.erl b/apps/riak_cs/src/cs/riak_cs_stats.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_stats.erl rename to apps/riak_cs/src/cs/riak_cs_stats.erl diff --git a/apps/riak_cs/src/riak_cs_storage.erl b/apps/riak_cs/src/cs/riak_cs_storage.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_storage.erl rename to apps/riak_cs/src/cs/riak_cs_storage.erl diff --git a/apps/riak_cs/src/riak_cs_storage_console.erl b/apps/riak_cs/src/cs/riak_cs_storage_console.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_storage_console.erl rename to apps/riak_cs/src/cs/riak_cs_storage_console.erl diff --git a/apps/riak_cs/src/riak_cs_storage_d.erl b/apps/riak_cs/src/cs/riak_cs_storage_d.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_storage_d.erl rename to apps/riak_cs/src/cs/riak_cs_storage_d.erl diff --git a/apps/riak_cs/src/riak_cs_storage_mr.erl b/apps/riak_cs/src/cs/riak_cs_storage_mr.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_storage_mr.erl rename to apps/riak_cs/src/cs/riak_cs_storage_mr.erl diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/cs/riak_cs_sup.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_sup.erl rename to apps/riak_cs/src/cs/riak_cs_sup.erl diff --git a/apps/riak_cs/src/riak_cs_user.erl b/apps/riak_cs/src/cs/riak_cs_user.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_user.erl rename to apps/riak_cs/src/cs/riak_cs_user.erl diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/cs/riak_cs_utils.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_utils.erl rename to apps/riak_cs/src/cs/riak_cs_utils.erl diff --git a/apps/riak_cs/src/riak_cs_web.erl b/apps/riak_cs/src/cs/riak_cs_web.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_web.erl rename to apps/riak_cs/src/cs/riak_cs_web.erl diff --git a/apps/riak_cs/src/riak_cs_xml.erl b/apps/riak_cs/src/cs/riak_cs_xml.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_xml.erl rename to apps/riak_cs/src/cs/riak_cs_xml.erl diff --git a/apps/riak_cs/src/riak_cs_yessir_riak_client.erl b/apps/riak_cs/src/cs/riak_cs_yessir_riak_client.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_yessir_riak_client.erl rename to apps/riak_cs/src/cs/riak_cs_yessir_riak_client.erl diff --git a/apps/riak_cs/src/velvet.erl b/apps/riak_cs/src/cs/velvet.erl similarity index 100% rename from apps/riak_cs/src/velvet.erl rename to apps/riak_cs/src/cs/velvet.erl diff --git a/apps/riak_cs/src/velvet_auth.erl b/apps/riak_cs/src/cs/velvet_auth.erl similarity index 100% rename from apps/riak_cs/src/velvet_auth.erl rename to apps/riak_cs/src/cs/velvet_auth.erl diff --git a/apps/riak_cs/src/riak_cs_wm_bucket.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_bucket.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_bucket.erl diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_acl.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_acl.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_bucket_acl.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_acl.erl diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_bucket_delete.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_location.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_location.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_bucket_location.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_location.erl diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_policy.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_policy.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_bucket_policy.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_policy.erl diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_request_payment.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_request_payment.erl diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_uploads.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_uploads.erl diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_versioning.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_versioning.erl diff --git a/apps/riak_cs/src/riak_cs_wm_buckets.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_buckets.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_buckets.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_buckets.erl diff --git a/apps/riak_cs/src/riak_cs_wm_common.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_common.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl diff --git a/apps/riak_cs/src/riak_cs_wm_error_handler.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_error_handler.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_error_handler.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_error_handler.erl diff --git a/apps/riak_cs/src/riak_cs_wm_not_implemented.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_not_implemented.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_not_implemented.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_not_implemented.erl diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_object.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl diff --git a/apps/riak_cs/src/riak_cs_wm_object_acl.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_acl.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_object_acl.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_object_acl.erl diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_object_upload.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload.erl diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_object_upload_part.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl diff --git a/apps/riak_cs/src/riak_cs_wm_object_versions.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_versions.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_object_versions.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_object_versions.erl diff --git a/apps/riak_cs/src/riak_cs_wm_objects.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_objects.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_objects.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_objects.erl diff --git a/apps/riak_cs/src/riak_cs_wm_ping.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_ping.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_ping.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_ping.erl diff --git a/apps/riak_cs/src/riak_cs_wm_stats.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_stats.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_stats.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_stats.erl diff --git a/apps/riak_cs/src/riak_cs_wm_usage.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_usage.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_usage.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_usage.erl diff --git a/apps/riak_cs/src/riak_cs_wm_user.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_user.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_user.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_user.erl diff --git a/apps/riak_cs/src/riak_cs_wm_users.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_users.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_users.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_users.erl diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl similarity index 100% rename from apps/riak_cs/src/riak_cs_wm_utils.erl rename to apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl diff --git a/apps/riak_cs/src/base64url.erl b/apps/riak_cs/src/lib/base64url.erl similarity index 100% rename from apps/riak_cs/src/base64url.erl rename to apps/riak_cs/src/lib/base64url.erl diff --git a/apps/riak_cs/src/exprec.erl b/apps/riak_cs/src/lib/exprec.erl similarity index 100% rename from apps/riak_cs/src/exprec.erl rename to apps/riak_cs/src/lib/exprec.erl diff --git a/apps/riak_cs/src/rts.erl b/apps/riak_cs/src/lib/rts.erl similarity index 100% rename from apps/riak_cs/src/rts.erl rename to apps/riak_cs/src/lib/rts.erl diff --git a/apps/riak_cs/src/table.erl b/apps/riak_cs/src/lib/table.erl similarity index 100% rename from apps/riak_cs/src/table.erl rename to apps/riak_cs/src/lib/table.erl diff --git a/apps/riak_cs/src/twop_set.erl b/apps/riak_cs/src/lib/twop_set.erl similarity index 100% rename from apps/riak_cs/src/twop_set.erl rename to apps/riak_cs/src/lib/twop_set.erl diff --git a/apps/riak_cs/src/stanchion_acl_utils.erl b/apps/riak_cs/src/stanchion/stanchion_acl_utils.erl similarity index 100% rename from apps/riak_cs/src/stanchion_acl_utils.erl rename to apps/riak_cs/src/stanchion/stanchion_acl_utils.erl diff --git a/apps/riak_cs/src/stanchion_auth.erl b/apps/riak_cs/src/stanchion/stanchion_auth.erl similarity index 100% rename from apps/riak_cs/src/stanchion_auth.erl rename to apps/riak_cs/src/stanchion/stanchion_auth.erl diff --git a/apps/riak_cs/src/stanchion_blockall_auth.erl b/apps/riak_cs/src/stanchion/stanchion_blockall_auth.erl similarity index 100% rename from apps/riak_cs/src/stanchion_blockall_auth.erl rename to apps/riak_cs/src/stanchion/stanchion_blockall_auth.erl diff --git a/apps/riak_cs/src/stanchion_console.erl b/apps/riak_cs/src/stanchion/stanchion_console.erl similarity index 100% rename from apps/riak_cs/src/stanchion_console.erl rename to apps/riak_cs/src/stanchion/stanchion_console.erl diff --git a/apps/riak_cs/src/stanchion_multipart.erl b/apps/riak_cs/src/stanchion/stanchion_multipart.erl similarity index 100% rename from apps/riak_cs/src/stanchion_multipart.erl rename to apps/riak_cs/src/stanchion/stanchion_multipart.erl diff --git a/apps/riak_cs/src/stanchion_passthru_auth.erl b/apps/riak_cs/src/stanchion/stanchion_passthru_auth.erl similarity index 100% rename from apps/riak_cs/src/stanchion_passthru_auth.erl rename to apps/riak_cs/src/stanchion/stanchion_passthru_auth.erl diff --git a/apps/riak_cs/src/stanchion_response.erl b/apps/riak_cs/src/stanchion/stanchion_response.erl similarity index 100% rename from apps/riak_cs/src/stanchion_response.erl rename to apps/riak_cs/src/stanchion/stanchion_response.erl diff --git a/apps/riak_cs/src/stanchion_server.erl b/apps/riak_cs/src/stanchion/stanchion_server.erl similarity index 100% rename from apps/riak_cs/src/stanchion_server.erl rename to apps/riak_cs/src/stanchion/stanchion_server.erl diff --git a/apps/riak_cs/src/stanchion_server_sup.erl b/apps/riak_cs/src/stanchion/stanchion_server_sup.erl similarity index 100% rename from apps/riak_cs/src/stanchion_server_sup.erl rename to apps/riak_cs/src/stanchion/stanchion_server_sup.erl diff --git a/apps/riak_cs/src/stanchion_stats.erl b/apps/riak_cs/src/stanchion/stanchion_stats.erl similarity index 100% rename from apps/riak_cs/src/stanchion_stats.erl rename to apps/riak_cs/src/stanchion/stanchion_stats.erl diff --git a/apps/riak_cs/src/stanchion_utils.erl b/apps/riak_cs/src/stanchion/stanchion_utils.erl similarity index 100% rename from apps/riak_cs/src/stanchion_utils.erl rename to apps/riak_cs/src/stanchion/stanchion_utils.erl diff --git a/apps/riak_cs/src/stanchion_web.erl b/apps/riak_cs/src/stanchion/stanchion_web.erl similarity index 100% rename from apps/riak_cs/src/stanchion_web.erl rename to apps/riak_cs/src/stanchion/stanchion_web.erl diff --git a/apps/riak_cs/src/stanchion_wm_acl.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_acl.erl similarity index 100% rename from apps/riak_cs/src/stanchion_wm_acl.erl rename to apps/riak_cs/src/stanchion/wm/stanchion_wm_acl.erl diff --git a/apps/riak_cs/src/stanchion_wm_bucket.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl similarity index 100% rename from apps/riak_cs/src/stanchion_wm_bucket.erl rename to apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl diff --git a/apps/riak_cs/src/stanchion_wm_buckets.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_buckets.erl similarity index 100% rename from apps/riak_cs/src/stanchion_wm_buckets.erl rename to apps/riak_cs/src/stanchion/wm/stanchion_wm_buckets.erl diff --git a/apps/riak_cs/src/stanchion_wm_error_handler.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_error_handler.erl similarity index 100% rename from apps/riak_cs/src/stanchion_wm_error_handler.erl rename to apps/riak_cs/src/stanchion/wm/stanchion_wm_error_handler.erl diff --git a/apps/riak_cs/src/stanchion_wm_ping.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_ping.erl similarity index 100% rename from apps/riak_cs/src/stanchion_wm_ping.erl rename to apps/riak_cs/src/stanchion/wm/stanchion_wm_ping.erl diff --git a/apps/riak_cs/src/stanchion_wm_policy.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl similarity index 100% rename from apps/riak_cs/src/stanchion_wm_policy.erl rename to apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl diff --git a/apps/riak_cs/src/stanchion_wm_stats.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_stats.erl similarity index 100% rename from apps/riak_cs/src/stanchion_wm_stats.erl rename to apps/riak_cs/src/stanchion/wm/stanchion_wm_stats.erl diff --git a/apps/riak_cs/src/stanchion_wm_user.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_user.erl similarity index 100% rename from apps/riak_cs/src/stanchion_wm_user.erl rename to apps/riak_cs/src/stanchion/wm/stanchion_wm_user.erl diff --git a/apps/riak_cs/src/stanchion_wm_users.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_users.erl similarity index 100% rename from apps/riak_cs/src/stanchion_wm_users.erl rename to apps/riak_cs/src/stanchion/wm/stanchion_wm_users.erl diff --git a/apps/riak_cs/src/stanchion_wm_utils.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_utils.erl similarity index 100% rename from apps/riak_cs/src/stanchion_wm_utils.erl rename to apps/riak_cs/src/stanchion/wm/stanchion_wm_utils.erl diff --git a/apps/riak_cs/src/stanchion_wm_versioning.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_versioning.erl similarity index 100% rename from apps/riak_cs/src/stanchion_wm_versioning.erl rename to apps/riak_cs/src/stanchion/wm/stanchion_wm_versioning.erl From fa3f4004d9e8c8231755e45de5bbb749877c43bc Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 7 Nov 2022 15:42:26 +0200 Subject: [PATCH 364/831] clean up pbc process after use in riak_cs_sup --- apps/riak_cs/src/cs/riak_cs_sup.erl | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/riak_cs/src/cs/riak_cs_sup.erl b/apps/riak_cs/src/cs/riak_cs_sup.erl index 9d6e4151b..240477d73 100644 --- a/apps/riak_cs/src/cs/riak_cs_sup.erl +++ b/apps/riak_cs/src/cs/riak_cs_sup.erl @@ -90,6 +90,7 @@ init2(Options) -> stanchion_stats:init(), stanchion_process_specs() end, + ok = riakc_pb_socket:stop(Pbc), {ok, {#{strategy => one_for_one, intensity => 10, period => 10}, RCSChildren ++ StanchionChildren From aacff1ffaaa8150b06386ad03b53fc0f7e4d4a13 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 7 Nov 2022 23:38:26 +0200 Subject: [PATCH 365/831] prototype dynamic stanchion --- apps/riak_cs/src/cs/riak_cs_sup.erl | 206 +--------------- apps/riak_cs/src/stanchion/stanchion_sup.erl | 242 +++++++++++++++++++ 2 files changed, 255 insertions(+), 193 deletions(-) create mode 100644 apps/riak_cs/src/stanchion/stanchion_sup.erl diff --git a/apps/riak_cs/src/cs/riak_cs_sup.erl b/apps/riak_cs/src/cs/riak_cs_sup.erl index 240477d73..dd85599d1 100644 --- a/apps/riak_cs/src/cs/riak_cs_sup.erl +++ b/apps/riak_cs/src/cs/riak_cs_sup.erl @@ -25,10 +25,7 @@ -behaviour(supervisor). -%% Public API -export([start_link/0]). - -%% supervisor callbacks -export([init/1]). -include("riak_cs.hrl"). @@ -41,22 +38,10 @@ {operation_mode, auto}, {rewrite_module, ?S3_API_MOD}]). --define(REASONABLY_SMALL_TIMEOUT, 1000). - --type startlink_err() :: {'already_started', pid()} | 'shutdown' | term(). --type startlink_ret() :: {'ok', pid()} | 'ignore' | {'error', startlink_err()}. --type proplist() :: proplists:proplist(). - -%% =================================================================== -%% Public API -%% =================================================================== - -%% @doc API for starting the supervisor. --spec start_link() -> startlink_ret(). +-spec start_link() -> supervisor:startlink_ret(). start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). -%% @doc supervisor callback. -spec init([]) -> {ok, {supervisor:sup_flags(), [supervisor:child_spec()]}}. init([]) -> @@ -66,7 +51,6 @@ init([]) -> init2(Options) -> Mode = proplists:get_value(operation_mode, Options), - ThisHostAddr = this_host_addr(), {ok, Pbc} = riak_connection(), ok = ensure_service_bucket_props(Pbc), RCSChildren = @@ -79,21 +63,10 @@ init2(Options) -> _ -> [] end, - StanchionChildren = - case do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) of - {use_saved, HostPort} -> - ok = apply_stanchion_details(HostPort), - []; - use_ours -> - {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), - ok = save_stanchion_data(Pbc, {ThisHostAddr, Port}), - stanchion_stats:init(), - stanchion_process_specs() - end, ok = riakc_pb_socket:stop(Pbc), {ok, {#{strategy => one_for_one, intensity => 10, - period => 10}, RCSChildren ++ StanchionChildren + period => 10}, RCSChildren }}. ensure_service_bucket_props(Pbc) -> @@ -111,6 +84,7 @@ rcs_process_specs() -> #{id => riak_cs_delete_fsm_sup, start => {riak_cs_delete_fsm_sup, start_link, []}, + type => supervisor, modules => dynamic}, #{id => riak_cs_list_objects_ets_cache_sup, @@ -124,6 +98,7 @@ rcs_process_specs() -> #{id => riak_cs_put_fsm_sup, start => {riak_cs_put_fsm_sup, start_link, []}, + type => supervisor, modules => dynamic}, #{id => riak_cs_diags, @@ -132,159 +107,16 @@ rcs_process_specs() -> #{id => riak_cs_quota_sup, start => {riak_cs_quota_sup, start_link, []}, + type => supervisor, + modules => dynamic}, + + #{id => stanchion_sup, + start => {stanchion_sup, start_link, []}, + type => supervisor, modules => dynamic} ] ++ riak_cs_mb_helper:process_specs(). -stanchion_process_specs() -> - {ok, {Ip, Port}} = application:get_env(riak_cs, stanchion_listener), - - %% Hide any bags from user-facing parts. - case application:get_env(riak_cs, supercluster_members) of - undefined -> ok; - {ok, Bags} -> application:set_env(riak_cs, bags, Bags) - end, - - WebConfig1 = [{dispatch, stanchion_web:dispatch_table()}, - {ip, Ip}, - {port, Port}, - {nodelay, true}, - {log_dir, "log"}, - %% {rewrite_module, stanchion_wm_rewrite}, - {error_handler, stanchion_wm_error_handler} - ], - WebConfig = - case application:get_env(riak_cs, stanchion_ssl) of - {ok, true} -> - {ok, CF} = application:get_env(riak_cs, stanchion_ssl_certfile), - {ok, KF} = application:get_env(riak_cs, stanchion_ssl_keyfile), - WebConfig1 ++ [{ssl, true}, - {ssl_opts, [{certfile, CF}, {keyfile, KF}]}]; - {ok, false} -> - WebConfig1 - end, - Web = #{id => stanchion_webmachine, - start => {webmachine_mochiweb, start, [WebConfig]}, - restart => permanent, - shutdown => 5000, - modules => dynamic}, - ServerSup = #{id => stanchion_server_sup, - start => {stanchion_server_sup, start_link, []}, - restart => permanent, - shutdown => 5000, - modules => dynamic}, - [ServerSup, Web]. - - - -do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) -> - {ok, {ConfiguredIP, ConfiguredPort}} = application:get_env(riak_cs, stanchion_listener), - case read_stanchion_data(Pbc) of - - {ok, {{Host, Port}, Node}} when Mode == auto, - Host == ThisHostAddr, - Node == node() -> - logger:info("read stanchion details previously saved by this host;" - " will start stanchion again at ~s:~b", [Host, Port]), - use_ours; - - {ok, {{Host, Port}, Node}} when Mode == auto -> - case check_stanchion_reachable(Host, Port) of - ok -> - logger:info("read stanchion details, and will use ~s:~b (on node ~s)", - [Host, Port, Node]), - {use_saved, {Host, Port}}; - Error -> - logger:warning("stanchion at ~s:~b not reachable (~p); will set it up here", [Host, Port, Error]), - use_ours - end; - - {ok, {{SavedHost, SavedPort}, Node}} when Mode == riak_cs_with_stanchion; - Mode == stanchion_only -> - case ThisHostAddr of - ConfiguredIP when ConfiguredPort == SavedPort, - Node == node() -> - %% we read what we must have saved before - {use_saved, {SavedHost, SavedPort}}; - _ -> - logger:error("this node is configured to run stanchion but" - " stanchion has already been started at ~s:~b", - [SavedHost, SavedPort]), - conflicting_stanchion_configuration - end; - - _ -> - logger:info("no previously saved stanchion details; going to start stanchion on this node"), - use_ours - end. - -apply_stanchion_details({Host, Port}) -> - application:set_env(riak_cs, stanchion_host, Host), - application:set_env(riak_cs, stanchion_port, Port), - ok. - -read_stanchion_data(Pbc) -> - case riak_cs_pbc:get_sans_stats(Pbc, ?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, - [{notfound_ok, false}], - ?REASONABLY_SMALL_TIMEOUT) of - {ok, Obj} -> - case riakc_obj:value_count(Obj) of - 1 -> - StanchionDetails = binary_to_term(riakc_obj:get_value(Obj)), - {ok, StanchionDetails}; - 0 -> - {error, notfound}; - N -> - Values = [binary_to_term(Value) || - Value <- riakc_obj:get_values(Obj), - Value /= <<>> % tombstone - ], - logger:warning("Read stanchion details riak object has ~b siblings." - " Please select a riak_cs node, reconfigure it with operation_mode = riak_cs_with_stanchion (or stanchion_only)," - " configure rest with operation_mode = riak_cs_only, and restart all nodes", [N]), - {ok, hd(Values)} - end; - _ -> - {error, notfound} - end. - -save_stanchion_data(Pbc, HostPort) -> - ok = riak_cs_pbc:put_sans_stats( - Pbc, riakc_obj:new(?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, - term_to_binary({HostPort, node()})), - ?REASONABLY_SMALL_TIMEOUT), - logger:info("saved stanchion details: ~p", [{HostPort, node()}]), - ok. - -this_host_addr() -> - {ok, Ifs} = inet:getifaddrs(), - case lists:filtermap( - fun({_If, PL}) -> - case proplists:get_value(addr, PL) of - Defined when Defined /= undefined, - Defined /= {127,0,0,1}, - Defined /= {0,0,0,0} -> - {A1, A2, A3, A4} = Defined, - {true, {_If, io_lib:format("~b.~b.~b.~b", [A1, A2, A3, A4])}}; - _ -> - false - end - end, Ifs) of - [{If, IP}] -> - logger:info("This host address is ~p on iface ~s", [IP, If]), - IP; - [{If, IP}|_] -> - logger:warning("This host has multiple network interfaces configured." - " Selecting ~p on ~s", [IP, If]), - IP - end. - -check_stanchion_reachable(Host, Port) -> - {ok, UseSSL} = application:get_env(riak_cs, stanchion_ssl), - velvet:ping(Host, Port, UseSSL). - - - get_option_val({Option, Default}) -> handle_get_env_result(Option, get_env(Option), Default); get_option_val(Option) -> @@ -293,25 +125,22 @@ get_option_val(Option) -> get_env(Key) -> application:get_env(riak_cs, Key). --spec handle_get_env_result(atom(), {ok, term()} | 'undefined', term()) -> {atom(), term()}. handle_get_env_result(Option, {ok, Value}, _) -> {Option, Value}; handle_get_env_result(Option, undefined, Default) -> {Option, Default}. --spec web_specs(proplist()) -> [supervisor:child_spec()]. web_specs(Options) -> WebConfigs = case single_web_interface(proplists:get_value(admin_listener, Options)) of true -> - [{object_web, add_admin_dispatch_table(object_web_config(Options))}]; + [{riak_cs_object_web, add_admin_dispatch_table(object_web_config(Options))}]; false -> - [{admin_web, admin_web_config(Options)}, - {object_web, object_web_config(Options)}] + [{riak_cs_admin_web, admin_web_config(Options)}, + {riak_cs_object_web, object_web_config(Options)}] end, [web_spec(Name, Config) || {Name, Config} <- WebConfigs]. --spec pool_specs(proplist()) -> [supervisor:child_spec()]. pool_specs(Options) -> rc_pool_specs(Options) ++ pbc_pool_specs(Options). @@ -341,9 +170,6 @@ pbc_pool_specs(Options) -> [pbc_pool_spec(BagId, FixedSum, OverflowSum, Address, Port, WorkerStop) || {BagId, Address, Port} <- Bags]. --spec pbc_pool_spec(bag_id(), non_neg_integer(), non_neg_integer(), - string(), non_neg_integer(), function()) -> - supervisor:child_spec(). pbc_pool_spec(BagId, Fixed, Overflow, Address, Port, WorkerStop) -> Name = riak_cs_riak_client:pbc_pool_name(BagId), #{id => Name, @@ -355,13 +181,11 @@ pbc_pool_spec(BagId, Fixed, Overflow, Address, Port, WorkerStop) -> [{address, Address}, {port, Port}]]}}. --spec web_spec(atom(), proplist()) -> supervisor:child_spec(). web_spec(Name, Config) -> #{id => Name, start => {webmachine_mochiweb, start, [Config]}, modules => dynamic}. --spec object_web_config(proplist()) -> proplist(). object_web_config(Options) -> {IP, Port} = proplists:get_value(listener, Options), [{dispatch, riak_cs_web:object_api_dispatch_table()}, @@ -375,7 +199,6 @@ object_web_config(Options) -> {resource_module_option, submodule}] ++ maybe_add_ssl_opts(proplists:get_value(ssl, Options)). --spec admin_web_config(proplist()) -> proplist(). admin_web_config(Options) -> {IP, Port} = proplists:get_value(admin_listener, Options, {"127.0.0.1", 8000}), @@ -387,19 +210,16 @@ admin_web_config(Options) -> {error_handler, riak_cs_wm_error_handler}] ++ maybe_add_ssl_opts(proplists:get_value(admin_ssl, Options)). --spec single_web_interface('undefined' | term()) -> boolean(). single_web_interface(undefined) -> true; single_web_interface(_) -> false. --spec maybe_add_ssl_opts('undefined' | proplist()) -> proplist(). maybe_add_ssl_opts(undefined) -> []; maybe_add_ssl_opts(SSLOpts) -> [{ssl, true}, {ssl_opts, SSLOpts}]. --spec add_admin_dispatch_table(proplist()) -> proplist(). add_admin_dispatch_table(Config) -> UpdDispatchTable = proplists:get_value(dispatch, Config) ++ riak_cs_web:admin_api_dispatch_table(), diff --git a/apps/riak_cs/src/stanchion/stanchion_sup.erl b/apps/riak_cs/src/stanchion/stanchion_sup.erl new file mode 100644 index 000000000..9598f1641 --- /dev/null +++ b/apps/riak_cs/src/stanchion/stanchion_sup.erl @@ -0,0 +1,242 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2022 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc Supervisor for the riak_cs application. + +-module(stanchion_sup). + +-behaviour(supervisor). + +-export([start_link/0]). +-export([init/1]). +-export([negotiate_stanchion/0]). + +-include("riak_cs.hrl"). + +-define(REASONABLY_SMALL_TIMEOUT, 1000). + +-spec start_link() -> supervisor:startlink_ret(). +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +-spec init([]) -> {ok, {supervisor:sup_flags(), [supervisor:child_spec()]}}. +init([]) -> + {ok, Mode} = application:get_env(riak_cs, operation_mode), + {ok, Pbc} = riak_connection(), + ThisHostAddr = this_host_addr(), + Children = + case do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) of + {use_saved, HostPort} -> + ok = apply_stanchion_details(HostPort), + []; + use_ours -> + {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), + ok = save_stanchion_data(Pbc, {ThisHostAddr, Port}), + stanchion_stats:init(), + stanchion_process_specs() + end, + ok = riakc_pb_socket:stop(Pbc), + {ok, {#{strategy => one_for_one, + intensity => 10, + period => 10}, Children + }}. + + +negotiate_stanchion() -> + Mode = auto, + {ok, Pbc} = riak_connection(), + ThisHostAddr = this_host_addr(), + case do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) of + use_ours -> + {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), + _ = [supervisor:start_child(?MODULE, F) + || F <- stanchion_process_specs()], + ok = save_stanchion_data(Pbc, {ThisHostAddr, Port}); + {use_saved, _} -> + _ = [supervisor:delete_child(?MODULE, Id) + || {Id, _, _, _} <- supervisor:which_children(?MODULE)] + end, + ok = riakc_pb_socket:stop(Pbc), + ok. + + + +stanchion_process_specs() -> + {ok, {Ip, Port}} = application:get_env(riak_cs, stanchion_listener), + + %% Hide any bags from user-facing parts. + case application:get_env(riak_cs, supercluster_members) of + undefined -> ok; + {ok, Bags} -> application:set_env(riak_cs, bags, Bags) + end, + + WebConfig1 = [{dispatch, stanchion_web:dispatch_table()}, + {ip, Ip}, + {port, Port}, + {nodelay, true}, + {log_dir, "log"}, + %% {rewrite_module, stanchion_wm_rewrite}, + {error_handler, stanchion_wm_error_handler} + ], + WebConfig = + case application:get_env(riak_cs, stanchion_ssl) of + {ok, true} -> + {ok, CF} = application:get_env(riak_cs, stanchion_ssl_certfile), + {ok, KF} = application:get_env(riak_cs, stanchion_ssl_keyfile), + WebConfig1 ++ [{ssl, true}, + {ssl_opts, [{certfile, CF}, {keyfile, KF}]}]; + {ok, false} -> + WebConfig1 + end, + Web = + #{id => stanchion_webmachine, + start => {webmachine_mochiweb, start, [WebConfig]}, + restart => permanent, + shutdown => 5000, + modules => dynamic}, + ServerSup = + #{id => stanchion_server_sup, + start => {stanchion_server_sup, start_link, []}, + restart => permanent, + shutdown => 5000, + type => supervisor, + modules => dynamic}, + [ServerSup, Web]. + + +do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) -> + {ok, {ConfiguredIP, ConfiguredPort}} = application:get_env(riak_cs, stanchion_listener), + case read_stanchion_data(Pbc) of + + {ok, {{Host, Port}, Node}} when Mode == auto, + Host == ThisHostAddr, + Node == node() -> + logger:info("read stanchion details previously saved by this host;" + " will start stanchion again at ~s:~b", [Host, Port]), + use_ours; + + {ok, {{Host, Port}, Node}} when Mode == auto -> + case check_stanchion_reachable(Host, Port) of + ok -> + logger:info("read stanchion details, and will use ~s:~b (on node ~s)", + [Host, Port, Node]), + {use_saved, {Host, Port}}; + Error -> + logger:warning("stanchion at ~s:~b not reachable (~p); will set it up here", [Host, Port, Error]), + use_ours + end; + + {ok, {{SavedHost, SavedPort}, Node}} when Mode == riak_cs_with_stanchion; + Mode == stanchion_only -> + case ThisHostAddr of + ConfiguredIP when ConfiguredPort == SavedPort, + Node == node() -> + %% we read what we must have saved before + {use_saved, {SavedHost, SavedPort}}; + _ -> + logger:error("this node is configured to run stanchion but" + " stanchion has already been started at ~s:~b", + [SavedHost, SavedPort]), + conflicting_stanchion_configuration + end; + + _ -> + logger:info("no previously saved stanchion details; going to start stanchion on this node"), + use_ours + end. + +apply_stanchion_details({Host, Port}) -> + application:set_env(riak_cs, stanchion_host, Host), + application:set_env(riak_cs, stanchion_port, Port), + ok. + +read_stanchion_data(Pbc) -> + case riak_cs_pbc:get_sans_stats(Pbc, ?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, + [{notfound_ok, false}], + ?REASONABLY_SMALL_TIMEOUT) of + {ok, Obj} -> + case riakc_obj:value_count(Obj) of + 1 -> + StanchionDetails = binary_to_term(riakc_obj:get_value(Obj)), + {ok, StanchionDetails}; + 0 -> + {error, notfound}; + N -> + Values = [binary_to_term(Value) || + Value <- riakc_obj:get_values(Obj), + Value /= <<>> % tombstone + ], + logger:warning("Read stanchion details riak object has ~b siblings." + " Please select a riak_cs node, reconfigure it with operation_mode = riak_cs_with_stanchion (or stanchion_only)," + " configure rest with operation_mode = riak_cs_only, and restart all nodes", [N]), + {ok, hd(Values)} + end; + _ -> + {error, notfound} + end. + +save_stanchion_data(Pbc, HostPort) -> + ok = riak_cs_pbc:put_sans_stats( + Pbc, riakc_obj:new(?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, + term_to_binary({HostPort, node()})), + ?REASONABLY_SMALL_TIMEOUT), + logger:info("saved stanchion details: ~p", [{HostPort, node()}]), + ok. + +check_stanchion_reachable(Host, Port) -> + {ok, UseSSL} = application:get_env(riak_cs, stanchion_ssl), + velvet:ping(Host, Port, UseSSL). + + +riak_connection() -> + {Host, Port} = riak_cs_config:riak_host_port(), + Timeout = case application:get_env(riak_cs, riakc_connect_timeout) of + {ok, ConfigValue} -> + ConfigValue; + undefined -> + 10000 + end, + StartOptions = [{connect_timeout, Timeout}, + {auto_reconnect, true}], + riakc_pb_socket:start_link(Host, Port, StartOptions). + + +this_host_addr() -> + {ok, Ifs} = inet:getifaddrs(), + case lists:filtermap( + fun({_If, PL}) -> + case proplists:get_value(addr, PL) of + Defined when Defined /= undefined, + Defined /= {127,0,0,1}, + Defined /= {0,0,0,0} -> + {A1, A2, A3, A4} = Defined, + {true, {_If, io_lib:format("~b.~b.~b.~b", [A1, A2, A3, A4])}}; + _ -> + false + end + end, Ifs) of + [{If, IP}] -> + logger:info("this host address is ~s on iface ~s", [IP, If]), + IP; + [{If, IP}|_] -> + logger:warning("This host has multiple network interfaces configured." + " Selecting ~p on ~s", [IP, If]), + IP + end. From afc90aacbfeba5e2cbe3196a2d531bc6c97861a6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 8 Nov 2022 17:22:53 +0200 Subject: [PATCH 366/831] move supps into its own module --- apps/riak_cs/src/cs/riak_cs_utils.erl | 175 ---------------------- apps/riak_cs/src/lib/supps.erl | 202 ++++++++++++++++++++++++++ 2 files changed, 202 insertions(+), 175 deletions(-) create mode 100644 apps/riak_cs/src/lib/supps.erl diff --git a/apps/riak_cs/src/cs/riak_cs_utils.erl b/apps/riak_cs/src/cs/riak_cs_utils.erl index b8362c8e5..561c40565 100644 --- a/apps/riak_cs/src/cs/riak_cs_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_utils.erl @@ -67,7 +67,6 @@ stanchion_data/0, camel_case/1, capitalize/1, - supps/1 ]). -include("riak_cs.hrl"). @@ -530,183 +529,9 @@ capitalize("") -> ""; capitalize([H|T]) -> string:to_upper([H]) ++ T. --record(p, {name :: atom() | tuple(), - info :: undefined | proplists:proplist(), - total_mem = 0 :: non_neg_integer(), - type :: worker | supervisor, - pid :: pid() | undefined, - children = [] - } - ). - -sups() -> - [riak_cs_sup]. - - --spec supps(proplists:proplist()) -> ok. -supps(Options0) -> - Nodes = [node() | nodes()], - Options = extract_options(Options0), - - lists:foreach( - fun(Node) -> - io:format("============ Node: ~s ===========================\n", [Node]), - io:format("~11s\t~5s\t~8s\t~.14s~s\n" - "-------------------------------------------------------------\n", - [mem, mq, ths, pid, process]), - print( - reformat([get_info(Node, P) || P <- sups()], Options), - Options, 0) - end, Nodes - ), - ok. - -extract_options(PL) -> - Depth = - case proplists:get_value(depth, PL, 1) of - max -> - 9999; - V -> - V - end, - #{filter => proplists:get_value(filter, PL, ".+"), - format => proplists:get_value(format, PL, tree), - order_by => proplists:get_value(order_by, PL, memory), - depth => Depth - }. - - -get_info(Node, Name) -> - FF = - lists:foldl( - fun({SubName, Pid, worker, _MM}, Q) -> - Info = rpc:call(Node, erlang, process_info, - [Pid, [memory, message_queue_len, messages, total_heap_size]]), - [#p{name = SubName, info = Info, type = worker, pid = Pid, - total_mem = proplists:get_value(memory, Info, 0)} | Q]; - ({SubName, _Pid, supervisor, _MM}, Q) -> - [get_info(Node, SubName) | Q] - end, - [], - case rpc:call(Node, supervisor, which_children, [Name]) of - Children when is_list(Children) -> - Children; - _ -> - [] - end - ), - #p{name = Name, - total_mem = lists:foldl(fun(#p{total_mem = TM}, Q) -> - Q + TM - end, 0, FF), - type = supervisor, - children = FF}. - - -print(_p, #{depth := MaxDepth}, Depth) when MaxDepth < Depth -> - ok; -print(PP, Options, Depth) when is_list(PP) -> - lists:foreach(fun(P) -> print(P, Options, Depth) end, PP); -print(#p{name = Name, info = Info, type = worker, pid = Pid}, - #{filter := Filter}, Depth) -> - case re:run(printable(Name), Filter) of - nomatch -> - skip; - _ -> - Mem = integer_or_blank(memory, Info), - THS = integer_or_blank(total_heap_size, Info), - MQ = integer_or_blank(message_queue_len, Info), - io:format("~11s\t~5s\t~8s\t~.14s~s~s\n", [Mem, MQ, THS, pid_to_list(Pid), pad(Depth * 2), printable(Name)]) - end; -print(#p{name = Name, children = FF, total_mem = Mem} = P, - Options = #{filter := Filter}, Depth) -> - case has_printable_children(P, Filter) of - no -> - skip; - Yes -> - io:format("~11b\t~5s\t~8s\t~14s~s~s (~b)\n", - [Mem, "", "", "", pad(Depth * 2), printable(Name), length(FF)]), - lists:foreach( - fun(F) -> print(F, Options#{filter => maybe_drop_filter(Yes, Filter)}, Depth + 1) end, - FF - ) - end. -maybe_drop_filter(all, _) -> ".+"; -maybe_drop_filter(yes, Filter) -> Filter. - - -integer_or_blank(F, Info) -> - A_ = proplists:get_value(F, Info, ""), - [integer_to_list(A_)||is_integer(A_)]. - -pad(N) -> - lists:duplicate(N, $ ). - -printable(Name) when is_atom(Name) -> atom_to_list(Name); -printable(Name) -> io_lib:format("~p", [Name]). - -has_printable_children(#p{name = Name, type = worker}, Filter) -> - case re:run(printable(Name), Filter) of - nomatch -> - no; - _ -> - yes - end; -has_printable_children(#p{name = Name, children = FF}, Filter) -> - case re:run(printable(Name), Filter) of - nomatch -> - case lists:any( - fun(P) -> no /= has_printable_children(P, Filter) end, - FF) of - true -> - yes; - false -> - no - end; - _ -> - all end. -reformat(PP, #{format := tree, order_by := none}) -> - PP; -reformat(PP, #{format := tree, order_by := memory} = Options) -> - lists:map( - fun(P = #p{children = []}) -> - P; - (P = #p{children = FF}) -> - P#p{children = lists:sort( - fun(#p{total_mem = M1}, #p{total_mem = M2}) -> - M1 > M2 - end, - reformat(FF, Options))} - end, - PP); -reformat(#p{children = PP}, Options) -> - reformat(PP, Options); -reformat(PP, #{format := flat, order_by := OrderBy} = Options) -> - PP1 = - lists:flatten( - lists:foldl( - fun(#p{type = worker} = P, Q) -> - [P | Q]; - (#p{type = supervisor, children = FF}, Q) -> - lists:concat([reformat(FF, Options), Q]) - end, - [], - PP - ) - ), - case OrderBy of - none -> - PP1; - memory -> - lists:sort(fun(#p{total_mem = M1}, #p{total_mem = M2}) -> - M1 > M2 - end, PP1) - end. - - -ifdef(TEST). camel_case_test() -> diff --git a/apps/riak_cs/src/lib/supps.erl b/apps/riak_cs/src/lib/supps.erl new file mode 100644 index 000000000..df63f9b87 --- /dev/null +++ b/apps/riak_cs/src/lib/supps.erl @@ -0,0 +1,202 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2022 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc A ps-like utility to print the supervision tree. + +-module(supps). + +-export([q/1]). + +-record(p, {name :: atom() | tuple(), + info :: undefined | proplists:proplist(), + total_mem = 0 :: non_neg_integer(), + type :: worker | supervisor, + pid :: pid() | undefined, + children = [] + } + ). + +sups() -> + [riak_cs_sup]. + + +-spec q(proplists:proplist()) -> ok. +q(Options0) -> + Nodes = [node() | nodes()], + Options = extract_options(Options0), + + lists:foreach( + fun(Node) -> + io:format("============ Node: ~s ===========================\n", [Node]), + io:format("~11s\t~5s\t~8s\t~.14s~s\n" + "-------------------------------------------------------------\n", + [mem, mq, ths, pid, process]), + print( + reformat([get_info(Node, P) || P <- sups()], Options), + Options, 0) + end, Nodes + ), + ok. + +extract_options(PL) -> + Depth = + case proplists:get_value(depth, PL, 1) of + max -> + 9999; + V -> + V + end, + #{filter => proplists:get_value(filter, PL, ".+"), + format => proplists:get_value(format, PL, tree), + order_by => proplists:get_value(order_by, PL, memory), + depth => Depth + }. + + +get_info(Node, Name) -> + FF = + lists:foldl( + fun({SubName, Pid, worker, _MM}, Q) -> + Info = rpc:call(Node, erlang, process_info, + [Pid, [memory, message_queue_len, messages, total_heap_size]]), + [#p{name = SubName, info = Info, type = worker, pid = Pid, + total_mem = proplists:get_value(memory, Info, 0)} | Q]; + ({SubName, _Pid, supervisor, _MM}, Q) -> + [get_info(Node, SubName) | Q] + end, + [], + case rpc:call(Node, supervisor, which_children, [Name]) of + Children when is_list(Children) -> + Children; + _ -> + [] + end + ), + #p{name = Name, + total_mem = lists:foldl(fun(#p{total_mem = TM}, Q) -> + Q + TM + end, 0, FF), + type = supervisor, + children = FF}. + + +print(_p, #{depth := MaxDepth}, Depth) when MaxDepth < Depth -> + ok; +print(PP, Options, Depth) when is_list(PP) -> + lists:foreach(fun(P) -> print(P, Options, Depth) end, PP); +print(#p{name = Name, info = Info, type = worker, pid = Pid}, + #{filter := Filter}, Depth) -> + case re:run(printable(Name), Filter) of + nomatch -> + skip; + _ -> + Mem = integer_or_blank(memory, Info), + THS = integer_or_blank(total_heap_size, Info), + MQ = integer_or_blank(message_queue_len, Info), + io:format("~11s\t~5s\t~8s\t~.14s~s~s\n", [Mem, MQ, THS, pid_to_list(Pid), pad(Depth * 2), printable(Name)]) + end; +print(#p{name = Name, children = FF, total_mem = Mem} = P, + Options = #{filter := Filter}, Depth) -> + case has_printable_children(P, Filter) of + no -> + skip; + Yes -> + io:format("~11b\t~5s\t~8s\t~14s~s~s (~b)\n", + [Mem, "", "", "", pad(Depth * 2), printable(Name), length(FF)]), + lists:foreach( + fun(F) -> print(F, Options#{filter => maybe_drop_filter(Yes, Filter)}, Depth + 1) end, + FF + ) + end. +maybe_drop_filter(all, _) -> ".+"; +maybe_drop_filter(yes, Filter) -> Filter. + + +integer_or_blank(F, Info) -> + A_ = proplists:get_value(F, Info, ""), + [integer_to_list(A_)||is_integer(A_)]. + +pad(N) -> + lists:duplicate(N, $ ). + +printable(Name) when is_atom(Name) -> atom_to_list(Name); +printable(Name) -> io_lib:format("~p", [Name]). + + +has_printable_children(#p{name = Name, type = worker}, Filter) -> + case re:run(printable(Name), Filter) of + nomatch -> + no; + _ -> + yes + end; +has_printable_children(#p{name = Name, children = FF}, Filter) -> + case re:run(printable(Name), Filter) of + nomatch -> + case lists:any( + fun(P) -> no /= has_printable_children(P, Filter) end, + FF) of + true -> + yes; + false -> + no + end; + _ -> + all + end. + +reformat(PP, #{format := tree, order_by := none}) -> + PP; +reformat(PP, #{format := tree, order_by := memory} = Options) -> + lists:map( + fun(P = #p{children = []}) -> + P; + (P = #p{children = FF}) -> + P#p{children = lists:sort( + fun(#p{total_mem = M1}, #p{total_mem = M2}) -> + M1 > M2 + end, + reformat(FF, Options))} + end, + PP); +reformat(#p{children = PP}, Options) -> + reformat(PP, Options); +reformat(PP, #{format := flat, order_by := OrderBy} = Options) -> + PP1 = + lists:flatten( + lists:foldl( + fun(#p{type = worker} = P, Q) -> + [P | Q]; + (#p{type = supervisor, children = FF}, Q) -> + lists:concat([reformat(FF, Options), Q]) + end, + [], + PP + ) + ), + case OrderBy of + none -> + PP1; + memory -> + lists:sort(fun(#p{total_mem = M1}, #p{total_mem = M2}) -> + M1 > M2 + end, PP1) + end. + From 8bd49b41481dcaf04451907858c02173b81c15da Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 8 Nov 2022 17:24:04 +0200 Subject: [PATCH 367/831] disband stanchion_console (stanchion_stats now reporting under riak_cs_console) --- apps/riak_cs/src/cs/riak_cs_console.erl | 2 +- .../src/stanchion/stanchion_console.erl | 41 ------------------- 2 files changed, 1 insertion(+), 42 deletions(-) delete mode 100644 apps/riak_cs/src/stanchion/stanchion_console.erl diff --git a/apps/riak_cs/src/cs/riak_cs_console.erl b/apps/riak_cs/src/cs/riak_cs_console.erl index e881c8726..de987f4ec 100644 --- a/apps/riak_cs/src/cs/riak_cs_console.erl +++ b/apps/riak_cs/src/cs/riak_cs_console.erl @@ -46,7 +46,7 @@ version([]) -> ok. status([]) -> - Stats = riak_cs_stats:get_stats(), + Stats = riak_cs_stats:get_stats() ++ stanchion_stats:get_stats(), _ = [io:format("~p : ~p~n", [Name, Value]) || {Name, Value} <- Stats], ok. diff --git a/apps/riak_cs/src/stanchion/stanchion_console.erl b/apps/riak_cs/src/stanchion/stanchion_console.erl deleted file mode 100644 index 62f2cfb5c..000000000 --- a/apps/riak_cs/src/stanchion/stanchion_console.erl +++ /dev/null @@ -1,41 +0,0 @@ -%% --------------------------------------------------------------------- -%% -%% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. -%% -%% This file is provided to you under the Apache License, -%% Version 2.0 (the "License"); you may not use this file -%% except in compliance with the License. You may obtain -%% a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, -%% software distributed under the License is distributed on an -%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -%% KIND, either express or implied. See the License for the -%% specific language governing permissions and limitations -%% under the License. -%% -%% --------------------------------------------------------------------- - -%% @doc Callbacks for the stanchion application. - --module(stanchion_console). - --export([version/1, - status/1]). - -%% =================================================================== -%% Public API -%% =================================================================== - -version(_) -> - {ok, Vsn} = application:get_env(stanchion, stanchion_version), - io:format("version : ~p~n", [Vsn]), - ok. - -status(_) -> - Stats = stanchion_stats:get_stats(), - [io:format("~s : ~p~n", [Key,Value]) || {Key,Value} <- Stats], - ok. From c1b6bb5e2c26ea718d924fbe3bad7aa944aae38c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 8 Nov 2022 17:33:07 +0200 Subject: [PATCH 368/831] use -include in stanchion/*erl as we are now all in a single app --- apps/riak_cs/src/stanchion/stanchion_multipart.erl | 2 +- apps/riak_cs/src/stanchion/stanchion_utils.erl | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/src/stanchion/stanchion_multipart.erl b/apps/riak_cs/src/stanchion/stanchion_multipart.erl index 17c38135b..669af94e7 100644 --- a/apps/riak_cs/src/stanchion/stanchion_multipart.erl +++ b/apps/riak_cs/src/stanchion/stanchion_multipart.erl @@ -24,7 +24,7 @@ -export([check_no_multipart_uploads/2]). -include("stanchion.hrl"). --include_lib("riak_cs/include/manifest.hrl"). +-include("manifest.hrl"). check_no_multipart_uploads(Bucket, RiakPid) -> diff --git a/apps/riak_cs/src/stanchion/stanchion_utils.erl b/apps/riak_cs/src/stanchion/stanchion_utils.erl index 2fbf27b36..c06eec93f 100644 --- a/apps/riak_cs/src/stanchion/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion/stanchion_utils.erl @@ -52,8 +52,8 @@ ]). -include("stanchion.hrl"). --include_lib("riak_cs/include/manifest.hrl"). --include_lib("riak_cs/include/moss.hrl"). +-include("manifest.hrl"). +-include("moss.hrl"). -include_lib("riakc/include/riakc.hrl"). -include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). From 34d06f3dfe2e0836b97687bb3a337ea8112bc5ba Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 8 Nov 2022 17:33:41 +0200 Subject: [PATCH 369/831] reorg stanchion migration and location functions --- apps/riak_cs/src/cs/riak_cs_utils.erl | 22 +++ .../src/stanchion/stanchion_migration.erl | 135 +++++++++++++++ apps/riak_cs/src/stanchion/stanchion_sup.erl | 160 +----------------- 3 files changed, 166 insertions(+), 151 deletions(-) create mode 100644 apps/riak_cs/src/stanchion/stanchion_migration.erl diff --git a/apps/riak_cs/src/cs/riak_cs_utils.erl b/apps/riak_cs/src/cs/riak_cs_utils.erl index 561c40565..c4aaf9cdf 100644 --- a/apps/riak_cs/src/cs/riak_cs_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_utils.erl @@ -67,6 +67,7 @@ stanchion_data/0, camel_case/1, capitalize/1, + this_host_addr/0 ]). -include("riak_cs.hrl"). @@ -530,6 +531,27 @@ capitalize([H|T]) -> string:to_upper([H]) ++ T. +this_host_addr() -> + {ok, Ifs} = inet:getifaddrs(), + case lists:filtermap( + fun({_If, PL}) -> + case proplists:get_value(addr, PL) of + Defined when Defined /= undefined, + Defined /= {127,0,0,1}, + Defined /= {0,0,0,0} -> + {A1, A2, A3, A4} = Defined, + {true, {_If, io_lib:format("~b.~b.~b.~b", [A1, A2, A3, A4])}}; + _ -> + false + end + end, Ifs) of + [{If, IP}] -> + logger:info("this host address is ~s on iface ~s", [IP, If]), + IP; + [{If, IP}|_] -> + logger:warning("This host has multiple network interfaces configured." + " Selecting ~p on ~s", [IP, If]), + IP end. -ifdef(TEST). diff --git a/apps/riak_cs/src/stanchion/stanchion_migration.erl b/apps/riak_cs/src/stanchion/stanchion_migration.erl new file mode 100644 index 000000000..48aae317a --- /dev/null +++ b/apps/riak_cs/src/stanchion/stanchion_migration.erl @@ -0,0 +1,135 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2022 TI Tokyo All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +%% @doc Functions to locate and migrate stanchion. + +-module(stanchion_migration). + +-export([do_we_get_to_run_stanchion/3, + locate_stanchion/0, + apply_stanchion_details/1, + read_stanchion_data/1, + save_stanchion_data/2]). + +-include("riak_cs.hrl"). + +-define(REASONABLY_SMALL_TIMEOUT, 1000). + + +-spec locate_stanchion() -> ok. +locate_stanchion() -> + Mode = auto, + {ok, Pbc} = riak_cs_utils:riak_connection(), + ThisHostAddr = riak_cs_utils:this_host_addr(), + case do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) of + use_ours -> + {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), + _ = [supervisor:start_child(?MODULE, F) + || F <- stanchion_sup:stanchion_process_specs()], + ok = save_stanchion_data(Pbc, {ThisHostAddr, Port}); + {use_saved, _} -> + _ = [supervisor:delete_child(?MODULE, Id) + || {Id, _, _, _} <- supervisor:which_children(?MODULE)] + end, + ok = riakc_pb_socket:stop(Pbc), + ok. + +do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) -> + {ok, {ConfiguredIP, ConfiguredPort}} = application:get_env(riak_cs, stanchion_listener), + case read_stanchion_data(Pbc) of + + {ok, {{Host, Port}, Node}} when Mode == auto, + Host == ThisHostAddr, + Node == node() -> + logger:info("read stanchion details previously saved by this host;" + " will start stanchion again at ~s:~b", [Host, Port]), + use_ours; + + {ok, {{Host, Port}, Node}} when Mode == auto -> + case check_stanchion_reachable(Host, Port) of + ok -> + logger:info("read stanchion details, and will use ~s:~b (on node ~s)", + [Host, Port, Node]), + {use_saved, {Host, Port}}; + Error -> + logger:warning("stanchion at ~s:~b not reachable (~p); will set it up here", [Host, Port, Error]), + use_ours + end; + + {ok, {{SavedHost, SavedPort}, Node}} when Mode == riak_cs_with_stanchion; + Mode == stanchion_only -> + case ThisHostAddr of + ConfiguredIP when ConfiguredPort == SavedPort, + Node == node() -> + %% we read what we must have saved before + {use_saved, {SavedHost, SavedPort}}; + _ -> + logger:error("this node is configured to run stanchion but" + " stanchion has already been started at ~s:~b", + [SavedHost, SavedPort]), + conflicting_stanchion_configuration + end; + + _ -> + logger:info("no previously saved stanchion details; going to start stanchion on this node"), + use_ours + end. + +apply_stanchion_details({Host, Port}) -> + application:set_env(riak_cs, stanchion_host, Host), + application:set_env(riak_cs, stanchion_port, Port), + ok. + +read_stanchion_data(Pbc) -> + case riak_cs_pbc:get_sans_stats(Pbc, ?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, + [{notfound_ok, false}], + ?REASONABLY_SMALL_TIMEOUT) of + {ok, Obj} -> + case riakc_obj:value_count(Obj) of + 1 -> + StanchionDetails = binary_to_term(riakc_obj:get_value(Obj)), + {ok, StanchionDetails}; + 0 -> + {error, notfound}; + N -> + Values = [binary_to_term(Value) || + Value <- riakc_obj:get_values(Obj), + Value /= <<>> % tombstone + ], + logger:warning("Read stanchion details riak object has ~b siblings." + " Please select a riak_cs node, reconfigure it with operation_mode = riak_cs_with_stanchion (or stanchion_only)," + " configure rest with operation_mode = riak_cs_only, and restart all nodes", [N]), + {ok, hd(Values)} + end; + _ -> + {error, notfound} + end. + +save_stanchion_data(Pbc, HostPort) -> + ok = riak_cs_pbc:put_sans_stats( + Pbc, riakc_obj:new(?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, + term_to_binary({HostPort, node()})), + ?REASONABLY_SMALL_TIMEOUT), + logger:info("saved stanchion details: ~p", [{HostPort, node()}]), + ok. + +check_stanchion_reachable(Host, Port) -> + {ok, UseSSL} = application:get_env(riak_cs, stanchion_ssl), + velvet:ping(Host, Port, UseSSL). diff --git a/apps/riak_cs/src/stanchion/stanchion_sup.erl b/apps/riak_cs/src/stanchion/stanchion_sup.erl index 9598f1641..9ef6b392f 100644 --- a/apps/riak_cs/src/stanchion/stanchion_sup.erl +++ b/apps/riak_cs/src/stanchion/stanchion_sup.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2022 TI Tokyo All Rights Reserved. +%% Copyright (c) 2022 TI Tokyo, All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -18,7 +18,7 @@ %% %% --------------------------------------------------------------------- -%% @doc Supervisor for the riak_cs application. +%% @doc Supervisor for the stanchion process tree. -module(stanchion_sup). @@ -26,29 +26,27 @@ -export([start_link/0]). -export([init/1]). --export([negotiate_stanchion/0]). +-export([stanchion_process_specs/0]). --include("riak_cs.hrl"). - --define(REASONABLY_SMALL_TIMEOUT, 1000). -spec start_link() -> supervisor:startlink_ret(). start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). + -spec init([]) -> {ok, {supervisor:sup_flags(), [supervisor:child_spec()]}}. init([]) -> {ok, Mode} = application:get_env(riak_cs, operation_mode), - {ok, Pbc} = riak_connection(), - ThisHostAddr = this_host_addr(), + {ok, Pbc} = riak_cs_utils:riak_connection(), + ThisHostAddr = riak_cs_utils:this_host_addr(), Children = - case do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) of + case stanchion_migration:do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) of {use_saved, HostPort} -> - ok = apply_stanchion_details(HostPort), + ok = stanchion_migration:apply_stanchion_details(HostPort), []; use_ours -> {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), - ok = save_stanchion_data(Pbc, {ThisHostAddr, Port}), + ok = stanchion_migration:save_stanchion_data(Pbc, {ThisHostAddr, Port}), stanchion_stats:init(), stanchion_process_specs() end, @@ -59,25 +57,6 @@ init([]) -> }}. -negotiate_stanchion() -> - Mode = auto, - {ok, Pbc} = riak_connection(), - ThisHostAddr = this_host_addr(), - case do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) of - use_ours -> - {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), - _ = [supervisor:start_child(?MODULE, F) - || F <- stanchion_process_specs()], - ok = save_stanchion_data(Pbc, {ThisHostAddr, Port}); - {use_saved, _} -> - _ = [supervisor:delete_child(?MODULE, Id) - || {Id, _, _, _} <- supervisor:which_children(?MODULE)] - end, - ok = riakc_pb_socket:stop(Pbc), - ok. - - - stanchion_process_specs() -> {ok, {Ip, Port}} = application:get_env(riak_cs, stanchion_listener), @@ -119,124 +98,3 @@ stanchion_process_specs() -> type => supervisor, modules => dynamic}, [ServerSup, Web]. - - -do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) -> - {ok, {ConfiguredIP, ConfiguredPort}} = application:get_env(riak_cs, stanchion_listener), - case read_stanchion_data(Pbc) of - - {ok, {{Host, Port}, Node}} when Mode == auto, - Host == ThisHostAddr, - Node == node() -> - logger:info("read stanchion details previously saved by this host;" - " will start stanchion again at ~s:~b", [Host, Port]), - use_ours; - - {ok, {{Host, Port}, Node}} when Mode == auto -> - case check_stanchion_reachable(Host, Port) of - ok -> - logger:info("read stanchion details, and will use ~s:~b (on node ~s)", - [Host, Port, Node]), - {use_saved, {Host, Port}}; - Error -> - logger:warning("stanchion at ~s:~b not reachable (~p); will set it up here", [Host, Port, Error]), - use_ours - end; - - {ok, {{SavedHost, SavedPort}, Node}} when Mode == riak_cs_with_stanchion; - Mode == stanchion_only -> - case ThisHostAddr of - ConfiguredIP when ConfiguredPort == SavedPort, - Node == node() -> - %% we read what we must have saved before - {use_saved, {SavedHost, SavedPort}}; - _ -> - logger:error("this node is configured to run stanchion but" - " stanchion has already been started at ~s:~b", - [SavedHost, SavedPort]), - conflicting_stanchion_configuration - end; - - _ -> - logger:info("no previously saved stanchion details; going to start stanchion on this node"), - use_ours - end. - -apply_stanchion_details({Host, Port}) -> - application:set_env(riak_cs, stanchion_host, Host), - application:set_env(riak_cs, stanchion_port, Port), - ok. - -read_stanchion_data(Pbc) -> - case riak_cs_pbc:get_sans_stats(Pbc, ?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, - [{notfound_ok, false}], - ?REASONABLY_SMALL_TIMEOUT) of - {ok, Obj} -> - case riakc_obj:value_count(Obj) of - 1 -> - StanchionDetails = binary_to_term(riakc_obj:get_value(Obj)), - {ok, StanchionDetails}; - 0 -> - {error, notfound}; - N -> - Values = [binary_to_term(Value) || - Value <- riakc_obj:get_values(Obj), - Value /= <<>> % tombstone - ], - logger:warning("Read stanchion details riak object has ~b siblings." - " Please select a riak_cs node, reconfigure it with operation_mode = riak_cs_with_stanchion (or stanchion_only)," - " configure rest with operation_mode = riak_cs_only, and restart all nodes", [N]), - {ok, hd(Values)} - end; - _ -> - {error, notfound} - end. - -save_stanchion_data(Pbc, HostPort) -> - ok = riak_cs_pbc:put_sans_stats( - Pbc, riakc_obj:new(?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, - term_to_binary({HostPort, node()})), - ?REASONABLY_SMALL_TIMEOUT), - logger:info("saved stanchion details: ~p", [{HostPort, node()}]), - ok. - -check_stanchion_reachable(Host, Port) -> - {ok, UseSSL} = application:get_env(riak_cs, stanchion_ssl), - velvet:ping(Host, Port, UseSSL). - - -riak_connection() -> - {Host, Port} = riak_cs_config:riak_host_port(), - Timeout = case application:get_env(riak_cs, riakc_connect_timeout) of - {ok, ConfigValue} -> - ConfigValue; - undefined -> - 10000 - end, - StartOptions = [{connect_timeout, Timeout}, - {auto_reconnect, true}], - riakc_pb_socket:start_link(Host, Port, StartOptions). - - -this_host_addr() -> - {ok, Ifs} = inet:getifaddrs(), - case lists:filtermap( - fun({_If, PL}) -> - case proplists:get_value(addr, PL) of - Defined when Defined /= undefined, - Defined /= {127,0,0,1}, - Defined /= {0,0,0,0} -> - {A1, A2, A3, A4} = Defined, - {true, {_If, io_lib:format("~b.~b.~b.~b", [A1, A2, A3, A4])}}; - _ -> - false - end - end, Ifs) of - [{If, IP}] -> - logger:info("this host address is ~s on iface ~s", [IP, If]), - IP; - [{If, IP}|_] -> - logger:warning("This host has multiple network interfaces configured." - " Selecting ~p on ~s", [IP, If]), - IP - end. From 6104e083be8b13027c03e04588e13a5b91c80c33 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 9 Nov 2022 01:00:59 +0200 Subject: [PATCH 370/831] prototype dynamic stanchion, improved --- apps/riak_cs/src/cs/riak_cs_bucket.erl | 70 +++----- apps/riak_cs/src/cs/riak_cs_config.erl | 35 ++-- apps/riak_cs/src/cs/riak_cs_utils.erl | 4 +- apps/riak_cs/src/cs/velvet.erl | 156 ++++++++---------- .../src/stanchion/stanchion_migration.erl | 115 +++++++++---- apps/riak_cs/src/stanchion/stanchion_sup.erl | 15 +- 6 files changed, 206 insertions(+), 189 deletions(-) diff --git a/apps/riak_cs/src/cs/riak_cs_bucket.erl b/apps/riak_cs/src/cs/riak_cs_bucket.erl index 6c06391d8..238166a9c 100644 --- a/apps/riak_cs/src/cs/riak_cs_bucket.erl +++ b/apps/riak_cs/src/cs/riak_cs_bucket.erl @@ -538,83 +538,52 @@ bucket_exists(Buckets, CheckBucket) -> %% @doc Return a closure over a specific function %% call to the stanchion client module for either %% bucket creation or deletion. --spec bucket_fun(bucket_operation(), - binary(), - bag_id(), - [] | policy() | acl() | bucket_versioning(), - string(), - {string(), string()}, - {string(), pos_integer(), boolean()}) -> function(). -bucket_fun(create, Bucket, BagId, ACL, KeyId, AdminCreds, StanchionData) -> - {StanchionIp, StanchionPort, StanchionSSL} = StanchionData, +bucket_fun(create, Bucket, BagId, ACL, KeyId, AdminCreds) -> %% Generate the bucket JSON document BucketDoc = bucket_json(Bucket, BagId, ACL, KeyId), fun() -> - velvet:create_bucket(StanchionIp, - StanchionPort, - "application/json", + velvet:create_bucket("application/json", BucketDoc, - [{ssl, StanchionSSL}, - {auth_creds, AdminCreds}]) + [{auth_creds, AdminCreds}]) end; -bucket_fun(update_acl, Bucket, _BagId, ACL, KeyId, AdminCreds, StanchionData) -> - {StanchionIp, StanchionPort, StanchionSSL} = StanchionData, +bucket_fun(update_acl, Bucket, _BagId, ACL, KeyId, AdminCreds) -> %% Generate the bucket JSON document for the ACL request AclDoc = bucket_acl_json(ACL, KeyId), fun() -> - velvet:set_bucket_acl(StanchionIp, - StanchionPort, - Bucket, + velvet:set_bucket_acl(Bucket, "application/json", AclDoc, - [{ssl, StanchionSSL}, - {auth_creds, AdminCreds}]) + [{auth_creds, AdminCreds}]) end; -bucket_fun(update_policy, Bucket, _BagId, PolicyJson, KeyId, AdminCreds, StanchionData) -> - {StanchionIp, StanchionPort, StanchionSSL} = StanchionData, +bucket_fun(update_policy, Bucket, _BagId, PolicyJson, KeyId, AdminCreds) -> %% Generate the bucket JSON document for the ACL request PolicyDoc = bucket_policy_json(PolicyJson, KeyId), fun() -> - velvet:set_bucket_policy(StanchionIp, - StanchionPort, - Bucket, + velvet:set_bucket_policy(Bucket, "application/json", PolicyDoc, - [{ssl, StanchionSSL}, - {auth_creds, AdminCreds}]) + [{auth_creds, AdminCreds}]) end; -bucket_fun(update_versioning, Bucket, _BagId, VsnOption, KeyId, AdminCreds, StanchionData) -> - {StanchionIp, StanchionPort, StanchionSSL} = StanchionData, +bucket_fun(update_versioning, Bucket, _BagId, VsnOption, KeyId, AdminCreds) -> Doc = bucket_versioning_json(VsnOption, KeyId), fun() -> - velvet:set_bucket_versioning(StanchionIp, - StanchionPort, - Bucket, + velvet:set_bucket_versioning(Bucket, "application/json", Doc, - [{ssl, StanchionSSL}, - {auth_creds, AdminCreds}]) + [{auth_creds, AdminCreds}]) end; -bucket_fun(delete_policy, Bucket, _BagId, _, KeyId, AdminCreds, StanchionData) -> - {StanchionIp, StanchionPort, StanchionSSL} = StanchionData, +bucket_fun(delete_policy, Bucket, _BagId, _, KeyId, AdminCreds) -> %% Generate the bucket JSON document for the ACL request fun() -> - velvet:delete_bucket_policy(StanchionIp, - StanchionPort, - Bucket, + velvet:delete_bucket_policy(Bucket, KeyId, - [{ssl, StanchionSSL}, - {auth_creds, AdminCreds}]) + [{auth_creds, AdminCreds}]) end; -bucket_fun(delete, Bucket, _BagId, _ACL, KeyId, AdminCreds, StanchionData) -> - {StanchionIp, StanchionPort, StanchionSSL} = StanchionData, +bucket_fun(delete, Bucket, _BagId, _ACL, KeyId, AdminCreds) -> fun() -> - velvet:delete_bucket(StanchionIp, - StanchionPort, - Bucket, + velvet:delete_bucket(Bucket, KeyId, - [{ssl, StanchionSSL}, - {auth_creds, AdminCreds}]) + [{auth_creds, AdminCreds}]) end. %% @doc Generate a JSON document to use for a bucket @@ -747,8 +716,7 @@ serialized_bucket_op(Bucket, BagId, Arg, User, UserObj, BucketOp, StatsKey, RcPi BagId, Arg, User?RCS_USER.key_id, - AdminCreds, - riak_cs_utils:stanchion_data()), + AdminCreds), %% Make a call to the request serialization service. OpResult = BucketFun(), _ = riak_cs_stats:update_with_start(StatsKey, StartTime, OpResult), diff --git a/apps/riak_cs/src/cs/riak_cs_config.erl b/apps/riak_cs/src/cs/riak_cs_config.erl index e09155ce4..3cb8b2c44 100644 --- a/apps/riak_cs/src/cs/riak_cs_config.erl +++ b/apps/riak_cs/src/cs/riak_cs_config.erl @@ -63,12 +63,14 @@ read_before_last_manifest_write/0, region/0, stanchion/0, + set_stanchion/2, set_stanchion/3, use_2i_for_storage_calc/0, detailed_storage_calc/0, quota_modules/0, active_delete_threshold/0, fast_user_get/0, - root_host/0 + root_host/0, + operation_mode/0 ]). %% Timeouts hitting Riak @@ -374,19 +376,22 @@ max_key_length() -> %% @doc Return `stanchion' configuration data. -spec stanchion() -> {string(), pos_integer(), boolean()}. stanchion() -> - {Host, Port} = case application:get_env(riak_cs, stanchion_host) of - {ok, HostPort} -> HostPort; - undefined -> - {?DEFAULT_STANCHION_IP, ?DEFAULT_STANCHION_PORT} - end, - SSL = case application:get_env(riak_cs, stanchion_ssl) of - {ok, SSL0} -> SSL0; - undefined -> - logger:warning("No ssl flag for stanchion access defined. Using default."), - ?DEFAULT_STANCHION_SSL - end, + {ok, {Host, Port}} = application:get_env(riak_cs, stanchion_host), + {ok, SSL} = application:get_env(riak_cs, stanchion_ssl), {Host, Port, SSL}. +-spec set_stanchion(string(), inet:port()) -> ok. +set_stanchion(Host, Port) -> + application:set_env(riak_cs, stanchion_host, {Host, Port}), + ok. + +-spec set_stanchion(string(), inet:port(), boolean()) -> ok. +set_stanchion(Host, Port, Ssl) -> + application:set_env(riak_cs, stanchion_host, {Host, Port}), + application:set_env(riak_cs, stanchion_ssl, Ssl), + ok. + + %% @doc This options is useful for use case involving high churn and %% concurrency on a fixed set of keys and when not using a Riak %% version >= 2.0.0 with DVVs enabled. It helps to avoid sibling @@ -434,6 +439,12 @@ fast_user_get() -> root_host() -> get_env(riak_cs, cs_root_host, ?ROOT_HOST). +-spec operation_mode() -> auto | riak_cs_only | stanchion_only | riak_cs_with_stanchion. +operation_mode() -> + {ok, A} = application:get_env(riak_cs, operation_mode), + true = (A == auto orelse A == riak_cs_only orelse A == stanchion_only orelse A == riak_cs_with_stanchion), + A. + %% =================================================================== %% ALL Timeouts hitting Riak %% =================================================================== diff --git a/apps/riak_cs/src/cs/riak_cs_utils.erl b/apps/riak_cs/src/cs/riak_cs_utils.erl index c4aaf9cdf..2429348aa 100644 --- a/apps/riak_cs/src/cs/riak_cs_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_utils.erl @@ -540,13 +540,13 @@ this_host_addr() -> Defined /= {127,0,0,1}, Defined /= {0,0,0,0} -> {A1, A2, A3, A4} = Defined, - {true, {_If, io_lib:format("~b.~b.~b.~b", [A1, A2, A3, A4])}}; + {true, {_If, lists:flatten(io_lib:format("~b.~b.~b.~b", [A1, A2, A3, A4]))}}; _ -> false end end, Ifs) of [{If, IP}] -> - logger:info("this host address is ~s on iface ~s", [IP, If]), + logger:debug("this host address is ~s on iface ~s", [IP, If]), IP; [{If, IP}|_] -> logger:warning("This host has multiple network interfaces configured." diff --git a/apps/riak_cs/src/cs/velvet.erl b/apps/riak_cs/src/cs/velvet.erl index d67da611d..0abb198ed 100644 --- a/apps/riak_cs/src/cs/velvet.erl +++ b/apps/riak_cs/src/cs/velvet.erl @@ -23,33 +23,31 @@ -module(velvet). --export([create_bucket/5, - create_user/5, - delete_bucket/5, - ping/3, - set_bucket_acl/6, - set_bucket_policy/6, - set_bucket_versioning/6, - delete_bucket_policy/5, - update_user/6 +-export([create_bucket/3, + create_user/3, + delete_bucket/3, + ping/0, + set_bucket_acl/4, + set_bucket_policy/4, + set_bucket_versioning/4, + delete_bucket_policy/3, + update_user/4 % @TODO: update_bucket/3 ]). +-define(MAX_REQUEST_RETRIES, 3). + %% =================================================================== %% Public API %% =================================================================== %% @doc Create a bucket for a requesting party. -spec create_bucket(string(), - pos_integer(), - string(), string(), [{atom(), term()}]) -> ok | {error, term()}. -create_bucket(Ip, Port, ContentType, BucketDoc, Options) -> - Ssl = proplists:get_value(ssl, Options, true), +create_bucket(ContentType, BucketDoc, Options) -> AuthCreds = proplists:get_value(auth_creds, Options, no_auth_creds), Path = buckets_path(<<>>), - Url = url(Ip, Port, Ssl, Path), Headers0 = [{"Content-Md5", content_md5(BucketDoc)}, {"Date", httpd_util:rfc1123_date()}], case AuthCreds of @@ -64,7 +62,7 @@ create_bucket(Ip, Port, ContentType, BucketDoc, Options) -> no_auth_creds -> Headers = Headers0 end, - case request(post, Url, [201], ContentType, Headers, BucketDoc) of + case request(post, Path, [201], ContentType, Headers, BucketDoc) of {ok, {{_, 201, _}, _RespHeaders, _RespBody}} -> ok; {error, {ok, {{_, StatusCode, Reason}, _RespHeaders, RespBody}}} -> @@ -75,15 +73,11 @@ create_bucket(Ip, Port, ContentType, BucketDoc, Options) -> %% @doc Create a bucket for a requesting party. -spec create_user(string(), - pos_integer(), - string(), string(), [{atom(), term()}]) -> ok | {error, term()}. -create_user(Ip, Port, ContentType, UserDoc, Options) -> - Ssl = proplists:get_value(ssl, Options, true), +create_user(ContentType, UserDoc, Options) -> AuthCreds = proplists:get_value(auth_creds, Options, no_auth_creds), Path = users_path([]), - Url = url(Ip, Port, Ssl, Path), Headers0 = [{"Content-Md5", content_md5(UserDoc)}, {"Date", httpd_util:rfc1123_date()}], case AuthCreds of @@ -98,7 +92,7 @@ create_user(Ip, Port, ContentType, UserDoc, Options) -> no_auth_creds -> Headers = Headers0 end, - case request(post, Url, [201], ContentType, Headers, UserDoc) of + case request(post, Path, [201], ContentType, Headers, UserDoc) of {ok, {{_, 201, _}, _RespHeaders, _RespBody}} -> ok; {error, {ok, {{_, StatusCode, Reason}, _RespHeaders, RespBody}}} -> @@ -109,17 +103,13 @@ create_user(Ip, Port, ContentType, UserDoc, Options) -> %% @doc Delete a bucket. The bucket must be owned by %% the requesting party. --spec delete_bucket(string(), - pos_integer(), - binary(), +-spec delete_bucket(binary(), string(), [{atom(), term()}]) -> ok | {error, term()}. -delete_bucket(Ip, Port, Bucket, Requester, Options) -> - Ssl = proplists:get_value(ssl, Options, true), +delete_bucket(Bucket, Requester, Options) -> AuthCreds = proplists:get_value(auth_creds, Options, no_auth_creds), QS = requester_qs(Requester), - Path = buckets_path(Bucket), - Url = url(Ip, Port, Ssl, stringy(Path ++ QS)), + Path = buckets_path(Bucket) ++ QS, Headers0 = [{"Date", httpd_util:rfc1123_date()}], case AuthCreds of {_, _} -> @@ -133,7 +123,7 @@ delete_bucket(Ip, Port, Bucket, Requester, Options) -> no_auth_creds -> Headers = Headers0 end, - case request(delete, Url, [204], Headers) of + case request(delete, Path, [204], Headers) of {ok, {{_, 204, _}, _RespHeaders, _}} -> ok; {error, {ok, {{_, StatusCode, Reason}, _RespHeaders, RespBody}}} -> @@ -143,10 +133,9 @@ delete_bucket(Ip, Port, Bucket, Requester, Options) -> end. %% @doc Ping the server by requesting the "/ping" resource. --spec ping(string(), pos_integer(), boolean()) -> ok | {error, term()}. -ping(Ip, Port, Ssl) -> - Url = ping_url(Ip, Port, Ssl), - case request(get, Url, [200, 204]) of +-spec ping() -> ok | {error, term()}. +ping() -> + case request(get, "/ping", [200, 204]) of {ok, {{_, _Status, _}, _Headers, _Body}} -> ok; {error, Error} -> @@ -154,51 +143,41 @@ ping(Ip, Port, Ssl) -> end. %% @doc Create a bucket for a requesting party. --spec set_bucket_acl(string(), - inet:port_number(), - binary(), +-spec set_bucket_acl(binary(), string(), string(), [{atom(), term()}]) -> ok | {error, term()}. -set_bucket_acl(Ip, Port, Bucket, ContentType, AclDoc, Options) -> +set_bucket_acl(Bucket, ContentType, AclDoc, Options) -> Path = buckets_path(Bucket, acl), - update_bucket(Ip, Port, Path, ContentType, AclDoc, Options, 204). + update_bucket(Path, ContentType, AclDoc, Options, 204). %% @doc Set bucket policy --spec set_bucket_policy(string(), - inet:port_number(), - binary(), +-spec set_bucket_policy(binary(), string(), string(), proplists:proplist()) -> ok | {error, term()}. -set_bucket_policy(Ip, Port, Bucket, ContentType, PolicyDoc, Options) -> +set_bucket_policy(Bucket, ContentType, PolicyDoc, Options) -> Path = buckets_path(Bucket, policy), - update_bucket(Ip, Port, Path, ContentType, PolicyDoc, Options, 204). + update_bucket(Path, ContentType, PolicyDoc, Options, 204). %% @doc Set bucket versioning --spec set_bucket_versioning(string(), - inet:port_number(), - binary(), +-spec set_bucket_versioning(binary(), string(), string(), proplists:proplist()) -> ok | {error, term()}. -set_bucket_versioning(Ip, Port, Bucket, ContentType, Doc, Options) -> +set_bucket_versioning(Bucket, ContentType, Doc, Options) -> Path = buckets_path(Bucket, versioning), - update_bucket(Ip, Port, Path, ContentType, Doc, Options, 204). + update_bucket(Path, ContentType, Doc, Options, 204). %% @doc Delete a bucket. The bucket must be owned by %% the requesting party. --spec delete_bucket_policy(string(), - pos_integer(), - binary(), +-spec delete_bucket_policy(binary(), string(), [{atom(), term()}]) -> ok | {error, term()}. -delete_bucket_policy(Ip, Port, Bucket, Requester, Options) -> - Ssl = proplists:get_value(ssl, Options, true), +delete_bucket_policy(Bucket, Requester, Options) -> AuthCreds = proplists:get_value(auth_creds, Options, no_auth_creds), QS = requester_qs(Requester), - Path = buckets_path(Bucket, policy), - Url = url(Ip, Port, Ssl, stringy(Path ++ QS)), + Path = buckets_path(Bucket, policy) ++ QS, Headers0 = [{"Date", httpd_util:rfc1123_date()}], case AuthCreds of {_, _} -> @@ -212,7 +191,7 @@ delete_bucket_policy(Ip, Port, Bucket, Requester, Options) -> no_auth_creds -> Headers = Headers0 end, - case request(delete, Url, [204], Headers) of + case request(delete, Path, [204], Headers) of {ok, {{_, 204, _}, _RespHeaders, _}} -> ok; {error, {ok, {{_, StatusCode, Reason}, _RespHeaders, RespBody}}} -> @@ -223,16 +202,12 @@ delete_bucket_policy(Ip, Port, Bucket, Requester, Options) -> %% @doc Update a user record -spec update_user(string(), - pos_integer(), - string(), string(), string(), [{atom(), term()}]) -> ok | {error, term()}. -update_user(Ip, Port, ContentType, KeyId, UserDoc, Options) -> - Ssl = proplists:get_value(ssl, Options, true), +update_user(ContentType, KeyId, UserDoc, Options) -> AuthCreds = proplists:get_value(auth_creds, Options, no_auth_creds), Path = users_path(KeyId), - Url = url(Ip, Port, Ssl, Path), Headers0 = [{"Content-Md5", content_md5(UserDoc)}, {"Date", httpd_util:rfc1123_date()}], case AuthCreds of @@ -247,7 +222,7 @@ update_user(Ip, Port, ContentType, KeyId, UserDoc, Options) -> no_auth_creds -> Headers = Headers0 end, - case request(put, Url, [204], ContentType, Headers, UserDoc) of + case request(put, Path, [204], ContentType, Headers, UserDoc) of {ok, {{_, 204, _}, _RespHeaders, _RespBody}} -> ok; {error, {ok, {{_, StatusCode, Reason}, _RespHeaders, RespBody}}} -> @@ -262,14 +237,12 @@ update_user(Ip, Port, ContentType, KeyId, UserDoc, Options) -> % @doc send request to stanchion server % @TODO merge with create_bucket, create_user, delete_bucket --spec update_bucket(string(), inet:port_number(), string(), +-spec update_bucket(string(), string(), string(), proplists:proplist(), pos_integer()) -> ok | {error, term()}. -update_bucket(Ip, Port, Path, ContentType, Doc, Options, Expect) -> +update_bucket(Path, ContentType, Doc, Options, Expect) -> AuthCreds = proplists:get_value(auth_creds, Options, no_auth_creds), - Ssl = proplists:get_value(ssl, Options, true), - Url = url(Ip, Port, Ssl, Path), Headers0 = [{"Content-Md5", content_md5(Doc)}, {"Date", httpd_util:rfc1123_date()}], case AuthCreds of @@ -284,7 +257,7 @@ update_bucket(Ip, Port, Path, ContentType, Doc, Options, Expect) -> no_auth_creds -> Headers = Headers0 end, - case request(put, Url, [Expect], ContentType, Headers, Doc) of + case request(put, Path, [Expect], ContentType, Headers, Doc) of {ok, {{_, Expect, _}, _RespHeaders, _RespBody}} -> ok; {error, {ok, {{_, StatusCode, Reason}, _RespHeaders, RespBody}}} -> @@ -293,18 +266,6 @@ update_bucket(Ip, Port, Path, ContentType, Doc, Options, Expect) -> {error, Error} end. -%% @doc Assemble the root URL for the given client --spec root_url(string(), pos_integer(), boolean()) -> [string()]. -root_url(Ip, Port, true) -> - ["https://", Ip, ":", integer_to_list(Port)]; -root_url(Ip, Port, false) -> - ["http://", Ip, ":", integer_to_list(Port)]. - -%% @doc Assemble the URL for the ping resource --spec ping_url(string(), pos_integer(), boolean()) -> string(). -ping_url(Ip, Port, Ssl) -> - lists:flatten([root_url(Ip, Port, Ssl), "/ping"]). - %% @doc Assemble the path for a bucket request -spec buckets_path(binary()) -> string(). buckets_path(Bucket) -> @@ -323,12 +284,6 @@ buckets_path(Bucket, versioning) -> %% @doc Assemble the URL for a buckets request -spec url(string(), pos_integer(), boolean(), [string()]) -> string(). -url(Ip, Port, Ssl, Path) -> - lists:flatten( - [root_url(Ip, Port, Ssl), - Path - ]). - %% @doc send an HTTP request where `Expect' is a list %% of expected HTTP status codes. -spec request(atom(), string(), [pos_integer()]) -> @@ -351,7 +306,19 @@ request(Method, Url, Expect, Headers) -> string(), [{string(), string()}], string()) -> {ok, {term(), term(), term()}} | {error, term()}. -request(Method, Url, Expect, ContentType, Headers, Body) -> +request(Method, Path, Expect, ContentType, Headers, Body) -> + request(Method, Path, Expect, ContentType, Headers, Body, ?MAX_REQUEST_RETRIES). + +request(Method, Path, _Expect, _ContentType, _Headers, _Body, 0) -> + {Ip, Port, Ssl} = riak_cs_utils:stanchion_data(), + logger:error("Giving up trying to send a ~s request to stanchion (~s)", + [Method, url(Ip, Port, Ssl, Path)]), + {error, stanchion_recovery_failure}; +request(Method, Path, Expect, ContentType, Headers, Body, Attempt) -> + stanchion_migration:validate_stanchion(), + {Ip, Port, Ssl} = riak_cs_utils:stanchion_data(), + Url = url(Ip, Port, Ssl, Path), + case Method == put orelse Method == post of true -> @@ -366,9 +333,24 @@ request(Method, Url, Expect, ContentType, Headers, Body) -> false -> {error, Resp} end; Error -> - Error + logger:warning("Error contacting stanchion at ~s: ~p; retrying...", [Url, Error]), + ok = stanchion_migration:adopt_stanchion(), + request(Method, Path, Expect, ContentType, Headers, Body, Attempt - 1) end. +%% @doc Assemble the root URL for the given client +-spec root_url(string(), pos_integer(), boolean()) -> [string()]. +root_url(Ip, Port, true) -> + ["https://", Ip, ":", integer_to_list(Port)]; +root_url(Ip, Port, false) -> + ["http://", Ip, ":", integer_to_list(Port)]. + +url(Ip, Port, Ssl, Path) -> + lists:flatten( + [root_url(Ip, Port, Ssl), + Path + ]). + %% @doc Calculate an MD5 hash of a request body. -spec content_md5(string()) -> string(). content_md5(Body) -> diff --git a/apps/riak_cs/src/stanchion/stanchion_migration.erl b/apps/riak_cs/src/stanchion/stanchion_migration.erl index 48aae317a..06c30528d 100644 --- a/apps/riak_cs/src/stanchion/stanchion_migration.erl +++ b/apps/riak_cs/src/stanchion/stanchion_migration.erl @@ -22,9 +22,11 @@ -module(stanchion_migration). --export([do_we_get_to_run_stanchion/3, - locate_stanchion/0, +-export([validate_stanchion/0, + adopt_stanchion/0, + do_we_get_to_run_stanchion/3, apply_stanchion_details/1, + apply_stanchion_details/2, read_stanchion_data/1, save_stanchion_data/2]). @@ -33,45 +35,79 @@ -define(REASONABLY_SMALL_TIMEOUT, 1000). --spec locate_stanchion() -> ok. -locate_stanchion() -> - Mode = auto, - {ok, Pbc} = riak_cs_utils:riak_connection(), - ThisHostAddr = riak_cs_utils:this_host_addr(), - case do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) of - use_ours -> - {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), - _ = [supervisor:start_child(?MODULE, F) - || F <- stanchion_sup:stanchion_process_specs()], - ok = save_stanchion_data(Pbc, {ThisHostAddr, Port}); - {use_saved, _} -> - _ = [supervisor:delete_child(?MODULE, Id) - || {Id, _, _, _} <- supervisor:which_children(?MODULE)] +-spec validate_stanchion() -> boolean(). +validate_stanchion() -> + {ConfiguredIP, ConfiguredPort, _Ssl} = riak_cs_config:stanchion(), + {ok, Pbc} = riak_connection(), + case read_stanchion_data(Pbc) of + {ok, {{Host, Port}, _Node}} + when Host == ConfiguredIP, + Port == ConfiguredPort -> + case riak_cs_utils:this_host_addr() of + Host -> + ok; + _ -> + stop_stanchion_here(), + ok + end; + _ -> + adopt_stanchion() end, - ok = riakc_pb_socket:stop(Pbc), - ok. + ok = riakc_pb_socket:stop(Pbc). + + +-spec adopt_stanchion() -> ok | {error, stanchion_not_relocatable}. +adopt_stanchion() -> + case riak_cs_config:operation_mode() of + auto -> + {ok, Pbc} = riak_connection(), + ThisHostAddr = riak_cs_utils:this_host_addr(), + {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), + start_stanchion_here(), + stanchion_stats:init(), + ok = save_stanchion_data(Pbc, {ThisHostAddr, Port}), + apply_stanchion_details({ThisHostAddr, Port}), + ok = riakc_pb_socket:stop(Pbc), + ok; + M -> + logger:error("Riak CS operation_mode is ~s. Cannot relocate stanchion.", [M]), + {error, stanchion_not_relocatable} + end. + + +start_stanchion_here() -> + case supervisor:which_children(stanchion_sup) of + [] -> + _ = [supervisor:start_child(stanchion_sup, F) || F <- stanchion_sup:stanchion_process_specs()]; + _ -> + already_running + end. + +stop_stanchion_here() -> + case supervisor:which_children(stanchion_sup) of + [] -> + already_stopped; + FF -> + _ = [supervisor:delete_child(stanchion_sup, Id) || {Id, _, _, _} <- FF] + end. + do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) -> - {ok, {ConfiguredIP, ConfiguredPort}} = application:get_env(riak_cs, stanchion_listener), + {ConfiguredIP, ConfiguredPort, _Ssl} = riak_cs_config:stanchion(), case read_stanchion_data(Pbc) of {ok, {{Host, Port}, Node}} when Mode == auto, Host == ThisHostAddr, + Host == ConfiguredIP, + Port == ConfiguredPort, Node == node() -> - logger:info("read stanchion details previously saved by this host;" + logger:info("read stanchion details previously saved by us;" " will start stanchion again at ~s:~b", [Host, Port]), use_ours; {ok, {{Host, Port}, Node}} when Mode == auto -> - case check_stanchion_reachable(Host, Port) of - ok -> - logger:info("read stanchion details, and will use ~s:~b (on node ~s)", - [Host, Port, Node]), - {use_saved, {Host, Port}}; - Error -> - logger:warning("stanchion at ~s:~b not reachable (~p); will set it up here", [Host, Port, Error]), - use_ours - end; + logger:info("going to use stanchion started at ~s:~b (~s)", [Host, Port, Node]), + {use_saved, {Host, Port}}; {ok, {{SavedHost, SavedPort}, Node}} when Mode == riak_cs_with_stanchion; Mode == stanchion_only -> @@ -93,9 +129,10 @@ do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) -> end. apply_stanchion_details({Host, Port}) -> - application:set_env(riak_cs, stanchion_host, Host), - application:set_env(riak_cs, stanchion_port, Port), - ok. + riak_cs_config:set_stanchion(Host, Port). +apply_stanchion_details({Host, Port}, Ssl) -> + riak_cs_config:set_stanchion(Host, Port, Ssl). + read_stanchion_data(Pbc) -> case riak_cs_pbc:get_sans_stats(Pbc, ?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, @@ -130,6 +167,14 @@ save_stanchion_data(Pbc, HostPort) -> logger:info("saved stanchion details: ~p", [{HostPort, node()}]), ok. -check_stanchion_reachable(Host, Port) -> - {ok, UseSSL} = application:get_env(riak_cs, stanchion_ssl), - velvet:ping(Host, Port, UseSSL). +riak_connection() -> + {Host, Port} = riak_cs_config:riak_host_port(), + Timeout = case application:get_env(riak_cs, riakc_connect_timeout) of + {ok, ConfigValue} -> + ConfigValue; + undefined -> + 10000 + end, + StartOptions = [{connect_timeout, Timeout}, + {auto_reconnect, true}], + riakc_pb_socket:start_link(Host, Port, StartOptions). diff --git a/apps/riak_cs/src/stanchion/stanchion_sup.erl b/apps/riak_cs/src/stanchion/stanchion_sup.erl index 9ef6b392f..4225d938a 100644 --- a/apps/riak_cs/src/stanchion/stanchion_sup.erl +++ b/apps/riak_cs/src/stanchion/stanchion_sup.erl @@ -37,7 +37,7 @@ start_link() -> -spec init([]) -> {ok, {supervisor:sup_flags(), [supervisor:child_spec()]}}. init([]) -> {ok, Mode} = application:get_env(riak_cs, operation_mode), - {ok, Pbc} = riak_cs_utils:riak_connection(), + {ok, Pbc} = riak_connection(), ThisHostAddr = riak_cs_utils:this_host_addr(), Children = case stanchion_migration:do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) of @@ -47,7 +47,6 @@ init([]) -> use_ours -> {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), ok = stanchion_migration:save_stanchion_data(Pbc, {ThisHostAddr, Port}), - stanchion_stats:init(), stanchion_process_specs() end, ok = riakc_pb_socket:stop(Pbc), @@ -98,3 +97,15 @@ stanchion_process_specs() -> type => supervisor, modules => dynamic}, [ServerSup, Web]. + +riak_connection() -> + {Host, Port} = riak_cs_config:riak_host_port(), + Timeout = case application:get_env(riak_cs, riakc_connect_timeout) of + {ok, ConfigValue} -> + ConfigValue; + undefined -> + 10000 + end, + StartOptions = [{connect_timeout, Timeout}, + {auto_reconnect, true}], + riakc_pb_socket:start_link(Host, Port, StartOptions). From b3ded0f4c7ac6c08bdab987555fe6ecaa0f854de Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 10 Nov 2022 13:35:37 +0200 Subject: [PATCH 371/831] wip --- apps/riak_cs/src/stanchion/stanchion_migration.erl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/stanchion/stanchion_migration.erl b/apps/riak_cs/src/stanchion/stanchion_migration.erl index 06c30528d..9bfe3d0c3 100644 --- a/apps/riak_cs/src/stanchion/stanchion_migration.erl +++ b/apps/riak_cs/src/stanchion/stanchion_migration.erl @@ -50,8 +50,10 @@ validate_stanchion() -> stop_stanchion_here(), ok end; - _ -> - adopt_stanchion() + {ok, {{Host, Port}, Node}} -> + logger:info("stanchion details updated: ~s:~p on ~s", [Host, Port, Node]), + stop_stanchion_here(), + apply_stanchion_details({Host, Port}) end, ok = riakc_pb_socket:stop(Pbc). From 7d11401f92acf8d90b906f2bce55786c9c5c7dc3 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 10 Nov 2022 15:21:55 +0200 Subject: [PATCH 372/831] wip --- .../src/stanchion/stanchion_migration.erl | 19 +++++++++---------- rel/vars/dev_vars.config.src | 1 + 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/riak_cs/src/stanchion/stanchion_migration.erl b/apps/riak_cs/src/stanchion/stanchion_migration.erl index 9bfe3d0c3..4d248e971 100644 --- a/apps/riak_cs/src/stanchion/stanchion_migration.erl +++ b/apps/riak_cs/src/stanchion/stanchion_migration.erl @@ -98,18 +98,17 @@ do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) -> {ConfiguredIP, ConfiguredPort, _Ssl} = riak_cs_config:stanchion(), case read_stanchion_data(Pbc) of - {ok, {{Host, Port}, Node}} when Mode == auto, - Host == ThisHostAddr, - Host == ConfiguredIP, - Port == ConfiguredPort, - Node == node() -> - logger:info("read stanchion details previously saved by us;" - " will start stanchion again at ~s:~b", [Host, Port]), - use_ours; - {ok, {{Host, Port}, Node}} when Mode == auto -> logger:info("going to use stanchion started at ~s:~b (~s)", [Host, Port, Node]), - {use_saved, {Host, Port}}; + if Host == ThisHostAddr andalso + Port == ConfiguredPort andalso + Node == node() -> + logger:info("read stanchion details previously saved by us;" + " will start stanchion again at ~s:~b", [Host, Port]), + use_ours; + el/=se -> + {use_saved, {Host, Port}} + end; {ok, {{SavedHost, SavedPort}, Node}} when Mode == riak_cs_with_stanchion; Mode == stanchion_only -> diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index 984b416f9..e0c3c6959 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -26,6 +26,7 @@ {riak_pb_port, 8087}. {auth_bypass, false}. {admin_key, "admin-key"}. +{stanchion_host, "127.0.0.1"}. %% access stanchion when it runs on some other node {stanchion_ip, "0.0.0.0"}. {stanchion_port, 8085}. {stanchion_ssl, off}. From ee32b5f605130f3ada64b99d7b54bb5e97255b24 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 11 Nov 2022 12:00:22 +0200 Subject: [PATCH 373/831] wip --- .../src/stanchion/stanchion_migration.erl | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/apps/riak_cs/src/stanchion/stanchion_migration.erl b/apps/riak_cs/src/stanchion/stanchion_migration.erl index 4d248e971..fe018eefe 100644 --- a/apps/riak_cs/src/stanchion/stanchion_migration.erl +++ b/apps/riak_cs/src/stanchion/stanchion_migration.erl @@ -40,19 +40,20 @@ validate_stanchion() -> {ConfiguredIP, ConfiguredPort, _Ssl} = riak_cs_config:stanchion(), {ok, Pbc} = riak_connection(), case read_stanchion_data(Pbc) of - {ok, {{Host, Port}, _Node}} + {ok, {{Host, Port}, Node}} when Host == ConfiguredIP, - Port == ConfiguredPort -> + Port == ConfiguredPort, + Node == node() -> + ok; + {ok, {{Host, Port}, Node}} -> + logger:info("stanchion details updated: ~s:~p on ~s", [Host, Port, Node]), case riak_cs_utils:this_host_addr() of - Host -> + ConfiguredIP when node() == Node -> + stop_stanchion_here(), ok; _ -> - stop_stanchion_here(), ok - end; - {ok, {{Host, Port}, Node}} -> - logger:info("stanchion details updated: ~s:~p on ~s", [Host, Port, Node]), - stop_stanchion_here(), + end, apply_stanchion_details({Host, Port}) end, ok = riakc_pb_socket:stop(Pbc). From b7bbc06e5583d460a84991e8a15c72fa80478bdd Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 17 Nov 2022 01:40:31 +0200 Subject: [PATCH 374/831] half-hearted wip --- apps/riak_cs/src/cs/riak_cs_bucket.erl | 56 +------- .../riak_cs/src/stanchion/stanchion_utils.erl | 135 +++++++++++------- 2 files changed, 82 insertions(+), 109 deletions(-) diff --git a/apps/riak_cs/src/cs/riak_cs_bucket.erl b/apps/riak_cs/src/cs/riak_cs_bucket.erl index 238166a9c..0cc2ea7d8 100644 --- a/apps/riak_cs/src/cs/riak_cs_bucket.erl +++ b/apps/riak_cs/src/cs/riak_cs_bucket.erl @@ -601,19 +601,6 @@ bucket_json(Bucket, BagId, ACL, KeyId) -> riak_cs_acl_utils:acl_to_json_term(ACL)] ++ BagElement}))). -%% @doc Return a bucket record for the specified bucket name. --spec bucket_record(binary(), bucket_operation()) -> cs_bucket(). -bucket_record(Name, Operation) -> - Action = case Operation of - create -> created; - delete -> deleted; - _ -> undefined - end, - ?RCS_BUCKET{name=binary_to_list(Name), - last_action=Action, - creation_date=riak_cs_wm_utils:iso_8601_datetime(), - modification_time=os:timestamp()}. - %% @doc Check for and resolve any conflict between %% a bucket record from a user record sibling and %% a list of resolved bucket records. @@ -720,20 +707,7 @@ serialized_bucket_op(Bucket, BagId, Arg, User, UserObj, BucketOp, StatsKey, RcPi %% Make a call to the request serialization service. OpResult = BucketFun(), _ = riak_cs_stats:update_with_start(StatsKey, StartTime, OpResult), - case OpResult of - ok -> - BucketRecord = bucket_record(Bucket, BucketOp), - case update_user_buckets(User, BucketRecord) of - {ok, ignore} -> - OpResult; - {ok, UpdUser} -> - riak_cs_user:save_user(UpdUser, UserObj, RcPid) - end; - {error, {error_status, Status, _, ErrorDoc}} -> - handle_stanchion_response(Status, ErrorDoc, BucketOp, Bucket); - {error, _} -> - OpResult - end. + OpResult. %% @doc needs retry for delete op. 409 assumes %% MultipartUploadRemaining for now if a new feature that needs retry @@ -773,34 +747,6 @@ update_bucket_record(Bucket=?RCS_BUCKET{name=Name}) when is_binary(Name) -> update_bucket_record(Bucket) -> Bucket. -%% @doc Check if a user already has an ownership of -%% a bucket and update the bucket list if needed. --spec update_user_buckets(rcs_user(), cs_bucket()) -> - {ok, ignore} | {ok, rcs_user()}. -update_user_buckets(User, Bucket) -> - Buckets = User?RCS_USER.buckets, - %% At this point any siblings from the read of the - %% user record have been resolved so the user bucket - %% list should have 0 or 1 buckets that share a name - %% with `Bucket'. - case [B || B <- Buckets, B?RCS_BUCKET.name =:= Bucket?RCS_BUCKET.name] of - [] -> - {ok, User?RCS_USER{buckets=[Bucket | Buckets]}}; - [ExistingBucket] -> - case - (Bucket?RCS_BUCKET.last_action == deleted andalso - ExistingBucket?RCS_BUCKET.last_action == created) - orelse - (Bucket?RCS_BUCKET.last_action == created andalso - ExistingBucket?RCS_BUCKET.last_action == deleted) of - true -> - UpdBuckets = [Bucket | lists:delete(ExistingBucket, Buckets)], - {ok, User?RCS_USER{buckets=UpdBuckets}}; - false -> - {ok, ignore} - end - end. - %% @doc Grab the whole list of Riak CS bucket keys. -spec fetch_bucket_keys(riak_client()) -> {ok, [binary()]} | {error, term()}. fetch_bucket_keys(RcPid) -> diff --git a/apps/riak_cs/src/stanchion/stanchion_utils.erl b/apps/riak_cs/src/stanchion/stanchion_utils.erl index c06eec93f..d64311021 100644 --- a/apps/riak_cs/src/stanchion/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion/stanchion_utils.erl @@ -98,18 +98,60 @@ close_riak_connection(Pid) -> %% an error if it already exists. -spec create_bucket([{term(), term()}]) -> ok | {error, term()}. create_bucket(BucketFields) -> - %% @TODO Check for missing fields Bucket = proplists:get_value(<<"bucket">>, BucketFields, <<>>), BagId = proplists:get_value(<<"bag">>, BucketFields, undefined), OwnerId = proplists:get_value(<<"requester">>, BucketFields, <<>>), AclJson = proplists:get_value(<<"acl">>, BucketFields, []), Acl = stanchion_acl_utils:acl_from_json(AclJson), - do_bucket_op(Bucket, OwnerId, [{acl, Acl}, {bag, BagId}], create). + case riak_connection() of + {ok, Pbc} -> + OpResult1 = do_bucket_op(Bucket, OwnerId, [{acl, Acl}, {bag, BagId}], create, Pbc), + OpResult2 = + case OpResult1 of + ok -> + BucketRecord = bucket_record(Bucket, create), + {ok, User, UserObj} = riak_cs_user:get_user(OwnerId, Pbc), + UpdUser = update_user_buckets(User, BucketRecord), + riak_cs_user:save_user(UpdUser, UserObj, Pbc); + {error, _} -> + OpResult1 + end, + _ = close_riak_connection(Pbc), + OpResult2; + Error -> + Error + end. + +bucket_record(Name, Operation) -> + Action = case Operation of + create -> created; + delete -> deleted; + _ -> undefined + end, + ?RCS_BUCKET{name=binary_to_list(Name), + last_action=Action, + creation_date=riak_cs_wm_utils:iso_8601_datetime(), + modification_time=os:timestamp()}. + +update_user_buckets(User, Bucket) -> + Buckets = User?RCS_USER.buckets, + %% At this point any siblings from the read of the + %% user record have been resolved so the user bucket + %% list should have 0 or 1 buckets that share a name + %% with `Bucket'. + case [B || B <- Buckets, B?RCS_BUCKET.name =:= Bucket?RCS_BUCKET.name] of + [] -> + User?RCS_USER{buckets=[Bucket | Buckets]}; + [ExistingBucket] -> + UpdBuckets = [Bucket | lists:delete(ExistingBucket, Buckets)], + User?RCS_USER{buckets=UpdBuckets} + end. + + %% @doc Attmpt to create a new user -spec create_user([{term(), term()}]) -> ok | {error, riak_connect_failed() | term()}. create_user(UserFields) -> - %% @TODO Check for missing fields UserName = binary_to_list(proplists:get_value(<<"name">>, UserFields, <<>>)), DisplayName = binary_to_list(proplists:get_value(<<"display_name">>, UserFields, <<>>)), Email = proplists:get_value(<<"email">>, UserFields, <<>>), @@ -297,10 +339,7 @@ replace_meta(Key, NewValue, MetaVals) -> -type riak_connect_failed() :: {riak_connect_failed, tuple()}. -spec riak_connection() -> {ok, pid()} | {error, riak_connect_failed()}. riak_connection() -> - {Host, Port} = case application:get_env(riak_cs, riak_host) of - {ok, {_, _} = HostPort} -> HostPort; - undefined -> {"127.0.0.1", 8087} - end, + {ok, {Host, Port}} = application:get_env(riak_cs, riak_host), riak_connection(Host, Port). %% @doc Get a protobufs connection to the riak cluster. @@ -424,10 +463,6 @@ bucket_empty(Bucket, RiakcPid) -> Bucket, ListKeysResult). --spec bucket_empty_handle_list_keys(pid(), binary(), - {ok, list()} | - {error, term()}) -> - boolean(). bucket_empty_handle_list_keys(RiakcPid, Bucket, {ok, Keys}) -> AnyPred = bucket_empty_any_pred(RiakcPid, Bucket), %% `lists:any/2' will break out early as soon @@ -436,56 +471,36 @@ bucket_empty_handle_list_keys(RiakcPid, Bucket, {ok, Keys}) -> bucket_empty_handle_list_keys(_RiakcPid, _Bucket, _Error) -> false. --spec bucket_empty_any_pred(RiakcPid :: pid(), Bucket :: binary()) -> - fun((Key :: binary()) -> boolean()). bucket_empty_any_pred(RiakcPid, Bucket) -> fun (Key) -> key_exists(RiakcPid, Bucket, Key) end. -%% @private -%% `Bucket' should be the raw bucket name, -%% we'll take care of calling `to_bucket_name' --spec key_exists(pid(), binary(), binary()) -> boolean(). key_exists(RiakcPid, Bucket, Key) -> key_exists_handle_get_manifests( get_manifests(RiakcPid, Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION)). -%% @private --spec key_exists_handle_get_manifests({ok, riakc_obj:riakc_obj(), list()} | - {error, term()}) -> - boolean(). key_exists_handle_get_manifests({ok, _Object, Manifests}) -> active_to_bool(active_manifest_from_response({ok, Manifests})); key_exists_handle_get_manifests(Error) -> active_to_bool(active_manifest_from_response(Error)). -%% @private --spec active_to_bool({ok, term()} | {error, notfound}) -> boolean(). active_to_bool({ok, _Active}) -> true; active_to_bool({error, notfound}) -> false. --spec active_manifest_from_response({ok, orddict:orddict()} | - {error, notfound}) -> - {ok, term()} | {error, notfound}. active_manifest_from_response({ok, Manifests}) -> - handle_active_manifests(rcs_common_manifest_utils:active_manifest(Manifests)); + handle_active_manifests( + rcs_common_manifest_utils:active_manifest(Manifests)); active_manifest_from_response({error, notfound}=NotFound) -> NotFound. -%% @private --spec handle_active_manifests({ok, term()} | - {error, no_active_manifest}) -> - {ok, term()} | {error, notfound}. handle_active_manifests({ok, _Active}=ActiveReply) -> ActiveReply; handle_active_manifests({error, no_active_manifest}) -> {error, notfound}. -%% @doc Determine if a bucket is exists and is available -%% for creation or deletion by the inquiring user. -spec bucket_available(binary(), fun(), bucket_op(), pid()) -> {true, term()} | {false, atom()}. bucket_available(Bucket, RequesterId, BucketOp, RiakPid) -> GetOptions = [{pr, all}], @@ -530,42 +545,54 @@ bucket_available(Bucket, RequesterId, BucketOp, RiakPid) -> {false, Reason} end. -%% @doc Perform an operation on a bucket. --spec do_bucket_op(binary(), binary(), bucket_op_options(), bucket_op()) -> - ok | {error, term()}. -do_bucket_op(<<"riak-cs">>, _OwnerId, _Opts, _BucketOp) -> - {error, access_denied}; + do_bucket_op(Bucket, OwnerId, Opts, BucketOp) -> + do_bucket_op(Bucket, OwnerId, Opts, BucketOp, undefined). +do_bucket_op(<<"riak-cs">>, _OwnerId, _Opts, _BucketOp, _) -> + {error, access_denied}; +do_bucket_op(Bucket, OwnerId, Opts, BucketOp, undefined) -> case riak_connection() of - {ok, RiakPid} -> + {ok, Pbc} -> %% Buckets operations can only be completed if the bucket exists %% and the requesting party owns the bucket. try - case bucket_available(Bucket, OwnerId, BucketOp, RiakPid) of - {true, BucketObj} -> - Value = case BucketOp of - create -> OwnerId; - update_acl -> OwnerId; - update_policy -> OwnerId; - delete_policy -> OwnerId; - update_versioning -> OwnerId; - delete -> ?FREE_BUCKET_MARKER - end, - put_bucket(BucketObj, Value, Opts, RiakPid); - {false, Reason1} -> - {error, Reason1} - end + do_bucket_op2(Bucket, OwnerId, Opts, BucketOp, Pbc) catch T:E:ST -> logger:error("Error on updating bucket ~s: ~p. Stacktrace: ~p", [Bucket, {T, E}, ST]), {error, {T, E}} after - close_riak_connection(RiakPid) + close_riak_connection(Pbc) end; {error, _} = Else -> Else + end; +do_bucket_op(Bucket, OwnerId, Opts, BucketOp, Pbc) -> + try + do_bucket_op2(Bucket, OwnerId, Opts, BucketOp, Pbc) + catch T:E:ST -> + logger:error("Error on updating bucket ~s: ~p. Stacktrace: ~p", + [Bucket, {T, E}, ST]), + {error, {T, E}} end. +do_bucket_op2(Bucket, OwnerId, Opts, BucketOp, Pbc) -> + case bucket_available(Bucket, OwnerId, BucketOp, Pbc) of + {true, BucketObj} -> + Value = case BucketOp of + create -> OwnerId; + update_acl -> OwnerId; + update_policy -> OwnerId; + delete_policy -> OwnerId; + update_versioning -> OwnerId; + delete -> ?FREE_BUCKET_MARKER + end, + put_bucket(BucketObj, Value, Opts, Pbc); + {false, Reason1} -> + {error, Reason1} + end. + + %% @doc bucket is ok to delete when bucket is empty. Ongoing multipart %% uploads are all supposed to be automatically aborted by Riak CS. %% If the bucket still has active objects, just fail. Else if the From 255f1d33b6dbec9dc9f613b9be9834fa53f4f169 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 21 Nov 2022 17:20:35 +0200 Subject: [PATCH 375/831] make bucket create/delete atomic --- apps/riak_cs/src/cs/riak_cs_bucket.erl | 58 +++++++---------- .../riak_cs/src/stanchion/stanchion_utils.erl | 62 ++++++++++++++----- 2 files changed, 69 insertions(+), 51 deletions(-) diff --git a/apps/riak_cs/src/cs/riak_cs_bucket.erl b/apps/riak_cs/src/cs/riak_cs_bucket.erl index 0cc2ea7d8..39040ff3d 100644 --- a/apps/riak_cs/src/cs/riak_cs_bucket.erl +++ b/apps/riak_cs/src/cs/riak_cs_bucket.erl @@ -61,10 +61,9 @@ %% @doc Create a bucket in the global namespace or return %% an error if it already exists. --spec create_bucket(rcs_user(), term(), binary(), bag_id(), acl(), riak_client()) -> - ok | - {error, term()}. -create_bucket(User, UserObj, Bucket, BagId, ACL, RcPid) -> +-spec create_bucket(rcs_user(), riakc_object:riakc_object(), binary(), bag_id(), acl(), riak_client()) -> + ok | {error, term()}. +create_bucket(User, _UserObj, Bucket, BagId, ACL, _RcPid) -> CurrentBuckets = get_buckets(User), %% Do not attempt to create bucket if the user already owns it @@ -81,10 +80,8 @@ create_bucket(User, UserObj, Bucket, BagId, ACL, RcPid) -> BagId, ACL, User, - UserObj, create, - [velvet, create_bucket], - RcPid); + [velvet, create_bucket]); false -> {error, invalid_bucket_name} end; @@ -158,9 +155,8 @@ dash_char(Char) -> %% @doc Delete a bucket -spec delete_bucket(rcs_user(), riakc_obj:riakc_obj(), binary(), riak_client()) -> - ok | - {error, remaining_multipart_upload}. -delete_bucket(User, UserObj, Bucket, RcPid) -> + ok | {error, remaining_multipart_upload}. +delete_bucket(User, _UserObj, Bucket, RcPid) -> CurrentBuckets = get_buckets(User), %% Buckets can only be deleted if they exist @@ -186,10 +182,8 @@ delete_bucket(User, UserObj, Bucket, RcPid) -> serialized_bucket_op(Bucket, ?ACL{}, User, - UserObj, delete, - [velvet, delete_bucket], - RcPid); + [velvet, delete_bucket]); false -> LocalError end. @@ -292,38 +286,32 @@ get_buckets(?RCS_USER{buckets=Buckets}) -> %% replaced, they cannot be updated. -spec set_bucket_acl(rcs_user(), riakc_obj:riakc_obj(), binary(), acl(), riak_client()) -> ok | {error, term()}. -set_bucket_acl(User, UserObj, Bucket, ACL, RcPid) -> +set_bucket_acl(User, _UserObj, Bucket, ACL, _RcPid) -> serialized_bucket_op(Bucket, ACL, User, - UserObj, update_acl, - [velvet, set_bucket_acl], - RcPid). + [velvet, set_bucket_acl]). %% @doc Set the policy for a bucket. Existing policy is only overwritten. -spec set_bucket_policy(rcs_user(), riakc_obj:riakc_obj(), binary(), []|policy()|acl(), riak_client()) -> ok | {error, term()}. -set_bucket_policy(User, UserObj, Bucket, PolicyJson, RcPid) -> +set_bucket_policy(User, _UserObj, Bucket, PolicyJson, _RcPid) -> serialized_bucket_op(Bucket, PolicyJson, User, - UserObj, update_policy, - [velvet, set_bucket_policy], - RcPid). + [velvet, set_bucket_policy]). %% @doc Set the policy for a bucket. Existing policy is only overwritten. -spec delete_bucket_policy(rcs_user(), riakc_obj:riakc_obj(), binary(), riak_client()) -> ok | {error, term()}. -delete_bucket_policy(User, UserObj, Bucket, RcPid) -> +delete_bucket_policy(User, _UserObj, Bucket, _RcPid) -> serialized_bucket_op(Bucket, [], User, - UserObj, delete_policy, - [velvet, delete_bucket_policy], - RcPid). + [velvet, delete_bucket_policy]). %% @doc fetch moss.bucket and return acl and policy -spec get_bucket_acl_policy(binary(), atom(), riak_client()) -> @@ -360,14 +348,12 @@ format_acl_policy_response({ok, Acl}, {ok, Policy}) -> -spec set_bucket_versioning(rcs_user(), riakc_obj:riakc_obj(), binary(), bucket_versioning(), riak_client()) -> ok | {error, term()}. -set_bucket_versioning(User, UserObj, Bucket, Option, RcPid) -> +set_bucket_versioning(User, _UserObj, Bucket, Option, _RcPid) -> serialized_bucket_op(Bucket, Option, User, - UserObj, update_versioning, - [velvet, set_bucket_versioning], - RcPid). + [velvet, set_bucket_versioning]). -spec get_bucket_versioning(binary(), riak_client()) -> {ok, bucket_versioning()} | {error, term()}. @@ -689,11 +675,10 @@ resolve_buckets([HeadUserRec | RestUserRecs], Buckets, _KeepDeleted) -> resolve_buckets(RestUserRecs, UpdBuckets, _KeepDeleted). %% @doc Shared code used when doing a bucket creation or deletion. -serialized_bucket_op(Bucket, Arg, User, UserObj, BucketOp, StatKey, RcPid) -> - serialized_bucket_op(Bucket, undefined, Arg, User, UserObj, - BucketOp, StatKey, RcPid). +serialized_bucket_op(Bucket, Arg, User, BucketOp, StatKey) -> + serialized_bucket_op(Bucket, undefined, Arg, User, BucketOp, StatKey). -serialized_bucket_op(Bucket, BagId, Arg, User, UserObj, BucketOp, StatsKey, RcPid) -> +serialized_bucket_op(Bucket, BagId, Arg, User, BucketOp, StatsKey) -> StartTime = os:timestamp(), _ = riak_cs_stats:inflow(StatsKey), {ok, AdminCreds} = riak_cs_config:admin_creds(), @@ -707,7 +692,12 @@ serialized_bucket_op(Bucket, BagId, Arg, User, UserObj, BucketOp, StatsKey, RcPi %% Make a call to the request serialization service. OpResult = BucketFun(), _ = riak_cs_stats:update_with_start(StatsKey, StartTime, OpResult), - OpResult. + case OpResult of + {error, {error_status, Status, _, ErrorDoc}} -> + handle_stanchion_response(Status, ErrorDoc, BucketOp, Bucket); + Other -> + Other + end. %% @doc needs retry for delete op. 409 assumes %% MultipartUploadRemaining for now if a new feature that needs retry diff --git a/apps/riak_cs/src/stanchion/stanchion_utils.erl b/apps/riak_cs/src/stanchion/stanchion_utils.erl index d64311021..b74caf37c 100644 --- a/apps/riak_cs/src/stanchion/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion/stanchion_utils.erl @@ -111,7 +111,7 @@ create_bucket(BucketFields) -> ok -> BucketRecord = bucket_record(Bucket, create), {ok, User, UserObj} = riak_cs_user:get_user(OwnerId, Pbc), - UpdUser = update_user_buckets(User, BucketRecord), + UpdUser = update_user_buckets(add, User, BucketRecord), riak_cs_user:save_user(UpdUser, UserObj, Pbc); {error, _} -> OpResult1 @@ -133,21 +133,6 @@ bucket_record(Name, Operation) -> creation_date=riak_cs_wm_utils:iso_8601_datetime(), modification_time=os:timestamp()}. -update_user_buckets(User, Bucket) -> - Buckets = User?RCS_USER.buckets, - %% At this point any siblings from the read of the - %% user record have been resolved so the user bucket - %% list should have 0 or 1 buckets that share a name - %% with `Bucket'. - case [B || B <- Buckets, B?RCS_BUCKET.name =:= Bucket?RCS_BUCKET.name] of - [] -> - User?RCS_USER{buckets=[Bucket | Buckets]}; - [ExistingBucket] -> - UpdBuckets = [Bucket | lists:delete(ExistingBucket, Buckets)], - User?RCS_USER{buckets=UpdBuckets} - end. - - %% @doc Attmpt to create a new user -spec create_user([{term(), term()}]) -> ok | {error, riak_connect_failed() | term()}. @@ -186,7 +171,24 @@ create_user(UserFields) -> %% @doc Delete a bucket -spec delete_bucket(binary(), binary()) -> ok | {error, term()}. delete_bucket(Bucket, OwnerId) -> - do_bucket_op(Bucket, OwnerId, [{acl, ?ACL{}}], delete). + case riak_connection() of + {ok, Pbc} -> + OpResult1 = do_bucket_op(Bucket, OwnerId, [{acl, ?ACL{}}], delete, Pbc), + OpResult2 = + case OpResult1 of + ok -> + BucketRecord = bucket_record(Bucket, create), + {ok, User, UserObj} = riak_cs_user:get_user(OwnerId, Pbc), + UpdUser = update_user_buckets(delete, User, BucketRecord), + riak_cs_user:save_user(UpdUser, UserObj, Pbc); + {error, _} -> + OpResult1 + end, + _ = close_riak_connection(Pbc), + OpResult2; + Error -> + Error + end. %% Get the root bucket name for either a MOSS object %% bucket or the data block bucket name. @@ -987,3 +989,29 @@ update_user_record([{<<"status">>, Status} | RestUserFields], User, EmailUpdated update_user_record([_ | RestUserFields], User, EmailUpdated) -> update_user_record(RestUserFields, User, EmailUpdated). + + +update_user_buckets(add, User, Bucket) -> + Buckets = User?RCS_USER.buckets, + %% At this point any siblings from the read of the + %% user record have been resolved so the user bucket + %% list should have 0 or 1 buckets that share a name + %% with `Bucket'. + case [B || B <- Buckets, B?RCS_BUCKET.name =:= Bucket?RCS_BUCKET.name] of + [] -> + User?RCS_USER{buckets=[Bucket | Buckets]}; + [ExistingBucket] -> + UpdBuckets = [Bucket | lists:delete(ExistingBucket, Buckets)], + User?RCS_USER{buckets=UpdBuckets} + end; +update_user_buckets(delete, User, Bucket) -> + Buckets = User?RCS_USER.buckets, + case [B || B <- Buckets, B?RCS_BUCKET.name =:= Bucket?RCS_BUCKET.name] of + [] -> + logger:error("attempt to remove bucket ~s from user ~s who does not own it", + [Bucket?RCS_BUCKET.name, User?RCS_USER.name]), + User; + [ExistingBucket] -> + UpdBuckets = lists:delete(ExistingBucket, Buckets), + User?RCS_USER{buckets=UpdBuckets} + end. From abeb98fea2264221a1afe4021773462582802f3d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 21 Nov 2022 17:21:13 +0200 Subject: [PATCH 376/831] expose supps --- apps/riak_cs/src/cs/riak_cs_console.erl | 8 ++++++++ apps/riak_cs/src/lib/supps.erl | 22 +++++++++++++--------- rel/files/riak-cs-admin | 7 ++++++- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/apps/riak_cs/src/cs/riak_cs_console.erl b/apps/riak_cs/src/cs/riak_cs_console.erl index de987f4ec..f3205dc16 100644 --- a/apps/riak_cs/src/cs/riak_cs_console.erl +++ b/apps/riak_cs/src/cs/riak_cs_console.erl @@ -24,6 +24,7 @@ -export([ version/1, status/1, + supps/1, test/1, cluster_info/1, audit_bucket_ownership/1, @@ -51,6 +52,13 @@ status([]) -> || {Name, Value} <- Stats], ok. +supps(Opts) -> + io:put_chars(supps:q(validate_supps_options(Opts))). + +validate_supps_options(Opts) -> + io:format("Opts ~p\n", [Opts]), + catch mochijson2:decode(Opts). + test([]) -> UserName = "ADMINTESTUSER", Bucket = list_to_binary(rand_str(10)), diff --git a/apps/riak_cs/src/lib/supps.erl b/apps/riak_cs/src/lib/supps.erl index df63f9b87..35e75337b 100644 --- a/apps/riak_cs/src/lib/supps.erl +++ b/apps/riak_cs/src/lib/supps.erl @@ -37,23 +37,24 @@ sups() -> [riak_cs_sup]. --spec q(proplists:proplist()) -> ok. +-spec q(proplists:proplist()) -> string(). q(Options0) -> Nodes = [node() | nodes()], Options = extract_options(Options0), + erlang:put(supps_output, []), lists:foreach( fun(Node) -> - io:format("============ Node: ~s ===========================\n", [Node]), - io:format("~11s\t~5s\t~8s\t~.14s~s\n" - "-------------------------------------------------------------\n", - [mem, mq, ths, pid, process]), + acc(io_lib:format("============ Node: ~s ===========================\n", [Node])), + acc(io_lib:format("~11s\t~5s\t~8s\t~.14s~s\n" + "-------------------------------------------------------------\n", + [mem, mq, ths, pid, process])), print( reformat([get_info(Node, P) || P <- sups()], Options), Options, 0) end, Nodes ), - ok. + lists:flatten(lists:reverse(erlang:get(supps_output))). extract_options(PL) -> Depth = @@ -110,7 +111,7 @@ print(#p{name = Name, info = Info, type = worker, pid = Pid}, Mem = integer_or_blank(memory, Info), THS = integer_or_blank(total_heap_size, Info), MQ = integer_or_blank(message_queue_len, Info), - io:format("~11s\t~5s\t~8s\t~.14s~s~s\n", [Mem, MQ, THS, pid_to_list(Pid), pad(Depth * 2), printable(Name)]) + acc(io_lib:format("~11s\t~5s\t~8s\t~.14s~s~s\n", [Mem, MQ, THS, pid_to_list(Pid), pad(Depth * 2), printable(Name)])) end; print(#p{name = Name, children = FF, total_mem = Mem} = P, Options = #{filter := Filter}, Depth) -> @@ -118,8 +119,8 @@ print(#p{name = Name, children = FF, total_mem = Mem} = P, no -> skip; Yes -> - io:format("~11b\t~5s\t~8s\t~14s~s~s (~b)\n", - [Mem, "", "", "", pad(Depth * 2), printable(Name), length(FF)]), + acc(io_lib:format("~11b\t~5s\t~8s\t~14s~s~s (~b)\n", + [Mem, "", "", "", pad(Depth * 2), printable(Name), length(FF)])), lists:foreach( fun(F) -> print(F, Options#{filter => maybe_drop_filter(Yes, Filter)}, Depth + 1) end, FF @@ -200,3 +201,6 @@ reformat(PP, #{format := flat, order_by := OrderBy} = Options) -> end, PP1) end. +acc(L) -> + Q = erlang:get(supps_output), + erlang:put(supps_output, [L|Q]). diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index bdc407e06..0a737147b 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -43,7 +43,8 @@ fi usage() { echo "Usage: $SCRIPT { version | status | gc | access | storage |" echo " stanchion | cluster-info | test |" - echo " cleanup-orphan-multipart | audit-bucket-ownership }" + echo " cleanup-orphan-multipart | audit-bucket-ownership |}" + echo " supps }" } # Check the first argument for instructions @@ -56,6 +57,10 @@ case "$1" in shift rpc riak_cs_console status ;; + supps) + shift + rpc riak_cs_console supps "$@" + ;; gc) shift case "$1" in From c70f9474dbbfad16c067cda8c968b29be54a0c3d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 21 Nov 2022 17:21:42 +0200 Subject: [PATCH 377/831] remove riak-cs-admin stanchion switch --- .../src/cs/riak_cs_stanchion_console.erl | 24 ------------------- rel/files/riak-cs-admin | 4 ++-- 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/apps/riak_cs/src/cs/riak_cs_stanchion_console.erl b/apps/riak_cs/src/cs/riak_cs_stanchion_console.erl index 19a7ef451..d1998b7c1 100644 --- a/apps/riak_cs/src/cs/riak_cs_stanchion_console.erl +++ b/apps/riak_cs/src/cs/riak_cs_stanchion_console.erl @@ -24,7 +24,6 @@ -module(riak_cs_stanchion_console). -export([ - switch/1, show/1 ]). @@ -45,29 +44,6 @@ %%% Public API %%%=================================================================== -%% @doc Switch Stanchion to a new one. Can be used for disabling. -switch([Host, Port]) -> - Msg = io_lib:format("Switching stanchion to ~s:~s", [Host, Port]), - ?SAFELY(begin - NewPort = list_to_integer(Port), - true = (0 < NewPort andalso NewPort < 65536), - %% {_, _, SSL} = riak_cs_utils:stanchion_data(), - %% currently this does not work due to bad path generation of velvet:ping/3 - %% ok = velvet:ping(Host, NewPort, SSL), - - %% Or, set this configuration to dummy host/port - %% to block bucket/user creation/deletion - %% in case of multiple stanchion working. - ok = application:set_env(riak_cs, stanchion_host, {Host, NewPort}), - Msg2 = io_lib:format("Succesfully switched stanchion to ~s:~s: This change is only effective until restart.", - [Host, Port]), - logger:info(Msg2), - io:format("~s~nTo make permanent change, be sure to edit configuration file.~n", [Msg2]) - end, Msg); -switch(_) -> - io:format("Usage: riak-cs-admin stanchion switch IP Port~n"), - error. - show([]) -> ?SAFELY(begin {Host, Port, SSL} = riak_cs_utils:stanchion_data(), diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index 0a737147b..a4ae7b13a 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -102,11 +102,11 @@ case "$1" in stanchion) shift case "$1" in - switch|show) + show) rpc riak_cs_stanchion_console "$@" ;; *) - echo "Usage: $SCRIPT stanchion $1 { switch HOST PORT | show }" + echo "Usage: $SCRIPT stanchion $1 show" exit 1 ;; esac From 1f333b6d109f24a9864cba5b6e74945aea8a538a Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 24 Nov 2022 02:37:28 +0200 Subject: [PATCH 378/831] deal with ipv6 addresses when getting this host addr --- apps/riak_cs/src/cs/riak_cs_utils.erl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/riak_cs/src/cs/riak_cs_utils.erl b/apps/riak_cs/src/cs/riak_cs_utils.erl index 2429348aa..1c5897800 100644 --- a/apps/riak_cs/src/cs/riak_cs_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_utils.erl @@ -536,10 +536,11 @@ this_host_addr() -> case lists:filtermap( fun({_If, PL}) -> case proplists:get_value(addr, PL) of - Defined when Defined /= undefined, - Defined /= {127,0,0,1}, - Defined /= {0,0,0,0} -> - {A1, A2, A3, A4} = Defined, + AA when AA /= undefined, + AA /= {127,0,0,1}, + AA /= {0,0,0,0}, + size(AA) == 4 -> + {A1, A2, A3, A4} = AA, {true, {_If, lists:flatten(io_lib:format("~b.~b.~b.~b", [A1, A2, A3, A4]))}}; _ -> false From c420e5ea1ddf8112516ca98aeb51b7877fd2b3db Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 24 Nov 2022 03:08:47 +0200 Subject: [PATCH 379/831] modify riak_cs_user to use new velvet calls --- apps/riak_cs/src/cs/riak_cs_user.erl | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/apps/riak_cs/src/cs/riak_cs_user.erl b/apps/riak_cs/src/cs/riak_cs_user.erl index 85cb098e5..1f3b4055e 100644 --- a/apps/riak_cs/src/cs/riak_cs_user.erl +++ b/apps/riak_cs/src/cs/riak_cs_user.erl @@ -73,16 +73,13 @@ create_user(Name, Email, KeyId, Secret) -> -spec create_credentialed_user({ok, {term(), term()}}, rcs_user()) -> {ok, rcs_user()} | {error, term()}. create_credentialed_user({ok, AdminCreds}, User) -> - {StIp, StPort, StSSL} = riak_cs_utils:stanchion_data(), %% Make a call to the user request serialization service. StatsKey = [velvet, create_user], _ = riak_cs_stats:inflow(StatsKey), StartTime = os:timestamp(), - Result = velvet:create_user(StIp, - StPort, - "application/json", + Result = velvet:create_user("application/json", binary_to_list(riak_cs_json:to_json(User)), - [{ssl, StSSL}, {auth_creds, AdminCreds}]), + [{auth_creds, AdminCreds}]), _ = riak_cs_stats:update_with_start(StatsKey, StartTime, Result), handle_create_user(Result, User). @@ -115,16 +112,13 @@ handle_update_user({error, _}=Error, _User, _, _) -> -spec update_user(rcs_user(), riakc_obj:riakc_obj(), riak_client()) -> {ok, rcs_user()} | {error, term()}. update_user(User, UserObj, RcPid) -> - {StIp, StPort, StSSL} = riak_cs_utils:stanchion_data(), {ok, AdminCreds} = riak_cs_config:admin_creds(), - Options = [{ssl, StSSL}, {auth_creds, AdminCreds}], + Options = [{auth_creds, AdminCreds}], StatsKey = [velvet, update_user], _ = riak_cs_stats:inflow(StatsKey), StartTime = os:timestamp(), %% Make a call to the user request serialization service. - Result = velvet:update_user(StIp, - StPort, - "application/json", + Result = velvet:update_user("application/json", User?RCS_USER.key_id, binary_to_list(riak_cs_json:to_json(User)), Options), From cb6fea87638ad3fba980619cb52cfcb3741c1ced Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 25 Nov 2022 15:41:39 +0200 Subject: [PATCH 380/831] manually revert 31eb64e70c6 --- rel/vars/dev_vars.config.src | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index e0c3c6959..33316fc63 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -1,5 +1,4 @@ -%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- -%% ex: ts=4 sw=4 et +%% -*- mode: erlang; -*- {rel_vsn, "{{release_version}}"}. @@ -23,7 +22,7 @@ {admin_ip, "0.0.0.0"}. {admin_port, @ADMINPORT@}. {riak_ip, "127.0.0.1"}. -{riak_pb_port, 8087}. +{riak_pb_port, @RIAKPBPORT@}. {auth_bypass, false}. {admin_key, "admin-key"}. {stanchion_host, "127.0.0.1"}. %% access stanchion when it runs on some other node From 006b898a55884043d097f31527edbd318486af4f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 25 Nov 2022 16:41:20 +0200 Subject: [PATCH 381/831] have debug logging print mfa --- .../src/cs/riak_cs_access_archiver.erl | 3 +- .../src/cs/riak_cs_access_log_handler.erl | 7 +-- apps/riak_cs/src/cs/riak_cs_acl.erl | 11 ++--- apps/riak_cs/src/cs/riak_cs_acl_utils.erl | 43 ++++++++++--------- apps/riak_cs/src/cs/riak_cs_app.erl | 3 +- apps/riak_cs/src/cs/riak_cs_bucket.erl | 13 +++--- apps/riak_cs/src/cs/riak_cs_console.erl | 7 +-- apps/riak_cs/src/cs/riak_cs_copy_object.erl | 7 +-- apps/riak_cs/src/cs/riak_cs_delete_fsm.erl | 3 +- apps/riak_cs/src/cs/riak_cs_gc.erl | 14 +++--- apps/riak_cs/src/cs/riak_cs_gc_batch.erl | 11 ++--- apps/riak_cs/src/cs/riak_cs_gc_key_list.erl | 5 ++- apps/riak_cs/src/cs/riak_cs_gc_manager.erl | 3 +- apps/riak_cs/src/cs/riak_cs_gc_worker.erl | 3 +- apps/riak_cs/src/cs/riak_cs_get_fsm.erl | 14 +++--- apps/riak_cs/src/cs/riak_cs_json.erl | 3 +- apps/riak_cs/src/cs/riak_cs_lfs_utils.erl | 17 ++++---- .../src/cs/riak_cs_list_objects_ets_cache.erl | 10 +++-- .../src/cs/riak_cs_list_objects_fsm.erl | 20 +++++---- .../src/cs/riak_cs_list_objects_fsm_v2.erl | 5 ++- apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl | 27 ++++++------ apps/riak_cs/src/cs/riak_cs_mp_utils.erl | 41 +++++++++--------- apps/riak_cs/src/cs/riak_cs_pbc.erl | 3 +- apps/riak_cs/src/cs/riak_cs_put_fsm.erl | 11 ++--- apps/riak_cs/src/cs/riak_cs_quota.erl | 3 +- apps/riak_cs/src/cs/riak_cs_s3_auth.erl | 13 +++--- apps/riak_cs/src/cs/riak_cs_s3_policy.erl | 22 +++++----- apps/riak_cs/src/cs/riak_cs_s3_response.erl | 3 +- .../src/cs/riak_cs_simple_bwlimiter.erl | 18 ++++---- apps/riak_cs/src/cs/riak_cs_simple_quota.erl | 14 +++--- apps/riak_cs/src/cs/riak_cs_utils.erl | 3 +- .../src/cs/wm/riak_cs_wm_bucket_delete.erl | 5 ++- apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl | 15 ++++--- apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl | 9 ++-- .../cs/wm/riak_cs_wm_object_upload_part.erl | 11 ++--- apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl | 15 ++++--- .../src/stanchion/stanchion_acl_utils.erl | 19 ++++---- apps/riak_cs/src/stanchion/stanchion_auth.erl | 11 ++--- .../src/stanchion/stanchion_server.erl | 23 +++++----- .../riak_cs/src/stanchion/stanchion_stats.erl | 6 ++- .../src/stanchion/wm/stanchion_wm_bucket.erl | 3 +- .../src/stanchion/wm/stanchion_wm_policy.erl | 3 +- 42 files changed, 260 insertions(+), 220 deletions(-) diff --git a/apps/riak_cs/src/cs/riak_cs_access_archiver.erl b/apps/riak_cs/src/cs/riak_cs_access_archiver.erl index 54e27be51..24b0898eb 100644 --- a/apps/riak_cs/src/cs/riak_cs_access_archiver.erl +++ b/apps/riak_cs/src/cs/riak_cs_access_archiver.erl @@ -46,6 +46,7 @@ code_change/4]). -include("riak_cs.hrl"). +-include_lib("kernel/include/logger.hrl"). -record(state, { @@ -206,7 +207,7 @@ store(User, RcPid, Record, Slice) -> Timeout = riak_cs_config:put_access_timeout(), case catch riak_cs_pbc:put(MasterPbc, Record, Timeout, [riakc, put_access]) of ok -> - logger:debug("Archived access stats for ~s ~p", [User, Slice]); + ?LOG_DEBUG("Archived access stats for ~s ~p", [User, Slice]); {error, Reason} -> riak_cs_pbc:check_connection_status(MasterPbc, "riak_cs_access_archiver:store/4"), diff --git a/apps/riak_cs/src/cs/riak_cs_access_log_handler.erl b/apps/riak_cs/src/cs/riak_cs_access_log_handler.erl index 96a05916a..731d945cc 100644 --- a/apps/riak_cs/src/cs/riak_cs_access_log_handler.erl +++ b/apps/riak_cs/src/cs/riak_cs_access_log_handler.erl @@ -74,6 +74,7 @@ code_change/3]). -include_lib("webmachine/include/webmachine_logger.hrl"). +-include_lib("kernel/include/logger.hrl"). -include("riak_cs.hrl"). -ifdef(TEST). @@ -188,7 +189,7 @@ handle_call(_Request, State) -> handle_event({log_access, #wm_log_data{notes=undefined, method=Method, path=Path, headers=Headers}}, State) -> - logger:debug("No WM route: ~p ~s ~p", [Method, Path, Headers]), + ?LOG_DEBUG("No WM route: ~p ~s ~p", [Method, Path, Headers]), {ok, State}; handle_event({log_access, LogData}, #state{table=T, size=S, max_size=MaxS}=State) -> @@ -268,7 +269,7 @@ schedule_archival(#state{current={_,E}}=State) -> TL = calendar:datetime_to_gregorian_seconds(E)-Now, case TL < 0 of false -> - logger:debug("Next access archival in ~b seconds", [TL]), + ?LOG_DEBUG("Next access archival in ~b seconds", [TL]), %% time left is in seconds, we need milliseconds erlang:send_after(TL*1000, self(), {archive, Ref}), @@ -290,7 +291,7 @@ force_archive(#state{current=C}=State, FlushEnd) -> %% for storage. Create a clean table to store the next slice's accesses. -spec do_archive(state()) -> state(). do_archive(#state{period=P, table=T, current=C}=State) -> - logger:debug("Rolling access for ~p", [C]), + ?LOG_DEBUG("Rolling access for ~p", [C]), %% archiver takes ownership of the table, and deletes it when done riak_cs_access_archiver_manager:archive(T, C), diff --git a/apps/riak_cs/src/cs/riak_cs_acl.erl b/apps/riak_cs/src/cs/riak_cs_acl.erl index d34b71ce5..200f6da46 100644 --- a/apps/riak_cs/src/cs/riak_cs_acl.erl +++ b/apps/riak_cs/src/cs/riak_cs_acl.erl @@ -26,6 +26,7 @@ -include("riak_cs.hrl"). -include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -compile(export_all). @@ -181,8 +182,8 @@ fetch_bucket_acl(Bucket, RcPid) -> {ok, Obj} -> bucket_acl(Obj); {error, Reason} -> - logger:debug("Failed to fetch ACL. Bucket ~p does not exist. Reason: ~p", - [Bucket, Reason]), + ?LOG_DEBUG("Failed to fetch ACL. Bucket ~p does not exist. Reason: ~p", + [Bucket, Reason]), {error, notfound} end. @@ -278,13 +279,13 @@ object_access(_BucketObj, _ObjAcl, 'WRITE', CanonicalId, RcPid, BucketAcl) -> false end; object_access(_BucketObj, ObjAcl, RequestedAccess, CanonicalId, RcPid, _) -> - logger:debug("ObjAcl: ~p; CanonicalId: ~p", [ObjAcl, CanonicalId]), + ?LOG_DEBUG("ObjAcl: ~p; CanonicalId: ~p", [ObjAcl, CanonicalId]), IsObjOwner = is_owner(ObjAcl, CanonicalId), HasObjPerm = has_permission(acl_grants(ObjAcl), RequestedAccess, CanonicalId), - logger:debug("IsObjOwner: ~p", [IsObjOwner]), - logger:debug("HasObjPerm: ~p", [HasObjPerm]), + ?LOG_DEBUG("IsObjOwner: ~p", [IsObjOwner]), + ?LOG_DEBUG("HasObjPerm: ~p", [HasObjPerm]), if (RequestedAccess == 'READ_ACP' orelse RequestedAccess == 'WRITE_ACP') andalso diff --git a/apps/riak_cs/src/cs/riak_cs_acl_utils.erl b/apps/riak_cs/src/cs/riak_cs_acl_utils.erl index 4d984b5c3..8c2dd52d5 100644 --- a/apps/riak_cs/src/cs/riak_cs_acl_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_acl_utils.erl @@ -25,6 +25,7 @@ -include("riak_cs.hrl"). -include_lib("xmerl/include/xmerl.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -compile(export_all). @@ -471,7 +472,7 @@ canonical_for_email(Email, RcPid) -> {ok, {User, _}} -> {ok, User?RCS_USER.canonical_id}; {error, Reason} -> - logger:debug("Failed to retrieve canonical id for ~p. Reason: ~p", [Email, Reason]), + ?LOG_DEBUG("Failed to retrieve canonical id for ~p. Reason: ~p", [Email, Reason]), {error, unresolved_grant_email} end. @@ -499,7 +500,7 @@ process_acl_contents([], Acl, _) -> process_acl_contents([#xmlElement{content=Content, name=ElementName} | RestElements], Acl, RcPid) -> - logger:debug("Element name: ~p", [ElementName]), + ?LOG_DEBUG("Element name: ~p", [ElementName]), UpdAclRes = case ElementName of 'Owner' -> @@ -507,7 +508,7 @@ process_acl_contents([#xmlElement{content=Content, 'AccessControlList' -> process_grants(Content, Acl, RcPid); _ -> - logger:debug("Encountered unexpected element: ~p", [ElementName]), + ?LOG_DEBUG("Encountered unexpected element: ~p", [ElementName]), Acl end, case UpdAclRes of @@ -542,15 +543,15 @@ process_owner([#xmlElement{content=[Content], UpdOwner = case ElementName of 'ID' -> - logger:debug("Owner ID value: ~p", [Value]), + ?LOG_DEBUG("Owner ID value: ~p", [Value]), {OwnerName, _, OwnerKeyId} = Owner, {OwnerName, Value, OwnerKeyId}; 'DisplayName' -> - logger:debug("Owner Name content: ~p", [Value]), + ?LOG_DEBUG("Owner Name content: ~p", [Value]), {_, OwnerId, OwnerKeyId} = Owner, {Value, OwnerId, OwnerKeyId}; _ -> - logger:debug("Encountered unexpected element: ~p", [ElementName]), + ?LOG_DEBUG("Encountered unexpected element: ~p", [ElementName]), Owner end, process_owner(RestElements, Acl?ACL{owner=UpdOwner}, RcPid); @@ -582,7 +583,7 @@ process_grants([#xmlElement{content=Content, Acl?ACL{grants=add_grant(Grant, Acl?ACL.grants)} end; _ -> - logger:debug("Encountered unexpected grants element: ~p", [ElementName]), + ?LOG_DEBUG("Encountered unexpected grants element: ~p", [ElementName]), Acl end, case UpdAcl of @@ -602,8 +603,8 @@ process_grant([], Grant, _, _) -> process_grant([#xmlElement{content=Content, name=ElementName} | RestElements], Grant, AclOwner, RcPid) -> - logger:debug("ElementName: ~p", [ElementName]), - logger:debug("Content: ~p", [Content]), + ?LOG_DEBUG("ElementName: ~p", [ElementName]), + ?LOG_DEBUG("Content: ~p", [Content]), UpdGrant = case ElementName of 'Grantee' -> @@ -650,16 +651,16 @@ process_grantee([#xmlElement{content=[Content], Value = Content#xmlText.value, case ElementName of 'ID' -> - logger:debug("ID value: ~p", [Value]), + ?LOG_DEBUG("ID value: ~p", [Value]), {{Name, _}, Perms} = Grant, UpdGrant = {{Name, Value}, Perms}; 'EmailAddress' -> - logger:debug("Email value: ~p", [Value]), + ?LOG_DEBUG("Email value: ~p", [Value]), UpdGrant = case canonical_for_email(Value, RcPid) of {ok, Id} -> %% Get the canonical id for a given email address - logger:debug("ID value: ~p", [Id]), + ?LOG_DEBUG("ID value: ~p", [Id]), {{Name, _}, Perms} = Grant, {{Name, Id}, Perms}; {error, _}=Error -> @@ -781,7 +782,7 @@ acl_from_json(Json) -> process_acl_contents([], Acl) -> Acl; process_acl_contents([{Name, Value} | RestObjects], Acl) -> - logger:debug("Object name: ~p", [Name]), + ?LOG_DEBUG("Object name: ~p", [Name]), case Name of <<"owner">> -> {struct, OwnerData} = Value, @@ -805,19 +806,19 @@ process_owner([{Name, Value} | RestObjects], Acl) -> Owner = Acl?ACL.owner, case Name of <<"key_id">> -> - logger:debug("Owner Key ID value: ~p", [Value]), + ?LOG_DEBUG("Owner Key ID value: ~p", [Value]), {OwnerName, OwnerCID, _} = Owner, UpdOwner = {OwnerName, OwnerCID, binary_to_list(Value)}; <<"canonical_id">> -> - logger:debug("Owner ID value: ~p", [Value]), + ?LOG_DEBUG("Owner ID value: ~p", [Value]), {OwnerName, _, OwnerId} = Owner, UpdOwner = {OwnerName, binary_to_list(Value), OwnerId}; <<"display_name">> -> - logger:debug("Owner Name content: ~p", [Value]), + ?LOG_DEBUG("Owner Name content: ~p", [Value]), {_, OwnerCID, OwnerId} = Owner, UpdOwner = {binary_to_list(Value), OwnerCID, OwnerId}; _ -> - logger:debug("Encountered unexpected element: ~p", [Name]), + ?LOG_DEBUG("Encountered unexpected element: ~p", [Name]), UpdOwner = Owner end, process_owner(RestObjects, Acl?ACL{owner=UpdOwner}). @@ -839,22 +840,22 @@ process_grant([], Grant) -> process_grant([{Name, Value} | RestObjects], Grant) -> case Name of <<"canonical_id">> -> - logger:debug("ID value: ~p", [Value]), + ?LOG_DEBUG("ID value: ~p", [Value]), {{DispName, _}, Perms} = Grant, UpdGrant = {{DispName, binary_to_list(Value)}, Perms}; <<"display_name">> -> - logger:debug("Name value: ~p", [Value]), + ?LOG_DEBUG("Name value: ~p", [Value]), {{_, Id}, Perms} = Grant, UpdGrant = {{binary_to_list(Value), Id}, Perms}; <<"group">> -> - logger:debug("Group value: ~p", [Value]), + ?LOG_DEBUG("Group value: ~p", [Value]), {_, Perms} = Grant, UpdGrant = {list_to_atom( binary_to_list(Value)), Perms}; <<"permissions">> -> {Grantee, _} = Grant, Perms = process_permissions(Value), - logger:debug("Perms value: ~p", [Value]), + ?LOG_DEBUG("Perms value: ~p", [Value]), UpdGrant = {Grantee, Perms}; _ -> UpdGrant = Grant diff --git a/apps/riak_cs/src/cs/riak_cs_app.erl b/apps/riak_cs/src/cs/riak_cs_app.erl index bd5feb3a3..42f67bb26 100644 --- a/apps/riak_cs/src/cs/riak_cs_app.erl +++ b/apps/riak_cs/src/cs/riak_cs_app.erl @@ -32,6 +32,7 @@ atoms_for_check_bucket_props/0]). -include("riak_cs.hrl"). +-include_lib("kernel/include/logger.hrl"). -type start_type() :: normal | {takeover, node()} | {failover, node()}. -type start_args() :: term(). @@ -81,7 +82,7 @@ check_admin_creds() -> fetch_and_cache_admin_creds(Key) -> %% Not using as the master pool might not be initialized {ok, MasterPbc} = riak_connection(), - logger:debug("setting admin as ~s", [Key]), + ?LOG_DEBUG("setting admin as ~s", [Key]), try %% Do we count this into stats?; This is a startup query and %% system latency is expected to be low. So get timeout can be diff --git a/apps/riak_cs/src/cs/riak_cs_bucket.erl b/apps/riak_cs/src/cs/riak_cs_bucket.erl index 39040ff3d..5e73427e5 100644 --- a/apps/riak_cs/src/cs/riak_cs_bucket.erl +++ b/apps/riak_cs/src/cs/riak_cs_bucket.erl @@ -48,6 +48,7 @@ -include("riak_cs.hrl"). -include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). -include_lib("riakc/include/riakc.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -compile(export_all). @@ -174,7 +175,7 @@ delete_bucket(User, _UserObj, Bucket, RcPid) -> %% TODO: output log if failed in cleaning up existing uploads. %% The number of retry is hardcoded. {ok, Count} = delete_all_uploads(Bucket, RcPid), - logger:debug("deleted ~p multiparts before bucket deletion.", [Count]), + ?LOG_DEBUG("deleted ~p multiparts before bucket deletion.", [Count]), %% This call still may return {error, remaining_multipart_upload} %% even if all uploads cleaned up above, because concurrent %% multiple deletion may happen. Then Riak CS returns 409 confliction @@ -224,13 +225,13 @@ fold_delete_uploads(Bucket, RcPid, [?MULTIPART_DESCR{key = VKey, {ok, _NewObj} -> fold_delete_uploads(Bucket, RcPid, Ds, Timestamp, Count+1); E -> - logger:debug("cannot delete multipart manifest: ~s (~s/~s:~s): ~p", - [M?MANIFEST.uuid, Bucket, Key, Vsn, E]), + ?LOG_DEBUG("cannot delete multipart manifest: ~s (~s/~s:~s): ~p", + [M?MANIFEST.uuid, Bucket, Key, Vsn, E]), E end; _E -> - logger:debug("skipping multipart manifest: ~p ~p (~p)", - [{Bucket, Key}, UploadId, _E]), + ?LOG_DEBUG("skipping multipart manifest: ~p ~p (~p)", + [{Bucket, Key}, UploadId, _E]), fold_delete_uploads(Bucket, RcPid, Ds, Timestamp, Count) end. @@ -722,7 +723,7 @@ handle_stanchion_response(409, ErrorDoc, Op, Bucket) %% Broken, returns 500 throw({remaining_multipart_upload_on_deleted_bucket, Bucket}); Other -> - logger:debug("errordoc: ~p => ~s", [Other, ErrorDoc]), + ?LOG_DEBUG("errordoc: ~p => ~s", [Other, ErrorDoc]), riak_cs_s3_response:error_response(ErrorDoc) end; handle_stanchion_response(_C, ErrorDoc, _M, _) -> diff --git a/apps/riak_cs/src/cs/riak_cs_console.erl b/apps/riak_cs/src/cs/riak_cs_console.erl index f3205dc16..c1cdf995a 100644 --- a/apps/riak_cs/src/cs/riak_cs_console.erl +++ b/apps/riak_cs/src/cs/riak_cs_console.erl @@ -36,6 +36,7 @@ -include("riak_cs.hrl"). -include_lib("riakc/include/riakc.hrl"). +-include_lib("kernel/include/logger.hrl"). %%%=================================================================== %%% Public API @@ -200,9 +201,9 @@ audit_bucket_ownership() -> audit_bucket_ownership0(RcPid) -> FromUsers = ownership_from_users(RcPid), {FromBuckets, OwnedBy} = ownership_from_buckets(RcPid), - logger:debug("FromUsers: ~p", [lists:usort(gb_sets:to_list(FromUsers))]), - logger:debug("FromBuckets: ~p", [lists:usort(gb_sets:to_list(FromBuckets))]), - logger:debug("OwnedBy: ~p", [lists:usort(gb_trees:to_list(OwnedBy))]), + ?LOG_DEBUG("FromUsers: ~p", [lists:usort(gb_sets:to_list(FromUsers))]), + ?LOG_DEBUG("FromBuckets: ~p", [lists:usort(gb_sets:to_list(FromBuckets))]), + ?LOG_DEBUG("OwnedBy: ~p", [lists:usort(gb_trees:to_list(OwnedBy))]), Inconsistencies0 = gb_sets:fold( fun ({U, B}, Acc) -> diff --git a/apps/riak_cs/src/cs/riak_cs_copy_object.erl b/apps/riak_cs/src/cs/riak_cs_copy_object.erl index d6152749f..4d5ae8e38 100644 --- a/apps/riak_cs/src/cs/riak_cs_copy_object.erl +++ b/apps/riak_cs/src/cs/riak_cs_copy_object.erl @@ -26,6 +26,7 @@ -module(riak_cs_copy_object). -include("riak_cs.hrl"). +-include_lib("kernel/include/logger.hrl"). -export([test_condition_and_permission/4, malformed_request/1, @@ -77,7 +78,7 @@ authorize_on_src(RcPid, SrcManifest, RD, {undefined, undefined} end, - logger:debug("UserKey: ~p / ~p", [UserKey, User]), + ?LOG_DEBUG("UserKey: ~p / ~p", [UserKey, User]), %% Build fake context for checking read access to the src object OtherLocalCtx = LocalCtx#key_context{bucket = SrcBucket, @@ -92,8 +93,8 @@ authorize_on_src(RcPid, SrcManifest, RD, %% TODO: use unicode module for for key? or is this encoded? Path = string:join(["/buckets", binary_to_list(SrcBucket), "objects", binary_to_list(SrcKey)], "/"), - logger:debug("raw path: ~p => ~p", [wrq:raw_path(RD), Path]), - logger:debug("src bucket obj: ~p", [SrcBucketObj]), + ?LOG_DEBUG("raw path: ~p => ~p", [wrq:raw_path(RD), Path]), + ?LOG_DEBUG("src bucket obj: ~p", [SrcBucketObj]), OtherRD0 = wrq:create('GET', wrq:version(RD), Path, wrq:req_headers(RD)), OtherRD = wrq:load_dispatch_data([{bucket, binary_to_list(SrcBucket)}, {object, binary_to_list(SrcKey)}], diff --git a/apps/riak_cs/src/cs/riak_cs_delete_fsm.erl b/apps/riak_cs/src/cs/riak_cs_delete_fsm.erl index 51c25d90d..957092d02 100644 --- a/apps/riak_cs/src/cs/riak_cs_delete_fsm.erl +++ b/apps/riak_cs/src/cs/riak_cs_delete_fsm.erl @@ -26,6 +26,7 @@ -behaviour(gen_fsm). -include("riak_cs.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). @@ -259,7 +260,7 @@ maybe_delete_blocks(State = #state{bucket = Bucket, NewUnackedDeletes = ordsets:add_element(BlockID, UnackedDeletes), NewDeleteBlocksRemaining = ordsets:del_element(BlockID, DeleteBlocksRemaining), {UUID, Seq} = BlockID, - logger:debug("Deleting block #~b (~p) of \"~s/~s:~s\"", [Seq, UUID, Bucket, Key, ObjVsn]), + ?LOG_DEBUG("Deleting block #~b (~p) of \"~s/~s:~s\"", [Seq, UUID, Bucket, Key, ObjVsn]), riak_cs_block_server:delete_block(DeleterPid, Bucket, Key, UUID, Seq), NewFreeDeleters = ordsets:del_element(DeleterPid, FreeDeleters), maybe_delete_blocks(State#state{unacked_deletes = NewUnackedDeletes, diff --git a/apps/riak_cs/src/cs/riak_cs_gc.erl b/apps/riak_cs/src/cs/riak_cs_gc.erl index 1bbe4fcb4..9b5d47467 100644 --- a/apps/riak_cs/src/cs/riak_cs_gc.erl +++ b/apps/riak_cs/src/cs/riak_cs_gc.erl @@ -24,6 +24,8 @@ -module(riak_cs_gc). -include("riak_cs_gc.hrl"). +-include_lib("kernel/include/logger.hrl"). + -ifdef(TEST). -compile(export_all). -compile(nowarn_export_all). @@ -389,7 +391,7 @@ maybe_delete_small_objects(Manifests, RcPid, Threshold) -> when ContentLength < Threshold -> %% actually this won't be scheduled :P UUIDManifest = {UUID, Manifest?MANIFEST{state=scheduled_delete}}, - logger:debug("trying to delete ~p at ~p", [UUIDManifest, BagId]), + ?LOG_DEBUG("trying to delete ~p at ~p", [UUIDManifest, BagId]), case try_delete_blocks(BagId, UUIDManifest) of ok -> {Survivors, [UUID|UUIDsToDelete]}; @@ -399,8 +401,8 @@ maybe_delete_small_objects(Manifests, RcPid, Threshold) -> end; ({UUID, M}, {Survivors, UUIDsToDelete}) -> ContentLength = M?MANIFEST.content_length, - logger:debug("~p is not being deleted: (CL, threshold)=(~p, ~p)", - [UUID, ContentLength, Threshold]), + ?LOG_DEBUG("~p is not being deleted: (CL, threshold)=(~p, ~p)", + [UUID, ContentLength, Threshold]), {[{UUID, M}|Survivors], UUIDsToDelete} end, %% Obtain a new history! @@ -415,10 +417,10 @@ try_delete_blocks(BagId, {UUID, _} = UUIDManifest) -> case riak_cs_delete_fsm:sync_delete(Pid) of {Pid, {ok, {_, _, _, _, TotalBlocks, TotalBlocks}}} -> %% all the blocks are successfully deleted - logger:debug("Active deletion of ~p succeeded", [UUID]), + ?LOG_DEBUG("Active deletion of ~p succeeded", [UUID]), ok; {Pid, {ok, {_, _, _, _, NumDeleted, TotalBlocks}}} -> - logger:debug("Only ~p/~p blocks of ~p deleted", [NumDeleted, TotalBlocks, UUID]), + ?LOG_DEBUG("Only ~p/~p blocks of ~p deleted", [NumDeleted, TotalBlocks, UUID]), {error, partially_deleted}; {Pid, {error, _} = E} -> logger:warning("Active deletion of ~p failed. Reason: ~p", [UUID, E]), @@ -457,7 +459,7 @@ move_manifests_to_gc_bucket(Manifests, RcPid) -> end, %% Create a set from the list of manifests - logger:debug("Manifests scheduled for deletion: ~p", [Manifests]), + ?LOG_DEBUG("Manifests scheduled for deletion: ~p", [Manifests]), Timeout1 = riak_cs_config:put_gckey_timeout(), riak_cs_pbc:put(ManifestPbc, ObjectToWrite, [], Timeout1, [riakc, put_gc_manifest_set]). diff --git a/apps/riak_cs/src/cs/riak_cs_gc_batch.erl b/apps/riak_cs/src/cs/riak_cs_gc_batch.erl index 79706333a..5d2ad6127 100644 --- a/apps/riak_cs/src/cs/riak_cs_gc_batch.erl +++ b/apps/riak_cs/src/cs/riak_cs_gc_batch.erl @@ -51,6 +51,7 @@ code_change/4]). -include("riak_cs_gc.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). @@ -228,7 +229,7 @@ fetch_first_keys(?STATE{batch_start=_BatchStart, {KeyListRes, KeyListState} = riak_cs_gc_key_list:new(StartKey, EndKey, BatchSize), #gc_key_list_result{bag_id=BagId, batch=Batch} = KeyListRes, - logger:debug("Initial batch keys: ~p", [Batch]), + ?LOG_DEBUG("Initial batch keys: ~p", [Batch]), State?STATE{batch=Batch, key_list_state=KeyListState, bag_id=BagId}. @@ -246,7 +247,7 @@ handle_batch_complete(WorkerPid, WorkerState, State) -> batch_skips=WorkerBatchSkips, manif_count=WorkerManifestCount, block_count=WorkerBlockCount} = WorkerState, - logger:debug("~p completed (~p)", [WorkerPid, WorkerState]), + ?LOG_DEBUG("~p completed (~p)", [WorkerPid, WorkerState]), UpdWorkerPids = lists:delete(WorkerPid, WorkerPids), %% @TODO Workout the terminiology for these stats. i.e. Is batch %% count just an increment or represenative of something else. @@ -265,7 +266,7 @@ start_worker(?STATE{batch=[NextBatch|RestBatches], worker_pids=WorkerPids} = State) -> case ?GC_WORKER:start_link(BagId, NextBatch) of {ok, Pid} -> - logger:debug("GC worker ~p for bag ~p has started", [Pid, BagId]), + ?LOG_DEBUG("GC worker ~p for bag ~p has started", [Pid, BagId]), State?STATE{batch=RestBatches, worker_pids=[Pid | WorkerPids]}; {error, _Reason} -> @@ -303,7 +304,7 @@ maybe_start_workers(?STATE{max_workers=MaxWorkers, %% Fetch the next set of manifests for deletion {KeyListRes, UpdKeyListState} = riak_cs_gc_key_list:next(KeyListState), #gc_key_list_result{bag_id=BagId, batch=Batch} = KeyListRes, - logger:debug("Next batch keys: ~p", [Batch]), + ?LOG_DEBUG("Next batch keys: ~p", [Batch]), State2 = State?STATE{batch=Batch, key_list_state=UpdKeyListState, bag_id=BagId}, @@ -315,7 +316,7 @@ maybe_start_workers(?STATE{max_workers=MaxWorkers, worker_pids=WorkerPids, batch=Batch} = State) when MaxWorkers > length(WorkerPids) -> - logger:debug("Batch: ~p, WorkerPids: ~p", [Batch, WorkerPids]), + ?LOG_DEBUG("Batch: ~p, WorkerPids: ~p", [Batch, WorkerPids]), State2 = start_worker(State), maybe_start_workers(State2). diff --git a/apps/riak_cs/src/cs/riak_cs_gc_key_list.erl b/apps/riak_cs/src/cs/riak_cs_gc_key_list.erl index 79f9ad3d0..3ea952380 100644 --- a/apps/riak_cs/src/cs/riak_cs_gc_key_list.erl +++ b/apps/riak_cs/src/cs/riak_cs_gc_key_list.erl @@ -29,6 +29,7 @@ -export([find_oldest_entries/1]). -include("riak_cs_gc.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). @@ -58,7 +59,7 @@ next(#gc_key_list_state{current_riak_client=RcPid, continuation=Continuation} = State) -> {Batch, UpdContinuation} = fetch_eligible_manifest_keys(RcPid, StartKey, EndKey, BatchSize, Continuation), - logger:debug("next Batch: ~p", [Batch]), + ?LOG_DEBUG("next Batch: ~p", [Batch]), {#gc_key_list_result{bag_id=BagId, batch=Batch}, State#gc_key_list_state{continuation=UpdContinuation}}. @@ -82,7 +83,7 @@ next_pool(#gc_key_list_state{ ok = riak_cs_riak_client:set_manifest_bag(RcPid, BagId), {Batch, Continuation} = fetch_eligible_manifest_keys(RcPid, StartKey, EndKey, BatchSize, undefined), - logger:debug("next_bag ~s Batch: ~p", [BagId, Batch]), + ?LOG_DEBUG("next_bag ~s Batch: ~p", [BagId, Batch]), {#gc_key_list_result{bag_id=BagId, batch=Batch}, State#gc_key_list_state{remaining_bags=Rest, current_riak_client=RcPid, diff --git a/apps/riak_cs/src/cs/riak_cs_gc_manager.erl b/apps/riak_cs/src/cs/riak_cs_gc_manager.erl index cc686b699..d31bcfba2 100644 --- a/apps/riak_cs/src/cs/riak_cs_gc_manager.erl +++ b/apps/riak_cs/src/cs/riak_cs_gc_manager.erl @@ -67,6 +67,7 @@ -export_type([statename/0]). -include("riak_cs_gc.hrl"). +-include_lib("kernel/include/logger.hrl"). -define(SERVER, ?MODULE). @@ -328,7 +329,7 @@ schedule_next(#gc_manager_state{timer_ref=Ref}=State) false -> schedule_next(State#gc_manager_state{timer_ref=undefined}); _ -> - logger:debug("Timer is already scheduled, maybe manually triggered?"), + ?LOG_DEBUG("Timer is already scheduled, maybe manually triggered?"), %% Timer is already scheduled, do nothing State end; diff --git a/apps/riak_cs/src/cs/riak_cs_gc_worker.erl b/apps/riak_cs/src/cs/riak_cs_gc_worker.erl index 306b29088..39b8b17a7 100644 --- a/apps/riak_cs/src/cs/riak_cs_gc_worker.erl +++ b/apps/riak_cs/src/cs/riak_cs_gc_worker.erl @@ -46,6 +46,7 @@ code_change/4]). -include("riak_cs_gc.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). @@ -257,7 +258,7 @@ finish_file_delete(0, _, RiakObj, RcPid) -> Timeout, [riakc, delete_gc_manifest_set]), ok; finish_file_delete(_, FileSet, _RiakObj, _RcPid) -> - logger:debug("Remaining file keys: ~p", [twop_set:to_list(FileSet)]), + ?LOG_DEBUG("Remaining file keys: ~p", [twop_set:to_list(FileSet)]), %% NOTE: we used to do a PUT here, but now with multidc replication %% we run garbage collection seprarately on each cluster, so we don't %% want to send this update to another data center. When we delete this diff --git a/apps/riak_cs/src/cs/riak_cs_get_fsm.erl b/apps/riak_cs/src/cs/riak_cs_get_fsm.erl index 20f3e6b0c..058eab5dc 100644 --- a/apps/riak_cs/src/cs/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/cs/riak_cs_get_fsm.erl @@ -36,10 +36,10 @@ %% Test API -export([test_link/6]). - -endif. -include("riak_cs.hrl"). +-include_lib("kernel/include/logger.hrl"). %% API -export([start_link/7, @@ -257,7 +257,7 @@ waiting_continue_or_stop({continue, Range}, #state{manifest = Manifest, FreeReaders = riak_cs_block_server:start_block_servers(Manifest, RcPid, FetchConcurrency), - logger:debug("Block Servers: ~p", [FreeReaders]); + ?LOG_DEBUG("Block Servers: ~p", [FreeReaders]); _ -> FreeReaders = Readers end, @@ -307,7 +307,7 @@ perhaps_send_to_user(From, #state{got_blocks = Got, {{value, NextBlock}, UpdIntransit} -> case orddict:find(NextBlock, Got) of {ok, Block} -> - logger:debug("Returning block ~p to client", [NextBlock]), + ?LOG_DEBUG("Returning block ~p to client", [NextBlock]), %% Must use gen_fsm:reply/2 here! We are shared %% with an async event func and must return next_state. gen_fsm:reply(From, {chunk, Block}), @@ -323,7 +323,7 @@ waiting_chunks(stop, State) -> {stop, normal, State}; waiting_chunks(timeout, State = #state{got_blocks = Got}) -> GotSize = orddict:size(Got), - logger:debug("starting fetch again with ~p left in queue", [GotSize]), + ?LOG_DEBUG("starting fetch again with ~p left in queue", [GotSize]), UpdState = read_blocks(State), {next_state, waiting_chunks, UpdState}; @@ -336,7 +336,7 @@ waiting_chunks({chunk, Pid, {NextBlock, BlockReturnValue}}, skip_bytes_initial = SkipInitial, keep_bytes_final = KeepFinal } = State) -> - logger:debug("Retrieved block ~p", [NextBlock]), + ?LOG_DEBUG("Retrieved block ~p", [NextBlock]), case BlockReturnValue of {error, _} = ErrorRes -> #state{bucket = Bucket, key = Key, obj_vsn = ObjVsn} = State, @@ -354,7 +354,7 @@ waiting_chunks({chunk, Pid, {NextBlock, BlockReturnValue}}, {InitialBlock, FinalBlock}, {SkipInitial, KeepFinal}), UpdGot = orddict:store(NextBlock, BlockValue, Got), - %% TODO: logger:debug("BlocksLeft: ~p", [BlocksLeft]), + %% TODO: ?LOG_DEBUG("BlocksLeft: ~p", [BlocksLeft]), GotSize = orddict:size(UpdGot), UpdState0 = State#state{got_blocks = UpdGot, free_readers = [Pid|FreeReaders]}, MaxGotSize = riak_cs_lfs_utils:get_fsm_buffer_size_factor(), @@ -434,7 +434,7 @@ prepare(#state{bucket = Bucket, {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, Vsn, RcPid), case riak_cs_manifest_fsm:get_active_manifest(ManiPid) of {ok, Manifest} -> - logger:debug("Manifest: ~p", [Manifest]), + ?LOG_DEBUG("Manifest: ~p", [Manifest]), case riak_cs_mp_utils:clean_multipart_unused_parts(Manifest, RcPid) of same -> State#state{manifest = Manifest, diff --git a/apps/riak_cs/src/cs/riak_cs_json.erl b/apps/riak_cs/src/cs/riak_cs_json.erl index 16922f75c..0639f8bc7 100644 --- a/apps/riak_cs/src/cs/riak_cs_json.erl +++ b/apps/riak_cs/src/cs/riak_cs_json.erl @@ -27,6 +27,7 @@ -include("riak_cs.hrl"). -include("list_objects.hrl"). -include("oos_api.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). @@ -90,7 +91,7 @@ to_json([]) -> -spec value_or_default({ok, term()} | {error, term()}, term()) -> term(). value_or_default({error, Reason}, Default) -> - logger:debug("JSON error: ~p", [Reason]), + ?LOG_DEBUG("JSON error: ~p", [Reason]), Default; value_or_default({ok, Value}, _) -> Value. diff --git a/apps/riak_cs/src/cs/riak_cs_lfs_utils.erl b/apps/riak_cs/src/cs/riak_cs_lfs_utils.erl index ae551fa10..532d4026e 100644 --- a/apps/riak_cs/src/cs/riak_cs_lfs_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_lfs_utils.erl @@ -21,8 +21,6 @@ -module(riak_cs_lfs_utils). --include("riak_cs.hrl"). - -export([block_count/2, block_keynames/3, block_name/3, @@ -43,6 +41,9 @@ remove_write_block/2, remove_delete_block/2]). +-include("riak_cs.hrl"). +-include_lib("kernel/include/logger.hrl"). + %% ------------------------------------------------------------------- %% Public API %% ------------------------------------------------------------------- @@ -120,9 +121,9 @@ initial_blocks(ContentLength, SafeBlockSize, UUID) -> range_blocks(Start, End, SafeBlockSize, UUID) -> SkipInitial = Start rem SafeBlockSize, KeepFinal = (End rem SafeBlockSize) + 1, - logger:debug("InitialBlock: ~p, FinalBlock: ~p", + ?LOG_DEBUG("InitialBlock: ~p, FinalBlock: ~p", [Start div SafeBlockSize, End div SafeBlockSize]), - logger:debug("SkipInitial: ~p, KeepFinal: ~p", [SkipInitial, KeepFinal]), + ?LOG_DEBUG("SkipInitial: ~p, KeepFinal: ~p", [SkipInitial, KeepFinal]), {[{UUID, B} || B <- lists:seq(Start div SafeBlockSize, End div SafeBlockSize)], SkipInitial, KeepFinal}. @@ -168,8 +169,8 @@ block_sort_fun(SafeBlockSize) -> block_sequences_for_part_manifests_skip(SafeBlockSize, [PM | Rest], StartOffset, EndOffset) -> - logger:debug("StartOffset: ~p, EndOffset: ~p, PartLength: ~p", - [StartOffset, EndOffset, PM?PART_MANIFEST.content_length]), + ?LOG_DEBUG("StartOffset: ~p, EndOffset: ~p, PartLength: ~p", + [StartOffset, EndOffset, PM?PART_MANIFEST.content_length]), case PM?PART_MANIFEST.content_length of %% Skipped PartLength when PartLength =< StartOffset -> @@ -192,8 +193,8 @@ block_sequences_for_part_manifests_skip(SafeBlockSize, [PM | Rest], block_sequences_for_part_manifests_keep(SafeBlockSize, SkipInitial, [PM | Rest], EndOffset, ListOfBlocks) -> - logger:debug("EndOffset: EndOffset: ~p, PartLength: ~p", - [EndOffset, PM?PART_MANIFEST.content_length]), + ?LOG_DEBUG("EndOffset: EndOffset: ~p, PartLength: ~p", + [EndOffset, PM?PART_MANIFEST.content_length]), case PM?PART_MANIFEST.content_length of %% More blocks needed PartLength when PartLength =< EndOffset -> diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl index 86e041d49..160174821 100644 --- a/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl +++ b/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl @@ -24,8 +24,6 @@ -module(riak_cs_list_objects_ets_cache). -behaviour(gen_server). --include("riak_cs.hrl"). --include("list_objects.hrl"). %% API -export([start_link/0, @@ -51,6 +49,10 @@ min_keys_to_cache/0, max_cache_size/0]). +-include("riak_cs.hrl"). +-include("list_objects.hrl"). +-include_lib("kernel/include/logger.hrl"). + -define(DICTMODULE, dict). -record(state, {tid :: ets:tid(), @@ -71,7 +73,7 @@ start_link() -> -spec lookup(binary()) -> cache_lookup_result(). lookup(Key) -> try - logger:debug("Reading info for ~p from cache", [Key]), + ?LOG_DEBUG("Reading info for ~p from cache", [Key]), format_lookup_result(ets:lookup(default_ets_table(), Key)) catch _:Reason -> @@ -226,7 +228,7 @@ num_keys_to_bytes(NumKeys) -> unsafe_write(Key, Value) -> TS = riak_cs_utils:second_resolution_timestamp(os:timestamp()), - logger:debug("Writing entry for ~p to LO Cache", [Key]), + ?LOG_DEBUG("Writing entry for ~p to LO Cache", [Key]), ets:insert(default_ets_table(), {Key, Value, TS}), ok. diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl index 140ec82e9..4fdaeac91 100644 --- a/apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl +++ b/apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl @@ -38,9 +38,6 @@ -include_lib("eunit/include/eunit.hrl"). -endif. --include("riak_cs.hrl"). --include("list_objects.hrl"). - %% API -export([start_link/3, start_link/5]). @@ -56,6 +53,11 @@ terminate/3, code_change/4]). +-include("riak_cs.hrl"). +-include("list_objects.hrl"). +-include("riak_cs.hrl"). +-include_lib("kernel/include/logger.hrl"). + -record(profiling, { %% floating point secs list_keys_start_time :: undefined | float(), @@ -277,10 +279,10 @@ maybe_write_to_cache(#state{cache_key=CacheKey, CallerPid, ListOfListOfKeysLength) of true -> - logger:debug("writing to cache"), + ?LOG_DEBUG("writing to cache"), riak_cs_list_objects_ets_cache:write(CacheKey, ListofListofKeys); false -> - logger:debug("not writing to cache"), + ?LOG_DEBUG("not writing to cache"), ok end. @@ -290,12 +292,12 @@ maybe_write_to_cache(#state{cache_key=CacheKey, -spec fetch_key_list(riak_client(), list_object_request(), state(), cache_lookup_result()) -> fsm_state_return(). fetch_key_list(_, _, State, {true, Value}) -> - logger:debug("Using cached key list"), + ?LOG_DEBUG("Using cached key list"), NewState = prepare_state_for_first_mapred(Value, State#state{key_buffer=Value}), maybe_map_reduce(NewState); fetch_key_list(RcPid, Request, State, false) -> - logger:debug("Requesting fresh key list"), + ?LOG_DEBUG("Requesting fresh key list"), handle_streaming_list_keys_call( make_list_keys_request(RcPid, Request), State). @@ -671,8 +673,8 @@ update_state_with_mr_end_profiling(State=#state{req_profiles=Profiling}) -> State#state{req_profiles=Profiling2}. print_profiling(Profiling) -> - logger:debug(format_list_keys_profile(Profiling)), - logger:debug(format_map_reduce_profile(Profiling)). + ?LOG_DEBUG(format_list_keys_profile(Profiling)), + ?LOG_DEBUG(format_map_reduce_profile(Profiling)). format_list_keys_profile(#profiling{list_keys_start_time=undefined, list_keys_num_results=NumResults}) -> diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl index 322c75bec..244c0e8df 100644 --- a/apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl @@ -28,6 +28,7 @@ -include("riak_cs.hrl"). -include("list_objects.hrl"). +-include_lib("kernel/include/logger.hrl"). %%%=================================================================== %%% Exports @@ -185,7 +186,7 @@ handle_info(Info, StateName, _State) -> ok. terminate(normal, _StateName, State) -> - logger:debug(format_profiling_from_state(State)); + ?LOG_DEBUG(format_profiling_from_state(State)); terminate(_Reason, _StateName, _State) -> ok. @@ -226,7 +227,7 @@ handle_done(State=#state{object_buffer=ObjectBuffer, common_prefixes=NewPrefixes, reached_end_of_keyspace=ReachedEnd, object_buffer=[]}, - logger:debug("Ranges: ~p", [NewStateData#state.object_list_ranges]), + ?LOG_DEBUG("Ranges: ~p", [NewStateData#state.object_list_ranges]), respond(NewStateData, NewManis, NewPrefixes). -spec reached_end_of_keyspace(non_neg_integer(), diff --git a/apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl index a449a1bb8..555bfe322 100644 --- a/apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl @@ -21,18 +21,6 @@ -module(riak_cs_manifest_fsm). --include("riak_cs.hrl"). - --behaviour(gen_fsm). - --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). - -%% Test API --export([test_link/2]). - --endif. - %% API -export([start_link/4, get_all_manifests/1, @@ -67,6 +55,19 @@ terminate/3, code_change/4]). +-include("riak_cs.hrl"). +-include_lib("kernel/include/logger.hrl"). + +-behaviour(gen_fsm). + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). + +%% Test API +-export([test_link/2]). + +-endif. + -define(SERVER, ?MODULE). -record(state, {bucket :: binary(), @@ -396,7 +397,7 @@ maybe_backpressure_sleep(Siblings, _BackpressureThreshold) -> MeanSleepMS = min(Coefficient * Siblings, MaxSleep), Delta = MeanSleepMS div 2, SleepMS = MeanSleepMS - Delta + rand:uniform(MeanSleepMS + Delta), - logger:debug("maybe_backpressure_sleep: Siblings=~p, SleepMS=~p", [Siblings, SleepMS]), + ?LOG_DEBUG("maybe_backpressure_sleep: Siblings=~p, SleepMS=~p", [Siblings, SleepMS]), ok = riak_cs_stats:countup([manifest, siblings_bp_sleep]), ok = timer:sleep(SleepMS), true. diff --git a/apps/riak_cs/src/cs/riak_cs_mp_utils.erl b/apps/riak_cs/src/cs/riak_cs_mp_utils.erl index fd0e799b4..25eb18b96 100644 --- a/apps/riak_cs/src/cs/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_mp_utils.erl @@ -23,21 +23,6 @@ -module(riak_cs_mp_utils). --include("riak_cs.hrl"). --include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). --include_lib("riakc/include/riakc.hrl"). - --ifdef(TEST). --compile(export_all). --compile(nowarn_export_all). --include_lib("proper/include/proper.hrl"). --include_lib("eunit/include/eunit.hrl"). --endif. - --define(MIN_MP_PART_SIZE, (5*1024*1024)). - --define(PID(WrappedRcPid), get_riak_client_pid(WrappedRcPid)). - %% export Public API -export([ abort_multipart_upload/6, @@ -56,6 +41,22 @@ upload_part_1blob/2, upload_part_finished/9]). +-include("riak_cs.hrl"). +-include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). +-include_lib("riakc/include/riakc.hrl"). +-include_lib("kernel/include/logger.hrl"). + +-ifdef(TEST). +-compile(export_all). +-compile(nowarn_export_all). +-include_lib("proper/include/proper.hrl"). +-include_lib("eunit/include/eunit.hrl"). +-endif. + +-define(MIN_MP_PART_SIZE, (5*1024*1024)). + +-define(PID(WrappedRcPid), get_riak_client_pid(WrappedRcPid)). + %%%=================================================================== %%% API %%%=================================================================== @@ -109,9 +110,9 @@ clean_multipart_unused_parts(?MANIFEST{bkey = {Bucket, Key}, UpdManifest = Manifest?MANIFEST{props = [multipart_clean|Props]}, ok = update_manifest_with_confirmation(RcPid, UpdManifest) catch X:Y:ST -> - logger:debug("clean_multipart_unused_parts: " - "b/key:vsn ~s/~s:~s : ~p ~p @ ~p", - [Bucket, Key, ObjVsn, X, Y, ST]) + ?LOG_DEBUG("clean_multipart_unused_parts: " + "b/key:vsn ~s/~s:~s : ~p ~p @ ~p", + [Bucket, Key, ObjVsn, X, Y, ST]) end, %% Return same value to caller, regardless of ok/catch updated; @@ -339,7 +340,7 @@ new_manifest(Bucket, Key, Vsn, ContentType, {_, _, _} = Owner, Opts) -> MpM = ?MULTIPART_MANIFEST{upload_id = UUID, owner = Owner}, M9 = M0?MANIFEST{props = replace_mp_manifest(MpM, M0?MANIFEST.props)}, - logger:debug("created mp manifest for ~s/~s:~s", [Bucket, Key, Vsn]), + ?LOG_DEBUG("created mp manifest for ~s/~s:~s", [Bucket, Key, Vsn]), M9. @@ -711,7 +712,7 @@ comb_parts(MpM, PartETags) -> KeepPartIDs = [PM?PART_MANIFEST.part_id || PM <- KeepPMs], ToDelete = [PM || PM <- Parts, not lists:member(PM?PART_MANIFEST.part_id, KeepPartIDs)], - logger:debug("Part count to be deleted at completion = ~p", [length(ToDelete)]), + ?LOG_DEBUG("Part count to be deleted at completion = ~p", [length(ToDelete)]), {KeepBytes, riak_cs_utils:md5_final(MD5Context), lists:reverse(KeepPMs), ToDelete}. comb_parts_fold({LastPartNum, LastPartETag} = _K, diff --git a/apps/riak_cs/src/cs/riak_cs_pbc.erl b/apps/riak_cs/src/cs/riak_cs_pbc.erl index 514f52ae2..aca4adf42 100644 --- a/apps/riak_cs/src/cs/riak_cs_pbc.erl +++ b/apps/riak_cs/src/cs/riak_cs_pbc.erl @@ -49,6 +49,7 @@ ]). -include_lib("riakc/include/riakc.hrl"). +-include_lib("kernel/include/logger.hrl"). -define(WITH_STATS(StatsKey, Statement), begin @@ -224,7 +225,7 @@ pause_to_reconnect(_Pbc, _Other, _Timeout) -> ok. pause_to_reconnect0(Pbc, Timeout, Start) -> - logger:debug("riak_cs_pbc:pause_to_reconnect0"), + ?LOG_DEBUG("riak_cs_pbc:pause_to_reconnect0"), case riakc_pb_socket:is_connected(Pbc, ?FIRST_RECONNECT_INTERVAL) of true -> ok; {false, _} -> diff --git a/apps/riak_cs/src/cs/riak_cs_put_fsm.erl b/apps/riak_cs/src/cs/riak_cs_put_fsm.erl index 40e80bc70..3f79a1f69 100644 --- a/apps/riak_cs/src/cs/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/cs/riak_cs_put_fsm.erl @@ -25,8 +25,6 @@ -behaviour(gen_fsm). --include("riak_cs.hrl"). - %% API -export([start_link/1, start_link/3, get_uuid/1, @@ -51,6 +49,9 @@ terminate/3, code_change/4]). +-include("riak_cs.hrl"). +-include_lib("kernel/include/logger.hrl"). + -define(SERVER, ?MODULE). -define(EMPTYORDSET, ordsets:new()). -define(MD5_CHUNK_SIZE, 64*1024). @@ -334,11 +335,11 @@ done(finalize, true, From, State=#state{manifest=Manifest, -spec is_digest_valid(binary(), undefined | string()) -> boolean(). is_digest_valid(D1, undefined) -> %% reported MD5 is not in request header - logger:debug("Calculated = ~p, Reported = undefined", [D1]), + ?LOG_DEBUG("Calculated = ~p, Reported = undefined", [D1]), true; is_digest_valid(CalculatedMD5, ReportedMD5) -> StringCalculatedMD5 = base64:encode(CalculatedMD5), - logger:debug("Calculated = ~p, Reported = ~p", [StringCalculatedMD5, ReportedMD5]), + ?LOG_DEBUG("Calculated = ~p, Reported = ~p", [StringCalculatedMD5, ReportedMD5]), StringCalculatedMD5 =:= list_to_binary(ReportedMD5). %%-------------------------------------------------------------------- @@ -356,7 +357,7 @@ handle_sync_event(current_state, _From, StateName, State) -> handle_sync_event(force_stop, _From, _StateName, State = #state{mani_pid = ManiPid, uuid = UUID}) -> Res = riak_cs_manifest_fsm:gc_specific_manifest(ManiPid, UUID), - logger:debug("Manifest collection on upload failure: ~p", [Res]), + ?LOG_DEBUG("Manifest collection on upload failure: ~p", [Res]), {stop, normal, Res, State}; handle_sync_event(_Event, _From, StateName, State) -> Reply = ok, diff --git a/apps/riak_cs/src/cs/riak_cs_quota.erl b/apps/riak_cs/src/cs/riak_cs_quota.erl index a3a3c9273..ab608303b 100644 --- a/apps/riak_cs/src/cs/riak_cs_quota.erl +++ b/apps/riak_cs/src/cs/riak_cs_quota.erl @@ -73,6 +73,7 @@ -include("riak_cs.hrl"). -include_lib("webmachine/include/webmachine_logger.hrl"). -include_lib("webmachine/include/wm_reqdata.hrl"). +-include_lib("kernel/include/logger.hrl"). %% Callbacks as a behaviour @@ -129,7 +130,7 @@ invoke_all_callbacks(Owner, Access, Ctx0) -> update_all_states(User, LogData) -> Modules = riak_cs_config:quota_modules(), [begin - logger:debug("quota update at ~p: ~p", [Module, User]), + ?LOG_DEBUG("quota update at ~p: ~p", [Module, User]), (catch Module:update(list_to_binary(User), LogData)) end || Module <- Modules]. diff --git a/apps/riak_cs/src/cs/riak_cs_s3_auth.erl b/apps/riak_cs/src/cs/riak_cs_s3_auth.erl index ed72d63ca..22f00e216 100644 --- a/apps/riak_cs/src/cs/riak_cs_s3_auth.erl +++ b/apps/riak_cs/src/cs/riak_cs_s3_auth.erl @@ -33,6 +33,7 @@ -include("riak_cs.hrl"). -include("s3_api.hrl"). -include_lib("webmachine/include/webmachine.hrl"). +-include_lib("kernel/include/logger.hrl"). -type v4_attrs() :: [{string(), string()}]. @@ -140,7 +141,7 @@ parse_auth_v4_header(String) -> parse_auth_v4_header([], UserId, Acc) -> {UserId, {v4, lists:reverse(Acc)}}; parse_auth_v4_header([KV | KVs], UserId, Acc) -> - logger:debug("Auth header ~p", [KV]), + ?LOG_DEBUG("Auth header ~p", [KV]), case string:tokens(KV, "=") of [Key, Value] -> case Key of @@ -190,7 +191,7 @@ calculate_signature_v2(KeyData, RD) -> "\n", AmazonHeaders, Resource], - logger:debug("STS: ~p", [STS]), + ?LOG_DEBUG("STS: ~p", [STS]), base64:encode_to_string(riak_cs_utils:sha_mac(KeyData, STS)). @@ -206,14 +207,14 @@ authenticate_v4(?RCS_USER{key_secret = SecretAccessKey} = _User, AuthAttrs, RD) authenticate_v4(SecretAccessKey, AuthAttrs, Method, Path, Qs, AllHeaders) -> CanonicalRequest = canonical_request_v4(AuthAttrs, Method, Path, Qs, AllHeaders), - logger:debug("CanonicalRequest(v4): ~s", [CanonicalRequest]), + ?LOG_DEBUG("CanonicalRequest(v4): ~s", [CanonicalRequest]), {StringToSign, Scope} = string_to_sign_v4(AuthAttrs, AllHeaders, CanonicalRequest), - logger:debug("StringToSign(v4): ~s", [StringToSign]), + ?LOG_DEBUG("StringToSign(v4): ~s", [StringToSign]), CalculatedSignature = calculate_signature_v4(SecretAccessKey, Scope, StringToSign), - logger:debug("CalculatedSignature(v4): ~s", [CalculatedSignature]), + ?LOG_DEBUG("CalculatedSignature(v4): ~s", [CalculatedSignature]), {"Signature", PresentedSignature} = lists:keyfind("Signature", 1, AuthAttrs), - logger:debug(" PresentedSignature(v4): ~s", [PresentedSignature]), + ?LOG_DEBUG(" PresentedSignature(v4): ~s", [PresentedSignature]), case CalculatedSignature of PresentedSignature -> ok; _ -> {error, {unmatched_signature, PresentedSignature, CalculatedSignature}} diff --git a/apps/riak_cs/src/cs/riak_cs_s3_policy.erl b/apps/riak_cs/src/cs/riak_cs_s3_policy.erl index 5f7385bc7..ce2949411 100644 --- a/apps/riak_cs/src/cs/riak_cs_s3_policy.erl +++ b/apps/riak_cs/src/cs/riak_cs_s3_policy.erl @@ -26,12 +26,6 @@ -behaviour(riak_cs_policy). --include("riak_cs.hrl"). --include("s3_api.hrl"). --include_lib("webmachine/include/wm_reqdata.hrl"). --include_lib("webmachine/include/wm_reqstate.hrl"). --include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). - %% Public API -export([ fetch_bucket_policy/2, @@ -47,8 +41,14 @@ log_supported_actions/0 ]). --ifdef(TEST). +-include("riak_cs.hrl"). +-include("s3_api.hrl"). +-include_lib("webmachine/include/wm_reqdata.hrl"). +-include_lib("webmachine/include/wm_reqstate.hrl"). +-include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). +-include_lib("kernel/include/logger.hrl"). +-ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). -export([eval_all_ip_addr/2, eval_ip_address/2, @@ -59,10 +59,8 @@ print_arns/1, parse_ip/1, print_ip/1, - statement_eq/2 %% for test use ]). - -endif. -type policy1() :: ?POLICY{}. @@ -233,7 +231,7 @@ policy_from_json(JSON) -> {error, _Reason} = E -> E; {'EXIT', {{case_clause, B}, _}} when is_binary(B) -> - logger:debug("mochiweb failed to parse the JSON: ~p", [B]), + ?LOG_DEBUG("mochiweb failed to parse the JSON: ~p", [B]), {error, malformed_policy_json} end. @@ -279,8 +277,8 @@ fetch_bucket_policy(Bucket, RcPid) -> Contents = riakc_obj:get_contents(Obj), bucket_policy_from_contents(Bucket, Contents); {error, Reason} -> - logger:debug("Failed to fetch policy. Bucket ~p does not exist. Reason: ~p", - [Bucket, Reason]), + ?LOG_DEBUG("Failed to fetch policy. Bucket ~p does not exist. Reason: ~p", + [Bucket, Reason]), {error, notfound} end. diff --git a/apps/riak_cs/src/cs/riak_cs_s3_response.erl b/apps/riak_cs/src/cs/riak_cs_s3_response.erl index f23f642a6..9794e75e8 100644 --- a/apps/riak_cs/src/cs/riak_cs_s3_response.erl +++ b/apps/riak_cs/src/cs/riak_cs_s3_response.erl @@ -39,6 +39,7 @@ -include("list_objects.hrl"). -include_lib("webmachine/include/webmachine.hrl"). -include_lib("xmerl/include/xmerl.hrl"). +-include_lib("kernel/include/logger.hrl"). -type xmlElement() :: #xmlElement{}. @@ -415,7 +416,7 @@ process_xml_error([]) -> process_xml_error([#xmlText{value=" "}|Rest]) -> process_xml_error(Rest); process_xml_error([HeadElement | RestElements]) -> - logger:debug("Element name: ~p", [HeadElement#xmlElement.name]), + ?LOG_DEBUG("Element name: ~p", [HeadElement#xmlElement.name]), ElementName = HeadElement#xmlElement.name, case ElementName of 'Code' -> diff --git a/apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl b/apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl index de377f2db..367b64f28 100644 --- a/apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl +++ b/apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl @@ -45,13 +45,13 @@ -behaviour(riak_cs_quota). +-export([state/0, reset/0, set_limits/3]). +-export([start_link/0, allow/3, update/2, error_response/3]). + -include("riak_cs.hrl"). -include_lib("webmachine/include/webmachine_logger.hrl"). -include_lib("webmachine/include/wm_reqdata.hrl"). - --export([state/0, reset/0, set_limits/3]). - --export([start_link/0, allow/3, update/2, error_response/3]). +-include_lib("kernel/include/logger.hrl"). -record(user_state, { user :: binary(), @@ -114,12 +114,12 @@ refresher() -> end, receive reset -> - logger:debug("reset received: ~p", [?MODULE]), + ?LOG_DEBUG("reset received: ~p", [?MODULE]), refresher(); _ -> ets:delete(?MODULE) after IntervalSec * 1000 -> - logger:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), + ?LOG_DEBUG("~p refresh in ~p secs", [?MODULE, IntervalSec]), ets:delete_all_objects(?MODULE), refresher() end. @@ -128,7 +128,7 @@ refresher() -> allow(Owner, #access_v1{req = RD} = _Access, Ctx) -> OwnerKey = list_to_binary(riak_cs_user:key_id(Owner)), - logger:debug("access => ~p", [OwnerKey]), + ?LOG_DEBUG("access => ~p", [OwnerKey]), UserState = case ets:lookup(?MODULE, OwnerKey) of [UserState0] -> UserState0; [] -> new_user_state(OwnerKey) @@ -157,7 +157,7 @@ allow(Owner, #access_v1{req = RD} = _Access, Ctx) -> -spec new_user_state(binary()) -> #user_state{}. new_user_state(User) -> UserState = #user_state{user = User}, - logger:debug("quota init: ~p => ~p", [User, UserState]), + ?LOG_DEBUG("quota init: ~p => ~p", [User, UserState]), %% Here's a race condition where if so many concurrent access %% come, each access can yield a new fresh state and then %% receives not access limitation. @@ -216,7 +216,7 @@ update(User, end catch error:badarg -> %% record not just found here - logger:debug("Cache of ~p (maybe not found)", [User]), + ?LOG_DEBUG("Cache of ~p (maybe not found)", [User]), ok; Type:Error -> %% TODO: show out stacktrace heah diff --git a/apps/riak_cs/src/cs/riak_cs_simple_quota.erl b/apps/riak_cs/src/cs/riak_cs_simple_quota.erl index ff690e4f9..c169b6288 100644 --- a/apps/riak_cs/src/cs/riak_cs_simple_quota.erl +++ b/apps/riak_cs/src/cs/riak_cs_simple_quota.erl @@ -50,13 +50,13 @@ -behaviour(riak_cs_quota). +-export([state/0, reset/0, set_params/2]). +-export([start_link/0, allow/3, update/2, error_response/3]). + -include("riak_cs.hrl"). -include_lib("webmachine/include/webmachine_logger.hrl"). -include_lib("webmachine/include/wm_reqdata.hrl"). - --export([state/0, reset/0, set_params/2]). - --export([start_link/0, allow/3, update/2, error_response/3]). +-include_lib("kernel/include/logger.hrl"). %% Quota not set -define(DEFAULT_SIMPLE_QUOTA, -1). @@ -102,12 +102,12 @@ refresher() -> end, receive reset -> - logger:debug("reset received: ~p", [?MODULE]), + ?LOG_DEBUG("reset received: ~p", [?MODULE]), refresher(); _ -> ets:delete(?MODULE) after IntervalSec * 1000 -> - logger:debug("~p refresh in ~p secs", [?MODULE, IntervalSec]), + ?LOG_DEBUG("~p refresh in ~p secs", [?MODULE, IntervalSec]), ets:delete_all_objects(?MODULE), refresher() end. @@ -119,7 +119,7 @@ refresher() -> {error, {disk_quota, non_neg_integer(), non_neg_integer()}}. allow(Owner, #access_v1{req = RD, method = 'PUT'} = _Access, Ctx) -> OwnerKey = iolist_to_binary(riak_cs_user:key_id(Owner)), - logger:debug("access => ~p", [OwnerKey]), + ?LOG_DEBUG("access => ~p", [OwnerKey]), {_, Usage} = case ets:lookup(?MODULE, OwnerKey) of [{OwnerKey, _Usage} = UserState0] -> UserState0; diff --git a/apps/riak_cs/src/cs/riak_cs_utils.erl b/apps/riak_cs/src/cs/riak_cs_utils.erl index 1c5897800..fcfb085ec 100644 --- a/apps/riak_cs/src/cs/riak_cs_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_utils.erl @@ -73,6 +73,7 @@ -include("riak_cs.hrl"). -include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). -include_lib("riakc/include/riakc.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -compile(export_all). @@ -547,7 +548,7 @@ this_host_addr() -> end end, Ifs) of [{If, IP}] -> - logger:debug("this host address is ~s on iface ~s", [IP, If]), + ?LOG_DEBUG("this host address is ~s on iface ~s", [IP, If]), IP; [{If, IP}|_] -> logger:warning("This host has multiple network interfaces configured." diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl index 9aaf536f6..619205041 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl @@ -35,6 +35,7 @@ -include("riak_cs.hrl"). -include_lib("webmachine/include/webmachine.hrl"). -include_lib("xmerl/include/xmerl.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). @@ -78,7 +79,7 @@ handle_with_bucket_obj({error, notfound}, RD, handle_with_bucket_obj({error, _} = Error, RD, #context{response_module=ResponseMod} = Ctx) -> - logger:debug("bucket error: ~p", [Error]), + ?LOG_DEBUG("bucket error: ~p", [Error]), ResponseMod:api_error(Error, RD, Ctx); handle_with_bucket_obj({ok, BucketObj}, @@ -94,7 +95,7 @@ handle_with_bucket_obj({ok, BucketObj}, %% Delete Multiple Objects accepts a request to delete up to 1000 Objects. ResponseMod:api_error(malformed_xml, RD, Ctx); {ok, Keys} -> - logger:debug("deleting keys at ~p: ~p", [Bucket, Keys]), + ?LOG_DEBUG("deleting keys at ~p: ~p", [Bucket, Keys]), Policy = riak_cs_wm_utils:translate_bucket_policy(PolicyMod, BucketObj), CanonicalId = riak_cs_wm_utils:extract_canonical_id(User), diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl index 421e9bfc5..fbd2f5684 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl @@ -65,6 +65,7 @@ -include("riak_cs.hrl"). -include("oos_api.hrl"). -include_lib("webmachine/include/webmachine.hrl"). +-include_lib("kernel/include/logger.hrl"). %% =================================================================== %% Webmachine callbacks @@ -479,31 +480,31 @@ post_authentication({ok, User, UserObj}, RD, Ctx, Authorize, _) -> user_object=UserObj}); post_authentication({error, no_user_key}, RD, Ctx, Authorize, true) -> %% no keyid was given, proceed anonymously - logger:debug("No user key"), + ?LOG_DEBUG("No user key"), Authorize(RD, Ctx); post_authentication({error, no_user_key}, RD, Ctx, _, false) -> %% no keyid was given, deny access - logger:debug("No user key, deny"), + ?LOG_DEBUG("No user key, deny"), riak_cs_wm_utils:deny_access(RD, Ctx); post_authentication({error, bad_auth}, RD, Ctx, _, _) -> %% given keyid was found, but signature didn't match - logger:debug("bad_auth"), + ?LOG_DEBUG("bad_auth"), riak_cs_wm_utils:deny_access(RD, Ctx); post_authentication({error, reqtime_tooskewed} = Error, RD, #context{response_module = ResponseMod} = Ctx, _, _) -> - logger:debug("reqtime_tooskewed"), + ?LOG_DEBUG("reqtime_tooskewed"), ResponseMod:api_error(Error, RD, Ctx); post_authentication({error, {auth_not_supported, AuthType}}, RD, #context{response_module=ResponseMod} = Ctx, _, _) -> - logger:debug("auth_not_supported: ~s", [AuthType]), + ?LOG_DEBUG("auth_not_supported: ~s", [AuthType]), ResponseMod:api_error({auth_not_supported, AuthType}, RD, Ctx); post_authentication({error, notfound}, RD, Ctx, _, _) -> - logger:debug("User does not exist"), + ?LOG_DEBUG("User does not exist"), riak_cs_wm_utils:deny_invalid_key(RD, Ctx); post_authentication({error, Reason}, RD, #context{response_module=ResponseMod} = Ctx, _, _) -> %% Lookup failed, basically due to disconnected stuff - logger:debug("Authentication error: ~p", [Reason]), + ?LOG_DEBUG("Authentication error: ~p", [Reason]), ResponseMod:api_error(Reason, RD, Ctx). update_stats_inflow(_RD, undefined = _StatsPrefix) -> diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl index 3a9ddcdea..56356db99 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl @@ -38,6 +38,7 @@ -include("riak_cs.hrl"). -include_lib("webmachine/include/webmachine.hrl"). -include_lib("webmachine/include/wm_reqstate.hrl"). +-include_lib("kernel/include/logger.hrl"). -spec init(#context{}) -> {ok, #context{}}. init(Ctx) -> @@ -360,7 +361,7 @@ handle_normal_put(RD, Ctx0) -> %% einval} or disconnected stuff, any errors prevents this %% manifests from being uploaded anymore Res = riak_cs_put_fsm:force_stop(Pid), - logger:debug("PUT FSM force_stop: ~p Reason: ~p", [Res, {Type, Error}]), + ?LOG_DEBUG("PUT FSM force_stop: ~p Reason: ~p", [Res, {Type, Error}]), error({Type, Error}) end. @@ -414,8 +415,8 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey, SrcObjVsn) -> {false, _, _} -> %% start copying - logger:debug("copying! > ~s/~s/~s => ~s/~s/~s via ~p", - [SrcBucket, SrcKey, SrcObjVsn, Bucket, Key, ObjVsn, ReadRcPid]), + ?LOG_DEBUG("copying! > ~s/~s/~s => ~s/~s/~s via ~p", + [SrcBucket, SrcKey, SrcObjVsn, Bucket, Key, ObjVsn, ReadRcPid]), {ContentType, Metadata} = riak_cs_copy_object:new_metadata(SrcManifest, RD), @@ -443,7 +444,7 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey, SrcObjVsn) -> %% in different return value ResponseMod:api_error(copy_source_access_denied, RD, Ctx); {Result, _, _} = Error -> - logger:debug("~p on ~s ~s", [Result, SrcBucket, SrcKey]), + ?LOG_DEBUG("~p on ~s ~s", [Result, SrcBucket, SrcKey]), Error end; diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl index d1106d447..0dc8c92ef 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl @@ -39,6 +39,7 @@ -include_lib("webmachine/include/webmachine.hrl"). -include_lib("webmachine/include/wm_reqstate.hrl"). -include_lib("xmerl/include/xmerl.hrl"). +-include_lib("kernel/include/logger.hrl"). -spec init(#context{}) -> {ok, #context{}}. init(Ctx) -> @@ -131,7 +132,7 @@ process_post(RD, Ctx = #context{riak_client = RcPid, RcPid) of {ok, NewManifest} -> ETag = riak_cs_manifest:etag(NewManifest), - logger:debug("checksum of all parts checksum: ~p", [ETag]), + ?LOG_DEBUG("checksum of all parts checksum: ~p", [ETag]), XmlDoc = {'CompleteMultipartUploadResult', [{'xmlns', "http://s3.amazonaws.com/doc/2006-03-01/"}], [ @@ -425,8 +426,8 @@ maybe_copy_part(PutPid, case riak_cs_copy_object:test_condition_and_permission(ReadRcPid, SrcManifest, RD, Ctx) of {false, _, _} -> - logger:debug("Start copying! > ~s/~s:~s => ~s/~s:~s via ~p", - [SrcBucket, SrcKey, SrcVsn, DstBucket, DstKey, DstVsn, ReadRcPid]), + ?LOG_DEBUG("Start copying! > ~s/~s:~s => ~s/~s:~s via ~p", + [SrcBucket, SrcKey, SrcVsn, DstBucket, DstKey, DstVsn, ReadRcPid]), %% Prepare for connection loss or client close FDWatcher = riak_cs_copy_object:connection_checker((RD#wm_reqdata.wm_state)#wm_reqstate.socket), @@ -454,10 +455,10 @@ maybe_copy_part(PutPid, {true, _RD, _OtherCtx} -> %% access to source object not authorized %% TODO: check the return value - logger:debug("access to source object denied (~s/~s:~s)", [SrcBucket, SrcKey, SrcVsn]), + ?LOG_DEBUG("access to source object denied (~s/~s:~s)", [SrcBucket, SrcKey, SrcVsn]), {{halt, 403}, RD, Ctx}; Error -> - logger:debug("unknown error: ~p", [Error]), + ?LOG_DEBUG("unknown error: ~p", [Error]), %% ResponseMod:api_error(Error, RD, Ctx#context{local_context=LocalCtx}) Error end. diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl index 4d41fcb20..293b1e2bd 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl @@ -73,6 +73,7 @@ -include("riak_cs.hrl"). -include_lib("webmachine/include/webmachine.hrl"). +-include_lib("kernel/include/logger.hrl"). -define(QS_KEYID, "AWSAccessKeyId"). -define(QS_SIGNATURE, "Signature"). @@ -181,23 +182,23 @@ handle_validation_response({error, disconnected}, RD, Ctx, _Next, _, _Bool) -> {{halt, 503}, RD, Ctx}; handle_validation_response({error, Reason}, RD, Ctx, Next, _, true) -> %% no keyid was given, proceed anonymously - logger:debug("No user key: ~p", [Reason]), + ?LOG_DEBUG("No user key: ~p", [Reason]), Next(RD, Ctx); handle_validation_response({error, no_user_key}, RD, Ctx, _, Conv2KeyCtx, false) -> %% no keyid was given, deny access - logger:debug("No user key, deny"), + ?LOG_DEBUG("No user key, deny"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, bad_auth}, RD, Ctx, _, Conv2KeyCtx, _) -> %% given keyid was found, but signature didn't match - logger:debug("bad_auth"), + ?LOG_DEBUG("bad_auth"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, notfound}, RD, Ctx, _, Conv2KeyCtx, _) -> %% no keyid was found - logger:debug("key_id not found"), + ?LOG_DEBUG("key_id not found"), deny_access(RD, Conv2KeyCtx(Ctx)); handle_validation_response({error, Reason}, RD, Ctx, _, Conv2KeyCtx, _) -> %% no matching keyid was found, or lookup failed - logger:debug("Authentication error: ~p", [Reason]), + ?LOG_DEBUG("Authentication error: ~p", [Reason]), deny_invalid_key(RD, Conv2KeyCtx(Ctx)). handle_auth_admin(RD, Ctx, undefined, true) -> @@ -450,7 +451,7 @@ extract_version_id(RD, Ctx = #context{local_context = LocalCtx0}) -> %% CS extension, for PutObject should probably be %% better done in s3_rewrite, but doing so will be too %% disruptive for the tidy rewriting flow - logger:debug("are we PutObject on a version? ~p", [Defined]), + ?LOG_DEBUG("are we PutObject on a version? ~p", [Defined]), list_to_binary(Defined); {V, _} -> list_to_binary(mochiweb_util:unquote(mochiweb_util:unquote(V))) @@ -1046,7 +1047,7 @@ fetch_bucket_owner(Bucket, RcPid) -> {ok, Acl} -> Acl?ACL.owner; {error, Reason} -> - logger:debug("Failed to retrieve owner info for bucket ~p. Reason ~p", [Bucket, Reason]), + ?LOG_DEBUG("Failed to retrieve owner info for bucket ~p. Reason ~p", [Bucket, Reason]), undefined end. diff --git a/apps/riak_cs/src/stanchion/stanchion_acl_utils.erl b/apps/riak_cs/src/stanchion/stanchion_acl_utils.erl index f07b548f7..966b77ed7 100644 --- a/apps/riak_cs/src/stanchion/stanchion_acl_utils.erl +++ b/apps/riak_cs/src/stanchion/stanchion_acl_utils.erl @@ -25,6 +25,7 @@ -include_lib("riak_cs/include/manifest.hrl"). -include_lib("xmerl/include/xmerl.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). @@ -126,7 +127,7 @@ permissions_to_json_term(Perms) -> process_acl_contents([], Acl) -> Acl; process_acl_contents([{Name, Value} | RestObjects], Acl) -> - logger:debug("Object name: ~p", [Name]), + ?LOG_DEBUG("Object name: ~p", [Name]), case Name of <<"owner">> -> {struct, OwnerData} = Value, @@ -150,19 +151,19 @@ process_owner([{Name, Value} | RestObjects], Acl) -> Owner = Acl?ACL.owner, case Name of <<"key_id">> -> - logger:debug("Owner Key ID value: ~p", [Value]), + ?LOG_DEBUG("Owner Key ID value: ~p", [Value]), {OwnerName, OwnerCID, _} = Owner, UpdOwner = {OwnerName, OwnerCID, binary_to_list(Value)}; <<"canonical_id">> -> - logger:debug("Owner ID value: ~p", [Value]), + ?LOG_DEBUG("Owner ID value: ~p", [Value]), {OwnerName, _, OwnerId} = Owner, UpdOwner = {OwnerName, binary_to_list(Value), OwnerId}; <<"display_name">> -> - logger:debug("Owner Name content: ~p", [Value]), + ?LOG_DEBUG("Owner Name content: ~p", [Value]), {_, OwnerCID, OwnerId} = Owner, UpdOwner = {binary_to_list(Value), OwnerCID, OwnerId}; _ -> - logger:debug("Encountered unexpected element: ~p", [Name]), + ?LOG_DEBUG("Encountered unexpected element: ~p", [Name]), UpdOwner = Owner end, process_owner(RestObjects, Acl?ACL{owner=UpdOwner}). @@ -184,22 +185,22 @@ process_grant([], Grant) -> process_grant([{Name, Value} | RestObjects], Grant) -> case Name of <<"canonical_id">> -> - logger:debug("ID value: ~p", [Value]), + ?LOG_DEBUG("ID value: ~p", [Value]), {{DispName, _}, Perms} = Grant, UpdGrant = {{DispName, binary_to_list(Value)}, Perms}; <<"display_name">> -> - logger:debug("Name value: ~p", [Value]), + ?LOG_DEBUG("Name value: ~p", [Value]), {{_, Id}, Perms} = Grant, UpdGrant = {{binary_to_list(Value), Id}, Perms}; <<"group">> -> - logger:debug("Group value: ~p", [Value]), + ?LOG_DEBUG("Group value: ~p", [Value]), {_, Perms} = Grant, UpdGrant = {list_to_atom( binary_to_list(Value)), Perms}; <<"permissions">> -> {Grantee, _} = Grant, Perms = process_permissions(Value), - logger:debug("Perms value: ~p", [Value]), + ?LOG_DEBUG("Perms value: ~p", [Value]), UpdGrant = {Grantee, Perms}; _ -> UpdGrant = Grant diff --git a/apps/riak_cs/src/stanchion/stanchion_auth.erl b/apps/riak_cs/src/stanchion/stanchion_auth.erl index b94af4021..15f30b8e8 100644 --- a/apps/riak_cs/src/stanchion/stanchion_auth.erl +++ b/apps/riak_cs/src/stanchion/stanchion_auth.erl @@ -21,15 +21,16 @@ -module(stanchion_auth). +-export([authenticate/2, + request_signature/4]). + -include("stanchion.hrl"). +-include_lib("kernel/include/logger.hrl"). -ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). -endif. --export([authenticate/2, - request_signature/4]). - %% =================================================================== %% Public API %% =================================================================== @@ -39,8 +40,8 @@ authenticate(RD, [KeyId, Signature]) -> case stanchion_utils:get_admin_creds() of {ok, {AdminKeyId, AdminSecret}} -> CalculatedSignature = signature(AdminSecret, RD), - logger:debug(" Presented Signature: ~p", [Signature]), - logger:debug("Calculated Signature: ~p", [CalculatedSignature]), + ?LOG_DEBUG(" Presented Signature: ~p", [Signature]), + ?LOG_DEBUG("Calculated Signature: ~p", [CalculatedSignature]), case KeyId == AdminKeyId andalso check_auth(Signature, CalculatedSignature) of true -> diff --git a/apps/riak_cs/src/stanchion/stanchion_server.erl b/apps/riak_cs/src/stanchion/stanchion_server.erl index 6d4f2dc2f..6179f8868 100644 --- a/apps/riak_cs/src/stanchion/stanchion_server.erl +++ b/apps/riak_cs/src/stanchion/stanchion_server.erl @@ -25,16 +25,6 @@ -behaviour(gen_server). --include("stanchion.hrl"). - --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). - -%% Test API --export([test_link/0]). - --endif. - %% API -export([start_link/0, create_bucket/1, @@ -56,6 +46,17 @@ terminate/2, code_change/3]). +-include("stanchion.hrl"). +-include_lib("kernel/include/logger.hrl"). + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). + +%% Test API +-export([test_link/0]). + +-endif. + -record(state, {riak_ip :: undefined | string(), riak_port :: undefined | pos_integer()}). -type state() :: #state{}. @@ -67,7 +68,7 @@ {{Result_____, ServiceTime____}, TATus_____} = ?TURNAROUND_TIME(Call), WaitingTime____ = TATus_____ - ServiceTime____, - logger:debug("~p ~p ~p", [Name, Result_____, ServiceTime____]), + ?LOG_DEBUG("~p ~p ~p", [Name, Result_____, ServiceTime____]), stanchion_stats:update(Name, ServiceTime____, WaitingTime____), Result_____ end). diff --git a/apps/riak_cs/src/stanchion/stanchion_stats.erl b/apps/riak_cs/src/stanchion/stanchion_stats.erl index 861a78433..b71a3eff6 100644 --- a/apps/riak_cs/src/stanchion/stanchion_stats.erl +++ b/apps/riak_cs/src/stanchion/stanchion_stats.erl @@ -32,6 +32,8 @@ -export([init/0]). +-include_lib("kernel/include/logger.hrl"). + -type key() :: [atom()]. -export_type([key/0]). @@ -88,7 +90,7 @@ safe_update(BaseId, ElapsedUs) -> -spec update(key(), integer()) -> ok | {error, any()}. update(BaseId, ElapsedUs) -> - logger:debug("Updating ~p (~p)", [BaseId, ElapsedUs]), + ?LOG_DEBUG("Updating ~p (~p)", [BaseId, ElapsedUs]), ok = exometer:update([stanchion|BaseId], 1), ok = exometer:update([stanchion,time|BaseId], ElapsedUs). @@ -142,7 +144,7 @@ init_item({Name, Type, Opts, _Aliases}) -> -spec report_exometer_item(key(), [atom()], exometer:type()) -> [{atom(), integer()}]. report_exometer_item(Key, SubKey, ExometerType) -> - logger:debug("~p", [{Key, SubKey, ExometerType}]), + ?LOG_DEBUG("~p", [{Key, SubKey, ExometerType}]), AtomKeys = [metric_to_atom(Key ++ SubKey, Suffix) || Suffix <- suffixes(ExometerType)], {ok, Values} = exometer:get_value([stanchion | SubKey ++ Key], diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl index 88861d6d0..8d6c4f63f 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl @@ -34,6 +34,7 @@ -include("stanchion.hrl"). -include_lib("webmachine/include/webmachine.hrl"). +-include_lib("kernel/include/logger.hrl"). init(Config) -> @@ -119,7 +120,7 @@ to_xml(RD, Ctx) -> delete_resource(ReqData, Ctx) -> Bucket = list_to_binary(wrq:path_info(bucket, ReqData)), RequesterId = list_to_binary(wrq:get_qs_value("requester", "", ReqData)), - logger:debug("Bucket: ~p Requester: ~p", [Bucket, RequesterId]), + ?LOG_DEBUG("Bucket: ~p Requester: ~p", [Bucket, RequesterId]), case stanchion_server:delete_bucket(Bucket, RequesterId) of ok -> {true, ReqData, Ctx}; diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl index e18a2411a..5d812d282 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl @@ -34,6 +34,7 @@ -include("stanchion.hrl"). -include_lib("webmachine/include/webmachine.hrl"). +-include_lib("kernel/include/logger.hrl"). init(Config) -> %% Check if authentication is disabled and @@ -106,7 +107,7 @@ accept_body(RD, Ctx) -> delete_resource(RD, Ctx) -> Bucket = list_to_binary(wrq:path_info(bucket, RD)), RequesterId = list_to_binary(wrq:get_qs_value("requester", "", RD)), - logger:debug("Bucket: ~p Requester: ~p", [Bucket, RequesterId]), + ?LOG_DEBUG("Bucket: ~p Requester: ~p", [Bucket, RequesterId]), case stanchion_server:delete_bucket_policy(Bucket, RequesterId) of ok -> From 990a182d088dde7db06448df18bbe98fbc51c0b2 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 25 Nov 2022 16:43:17 +0200 Subject: [PATCH 382/831] mark included hrls as such --- apps/riak_cs/include/oos_api.hrl | 5 +++++ apps/riak_cs/include/riak_cs.hrl | 5 +++++ apps/riak_cs/include/riak_cs_api.hrl | 5 +++++ apps/riak_cs/include/riak_cs_gc.hrl | 5 +++++ apps/riak_cs/include/rts.hrl | 5 +++++ apps/riak_cs/include/s3_api.hrl | 5 +++++ apps/riak_cs/include/stanchion.hrl | 5 +++++ 7 files changed, 35 insertions(+) diff --git a/apps/riak_cs/include/oos_api.hrl b/apps/riak_cs/include/oos_api.hrl index c77a35fbe..31763e4e0 100644 --- a/apps/riak_cs/include/oos_api.hrl +++ b/apps/riak_cs/include/oos_api.hrl @@ -19,6 +19,9 @@ %% %% --------------------------------------------------------------------- +-ifndef(RIAK_CS_OOS_API_HRL). +-define(RIAK_CS_OOS_API_HRL, included). + -define(DEFAULT_OS_AUTH_URL, "http://localhost:35357/v2.0/"). -define(DEFAULT_TOKENS_RESOURCE, "tokens/"). -define(DEFAULT_S3_TOKENS_RESOURCE, "s3tokens/"). @@ -32,3 +35,5 @@ token :: binary()}). -type keystone_s3_auth_req() :: #keystone_s3_auth_req_v1{}. -define(KEYSTONE_S3_AUTH_REQ, #keystone_s3_auth_req_v1). + +-endif. diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index a48afe76c..1bd0e05fa 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -19,6 +19,9 @@ %% %% --------------------------------------------------------------------- +-ifndef(RIAK_CS_HRL). +-define(RIAK_CS_HRL, included). + -include("manifest.hrl"). -include("moss.hrl"). @@ -194,3 +197,5 @@ -define(MAX_S3_KEY_LENGTH, 1024). -type mochiweb_headers() :: gb_trees:tree(). + +-endif. diff --git a/apps/riak_cs/include/riak_cs_api.hrl b/apps/riak_cs/include/riak_cs_api.hrl index a610bbc8c..e78b270de 100644 --- a/apps/riak_cs/include/riak_cs_api.hrl +++ b/apps/riak_cs/include/riak_cs_api.hrl @@ -19,6 +19,9 @@ %% %% --------------------------------------------------------------------- +-ifndef(RIAK_CS_API_HRL). +-define(RIAK_CS_API_HRL, included). + -record(list_buckets_response_v1, { %% the user record user :: rcs_user(), @@ -28,3 +31,5 @@ }). -type list_buckets_response() :: #list_buckets_response_v1{}. -define(LBRESP, #list_buckets_response_v1). + +-endif. diff --git a/apps/riak_cs/include/riak_cs_gc.hrl b/apps/riak_cs/include/riak_cs_gc.hrl index 65fac075f..9ef28b27f 100644 --- a/apps/riak_cs/include/riak_cs_gc.hrl +++ b/apps/riak_cs/include/riak_cs_gc.hrl @@ -19,6 +19,9 @@ %% %% --------------------------------------------------------------------- +-ifndef(RIAK_CS_GC_HRL). +-define(RIAK_CS_GC_HRL, included). + -include("riak_cs.hrl"). -include_lib("riakc/include/riakc.hrl"). @@ -109,3 +112,5 @@ initial_delay :: undefined | non_neg_integer(), timer_ref :: undefined | reference() }). + +-endif. diff --git a/apps/riak_cs/include/rts.hrl b/apps/riak_cs/include/rts.hrl index bf195da3a..ea49af152 100644 --- a/apps/riak_cs/include/rts.hrl +++ b/apps/riak_cs/include/rts.hrl @@ -19,6 +19,9 @@ %% %% --------------------------------------------------------------------- +-ifndef(RIAK_CS_RTS_HRL). +-define(RIAK_CS_RTS_HRL, included). + %% JSON keys used by rts module -define(START_TIME, <<"StartTime">>). -define(END_TIME, <<"EndTime">>). @@ -60,3 +63,5 @@ <<"PendingDeleteOldObjects">>,<<"PendingDeleteOldBytes">>, <<"PendingDeleteOldBlocks">>, <<"PendingDeleteNewObjects">>,<<"PendingDeleteNewBytes">>, <<"PendingDeleteNewBlocks">>, <<"ActiveInvisibleObjects">>,<<"ActiveInvisibleBytes">>, <<"ActiveInvisibleBlocks">>]). + +-endif. diff --git a/apps/riak_cs/include/s3_api.hrl b/apps/riak_cs/include/s3_api.hrl index 168520176..be5ee4935 100644 --- a/apps/riak_cs/include/s3_api.hrl +++ b/apps/riak_cs/include/s3_api.hrl @@ -19,6 +19,9 @@ %% %% --------------------------------------------------------------------- +-ifndef(RIAK_CS_S3_API_HRL). +-define(RIAK_CS_S3_API_HRL, included). + -define(ROOT_HOST, "s3.amazonaws.com"). -define(SUBRESOURCES, ["acl", "location", "logging", "notification", "partNumber", "policy", "requestPayment", "torrent", "uploadId", "uploads", @@ -149,3 +152,5 @@ -define(ARN, #arn_v1). -define(DEFAULT_REGION, "us-east-1"). + +-endif. diff --git a/apps/riak_cs/include/stanchion.hrl b/apps/riak_cs/include/stanchion.hrl index 4fff460a7..022841ff0 100644 --- a/apps/riak_cs/include/stanchion.hrl +++ b/apps/riak_cs/include/stanchion.hrl @@ -19,6 +19,9 @@ %% %% --------------------------------------------------------------------- +-ifndef(STANCHION_HRL). +-define(STANCHION_HRL, included). + -record(context, {auth_bypass :: boolean(), bucket :: undefined | binary(), owner_id :: undefined | all | string()}). @@ -32,3 +35,5 @@ timer:now_diff(EndTime_____tat, StartTime_____tat)} end). + +-endif. From 7d12b35031407f31099aad4418097fea0e86c4c9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 25 Nov 2022 16:44:54 +0200 Subject: [PATCH 383/831] bulk update copyright year --- apps/riak_cs/include/acl.hrl | 2 +- apps/riak_cs/include/defs.hrl | 2 +- apps/riak_cs/include/list_objects.hrl | 2 +- apps/riak_cs/include/manifest.hrl | 2 +- apps/riak_cs/include/moss.hrl | 2 +- apps/riak_cs/include/oos_api.hrl | 2 +- apps/riak_cs/include/riak_cs.hrl | 2 +- apps/riak_cs/include/riak_cs_api.hrl | 2 +- apps/riak_cs/include/riak_cs_gc.hrl | 2 +- apps/riak_cs/include/rts.hrl | 2 +- apps/riak_cs/include/s3_api.hrl | 2 +- apps/riak_cs/include/stanchion.hrl | 2 +- apps/riak_cs/src/common/rcs_common_manifest.erl | 2 +- apps/riak_cs/src/common/rcs_common_manifest_resolution.erl | 2 +- apps/riak_cs/src/common/rcs_common_manifest_utils.erl | 2 +- apps/riak_cs/src/cs/riak_cs_access.erl | 2 +- apps/riak_cs/src/cs/riak_cs_access_archiver.erl | 2 +- apps/riak_cs/src/cs/riak_cs_access_archiver_manager.erl | 2 +- apps/riak_cs/src/cs/riak_cs_access_console.erl | 2 +- apps/riak_cs/src/cs/riak_cs_access_log_handler.erl | 2 +- apps/riak_cs/src/cs/riak_cs_acl.erl | 2 +- apps/riak_cs/src/cs/riak_cs_acl_utils.erl | 2 +- apps/riak_cs/src/cs/riak_cs_api.erl | 2 +- apps/riak_cs/src/cs/riak_cs_app.erl | 2 +- apps/riak_cs/src/cs/riak_cs_auth.erl | 2 +- apps/riak_cs/src/cs/riak_cs_block_server.erl | 2 +- apps/riak_cs/src/cs/riak_cs_bucket.erl | 2 +- apps/riak_cs/src/cs/riak_cs_config.erl | 2 +- apps/riak_cs/src/cs/riak_cs_console.erl | 2 +- apps/riak_cs/src/cs/riak_cs_copy_object.erl | 2 +- apps/riak_cs/src/cs/riak_cs_delete_fsm.erl | 2 +- apps/riak_cs/src/cs/riak_cs_delete_fsm_sup.erl | 2 +- apps/riak_cs/src/cs/riak_cs_diags.erl | 2 +- apps/riak_cs/src/cs/riak_cs_dtrace.erl | 2 +- apps/riak_cs/src/cs/riak_cs_gc.erl | 2 +- apps/riak_cs/src/cs/riak_cs_gc_batch.erl | 2 +- apps/riak_cs/src/cs/riak_cs_gc_console.erl | 2 +- apps/riak_cs/src/cs/riak_cs_gc_key_list.erl | 2 +- apps/riak_cs/src/cs/riak_cs_gc_manager.erl | 2 +- apps/riak_cs/src/cs/riak_cs_gc_worker.erl | 2 +- apps/riak_cs/src/cs/riak_cs_get_fsm.erl | 2 +- apps/riak_cs/src/cs/riak_cs_get_fsm_sup.erl | 2 +- apps/riak_cs/src/cs/riak_cs_json.erl | 2 +- apps/riak_cs/src/cs/riak_cs_keystone_auth.erl | 2 +- apps/riak_cs/src/cs/riak_cs_kv_multi_backend.erl | 2 +- apps/riak_cs/src/cs/riak_cs_lfs_utils.erl | 2 +- apps/riak_cs/src/cs/riak_cs_list_objects.erl | 2 +- apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl | 2 +- apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache_sup.erl | 2 +- apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl | 2 +- apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl | 2 +- apps/riak_cs/src/cs/riak_cs_list_objects_utils.erl | 2 +- apps/riak_cs/src/cs/riak_cs_manifest.erl | 2 +- apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl | 2 +- apps/riak_cs/src/cs/riak_cs_manifest_utils.erl | 2 +- apps/riak_cs/src/cs/riak_cs_mb_helper.erl | 2 +- apps/riak_cs/src/cs/riak_cs_mp_utils.erl | 2 +- apps/riak_cs/src/cs/riak_cs_oos_response.erl | 2 +- apps/riak_cs/src/cs/riak_cs_oos_rewrite.erl | 2 +- apps/riak_cs/src/cs/riak_cs_oos_utils.erl | 2 +- apps/riak_cs/src/cs/riak_cs_pbc.erl | 2 +- apps/riak_cs/src/cs/riak_cs_policy.erl | 2 +- apps/riak_cs/src/cs/riak_cs_put_fsm.erl | 2 +- apps/riak_cs/src/cs/riak_cs_put_fsm_sup.erl | 2 +- apps/riak_cs/src/cs/riak_cs_quota.erl | 2 +- apps/riak_cs/src/cs/riak_cs_quota_sup.erl | 2 +- apps/riak_cs/src/cs/riak_cs_riak_client.erl | 2 +- apps/riak_cs/src/cs/riak_cs_riakc_pool_worker.erl | 2 +- apps/riak_cs/src/cs/riak_cs_s3_auth.erl | 2 +- apps/riak_cs/src/cs/riak_cs_s3_passthru_auth.erl | 2 +- apps/riak_cs/src/cs/riak_cs_s3_policy.erl | 2 +- apps/riak_cs/src/cs/riak_cs_s3_response.erl | 2 +- apps/riak_cs/src/cs/riak_cs_s3_rewrite.erl | 2 +- apps/riak_cs/src/cs/riak_cs_s3_rewrite_legacy.erl | 2 +- apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl | 2 +- apps/riak_cs/src/cs/riak_cs_simple_quota.erl | 2 +- apps/riak_cs/src/cs/riak_cs_stanchion_console.erl | 2 +- apps/riak_cs/src/cs/riak_cs_stats.erl | 2 +- apps/riak_cs/src/cs/riak_cs_storage.erl | 2 +- apps/riak_cs/src/cs/riak_cs_storage_console.erl | 2 +- apps/riak_cs/src/cs/riak_cs_storage_d.erl | 2 +- apps/riak_cs/src/cs/riak_cs_storage_mr.erl | 2 +- apps/riak_cs/src/cs/riak_cs_sup.erl | 2 +- apps/riak_cs/src/cs/riak_cs_user.erl | 2 +- apps/riak_cs/src/cs/riak_cs_utils.erl | 2 +- apps/riak_cs/src/cs/riak_cs_web.erl | 2 +- apps/riak_cs/src/cs/riak_cs_xml.erl | 2 +- apps/riak_cs/src/cs/riak_cs_yessir_riak_client.erl | 2 +- apps/riak_cs/src/cs/velvet.erl | 2 +- apps/riak_cs/src/cs/velvet_auth.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_bucket.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_acl.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_location.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_policy.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_request_payment.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_uploads.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_versioning.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_buckets.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_error_handler.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_not_implemented.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_object_acl.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_object_versions.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_objects.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_ping.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_stats.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_usage.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_user.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_users.erl | 2 +- apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl | 2 +- apps/riak_cs/src/lib/base64url.erl | 2 +- apps/riak_cs/src/lib/exprec.erl | 2 +- apps/riak_cs/src/lib/rts.erl | 2 +- apps/riak_cs/src/lib/table.erl | 2 +- apps/riak_cs/src/lib/twop_set.erl | 2 +- apps/riak_cs/src/stanchion/stanchion_acl_utils.erl | 2 +- apps/riak_cs/src/stanchion/stanchion_auth.erl | 2 +- apps/riak_cs/src/stanchion/stanchion_blockall_auth.erl | 2 +- apps/riak_cs/src/stanchion/stanchion_multipart.erl | 2 +- apps/riak_cs/src/stanchion/stanchion_passthru_auth.erl | 2 +- apps/riak_cs/src/stanchion/stanchion_response.erl | 2 +- apps/riak_cs/src/stanchion/stanchion_server.erl | 2 +- apps/riak_cs/src/stanchion/stanchion_stats.erl | 2 +- apps/riak_cs/src/stanchion/stanchion_web.erl | 2 +- apps/riak_cs/src/stanchion/wm/stanchion_wm_acl.erl | 2 +- apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl | 2 +- apps/riak_cs/src/stanchion/wm/stanchion_wm_buckets.erl | 2 +- apps/riak_cs/src/stanchion/wm/stanchion_wm_error_handler.erl | 2 +- apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl | 2 +- apps/riak_cs/src/stanchion/wm/stanchion_wm_stats.erl | 2 +- apps/riak_cs/src/stanchion/wm/stanchion_wm_user.erl | 2 +- apps/riak_cs/src/stanchion/wm/stanchion_wm_users.erl | 2 +- apps/riak_cs/src/stanchion/wm/stanchion_wm_utils.erl | 2 +- apps/riak_cs/src/stanchion/wm/stanchion_wm_versioning.erl | 2 +- apps/riak_cs/test/cs782_regression_test.erl | 2 +- apps/riak_cs/test/prop_riak_cs_acl_utils.erl | 2 +- apps/riak_cs/test/prop_riak_cs_gc_manager.erl | 2 +- apps/riak_cs/test/prop_riak_cs_gc_single_run.erl | 2 +- apps/riak_cs/test/prop_riak_cs_get_fsm.erl | 2 +- apps/riak_cs/test/prop_riak_cs_lfs_utils.erl | 2 +- 144 files changed, 144 insertions(+), 144 deletions(-) diff --git a/apps/riak_cs/include/acl.hrl b/apps/riak_cs/include/acl.hrl index 8b905b302..efb5f1a4a 100644 --- a/apps/riak_cs/include/acl.hrl +++ b/apps/riak_cs/include/acl.hrl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/defs.hrl b/apps/riak_cs/include/defs.hrl index 547d13d71..c3e71ca6e 100644 --- a/apps/riak_cs/include/defs.hrl +++ b/apps/riak_cs/include/defs.hrl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2021 TI Tokyo All Rights Reserved. +%% Copyright (c) 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/list_objects.hrl b/apps/riak_cs/include/list_objects.hrl index d88bf4037..960b43e2c 100644 --- a/apps/riak_cs/include/list_objects.hrl +++ b/apps/riak_cs/include/list_objects.hrl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/manifest.hrl b/apps/riak_cs/include/manifest.hrl index 859f1b47f..46403c4c7 100644 --- a/apps/riak_cs/include/manifest.hrl +++ b/apps/riak_cs/include/manifest.hrl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/moss.hrl b/apps/riak_cs/include/moss.hrl index 9732187eb..9b921c1ea 100644 --- a/apps/riak_cs/include/moss.hrl +++ b/apps/riak_cs/include/moss.hrl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/oos_api.hrl b/apps/riak_cs/include/oos_api.hrl index 31763e4e0..85f5c5a7d 100644 --- a/apps/riak_cs/include/oos_api.hrl +++ b/apps/riak_cs/include/oos_api.hrl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index 1bd0e05fa..79dee1e83 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/riak_cs_api.hrl b/apps/riak_cs/include/riak_cs_api.hrl index e78b270de..2b5fc8423 100644 --- a/apps/riak_cs/include/riak_cs_api.hrl +++ b/apps/riak_cs/include/riak_cs_api.hrl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/riak_cs_gc.hrl b/apps/riak_cs/include/riak_cs_gc.hrl index 9ef28b27f..60cd74200 100644 --- a/apps/riak_cs/include/riak_cs_gc.hrl +++ b/apps/riak_cs/include/riak_cs_gc.hrl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/rts.hrl b/apps/riak_cs/include/rts.hrl index ea49af152..8719a53f4 100644 --- a/apps/riak_cs/include/rts.hrl +++ b/apps/riak_cs/include/rts.hrl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/s3_api.hrl b/apps/riak_cs/include/s3_api.hrl index be5ee4935..9787294e8 100644 --- a/apps/riak_cs/include/s3_api.hrl +++ b/apps/riak_cs/include/s3_api.hrl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/include/stanchion.hrl b/apps/riak_cs/include/stanchion.hrl index 022841ff0..8e2c8235c 100644 --- a/apps/riak_cs/include/stanchion.hrl +++ b/apps/riak_cs/include/stanchion.hrl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/common/rcs_common_manifest.erl b/apps/riak_cs/src/common/rcs_common_manifest.erl index cfa52cbf8..9c903aff5 100644 --- a/apps/riak_cs/src/common/rcs_common_manifest.erl +++ b/apps/riak_cs/src/common/rcs_common_manifest.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/common/rcs_common_manifest_resolution.erl b/apps/riak_cs/src/common/rcs_common_manifest_resolution.erl index 32bfc1ce1..0dd1a25ca 100644 --- a/apps/riak_cs/src/common/rcs_common_manifest_resolution.erl +++ b/apps/riak_cs/src/common/rcs_common_manifest_resolution.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/common/rcs_common_manifest_utils.erl b/apps/riak_cs/src/common/rcs_common_manifest_utils.erl index 333a782d1..58ade0ca2 100644 --- a/apps/riak_cs/src/common/rcs_common_manifest_utils.erl +++ b/apps/riak_cs/src/common/rcs_common_manifest_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_access.erl b/apps/riak_cs/src/cs/riak_cs_access.erl index 04db5a7d7..e2ee6f657 100644 --- a/apps/riak_cs/src/cs/riak_cs_access.erl +++ b/apps/riak_cs/src/cs/riak_cs_access.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_access_archiver.erl b/apps/riak_cs/src/cs/riak_cs_access_archiver.erl index 24b0898eb..314658fdf 100644 --- a/apps/riak_cs/src/cs/riak_cs_access_archiver.erl +++ b/apps/riak_cs/src/cs/riak_cs_access_archiver.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_access_archiver_manager.erl b/apps/riak_cs/src/cs/riak_cs_access_archiver_manager.erl index a72869796..ef8f0ee13 100644 --- a/apps/riak_cs/src/cs/riak_cs_access_archiver_manager.erl +++ b/apps/riak_cs/src/cs/riak_cs_access_archiver_manager.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_access_console.erl b/apps/riak_cs/src/cs/riak_cs_access_console.erl index 8eccbd458..32fd0bc12 100644 --- a/apps/riak_cs/src/cs/riak_cs_access_console.erl +++ b/apps/riak_cs/src/cs/riak_cs_access_console.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_access_log_handler.erl b/apps/riak_cs/src/cs/riak_cs_access_log_handler.erl index 731d945cc..86b27364e 100644 --- a/apps/riak_cs/src/cs/riak_cs_access_log_handler.erl +++ b/apps/riak_cs/src/cs/riak_cs_access_log_handler.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_acl.erl b/apps/riak_cs/src/cs/riak_cs_acl.erl index 200f6da46..8db3ab79c 100644 --- a/apps/riak_cs/src/cs/riak_cs_acl.erl +++ b/apps/riak_cs/src/cs/riak_cs_acl.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_acl_utils.erl b/apps/riak_cs/src/cs/riak_cs_acl_utils.erl index 8c2dd52d5..d926bc10d 100644 --- a/apps/riak_cs/src/cs/riak_cs_acl_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_acl_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_api.erl b/apps/riak_cs/src/cs/riak_cs_api.erl index 1e0d75c7c..5b6c68743 100644 --- a/apps/riak_cs/src/cs/riak_cs_api.erl +++ b/apps/riak_cs/src/cs/riak_cs_api.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_app.erl b/apps/riak_cs/src/cs/riak_cs_app.erl index 42f67bb26..8b528b3ad 100644 --- a/apps/riak_cs/src/cs/riak_cs_app.erl +++ b/apps/riak_cs/src/cs/riak_cs_app.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_auth.erl b/apps/riak_cs/src/cs/riak_cs_auth.erl index ae27d7256..2b334ab56 100644 --- a/apps/riak_cs/src/cs/riak_cs_auth.erl +++ b/apps/riak_cs/src/cs/riak_cs_auth.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_block_server.erl b/apps/riak_cs/src/cs/riak_cs_block_server.erl index 289498013..7bb6fed0e 100644 --- a/apps/riak_cs/src/cs/riak_cs_block_server.erl +++ b/apps/riak_cs/src/cs/riak_cs_block_server.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_bucket.erl b/apps/riak_cs/src/cs/riak_cs_bucket.erl index 5e73427e5..8f4e8868c 100644 --- a/apps/riak_cs/src/cs/riak_cs_bucket.erl +++ b/apps/riak_cs/src/cs/riak_cs_bucket.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_config.erl b/apps/riak_cs/src/cs/riak_cs_config.erl index 3cb8b2c44..3d6d86d1f 100644 --- a/apps/riak_cs/src/cs/riak_cs_config.erl +++ b/apps/riak_cs/src/cs/riak_cs_config.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_console.erl b/apps/riak_cs/src/cs/riak_cs_console.erl index c1cdf995a..b6e4ffcd9 100644 --- a/apps/riak_cs/src/cs/riak_cs_console.erl +++ b/apps/riak_cs/src/cs/riak_cs_console.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_copy_object.erl b/apps/riak_cs/src/cs/riak_cs_copy_object.erl index 4d5ae8e38..bea6d9846 100644 --- a/apps/riak_cs/src/cs/riak_cs_copy_object.erl +++ b/apps/riak_cs/src/cs/riak_cs_copy_object.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_delete_fsm.erl b/apps/riak_cs/src/cs/riak_cs_delete_fsm.erl index 957092d02..043c1a100 100644 --- a/apps/riak_cs/src/cs/riak_cs_delete_fsm.erl +++ b/apps/riak_cs/src/cs/riak_cs_delete_fsm.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_delete_fsm_sup.erl b/apps/riak_cs/src/cs/riak_cs_delete_fsm_sup.erl index 882b30ad5..79d468283 100644 --- a/apps/riak_cs/src/cs/riak_cs_delete_fsm_sup.erl +++ b/apps/riak_cs/src/cs/riak_cs_delete_fsm_sup.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_diags.erl b/apps/riak_cs/src/cs/riak_cs_diags.erl index 5b4ac145e..2453cc8e2 100644 --- a/apps/riak_cs/src/cs/riak_cs_diags.erl +++ b/apps/riak_cs/src/cs/riak_cs_diags.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_dtrace.erl b/apps/riak_cs/src/cs/riak_cs_dtrace.erl index 359ea8e03..a5a42140c 100644 --- a/apps/riak_cs/src/cs/riak_cs_dtrace.erl +++ b/apps/riak_cs/src/cs/riak_cs_dtrace.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_gc.erl b/apps/riak_cs/src/cs/riak_cs_gc.erl index 9b5d47467..b32162863 100644 --- a/apps/riak_cs/src/cs/riak_cs_gc.erl +++ b/apps/riak_cs/src/cs/riak_cs_gc.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_gc_batch.erl b/apps/riak_cs/src/cs/riak_cs_gc_batch.erl index 5d2ad6127..c36ab85ae 100644 --- a/apps/riak_cs/src/cs/riak_cs_gc_batch.erl +++ b/apps/riak_cs/src/cs/riak_cs_gc_batch.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_gc_console.erl b/apps/riak_cs/src/cs/riak_cs_gc_console.erl index 5f5795edb..45dcb691c 100644 --- a/apps/riak_cs/src/cs/riak_cs_gc_console.erl +++ b/apps/riak_cs/src/cs/riak_cs_gc_console.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_gc_key_list.erl b/apps/riak_cs/src/cs/riak_cs_gc_key_list.erl index 3ea952380..2fbc5bfb8 100644 --- a/apps/riak_cs/src/cs/riak_cs_gc_key_list.erl +++ b/apps/riak_cs/src/cs/riak_cs_gc_key_list.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_gc_manager.erl b/apps/riak_cs/src/cs/riak_cs_gc_manager.erl index d31bcfba2..1e776b454 100644 --- a/apps/riak_cs/src/cs/riak_cs_gc_manager.erl +++ b/apps/riak_cs/src/cs/riak_cs_gc_manager.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_gc_worker.erl b/apps/riak_cs/src/cs/riak_cs_gc_worker.erl index 39b8b17a7..891ca4894 100644 --- a/apps/riak_cs/src/cs/riak_cs_gc_worker.erl +++ b/apps/riak_cs/src/cs/riak_cs_gc_worker.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_get_fsm.erl b/apps/riak_cs/src/cs/riak_cs_get_fsm.erl index 058eab5dc..21e0d069b 100644 --- a/apps/riak_cs/src/cs/riak_cs_get_fsm.erl +++ b/apps/riak_cs/src/cs/riak_cs_get_fsm.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_get_fsm_sup.erl b/apps/riak_cs/src/cs/riak_cs_get_fsm_sup.erl index 139149dd6..6e459f9bc 100644 --- a/apps/riak_cs/src/cs/riak_cs_get_fsm_sup.erl +++ b/apps/riak_cs/src/cs/riak_cs_get_fsm_sup.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_json.erl b/apps/riak_cs/src/cs/riak_cs_json.erl index 0639f8bc7..5fd491e26 100644 --- a/apps/riak_cs/src/cs/riak_cs_json.erl +++ b/apps/riak_cs/src/cs/riak_cs_json.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_keystone_auth.erl b/apps/riak_cs/src/cs/riak_cs_keystone_auth.erl index a66e11a90..6179a8f48 100644 --- a/apps/riak_cs/src/cs/riak_cs_keystone_auth.erl +++ b/apps/riak_cs/src/cs/riak_cs_keystone_auth.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_kv_multi_backend.erl b/apps/riak_cs/src/cs/riak_cs_kv_multi_backend.erl index f46292cac..eb5c8bebb 100644 --- a/apps/riak_cs/src/cs/riak_cs_kv_multi_backend.erl +++ b/apps/riak_cs/src/cs/riak_cs_kv_multi_backend.erl @@ -3,7 +3,7 @@ %% riak_cs_kv_multi_backend: switching between multiple storage engines %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_lfs_utils.erl b/apps/riak_cs/src/cs/riak_cs_lfs_utils.erl index 532d4026e..3f6bdc8df 100644 --- a/apps/riak_cs/src/cs/riak_cs_lfs_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_lfs_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects.erl b/apps/riak_cs/src/cs/riak_cs_list_objects.erl index 1515a71fa..48e08abc6 100644 --- a/apps/riak_cs/src/cs/riak_cs_list_objects.erl +++ b/apps/riak_cs/src/cs/riak_cs_list_objects.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl index 160174821..0ed7ac9f8 100644 --- a/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl +++ b/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache_sup.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache_sup.erl index 86ad62a2e..5aab4d785 100644 --- a/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache_sup.erl +++ b/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache_sup.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl index 4fdaeac91..8c979a1d8 100644 --- a/apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl +++ b/apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl index 244c0e8df..37532b593 100644 --- a/apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl +++ b/apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_utils.erl b/apps/riak_cs/src/cs/riak_cs_list_objects_utils.erl index 54ac18a68..a876accd2 100644 --- a/apps/riak_cs/src/cs/riak_cs_list_objects_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_list_objects_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_manifest.erl b/apps/riak_cs/src/cs/riak_cs_manifest.erl index 960353d0f..08f15d598 100644 --- a/apps/riak_cs/src/cs/riak_cs_manifest.erl +++ b/apps/riak_cs/src/cs/riak_cs_manifest.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl index 555bfe322..66d86198d 100644 --- a/apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl +++ b/apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_manifest_utils.erl b/apps/riak_cs/src/cs/riak_cs_manifest_utils.erl index b7564f8cc..5de1a4fa8 100644 --- a/apps/riak_cs/src/cs/riak_cs_manifest_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_manifest_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_mb_helper.erl b/apps/riak_cs/src/cs/riak_cs_mb_helper.erl index 122f8558e..73e24108f 100644 --- a/apps/riak_cs/src/cs/riak_cs_mb_helper.erl +++ b/apps/riak_cs/src/cs/riak_cs_mb_helper.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_mp_utils.erl b/apps/riak_cs/src/cs/riak_cs_mp_utils.erl index 25eb18b96..6b184086f 100644 --- a/apps/riak_cs/src/cs/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_mp_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_oos_response.erl b/apps/riak_cs/src/cs/riak_cs_oos_response.erl index 35cac59aa..bc2bf57b3 100644 --- a/apps/riak_cs/src/cs/riak_cs_oos_response.erl +++ b/apps/riak_cs/src/cs/riak_cs_oos_response.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_oos_rewrite.erl b/apps/riak_cs/src/cs/riak_cs_oos_rewrite.erl index 392ab0c50..84d6b9765 100644 --- a/apps/riak_cs/src/cs/riak_cs_oos_rewrite.erl +++ b/apps/riak_cs/src/cs/riak_cs_oos_rewrite.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_oos_utils.erl b/apps/riak_cs/src/cs/riak_cs_oos_utils.erl index 508db3857..a59971edc 100644 --- a/apps/riak_cs/src/cs/riak_cs_oos_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_oos_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_pbc.erl b/apps/riak_cs/src/cs/riak_cs_pbc.erl index aca4adf42..306a73ce2 100644 --- a/apps/riak_cs/src/cs/riak_cs_pbc.erl +++ b/apps/riak_cs/src/cs/riak_cs_pbc.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_policy.erl b/apps/riak_cs/src/cs/riak_cs_policy.erl index 41ef568a4..f504bb651 100644 --- a/apps/riak_cs/src/cs/riak_cs_policy.erl +++ b/apps/riak_cs/src/cs/riak_cs_policy.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_put_fsm.erl b/apps/riak_cs/src/cs/riak_cs_put_fsm.erl index 3f79a1f69..c54c78c36 100644 --- a/apps/riak_cs/src/cs/riak_cs_put_fsm.erl +++ b/apps/riak_cs/src/cs/riak_cs_put_fsm.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_put_fsm_sup.erl b/apps/riak_cs/src/cs/riak_cs_put_fsm_sup.erl index ed8da4c1a..de36bffc3 100644 --- a/apps/riak_cs/src/cs/riak_cs_put_fsm_sup.erl +++ b/apps/riak_cs/src/cs/riak_cs_put_fsm_sup.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_quota.erl b/apps/riak_cs/src/cs/riak_cs_quota.erl index ab608303b..02fcc7068 100644 --- a/apps/riak_cs/src/cs/riak_cs_quota.erl +++ b/apps/riak_cs/src/cs/riak_cs_quota.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_quota_sup.erl b/apps/riak_cs/src/cs/riak_cs_quota_sup.erl index 1b3cd23fe..7802b1c01 100644 --- a/apps/riak_cs/src/cs/riak_cs_quota_sup.erl +++ b/apps/riak_cs/src/cs/riak_cs_quota_sup.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_riak_client.erl b/apps/riak_cs/src/cs/riak_cs_riak_client.erl index 22391c531..6a24a5bd8 100644 --- a/apps/riak_cs/src/cs/riak_cs_riak_client.erl +++ b/apps/riak_cs/src/cs/riak_cs_riak_client.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_riakc_pool_worker.erl b/apps/riak_cs/src/cs/riak_cs_riakc_pool_worker.erl index ce7997bfc..2d3eda48d 100644 --- a/apps/riak_cs/src/cs/riak_cs_riakc_pool_worker.erl +++ b/apps/riak_cs/src/cs/riak_cs_riakc_pool_worker.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_s3_auth.erl b/apps/riak_cs/src/cs/riak_cs_s3_auth.erl index 22f00e216..072b4f0f3 100644 --- a/apps/riak_cs/src/cs/riak_cs_s3_auth.erl +++ b/apps/riak_cs/src/cs/riak_cs_s3_auth.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_s3_passthru_auth.erl b/apps/riak_cs/src/cs/riak_cs_s3_passthru_auth.erl index f4b43c51b..7b8cd6b56 100644 --- a/apps/riak_cs/src/cs/riak_cs_s3_passthru_auth.erl +++ b/apps/riak_cs/src/cs/riak_cs_s3_passthru_auth.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_s3_policy.erl b/apps/riak_cs/src/cs/riak_cs_s3_policy.erl index ce2949411..821409c4c 100644 --- a/apps/riak_cs/src/cs/riak_cs_s3_policy.erl +++ b/apps/riak_cs/src/cs/riak_cs_s3_policy.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_s3_response.erl b/apps/riak_cs/src/cs/riak_cs_s3_response.erl index 9794e75e8..1825ff058 100644 --- a/apps/riak_cs/src/cs/riak_cs_s3_response.erl +++ b/apps/riak_cs/src/cs/riak_cs_s3_response.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/cs/riak_cs_s3_rewrite.erl index 39589bda2..95a51b774 100644 --- a/apps/riak_cs/src/cs/riak_cs_s3_rewrite.erl +++ b/apps/riak_cs/src/cs/riak_cs_s3_rewrite.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_s3_rewrite_legacy.erl b/apps/riak_cs/src/cs/riak_cs_s3_rewrite_legacy.erl index a4361d2f1..f94a1872b 100644 --- a/apps/riak_cs/src/cs/riak_cs_s3_rewrite_legacy.erl +++ b/apps/riak_cs/src/cs/riak_cs_s3_rewrite_legacy.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl b/apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl index 367b64f28..ceebe1266 100644 --- a/apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl +++ b/apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_simple_quota.erl b/apps/riak_cs/src/cs/riak_cs_simple_quota.erl index c169b6288..d4186aaa4 100644 --- a/apps/riak_cs/src/cs/riak_cs_simple_quota.erl +++ b/apps/riak_cs/src/cs/riak_cs_simple_quota.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_stanchion_console.erl b/apps/riak_cs/src/cs/riak_cs_stanchion_console.erl index d1998b7c1..6b2bb9c09 100644 --- a/apps/riak_cs/src/cs/riak_cs_stanchion_console.erl +++ b/apps/riak_cs/src/cs/riak_cs_stanchion_console.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_stats.erl b/apps/riak_cs/src/cs/riak_cs_stats.erl index 2dae3b8cb..8fdea75cc 100644 --- a/apps/riak_cs/src/cs/riak_cs_stats.erl +++ b/apps/riak_cs/src/cs/riak_cs_stats.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_storage.erl b/apps/riak_cs/src/cs/riak_cs_storage.erl index 636c9fe6c..fc3e35065 100644 --- a/apps/riak_cs/src/cs/riak_cs_storage.erl +++ b/apps/riak_cs/src/cs/riak_cs_storage.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_storage_console.erl b/apps/riak_cs/src/cs/riak_cs_storage_console.erl index b3bd2ea2d..6a30e1d98 100644 --- a/apps/riak_cs/src/cs/riak_cs_storage_console.erl +++ b/apps/riak_cs/src/cs/riak_cs_storage_console.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_storage_d.erl b/apps/riak_cs/src/cs/riak_cs_storage_d.erl index 9c3a29e68..e5c13278a 100644 --- a/apps/riak_cs/src/cs/riak_cs_storage_d.erl +++ b/apps/riak_cs/src/cs/riak_cs_storage_d.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_storage_mr.erl b/apps/riak_cs/src/cs/riak_cs_storage_mr.erl index 3634af87f..1525feb1a 100644 --- a/apps/riak_cs/src/cs/riak_cs_storage_mr.erl +++ b/apps/riak_cs/src/cs/riak_cs_storage_mr.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_sup.erl b/apps/riak_cs/src/cs/riak_cs_sup.erl index dd85599d1..d66bc136c 100644 --- a/apps/riak_cs/src/cs/riak_cs_sup.erl +++ b/apps/riak_cs/src/cs/riak_cs_sup.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_user.erl b/apps/riak_cs/src/cs/riak_cs_user.erl index 1f3b4055e..8bda84f19 100644 --- a/apps/riak_cs/src/cs/riak_cs_user.erl +++ b/apps/riak_cs/src/cs/riak_cs_user.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_utils.erl b/apps/riak_cs/src/cs/riak_cs_utils.erl index fcfb085ec..1b6c5df99 100644 --- a/apps/riak_cs/src/cs/riak_cs_utils.erl +++ b/apps/riak_cs/src/cs/riak_cs_utils.erl @@ -1,7 +1,7 @@ %% ------------------------------------------------------------------- %% %% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_web.erl b/apps/riak_cs/src/cs/riak_cs_web.erl index ba7cab58f..1b15f02e5 100644 --- a/apps/riak_cs/src/cs/riak_cs_web.erl +++ b/apps/riak_cs/src/cs/riak_cs_web.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_xml.erl b/apps/riak_cs/src/cs/riak_cs_xml.erl index 1623242e6..de57f354b 100644 --- a/apps/riak_cs/src/cs/riak_cs_xml.erl +++ b/apps/riak_cs/src/cs/riak_cs_xml.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/riak_cs_yessir_riak_client.erl b/apps/riak_cs/src/cs/riak_cs_yessir_riak_client.erl index b6804118d..969a31037 100644 --- a/apps/riak_cs/src/cs/riak_cs_yessir_riak_client.erl +++ b/apps/riak_cs/src/cs/riak_cs_yessir_riak_client.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/velvet.erl b/apps/riak_cs/src/cs/velvet.erl index 0abb198ed..42094ead4 100644 --- a/apps/riak_cs/src/cs/velvet.erl +++ b/apps/riak_cs/src/cs/velvet.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved,, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/velvet_auth.erl b/apps/riak_cs/src/cs/velvet_auth.erl index 628d90165..2e464c122 100644 --- a/apps/riak_cs/src/cs/velvet_auth.erl +++ b/apps/riak_cs/src/cs/velvet_auth.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket.erl index 5ed305982..bd1cabd4c 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_acl.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_acl.erl index af01dec99..812fe9149 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_acl.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_acl.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl index 619205041..5d7ab9f3a 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_location.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_location.erl index b77cc544f..8b9e23086 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_location.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_location.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_policy.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_policy.erl index 1616d0773..2e30b3cef 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_policy.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_policy.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_request_payment.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_request_payment.erl index 87300f2c4..886c8700b 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_request_payment.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_request_payment.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_uploads.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_uploads.erl index fa48bd6a9..076b0e5e0 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_uploads.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_uploads.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_versioning.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_versioning.erl index 978f6450c..cc387a894 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_versioning.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_versioning.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_buckets.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_buckets.erl index f25fa49df..51f899fcb 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_buckets.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_buckets.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl index fbd2f5684..2ac847bff 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_error_handler.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_error_handler.erl index b1cfcae60..583af1b46 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_error_handler.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_error_handler.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_not_implemented.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_not_implemented.erl index ee15833d5..a23d4c5cf 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_not_implemented.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_not_implemented.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2015 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl index 56356db99..fd9648fc6 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_acl.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_acl.erl index 8139eaa29..81c774c39 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_acl.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_acl.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload.erl index 020a8bdec..89ae69bd5 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl index 0dc8c92ef..7e2556405 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_versions.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_versions.erl index e0f613d71..e01a699a1 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_versions.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_object_versions.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_objects.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_objects.erl index 4cc1e1710..7e77690f2 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_objects.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_objects.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_ping.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_ping.erl index 12dfdd8f4..62b28d6d6 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_ping.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_ping.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_stats.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_stats.erl index 2f8f98157..f7251e208 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_stats.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_stats.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_usage.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_usage.erl index 9fe1d12ca..bc8059d5f 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_usage.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_usage.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_user.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_user.erl index 43ab9afe0..29b207e87 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_user.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_user.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_users.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_users.erl index a298244be..1d6da6a5b 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_users.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_users.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl b/apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl index 293b1e2bd..e9475aae3 100644 --- a/apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/lib/base64url.erl b/apps/riak_cs/src/lib/base64url.erl index f9d6832ee..0aa70dfaa 100644 --- a/apps/riak_cs/src/lib/base64url.erl +++ b/apps/riak_cs/src/lib/base64url.erl @@ -1,7 +1,7 @@ %% ------------------------------------------------------------------- %% %% Copyright (c) 2007-2016 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/lib/exprec.erl b/apps/riak_cs/src/lib/exprec.erl index 31bd9f76b..61f39932b 100644 --- a/apps/riak_cs/src/lib/exprec.erl +++ b/apps/riak_cs/src/lib/exprec.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/lib/rts.erl b/apps/riak_cs/src/lib/rts.erl index ba013a19d..32beb934f 100644 --- a/apps/riak_cs/src/lib/rts.erl +++ b/apps/riak_cs/src/lib/rts.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/lib/table.erl b/apps/riak_cs/src/lib/table.erl index d0ee2c554..75adaf2e2 100644 --- a/apps/riak_cs/src/lib/table.erl +++ b/apps/riak_cs/src/lib/table.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/lib/twop_set.erl b/apps/riak_cs/src/lib/twop_set.erl index 496e6e086..3d231859b 100644 --- a/apps/riak_cs/src/lib/twop_set.erl +++ b/apps/riak_cs/src/lib/twop_set.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/stanchion_acl_utils.erl b/apps/riak_cs/src/stanchion/stanchion_acl_utils.erl index 966b77ed7..2962badcc 100644 --- a/apps/riak_cs/src/stanchion/stanchion_acl_utils.erl +++ b/apps/riak_cs/src/stanchion/stanchion_acl_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/stanchion_auth.erl b/apps/riak_cs/src/stanchion/stanchion_auth.erl index 15f30b8e8..81e26dd99 100644 --- a/apps/riak_cs/src/stanchion/stanchion_auth.erl +++ b/apps/riak_cs/src/stanchion/stanchion_auth.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/stanchion_blockall_auth.erl b/apps/riak_cs/src/stanchion/stanchion_blockall_auth.erl index cab0af3f6..175e6e9bb 100644 --- a/apps/riak_cs/src/stanchion/stanchion_blockall_auth.erl +++ b/apps/riak_cs/src/stanchion/stanchion_blockall_auth.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/stanchion_multipart.erl b/apps/riak_cs/src/stanchion/stanchion_multipart.erl index 669af94e7..a6e278a48 100644 --- a/apps/riak_cs/src/stanchion/stanchion_multipart.erl +++ b/apps/riak_cs/src/stanchion/stanchion_multipart.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/stanchion_passthru_auth.erl b/apps/riak_cs/src/stanchion/stanchion_passthru_auth.erl index 6665b3b93..fc064ae91 100644 --- a/apps/riak_cs/src/stanchion/stanchion_passthru_auth.erl +++ b/apps/riak_cs/src/stanchion/stanchion_passthru_auth.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/stanchion_response.erl b/apps/riak_cs/src/stanchion/stanchion_response.erl index a99910f9a..f3469d554 100644 --- a/apps/riak_cs/src/stanchion/stanchion_response.erl +++ b/apps/riak_cs/src/stanchion/stanchion_response.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/stanchion_server.erl b/apps/riak_cs/src/stanchion/stanchion_server.erl index 6179f8868..0157f7220 100644 --- a/apps/riak_cs/src/stanchion/stanchion_server.erl +++ b/apps/riak_cs/src/stanchion/stanchion_server.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/stanchion_stats.erl b/apps/riak_cs/src/stanchion/stanchion_stats.erl index b71a3eff6..0930bba60 100644 --- a/apps/riak_cs/src/stanchion/stanchion_stats.erl +++ b/apps/riak_cs/src/stanchion/stanchion_stats.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/stanchion_web.erl b/apps/riak_cs/src/stanchion/stanchion_web.erl index 8ee0f2234..1098f001e 100644 --- a/apps/riak_cs/src/stanchion/stanchion_web.erl +++ b/apps/riak_cs/src/stanchion/stanchion_web.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_acl.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_acl.erl index e7dd2ebce..d0e2b07aa 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_acl.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_acl.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl index 8d6c4f63f..8ce7fa950 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_buckets.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_buckets.erl index 2831e76ee..caf641e5e 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_buckets.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_buckets.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_error_handler.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_error_handler.erl index 96e453557..a120c22c6 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_error_handler.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_error_handler.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl index 5d812d282..731372511 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_stats.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_stats.erl index 29b9fe9de..f2cbf73ee 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_stats.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_stats.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_user.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_user.erl index 68360e025..33653c27b 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_user.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_user.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_users.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_users.erl index b6598ecf1..466c2bd60 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_users.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_users.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_utils.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_utils.erl index 4685799f1..e0a08d243 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_utils.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_versioning.erl b/apps/riak_cs/src/stanchion/wm/stanchion_wm_versioning.erl index ebb589be1..83bb12451 100644 --- a/apps/riak_cs/src/stanchion/wm/stanchion_wm_versioning.erl +++ b/apps/riak_cs/src/stanchion/wm/stanchion_wm_versioning.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/cs782_regression_test.erl b/apps/riak_cs/test/cs782_regression_test.erl index 5958f31bd..7a4b85298 100644 --- a/apps/riak_cs/test/cs782_regression_test.erl +++ b/apps/riak_cs/test/cs782_regression_test.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/prop_riak_cs_acl_utils.erl b/apps/riak_cs/test/prop_riak_cs_acl_utils.erl index 61968cacf..9851da009 100644 --- a/apps/riak_cs/test/prop_riak_cs_acl_utils.erl +++ b/apps/riak_cs/test/prop_riak_cs_acl_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/prop_riak_cs_gc_manager.erl b/apps/riak_cs/test/prop_riak_cs_gc_manager.erl index dcd5d02d2..2b3adab72 100644 --- a/apps/riak_cs/test/prop_riak_cs_gc_manager.erl +++ b/apps/riak_cs/test/prop_riak_cs_gc_manager.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/prop_riak_cs_gc_single_run.erl b/apps/riak_cs/test/prop_riak_cs_gc_single_run.erl index be3f2d988..34f00c619 100644 --- a/apps/riak_cs/test/prop_riak_cs_gc_single_run.erl +++ b/apps/riak_cs/test/prop_riak_cs_gc_single_run.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2014 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/prop_riak_cs_get_fsm.erl b/apps/riak_cs/test/prop_riak_cs_get_fsm.erl index b11df0a98..500f5f378 100644 --- a/apps/riak_cs/test/prop_riak_cs_get_fsm.erl +++ b/apps/riak_cs/test/prop_riak_cs_get_fsm.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl b/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl index 7e39fe329..cadd7250c 100644 --- a/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl +++ b/apps/riak_cs/test/prop_riak_cs_lfs_utils.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2013 Basho Technologies, Inc. All Rights Reserved, -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file From cf0b657d2eb104dbf72d91f4360d0f615b37e946 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 26 Nov 2022 02:30:40 +0200 Subject: [PATCH 384/831] reorg erl files into one dir back again; also, always init stanchion stats --- apps/riak_cs/src/{cs => }/riak_cs_access.erl | 0 .../src/{cs => }/riak_cs_access_archiver.erl | 0 .../riak_cs_access_archiver_manager.erl | 0 .../src/{cs => }/riak_cs_access_console.erl | 0 .../{cs => }/riak_cs_access_log_handler.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_acl.erl | 0 .../src/{cs => }/riak_cs_acl_utils.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_api.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_app.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_auth.erl | 0 .../src/{cs => }/riak_cs_block_server.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_bucket.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_config.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_console.erl | 0 .../src/{cs => }/riak_cs_copy_object.erl | 0 .../src/{cs => }/riak_cs_delete_fsm.erl | 0 .../src/{cs => }/riak_cs_delete_fsm_sup.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_diags.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_dtrace.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_gc.erl | 0 .../riak_cs/src/{cs => }/riak_cs_gc_batch.erl | 0 .../src/{cs => }/riak_cs_gc_console.erl | 0 .../src/{cs => }/riak_cs_gc_key_list.erl | 0 .../src/{cs => }/riak_cs_gc_manager.erl | 0 .../src/{cs => }/riak_cs_gc_worker.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_get_fsm.erl | 0 .../src/{cs => }/riak_cs_get_fsm_sup.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_json.erl | 0 .../src/{cs => }/riak_cs_keystone_auth.erl | 0 .../src/{cs => }/riak_cs_kv_multi_backend.erl | 0 .../src/{cs => }/riak_cs_lfs_utils.erl | 0 .../src/{cs => }/riak_cs_list_objects.erl | 0 .../riak_cs_list_objects_ets_cache.erl | 0 .../riak_cs_list_objects_ets_cache_sup.erl | 0 .../src/{cs => }/riak_cs_list_objects_fsm.erl | 0 .../{cs => }/riak_cs_list_objects_fsm_v2.erl | 0 .../{cs => }/riak_cs_list_objects_utils.erl | 0 .../riak_cs/src/{cs => }/riak_cs_manifest.erl | 0 .../src/{cs => }/riak_cs_manifest_fsm.erl | 0 .../src/{cs => }/riak_cs_manifest_utils.erl | 0 .../src/{cs => }/riak_cs_mb_helper.erl | 0 .../riak_cs/src/{cs => }/riak_cs_mp_utils.erl | 0 .../src/{cs => }/riak_cs_oos_response.erl | 0 .../src/{cs => }/riak_cs_oos_rewrite.erl | 0 .../src/{cs => }/riak_cs_oos_utils.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_pbc.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_policy.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_put_fsm.erl | 0 .../src/{cs => }/riak_cs_put_fsm_sup.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_quota.erl | 0 .../src/{cs => }/riak_cs_quota_sup.erl | 0 .../src/{cs => }/riak_cs_riak_client.erl | 0 .../{cs => }/riak_cs_riakc_pool_worker.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_s3_auth.erl | 0 .../src/{cs => }/riak_cs_s3_passthru_auth.erl | 0 .../src/{cs => }/riak_cs_s3_policy.erl | 0 .../src/{cs => }/riak_cs_s3_response.erl | 1 + .../src/{cs => }/riak_cs_s3_rewrite.erl | 0 .../{cs => }/riak_cs_s3_rewrite_legacy.erl | 0 .../src/{cs => }/riak_cs_simple_bwlimiter.erl | 0 .../src/{cs => }/riak_cs_simple_quota.erl | 0 .../{cs => }/riak_cs_stanchion_console.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_stats.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_storage.erl | 0 .../src/{cs => }/riak_cs_storage_console.erl | 0 .../src/{cs => }/riak_cs_storage_d.erl | 0 .../src/{cs => }/riak_cs_storage_mr.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_sup.erl | 3 +- apps/riak_cs/src/{cs => }/riak_cs_user.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_utils.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_web.erl | 0 .../src/{cs/wm => }/riak_cs_wm_bucket.erl | 0 .../src/{cs/wm => }/riak_cs_wm_bucket_acl.erl | 0 .../{cs/wm => }/riak_cs_wm_bucket_delete.erl | 0 .../wm => }/riak_cs_wm_bucket_location.erl | 0 .../{cs/wm => }/riak_cs_wm_bucket_policy.erl | 0 .../riak_cs_wm_bucket_request_payment.erl | 0 .../{cs/wm => }/riak_cs_wm_bucket_uploads.erl | 0 .../wm => }/riak_cs_wm_bucket_versioning.erl | 0 .../src/{cs/wm => }/riak_cs_wm_buckets.erl | 0 .../src/{cs/wm => }/riak_cs_wm_common.erl | 0 .../{cs/wm => }/riak_cs_wm_error_handler.erl | 0 .../wm => }/riak_cs_wm_not_implemented.erl | 0 .../src/{cs/wm => }/riak_cs_wm_object.erl | 0 .../src/{cs/wm => }/riak_cs_wm_object_acl.erl | 0 .../{cs/wm => }/riak_cs_wm_object_upload.erl | 0 .../wm => }/riak_cs_wm_object_upload_part.erl | 0 .../wm => }/riak_cs_wm_object_versions.erl | 0 .../src/{cs/wm => }/riak_cs_wm_objects.erl | 0 .../src/{cs/wm => }/riak_cs_wm_ping.erl | 0 .../src/{cs/wm => }/riak_cs_wm_stats.erl | 0 .../src/{cs/wm => }/riak_cs_wm_usage.erl | 0 .../src/{cs/wm => }/riak_cs_wm_user.erl | 0 .../src/{cs/wm => }/riak_cs_wm_users.erl | 0 .../src/{cs/wm => }/riak_cs_wm_utils.erl | 0 apps/riak_cs/src/{cs => }/riak_cs_xml.erl | 0 .../{cs => }/riak_cs_yessir_riak_client.erl | 0 .../{stanchion => }/stanchion_acl_utils.erl | 0 .../src/{stanchion => }/stanchion_auth.erl | 0 .../stanchion_blockall_auth.erl | 0 .../{stanchion => }/stanchion_migration.erl | 1 - .../{stanchion => }/stanchion_multipart.erl | 0 .../stanchion_passthru_auth.erl | 0 .../{stanchion => }/stanchion_response.erl | 0 .../src/{stanchion => }/stanchion_server.erl | 0 .../{stanchion => }/stanchion_server_sup.erl | 0 .../src/{stanchion => }/stanchion_stats.erl | 1 + .../src/{stanchion => }/stanchion_sup.erl | 0 .../src/{stanchion => }/stanchion_utils.erl | 32 +++++++++---------- .../src/{stanchion => }/stanchion_web.erl | 0 .../{stanchion/wm => }/stanchion_wm_acl.erl | 0 .../wm => }/stanchion_wm_bucket.erl | 0 .../wm => }/stanchion_wm_buckets.erl | 0 .../wm => }/stanchion_wm_error_handler.erl | 0 .../{stanchion/wm => }/stanchion_wm_ping.erl | 0 .../wm => }/stanchion_wm_policy.erl | 0 .../{stanchion/wm => }/stanchion_wm_stats.erl | 0 .../{stanchion/wm => }/stanchion_wm_user.erl | 0 .../{stanchion/wm => }/stanchion_wm_users.erl | 0 .../{stanchion/wm => }/stanchion_wm_utils.erl | 0 .../wm => }/stanchion_wm_versioning.erl | 0 apps/riak_cs/src/{cs => }/velvet.erl | 0 apps/riak_cs/src/{cs => }/velvet_auth.erl | 0 123 files changed, 20 insertions(+), 18 deletions(-) rename apps/riak_cs/src/{cs => }/riak_cs_access.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_access_archiver.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_access_archiver_manager.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_access_console.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_access_log_handler.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_acl.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_acl_utils.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_api.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_app.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_auth.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_block_server.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_bucket.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_config.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_console.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_copy_object.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_delete_fsm.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_delete_fsm_sup.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_diags.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_dtrace.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_gc.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_gc_batch.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_gc_console.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_gc_key_list.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_gc_manager.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_gc_worker.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_get_fsm.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_get_fsm_sup.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_json.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_keystone_auth.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_kv_multi_backend.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_lfs_utils.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_list_objects.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_list_objects_ets_cache.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_list_objects_ets_cache_sup.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_list_objects_fsm.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_list_objects_fsm_v2.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_list_objects_utils.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_manifest.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_manifest_fsm.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_manifest_utils.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_mb_helper.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_mp_utils.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_oos_response.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_oos_rewrite.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_oos_utils.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_pbc.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_policy.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_put_fsm.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_put_fsm_sup.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_quota.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_quota_sup.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_riak_client.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_riakc_pool_worker.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_s3_auth.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_s3_passthru_auth.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_s3_policy.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_s3_response.erl (99%) rename apps/riak_cs/src/{cs => }/riak_cs_s3_rewrite.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_s3_rewrite_legacy.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_simple_bwlimiter.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_simple_quota.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_stanchion_console.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_stats.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_storage.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_storage_console.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_storage_d.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_storage_mr.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_sup.erl (99%) rename apps/riak_cs/src/{cs => }/riak_cs_user.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_utils.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_web.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_bucket.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_bucket_acl.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_bucket_delete.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_bucket_location.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_bucket_policy.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_bucket_request_payment.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_bucket_uploads.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_bucket_versioning.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_buckets.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_common.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_error_handler.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_not_implemented.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_object.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_object_acl.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_object_upload.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_object_upload_part.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_object_versions.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_objects.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_ping.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_stats.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_usage.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_user.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_users.erl (100%) rename apps/riak_cs/src/{cs/wm => }/riak_cs_wm_utils.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_xml.erl (100%) rename apps/riak_cs/src/{cs => }/riak_cs_yessir_riak_client.erl (100%) rename apps/riak_cs/src/{stanchion => }/stanchion_acl_utils.erl (100%) rename apps/riak_cs/src/{stanchion => }/stanchion_auth.erl (100%) rename apps/riak_cs/src/{stanchion => }/stanchion_blockall_auth.erl (100%) rename apps/riak_cs/src/{stanchion => }/stanchion_migration.erl (99%) rename apps/riak_cs/src/{stanchion => }/stanchion_multipart.erl (100%) rename apps/riak_cs/src/{stanchion => }/stanchion_passthru_auth.erl (100%) rename apps/riak_cs/src/{stanchion => }/stanchion_response.erl (100%) rename apps/riak_cs/src/{stanchion => }/stanchion_server.erl (100%) rename apps/riak_cs/src/{stanchion => }/stanchion_server_sup.erl (100%) rename apps/riak_cs/src/{stanchion => }/stanchion_stats.erl (99%) rename apps/riak_cs/src/{stanchion => }/stanchion_sup.erl (100%) rename apps/riak_cs/src/{stanchion => }/stanchion_utils.erl (98%) rename apps/riak_cs/src/{stanchion => }/stanchion_web.erl (100%) rename apps/riak_cs/src/{stanchion/wm => }/stanchion_wm_acl.erl (100%) rename apps/riak_cs/src/{stanchion/wm => }/stanchion_wm_bucket.erl (100%) rename apps/riak_cs/src/{stanchion/wm => }/stanchion_wm_buckets.erl (100%) rename apps/riak_cs/src/{stanchion/wm => }/stanchion_wm_error_handler.erl (100%) rename apps/riak_cs/src/{stanchion/wm => }/stanchion_wm_ping.erl (100%) rename apps/riak_cs/src/{stanchion/wm => }/stanchion_wm_policy.erl (100%) rename apps/riak_cs/src/{stanchion/wm => }/stanchion_wm_stats.erl (100%) rename apps/riak_cs/src/{stanchion/wm => }/stanchion_wm_user.erl (100%) rename apps/riak_cs/src/{stanchion/wm => }/stanchion_wm_users.erl (100%) rename apps/riak_cs/src/{stanchion/wm => }/stanchion_wm_utils.erl (100%) rename apps/riak_cs/src/{stanchion/wm => }/stanchion_wm_versioning.erl (100%) rename apps/riak_cs/src/{cs => }/velvet.erl (100%) rename apps/riak_cs/src/{cs => }/velvet_auth.erl (100%) diff --git a/apps/riak_cs/src/cs/riak_cs_access.erl b/apps/riak_cs/src/riak_cs_access.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_access.erl rename to apps/riak_cs/src/riak_cs_access.erl diff --git a/apps/riak_cs/src/cs/riak_cs_access_archiver.erl b/apps/riak_cs/src/riak_cs_access_archiver.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_access_archiver.erl rename to apps/riak_cs/src/riak_cs_access_archiver.erl diff --git a/apps/riak_cs/src/cs/riak_cs_access_archiver_manager.erl b/apps/riak_cs/src/riak_cs_access_archiver_manager.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_access_archiver_manager.erl rename to apps/riak_cs/src/riak_cs_access_archiver_manager.erl diff --git a/apps/riak_cs/src/cs/riak_cs_access_console.erl b/apps/riak_cs/src/riak_cs_access_console.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_access_console.erl rename to apps/riak_cs/src/riak_cs_access_console.erl diff --git a/apps/riak_cs/src/cs/riak_cs_access_log_handler.erl b/apps/riak_cs/src/riak_cs_access_log_handler.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_access_log_handler.erl rename to apps/riak_cs/src/riak_cs_access_log_handler.erl diff --git a/apps/riak_cs/src/cs/riak_cs_acl.erl b/apps/riak_cs/src/riak_cs_acl.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_acl.erl rename to apps/riak_cs/src/riak_cs_acl.erl diff --git a/apps/riak_cs/src/cs/riak_cs_acl_utils.erl b/apps/riak_cs/src/riak_cs_acl_utils.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_acl_utils.erl rename to apps/riak_cs/src/riak_cs_acl_utils.erl diff --git a/apps/riak_cs/src/cs/riak_cs_api.erl b/apps/riak_cs/src/riak_cs_api.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_api.erl rename to apps/riak_cs/src/riak_cs_api.erl diff --git a/apps/riak_cs/src/cs/riak_cs_app.erl b/apps/riak_cs/src/riak_cs_app.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_app.erl rename to apps/riak_cs/src/riak_cs_app.erl diff --git a/apps/riak_cs/src/cs/riak_cs_auth.erl b/apps/riak_cs/src/riak_cs_auth.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_auth.erl rename to apps/riak_cs/src/riak_cs_auth.erl diff --git a/apps/riak_cs/src/cs/riak_cs_block_server.erl b/apps/riak_cs/src/riak_cs_block_server.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_block_server.erl rename to apps/riak_cs/src/riak_cs_block_server.erl diff --git a/apps/riak_cs/src/cs/riak_cs_bucket.erl b/apps/riak_cs/src/riak_cs_bucket.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_bucket.erl rename to apps/riak_cs/src/riak_cs_bucket.erl diff --git a/apps/riak_cs/src/cs/riak_cs_config.erl b/apps/riak_cs/src/riak_cs_config.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_config.erl rename to apps/riak_cs/src/riak_cs_config.erl diff --git a/apps/riak_cs/src/cs/riak_cs_console.erl b/apps/riak_cs/src/riak_cs_console.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_console.erl rename to apps/riak_cs/src/riak_cs_console.erl diff --git a/apps/riak_cs/src/cs/riak_cs_copy_object.erl b/apps/riak_cs/src/riak_cs_copy_object.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_copy_object.erl rename to apps/riak_cs/src/riak_cs_copy_object.erl diff --git a/apps/riak_cs/src/cs/riak_cs_delete_fsm.erl b/apps/riak_cs/src/riak_cs_delete_fsm.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_delete_fsm.erl rename to apps/riak_cs/src/riak_cs_delete_fsm.erl diff --git a/apps/riak_cs/src/cs/riak_cs_delete_fsm_sup.erl b/apps/riak_cs/src/riak_cs_delete_fsm_sup.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_delete_fsm_sup.erl rename to apps/riak_cs/src/riak_cs_delete_fsm_sup.erl diff --git a/apps/riak_cs/src/cs/riak_cs_diags.erl b/apps/riak_cs/src/riak_cs_diags.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_diags.erl rename to apps/riak_cs/src/riak_cs_diags.erl diff --git a/apps/riak_cs/src/cs/riak_cs_dtrace.erl b/apps/riak_cs/src/riak_cs_dtrace.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_dtrace.erl rename to apps/riak_cs/src/riak_cs_dtrace.erl diff --git a/apps/riak_cs/src/cs/riak_cs_gc.erl b/apps/riak_cs/src/riak_cs_gc.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_gc.erl rename to apps/riak_cs/src/riak_cs_gc.erl diff --git a/apps/riak_cs/src/cs/riak_cs_gc_batch.erl b/apps/riak_cs/src/riak_cs_gc_batch.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_gc_batch.erl rename to apps/riak_cs/src/riak_cs_gc_batch.erl diff --git a/apps/riak_cs/src/cs/riak_cs_gc_console.erl b/apps/riak_cs/src/riak_cs_gc_console.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_gc_console.erl rename to apps/riak_cs/src/riak_cs_gc_console.erl diff --git a/apps/riak_cs/src/cs/riak_cs_gc_key_list.erl b/apps/riak_cs/src/riak_cs_gc_key_list.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_gc_key_list.erl rename to apps/riak_cs/src/riak_cs_gc_key_list.erl diff --git a/apps/riak_cs/src/cs/riak_cs_gc_manager.erl b/apps/riak_cs/src/riak_cs_gc_manager.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_gc_manager.erl rename to apps/riak_cs/src/riak_cs_gc_manager.erl diff --git a/apps/riak_cs/src/cs/riak_cs_gc_worker.erl b/apps/riak_cs/src/riak_cs_gc_worker.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_gc_worker.erl rename to apps/riak_cs/src/riak_cs_gc_worker.erl diff --git a/apps/riak_cs/src/cs/riak_cs_get_fsm.erl b/apps/riak_cs/src/riak_cs_get_fsm.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_get_fsm.erl rename to apps/riak_cs/src/riak_cs_get_fsm.erl diff --git a/apps/riak_cs/src/cs/riak_cs_get_fsm_sup.erl b/apps/riak_cs/src/riak_cs_get_fsm_sup.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_get_fsm_sup.erl rename to apps/riak_cs/src/riak_cs_get_fsm_sup.erl diff --git a/apps/riak_cs/src/cs/riak_cs_json.erl b/apps/riak_cs/src/riak_cs_json.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_json.erl rename to apps/riak_cs/src/riak_cs_json.erl diff --git a/apps/riak_cs/src/cs/riak_cs_keystone_auth.erl b/apps/riak_cs/src/riak_cs_keystone_auth.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_keystone_auth.erl rename to apps/riak_cs/src/riak_cs_keystone_auth.erl diff --git a/apps/riak_cs/src/cs/riak_cs_kv_multi_backend.erl b/apps/riak_cs/src/riak_cs_kv_multi_backend.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_kv_multi_backend.erl rename to apps/riak_cs/src/riak_cs_kv_multi_backend.erl diff --git a/apps/riak_cs/src/cs/riak_cs_lfs_utils.erl b/apps/riak_cs/src/riak_cs_lfs_utils.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_lfs_utils.erl rename to apps/riak_cs/src/riak_cs_lfs_utils.erl diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects.erl b/apps/riak_cs/src/riak_cs_list_objects.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_list_objects.erl rename to apps/riak_cs/src/riak_cs_list_objects.erl diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl b/apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache.erl rename to apps/riak_cs/src/riak_cs_list_objects_ets_cache.erl diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache_sup.erl b/apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_list_objects_ets_cache_sup.erl rename to apps/riak_cs/src/riak_cs_list_objects_ets_cache_sup.erl diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_list_objects_fsm.erl rename to apps/riak_cs/src/riak_cs_list_objects_fsm.erl diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl b/apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_list_objects_fsm_v2.erl rename to apps/riak_cs/src/riak_cs_list_objects_fsm_v2.erl diff --git a/apps/riak_cs/src/cs/riak_cs_list_objects_utils.erl b/apps/riak_cs/src/riak_cs_list_objects_utils.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_list_objects_utils.erl rename to apps/riak_cs/src/riak_cs_list_objects_utils.erl diff --git a/apps/riak_cs/src/cs/riak_cs_manifest.erl b/apps/riak_cs/src/riak_cs_manifest.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_manifest.erl rename to apps/riak_cs/src/riak_cs_manifest.erl diff --git a/apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl b/apps/riak_cs/src/riak_cs_manifest_fsm.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_manifest_fsm.erl rename to apps/riak_cs/src/riak_cs_manifest_fsm.erl diff --git a/apps/riak_cs/src/cs/riak_cs_manifest_utils.erl b/apps/riak_cs/src/riak_cs_manifest_utils.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_manifest_utils.erl rename to apps/riak_cs/src/riak_cs_manifest_utils.erl diff --git a/apps/riak_cs/src/cs/riak_cs_mb_helper.erl b/apps/riak_cs/src/riak_cs_mb_helper.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_mb_helper.erl rename to apps/riak_cs/src/riak_cs_mb_helper.erl diff --git a/apps/riak_cs/src/cs/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_mp_utils.erl rename to apps/riak_cs/src/riak_cs_mp_utils.erl diff --git a/apps/riak_cs/src/cs/riak_cs_oos_response.erl b/apps/riak_cs/src/riak_cs_oos_response.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_oos_response.erl rename to apps/riak_cs/src/riak_cs_oos_response.erl diff --git a/apps/riak_cs/src/cs/riak_cs_oos_rewrite.erl b/apps/riak_cs/src/riak_cs_oos_rewrite.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_oos_rewrite.erl rename to apps/riak_cs/src/riak_cs_oos_rewrite.erl diff --git a/apps/riak_cs/src/cs/riak_cs_oos_utils.erl b/apps/riak_cs/src/riak_cs_oos_utils.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_oos_utils.erl rename to apps/riak_cs/src/riak_cs_oos_utils.erl diff --git a/apps/riak_cs/src/cs/riak_cs_pbc.erl b/apps/riak_cs/src/riak_cs_pbc.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_pbc.erl rename to apps/riak_cs/src/riak_cs_pbc.erl diff --git a/apps/riak_cs/src/cs/riak_cs_policy.erl b/apps/riak_cs/src/riak_cs_policy.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_policy.erl rename to apps/riak_cs/src/riak_cs_policy.erl diff --git a/apps/riak_cs/src/cs/riak_cs_put_fsm.erl b/apps/riak_cs/src/riak_cs_put_fsm.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_put_fsm.erl rename to apps/riak_cs/src/riak_cs_put_fsm.erl diff --git a/apps/riak_cs/src/cs/riak_cs_put_fsm_sup.erl b/apps/riak_cs/src/riak_cs_put_fsm_sup.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_put_fsm_sup.erl rename to apps/riak_cs/src/riak_cs_put_fsm_sup.erl diff --git a/apps/riak_cs/src/cs/riak_cs_quota.erl b/apps/riak_cs/src/riak_cs_quota.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_quota.erl rename to apps/riak_cs/src/riak_cs_quota.erl diff --git a/apps/riak_cs/src/cs/riak_cs_quota_sup.erl b/apps/riak_cs/src/riak_cs_quota_sup.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_quota_sup.erl rename to apps/riak_cs/src/riak_cs_quota_sup.erl diff --git a/apps/riak_cs/src/cs/riak_cs_riak_client.erl b/apps/riak_cs/src/riak_cs_riak_client.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_riak_client.erl rename to apps/riak_cs/src/riak_cs_riak_client.erl diff --git a/apps/riak_cs/src/cs/riak_cs_riakc_pool_worker.erl b/apps/riak_cs/src/riak_cs_riakc_pool_worker.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_riakc_pool_worker.erl rename to apps/riak_cs/src/riak_cs_riakc_pool_worker.erl diff --git a/apps/riak_cs/src/cs/riak_cs_s3_auth.erl b/apps/riak_cs/src/riak_cs_s3_auth.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_s3_auth.erl rename to apps/riak_cs/src/riak_cs_s3_auth.erl diff --git a/apps/riak_cs/src/cs/riak_cs_s3_passthru_auth.erl b/apps/riak_cs/src/riak_cs_s3_passthru_auth.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_s3_passthru_auth.erl rename to apps/riak_cs/src/riak_cs_s3_passthru_auth.erl diff --git a/apps/riak_cs/src/cs/riak_cs_s3_policy.erl b/apps/riak_cs/src/riak_cs_s3_policy.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_s3_policy.erl rename to apps/riak_cs/src/riak_cs_s3_policy.erl diff --git a/apps/riak_cs/src/cs/riak_cs_s3_response.erl b/apps/riak_cs/src/riak_cs_s3_response.erl similarity index 99% rename from apps/riak_cs/src/cs/riak_cs_s3_response.erl rename to apps/riak_cs/src/riak_cs_s3_response.erl index 1825ff058..653a9a103 100644 --- a/apps/riak_cs/src/cs/riak_cs_s3_response.erl +++ b/apps/riak_cs/src/riak_cs_s3_response.erl @@ -299,6 +299,7 @@ error_resource(Tag, RD) end; error_resource(_Tag, RD) -> + logger:info("DDDD ~p", [RD]), {OrigResource, _} = riak_cs_s3_rewrite:original_resource(RD), OrigResource. diff --git a/apps/riak_cs/src/cs/riak_cs_s3_rewrite.erl b/apps/riak_cs/src/riak_cs_s3_rewrite.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_s3_rewrite.erl rename to apps/riak_cs/src/riak_cs_s3_rewrite.erl diff --git a/apps/riak_cs/src/cs/riak_cs_s3_rewrite_legacy.erl b/apps/riak_cs/src/riak_cs_s3_rewrite_legacy.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_s3_rewrite_legacy.erl rename to apps/riak_cs/src/riak_cs_s3_rewrite_legacy.erl diff --git a/apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_simple_bwlimiter.erl rename to apps/riak_cs/src/riak_cs_simple_bwlimiter.erl diff --git a/apps/riak_cs/src/cs/riak_cs_simple_quota.erl b/apps/riak_cs/src/riak_cs_simple_quota.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_simple_quota.erl rename to apps/riak_cs/src/riak_cs_simple_quota.erl diff --git a/apps/riak_cs/src/cs/riak_cs_stanchion_console.erl b/apps/riak_cs/src/riak_cs_stanchion_console.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_stanchion_console.erl rename to apps/riak_cs/src/riak_cs_stanchion_console.erl diff --git a/apps/riak_cs/src/cs/riak_cs_stats.erl b/apps/riak_cs/src/riak_cs_stats.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_stats.erl rename to apps/riak_cs/src/riak_cs_stats.erl diff --git a/apps/riak_cs/src/cs/riak_cs_storage.erl b/apps/riak_cs/src/riak_cs_storage.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_storage.erl rename to apps/riak_cs/src/riak_cs_storage.erl diff --git a/apps/riak_cs/src/cs/riak_cs_storage_console.erl b/apps/riak_cs/src/riak_cs_storage_console.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_storage_console.erl rename to apps/riak_cs/src/riak_cs_storage_console.erl diff --git a/apps/riak_cs/src/cs/riak_cs_storage_d.erl b/apps/riak_cs/src/riak_cs_storage_d.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_storage_d.erl rename to apps/riak_cs/src/riak_cs_storage_d.erl diff --git a/apps/riak_cs/src/cs/riak_cs_storage_mr.erl b/apps/riak_cs/src/riak_cs_storage_mr.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_storage_mr.erl rename to apps/riak_cs/src/riak_cs_storage_mr.erl diff --git a/apps/riak_cs/src/cs/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl similarity index 99% rename from apps/riak_cs/src/cs/riak_cs_sup.erl rename to apps/riak_cs/src/riak_cs_sup.erl index d66bc136c..2d3f2b897 100644 --- a/apps/riak_cs/src/cs/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -46,6 +46,8 @@ start_link() -> [supervisor:child_spec()]}}. init([]) -> catch dyntrace:p(), % NIF load trigger (R15B01+) + riak_cs_stats:init(), + stanchion_stats:init(), Options = [get_option_val(Option) || Option <- ?OPTIONS], init2(Options). @@ -58,7 +60,6 @@ init2(Options) -> M when M == auto; M == riak_cs_only; M == riak_cs_with_stanchion -> - riak_cs_stats:init(), pool_specs(Options) ++ rcs_process_specs() ++ web_specs(Options); _ -> [] diff --git a/apps/riak_cs/src/cs/riak_cs_user.erl b/apps/riak_cs/src/riak_cs_user.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_user.erl rename to apps/riak_cs/src/riak_cs_user.erl diff --git a/apps/riak_cs/src/cs/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_utils.erl rename to apps/riak_cs/src/riak_cs_utils.erl diff --git a/apps/riak_cs/src/cs/riak_cs_web.erl b/apps/riak_cs/src/riak_cs_web.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_web.erl rename to apps/riak_cs/src/riak_cs_web.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket.erl b/apps/riak_cs/src/riak_cs_wm_bucket.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_bucket.erl rename to apps/riak_cs/src/riak_cs_wm_bucket.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_acl.erl b/apps/riak_cs/src/riak_cs_wm_bucket_acl.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_acl.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_acl.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_delete.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_delete.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_location.erl b/apps/riak_cs/src/riak_cs_wm_bucket_location.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_location.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_location.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_policy.erl b/apps/riak_cs/src/riak_cs_wm_bucket_policy.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_policy.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_policy.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_request_payment.erl b/apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_request_payment.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_uploads.erl b/apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_uploads.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_versioning.erl b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_bucket_versioning.erl rename to apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_buckets.erl b/apps/riak_cs/src/riak_cs_wm_buckets.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_buckets.erl rename to apps/riak_cs/src/riak_cs_wm_buckets.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl b/apps/riak_cs/src/riak_cs_wm_common.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_common.erl rename to apps/riak_cs/src/riak_cs_wm_common.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_error_handler.erl b/apps/riak_cs/src/riak_cs_wm_error_handler.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_error_handler.erl rename to apps/riak_cs/src/riak_cs_wm_error_handler.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_not_implemented.erl b/apps/riak_cs/src/riak_cs_wm_not_implemented.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_not_implemented.erl rename to apps/riak_cs/src/riak_cs_wm_not_implemented.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_object.erl rename to apps/riak_cs/src/riak_cs_wm_object.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_acl.erl b/apps/riak_cs/src/riak_cs_wm_object_acl.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_object_acl.erl rename to apps/riak_cs/src/riak_cs_wm_object_acl.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload.erl b/apps/riak_cs/src/riak_cs_wm_object_upload.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload.erl rename to apps/riak_cs/src/riak_cs_wm_object_upload.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_object_upload_part.erl rename to apps/riak_cs/src/riak_cs_wm_object_upload_part.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_object_versions.erl b/apps/riak_cs/src/riak_cs_wm_object_versions.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_object_versions.erl rename to apps/riak_cs/src/riak_cs_wm_object_versions.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_objects.erl b/apps/riak_cs/src/riak_cs_wm_objects.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_objects.erl rename to apps/riak_cs/src/riak_cs_wm_objects.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_ping.erl b/apps/riak_cs/src/riak_cs_wm_ping.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_ping.erl rename to apps/riak_cs/src/riak_cs_wm_ping.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_stats.erl b/apps/riak_cs/src/riak_cs_wm_stats.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_stats.erl rename to apps/riak_cs/src/riak_cs_wm_stats.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_usage.erl b/apps/riak_cs/src/riak_cs_wm_usage.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_usage.erl rename to apps/riak_cs/src/riak_cs_wm_usage.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_user.erl b/apps/riak_cs/src/riak_cs_wm_user.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_user.erl rename to apps/riak_cs/src/riak_cs_wm_user.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_users.erl b/apps/riak_cs/src/riak_cs_wm_users.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_users.erl rename to apps/riak_cs/src/riak_cs_wm_users.erl diff --git a/apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl similarity index 100% rename from apps/riak_cs/src/cs/wm/riak_cs_wm_utils.erl rename to apps/riak_cs/src/riak_cs_wm_utils.erl diff --git a/apps/riak_cs/src/cs/riak_cs_xml.erl b/apps/riak_cs/src/riak_cs_xml.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_xml.erl rename to apps/riak_cs/src/riak_cs_xml.erl diff --git a/apps/riak_cs/src/cs/riak_cs_yessir_riak_client.erl b/apps/riak_cs/src/riak_cs_yessir_riak_client.erl similarity index 100% rename from apps/riak_cs/src/cs/riak_cs_yessir_riak_client.erl rename to apps/riak_cs/src/riak_cs_yessir_riak_client.erl diff --git a/apps/riak_cs/src/stanchion/stanchion_acl_utils.erl b/apps/riak_cs/src/stanchion_acl_utils.erl similarity index 100% rename from apps/riak_cs/src/stanchion/stanchion_acl_utils.erl rename to apps/riak_cs/src/stanchion_acl_utils.erl diff --git a/apps/riak_cs/src/stanchion/stanchion_auth.erl b/apps/riak_cs/src/stanchion_auth.erl similarity index 100% rename from apps/riak_cs/src/stanchion/stanchion_auth.erl rename to apps/riak_cs/src/stanchion_auth.erl diff --git a/apps/riak_cs/src/stanchion/stanchion_blockall_auth.erl b/apps/riak_cs/src/stanchion_blockall_auth.erl similarity index 100% rename from apps/riak_cs/src/stanchion/stanchion_blockall_auth.erl rename to apps/riak_cs/src/stanchion_blockall_auth.erl diff --git a/apps/riak_cs/src/stanchion/stanchion_migration.erl b/apps/riak_cs/src/stanchion_migration.erl similarity index 99% rename from apps/riak_cs/src/stanchion/stanchion_migration.erl rename to apps/riak_cs/src/stanchion_migration.erl index fe018eefe..58b8a6940 100644 --- a/apps/riak_cs/src/stanchion/stanchion_migration.erl +++ b/apps/riak_cs/src/stanchion_migration.erl @@ -67,7 +67,6 @@ adopt_stanchion() -> ThisHostAddr = riak_cs_utils:this_host_addr(), {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), start_stanchion_here(), - stanchion_stats:init(), ok = save_stanchion_data(Pbc, {ThisHostAddr, Port}), apply_stanchion_details({ThisHostAddr, Port}), ok = riakc_pb_socket:stop(Pbc), diff --git a/apps/riak_cs/src/stanchion/stanchion_multipart.erl b/apps/riak_cs/src/stanchion_multipart.erl similarity index 100% rename from apps/riak_cs/src/stanchion/stanchion_multipart.erl rename to apps/riak_cs/src/stanchion_multipart.erl diff --git a/apps/riak_cs/src/stanchion/stanchion_passthru_auth.erl b/apps/riak_cs/src/stanchion_passthru_auth.erl similarity index 100% rename from apps/riak_cs/src/stanchion/stanchion_passthru_auth.erl rename to apps/riak_cs/src/stanchion_passthru_auth.erl diff --git a/apps/riak_cs/src/stanchion/stanchion_response.erl b/apps/riak_cs/src/stanchion_response.erl similarity index 100% rename from apps/riak_cs/src/stanchion/stanchion_response.erl rename to apps/riak_cs/src/stanchion_response.erl diff --git a/apps/riak_cs/src/stanchion/stanchion_server.erl b/apps/riak_cs/src/stanchion_server.erl similarity index 100% rename from apps/riak_cs/src/stanchion/stanchion_server.erl rename to apps/riak_cs/src/stanchion_server.erl diff --git a/apps/riak_cs/src/stanchion/stanchion_server_sup.erl b/apps/riak_cs/src/stanchion_server_sup.erl similarity index 100% rename from apps/riak_cs/src/stanchion/stanchion_server_sup.erl rename to apps/riak_cs/src/stanchion_server_sup.erl diff --git a/apps/riak_cs/src/stanchion/stanchion_stats.erl b/apps/riak_cs/src/stanchion_stats.erl similarity index 99% rename from apps/riak_cs/src/stanchion/stanchion_stats.erl rename to apps/riak_cs/src/stanchion_stats.erl index 0930bba60..5fb06c69b 100644 --- a/apps/riak_cs/src/stanchion/stanchion_stats.erl +++ b/apps/riak_cs/src/stanchion_stats.erl @@ -52,6 +52,7 @@ duration_metrics() -> %% Riak PB client, per key operations [riakc, get_cs_bucket], [riakc, put_cs_bucket], %% Always strong put + [riakc, get_cs_user], [riakc, get_cs_user_strong], [riakc, put_cs_user], [riakc, get_manifest], diff --git a/apps/riak_cs/src/stanchion/stanchion_sup.erl b/apps/riak_cs/src/stanchion_sup.erl similarity index 100% rename from apps/riak_cs/src/stanchion/stanchion_sup.erl rename to apps/riak_cs/src/stanchion_sup.erl diff --git a/apps/riak_cs/src/stanchion/stanchion_utils.erl b/apps/riak_cs/src/stanchion_utils.erl similarity index 98% rename from apps/riak_cs/src/stanchion/stanchion_utils.erl rename to apps/riak_cs/src/stanchion_utils.erl index b74caf37c..4ec6645bd 100644 --- a/apps/riak_cs/src/stanchion/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion_utils.erl @@ -56,6 +56,7 @@ -include("moss.hrl"). -include_lib("riakc/include/riakc.hrl"). -include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). +-include_lib("kernel/include/logger.hrl"). -define(EMAIL_INDEX, <<"email_bin">>). -define(ID_INDEX, <<"c_id_bin">>). @@ -134,7 +135,7 @@ bucket_record(Name, Operation) -> modification_time=os:timestamp()}. -%% @doc Attmpt to create a new user +%% @doc Attempt to create a new user -spec create_user([{term(), term()}]) -> ok | {error, riak_connect_failed() | term()}. create_user(UserFields) -> UserName = binary_to_list(proplists:get_value(<<"name">>, UserFields, <<>>)), @@ -155,11 +156,12 @@ create_user(UserFields) -> key_secret=KeySecret, canonical_id=CanonicalId}, save_user(User, RiakPid); - {false, Reason1} -> - {error, Reason1} + {false, _} -> + logger:info("Refusing to create an existing user with email ~s", [Email]), + {error, user_already_exists} end - catch T:E -> - logger:error("Error on creating user ~s: ~p", [KeyId, {T, E}]), + catch T:E:ST -> + logger:error("Error on creating user ~s: ~p. Stacktrace: ~p", [KeyId, {T, E}, ST]), {error, {T, E}} after close_riak_connection(RiakPid) @@ -716,7 +718,7 @@ email_available(Email_, RiakPid) -> Email = iolist_to_binary([Email_]), {Res, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:get_index_eq(RiakPid, ?USER_BUCKET, ?EMAIL_INDEX, Email)), - stanchion_stats:update([riakc, get_user_by_index], TAT), + riak_cs_stats:update([riakc, get_user_by_index], TAT), case Res of {ok, ?INDEX_RESULTS{keys=[]}} -> true; @@ -778,23 +780,21 @@ get_value(BucketName, Key, RiakPid) -> <<"unknown">> end. -%% @doc Save information about a user --spec save_user(moss_user(), pid()) -> ok. save_user(User, RiakPid) -> Indexes = [{?EMAIL_INDEX, User?MOSS_USER.email}, {?ID_INDEX, User?MOSS_USER.canonical_id}], Meta = dict:store(?MD_INDEX, Indexes, dict:new()), Obj = riakc_obj:new(?USER_BUCKET, iolist_to_binary(User?MOSS_USER.key_id), term_to_binary(User)), UserObj = riakc_obj:update_metadata(Obj, Meta), - %% @TODO Error handling {Res, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:put(RiakPid, UserObj)), - stanchion_stats:update([riakc, put_cs_user], TAT), - Res. - -%% @doc Save information about a Riak CS user --spec save_user(boolean(), rcs_user(), riakc_obj:riakc_obj(), pid()) -> + case Res of + ok -> + stanchion_stats:update([riakc, put_cs_user], TAT); + {error, Reason} -> + logger:error("Failed to save user: Reason", [Reason]), + Res + end. - ok | {error, term()}. save_user(true, User=?RCS_USER{email=Email}, UserObj, RiakPid) -> case email_available(Email, RiakPid) of true -> @@ -875,7 +875,7 @@ fetch_user(Key, RiakPid) -> weak_fetch_user(Key, RiakPid) -> WeakOptions = [{r, quorum}, {pr, one}, {notfound_ok, false}], {Res, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:get(RiakPid, ?USER_BUCKET, Key, WeakOptions)), - stanchion_stats:update([riakc, get_user], TAT), + stanchion_stats:update([riakc, get_cs_user], TAT), case Res of {ok, Obj} -> {ok, {Obj, false}}; diff --git a/apps/riak_cs/src/stanchion/stanchion_web.erl b/apps/riak_cs/src/stanchion_web.erl similarity index 100% rename from apps/riak_cs/src/stanchion/stanchion_web.erl rename to apps/riak_cs/src/stanchion_web.erl diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_acl.erl b/apps/riak_cs/src/stanchion_wm_acl.erl similarity index 100% rename from apps/riak_cs/src/stanchion/wm/stanchion_wm_acl.erl rename to apps/riak_cs/src/stanchion_wm_acl.erl diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl b/apps/riak_cs/src/stanchion_wm_bucket.erl similarity index 100% rename from apps/riak_cs/src/stanchion/wm/stanchion_wm_bucket.erl rename to apps/riak_cs/src/stanchion_wm_bucket.erl diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_buckets.erl b/apps/riak_cs/src/stanchion_wm_buckets.erl similarity index 100% rename from apps/riak_cs/src/stanchion/wm/stanchion_wm_buckets.erl rename to apps/riak_cs/src/stanchion_wm_buckets.erl diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_error_handler.erl b/apps/riak_cs/src/stanchion_wm_error_handler.erl similarity index 100% rename from apps/riak_cs/src/stanchion/wm/stanchion_wm_error_handler.erl rename to apps/riak_cs/src/stanchion_wm_error_handler.erl diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_ping.erl b/apps/riak_cs/src/stanchion_wm_ping.erl similarity index 100% rename from apps/riak_cs/src/stanchion/wm/stanchion_wm_ping.erl rename to apps/riak_cs/src/stanchion_wm_ping.erl diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl b/apps/riak_cs/src/stanchion_wm_policy.erl similarity index 100% rename from apps/riak_cs/src/stanchion/wm/stanchion_wm_policy.erl rename to apps/riak_cs/src/stanchion_wm_policy.erl diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_stats.erl b/apps/riak_cs/src/stanchion_wm_stats.erl similarity index 100% rename from apps/riak_cs/src/stanchion/wm/stanchion_wm_stats.erl rename to apps/riak_cs/src/stanchion_wm_stats.erl diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_user.erl b/apps/riak_cs/src/stanchion_wm_user.erl similarity index 100% rename from apps/riak_cs/src/stanchion/wm/stanchion_wm_user.erl rename to apps/riak_cs/src/stanchion_wm_user.erl diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_users.erl b/apps/riak_cs/src/stanchion_wm_users.erl similarity index 100% rename from apps/riak_cs/src/stanchion/wm/stanchion_wm_users.erl rename to apps/riak_cs/src/stanchion_wm_users.erl diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_utils.erl b/apps/riak_cs/src/stanchion_wm_utils.erl similarity index 100% rename from apps/riak_cs/src/stanchion/wm/stanchion_wm_utils.erl rename to apps/riak_cs/src/stanchion_wm_utils.erl diff --git a/apps/riak_cs/src/stanchion/wm/stanchion_wm_versioning.erl b/apps/riak_cs/src/stanchion_wm_versioning.erl similarity index 100% rename from apps/riak_cs/src/stanchion/wm/stanchion_wm_versioning.erl rename to apps/riak_cs/src/stanchion_wm_versioning.erl diff --git a/apps/riak_cs/src/cs/velvet.erl b/apps/riak_cs/src/velvet.erl similarity index 100% rename from apps/riak_cs/src/cs/velvet.erl rename to apps/riak_cs/src/velvet.erl diff --git a/apps/riak_cs/src/cs/velvet_auth.erl b/apps/riak_cs/src/velvet_auth.erl similarity index 100% rename from apps/riak_cs/src/cs/velvet_auth.erl rename to apps/riak_cs/src/velvet_auth.erl From 5a24da00de107a846504f8f92fe91abad9104fd4 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 4 Dec 2022 23:30:04 +0200 Subject: [PATCH 385/831] tiot/webmachine-1.11.2, with per-instance rewrite_module --- apps/riak_cs/src/riak_cs_sup.erl | 7 ++++--- apps/riak_cs/src/stanchion_sup.erl | 1 - rebar.config | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index 2d3f2b897..52e859144 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -35,11 +35,13 @@ admin_listener, ssl, admin_ssl, - {operation_mode, auto}, - {rewrite_module, ?S3_API_MOD}]). + {operation_mode, auto}]). -spec start_link() -> supervisor:startlink_ret(). start_link() -> + + RewriteMod = application:get_env(riak_cs, rewrite_module, ?S3_API_MOD), + ok = application:set_env(webmachine_mochiweb, rewrite_modules, [{object_web, RewriteMod}]), supervisor:start_link({local, ?MODULE}, ?MODULE, []). -spec init([]) -> {ok, {supervisor:sup_flags(), @@ -195,7 +197,6 @@ object_web_config(Options) -> {ip, IP}, {port, Port}, {nodelay, true}, - {rewrite_module, proplists:get_value(rewrite_module, Options)}, {error_handler, riak_cs_wm_error_handler}, {resource_module_option, submodule}] ++ maybe_add_ssl_opts(proplists:get_value(ssl, Options)). diff --git a/apps/riak_cs/src/stanchion_sup.erl b/apps/riak_cs/src/stanchion_sup.erl index 4225d938a..d95a85892 100644 --- a/apps/riak_cs/src/stanchion_sup.erl +++ b/apps/riak_cs/src/stanchion_sup.erl @@ -70,7 +70,6 @@ stanchion_process_specs() -> {port, Port}, {nodelay, true}, {log_dir, "log"}, - %% {rewrite_module, stanchion_wm_rewrite}, {error_handler, stanchion_wm_error_handler} ], WebConfig = diff --git a/rebar.config b/rebar.config index cf819da3f..c28234d01 100644 --- a/rebar.config +++ b/rebar.config @@ -21,15 +21,15 @@ {deps, [ {getopt, "1.0.2"} , {parse_trans, "3.4.1"} - , {webmachine, "1.11.1"} + , {webmachine, {git, "https://github.com/TI-Tokyo/webmachine.git", {tag, "1.11.2rc1"}}} , {mochiweb, "3.1.1"} , {uuid, "2.0.5", {pkg, uuid_erl}} , {exometer_core, "1.6.1"} , {riakc, {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.8+p1"}}} , {poolboy, {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {riak_repl_pb_api, {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.9"}}} - , {riak_cs_multibag, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.9rc1"}}} + , {riak_repl_pb_api, {git, "https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.9"}}} + , {riak_cs_multibag, {git, "https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.9rc1"}}} ] }. From beee6c28952108820ee1d252587a579d22e06537 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 4 Dec 2022 23:31:19 +0200 Subject: [PATCH 386/831] pedantically leave side effects out of riak_cs_sup:init/1 --- apps/riak_cs/src/riak_cs_sup.erl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index 52e859144..9c1fd6771 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -39,24 +39,29 @@ -spec start_link() -> supervisor:startlink_ret(). start_link() -> + catch dyntrace:p(), % NIF load trigger (R15B01+) + + riak_cs_stats:init(), + stanchion_stats:init(), + + {ok, Pbc} = riak_connection(), + ok = ensure_service_bucket_props(Pbc), + ok = riakc_pb_socket:stop(Pbc), RewriteMod = application:get_env(riak_cs, rewrite_module, ?S3_API_MOD), ok = application:set_env(webmachine_mochiweb, rewrite_modules, [{object_web, RewriteMod}]), + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + -spec init([]) -> {ok, {supervisor:sup_flags(), [supervisor:child_spec()]}}. init([]) -> - catch dyntrace:p(), % NIF load trigger (R15B01+) - riak_cs_stats:init(), - stanchion_stats:init(), Options = [get_option_val(Option) || Option <- ?OPTIONS], init2(Options). init2(Options) -> Mode = proplists:get_value(operation_mode, Options), - {ok, Pbc} = riak_connection(), - ok = ensure_service_bucket_props(Pbc), RCSChildren = case Mode of M when M == auto; @@ -66,7 +71,6 @@ init2(Options) -> _ -> [] end, - ok = riakc_pb_socket:stop(Pbc), {ok, {#{strategy => one_for_one, intensity => 10, period => 10}, RCSChildren From 27dcd0ab15bd16f12d6f386365c90bec2e24dac6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 4 Dec 2022 23:32:18 +0200 Subject: [PATCH 387/831] use local save_user/2 in stacnhion_utils --- apps/riak_cs/src/stanchion_utils.erl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/riak_cs/src/stanchion_utils.erl b/apps/riak_cs/src/stanchion_utils.erl index 4ec6645bd..f84aaed95 100644 --- a/apps/riak_cs/src/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion_utils.erl @@ -111,9 +111,9 @@ create_bucket(BucketFields) -> case OpResult1 of ok -> BucketRecord = bucket_record(Bucket, create), - {ok, User, UserObj} = riak_cs_user:get_user(OwnerId, Pbc), + {ok, User, _UserObj} = riak_cs_user:get_user(OwnerId, Pbc), UpdUser = update_user_buckets(add, User, BucketRecord), - riak_cs_user:save_user(UpdUser, UserObj, Pbc); + save_user(UpdUser, Pbc); {error, _} -> OpResult1 end, @@ -180,9 +180,9 @@ delete_bucket(Bucket, OwnerId) -> case OpResult1 of ok -> BucketRecord = bucket_record(Bucket, create), - {ok, User, UserObj} = riak_cs_user:get_user(OwnerId, Pbc), + {ok, User, _UserObj} = riak_cs_user:get_user(OwnerId, Pbc), UpdUser = update_user_buckets(delete, User, BucketRecord), - riak_cs_user:save_user(UpdUser, UserObj, Pbc); + save_user(UpdUser, Pbc); {error, _} -> OpResult1 end, From cc397fabcfa6f1475dd5be21e696a1d41bb93684 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 4 Dec 2022 23:33:56 +0200 Subject: [PATCH 388/831] update rebar.lock --- rebar.lock | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/rebar.lock b/rebar.lock index 68df5e70f..f5edb6853 100644 --- a/rebar.lock +++ b/rebar.lock @@ -41,7 +41,10 @@ 0}, {<<"setup">>,{pkg,<<"setup">>,<<"2.1.0">>},1}, {<<"uuid">>,{pkg,<<"uuid_erl">>,<<"2.0.5">>},0}, - {<<"webmachine">>,{pkg,<<"webmachine">>,<<"1.11.1">>},0}]}. + {<<"webmachine">>, + {git,"https://github.com/TI-Tokyo/webmachine.git", + {ref,"aab2de4ee77649a8722cb59bebf72c2c02cd57a0"}}, + 0}]}. [ {pkg_hash,[ {<<"bear">>, <<"430419C1126B477686CDE843E88BA0F2C7DC5CDF0881C677500074F704339A99">>}, @@ -53,8 +56,7 @@ {<<"parse_trans">>, <<"6E6AA8167CB44CC8F39441D05193BE6E6F4E7C2946CB2759F015F8C56B76E5FF">>}, {<<"quickrand">>, <<"06FCAD85CB47D5C85C51D6BC9C84A082501BA098A89D64AD0A2F69599E034C04">>}, {<<"setup">>, <<"05F69185A5EB71474C9BC6BA892565651EC7507791F85632B7B914DBFE130510">>}, - {<<"uuid">>, <<"60FAEEB7EDFD40847ED13CB0DD1044BAABE4E79A00C0CA9C4D13A073914B1016">>}, - {<<"webmachine">>, <<"422BEAD629F3D6C10FB0F24BE4CEE9648338F90099072AE091FADF86BA70C53F">>}]}, + {<<"uuid">>, <<"60FAEEB7EDFD40847ED13CB0DD1044BAABE4E79A00C0CA9C4D13A073914B1016">>}]}, {pkg_hash_ext,[ {<<"bear">>, <<"157B67901ADF84FF0DA6EAE035CA1292A0AC18AA55148154D8C582B2C68959DB">>}, {<<"exometer_core">>, <<"EC1AF0A961F29B3854F61B594C79454D26AC7B1F6CB89BBF0688BFF65F6A6D6B">>}, @@ -65,6 +67,5 @@ {<<"parse_trans">>, <<"620A406CE75DADA827B82E453C19CF06776BE266F5A67CFF34E1EF2CBB60E49A">>}, {<<"quickrand">>, <<"252CF0493570EBF1A58985CB71990982CDDCD4396B6427F1E10CF58924C1C052">>}, {<<"setup">>, <<"EFD072578F0CF85BEA96CAAFFC7ADB0992398272522660A136E10567377071C5">>}, - {<<"uuid">>, <<"E54373262CA88401689277947C54B95E9ECBC977BD5C57C9DD44AD9DA278E360">>}, - {<<"webmachine">>, <<"4914961217736701CADA1345D7C79C6DB50A636CF7BC6C757DE923B7C7D70B21">>}]} + {<<"uuid">>, <<"E54373262CA88401689277947C54B95E9ECBC977BD5C57C9DD44AD9DA278E360">>}]} ]. From 255b87179ec1f440c53f1d0b2d3af3e10a676772 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Dec 2022 12:29:00 +0200 Subject: [PATCH 389/831] bump deps --- rebar.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index c28234d01..2b4d3c6e0 100644 --- a/rebar.config +++ b/rebar.config @@ -21,12 +21,12 @@ {deps, [ {getopt, "1.0.2"} , {parse_trans, "3.4.1"} - , {webmachine, {git, "https://github.com/TI-Tokyo/webmachine.git", {tag, "1.11.2rc1"}}} , {mochiweb, "3.1.1"} , {uuid, "2.0.5", {pkg, uuid_erl}} + , {poolboy, "1.5.2"} , {exometer_core, "1.6.1"} + , {webmachine, {git, "https://github.com/TI-Tokyo/webmachine.git", {tag, "1.11.2rc2"}}} , {riakc, {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.8+p1"}}} - , {poolboy, {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} , {riak_repl_pb_api, {git, "https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.9"}}} , {riak_cs_multibag, {git, "https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.9rc1"}}} From e277ab650b2f2ab953cb10477f0503d807a52bfc Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Dec 2022 13:43:50 +0200 Subject: [PATCH 390/831] separate contexts for riak_cs and stanchion WMs --- apps/riak_cs/include/riak_cs.hrl | 60 ++--- apps/riak_cs/include/stanchion.hrl | 6 +- apps/riak_cs/src/lib/exprec.erl | 16 +- apps/riak_cs/src/riak_cs_copy_object.erl | 16 +- apps/riak_cs/src/riak_cs_keystone_auth.erl | 8 +- apps/riak_cs/src/riak_cs_mp_utils.erl | 4 +- apps/riak_cs/src/riak_cs_oos_response.erl | 4 +- apps/riak_cs/src/riak_cs_quota.erl | 6 +- apps/riak_cs/src/riak_cs_s3_auth.erl | 16 +- apps/riak_cs/src/riak_cs_s3_response.erl | 4 +- apps/riak_cs/src/riak_cs_simple_bwlimiter.erl | 2 +- apps/riak_cs/src/riak_cs_simple_quota.erl | 10 +- apps/riak_cs/src/riak_cs_wm_bucket.erl | 57 ++--- apps/riak_cs/src/riak_cs_wm_bucket_acl.erl | 32 +-- apps/riak_cs/src/riak_cs_wm_bucket_delete.erl | 26 +-- .../src/riak_cs_wm_bucket_location.erl | 12 +- apps/riak_cs/src/riak_cs_wm_bucket_policy.erl | 46 ++-- .../src/riak_cs_wm_bucket_request_payment.erl | 12 +- .../riak_cs/src/riak_cs_wm_bucket_uploads.erl | 24 +- .../src/riak_cs_wm_bucket_versioning.erl | 32 +-- apps/riak_cs/src/riak_cs_wm_buckets.erl | 4 +- apps/riak_cs/src/riak_cs_wm_common.erl | 220 +++++++++--------- .../src/riak_cs_wm_not_implemented.erl | 4 +- apps/riak_cs/src/riak_cs_wm_object.erl | 141 ++++++----- apps/riak_cs/src/riak_cs_wm_object_acl.erl | 56 ++--- apps/riak_cs/src/riak_cs_wm_object_upload.erl | 40 ++-- .../src/riak_cs_wm_object_upload_part.erl | 108 +++++---- .../src/riak_cs_wm_object_versions.erl | 12 +- apps/riak_cs/src/riak_cs_wm_objects.erl | 12 +- apps/riak_cs/src/riak_cs_wm_stats.erl | 14 +- apps/riak_cs/src/riak_cs_wm_usage.erl | 4 +- apps/riak_cs/src/riak_cs_wm_user.erl | 49 ++-- apps/riak_cs/src/riak_cs_wm_users.erl | 16 +- apps/riak_cs/src/riak_cs_wm_utils.erl | 162 ++++++------- apps/riak_cs/src/stanchion_wm_acl.erl | 4 +- apps/riak_cs/src/stanchion_wm_bucket.erl | 4 +- apps/riak_cs/src/stanchion_wm_buckets.erl | 4 +- apps/riak_cs/src/stanchion_wm_policy.erl | 6 +- apps/riak_cs/src/stanchion_wm_stats.erl | 4 +- apps/riak_cs/src/stanchion_wm_user.erl | 4 +- apps/riak_cs/src/stanchion_wm_users.erl | 4 +- apps/riak_cs/src/stanchion_wm_versioning.erl | 4 +- 42 files changed, 635 insertions(+), 634 deletions(-) diff --git a/apps/riak_cs/include/riak_cs.hrl b/apps/riak_cs/include/riak_cs.hrl index 79dee1e83..e77fe842a 100644 --- a/apps/riak_cs/include/riak_cs.hrl +++ b/apps/riak_cs/include/riak_cs.hrl @@ -29,36 +29,36 @@ -type riak_client() :: pid(). --record(context, {start_time :: undefined | erlang:timestamp(), - auth_bypass :: atom(), - user :: undefined | moss_user(), - user_object :: undefined | riakc_obj:riakc_obj(), - bucket :: undefined | binary(), - acl :: 'undefined' | acl(), - requested_perm :: undefined | acl_perm(), - riak_client :: undefined | riak_client(), - rc_pool :: atom(), % pool name which riak_client belongs to - auto_rc_close = true :: boolean(), - submodule :: atom(), - exports_fun :: undefined | function(), - auth_module :: atom(), - response_module :: atom(), - policy_module :: atom(), - %% Key for API rate and latency stats. - %% If `stats_prefix' or `stats_key' is `no_stats', no stats - %% will be gathered by riak_cs_wm_common. - %% The prefix is defined by `stats_prefix()' callback of sub-module. - %% If sub-module provides only `stats_prefix' (almost the case), - %% stats key is [Prefix, HttpMethod]. Otherwise, sum-module - %% can set specific `stats_key' by any callback that returns - %% this context. - stats_prefix = no_stats :: atom(), - stats_key=prefix_and_method :: prefix_and_method | - no_stats | - riak_cs_stats:key(), - local_context :: term(), - api :: atom() - }). +-record(rcs_context, {start_time :: undefined | erlang:timestamp(), + auth_bypass :: atom(), + user :: undefined | moss_user(), + user_object :: undefined | riakc_obj:riakc_obj(), + bucket :: undefined | binary(), + acl :: 'undefined' | acl(), + requested_perm :: undefined | acl_perm(), + riak_client :: undefined | riak_client(), + rc_pool :: atom(), % pool name which riak_client belongs to + auto_rc_close = true :: boolean(), + submodule :: atom(), + exports_fun :: undefined | function(), + auth_module :: atom(), + response_module :: atom(), + policy_module :: atom(), + %% Key for API rate and latency stats. + %% If `stats_prefix' or `stats_key' is `no_stats', no stats + %% will be gathered by riak_cs_wm_common. + %% The prefix is defined by `stats_prefix()' callback of sub-module. + %% If sub-module provides only `stats_prefix' (almost the case), + %% stats key is [Prefix, HttpMethod]. Otherwise, sum-module + %% can set specific `stats_key' by any callback that returns + %% this context. + stats_prefix = no_stats :: atom(), + stats_key=prefix_and_method :: prefix_and_method | + no_stats | + riak_cs_stats:key(), + local_context :: term(), + api :: atom() + }). -record(key_context, {manifest :: undefined | 'notfound' | lfs_manifest(), upload_id :: undefined | binary(), diff --git a/apps/riak_cs/include/stanchion.hrl b/apps/riak_cs/include/stanchion.hrl index 8e2c8235c..295febcc9 100644 --- a/apps/riak_cs/include/stanchion.hrl +++ b/apps/riak_cs/include/stanchion.hrl @@ -22,9 +22,9 @@ -ifndef(STANCHION_HRL). -define(STANCHION_HRL, included). --record(context, {auth_bypass :: boolean(), - bucket :: undefined | binary(), - owner_id :: undefined | all | string()}). +-record(stanchion_context, {auth_bypass :: boolean(), + bucket :: undefined | binary(), + owner_id :: undefined | all | string()}). -define(TURNAROUND_TIME(Call), begin diff --git a/apps/riak_cs/src/lib/exprec.erl b/apps/riak_cs/src/lib/exprec.erl index 61f39932b..23abbe60a 100644 --- a/apps/riak_cs/src/lib/exprec.erl +++ b/apps/riak_cs/src/lib/exprec.erl @@ -22,13 +22,15 @@ -module(exprec). -include("riak_cs.hrl"). +-include("stanchion.hrl"). -compile(export_all). -compile(nowarn_export_all). -dialyzer([ {nowarn_function, fromlist_access_v1/1} - , {nowarn_function, fromlist_context/1} + , {nowarn_function, fromlist_rcs_context/1} , {nowarn_function, fromlist_key_context/1} + , {nowarn_function, fromlist_stanchion_context/1} , {nowarn_function, fromlist_lfs_manifest_v2/1} , {nowarn_function, fromlist_lfs_manifest_v3/1} , {nowarn_function, fromlist_moss_bucket/1} @@ -41,8 +43,9 @@ , {nowarn_function, fromlist_part_manifest_v1/1} , {nowarn_function, fromlist_rcs_user_v2/1} , {nowarn_function, frommap_access_v1/1} - , {nowarn_function, frommap_context/1} + , {nowarn_function, frommap_rcs_context/1} , {nowarn_function, frommap_key_context/1} + , {nowarn_function, frommap_stanchion_context/1} , {nowarn_function, frommap_lfs_manifest_v2/1} , {nowarn_function, frommap_lfs_manifest_v3/1} , {nowarn_function, frommap_moss_bucket/1} @@ -55,8 +58,9 @@ , {nowarn_function, frommap_part_manifest_v1/1} , {nowarn_function, frommap_rcs_user_v2/1} , {nowarn_function, new_access_v1/1} - , {nowarn_function, new_context/1} + , {nowarn_function, new_rcs_context/1} , {nowarn_function, new_key_context/1} + , {nowarn_function, new_stanchion_context/1} , {nowarn_function, new_lfs_manifest_v2/1} , {nowarn_function, new_lfs_manifest_v3/1} , {nowarn_function, new_moss_bucket/1} @@ -69,8 +73,9 @@ , {nowarn_function, new_part_manifest_v1/1} , {nowarn_function, new_rcs_user_v2/1} , {nowarn_function, new_access_v1/0} - , {nowarn_function, new_context/0} + , {nowarn_function, new_rcs_context/0} , {nowarn_function, new_key_context/0} + , {nowarn_function, new_stanchion_context/0} , {nowarn_function, new_lfs_manifest_v2/0} , {nowarn_function, new_lfs_manifest_v3/0} , {nowarn_function, new_moss_bucket/0} @@ -90,8 +95,9 @@ , rcs_user_v2 , moss_bucket , moss_bucket_v1 - , context + , rcs_context , key_context + , stanchion_context , acl_v1 , acl_v2 , lfs_manifest_v2 diff --git a/apps/riak_cs/src/riak_cs_copy_object.erl b/apps/riak_cs/src/riak_cs_copy_object.erl index bea6d9846..67dd39cfd 100644 --- a/apps/riak_cs/src/riak_cs_copy_object.erl +++ b/apps/riak_cs/src/riak_cs_copy_object.erl @@ -45,8 +45,8 @@ %% * x-amz-copy-source-if-* stuff %% * bucket/object acl %% * bucket policy --spec test_condition_and_permission(riak_client(), lfs_manifest(), #wm_reqdata{}, #context{}) -> - {boolean()|{halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. +-spec test_condition_and_permission(riak_client(), lfs_manifest(), #wm_reqdata{}, #rcs_context{}) -> + {boolean()|{halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. test_condition_and_permission(RcPid, SrcManifest, RD, Ctx) -> ETag = riak_cs_manifest:etag(SrcManifest), @@ -61,10 +61,10 @@ test_condition_and_permission(RcPid, SrcManifest, RD, Ctx) -> end. %% @doc tests permission on acl, policy --spec authorize_on_src(riak_client(), lfs_manifest(), #wm_reqdata{}, #context{}) -> - {boolean()|{halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. +-spec authorize_on_src(riak_client(), lfs_manifest(), #wm_reqdata{}, #rcs_context{}) -> + {boolean()|{halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. authorize_on_src(RcPid, SrcManifest, RD, - #context{auth_module=AuthMod, local_context=LocalCtx} = Ctx) -> + #rcs_context{auth_module=AuthMod, local_context=LocalCtx} = Ctx) -> {SrcBucket, SrcKey} = SrcManifest?MANIFEST.bkey, {ok, SrcBucketObj} = riak_cs_bucket:fetch_bucket_object(SrcBucket, RcPid), {ok, SrcBucketAcl} = riak_cs_acl:bucket_acl(SrcBucketObj), @@ -85,9 +85,9 @@ authorize_on_src(RcPid, SrcManifest, RD, key = SrcKey, bucket_object = SrcBucketObj, manifest = SrcManifest}, - OtherCtx = Ctx#context{local_context=OtherLocalCtx, - acl=SrcBucketAcl, - user=User, user_object=UserObj}, + OtherCtx = Ctx#rcs_context{local_context=OtherLocalCtx, + acl=SrcBucketAcl, + user=User, user_object=UserObj}, %% Build fake ReqData for checking read access to the src object %% TODO: use unicode module for for key? or is this encoded? diff --git a/apps/riak_cs/src/riak_cs_keystone_auth.erl b/apps/riak_cs/src/riak_cs_keystone_auth.erl index 6179a8f48..cf085f832 100644 --- a/apps/riak_cs/src/riak_cs_keystone_auth.erl +++ b/apps/riak_cs/src/riak_cs_keystone_auth.erl @@ -41,15 +41,15 @@ %% Public API %% =================================================================== --spec identify(#wm_reqdata{}, #context{}) -> failed | {string() | undefined , string()}. -identify(RD, #context{api=s3}) -> +-spec identify(#wm_reqdata{}, #rcs_context{}) -> failed | {string() | undefined , string()}. +identify(RD, #rcs_context{api=s3}) -> validate_token(s3, RD); -identify(RD, #context{api=oos}) -> +identify(RD, #rcs_context{api=oos}) -> validate_token(oos, wrq:get_req_header("x-auth-token", RD)). -spec authenticate(rcs_user(), {string(), term()}|tuple(), - #wm_reqdata{}, #context{}) -> + #wm_reqdata{}, #rcs_context{}) -> ok | {error, invalid_authentication}. authenticate(_User, {_, TokenItems}, _RD, _Ctx) -> %% @TODO Expand authentication check for non-operators who may diff --git a/apps/riak_cs/src/riak_cs_mp_utils.erl b/apps/riak_cs/src/riak_cs_mp_utils.erl index 6b184086f..3cdc0ff1e 100644 --- a/apps/riak_cs/src/riak_cs_mp_utils.erl +++ b/apps/riak_cs/src/riak_cs_mp_utils.erl @@ -254,7 +254,7 @@ make_content_types_accepted(CT, RD, Ctx, Callback) when CT =:= undefined; CT =:= [] -> make_content_types_accepted("application/octet-stream", RD, Ctx, Callback); -make_content_types_accepted(CT, RD, Ctx = #context{local_context = LocalCtx0}, Callback) -> +make_content_types_accepted(CT, RD, Ctx = #rcs_context{local_context = LocalCtx0}, Callback) -> %% This was shamelessly ripped out of %% https://github.com/basho/riak_kv/blob/0d91ca641a309f2962a216daa0cee869c82ffe26/src/riak_kv_wm_object.erl#L492 {Media, _Params} = mochiweb_util:parse_header(CT), @@ -262,7 +262,7 @@ make_content_types_accepted(CT, RD, Ctx = #context{local_context = LocalCtx0}, C [_Type, _Subtype] -> %% accept whatever the user says LocalCtx = LocalCtx0#key_context{putctype = Media}, - {[{Media, Callback}], RD, Ctx#context{local_context = LocalCtx}}; + {[{Media, Callback}], RD, Ctx#rcs_context{local_context = LocalCtx}}; _ -> {[], wrq:set_resp_header( diff --git a/apps/riak_cs/src/riak_cs_oos_response.erl b/apps/riak_cs/src/riak_cs_oos_response.erl index bc2bf57b3..2cc06a0e6 100644 --- a/apps/riak_cs/src/riak_cs_oos_response.erl +++ b/apps/riak_cs/src/riak_cs_oos_response.erl @@ -32,8 +32,8 @@ -include("list_objects.hrl"). -include_lib("webmachine/include/webmachine.hrl"). --spec respond(term(), #wm_reqdata{}, #context{}) -> - {string() | {halt, non_neg_integer()} , #wm_reqdata{}, #context{}}. +-spec respond(term(), #wm_reqdata{}, #rcs_context{}) -> + {string() | {halt, non_neg_integer()} , #wm_reqdata{}, #rcs_context{}}. respond(?LBRESP{}=Response, RD, Ctx) -> BucketsDoc = [begin diff --git a/apps/riak_cs/src/riak_cs_quota.erl b/apps/riak_cs/src/riak_cs_quota.erl index 02fcc7068..b9aeb1133 100644 --- a/apps/riak_cs/src/riak_cs_quota.erl +++ b/apps/riak_cs/src/riak_cs_quota.erl @@ -93,13 +93,13 @@ | string()|binary(), %% Other authenticated user Access :: access(), %% including accessor, bucket, key, RD Context::term()) -> - {ok, Request::#wm_reqdata{}, Context::#context{}} | + {ok, Request::#wm_reqdata{}, Context::#rcs_context{}} | {error, Reason::term()}. -callback error_response(Reason :: term(), - #wm_reqdata{}, #context{}) -> + #wm_reqdata{}, #rcs_context{}) -> {non_neg_integer() | {non_neg_integer(), string()}, - #wm_reqdata{}, #context{}}. + #wm_reqdata{}, #rcs_context{}}. %% @doc for now, to know the accessor, RD should be retrieved from %% headers in LogData (not knowing whether he's authenticated or not) diff --git a/apps/riak_cs/src/riak_cs_s3_auth.erl b/apps/riak_cs/src/riak_cs_s3_auth.erl index 072b4f0f3..3767330ef 100644 --- a/apps/riak_cs/src/riak_cs_s3_auth.erl +++ b/apps/riak_cs/src/riak_cs_s3_auth.erl @@ -52,10 +52,10 @@ %% Public API %% =================================================================== --spec identify(RD::term(), #context{}) -> - {string() | undefined, - string() | {v4, v4_attrs()} | undefined} | - {failed, Reason::atom()}. +-spec identify(RD::term(), #rcs_context{}) -> + {string() | undefined, + string() | {v4, v4_attrs()} | undefined} | + {failed, Reason::atom()}. identify(RD,_Ctx) -> case wrq:get_req_header("authorization", RD) of undefined -> @@ -64,8 +64,8 @@ identify(RD,_Ctx) -> parse_auth_header(AuthHeader) end. --spec authenticate(rcs_user(), string() | {v4, v4_attrs()}, RD::term(), #context{}) -> - ok | {error, atom()}. +-spec authenticate(rcs_user(), string() | {v4, v4_attrs()}, RD::term(), #rcs_context{}) -> + ok | {error, atom()}. authenticate(User, Signature, RD, Ctx) -> case wrq:get_req_header("authorization", RD) of undefined -> @@ -80,8 +80,8 @@ authenticate(User, Signature, RD, Ctx) -> end end. --spec authenticate_1(rcs_user(), string() | {v4, v4_attrs()}, RD::term(), #context{}) -> - ok | {error, atom()}. +-spec authenticate_1(rcs_user(), string() | {v4, v4_attrs()}, RD::term(), #rcs_context{}) -> + ok | {error, atom()}. authenticate_1(User, {v4, Attributes}, RD, _Ctx) -> authenticate_v4(User, Attributes, RD); authenticate_1(User, Signature, RD, _Ctx) -> diff --git a/apps/riak_cs/src/riak_cs_s3_response.erl b/apps/riak_cs/src/riak_cs_s3_response.erl index 653a9a103..47fe98ad0 100644 --- a/apps/riak_cs/src/riak_cs_s3_response.erl +++ b/apps/riak_cs/src/riak_cs_s3_response.erl @@ -228,8 +228,8 @@ status_code(ErrorName) -> logger:warning("Unknown error: ~p", [ErrorName]), 503. --spec respond(term(), #wm_reqdata{}, #context{}) -> - {binary(), #wm_reqdata{}, #context{}}. +-spec respond(term(), #wm_reqdata{}, #rcs_context{}) -> + {binary(), #wm_reqdata{}, #rcs_context{}}. respond(?LBRESP{} = Response, RD, Ctx) -> {riak_cs_xml:to_xml(Response), RD, Ctx}; respond({ok, ?LORESP{} = Response}, RD, Ctx) -> diff --git a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl index ceebe1266..ee7187b6b 100644 --- a/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl +++ b/apps/riak_cs/src/riak_cs_simple_bwlimiter.erl @@ -124,7 +124,7 @@ refresher() -> refresher() end. --spec allow(rcs_user(), access(), #context{}) -> {ok, #wm_reqdata{}, #context{}}. +-spec allow(rcs_user(), access(), #rcs_context{}) -> {ok, #wm_reqdata{}, #rcs_context{}}. allow(Owner, #access_v1{req = RD} = _Access, Ctx) -> OwnerKey = list_to_binary(riak_cs_user:key_id(Owner)), diff --git a/apps/riak_cs/src/riak_cs_simple_quota.erl b/apps/riak_cs/src/riak_cs_simple_quota.erl index d4186aaa4..54a1efb86 100644 --- a/apps/riak_cs/src/riak_cs_simple_quota.erl +++ b/apps/riak_cs/src/riak_cs_simple_quota.erl @@ -114,8 +114,8 @@ refresher() -> %% @doc Only puts affected --spec allow(rcs_user(), access(), #context{}) -> - {ok, #wm_reqdata{}, #context{}} | +-spec allow(rcs_user(), access(), #rcs_context{}) -> + {ok, #wm_reqdata{}, #rcs_context{}} | {error, {disk_quota, non_neg_integer(), non_neg_integer()}}. allow(Owner, #access_v1{req = RD, method = 'PUT'} = _Access, Ctx) -> OwnerKey = iolist_to_binary(riak_cs_user:key_id(Owner)), @@ -141,11 +141,11 @@ allow(Owner, #access_v1{req = RD, method = 'PUT'} = _Access, Ctx) -> allow(_Owner, #access_v1{req = RD} = _Access, Ctx) -> {ok, RD, Ctx}. --spec maybe_usage(binary(), #context{}) -> non_neg_integer(). -maybe_usage(_, _Ctx = #context{riak_client=undefined}) -> +-spec maybe_usage(binary(), #rcs_context{}) -> non_neg_integer(). +maybe_usage(_, _Ctx = #rcs_context{riak_client=undefined}) -> %% can't happen here error(no_riak_client); -maybe_usage(User0, _Ctx = #context{riak_client=RiakClient}) -> +maybe_usage(User0, _Ctx = #rcs_context{riak_client=RiakClient}) -> User = binary_to_list(User0), Usage = case get_latest_usage(RiakClient, User) of {error, notfound} -> diff --git a/apps/riak_cs/src/riak_cs_wm_bucket.erl b/apps/riak_cs/src/riak_cs_wm_bucket.erl index bd1cabd4c..1bd148730 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket.erl @@ -42,7 +42,7 @@ stats_prefix() -> bucket. allowed_methods() -> ['HEAD', 'PUT', 'DELETE']. --spec malformed_request(#wm_reqdata{}, #context{}) -> {false, #wm_reqdata{}, #context{}}. +-spec malformed_request(#wm_reqdata{}, #rcs_context{}) -> {false, #wm_reqdata{}, #rcs_context{}}. malformed_request(RD, Ctx) -> case riak_cs_wm_utils:has_canned_acl_and_header_grant(RD) of true -> @@ -52,17 +52,17 @@ malformed_request(RD, Ctx) -> {false, RD, Ctx} end. --spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_provided(RD, Ctx) -> {[{"application/xml", to_xml}], RD, Ctx}. --spec content_types_accepted(#wm_reqdata{}, #context{}) -> - {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_accepted(#wm_reqdata{}, #rcs_context{}) -> + {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_accepted(RD, Ctx) -> content_types_accepted(wrq:get_req_header("content-type", RD), RD, Ctx). --spec content_types_accepted(undefined | string(), #wm_reqdata{}, #context{}) -> - {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_accepted(undefined | string(), #wm_reqdata{}, #rcs_context{}) -> + {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_accepted(CT, RD, Ctx) when CT =:= undefined; CT =:= [] -> content_types_accepted("application/octet-stream", RD, Ctx); @@ -70,14 +70,14 @@ content_types_accepted(CT, RD, Ctx) -> {Media, _Params} = mochiweb_util:parse_header(CT), {[{Media, add_acl_to_context_then_accept}], RD, Ctx}. --spec authorize(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. -authorize(RD, #context{user=User}=Ctx) -> +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> {boolean(), #wm_reqdata{}, #rcs_context{}}. +authorize(RD, #rcs_context{user=User}=Ctx) -> Method = wrq:method(RD), RequestedAccess = riak_cs_acl_utils:requested_access(Method, false), Bucket = list_to_binary(wrq:path_info(bucket, RD)), - PermCtx = Ctx#context{bucket=Bucket, - requested_perm=RequestedAccess}, + PermCtx = Ctx#rcs_context{bucket=Bucket, + requested_perm=RequestedAccess}, case {Method, RequestedAccess} of {_, 'WRITE'} when User == undefined -> @@ -92,14 +92,14 @@ authorize(RD, #context{user=User}=Ctx) -> end. --spec to_xml(#wm_reqdata{}, #context{}) -> - {binary() | {'halt', term()}, #wm_reqdata{}, #context{}}. +-spec to_xml(#wm_reqdata{}, #rcs_context{}) -> + {binary() | {'halt', term()}, #wm_reqdata{}, #rcs_context{}}. to_xml(RD, Ctx) -> handle_read_request(RD, Ctx). %% @private -handle_read_request(RD, Ctx=#context{user=User, - bucket=Bucket}) -> +handle_read_request(RD, Ctx=#rcs_context{user=User, + bucket=Bucket}) -> riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_head">>, [], [riak_cs_wm_utils:extract_name(User), Bucket]), %% override the content-type on HEAD @@ -118,16 +118,17 @@ handle_read_request(RD, Ctx=#context{user=User, end. %% @doc Process request body on `PUT' request. --spec accept_body(#wm_reqdata{}, #context{}) -> {{halt, integer()}, #wm_reqdata{}, #context{}}. -accept_body(RD, Ctx=#context{user=User, - acl=ACL, - user_object=UserObj, - bucket=Bucket, - response_module=ResponseMod, - riak_client=RcPid}) -> +-spec accept_body(#wm_reqdata{}, #rcs_context{}) -> {{halt, integer()}, #wm_reqdata{}, #rcs_context{}}. +accept_body(RD, Ctx=#rcs_context{user=User, + acl=ACL, + user_object=UserObj, + bucket=Bucket, + response_module=ResponseMod, + riak_client=RcPid}) -> riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_put">>, [], [riak_cs_wm_utils:extract_name(User), Bucket]), BagId = riak_cs_mb_helper:choose_bag_id(manifest, Bucket), + logger:debug("JJJ ~p", [User]), case riak_cs_bucket:create_bucket(User, UserObj, Bucket, @@ -146,13 +147,13 @@ accept_body(RD, Ctx=#context{user=User, end. %% @doc Callback for deleting a bucket. --spec delete_resource(#wm_reqdata{}, #context{}) -> - {boolean() | {'halt', term()}, #wm_reqdata{}, #context{}}. -delete_resource(RD, Ctx=#context{user=User, - user_object=UserObj, - response_module=ResponseMod, - bucket=Bucket, - riak_client=RcPid}) -> +-spec delete_resource(#wm_reqdata{}, #rcs_context{}) -> + {boolean() | {'halt', term()}, #wm_reqdata{}, #rcs_context{}}. +delete_resource(RD, Ctx=#rcs_context{user=User, + user_object=UserObj, + response_module=ResponseMod, + bucket=Bucket, + riak_client=RcPid}) -> riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_delete">>, [], [riak_cs_wm_utils:extract_name(User), Bucket]), case riak_cs_bucket:delete_bucket(User, diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_acl.erl b/apps/riak_cs/src/riak_cs_wm_bucket_acl.erl index 812fe9149..d3d34d8c0 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_acl.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_acl.erl @@ -45,7 +45,7 @@ stats_prefix() -> bucket_acl. allowed_methods() -> ['GET', 'PUT']. --spec malformed_request(#wm_reqdata{}, #context{}) -> {false, #wm_reqdata{}, #context{}}. +-spec malformed_request(#wm_reqdata{}, #rcs_context{}) -> {false, #wm_reqdata{}, #rcs_context{}}. malformed_request(RD, Ctx) -> case riak_cs_wm_utils:has_acl_header_and_body(RD) of true -> @@ -55,12 +55,12 @@ malformed_request(RD, Ctx) -> {false, RD, Ctx} end. --spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_provided(RD, Ctx) -> {[{"application/xml", to_xml}], RD, Ctx}. --spec content_types_accepted(#wm_reqdata{}, #context{}) -> - {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_accepted(#wm_reqdata{}, #rcs_context{}) -> + {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_accepted(RD, Ctx) -> case wrq:get_req_header("content-type", RD) of undefined -> @@ -70,16 +70,16 @@ content_types_accepted(RD, Ctx) -> {[{Media, add_acl_to_context_then_accept}], RD, Ctx} end. --spec authorize(#wm_reqdata{}, #context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. authorize(RD, Ctx) -> riak_cs_wm_utils:bucket_access_authorize_helper(bucket_acl, true, RD, Ctx). --spec to_xml(#wm_reqdata{}, #context{}) -> - {binary() | {'halt', non_neg_integer()}, #wm_reqdata{}, #context{}}. -to_xml(RD, Ctx=#context{user=User, - bucket=Bucket, - riak_client=RcPid}) -> +-spec to_xml(#wm_reqdata{}, #rcs_context{}) -> + {binary() | {'halt', non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. +to_xml(RD, Ctx=#rcs_context{user=User, + bucket=Bucket, + riak_client=RcPid}) -> riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_get_acl">>, [], [riak_cs_wm_utils:extract_name(User), Bucket]), case riak_cs_acl:fetch_bucket_acl(Bucket, RcPid) of @@ -97,12 +97,12 @@ to_xml(RD, Ctx=#context{user=User, end. %% @doc Process request body on `PUT' request. --spec accept_body(#wm_reqdata{}, #context{}) -> {{halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. -accept_body(RD, Ctx=#context{user=User, - user_object=UserObj, - acl=AclFromHeadersOrDefault, - bucket=Bucket, - riak_client=RcPid}) -> +-spec accept_body(#wm_reqdata{}, #rcs_context{}) -> {{halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. +accept_body(RD, Ctx=#rcs_context{user=User, + user_object=UserObj, + acl=AclFromHeadersOrDefault, + bucket=Bucket, + riak_client=RcPid}) -> riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_put_acl">>, [], [riak_cs_wm_utils:extract_name(User), Bucket]), Body = binary_to_list(wrq:req_body(RD)), diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl index 5d7ab9f3a..fcb8fd900 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_delete.erl @@ -43,9 +43,9 @@ -define(RIAKCPOOL, request_pool). --spec init(#context{}) -> {ok, #context{}}. +-spec init(#rcs_context{}) -> {ok, #rcs_context{}}. init(Ctx) -> - {ok, Ctx#context{rc_pool=?RIAKCPOOL}}. + {ok, Ctx#rcs_context{rc_pool=?RIAKCPOOL}}. -spec stats_prefix() -> multiple_delete. stats_prefix() -> multiple_delete. @@ -57,36 +57,36 @@ allowed_methods() -> %% TODO: change to authorize/spec/cleanup unneeded cases %% TODO: requires update for multi-delete --spec authorize(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> {boolean(), #wm_reqdata{}, #rcs_context{}}. authorize(RD, Ctx) -> Bucket = list_to_binary(wrq:path_info(bucket, RD)), - {false, RD, Ctx#context{bucket=Bucket}}. + {false, RD, Ctx#rcs_context{bucket=Bucket}}. post_is_create(RD, Ctx) -> {false, RD, Ctx}. --spec process_post(#wm_reqdata{}, #context{}) -> {term(), #wm_reqdata{}, #context{}}. -process_post(RD, Ctx=#context{bucket=Bucket, - riak_client=RcPid, user=User}) -> +-spec process_post(#wm_reqdata{}, #rcs_context{}) -> {term(), #wm_reqdata{}, #rcs_context{}}. +process_post(RD, Ctx=#rcs_context{bucket=Bucket, + riak_client=RcPid, user=User}) -> UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"multiple_delete">>, [], [UserName, Bucket]), handle_with_bucket_obj(riak_cs_bucket:fetch_bucket_object(Bucket, RcPid), RD, Ctx). handle_with_bucket_obj({error, notfound}, RD, - #context{response_module=ResponseMod} = Ctx) -> + #rcs_context{response_module=ResponseMod} = Ctx) -> ResponseMod:api_error(no_such_bucket, RD, Ctx); handle_with_bucket_obj({error, _} = Error, RD, - #context{response_module=ResponseMod} = Ctx) -> + #rcs_context{response_module=ResponseMod} = Ctx) -> ?LOG_DEBUG("bucket error: ~p", [Error]), ResponseMod:api_error(Error, RD, Ctx); handle_with_bucket_obj({ok, BucketObj}, - RD, Ctx=#context{bucket=Bucket, - riak_client=RcPid, user=User, - response_module=ResponseMod, - policy_module=PolicyMod}) -> + RD, Ctx=#rcs_context{bucket=Bucket, + riak_client=RcPid, user=User, + response_module=ResponseMod, + policy_module=PolicyMod}) -> case parse_body(binary_to_list(wrq:req_body(RD))) of {error, _} = Error -> diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_location.erl b/apps/riak_cs/src/riak_cs_wm_bucket_location.erl index 8b9e23086..72aad32ad 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_location.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_location.erl @@ -41,18 +41,18 @@ stats_prefix() -> bucket_location. allowed_methods() -> ['GET']. --spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_provided(RD, Ctx) -> {[{"application/xml", to_xml}], RD, Ctx}. --spec authorize(#wm_reqdata{}, #context{}) -> - {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> + {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. authorize(RD, Ctx) -> riak_cs_wm_utils:bucket_access_authorize_helper(bucket_location, false, RD, Ctx). --spec to_xml(#wm_reqdata{}, #context{}) -> - {binary() | {'halt', term()}, #wm_reqdata{}, #context{}}. -to_xml(RD, Ctx=#context{user=User,bucket=Bucket}) -> +-spec to_xml(#wm_reqdata{}, #rcs_context{}) -> + {binary() | {'halt', term()}, #wm_reqdata{}, #rcs_context{}}. +to_xml(RD, Ctx=#rcs_context{user=User,bucket=Bucket}) -> StrBucket = binary_to_list(Bucket), case [B || B <- riak_cs_bucket:get_buckets(User), B?RCS_BUCKET.name =:= StrBucket] of diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_policy.erl b/apps/riak_cs/src/riak_cs_wm_bucket_policy.erl index 2e30b3cef..de5886bdc 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_policy.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_policy.erl @@ -46,13 +46,13 @@ stats_prefix() -> bucket_policy. allowed_methods() -> ['GET', 'PUT', 'DELETE']. --spec content_types_provided(#wm_reqdata{}, #context{}) -> - {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> + {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_provided(RD, Ctx) -> {[{"application/json", to_json}], RD, Ctx}. --spec content_types_accepted(#wm_reqdata{}, #context{}) -> - {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_accepted(#wm_reqdata{}, #rcs_context{}) -> + {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_accepted(RD, Ctx) -> case wrq:get_req_header("content-type", RD) of undefined -> @@ -63,17 +63,17 @@ content_types_accepted(RD, Ctx) -> {false, RD, Ctx} end. --spec authorize(#wm_reqdata{}, #context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. authorize(RD, Ctx) -> riak_cs_wm_utils:bucket_access_authorize_helper(bucket_policy, true, RD, Ctx). --spec to_json(#wm_reqdata{}, #context{}) -> - {binary() | {'halt', non_neg_integer()}, #wm_reqdata{}, #context{}}. -to_json(RD, Ctx=#context{start_time=_StartTime, - user=User, - bucket=Bucket, - riak_client=RcPid}) -> +-spec to_json(#wm_reqdata{}, #rcs_context{}) -> + {binary() | {'halt', non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. +to_json(RD, Ctx=#rcs_context{start_time=_StartTime, + user=User, + bucket=Bucket, + riak_client=RcPid}) -> riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_get_policy">>, [], [riak_cs_wm_utils:extract_name(User), Bucket]), @@ -92,12 +92,12 @@ to_json(RD, Ctx=#context{start_time=_StartTime, end. %% @doc Process request body on `PUT' request. --spec accept_body(#wm_reqdata{}, #context{}) -> {{halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. -accept_body(RD, Ctx=#context{user=User, - user_object=UserObj, - bucket=Bucket, - policy_module=PolicyMod, - riak_client=RcPid}) -> +-spec accept_body(#wm_reqdata{}, #rcs_context{}) -> {{halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. +accept_body(RD, Ctx=#rcs_context{user=User, + user_object=UserObj, + bucket=Bucket, + policy_module=PolicyMod, + riak_client=RcPid}) -> riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_put_policy">>, [], [riak_cs_wm_utils:extract_name(User), Bucket]), @@ -126,12 +126,12 @@ accept_body(RD, Ctx=#context{user=User, end. %% @doc Callback for deleting policy. --spec delete_resource(#wm_reqdata{}, #context{}) -> {true, #wm_reqdata{}, #context{}} | - {{halt, 200}, #wm_reqdata{}, #context{}}. -delete_resource(RD, Ctx=#context{user=User, - user_object=UserObj, - bucket=Bucket, - riak_client=RcPid}) -> +-spec delete_resource(#wm_reqdata{}, #rcs_context{}) -> {true, #wm_reqdata{}, #rcs_context{}} | + {{halt, 200}, #wm_reqdata{}, #rcs_context{}}. +delete_resource(RD, Ctx=#rcs_context{user=User, + user_object=UserObj, + bucket=Bucket, + riak_client=RcPid}) -> riak_cs_dtrace:dt_object_entry(?MODULE, <<"bucket_policy_delete">>, [], [RD, Ctx, RcPid]), diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl b/apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl index 886c8700b..ac32a321e 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_request_payment.erl @@ -40,18 +40,18 @@ stats_prefix() -> bucket_request_payment. allowed_methods() -> ['GET']. --spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_provided(RD, Ctx) -> {[{"application/xml", to_xml}], RD, Ctx}. --spec authorize(#wm_reqdata{}, #context{}) -> - {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> + {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. authorize(RD, Ctx) -> riak_cs_wm_utils:bucket_access_authorize_helper(bucket_request_payment, false, RD, Ctx). --spec to_xml(#wm_reqdata{}, #context{}) -> - {binary() | {'halt', term()}, #wm_reqdata{}, #context{}}. -to_xml(RD, Ctx=#context{user=User,bucket=Bucket}) -> +-spec to_xml(#wm_reqdata{}, #rcs_context{}) -> + {binary() | {'halt', term()}, #wm_reqdata{}, #rcs_context{}}. +to_xml(RD, Ctx=#rcs_context{user=User,bucket=Bucket}) -> StrBucket = binary_to_list(Bucket), case [B || B <- riak_cs_bucket:get_buckets(User), B?RCS_BUCKET.name =:= StrBucket] of diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl b/apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl index 076b0e5e0..f6727cc7b 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_uploads.erl @@ -43,20 +43,20 @@ -define(RIAKCPOOL, bucket_list_pool). --spec init(#context{}) -> {ok, #context{}}. +-spec init(#rcs_context{}) -> {ok, #rcs_context{}}. init(Ctx) -> - {ok, Ctx#context{local_context=#key_context{}}}. + {ok, Ctx#rcs_context{local_context=#key_context{}}}. -spec stats_prefix() -> list_uploads. stats_prefix() -> list_uploads. --spec malformed_request(#wm_reqdata{}, #context{}) -> {false, #wm_reqdata{}, #context{}}. -malformed_request(RD,Ctx=#context{local_context=LocalCtx0}) -> +-spec malformed_request(#wm_reqdata{}, #rcs_context{}) -> {false, #wm_reqdata{}, #rcs_context{}}. +malformed_request(RD,Ctx=#rcs_context{local_context=LocalCtx0}) -> Bucket = list_to_binary(wrq:path_info(bucket, RD)), LocalCtx = LocalCtx0#key_context{bucket=Bucket}, - {false, RD, Ctx#context{local_context=LocalCtx}}. + {false, RD, Ctx#rcs_context{local_context=LocalCtx}}. --spec authorize(#wm_reqdata{}, #context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. authorize(RD, Ctx) -> riak_cs_wm_utils:bucket_access_authorize_helper(bucket_uploads, false, RD, Ctx). @@ -65,10 +65,10 @@ authorize(RD, Ctx) -> allowed_methods() -> ['GET']. -to_xml(RD, Ctx=#context{local_context=LocalCtx, - riak_client=RcPid}) -> +to_xml(RD, Ctx=#rcs_context{local_context=LocalCtx, + riak_client=RcPid}) -> #key_context{bucket=Bucket} = LocalCtx, - User = riak_cs_user:to_3tuple(Ctx#context.user), + User = riak_cs_user:to_3tuple(Ctx#rcs_context.user), Opts = make_list_mp_uploads_opts(RD), case riak_cs_mp_utils:list_multipart_uploads(Bucket, User, Opts, RcPid) of {ok, {Ds, Commons}} -> @@ -123,8 +123,8 @@ finish_request(RD, Ctx) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"finish_request">>, [0], []), {true, RD, Ctx}. --spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. -content_types_provided(RD, Ctx=#context{}) -> +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. +content_types_provided(RD, Ctx=#rcs_context{}) -> Method = wrq:method(RD), if Method == 'GET' -> {[{?XML_TYPE, to_xml}], RD, Ctx}; @@ -134,7 +134,7 @@ content_types_provided(RD, Ctx=#context{}) -> {[{"text/plain", unused_callback}], RD, Ctx} end. --spec content_types_accepted(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_accepted(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_accepted(RD, Ctx) -> riak_cs_mp_utils:make_content_types_accepted(RD, Ctx). diff --git a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl index cc387a894..19e47936b 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket_versioning.erl @@ -42,12 +42,12 @@ stats_prefix() -> bucket_versioning. allowed_methods() -> ['GET', 'PUT']. --spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_provided(RD, Ctx) -> {[{"application/xml", to_xml}], RD, Ctx}. --spec content_types_accepted(#wm_reqdata{}, #context{}) -> - {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_accepted(#wm_reqdata{}, #rcs_context{}) -> + {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_accepted(RD, Ctx) -> case wrq:get_req_header("content-type", RD) of undefined -> @@ -57,17 +57,17 @@ content_types_accepted(RD, Ctx) -> {[{Media, add_acl_to_context_then_accept}], RD, Ctx} end. --spec authorize(#wm_reqdata{}, #context{}) -> - {boolean() | {halt, term()}, #wm_reqdata{}, #context{}}. +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> + {boolean() | {halt, term()}, #wm_reqdata{}, #rcs_context{}}. authorize(RD, Ctx) -> riak_cs_wm_utils:bucket_access_authorize_helper(bucket_version, false, RD, Ctx). --spec to_xml(#wm_reqdata{}, #context{}) -> - {binary() | {halt, term()}, #wm_reqdata{}, #context{}}. -to_xml(RD, Ctx=#context{user = User, - bucket = Bucket, - riak_client = RcPid}) -> +-spec to_xml(#wm_reqdata{}, #rcs_context{}) -> + {binary() | {halt, term()}, #wm_reqdata{}, #rcs_context{}}. +to_xml(RD, Ctx=#rcs_context{user = User, + bucket = Bucket, + riak_client = RcPid}) -> StrBucket = binary_to_list(Bucket), case [B || B <- riak_cs_bucket:get_buckets(User), B?RCS_BUCKET.name =:= StrBucket] of @@ -97,12 +97,12 @@ to_string(mfa_delete, disabled) -> "Disabled"; to_string(bool, true) -> "True"; to_string(bool, false) -> "False". --spec accept_body(#wm_reqdata{}, #context{}) -> {{halt, integer()}, #wm_reqdata{}, #context{}}. -accept_body(RD, Ctx = #context{user = User, - user_object = UserObj, - bucket = Bucket, - response_module = ResponseMod, - riak_client = RcPid}) -> +-spec accept_body(#wm_reqdata{}, #rcs_context{}) -> {{halt, integer()}, #wm_reqdata{}, #rcs_context{}}. +accept_body(RD, Ctx = #rcs_context{user = User, + user_object = UserObj, + bucket = Bucket, + response_module = ResponseMod, + riak_client = RcPid}) -> riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_put_versioning">>, [], [riak_cs_wm_utils:extract_name(User), Bucket]), {ok, OldV} = riak_cs_bucket:get_bucket_versioning(Bucket, RcPid), diff --git a/apps/riak_cs/src/riak_cs_wm_buckets.erl b/apps/riak_cs/src/riak_cs_wm_buckets.erl index 51f899fcb..5c9ccfe59 100644 --- a/apps/riak_cs/src/riak_cs_wm_buckets.erl +++ b/apps/riak_cs/src/riak_cs_wm_buckets.erl @@ -38,8 +38,8 @@ stats_prefix() -> service. allowed_methods() -> ['GET']. --spec api_request(#wm_reqdata{}, #context{}) -> ?LBRESP{}. -api_request(_RD, #context{user=User}) -> +-spec api_request(#wm_reqdata{}, #rcs_context{}) -> ?LBRESP{}. +api_request(_RD, #rcs_context{user=User}) -> UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_service_entry(?MODULE, <<"service_get_buckets">>, [], [UserName]), Res = riak_cs_api:list_buckets(User), diff --git a/apps/riak_cs/src/riak_cs_wm_common.erl b/apps/riak_cs/src/riak_cs_wm_common.erl index 2ac847bff..c71083122 100644 --- a/apps/riak_cs/src/riak_cs_wm_common.erl +++ b/apps/riak_cs/src/riak_cs_wm_common.erl @@ -71,7 +71,7 @@ %% Webmachine callbacks %% =================================================================== --spec init([{atom(),term()}]) -> {ok, #context{}}. +-spec init([{atom(),term()}]) -> {ok, #rcs_context{}}. init(Config) -> catch dyntrace:put_tag(pid_to_list(self())), Mod = proplists:get_value(submodule, Config), @@ -85,35 +85,35 @@ init(Config) -> Exports = orddict:from_list(Mod:module_info(exports)), ExportsFun = exports_fun(Exports), StatsPrefix = resource_call(Mod, stats_prefix, [], ExportsFun), - Ctx = #context{auth_bypass=AuthBypass, - auth_module=AuthModule, - response_module=RespModule, - policy_module=PolicyModule, - exports_fun=ExportsFun, - stats_prefix=StatsPrefix, - start_time=os:timestamp(), - submodule=Mod, - api=Api}, + Ctx = #rcs_context{auth_bypass=AuthBypass, + auth_module=AuthModule, + response_module=RespModule, + policy_module=PolicyModule, + exports_fun=ExportsFun, + stats_prefix=StatsPrefix, + start_time=os:timestamp(), + submodule=Mod, + api=Api}, resource_call(Mod, init, [Ctx], ExportsFun). --spec service_available(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. -service_available(RD, Ctx=#context{rc_pool=undefined}) -> - service_available(RD, Ctx#context{rc_pool=request_pool}); -service_available(RD, Ctx=#context{submodule=Mod, rc_pool=Pool}) -> +-spec service_available(#wm_reqdata{}, #rcs_context{}) -> {boolean(), #wm_reqdata{}, #rcs_context{}}. +service_available(RD, Ctx=#rcs_context{rc_pool=undefined}) -> + service_available(RD, Ctx#rcs_context{rc_pool=request_pool}); +service_available(RD, Ctx=#rcs_context{submodule=Mod, rc_pool=Pool}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"service_available">>), case riak_cs_riak_client:checkout(Pool) of {ok, RcPid} -> riak_cs_dtrace:dt_wm_return({?MODULE, Mod}, <<"service_available">>, [1], []), - {true, RD, Ctx#context{riak_client=RcPid}}; + {true, RD, Ctx#rcs_context{riak_client=RcPid}}; {error, _Reason} -> riak_cs_dtrace:dt_wm_return({?MODULE, Mod}, <<"service_available">>, [0], []), {false, RD, Ctx} end. --spec malformed_request(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. -malformed_request(RD, Ctx=#context{submodule=Mod, - exports_fun=ExportsFun, - stats_prefix=StatsPrefix}) -> +-spec malformed_request(#wm_reqdata{}, #rcs_context{}) -> {boolean(), #wm_reqdata{}, #rcs_context{}}. +malformed_request(RD, Ctx=#rcs_context{submodule=Mod, + exports_fun=ExportsFun, + stats_prefix=StatsPrefix}) -> %% Methoid is used in stats keys, updating inflow should be *after* %% allowed_methods assertion. _ = update_stats_inflow(RD, StatsPrefix), @@ -129,8 +129,8 @@ malformed_request(RD, Ctx=#context{submodule=Mod, R. --spec valid_entity_length(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. -valid_entity_length(RD, Ctx=#context{submodule=Mod, exports_fun=ExportsFun}) -> +-spec valid_entity_length(#wm_reqdata{}, #rcs_context{}) -> {boolean(), #wm_reqdata{}, #rcs_context{}}. +valid_entity_length(RD, Ctx=#rcs_context{submodule=Mod, exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"valid_entity_length">>), {Valid, _, _} = R = resource_call(Mod, valid_entity_length, @@ -145,9 +145,9 @@ valid_entity_length(RD, Ctx=#context{submodule=Mod, exports_fun=ExportsFun}) -> -type validate_checksum_response() :: {error, term()} | {halt, pos_integer()} | boolean(). --spec validate_content_checksum(#wm_reqdata{}, #context{}) -> - {validate_checksum_response(), #wm_reqdata{}, #context{}}. -validate_content_checksum(RD, Ctx=#context{submodule=Mod, exports_fun=ExportsFun}) -> +-spec validate_content_checksum(#wm_reqdata{}, #rcs_context{}) -> + {validate_checksum_response(), #wm_reqdata{}, #rcs_context{}}. +validate_content_checksum(RD, Ctx=#rcs_context{submodule=Mod, exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"validate_content_checksum">>), {Valid, _, _} = R = resource_call(Mod, validate_content_checksum, @@ -159,11 +159,11 @@ validate_content_checksum(RD, Ctx=#context{submodule=Mod, exports_fun=ExportsFun true), R. --spec forbidden(#wm_reqdata{}, #context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. -forbidden(RD, Ctx=#context{auth_module=AuthMod, - submodule=Mod, - riak_client=RcPid, - exports_fun=ExportsFun}) -> +-spec forbidden(#wm_reqdata{}, #rcs_context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. +forbidden(RD, Ctx=#rcs_context{auth_module=AuthMod, + submodule=Mod, + riak_client=RcPid, + exports_fun=ExportsFun}) -> {AuthResult, AnonOk} = case AuthMod:identify(RD, Ctx) of @@ -180,8 +180,8 @@ forbidden(RD, Ctx=#context{auth_module=AuthMod, case maybe_create_user( riak_cs_user:get_user(UserKey, RcPid), UserKey, - Ctx#context.api, - Ctx#context.auth_module, + Ctx#rcs_context.api, + Ctx#rcs_context.auth_module, AuthData, RcPid) of {ok, {User, Obj}} = _LookupResult -> @@ -228,9 +228,9 @@ maybe_create_user({error, Reason}=Error, _, Api, _, _, _) -> Error. %% @doc Get the list of methods a resource supports. --spec allowed_methods(#wm_reqdata{}, #context{}) -> {[atom()], #wm_reqdata{}, #context{}}. -allowed_methods(RD, Ctx=#context{submodule=Mod, - exports_fun=ExportsFun}) -> +-spec allowed_methods(#wm_reqdata{}, #rcs_context{}) -> {[atom()], #wm_reqdata{}, #rcs_context{}}. +allowed_methods(RD, Ctx=#rcs_context{submodule=Mod, + exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"allowed_methods">>), Methods = resource_call(Mod, allowed_methods, @@ -238,44 +238,44 @@ allowed_methods(RD, Ctx=#context{submodule=Mod, ExportsFun), {Methods, RD, Ctx}. --spec content_types_accepted(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. -content_types_accepted(RD, Ctx=#context{submodule=Mod, - exports_fun=ExportsFun}) -> +-spec content_types_accepted(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. +content_types_accepted(RD, Ctx=#rcs_context{submodule=Mod, + exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"content_types_accepted">>), resource_call(Mod, content_types_accepted, [RD,Ctx], ExportsFun). --spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. -content_types_provided(RD, Ctx=#context{submodule=Mod, - exports_fun=ExportsFun}) -> +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. +content_types_provided(RD, Ctx=#rcs_context{submodule=Mod, + exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"content_types_provided">>), resource_call(Mod, content_types_provided, [RD,Ctx], ExportsFun). --spec generate_etag(#wm_reqdata{}, #context{}) -> {string(), #wm_reqdata{}, #context{}}. -generate_etag(RD, Ctx=#context{submodule=Mod, - exports_fun=ExportsFun}) -> +-spec generate_etag(#wm_reqdata{}, #rcs_context{}) -> {string(), #wm_reqdata{}, #rcs_context{}}. +generate_etag(RD, Ctx=#rcs_context{submodule=Mod, + exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"generate_etag">>), resource_call(Mod, generate_etag, [RD,Ctx], ExportsFun). --spec last_modified(#wm_reqdata{}, #context{}) -> {calendar:datetime(), #wm_reqdata{}, #context{}}. -last_modified(RD, Ctx=#context{submodule=Mod, - exports_fun=ExportsFun}) -> +-spec last_modified(#wm_reqdata{}, #rcs_context{}) -> {calendar:datetime(), #wm_reqdata{}, #rcs_context{}}. +last_modified(RD, Ctx=#rcs_context{submodule=Mod, + exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"last_modified">>), resource_call(Mod, last_modified, [RD,Ctx], ExportsFun). --spec delete_resource(#wm_reqdata{}, #context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. -delete_resource(RD, Ctx=#context{submodule=Mod,exports_fun=ExportsFun}) -> +-spec delete_resource(#wm_reqdata{}, #rcs_context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. +delete_resource(RD, Ctx=#rcs_context{submodule=Mod,exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"delete_resource">>), %% TODO: add dt_wm_return from subresource? resource_call(Mod, @@ -283,11 +283,11 @@ delete_resource(RD, Ctx=#context{submodule=Mod,exports_fun=ExportsFun}) -> [RD,Ctx], ExportsFun). --spec to_xml(#wm_reqdata{}, #context{}) -> - {binary() | {'halt', non_neg_integer()}, #wm_reqdata{}, #context{}}. -to_xml(RD, Ctx=#context{user=User, - submodule=Mod, - exports_fun=ExportsFun}) -> +-spec to_xml(#wm_reqdata{}, #rcs_context{}) -> + {binary() | {'halt', non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. +to_xml(RD, Ctx=#rcs_context{user=User, + submodule=Mod, + exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"to_xml">>), Res = resource_call(Mod, to_xml, @@ -296,11 +296,11 @@ to_xml(RD, Ctx=#context{user=User, riak_cs_dtrace:dt_wm_return({?MODULE, Mod}, <<"to_xml">>, [], [riak_cs_wm_utils:extract_name(User)]), Res. --spec to_json(#wm_reqdata{}, #context{}) -> - {binary() | {'halt', non_neg_integer()}, #wm_reqdata{}, #context{}}. -to_json(RD, Ctx=#context{user=User, - submodule=Mod, - exports_fun=ExportsFun}) -> +-spec to_json(#wm_reqdata{}, #rcs_context{}) -> + {binary() | {'halt', non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. +to_json(RD, Ctx=#rcs_context{user=User, + submodule=Mod, + exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"to_json">>), Res = resource_call(Mod, to_json, @@ -309,24 +309,24 @@ to_json(RD, Ctx=#context{user=User, riak_cs_dtrace:dt_wm_return({?MODULE, Mod}, <<"to_json">>, [], [riak_cs_wm_utils:extract_name(User)]), Res. -post_is_create(RD, Ctx=#context{submodule=Mod, - exports_fun=ExportsFun}) -> +post_is_create(RD, Ctx=#rcs_context{submodule=Mod, + exports_fun=ExportsFun}) -> resource_call(Mod, post_is_create, [RD, Ctx], ExportsFun). -create_path(RD, Ctx=#context{submodule=Mod, - exports_fun=ExportsFun}) -> +create_path(RD, Ctx=#rcs_context{submodule=Mod, + exports_fun=ExportsFun}) -> resource_call(Mod, create_path, [RD, Ctx], ExportsFun). -process_post(RD, Ctx=#context{submodule=Mod, - exports_fun=ExportsFun}) -> +process_post(RD, Ctx=#rcs_context{submodule=Mod, + exports_fun=ExportsFun}) -> resource_call(Mod, process_post, [RD, Ctx], ExportsFun). -resp_body(RD, Ctx=#context{submodule=Mod, - exports_fun=ExportsFun}) -> +resp_body(RD, Ctx=#rcs_context{submodule=Mod, + exports_fun=ExportsFun}) -> resource_call(Mod, resp_body, [RD, Ctx], ExportsFun). -multiple_choices(RD, Ctx=#context{submodule=Mod, - exports_fun=ExportsFun}) -> +multiple_choices(RD, Ctx=#rcs_context{submodule=Mod, + exports_fun=ExportsFun}) -> try resource_call(Mod, multiple_choices, [RD, Ctx], ExportsFun) catch _:_ -> @@ -343,9 +343,9 @@ add_acl_to_context_then_accept(RD, Ctx) -> HaltResponse end. --spec accept_body(#wm_reqdata{}, #context{}) -> - {boolean() | {'halt', non_neg_integer()}, #wm_reqdata{}, #context{}}. -accept_body(RD, Ctx=#context{submodule=Mod,exports_fun=ExportsFun,user=User}) -> +-spec accept_body(#wm_reqdata{}, #rcs_context{}) -> + {boolean() | {'halt', non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. +accept_body(RD, Ctx=#rcs_context{submodule=Mod, exports_fun=ExportsFun, user=User}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"accept_body">>), Res = resource_call(Mod, accept_body, @@ -355,12 +355,12 @@ accept_body(RD, Ctx=#context{submodule=Mod,exports_fun=ExportsFun,user=User}) -> riak_cs_dtrace:dt_wm_return({?MODULE, Mod}, <<"accept_body">>, [], [riak_cs_wm_utils:extract_name(User)]), Res. --spec produce_body(#wm_reqdata{}, #context{}) -> - {iolist()|binary(), #wm_reqdata{}, #context{}} | - {{known_length_stream, non_neg_integer(), {<<>>, function()}}, #wm_reqdata{}, #context{}}. -produce_body(RD, Ctx=#context{user=User, - submodule=Mod, - exports_fun=ExportsFun}) -> +-spec produce_body(#wm_reqdata{}, #rcs_context{}) -> + {iolist()|binary(), #wm_reqdata{}, #rcs_context{}} | + {{known_length_stream, non_neg_integer(), {<<>>, function()}}, #wm_reqdata{}, #rcs_context{}}. +produce_body(RD, Ctx=#rcs_context{user=User, + submodule=Mod, + exports_fun=ExportsFun}) -> %% TODO: add dt_wm_return w/ content length riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"produce_body">>), Res = resource_call(Mod, @@ -370,11 +370,11 @@ produce_body(RD, Ctx=#context{user=User, riak_cs_dtrace:dt_wm_return({?MODULE, Mod}, <<"produce_body">>, [], [riak_cs_wm_utils:extract_name(User)]), Res. --spec finish_request(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. -finish_request(RD, Ctx=#context{riak_client=RcPid, - auto_rc_close=AutoRcClose, - submodule=Mod, - exports_fun=ExportsFun}) +-spec finish_request(#wm_reqdata{}, #rcs_context{}) -> {boolean(), #wm_reqdata{}, #rcs_context{}}. +finish_request(RD, Ctx=#rcs_context{riak_client=RcPid, + auto_rc_close=AutoRcClose, + submodule=Mod, + exports_fun=ExportsFun}) when RcPid =:= undefined orelse AutoRcClose =:= false -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"finish_request">>, [0], []), Res = resource_call(Mod, @@ -384,13 +384,13 @@ finish_request(RD, Ctx=#context{riak_client=RcPid, riak_cs_dtrace:dt_wm_return({?MODULE, Mod}, <<"finish_request">>, [0], []), update_stats(RD, Ctx), Res; -finish_request(RD, Ctx0=#context{riak_client=RcPid, - rc_pool=Pool, - submodule=Mod, - exports_fun=ExportsFun}) -> +finish_request(RD, Ctx0=#rcs_context{riak_client=RcPid, + rc_pool=Pool, + submodule=Mod, + exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"finish_request">>, [1], []), riak_cs_riak_client:checkin(Pool, RcPid), - Ctx = Ctx0#context{riak_client=undefined}, + Ctx = Ctx0#rcs_context{riak_client=undefined}, Res = resource_call(Mod, finish_request, [RD, Ctx], @@ -403,8 +403,8 @@ finish_request(RD, Ctx0=#context{riak_client=RcPid, %% Helper functions %% =================================================================== --spec authorize(#wm_reqdata{}, #context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. -authorize(RD,Ctx=#context{submodule=Mod, exports_fun=ExportsFun}) -> +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> {boolean() | {halt, non_neg_integer()}, #wm_reqdata{}, #rcs_context{}}. +authorize(RD,Ctx=#rcs_context{submodule=Mod, exports_fun=ExportsFun}) -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"authorize">>), {Success, _, _} = R = resource_call(Mod, authorize, [RD,Ctx], ExportsFun), case Success of @@ -419,7 +419,7 @@ authorize(RD,Ctx=#context{submodule=Mod, exports_fun=ExportsFun}) -> -spec authenticate(rcs_user(), riakc_obj:riakc_obj(), term(), term(), term()) -> {ok, rcs_user(), riakc_obj:riakc_obj()} | {error, bad_auth}. -authenticate(User, UserObj, RD, Ctx=#context{auth_module=AuthMod, submodule=Mod}, AuthData) +authenticate(User, UserObj, RD, Ctx=#rcs_context{auth_module=AuthMod, submodule=Mod}, AuthData) when User?RCS_USER.status =:= enabled -> riak_cs_dtrace:dt_wm_entry({?MODULE, Mod}, <<"authenticate">>, [], [atom_to_binary(AuthMod, latin1)]), case AuthMod:authenticate(User, AuthData, RD, Ctx) of @@ -453,12 +453,12 @@ resource_call(Mod, Fun, Args, ExportsFun) -> resource_call(Mod, Fun, Args, ExportsFun(Fun)). -post_authentication(AuthResult, RD, Ctx = #context{submodule=Mod}, AnonOk) -> +post_authentication(AuthResult, RD, Ctx = #rcs_context{submodule=Mod}, AnonOk) -> case post_authentication(AuthResult, RD, Ctx, fun authorize/2, AnonOk) of {false, _RD2, Ctx2} = FalseRet -> riak_cs_dtrace:dt_wm_return({?MODULE, Mod}, <<"forbidden">>, [], - [riak_cs_wm_utils:extract_name(Ctx2#context.user), + [riak_cs_wm_utils:extract_name(Ctx2#rcs_context.user), <<"false">>]), FalseRet; {Rsn, _RD2, Ctx2} = Ret -> @@ -469,15 +469,15 @@ post_authentication(AuthResult, RD, Ctx = #context{submodule=Mod}, AnonOk) -> end, riak_cs_dtrace:dt_wm_return({?MODULE, Mod}, <<"forbidden">>, [Reason], - [riak_cs_wm_utils:extract_name(Ctx2#context.user), + [riak_cs_wm_utils:extract_name(Ctx2#rcs_context.user), <<"true">>]), Ret end. post_authentication({ok, User, UserObj}, RD, Ctx, Authorize, _) -> %% given keyid and signature matched, proceed - Authorize(RD, Ctx#context{user=User, - user_object=UserObj}); + Authorize(RD, Ctx#rcs_context{user=User, + user_object=UserObj}); post_authentication({error, no_user_key}, RD, Ctx, Authorize, true) -> %% no keyid was given, proceed anonymously ?LOG_DEBUG("No user key"), @@ -491,18 +491,18 @@ post_authentication({error, bad_auth}, RD, Ctx, _, _) -> ?LOG_DEBUG("bad_auth"), riak_cs_wm_utils:deny_access(RD, Ctx); post_authentication({error, reqtime_tooskewed} = Error, RD, - #context{response_module = ResponseMod} = Ctx, _, _) -> + #rcs_context{response_module = ResponseMod} = Ctx, _, _) -> ?LOG_DEBUG("reqtime_tooskewed"), ResponseMod:api_error(Error, RD, Ctx); post_authentication({error, {auth_not_supported, AuthType}}, RD, - #context{response_module=ResponseMod} = Ctx, _, _) -> + #rcs_context{response_module=ResponseMod} = Ctx, _, _) -> ?LOG_DEBUG("auth_not_supported: ~s", [AuthType]), ResponseMod:api_error({auth_not_supported, AuthType}, RD, Ctx); post_authentication({error, notfound}, RD, Ctx, _, _) -> ?LOG_DEBUG("User does not exist"), riak_cs_wm_utils:deny_invalid_key(RD, Ctx); post_authentication({error, Reason}, RD, - #context{response_module=ResponseMod} = Ctx, _, _) -> + #rcs_context{response_module=ResponseMod} = Ctx, _, _) -> %% Lookup failed, basically due to disconnected stuff ?LOG_DEBUG("Authentication error: ~p", [Reason]), ResponseMod:api_error(Reason, RD, Ctx). @@ -516,12 +516,12 @@ update_stats_inflow(RD, StatsPrefix) -> Key = [StatsPrefix, Method], riak_cs_stats:inflow(Key). -update_stats(_RD, #context{stats_key=no_stats}) -> +update_stats(_RD, #rcs_context{stats_key=no_stats}) -> ok; -update_stats(_RD, #context{stats_prefix=no_stats}) -> +update_stats(_RD, #rcs_context{stats_prefix=no_stats}) -> ok; -update_stats(RD, #context{start_time=StartTime, - stats_prefix=StatsPrefix, stats_key=StatsKey}) -> +update_stats(RD, #rcs_context{start_time=StartTime, + stats_prefix=StatsPrefix, stats_key=StatsKey}) -> catch update_stats(StartTime, wrq:response_code(RD), StatsPrefix, @@ -601,11 +601,11 @@ default_validate_content_checksum(RD, Ctx) -> default_content_types_accepted(RD, Ctx) -> {[], RD, Ctx}. --spec default_content_types_provided(#wm_reqdata{}, #context{}) -> - {[{string(), atom()}], - #wm_reqdata{}, - #context{}}. -default_content_types_provided(RD, Ctx=#context{api=oos}) -> +-spec default_content_types_provided(#wm_reqdata{}, #rcs_context{}) -> + {[{string(), atom()}], + #wm_reqdata{}, + #rcs_context{}}. +default_content_types_provided(RD, Ctx=#rcs_context{api=oos}) -> {[{"text/plain", produce_body}], RD, Ctx}; default_content_types_provided(RD, Ctx) -> {[{"application/xml", produce_body}], RD, Ctx}. @@ -628,9 +628,9 @@ default_finish_request(RD, Ctx) -> default_anon_ok() -> true. -default_produce_body(RD, Ctx=#context{submodule=Mod, - response_module=ResponseMod, - exports_fun=ExportsFun}) -> +default_produce_body(RD, Ctx=#rcs_context{submodule=Mod, + response_module=ResponseMod, + exports_fun=ExportsFun}) -> try ResponseMod:respond( resource_call(Mod, api_request, [RD, Ctx], ExportsFun), diff --git a/apps/riak_cs/src/riak_cs_wm_not_implemented.erl b/apps/riak_cs/src/riak_cs_wm_not_implemented.erl index a23d4c5cf..e6915ab79 100644 --- a/apps/riak_cs/src/riak_cs_wm_not_implemented.erl +++ b/apps/riak_cs/src/riak_cs_wm_not_implemented.erl @@ -33,7 +33,7 @@ allowed_methods() -> ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'TRACE', 'CONNECT', 'OPTIONS']. --spec malformed_request(#wm_reqdata{}, #context{}) -> - {false | {halt, _}, #wm_reqdata{}, #context{}}. +-spec malformed_request(#wm_reqdata{}, #rcs_context{}) -> + {false | {halt, _}, #wm_reqdata{}, #rcs_context{}}. malformed_request(RD, Ctx) -> riak_cs_s3_response:api_error(not_implemented, RD, Ctx). diff --git a/apps/riak_cs/src/riak_cs_wm_object.erl b/apps/riak_cs/src/riak_cs_wm_object.erl index fd9648fc6..53cd437af 100644 --- a/apps/riak_cs/src/riak_cs_wm_object.erl +++ b/apps/riak_cs/src/riak_cs_wm_object.erl @@ -40,15 +40,15 @@ -include_lib("webmachine/include/wm_reqstate.hrl"). -include_lib("kernel/include/logger.hrl"). --spec init(#context{}) -> {ok, #context{}}. +-spec init(#rcs_context{}) -> {ok, #rcs_context{}}. init(Ctx) -> - {ok, Ctx#context{local_context=#key_context{}}}. + {ok, Ctx#rcs_context{local_context=#key_context{}}}. -spec stats_prefix() -> object. stats_prefix() -> object. --spec malformed_request(#wm_reqdata{}, #context{}) -> {false, #wm_reqdata{}, #context{}}. -malformed_request(RD, #context{response_module=ResponseMod} = Ctx) -> +-spec malformed_request(#wm_reqdata{}, #rcs_context{}) -> {false, #wm_reqdata{}, #rcs_context{}}. +malformed_request(RD, #rcs_context{response_module=ResponseMod} = Ctx) -> case riak_cs_wm_utils:extract_key(RD, Ctx) of {error, Reason} -> ResponseMod:api_error(Reason, RD, Ctx); @@ -71,15 +71,15 @@ malformed_request(RD, #context{response_module=ResponseMod} = Ctx) -> %% object ACL and compare the permission requested with the permission %% granted, and allow or deny access. Returns a result suitable for %% directly returning from the {@link forbidden/2} webmachine export. --spec authorize(#wm_reqdata{}, #context{}) -> - {boolean() | {halt, term()}, #wm_reqdata{}, #context{}}. -authorize(RD, Ctx0=#context{local_context=LocalCtx0, - riak_client=RcPid}) -> +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> + {boolean() | {halt, term()}, #wm_reqdata{}, #rcs_context{}}. +authorize(RD, Ctx0=#rcs_context{local_context=LocalCtx0, + riak_client=RcPid}) -> Method = wrq:method(RD), RequestedAccess = riak_cs_acl_utils:requested_access(Method, false), LocalCtx = riak_cs_wm_utils:ensure_doc(LocalCtx0, RcPid), - Ctx = Ctx0#context{requested_perm=RequestedAccess, local_context=LocalCtx}, + Ctx = Ctx0#rcs_context{requested_perm=RequestedAccess, local_context=LocalCtx}, authorize(RD, Ctx, LocalCtx#key_context.bucket_object, Method, LocalCtx#key_context.manifest). @@ -99,7 +99,7 @@ allowed_methods() -> %% TODO: POST ['HEAD', 'GET', 'DELETE', 'PUT']. --spec valid_entity_length(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. +-spec valid_entity_length(#wm_reqdata{}, #rcs_context{}) -> {boolean(), #wm_reqdata{}, #rcs_context{}}. valid_entity_length(RD, Ctx) -> MaxLen = riak_cs_lfs_utils:max_content_len(), case riak_cs_wm_utils:valid_entity_length(MaxLen, RD, Ctx) of @@ -110,9 +110,9 @@ valid_entity_length(RD, Ctx) -> Other end. --spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. -content_types_provided(RD, Ctx=#context{local_context=LocalCtx, - riak_client=RcPid}) -> +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. +content_types_provided(RD, Ctx=#rcs_context{local_context=LocalCtx, + riak_client=RcPid}) -> Mfst = LocalCtx#key_context.manifest, %% TODO: %% As I understand S3, the content types provided @@ -125,7 +125,7 @@ content_types_provided(RD, Ctx=#context{local_context=LocalCtx, ContentType = binary_to_list(Mfst?MANIFEST.content_type), case ContentType of _ -> - UpdCtx = Ctx#context{local_context=UpdLocalCtx}, + UpdCtx = Ctx#rcs_context{local_context=UpdLocalCtx}, {[{ContentType, produce_body}], RD, UpdCtx} end; true -> @@ -134,22 +134,22 @@ content_types_provided(RD, Ctx=#context{local_context=LocalCtx, {[{"text/plain", produce_body}], RD, Ctx} end. --spec generate_etag(#wm_reqdata{}, #context{}) -> {string(), #wm_reqdata{}, #context{}}. -generate_etag(RD, Ctx=#context{local_context=LocalCtx}) -> +-spec generate_etag(#wm_reqdata{}, #rcs_context{}) -> {string(), #wm_reqdata{}, #rcs_context{}}. +generate_etag(RD, Ctx=#rcs_context{local_context=LocalCtx}) -> Mfst = LocalCtx#key_context.manifest, ETag = riak_cs_manifest:etag_no_quotes(Mfst), {ETag, RD, Ctx}. --spec last_modified(#wm_reqdata{}, #context{}) -> {calendar:datetime(), #wm_reqdata{}, #context{}}. -last_modified(RD, Ctx=#context{local_context=LocalCtx}) -> +-spec last_modified(#wm_reqdata{}, #rcs_context{}) -> {calendar:datetime(), #wm_reqdata{}, #rcs_context{}}. +last_modified(RD, Ctx=#rcs_context{local_context=LocalCtx}) -> Mfst = LocalCtx#key_context.manifest, ErlDate = riak_cs_wm_utils:iso_8601_to_erl_date(Mfst?MANIFEST.created), {ErlDate, RD, Ctx}. --spec produce_body(#wm_reqdata{}, #context{}) -> - {{known_length_stream, non_neg_integer(), {<<>>, function()}}, #wm_reqdata{}, #context{}}. -produce_body(RD, Ctx=#context{local_context=LocalCtx, - response_module=ResponseMod}) -> +-spec produce_body(#wm_reqdata{}, #rcs_context{}) -> + {{known_length_stream, non_neg_integer(), {<<>>, function()}}, #wm_reqdata{}, #rcs_context{}}. +produce_body(RD, Ctx=#rcs_context{local_context=LocalCtx, + response_module=ResponseMod}) -> #key_context{get_fsm_pid=GetFsmPid, manifest=Mfst} = LocalCtx, ResourceLength = Mfst?MANIFEST.content_length, case parse_range(RD, ResourceLength) of @@ -164,11 +164,11 @@ produce_body(RD, Ctx=#context{local_context=LocalCtx, produce_body(RD, Ctx, RangeIndexes, RespRange) end. -produce_body(RD, Ctx=#context{rc_pool=RcPool, - riak_client=RcPid, - local_context=LocalCtx, - start_time=StartTime, - user=User}, +produce_body(RD, Ctx=#rcs_context{rc_pool=RcPool, + riak_client=RcPid, + local_context=LocalCtx, + start_time=StartTime, + user=User}, {Start, End}, RespRange) -> #key_context{get_fsm_pid = GetFsmPid, manifest = ?MANIFEST{bkey = {Bucket, File}, @@ -203,7 +203,7 @@ produce_body(RD, Ctx=#context{rc_pool=RcPool, %% Streaming by `known_length_stream' and `StreamBody' function %% will be handled *after* WM's `finish_request' callback complets. %% Use `no_stats` to avoid auto stats update by `riak_cs_wm_common'. - {Ctx#context{auto_rc_close=false, stats_key=no_stats}, + {Ctx#rcs_context{auto_rc_close=false, stats_key=no_stats}, {<<>>, fun() -> riak_cs_wm_utils:streaming_get( RcPool, RcPid, GetFsmPid, StartTime, UserName, BFile_str) @@ -234,14 +234,14 @@ parse_range(RD, ResourceLength) -> end. %% @doc Callback for deleting an object. --spec delete_resource(#wm_reqdata{}, #context{}) -> {true, #wm_reqdata{}, #context{}}. -delete_resource(RD, Ctx=#context{local_context=LocalCtx, riak_client=RcPid}) -> +-spec delete_resource(#wm_reqdata{}, #rcs_context{}) -> {true, #wm_reqdata{}, #rcs_context{}}. +delete_resource(RD, Ctx=#rcs_context{local_context=LocalCtx, riak_client=RcPid}) -> #key_context{bucket=Bucket, key = Key, obj_vsn = ObjVsn, get_fsm_pid = GetFsmPid} = LocalCtx, BFile_str = bfile_str(Bucket, Key, ObjVsn), - UserName = riak_cs_wm_utils:extract_name(Ctx#context.user), + UserName = riak_cs_wm_utils:extract_name(Ctx#rcs_context.user), riak_cs_dtrace:dt_object_entry(?MODULE, <<"object_delete">>, [], [UserName, BFile_str]), riak_cs_get_fsm:stop(GetFsmPid), @@ -257,17 +257,17 @@ handle_delete_object({ok, _UUIDsMarkedforDelete}, UserName, BFile_str, RD, Ctx) riak_cs_dtrace:dt_object_return(?MODULE, <<"object_delete">>, [1], [UserName, BFile_str]), {true, RD, Ctx}. --spec content_types_accepted(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_accepted(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_accepted(RD, Ctx) -> content_types_accepted(wrq:get_req_header("Content-Type", RD), RD, Ctx). --spec content_types_accepted(undefined | string(), #wm_reqdata{}, #context{}) -> - {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_accepted(undefined | string(), #wm_reqdata{}, #rcs_context{}) -> + {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_accepted(CT, RD, Ctx) when CT =:= undefined; CT =:= [] -> content_types_accepted("application/octet-stream", RD, Ctx); -content_types_accepted(CT, RD, Ctx=#context{local_context=LocalCtx0}) -> +content_types_accepted(CT, RD, Ctx=#rcs_context{local_context=LocalCtx0}) -> %% This was shamelessly ripped out of %% https://github.com/basho/riak_kv/blob/0d91ca641a309f2962a216daa0cee869c82ffe26/src/riak_kv_wm_object.erl#L492 {Media, _Params} = mochiweb_util:parse_header(CT), @@ -275,7 +275,7 @@ content_types_accepted(CT, RD, Ctx=#context{local_context=LocalCtx0}) -> [_Type, _Subtype] -> %% accept whatever the user says LocalCtx = LocalCtx0#key_context{putctype=Media}, - {[{Media, add_acl_to_context_then_accept}], RD, Ctx#context{local_context=LocalCtx}}; + {[{Media, add_acl_to_context_then_accept}], RD, Ctx#rcs_context{local_context=LocalCtx}}; _ -> %% TODO: %% Maybe we should have caught @@ -292,11 +292,11 @@ content_types_accepted(CT, RD, Ctx=#context{local_context=LocalCtx0}) -> Ctx} end. --spec accept_body(#wm_reqdata{}, #context{}) -> - {{halt, integer()}, #wm_reqdata{}, #context{}}. -accept_body(RD, Ctx=#context{riak_client=RcPid, - local_context=LocalCtx, - response_module=ResponseMod}) +-spec accept_body(#wm_reqdata{}, #rcs_context{}) -> + {{halt, integer()}, #wm_reqdata{}, #rcs_context{}}. +accept_body(RD, Ctx=#rcs_context{riak_client=RcPid, + local_context=LocalCtx, + response_module=ResponseMod}) when LocalCtx#key_context.update_metadata == true -> %% zero-body put copy - just updating metadata #key_context{bucket=Bucket, key=Key, obj_vsn = ObjVsn, manifest=Mfst} = LocalCtx, @@ -313,24 +313,24 @@ accept_body(RD, Ctx=#context{riak_client=RcPid, {error, Err} -> ResponseMod:api_error(Err, RD, Ctx) end; -accept_body(RD, #context{response_module=ResponseMod} = Ctx) -> +accept_body(RD, #rcs_context{response_module=ResponseMod} = Ctx) -> case riak_cs_copy_object:get_copy_source(RD) of undefined -> handle_normal_put(RD, Ctx); {error, _} = Err -> ResponseMod:api_error(Err, RD, Ctx); {SrcBucket, SrcKey, SrcObjVsn} -> - handle_copy_put(RD, Ctx#context{stats_key=[object, put_copy]}, + handle_copy_put(RD, Ctx#rcs_context{stats_key=[object, put_copy]}, SrcBucket, SrcKey, SrcObjVsn) end. --spec handle_normal_put(#wm_reqdata{}, #context{}) -> - {{halt, integer()}, #wm_reqdata{}, #context{}}. +-spec handle_normal_put(#wm_reqdata{}, #rcs_context{}) -> + {{halt, integer()}, #wm_reqdata{}, #rcs_context{}}. handle_normal_put(RD, Ctx0) -> - #context{local_context=LocalCtx, - user=User, - acl=ACL, - riak_client=RcPid} = Ctx0, + #rcs_context{local_context=LocalCtx, + user=User, + acl=ACL, + riak_client=RcPid} = Ctx0, #key_context{bucket = Bucket, key = Key, obj_vsn = SuppliedVsn, @@ -339,7 +339,7 @@ handle_normal_put(RD, Ctx0) -> get_fsm_pid = GetFsmPid} = LocalCtx, EventualVsn = determine_object_version(SuppliedVsn, Bucket, Key, RcPid), - Ctx1 = Ctx0#context{local_context = LocalCtx#key_context{obj_vsn = EventualVsn}}, + Ctx1 = Ctx0#rcs_context{local_context = LocalCtx#key_context{obj_vsn = EventualVsn}}, BFile_str = bfile_str(Bucket, Key, EventualVsn), UserName = riak_cs_wm_utils:extract_name(User), @@ -385,13 +385,13 @@ determine_object_version(Vsn0, Bucket, Key, RcPid) -> end. %% @doc the head is PUT copy path --spec handle_copy_put(#wm_reqdata{}, #context{}, binary(), binary(), binary()) -> - {boolean()|{halt, integer()}, #wm_reqdata{}, #context{}}. +-spec handle_copy_put(#wm_reqdata{}, #rcs_context{}, binary(), binary(), binary()) -> + {boolean()|{halt, integer()}, #wm_reqdata{}, #rcs_context{}}. handle_copy_put(RD, Ctx, SrcBucket, SrcKey, SrcObjVsn) -> - #context{local_context=LocalCtx, - response_module=ResponseMod, - acl=Acl, - riak_client=RcPid} = Ctx, + #rcs_context{local_context=LocalCtx, + response_module=ResponseMod, + acl=Acl, + riak_client=RcPid} = Ctx, %% manifest is always notfound|undefined here #key_context{bucket = Bucket, key = Key, obj_vsn = ObjVsn, get_fsm_pid = GetFsmPid} = LocalCtx, @@ -434,7 +434,7 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey, SrcObjVsn) -> ETag = riak_cs_manifest:etag(DstManifest), RD2 = wrq:set_resp_header("ETag", ETag, RD), ResponseMod:copy_object_response(DstManifest, RD2, - Ctx#context{local_context=LocalCtx}); + Ctx#rcs_context{local_context=LocalCtx}); {true, _RD, _OtherCtx} -> %% access to source object not authorized %% TODO: check the return value / http status @@ -460,15 +460,15 @@ handle_copy_put(RD, Ctx, SrcBucket, SrcKey, SrcObjVsn) -> riak_cs_riak_client:checkin(ReadRcPid) end. --spec accept_streambody(#wm_reqdata{}, #context{}, pid(), term()) -> {{halt, integer()}, #wm_reqdata{}, #context{}}. +-spec accept_streambody(#wm_reqdata{}, #rcs_context{}, pid(), term()) -> {{halt, integer()}, #wm_reqdata{}, #rcs_context{}}. accept_streambody(RD, - Ctx=#context{local_context=_LocalCtx=#key_context{size=0}}, + Ctx=#rcs_context{local_context=_LocalCtx=#key_context{size=0}}, Pid, {_Data, _Next}) -> finalize_request(RD, Ctx, Pid); accept_streambody(RD, - Ctx=#context{local_context=LocalCtx, - user=User}, + Ctx=#rcs_context{local_context=LocalCtx, + user=User}, Pid, {Data, Next}) -> #key_context{bucket = Bucket, @@ -487,12 +487,12 @@ accept_streambody(RD, %% TODO: %% We need to do some checking to make sure the bucket exists %% for the user who is doing this PUT --spec finalize_request(#wm_reqdata{}, #context{}, pid()) -> {{halt, 200}, #wm_reqdata{}, #context{}}. +-spec finalize_request(#wm_reqdata{}, #rcs_context{}, pid()) -> {{halt, 200}, #wm_reqdata{}, #rcs_context{}}. finalize_request(RD, - Ctx=#context{local_context = LocalCtx, - response_module = ResponseMod, - user = User, - riak_client = _RcPid}, + Ctx=#rcs_context{local_context = LocalCtx, + response_module = ResponseMod, + user = User, + riak_client = _RcPid}, Pid) -> #key_context{bucket = Bucket, key = Key, @@ -521,7 +521,7 @@ finalize_request(RD, riak_cs_dtrace:dt_object_return(?MODULE, <<"object_put">>, [S], [UserName, BFile_str]), Response. -check_0length_metadata_update(Length, RD, Ctx=#context{local_context=LocalCtx}) -> +check_0length_metadata_update(Length, RD, Ctx=#rcs_context{local_context=LocalCtx}) -> %% The authorize() callback has already been called, which means %% that ensure_doc() has been called, so the local context %% manifest is up-to-date: the object exists or it doesn't. @@ -529,13 +529,12 @@ check_0length_metadata_update(Length, RD, Ctx=#context{local_context=LocalCtx}) zero_length_metadata_update_p(Length, RD)) of false -> UpdLocalCtx = LocalCtx#key_context{size=Length}, - {true, RD, Ctx#context{local_context=UpdLocalCtx}}; + {true, RD, Ctx#rcs_context{local_context=UpdLocalCtx}}; true -> UpdLocalCtx = LocalCtx#key_context{size=Length, update_metadata=true}, - {true, RD, Ctx#context{ - stats_key=[object, put_copy], - local_context=UpdLocalCtx}} + {true, RD, Ctx#rcs_context{stats_key=[object, put_copy], + local_context=UpdLocalCtx}} end. zero_length_metadata_update_p(0, RD) -> diff --git a/apps/riak_cs/src/riak_cs_wm_object_acl.erl b/apps/riak_cs/src/riak_cs_wm_object_acl.erl index 81c774c39..babc1fb3b 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_acl.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_acl.erl @@ -35,13 +35,13 @@ -include_lib("webmachine/include/webmachine.hrl"). init(Ctx) -> - {ok, Ctx#context{local_context=#key_context{}}}. + {ok, Ctx#rcs_context{local_context=#key_context{}}}. -spec stats_prefix() -> object_acl. stats_prefix() -> object_acl. --spec malformed_request(#wm_reqdata{}, #context{}) -> {false, #wm_reqdata{}, #context{}}. -malformed_request(RD, #context{response_module=ResponseMod} = Ctx) -> +-spec malformed_request(#wm_reqdata{}, #rcs_context{}) -> {false, #wm_reqdata{}, #rcs_context{}}. +malformed_request(RD, #rcs_context{response_module=ResponseMod} = Ctx) -> case riak_cs_wm_utils:has_acl_header_and_body(RD) of true -> ResponseMod:api_error(unexpected_content, RD, Ctx); @@ -58,13 +58,13 @@ malformed_request(RD, #context{response_module=ResponseMod} = Ctx) -> %% object ACL and compare the permission requested with the permission %% granted, and allow or deny access. Returns a result suitable for %% directly returning from the {@link forbidden/2} webmachine export. -authorize(RD, Ctx0=#context{local_context=LocalCtx0, riak_client=RcPid}) -> +authorize(RD, Ctx0=#rcs_context{local_context=LocalCtx0, riak_client=RcPid}) -> Method = wrq:method(RD), RequestedAccess = %% This is really the only difference between authorize/2 in this module and riak_cs_wm_object riak_cs_acl_utils:requested_access(Method, true), LocalCtx = riak_cs_wm_utils:ensure_doc(LocalCtx0, RcPid), - Ctx = Ctx0#context{requested_perm=RequestedAccess,local_context=LocalCtx}, + Ctx = Ctx0#rcs_context{requested_perm=RequestedAccess,local_context=LocalCtx}, authorize(RD, Ctx, LocalCtx#key_context.bucket_object, Method, LocalCtx#key_context.manifest). @@ -84,9 +84,9 @@ allowed_methods() -> ['GET', 'PUT']. --spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. -content_types_provided(RD, Ctx=#context{local_context=LocalCtx, - riak_client=RcPid}) -> +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. +content_types_provided(RD, Ctx=#rcs_context{local_context=LocalCtx, + riak_client=RcPid}) -> Mfst = LocalCtx#key_context.manifest, %% TODO: %% As I understand S3, the content types provided @@ -99,7 +99,7 @@ content_types_provided(RD, Ctx=#context{local_context=LocalCtx, ContentType = binary_to_list(Mfst?MANIFEST.content_type), case ContentType of _ -> - UpdCtx = Ctx#context{local_context=UpdLocalCtx}, + UpdCtx = Ctx#rcs_context{local_context=UpdLocalCtx}, {[{ContentType, produce_body}], RD, UpdCtx} end; true -> @@ -108,15 +108,15 @@ content_types_provided(RD, Ctx=#context{local_context=LocalCtx, {[{"text/plain", produce_body}], RD, Ctx} end. --spec content_types_accepted(term(), term()) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. -content_types_accepted(RD, Ctx=#context{local_context=LocalCtx0}) -> +-spec content_types_accepted(term(), term()) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. +content_types_accepted(RD, Ctx=#rcs_context{local_context=LocalCtx0}) -> case wrq:get_req_header("Content-Type", RD) of undefined -> DefaultCType = "application/octet-stream", LocalCtx = LocalCtx0#key_context{putctype=DefaultCType}, {[{DefaultCType, add_acl_to_context_then_accept}], RD, - Ctx#context{local_context=LocalCtx}}; + Ctx#rcs_context{local_context=LocalCtx}}; %% This was shamelessly ripped out of %% https://github.com/basho/riak_kv/blob/0d91ca641a309f2962a216daa0cee869c82ffe26/src/riak_kv_wm_object.erl#L492 CType -> @@ -125,7 +125,7 @@ content_types_accepted(RD, Ctx=#context{local_context=LocalCtx0}) -> [_Type, _Subtype] -> %% accept whatever the user says LocalCtx = LocalCtx0#key_context{putctype=Media}, - {[{Media, add_acl_to_context_then_accept}], RD, Ctx#context{local_context=LocalCtx}}; + {[{Media, add_acl_to_context_then_accept}], RD, Ctx#rcs_context{local_context=LocalCtx}}; _ -> %% TODO: %% Maybe we should have caught @@ -145,9 +145,9 @@ content_types_accepted(RD, Ctx=#context{local_context=LocalCtx0}) -> -spec produce_body(term(), term()) -> {iolist()|binary(), term(), term()}. -produce_body(RD, Ctx=#context{local_context=LocalCtx, - requested_perm='READ_ACP', - user=User}) -> +produce_body(RD, Ctx=#rcs_context{local_context=LocalCtx, + requested_perm='READ_ACP', + user=User}) -> #key_context{get_fsm_pid = GetFsmPid, manifest = ?MANIFEST{bkey = {Bucket, File}, vsn = Vsn, @@ -167,18 +167,18 @@ produce_body(RD, Ctx=#context{local_context=LocalCtx, -spec accept_body(term(), term()) -> {boolean() | {halt, term()}, term(), term()}. -accept_body(RD, Ctx = #context{local_context = #key_context{get_fsm_pid = GetFsmPid, - manifest = Mfst, - key = Key, - obj_vsn = Vsn, - bucket = Bucket}, - user = User, - acl = AclFromHeadersOrDefault, - requested_perm = 'WRITE_ACP', - riak_client = RcPid}) when Bucket /= undefined, - Key /= undefined, - Mfst /= undefined, - RcPid /= undefined -> +accept_body(RD, Ctx = #rcs_context{local_context = #key_context{get_fsm_pid = GetFsmPid, + manifest = Mfst, + key = Key, + obj_vsn = Vsn, + bucket = Bucket}, + user = User, + acl = AclFromHeadersOrDefault, + requested_perm = 'WRITE_ACP', + riak_client = RcPid}) when Bucket /= undefined, + Key /= undefined, + Mfst /= undefined, + RcPid /= undefined -> BFile_str = bfile_str(Bucket, Key, Vsn), UserName = riak_cs_wm_utils:extract_name(User), riak_cs_dtrace:dt_object_entry(?MODULE, <<"object_put_acl">>, diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload.erl b/apps/riak_cs/src/riak_cs_wm_object_upload.erl index 89ae69bd5..c4d237cd9 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_upload.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_upload.erl @@ -35,15 +35,15 @@ -include("riak_cs.hrl"). -include_lib("webmachine/include/webmachine.hrl"). --spec init(#context{}) -> {ok, #context{}}. +-spec init(#rcs_context{}) -> {ok, #rcs_context{}}. init(Ctx) -> - {ok, Ctx#context{local_context=#key_context{}}}. + {ok, Ctx#rcs_context{local_context=#key_context{}}}. -spec stats_prefix() -> multipart. stats_prefix() -> multipart. --spec malformed_request(#wm_reqdata{}, #context{}) -> {false, #wm_reqdata{}, #context{}}. -malformed_request(RD, #context{response_module=ResponseMod} = Ctx) -> +-spec malformed_request(#wm_reqdata{}, #rcs_context{}) -> {false, #wm_reqdata{}, #rcs_context{}}. +malformed_request(RD, #rcs_context{response_module=ResponseMod} = Ctx) -> case riak_cs_wm_utils:extract_key(RD, Ctx) of {error, Reason} -> ResponseMod:api_error(Reason, RD, Ctx); @@ -61,14 +61,14 @@ malformed_request(RD, #context{response_module=ResponseMod} = Ctx) -> %% object ACL and compare the permission requested with the permission %% granted, and allow or deny access. Returns a result suitable for %% directly returning from the {@link forbidden/2} webmachine export. --spec authorize(#wm_reqdata{}, #context{}) -> - {boolean() | {halt, term()}, #wm_reqdata{}, #context{}}. -authorize(RD, Ctx0=#context{local_context=LocalCtx0, riak_client=RcPid}) -> +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> + {boolean() | {halt, term()}, #wm_reqdata{}, #rcs_context{}}. +authorize(RD, Ctx0=#rcs_context{local_context=LocalCtx0, riak_client=RcPid}) -> Method = wrq:method(RD), RequestedAccess = riak_cs_acl_utils:requested_access(Method, false), LocalCtx = riak_cs_wm_utils:ensure_doc(LocalCtx0, RcPid), - Ctx = Ctx0#context{requested_perm=RequestedAccess,local_context=LocalCtx}, + Ctx = Ctx0#rcs_context{requested_perm=RequestedAccess,local_context=LocalCtx}, authorize(RD, Ctx, LocalCtx#key_context.bucket_object). authorize(RD, Ctx, notfound = _BucketObj) -> @@ -92,18 +92,18 @@ process_post(RD, Ctx) -> HaltResponse end. -process_post_helper(RD, Ctx = #context{riak_client = RcPid, - local_context = #key_context{bucket = Bucket, - key = Key, - obj_vsn = ObjVsn}, - acl = ACL}) -> +process_post_helper(RD, Ctx = #rcs_context{riak_client = RcPid, + local_context = #key_context{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn}, + acl = ACL}) -> ContentType = try list_to_binary(wrq:get_req_header("Content-Type", RD)) catch error:badarg -> %% Per http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadInitiate.html <<"binary/octet-stream">> end, - User = riak_cs_user:to_3tuple(Ctx#context.user), + User = riak_cs_user:to_3tuple(Ctx#rcs_context.user), Metadata = riak_cs_wm_utils:extract_user_metadata(RD), Opts = [{acl, ACL}, {meta_data, Metadata}], @@ -127,8 +127,8 @@ process_post_helper(RD, Ctx = #context{riak_client = RcPid, riak_cs_s3_response:api_error(Reason, RD, Ctx) end. --spec valid_entity_length(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. -valid_entity_length(RD, Ctx=#context{local_context=LocalCtx}) -> +-spec valid_entity_length(#wm_reqdata{}, #rcs_context{}) -> {boolean(), #wm_reqdata{}, #rcs_context{}}. +valid_entity_length(RD, Ctx=#rcs_context{local_context=LocalCtx}) -> case wrq:method(RD) of 'PUT' -> case catch( @@ -141,7 +141,7 @@ valid_entity_length(RD, Ctx=#context{local_context=LocalCtx}) -> entity_too_large, RD, Ctx); true -> UpdLocalCtx = LocalCtx#key_context{size=Length}, - {true, RD, Ctx#context{local_context=UpdLocalCtx}} + {true, RD, Ctx#rcs_context{local_context=UpdLocalCtx}} end; _ -> {false, RD, Ctx} @@ -150,8 +150,8 @@ valid_entity_length(RD, Ctx=#context{local_context=LocalCtx}) -> {true, RD, Ctx} end. --spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. -content_types_provided(RD, Ctx=#context{}) -> +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. +content_types_provided(RD, Ctx=#rcs_context{}) -> Method = wrq:method(RD), if Method == 'POST' -> {[{?XML_TYPE, unused_callback}], RD, Ctx}; @@ -161,6 +161,6 @@ content_types_provided(RD, Ctx=#context{}) -> {[{"text/plain", unused_callback}], RD, Ctx} end. --spec content_types_accepted(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_accepted(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_accepted(RD, Ctx) -> riak_cs_mp_utils:make_content_types_accepted(RD, Ctx). diff --git a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl index 7e2556405..5b0b39301 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_upload_part.erl @@ -41,17 +41,17 @@ -include_lib("xmerl/include/xmerl.hrl"). -include_lib("kernel/include/logger.hrl"). --spec init(#context{}) -> {ok, #context{}}. +-spec init(#rcs_context{}) -> {ok, #rcs_context{}}. init(Ctx) -> - %% {ok, Ctx#context{local_context=#key_context{}}}. - {ok, Ctx#context{local_context=#key_context{}}}. + %% {ok, Ctx#rcs_context{local_context=#key_context{}}}. + {ok, Ctx#rcs_context{local_context=#key_context{}}}. -spec stats_prefix() -> multipart_upload. stats_prefix() -> multipart_upload. --spec malformed_request(#wm_reqdata{}, #context{}) -> - {false, #wm_reqdata{}, #context{}} | {{halt, pos_integer()}, #wm_reqdata{}, #context{}}. -malformed_request(RD, #context{response_module=ResponseMod} = Ctx) -> +-spec malformed_request(#wm_reqdata{}, #rcs_context{}) -> + {false, #wm_reqdata{}, #rcs_context{}} | {{halt, pos_integer()}, #wm_reqdata{}, #rcs_context{}}. +malformed_request(RD, #rcs_context{response_module=ResponseMod} = Ctx) -> Method = wrq:method(RD), case Method == 'PUT' andalso not valid_part_number(RD) of %% For multipart upload part, @@ -78,14 +78,14 @@ valid_part_number(RD) -> %% object ACL and compare the permission requested with the permission %% granted, and allow or deny access. Returns a result suitable for %% directly returning from the {@link forbidden/2} webmachine export. --spec authorize(#wm_reqdata{}, #context{}) -> - {boolean() | {halt, term()}, #wm_reqdata{}, #context{}}. -authorize(RD, Ctx0=#context{local_context=LocalCtx0, riak_client=RcPid}) -> +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> + {boolean() | {halt, term()}, #wm_reqdata{}, #rcs_context{}}. +authorize(RD, Ctx0=#rcs_context{local_context=LocalCtx0, riak_client=RcPid}) -> Method = wrq:method(RD), RequestedAccess = riak_cs_acl_utils:requested_access(Method, false), LocalCtx = riak_cs_wm_utils:ensure_doc(LocalCtx0, RcPid), - Ctx = Ctx0#context{requested_perm=RequestedAccess, local_context=LocalCtx}, + Ctx = Ctx0#rcs_context{requested_perm=RequestedAccess, local_context=LocalCtx}, authorize(RD, Ctx, LocalCtx#key_context.bucket_object, Method, LocalCtx#key_context.manifest). @@ -111,11 +111,11 @@ allowed_methods() -> post_is_create(RD, Ctx) -> {false, RD, Ctx}. -process_post(RD, Ctx = #context{riak_client = RcPid, - local_context = #key_context{bucket = Bucket, - key = Key, - obj_vsn = ObjVsn}}) -> - User = riak_cs_user:to_3tuple(Ctx#context.user), +process_post(RD, Ctx = #rcs_context{riak_client = RcPid, + local_context = #key_context{bucket = Bucket, + key = Key, + obj_vsn = ObjVsn}}) -> + User = riak_cs_user:to_3tuple(Ctx#rcs_context.user), UploadId64 = re:replace(wrq:path(RD), ".*/uploads/", "", [{return, binary}]), Body = binary_to_list(wrq:req_body(RD)), case {parse_body(Body), catch base64url:decode(UploadId64)} of @@ -155,15 +155,15 @@ process_post(RD, Ctx = #context{riak_client = RcPid, response_location(Bucket, Key) -> iolist_to_binary(["http://", Bucket, ".", riak_cs_config:root_host(), "/", Key]). --spec valid_entity_length(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. +-spec valid_entity_length(#wm_reqdata{}, #rcs_context{}) -> {boolean(), #wm_reqdata{}, #rcs_context{}}. valid_entity_length(RD, Ctx) -> MaxLen = riak_cs_lfs_utils:max_content_len(), riak_cs_wm_utils:valid_entity_length(MaxLen, RD, Ctx). --spec delete_resource(#wm_reqdata{}, #context{}) -> - {boolean() | {'halt', term()}, #wm_reqdata{}, #context{}}. -delete_resource(RD, Ctx=#context{local_context=LocalCtx, - riak_client=RcPid}) -> +-spec delete_resource(#wm_reqdata{}, #rcs_context{}) -> + {boolean() | {'halt', term()}, #wm_reqdata{}, #rcs_context{}}. +delete_resource(RD, Ctx=#rcs_context{local_context=LocalCtx, + riak_client=RcPid}) -> ReqUploadId = wrq:path_info('uploadId', RD), case (catch base64url:decode(ReqUploadId)) of {'EXIT', _Reason} -> @@ -172,7 +172,7 @@ delete_resource(RD, Ctx=#context{local_context=LocalCtx, #key_context{bucket = Bucket, key = Key, obj_vsn = ObjVsn} = LocalCtx, - User = riak_cs_user:to_3tuple(Ctx#context.user), + User = riak_cs_user:to_3tuple(Ctx#rcs_context.user), case riak_cs_mp_utils:abort_multipart_upload( Bucket, Key, ObjVsn, UploadId, User, RcPid) of @@ -185,8 +185,9 @@ delete_resource(RD, Ctx=#context{local_context=LocalCtx, end end. --spec content_types_provided(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. -content_types_provided(RD, Ctx=#context{}) -> +-spec content_types_provided(#wm_reqdata{}, #rcs_context{}) -> + {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. +content_types_provided(RD, Ctx=#rcs_context{}) -> Method = wrq:method(RD), if Method == 'GET' -> {[{?XML_TYPE, to_xml}], RD, Ctx}; @@ -200,7 +201,7 @@ content_types_provided(RD, Ctx=#context{}) -> {[{"text/plain", unused_callback2}], RD, Ctx} end. --spec content_types_accepted(#wm_reqdata{}, #context{}) -> {[{string(), atom()}], #wm_reqdata{}, #context{}}. +-spec content_types_accepted(#wm_reqdata{}, #rcs_context{}) -> {[{string(), atom()}], #wm_reqdata{}, #rcs_context{}}. content_types_accepted(RD, Ctx) -> %% For multipart upload part, %% e.g., PUT /ObjectName?partNumber=PartNumber&uploadId=UploadId @@ -220,9 +221,9 @@ parse_body(Body0) -> bad end. --spec accept_body(#wm_reqdata{}, #context{}) -> - {{halt, integer()}, #wm_reqdata{}, #context{}}. -accept_body(RD, #context{local_context=LocalCtx0} = Ctx0) -> +-spec accept_body(#wm_reqdata{}, #rcs_context{}) -> + {{halt, integer()}, #wm_reqdata{}, #rcs_context{}}. +accept_body(RD, #rcs_context{local_context=LocalCtx0} = Ctx0) -> catch riak_cs_get_fsm:stop(LocalCtx0#key_context.get_fsm_pid), try @@ -233,15 +234,15 @@ accept_body(RD, #context{local_context=LocalCtx0} = Ctx0) -> {t, riak_cs_utils:safe_list_to_integer(wrq:get_qs_value("partNumber", RD))}, LocalCtx = LocalCtx0#key_context{upload_id=UploadId, part_number=PartNumber}, - Ctx = Ctx0#context{local_context=LocalCtx}, + Ctx = Ctx0#rcs_context{local_context=LocalCtx}, validate_copy_header(RD, Ctx) catch error:{badmatch, {t, _}} -> {{halt, 400}, RD, Ctx0} end. -validate_copy_header(RD, #context{response_module=ResponseMod, - local_context=LocalCtx} = Ctx) -> +validate_copy_header(RD, #rcs_context{response_module=ResponseMod, + local_context=LocalCtx} = Ctx) -> case riak_cs_copy_object:get_copy_source(RD) of {error, Reason} -> riak_cs_s3_response:api_error(Reason, RD, Ctx); @@ -257,7 +258,7 @@ validate_copy_header(RD, #context{response_module=ResponseMod, {ok, SrcManifest} -> {Start,End} = riak_cs_copy_object:copy_range(RD, SrcManifest), validate_part_size(RD, - Ctx#context{stats_key=[multipart_upload, put_copy]}, + Ctx#rcs_context{stats_key=[multipart_upload, put_copy]}, End - Start + 1, SrcManifest, ReadRcPid) end @@ -266,7 +267,7 @@ validate_copy_header(RD, #context{response_module=ResponseMod, end end. -validate_part_size(RD, #context{response_module=ResponseMod} = Ctx, +validate_part_size(RD, #rcs_context{response_module=ResponseMod} = Ctx, ExactSize, SrcManifest, ReadRcPid) -> case ExactSize =< riak_cs_lfs_utils:max_content_len() of false -> @@ -275,12 +276,12 @@ validate_part_size(RD, #context{response_module=ResponseMod} = Ctx, prepare_part_upload(RD, Ctx, ExactSize, SrcManifest, ReadRcPid) end. -prepare_part_upload(RD, #context{riak_client = RcPid, - local_context = LocalCtx0} = Ctx0, - ExactSize, SrcManifest, ReadRcPid) -> +prepare_part_upload(RD, #rcs_context{riak_client = RcPid, + local_context = LocalCtx0} = Ctx0, + ExactSize, SrcManifest, ReadRcPid) -> #key_context{bucket = DstBucket, key = Key, obj_vsn = ObjVsn, upload_id = UploadId, part_number = PartNumber} = LocalCtx0, - Caller = riak_cs_user:to_3tuple(Ctx0#context.user), + Caller = riak_cs_user:to_3tuple(Ctx0#rcs_context.user), case riak_cs_mp_utils:upload_part(DstBucket, Key, ObjVsn, UploadId, PartNumber, ExactSize, Caller, RcPid) of {error, notfound} -> @@ -289,7 +290,7 @@ prepare_part_upload(RD, #context{riak_client = RcPid, riak_cs_s3_response:api_error(Reason, RD, Ctx0); {upload_part_ready, PartUUID, PutPid} -> LocalCtx = LocalCtx0#key_context{part_uuid = PartUUID}, - Ctx = Ctx0#context{local_context = LocalCtx}, + Ctx = Ctx0#rcs_context{local_context = LocalCtx}, case SrcManifest of undefined -> BlockSize = riak_cs_lfs_utils:block_size(), @@ -303,15 +304,15 @@ prepare_part_upload(RD, #context{riak_client = RcPid, end end. --spec accept_streambody(#wm_reqdata{}, #context{}, pid(), term()) -> {{halt, integer()}, #wm_reqdata{}, #context{}}. +-spec accept_streambody(#wm_reqdata{}, #rcs_context{}, pid(), term()) -> {{halt, integer()}, #wm_reqdata{}, #rcs_context{}}. accept_streambody(RD, - Ctx=#context{local_context=_LocalCtx=#key_context{size=0}}, + Ctx=#rcs_context{local_context=_LocalCtx=#key_context{size=0}}, Pid, {_Data, _Next}) -> finalize_request(RD, Ctx, Pid); accept_streambody(RD, - Ctx=#context{local_context=LocalCtx, - user=User}, + Ctx=#rcs_context{local_context=LocalCtx, + user=User}, Pid, {Data, Next}) -> #key_context{bucket=Bucket, @@ -326,12 +327,12 @@ accept_streambody(RD, finalize_request(RD, Ctx, Pid) end. -to_xml(RD, Ctx = #context{local_context = #key_context{bucket = Bucket, key = Key, obj_vsn = Vsn}, - riak_client = RcPid}) -> +to_xml(RD, Ctx = #rcs_context{local_context = #key_context{bucket = Bucket, key = Key, obj_vsn = Vsn}, + riak_client = RcPid}) -> UploadId = base64url:decode(re:replace(wrq:path(RD), ".*/uploads/", "", [{return, binary}])), {UserDisplay, _Canon, UserKeyId} = User = - riak_cs_user:to_3tuple(Ctx#context.user), + riak_cs_user:to_3tuple(Ctx#rcs_context.user), case riak_cs_mp_utils:list_parts(Bucket, Key, Vsn, UploadId, User, [], RcPid) of {ok, Ps} -> Us = [{'Part', @@ -377,16 +378,16 @@ to_xml(RD, Ctx = #context{local_context = #key_context{bucket = Bucket, key = Ke end. -finalize_request(RD, Ctx=#context{local_context=LocalCtx, - response_module=ResponseMod, - riak_client=RcPid}, PutPid) -> +finalize_request(RD, Ctx=#rcs_context{local_context=LocalCtx, + response_module=ResponseMod, + riak_client=RcPid}, PutPid) -> #key_context{bucket = Bucket, key = Key, obj_vsn = ObjVsn, upload_id = UploadId, part_number = PartNumber, part_uuid = PartUUID} = LocalCtx, - Caller = riak_cs_user:to_3tuple(Ctx#context.user), + Caller = riak_cs_user:to_3tuple(Ctx#rcs_context.user), ContentMD5 = wrq:get_req_header("content-md5", RD), case riak_cs_put_fsm:finalize(PutPid, ContentMD5) of {ok, M} -> @@ -406,16 +407,13 @@ finalize_request(RD, Ctx=#context{local_context=LocalCtx, riak_cs_s3_response:api_error(Reason1, RD, Ctx) end. --spec maybe_copy_part(pid(), lfs_manifest(), riak_client(), - #wm_reqdata{}, #context{}) -> - {{halt, integer()}, #wm_reqdata{}, #context{}}. maybe_copy_part(PutPid, ?MANIFEST{bkey={SrcBucket, SrcKey}, vsn = SrcVsn} = SrcManifest, ReadRcPid, - RD, #context{riak_client=RcPid, - local_context=LocalCtx, - user=User} = Ctx) -> + RD, #rcs_context{riak_client=RcPid, + local_context=LocalCtx, + user=User} = Ctx) -> #key_context{bucket = DstBucket, key = DstKey, obj_vsn = DstVsn, @@ -459,6 +457,6 @@ maybe_copy_part(PutPid, {{halt, 403}, RD, Ctx}; Error -> ?LOG_DEBUG("unknown error: ~p", [Error]), - %% ResponseMod:api_error(Error, RD, Ctx#context{local_context=LocalCtx}) + %% ResponseMod:api_error(Error, RD, Ctx#rcs_context{local_context=LocalCtx}) Error end. diff --git a/apps/riak_cs/src/riak_cs_wm_object_versions.erl b/apps/riak_cs/src/riak_cs_wm_object_versions.erl index e01a699a1..b0e7dfe88 100644 --- a/apps/riak_cs/src/riak_cs_wm_object_versions.erl +++ b/apps/riak_cs/src/riak_cs_wm_object_versions.erl @@ -38,9 +38,9 @@ -define(RIAKCPOOL, bucket_list_pool). --spec init(#context{}) -> {ok, #context{}}. +-spec init(#rcs_context{}) -> {ok, #rcs_context{}}. init(Ctx) -> - {ok, Ctx#context{rc_pool = ?RIAKCPOOL}}. + {ok, Ctx#rcs_context{rc_pool = ?RIAKCPOOL}}. -spec stats_prefix() -> list_object_versions. stats_prefix() -> list_object_versions. @@ -49,12 +49,12 @@ stats_prefix() -> list_object_versions. allowed_methods() -> ['GET']. --spec authorize(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> {boolean(), #wm_reqdata{}, #rcs_context{}}. authorize(RD, Ctx) -> riak_cs_wm_utils:bucket_access_authorize_helper(bucket, false, RD, Ctx). --spec api_request(#wm_reqdata{}, #context{}) -> {ok, ?LOVRESP{}} | {error, term()}. -api_request(RD, Ctx = #context{bucket = Bucket, +-spec api_request(#wm_reqdata{}, #rcs_context{}) -> {ok, ?LOVRESP{}} | {error, term()}. +api_request(RD, Ctx = #rcs_context{bucket = Bucket, riak_client = RcPid, user = User}) -> UserName = riak_cs_wm_utils:extract_name(User), @@ -63,7 +63,7 @@ api_request(RD, Ctx = #context{bucket = Bucket, versions, [B || B <- riak_cs_bucket:get_buckets(User), B?RCS_BUCKET.name =:= binary_to_list(Bucket)], - Ctx#context.bucket, + Ctx#rcs_context.bucket, get_max_keys(RD), get_options(RD), RcPid), diff --git a/apps/riak_cs/src/riak_cs_wm_objects.erl b/apps/riak_cs/src/riak_cs_wm_objects.erl index 7e77690f2..8292a419b 100644 --- a/apps/riak_cs/src/riak_cs_wm_objects.erl +++ b/apps/riak_cs/src/riak_cs_wm_objects.erl @@ -38,9 +38,9 @@ -define(RIAKCPOOL, bucket_list_pool). --spec init(#context{}) -> {ok, #context{}}. +-spec init(#rcs_context{}) -> {ok, #rcs_context{}}. init(Ctx) -> - {ok, Ctx#context{rc_pool=?RIAKCPOOL}}. + {ok, Ctx#rcs_context{rc_pool=?RIAKCPOOL}}. -spec stats_prefix() -> list_objects. stats_prefix() -> list_objects. @@ -52,12 +52,12 @@ allowed_methods() -> %% TODO: change to authorize/spec/cleanup unneeded cases %% TODO: requires update for multi-delete --spec authorize(#wm_reqdata{}, #context{}) -> {boolean(), #wm_reqdata{}, #context{}}. +-spec authorize(#wm_reqdata{}, #rcs_context{}) -> {boolean(), #wm_reqdata{}, #rcs_context{}}. authorize(RD, Ctx) -> riak_cs_wm_utils:bucket_access_authorize_helper(bucket, false, RD, Ctx). --spec api_request(#wm_reqdata{}, #context{}) -> {ok, ?LORESP{}} | {error, term()}. -api_request(RD, Ctx=#context{bucket=Bucket, +-spec api_request(#wm_reqdata{}, #rcs_context{}) -> {ok, ?LORESP{}} | {error, term()}. +api_request(RD, Ctx=#rcs_context{bucket=Bucket, riak_client=RcPid, user=User}) -> UserName = riak_cs_wm_utils:extract_name(User), @@ -66,7 +66,7 @@ api_request(RD, Ctx=#context{bucket=Bucket, objects, [B || B <- riak_cs_bucket:get_buckets(User), B?RCS_BUCKET.name =:= binary_to_list(Bucket)], - Ctx#context.bucket, + Ctx#rcs_context.bucket, get_max_keys(RD), get_options(RD), RcPid), diff --git a/apps/riak_cs/src/riak_cs_wm_stats.erl b/apps/riak_cs/src/riak_cs_wm_stats.erl index f7251e208..2beb6e7be 100644 --- a/apps/riak_cs/src/riak_cs_wm_stats.erl +++ b/apps/riak_cs/src/riak_cs_wm_stats.erl @@ -40,7 +40,7 @@ init(Props) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"init">>), AuthBypass = not proplists:get_value(admin_auth_enabled, Props), - {ok, #context{auth_bypass = AuthBypass}}. + {ok, #rcs_context{auth_bypass = AuthBypass}}. %% @spec encodings_provided(webmachine:wrq(), context()) -> %% {[encoding()], webmachine:wrq(), context()} @@ -82,7 +82,7 @@ service_available(RD, Ctx) -> true -> case riak_cs_riak_client:checkout() of {ok, Pid} -> - {true, RD, Ctx#context{riak_client = Pid}}; + {true, RD, Ctx#rcs_context{riak_client = Pid}}; _ -> {false, RD, Ctx} end @@ -96,23 +96,23 @@ produce_body(RD, Ctx) -> riak_cs_dtrace:dt_wm_return(?MODULE, <<"produce_body">>), {Body, RD2, Ctx}. -forbidden(RD, Ctx=#context{auth_bypass=AuthBypass}) -> +forbidden(RD, Ctx=#rcs_context{auth_bypass=AuthBypass}) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"forbidden">>), riak_cs_wm_utils:find_and_auth_admin(RD, Ctx, AuthBypass). -finish_request(RD, #context{riak_client=undefined}=Ctx) -> +finish_request(RD, #rcs_context{riak_client=undefined}=Ctx) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"finish_request">>, [0], []), {true, RD, Ctx}; -finish_request(RD, #context{riak_client=RcPid}=Ctx) -> +finish_request(RD, #rcs_context{riak_client=RcPid}=Ctx) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"finish_request">>, [1], []), riak_cs_riak_client:checkin(RcPid), riak_cs_dtrace:dt_wm_return(?MODULE, <<"finish_request">>, [1], []), - {true, RD, Ctx#context{riak_client=undefined}}. + {true, RD, Ctx#rcs_context{riak_client=undefined}}. %% @spec pretty_print(webmachine:wrq(), context()) -> %% {string(), webmachine:wrq(), context()} %% @doc Format the respons JSON object is a "pretty-printed" style. -pretty_print(RD1, C1=#context{}) -> +pretty_print(RD1, C1=#rcs_context{}) -> {Json, RD2, C2} = produce_body(RD1, C1), Body = riak_cs_utils:json_pp_print(lists:flatten(Json)), ETag = riak_cs_utils:etag_from_binary(riak_cs_utils:md5(term_to_binary(Body))), diff --git a/apps/riak_cs/src/riak_cs_wm_usage.erl b/apps/riak_cs/src/riak_cs_wm_usage.erl index bc8059d5f..31e438941 100644 --- a/apps/riak_cs/src/riak_cs_wm_usage.erl +++ b/apps/riak_cs/src/riak_cs_wm_usage.erl @@ -239,8 +239,8 @@ generate_etag(RD, #ctx{etag=Etag}=Ctx) -> {Etag, RD, Ctx}. forbidden(RD, #ctx{auth_bypass=AuthBypass, riak_client=RcPid}=Ctx) -> - BogusContext = #context{auth_bypass=AuthBypass, riak_client=RcPid}, - Next = fun(NewRD, #context{user=User}) -> + BogusContext = #rcs_context{auth_bypass=AuthBypass, riak_client=RcPid}, + Next = fun(NewRD, #rcs_context{user=User}) -> forbidden(NewRD, Ctx, User, AuthBypass) end, Conv2Ctx = fun(_) -> Ctx end, diff --git a/apps/riak_cs/src/riak_cs_wm_user.erl b/apps/riak_cs/src/riak_cs_wm_user.erl index 29b207e87..4180d20f7 100644 --- a/apps/riak_cs/src/riak_cs_wm_user.erl +++ b/apps/riak_cs/src/riak_cs_wm_user.erl @@ -50,9 +50,9 @@ init(Config) -> AuthBypass = not proplists:get_value(admin_auth_enabled, Config), Api = riak_cs_config:api(), RespModule = riak_cs_config:response_module(Api), - {ok, #context{auth_bypass=AuthBypass, - api=Api, - response_module=RespModule}}. + {ok, #rcs_context{auth_bypass=AuthBypass, + api=Api, + response_module=RespModule}}. -spec service_available(term(), term()) -> {true, term(), term()}. service_available(RD, Ctx) -> @@ -64,13 +64,13 @@ allowed_methods(RD, Ctx) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"allowed_methods">>), {['GET', 'HEAD', 'POST', 'PUT'], RD, Ctx}. -forbidden(RD, Ctx=#context{auth_bypass=AuthBypass}) -> +forbidden(RD, Ctx=#rcs_context{auth_bypass=AuthBypass}) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"forbidden">>), Method = wrq:method(RD), AnonOk = ((Method =:= 'PUT' orelse Method =:= 'POST') andalso riak_cs_config:anonymous_user_creation()) orelse AuthBypass, - Next = fun(NewRD, NewCtx=#context{user=User}) -> + Next = fun(NewRD, NewCtx=#rcs_context{user=User}) -> forbidden(wrq:method(RD), NewRD, NewCtx, @@ -83,15 +83,15 @@ forbidden(RD, Ctx=#context{auth_bypass=AuthBypass}) -> handle_user_auth_response({false, _RD, Ctx} = Ret) -> riak_cs_dtrace:dt_wm_return(?MODULE, <<"forbidden">>, - [], [riak_cs_wm_utils:extract_name(Ctx#context.user), <<"false">>]), + [], [riak_cs_wm_utils:extract_name(Ctx#rcs_context.user), <<"false">>]), Ret; handle_user_auth_response({{halt, Code}, _RD, Ctx} = Ret) -> riak_cs_dtrace:dt_wm_return(?MODULE, <<"forbidden">>, - [Code], [riak_cs_wm_utils:extract_name(Ctx#context.user), <<"true">>]), + [Code], [riak_cs_wm_utils:extract_name(Ctx#rcs_context.user), <<"true">>]), Ret; handle_user_auth_response({_Reason, _RD, Ctx} = Ret) -> riak_cs_dtrace:dt_wm_return(?MODULE, <<"forbidden">>, - [-1], [riak_cs_wm_utils:extract_name(Ctx#context.user), <<"true">>]), + [-1], [riak_cs_wm_utils:extract_name(Ctx#rcs_context.user), <<"true">>]), Ret. -spec content_types_accepted(term(), term()) -> @@ -108,9 +108,9 @@ post_is_create(RD, Ctx) -> {true, RD, Ctx}. create_path(RD, Ctx) -> {"/riak-cs/user", RD, Ctx}. --spec accept_json(#wm_reqdata{}, #context{}) -> +-spec accept_json(#wm_reqdata{}, #rcs_context{}) -> {boolean() | {halt, term()}, term(), term()}. -accept_json(RD, Ctx=#context{user=undefined}) -> +accept_json(RD, Ctx=#rcs_context{user=undefined}) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"accept_json">>), Body = riak_cs_json:from_json(wrq:req_body(RD)), {UserName, Email} = @@ -138,7 +138,7 @@ accept_json(RD, Ctx) -> -spec accept_xml(term(), term()) -> {boolean() | {halt, term()}, term(), term()}. -accept_xml(RD, Ctx=#context{user=undefined}) -> +accept_xml(RD, Ctx=#rcs_context{user=undefined}) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"accept_xml">>), Body = binary_to_list(wrq:req_body(RD)), case riak_cs_xml:scan(Body) of @@ -172,28 +172,28 @@ accept_xml(RD, Ctx) -> end. -produce_json(RD, #context{user=User}=Ctx) -> +produce_json(RD, #rcs_context{user=User}=Ctx) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"produce_json">>), Body = riak_cs_json:to_json(User), Etag = etag(Body), RD2 = wrq:set_resp_header("ETag", Etag, RD), {Body, RD2, Ctx}. -produce_xml(RD, #context{user=User}=Ctx) -> +produce_xml(RD, #rcs_context{user=User}=Ctx) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"produce_xml">>), Body = riak_cs_xml:to_xml(User), Etag = etag(Body), RD2 = wrq:set_resp_header("ETag", Etag, RD), {Body, RD2, Ctx}. -finish_request(RD, Ctx=#context{riak_client=undefined}) -> +finish_request(RD, Ctx=#rcs_context{riak_client=undefined}) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"finish_request">>, [0], []), {true, RD, Ctx}; -finish_request(RD, Ctx=#context{riak_client=RcPid}) -> +finish_request(RD, Ctx=#rcs_context{riak_client=RcPid}) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"finish_request">>, [1], []), riak_cs_riak_client:checkin(RcPid), riak_cs_dtrace:dt_wm_return(?MODULE, <<"finish_request">>, [1], []), - {true, RD, Ctx#context{riak_client=undefined}}. + {true, RD, Ctx#rcs_context{riak_client=undefined}}. %% ------------------------------------------------------------------- %% Internal functions @@ -201,7 +201,7 @@ finish_request(RD, Ctx=#context{riak_client=RcPid}) -> -spec admin_check(boolean(), term(), term()) -> {boolean(), term(), term()}. admin_check(true, RD, Ctx) -> - {false, RD, Ctx#context{user=undefined}}; + {false, RD, Ctx#rcs_context{user=undefined}}; admin_check(false, RD, Ctx) -> riak_cs_wm_utils:deny_access(RD, Ctx). @@ -242,7 +242,7 @@ forbidden(_Method, RD, Ctx, User, UserPathKey, _) -> {boolean() | {halt, term()}, term(), term()}. get_user({false, RD, Ctx}, UserPathKey) -> handle_get_user_result( - riak_cs_user:get_user(UserPathKey, Ctx#context.riak_client), + riak_cs_user:get_user(UserPathKey, Ctx#rcs_context.riak_client), RD, Ctx); get_user(AdminCheckResult, _) -> @@ -254,15 +254,15 @@ get_user(AdminCheckResult, _) -> {boolean() | {halt, term()}, term(), term()}. handle_get_user_result({ok, {User, UserObj}}, RD, Ctx) -> - {false, RD, Ctx#context{user=User, user_object=UserObj}}; + {false, RD, Ctx#rcs_context{user=User, user_object=UserObj}}; handle_get_user_result({error, Reason}, RD, Ctx) -> logger:warning("Failed to fetch user record. KeyId: ~p" " Reason: ~p", [user_key(RD), Reason]), riak_cs_s3_response:api_error(invalid_access_key_id, RD, Ctx). --spec update_user([{atom(), term()}], #wm_reqdata{}, #context{}) -> +-spec update_user([{atom(), term()}], #wm_reqdata{}, #rcs_context{}) -> {ok, rcs_user()} | {halt, term()} | {error, term()}. -update_user(UpdateItems, RD, Ctx=#context{user=User}) -> +update_user(UpdateItems, RD, Ctx=#rcs_context{user=User}) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"update_user">>), UpdateUserResult = update_user_record(User, UpdateItems, false), handle_update_result(UpdateUserResult, RD, Ctx). @@ -294,12 +294,12 @@ update_user_record(_User, [_ | RestUpdates], _RecordUpdated) -> handle_update_result({false, _User}, _RD, _Ctx) -> {halt, 200}; handle_update_result({true, User}, _RD, Ctx) -> - #context{user_object=UserObj, + #rcs_context{user_object=UserObj, riak_client=RcPid} = Ctx, riak_cs_user:update_user(User, UserObj, RcPid). -spec set_resp_data(string(), term(), term()) -> term(). -set_resp_data(ContentType, RD, #context{user=User}) -> +set_resp_data(ContentType, RD, #rcs_context{user=User}) -> UserDoc = format_user_record(User, ContentType), wrq:set_resp_body(UserDoc, RD). @@ -386,9 +386,6 @@ user_xml_filter(Element, Acc) -> Acc end. --spec user_response({ok, rcs_user()} | {halt, term()} | {error, term()}, - string(), #wm_reqdata{}, #context{}) -> - {true | {halt, non_neg_integer()}, #wm_reqdata{}, #context{}}. user_response({ok, User}, ContentType, RD, Ctx) -> UserDoc = format_user_record(User, ContentType), WrittenRD = diff --git a/apps/riak_cs/src/riak_cs_wm_users.erl b/apps/riak_cs/src/riak_cs_wm_users.erl index 1d6da6a5b..133eaf331 100644 --- a/apps/riak_cs/src/riak_cs_wm_users.erl +++ b/apps/riak_cs/src/riak_cs_wm_users.erl @@ -43,9 +43,9 @@ init(Config) -> AuthBypass = not proplists:get_value(admin_auth_enabled, Config), Api = riak_cs_config:api(), RespModule = riak_cs_config:response_module(Api), - {ok, #context{auth_bypass=AuthBypass, - api=Api, - response_module=RespModule}}. + {ok, #rcs_context{auth_bypass=AuthBypass, + api=Api, + response_module=RespModule}}. -spec service_available(term(), term()) -> {true, term(), term()}. service_available(RD, Ctx) -> @@ -55,14 +55,14 @@ service_available(RD, Ctx) -> allowed_methods(RD, Ctx) -> {['GET', 'HEAD'], RD, Ctx}. -forbidden(RD, Ctx=#context{auth_bypass=AuthBypass}) -> +forbidden(RD, Ctx=#rcs_context{auth_bypass=AuthBypass}) -> riak_cs_dtrace:dt_wm_entry(?MODULE, <<"forbidden">>), riak_cs_wm_utils:find_and_auth_admin(RD, Ctx, AuthBypass). content_types_provided(RD, Ctx) -> {[{?XML_TYPE, produce_xml}, {?JSON_TYPE, produce_json}], RD, Ctx}. -produce_json(RD, Ctx=#context{riak_client=RcPid}) -> +produce_json(RD, Ctx=#rcs_context{riak_client=RcPid}) -> Boundary = unique_id(), UpdRD = wrq:set_resp_header("Content-Type", "multipart/mixed; boundary="++Boundary, @@ -78,7 +78,7 @@ produce_json(RD, Ctx=#context{riak_client=RcPid}) -> end, {{stream, {<<>>, fun() -> stream_users(json, RcPid, Boundary, Status) end}}, UpdRD, Ctx}. -produce_xml(RD, Ctx=#context{riak_client=RcPid}) -> +produce_xml(RD, Ctx=#rcs_context{riak_client=RcPid}) -> Boundary = unique_id(), UpdRD = wrq:set_resp_header("Content-Type", "multipart/mixed; boundary="++Boundary, @@ -94,10 +94,10 @@ produce_xml(RD, Ctx=#context{riak_client=RcPid}) -> end, {{stream, {<<>>, fun() -> stream_users(xml, RcPid, Boundary, Status) end}}, UpdRD, Ctx}. -finish_request(RD, Ctx=#context{}) -> +finish_request(RD, Ctx=#rcs_context{}) -> %% riak_client is still used for streaming response. %% So do not close it here. - {true, RD, Ctx#context{riak_client=undefined}}. + {true, RD, Ctx#rcs_context{riak_client=undefined}}. %% ------------------------------------------------------------------- %% Internal functions diff --git a/apps/riak_cs/src/riak_cs_wm_utils.erl b/apps/riak_cs/src/riak_cs_wm_utils.erl index e9475aae3..96c0eb3d7 100644 --- a/apps/riak_cs/src/riak_cs_wm_utils.erl +++ b/apps/riak_cs/src/riak_cs_wm_utils.erl @@ -92,7 +92,7 @@ service_available(RD, Ctx) -> service_available(Pool, RD, Ctx) -> case riak_cs_utils:riak_connection(Pool) of {ok, RcPid} -> - {true, RD, Ctx#context{riak_client=RcPid}}; + {true, RD, Ctx#rcs_context{riak_client=RcPid}}; {error, _Reason} -> {false, RD, Ctx} end. @@ -137,7 +137,7 @@ parse_auth_params(KeyId, Signature, _) -> %% `Next(RD, NewCtx)' if there is no auth error. %% %% If a user was successfully authed, the `user' and `user_object' -%% fields in the `#context' record passed to `Next' will be filled. +%% fields in the `#rcs_context' record passed to `Next' will be filled. %% If the access is instead anonymous, those fields will be left as %% they were passed to this function. %% @@ -152,8 +152,8 @@ find_and_auth_user(RD, ICtx, Next, AnonymousOk) -> find_and_auth_user(RD, ICtx, Next, fun(X) -> X end, AnonymousOk). find_and_auth_user(RD, - #context{auth_bypass=AuthBypass, - riak_client=RcPid}=ICtx, + #rcs_context{auth_bypass=AuthBypass, + riak_client=RcPid}=ICtx, Next, Conv2KeyCtx, AnonymousOk) -> @@ -166,7 +166,7 @@ find_and_auth_user(RD, AnonymousOk). find_and_auth_admin(RD, Ctx, AuthBypass) -> - Next = fun(NewRD, NewCtx=#context{user=User}) -> + Next = fun(NewRD, NewCtx=#rcs_context{user=User}) -> handle_auth_admin(NewRD, NewCtx, User, @@ -176,8 +176,8 @@ find_and_auth_admin(RD, Ctx, AuthBypass) -> handle_validation_response({ok, User, UserObj}, RD, Ctx, Next, _, _) -> %% given keyid and signature matched, proceed - Next(RD, Ctx#context{user=User, - user_object=UserObj}); + Next(RD, Ctx#rcs_context{user=User, + user_object=UserObj}); handle_validation_response({error, disconnected}, RD, Ctx, _Next, _, _Bool) -> {{halt, 503}, RD, Ctx}; handle_validation_response({error, Reason}, RD, Ctx, Next, _, true) -> @@ -224,7 +224,7 @@ handle_auth_admin(RD, Ctx, User, false) -> %% @doc Look for an Authorization header in the request, and validate %% it if it exists. Returns `{ok, User, UserObj}' if validation %% succeeds, or `{error, KeyId, Reason}' if any step fails. --spec validate_auth_header(#wm_reqdata{}, term(), riak_client(), #context{}|undefined) -> +-spec validate_auth_header(#wm_reqdata{}, term(), riak_client(), #rcs_context{}|undefined) -> {ok, rcs_user(), riakc_obj:riakc_obj()} | {error, bad_auth | notfound | no_user_key | term()}. validate_auth_header(RD, AuthBypass, RcPid, Ctx) -> @@ -294,14 +294,14 @@ setup_manifest(KeyCtx = #key_context{bucket = Bucket, %% @doc Produce an api error by using response_module. respond_api_error(RD, Ctx, ErrorAtom) -> - ResponseMod = Ctx#context.response_module, + ResponseMod = Ctx#rcs_context.response_module, NewRD = maybe_log_user(RD, Ctx), ResponseMod:api_error(ErrorAtom, NewRD, Ctx). %% @doc Only set the user for the access logger to catch if there is a %% user to catch. maybe_log_user(RD, Context) -> - case Context#context.user of + case Context#rcs_context.user of undefined -> RD; User -> @@ -310,7 +310,7 @@ maybe_log_user(RD, Context) -> %% @doc Produce an access-denied error message from a webmachine %% resource's `forbidden/2' function. -deny_access(RD, Ctx=#context{response_module=ResponseMod}) -> +deny_access(RD, Ctx=#rcs_context{response_module=ResponseMod}) -> ResponseMod:api_error(access_denied, RD, Ctx); deny_access(RD, Ctx) -> riak_cs_s3_response:api_error(access_denied, RD, Ctx). @@ -319,21 +319,21 @@ deny_access(RD, Ctx) -> %% @doc Produce an invalid-access-keyid error message from a %% webmachine resource's `forbidden/2' function. -deny_invalid_key(RD, Ctx=#context{response_module=ResponseMod}) -> +deny_invalid_key(RD, Ctx=#rcs_context{response_module=ResponseMod}) -> ResponseMod:api_error(invalid_access_key_id, RD, Ctx). %% @doc In the case is a user is authorized to perform an operation on %% a bucket but is not the owner of that bucket this function can be used %% to switch to the owner's record if it can be retrieved --spec shift_to_owner(#wm_reqdata{}, #context{}, string(), riak_client()) -> - {boolean(), #wm_reqdata{}, #context{}}. -shift_to_owner(RD, Ctx=#context{response_module=ResponseMod}, OwnerId, RcPid) +-spec shift_to_owner(#wm_reqdata{}, #rcs_context{}, string(), riak_client()) -> + {boolean(), #wm_reqdata{}, #rcs_context{}}. +shift_to_owner(RD, Ctx=#rcs_context{response_module=ResponseMod}, OwnerId, RcPid) when RcPid /= undefined -> case riak_cs_user:get_user(OwnerId, RcPid) of {ok, {Owner, OwnerObject}} when Owner?RCS_USER.status =:= enabled -> AccessRD = riak_cs_access_log_handler:set_user(Owner, RD), - {false, AccessRD, Ctx#context{user=Owner, - user_object=OwnerObject}}; + {false, AccessRD, Ctx#rcs_context{user=Owner, + user_object=OwnerObject}}; {ok, _} -> riak_cs_wm_utils:deny_access(RD, Ctx); {error, _} -> @@ -424,10 +424,10 @@ iso_8601_to_erl_date(Date) -> %% @doc Return a new context where the bucket and key for the s3 %% object have been inserted. It also does key length check. TODO: do %% we check if the key is valid Unicode string or not? --spec extract_key(#wm_reqdata{}, #context{}) -> - {ok, #context{}} | +-spec extract_key(#wm_reqdata{}, #rcs_context{}) -> + {ok, #rcs_context{}} | {error, {key_too_long, pos_integer()} | {vsn_too_long, pos_integer()}}. -extract_key(RD, Ctx = #context{local_context = LocalCtx0}) -> +extract_key(RD, Ctx = #rcs_context{local_context = LocalCtx0}) -> Bucket = list_to_binary(wrq:path_info(bucket, RD)), %% need to unquote twice since we re-urlencode the string during rewrite in %% order to trick webmachine dispatching @@ -435,13 +435,13 @@ extract_key(RD, Ctx = #context{local_context = LocalCtx0}) -> case mochiweb_util:unquote(mochiweb_util:unquote(wrq:path_info(object, RD))) of Key when length(Key) =< MaxKeyLen -> LocalCtx = LocalCtx0#key_context{bucket = Bucket, key = list_to_binary(Key)}, - extract_version_id(RD, Ctx#context{bucket = Bucket, - local_context = LocalCtx}); + extract_version_id(RD, Ctx#rcs_context{bucket = Bucket, + local_context = LocalCtx}); Key -> {error, {key_too_long, length(Key)}} end. -extract_version_id(RD, Ctx = #context{local_context = LocalCtx0}) -> +extract_version_id(RD, Ctx = #rcs_context{local_context = LocalCtx0}) -> VsnId = case {wrq:path_info(versionId, RD), rcs_version_id_from_headers(RD)} of {undefined, undefined} -> @@ -459,7 +459,7 @@ extract_version_id(RD, Ctx = #context{local_context = LocalCtx0}) -> case size(VsnId) =< riak_cs_config:max_key_length() of true -> LocalCtx = LocalCtx0#key_context{obj_vsn = VsnId}, - {ok, Ctx#context{local_context = LocalCtx}}; + {ok, Ctx#rcs_context{local_context = LocalCtx}}; _ -> {error, {key_too_long, size(VsnId)}} end. @@ -477,14 +477,14 @@ extract_name(_) -> %% @doc Add an ACL to the context, from parsing the headers. If there is %% an error parsing the header, halt the request. If there is no ACL %% information in the headers, use the default ACL. --spec maybe_update_context_with_acl_from_headers(#wm_reqdata{}, #context{}) -> - {error, {{halt, term()}, #wm_reqdata{}, #context{}}} | - {ok, #context{}}. +-spec maybe_update_context_with_acl_from_headers(#wm_reqdata{}, #rcs_context{}) -> + {error, {{halt, term()}, #wm_reqdata{}, #rcs_context{}}} | + {ok, #rcs_context{}}. maybe_update_context_with_acl_from_headers(RD, - Ctx=#context{user=User, - bucket=BucketName, - local_context=LocalCtx, - riak_client=RcPid}) -> + Ctx=#rcs_context{user=User, + bucket=BucketName, + local_context=LocalCtx, + riak_client=RcPid}) -> case bucket_obj_from_local_context(LocalCtx, BucketName, RcPid) of {ok, BucketObject} -> case maybe_acl_from_context_and_request(RD, Ctx, BucketObject) of @@ -493,12 +493,12 @@ maybe_update_context_with_acl_from_headers(RD, %% pattern match on the ACL record type for a data-type %% sanity-check {ok, {ok, Acl=?ACL{}}} -> - {ok, Ctx#context{acl=Acl}}; + {ok, Ctx#rcs_context{acl=Acl}}; error -> DefaultAcl = riak_cs_acl_utils:default_acl(User?RCS_USER.display_name, User?RCS_USER.canonical_id, User?RCS_USER.key_id), - {ok, Ctx#context{acl=DefaultAcl}} + {ok, Ctx#rcs_context{acl=DefaultAcl}} end; {error, Reason} -> logger:error("Failed to retrieve bucket objects for reason ~p", [Reason]), @@ -524,11 +524,11 @@ bucket_obj_from_local_context(undefined, BucketName, RcPid) -> %% are no ACL headers, return `error'. In this case, it's not unexpected %% to get the `error' value back, but it's name is used for convention. %% It could also reasonable be called `nothing'. --spec maybe_acl_from_context_and_request(#wm_reqdata{}, #context{}, +-spec maybe_acl_from_context_and_request(#wm_reqdata{}, #rcs_context{}, riakc_obj:riakc_obj()) -> - {ok, acl_or_error()} | error. -maybe_acl_from_context_and_request(RD, #context{user=User, - riak_client=RcPid}, + {ok, acl_or_error()} | error. +maybe_acl_from_context_and_request(RD, #rcs_context{user=User, + riak_client=RcPid}, BucketObj) -> case has_acl_header(RD) of true -> @@ -693,16 +693,16 @@ extract_user_metadata([_ | Headers], Acc) -> extract_user_metadata(Headers, Acc). -spec bucket_access_authorize_helper(AccessType::atom(), boolean(), - RD::term(), Ctx::#context{}) -> term(). + RD::term(), Ctx::#rcs_context{}) -> term(). bucket_access_authorize_helper(AccessType, Deletable, RD, Ctx) -> - #context{riak_client=RcPid, - policy_module=PolicyMod} = Ctx, + #rcs_context{riak_client=RcPid, + policy_module=PolicyMod} = Ctx, Method = wrq:method(RD), RequestedAccess = riak_cs_acl_utils:requested_access(Method, is_acl_request(AccessType)), Bucket = list_to_binary(wrq:path_info(bucket, RD)), - PermCtx = Ctx#context{bucket=Bucket, - requested_perm=RequestedAccess}, + PermCtx = Ctx#rcs_context{bucket=Bucket, + requested_perm=RequestedAccess}, handle_bucket_acl_policy_response( riak_cs_bucket:get_bucket_acl_policy(Bucket, PolicyMod, RcPid), AccessType, @@ -711,16 +711,16 @@ bucket_access_authorize_helper(AccessType, Deletable, RD, Ctx) -> PermCtx). handle_bucket_acl_policy_response({error, notfound}, _, _, RD, Ctx) -> - ResponseMod = Ctx#context.response_module, + ResponseMod = Ctx#rcs_context.response_module, ResponseMod:api_error(no_such_bucket, RD, Ctx); handle_bucket_acl_policy_response({error, Reason}, _, _, RD, Ctx) -> - ResponseMod = Ctx#context.response_module, + ResponseMod = Ctx#rcs_context.response_module, ResponseMod:api_error(Reason, RD, Ctx); handle_bucket_acl_policy_response({Acl, Policy}, AccessType, DeleteEligible, RD, Ctx) -> - #context{bucket=Bucket, - riak_client=RcPid, - user=User, - requested_perm=RequestedAccess} = Ctx, + #rcs_context{bucket=Bucket, + riak_client=RcPid, + user=User, + requested_perm=RequestedAccess} = Ctx, AclCheckRes = riak_cs_acl_utils:check_grants(User, Bucket, RequestedAccess, @@ -733,14 +733,14 @@ handle_acl_check_result(true, _, undefined, _, _, RD, Ctx) -> %% because users are not allowed to create/destroy %% buckets, we can assume that User is not %% undefined here - AccessRD = riak_cs_access_log_handler:set_user(Ctx#context.user, RD), + AccessRD = riak_cs_access_log_handler:set_user(Ctx#rcs_context.user, RD), {false, AccessRD, Ctx}; handle_acl_check_result(true, _, Policy, AccessType, _, RD, Ctx) -> %% because users are not allowed to create/destroy %% buckets, we can assume that User is not %% undefined here - User = Ctx#context.user, - PolicyMod = Ctx#context.policy_module, + User = Ctx#rcs_context.user, + PolicyMod = Ctx#rcs_context.policy_module, AccessRD = riak_cs_access_log_handler:set_user(User, RD), Access = PolicyMod:reqdata_to_access(RD, AccessType, User?RCS_USER.canonical_id), @@ -752,19 +752,19 @@ handle_acl_check_result({true, _OwnerId}, _, _, _, true, RD, Ctx) -> %% grants lied: this is a delete, and only the owner is allowed to %% do that; setting user for the request anyway, so the error %% tally is logged for them - AccessRD = riak_cs_access_log_handler:set_user(Ctx#context.user, RD), + AccessRD = riak_cs_access_log_handler:set_user(Ctx#rcs_context.user, RD), riak_cs_wm_utils:deny_access(AccessRD, Ctx); handle_acl_check_result({true, OwnerId}, _, _, _, _, RD, Ctx) -> %% this operation is allowed, but we need to get the owner's %% record, and log the access against them instead of the actor - riak_cs_wm_utils:shift_to_owner(RD, Ctx, OwnerId, Ctx#context.riak_client); + riak_cs_wm_utils:shift_to_owner(RD, Ctx, OwnerId, Ctx#rcs_context.riak_client); handle_acl_check_result(false, _, undefined, _, _Deletable, RD, Ctx) -> %% No policy so emulate a policy eval failure to avoid code duplication - handle_policy_eval_result(Ctx#context.user, false, undefined, RD, Ctx); + handle_policy_eval_result(Ctx#rcs_context.user, false, undefined, RD, Ctx); handle_acl_check_result(false, Acl, Policy, AccessType, _Deletable, RD, Ctx) -> - #context{riak_client=RcPid, - user=User0} = Ctx, - PolicyMod = Ctx#context.policy_module, + #rcs_context{riak_client=RcPid, + user=User0} = Ctx, + PolicyMod = Ctx#rcs_context.policy_module, User = case User0 of undefined -> undefined; _ -> User0?RCS_USER.canonical_id @@ -776,13 +776,13 @@ handle_acl_check_result(false, Acl, Policy, AccessType, _Deletable, RD, Ctx) -> handle_policy_eval_result(_, true, OwnerId, RD, Ctx) -> %% Policy says yes while ACL says no - shift_to_owner(RD, Ctx, OwnerId, Ctx#context.riak_client); + shift_to_owner(RD, Ctx, OwnerId, Ctx#rcs_context.riak_client); handle_policy_eval_result(User, _, _, RD, Ctx) -> %% Policy says no - #context{riak_client=RcPid, - response_module=ResponseMod, - user=User, - bucket=Bucket} = Ctx, + #rcs_context{riak_client=RcPid, + response_module=ResponseMod, + user=User, + bucket=Bucket} = Ctx, %% log bad requests against the actors that make them AccessRD = riak_cs_access_log_handler:set_user(User, RD), %% Check if the bucket actually exists so we can @@ -802,23 +802,23 @@ is_acl_request(_) -> false. -type halt_or_bool() :: {halt, pos_integer()} | boolean(). --type authorized_response() :: {halt_or_bool(), RD :: #wm_reqdata{}, Ctx :: #context{}}. +-type authorized_response() :: {halt_or_bool(), RD :: #wm_reqdata{}, Ctx :: #rcs_context{}}. -spec object_access_authorize_helper(AccessType::atom(), boolean(), - RD:: #wm_reqdata{}, Ctx:: #context{}) -> - authorized_response(). + #wm_reqdata{}, #rcs_context{}) -> + authorized_response(). object_access_authorize_helper(AccessType, Deletable, RD, Ctx) -> object_access_authorize_helper(AccessType, Deletable, false, RD, Ctx). -spec object_access_authorize_helper(AccessType::atom(), boolean(), boolean(), - RD:: #wm_reqdata{}, Ctx:: #context{}) -> - authorized_response(). + RD:: #wm_reqdata{}, Ctx:: #rcs_context{}) -> + authorized_response(). object_access_authorize_helper(AccessType, Deletable, SkipAcl, - RD, #context{policy_module=PolicyMod, - local_context=LocalCtx, - user=User, - riak_client=RcPid, - response_module=ResponseMod}=Ctx) + RD, #rcs_context{policy_module=PolicyMod, + local_context=LocalCtx, + user=User, + riak_client=RcPid, + response_module=ResponseMod}=Ctx) when ( AccessType =:= object_acl orelse AccessType =:= object_part orelse AccessType =:= object ) @@ -996,7 +996,7 @@ actor_is_owner_and_allowed_policy(undefined, RD, Ctx, _LocalCtx) -> actor_is_owner_and_allowed_policy(User, RD, Ctx, LocalCtx) -> AccessRD = riak_cs_access_log_handler:set_user(User, RD), UpdLocalCtx = LocalCtx#key_context{owner=User?RCS_USER.key_id}, - {false, AccessRD, Ctx#context{local_context=UpdLocalCtx}}. + {false, AccessRD, Ctx#rcs_context{local_context=UpdLocalCtx}}. -spec actor_is_not_owner_and_denied_policy(OwnerId :: string(), RD :: term(), @@ -1024,11 +1024,11 @@ actor_is_not_owner_but_allowed_policy(undefined, OwnerId, RD, Ctx, LocalCtx) -> %% This is an anonymous request so shift to the context of the %% owner for the remainder of the request. AccessRD = riak_cs_access_log_handler:set_user(OwnerId, RD), - UpdCtx = Ctx#context{local_context=LocalCtx#key_context{owner=OwnerId}}, - shift_to_owner(AccessRD, UpdCtx, OwnerId, Ctx#context.riak_client); + UpdCtx = Ctx#rcs_context{local_context=LocalCtx#key_context{owner=OwnerId}}, + shift_to_owner(AccessRD, UpdCtx, OwnerId, Ctx#rcs_context.riak_client); actor_is_not_owner_but_allowed_policy(_, OwnerId, RD, Ctx, LocalCtx) -> AccessRD = riak_cs_access_log_handler:set_user(OwnerId, RD), - UpdCtx = Ctx#context{local_context=LocalCtx#key_context{owner=OwnerId}}, + UpdCtx = Ctx#rcs_context{local_context=LocalCtx#key_context{owner=OwnerId}}, {false, AccessRD, UpdCtx}. -spec just_allowed_by_policy(OwnerId :: string(), @@ -1039,7 +1039,7 @@ actor_is_not_owner_but_allowed_policy(_, OwnerId, RD, Ctx, LocalCtx) -> just_allowed_by_policy(OwnerId, RD, Ctx, LocalCtx) -> AccessRD = riak_cs_access_log_handler:set_user(OwnerId, RD), UpdLocalCtx = LocalCtx#key_context{owner=OwnerId}, - {false, AccessRD, Ctx#context{local_context=UpdLocalCtx}}. + {false, AccessRD, Ctx#rcs_context{local_context=UpdLocalCtx}}. -spec fetch_bucket_owner(binary(), riak_client()) -> undefined | acl_owner(). fetch_bucket_owner(Bucket, RcPid) -> @@ -1104,8 +1104,8 @@ content_length(RD) -> %% single request entity size. %% On the other hand, for PUT Copy, Content-Length is not mandatory. %% If it exists, however, it should be ZERO. -valid_entity_length(MaxLen, RD, #context{response_module=ResponseMod, - local_context=LocalCtx} = Ctx) -> +valid_entity_length(MaxLen, RD, #rcs_context{response_module=ResponseMod, + local_context=LocalCtx} = Ctx) -> case {wrq:method(RD), wrq:get_req_header("x-amz-copy-source", RD)} of {'PUT', undefined} -> MaxLen = riak_cs_lfs_utils:max_content_len(), @@ -1113,7 +1113,7 @@ valid_entity_length(MaxLen, RD, #context{response_module=ResponseMod, Length when is_integer(Length) andalso Length =< MaxLen -> UpdLocalCtx = LocalCtx#key_context{size=Length}, - {true, RD, Ctx#context{local_context=UpdLocalCtx}}; + {true, RD, Ctx#rcs_context{local_context=UpdLocalCtx}}; Length when is_integer(Length) -> ResponseMod:api_error(entity_too_large, RD, Ctx); _ -> {false, RD, Ctx} @@ -1122,7 +1122,7 @@ valid_entity_length(MaxLen, RD, #context{response_module=ResponseMod, case riak_cs_wm_utils:content_length(RD) of CL when CL =:= 0 orelse CL =:= undefined -> UpdLocalCtx = LocalCtx#key_context{size=0}, - {true, RD, Ctx#context{local_context=UpdLocalCtx}}; + {true, RD, Ctx#rcs_context{local_context=UpdLocalCtx}}; _ -> {false, RD, Ctx} end; _ -> diff --git a/apps/riak_cs/src/stanchion_wm_acl.erl b/apps/riak_cs/src/stanchion_wm_acl.erl index d0e2b07aa..f008b8897 100644 --- a/apps/riak_cs/src/stanchion_wm_acl.erl +++ b/apps/riak_cs/src/stanchion_wm_acl.erl @@ -38,7 +38,7 @@ init(Config) -> %% Check if authentication is disabled and %% set that in the context. AuthBypass = proplists:get_value(auth_bypass, Config), - {ok, #context{auth_bypass=AuthBypass}}. + {ok, #stanchion_context{auth_bypass=AuthBypass}}. -spec service_available(term(), term()) -> {true, term(), term()}. service_available(RD, Ctx) -> @@ -49,7 +49,7 @@ malformed_request(RD, Ctx) -> {false, RD, Ctx}. %% @doc Check that the request is from the admin user -is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> +is_authorized(RD, Ctx=#stanchion_context{auth_bypass=AuthBypass}) -> AuthHeader = wrq:get_req_header("authorization", RD), case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of {ok, AuthMod, Args} -> diff --git a/apps/riak_cs/src/stanchion_wm_bucket.erl b/apps/riak_cs/src/stanchion_wm_bucket.erl index 8ce7fa950..af3ed31eb 100644 --- a/apps/riak_cs/src/stanchion_wm_bucket.erl +++ b/apps/riak_cs/src/stanchion_wm_bucket.erl @@ -41,7 +41,7 @@ init(Config) -> %% Check if authentication is disabled and %% set that in the context. AuthBypass = proplists:get_value(auth_bypass, Config), - {ok, #context{auth_bypass=AuthBypass}}. + {ok, #stanchion_context{auth_bypass=AuthBypass}}. -spec service_available(term(), term()) -> {true, term(), term()}. service_available(RD, Ctx) -> @@ -52,7 +52,7 @@ malformed_request(RD, Ctx) -> {false, RD, Ctx}. %% @doc Check that the request is from the admin user -is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> +is_authorized(RD, Ctx=#stanchion_context{auth_bypass=AuthBypass}) -> AuthHeader = wrq:get_req_header("authorization", RD), case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of {ok, AuthMod, Args} -> diff --git a/apps/riak_cs/src/stanchion_wm_buckets.erl b/apps/riak_cs/src/stanchion_wm_buckets.erl index caf641e5e..5e398e4be 100644 --- a/apps/riak_cs/src/stanchion_wm_buckets.erl +++ b/apps/riak_cs/src/stanchion_wm_buckets.erl @@ -37,7 +37,7 @@ init(Config) -> %% Check if authentication is disabled and %% set that in the context. AuthBypass = proplists:get_value(auth_bypass, Config), - {ok, #context{auth_bypass=AuthBypass}}. + {ok, #stanchion_context{auth_bypass=AuthBypass}}. -spec service_available(term(), term()) -> {true, term(), term()}. service_available(RD, Ctx) -> @@ -49,7 +49,7 @@ allowed_methods(RD, Ctx) -> {['POST'], RD, Ctx}. %% @doc Check that the request is from the admin user -is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> +is_authorized(RD, Ctx=#stanchion_context{auth_bypass=AuthBypass}) -> AuthHeader = wrq:get_req_header("authorization", RD), case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of {ok, AuthMod, Args} -> diff --git a/apps/riak_cs/src/stanchion_wm_policy.erl b/apps/riak_cs/src/stanchion_wm_policy.erl index 731372511..ab1f08d81 100644 --- a/apps/riak_cs/src/stanchion_wm_policy.erl +++ b/apps/riak_cs/src/stanchion_wm_policy.erl @@ -41,7 +41,7 @@ init(Config) -> %% set that in the context. AuthBypass = proplists:get_value(auth_bypass, Config), % eval every atoms to make binary_to_existing_atom/2 work. - {ok, #context{auth_bypass=AuthBypass}}. + {ok, #stanchion_context{auth_bypass=AuthBypass}}. -spec service_available(term(), term()) -> {true, term(), term()}. service_available(RD, Ctx) -> @@ -52,7 +52,7 @@ malformed_request(RD, Ctx) -> {false, RD, Ctx}. %% @doc Check that the request is from the admin user -is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> +is_authorized(RD, Ctx=#stanchion_context{auth_bypass=AuthBypass}) -> AuthHeader = wrq:get_req_header("authorization", RD), case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of {ok, AuthMod, Args} -> @@ -103,7 +103,7 @@ accept_body(RD, Ctx) -> end. %% @doc Callback for deleting an object. --spec delete_resource(#wm_reqdata{}, #context{}) -> {{halt, 204}, #wm_reqdata{}, #context{}} | {true, #wm_reqdata{}, #context{}}. +-spec delete_resource(#wm_reqdata{}, #stanchion_context{}) -> {{halt, 204}, #wm_reqdata{}, #stanchion_context{}} | {true, #wm_reqdata{}, #stanchion_context{}}. delete_resource(RD, Ctx) -> Bucket = list_to_binary(wrq:path_info(bucket, RD)), RequesterId = list_to_binary(wrq:get_qs_value("requester", "", RD)), diff --git a/apps/riak_cs/src/stanchion_wm_stats.erl b/apps/riak_cs/src/stanchion_wm_stats.erl index f2cbf73ee..baaa3fe23 100644 --- a/apps/riak_cs/src/stanchion_wm_stats.erl +++ b/apps/riak_cs/src/stanchion_wm_stats.erl @@ -35,7 +35,7 @@ init(Config) -> %% Check if authentication is disabled and %% set that in the context. AuthBypass = proplists:get_value(auth_bypass, Config), - {ok, #context{auth_bypass=AuthBypass}}. + {ok, #stanchion_context{auth_bypass=AuthBypass}}. -spec service_available(term(), term()) -> {true, term(), term()}. service_available(RD, Ctx) -> @@ -47,7 +47,7 @@ allowed_methods(RD, Ctx) -> %% @doc Check that the request is from the admin user is_authorized(RD, Ctx) -> - #context{auth_bypass=AuthBypass} = Ctx, + #stanchion_context{auth_bypass=AuthBypass} = Ctx, AuthHeader = wrq:get_req_header("authorization", RD), case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of {ok, AuthMod, Args} -> diff --git a/apps/riak_cs/src/stanchion_wm_user.erl b/apps/riak_cs/src/stanchion_wm_user.erl index 33653c27b..fefebda9d 100644 --- a/apps/riak_cs/src/stanchion_wm_user.erl +++ b/apps/riak_cs/src/stanchion_wm_user.erl @@ -36,7 +36,7 @@ init(Config) -> %% Check if authentication is disabled and %% set that in the context. AuthBypass = proplists:get_value(auth_bypass, Config), - {ok, #context{auth_bypass=AuthBypass}}. + {ok, #stanchion_context{auth_bypass=AuthBypass}}. -spec service_available(term(), term()) -> {true, term(), term()}. service_available(RD, Ctx) -> @@ -47,7 +47,7 @@ allowed_methods(RD, Ctx) -> {['PUT'], RD, Ctx}. %% @doc Check that the request is from the admin user -is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> +is_authorized(RD, Ctx=#stanchion_context{auth_bypass=AuthBypass}) -> AuthHeader = wrq:get_req_header("authorization", RD), case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of {ok, AuthMod, Args} -> diff --git a/apps/riak_cs/src/stanchion_wm_users.erl b/apps/riak_cs/src/stanchion_wm_users.erl index 466c2bd60..f91a61ce0 100644 --- a/apps/riak_cs/src/stanchion_wm_users.erl +++ b/apps/riak_cs/src/stanchion_wm_users.erl @@ -37,7 +37,7 @@ init(Config) -> %% Check if authentication is disabled and %% set that in the context. AuthBypass = proplists:get_value(auth_bypass, Config), - {ok, #context{auth_bypass=AuthBypass}}. + {ok, #stanchion_context{auth_bypass=AuthBypass}}. -spec service_available(term(), term()) -> {true, term(), term()}. service_available(RD, Ctx) -> @@ -48,7 +48,7 @@ allowed_methods(RD, Ctx) -> {['POST'], RD, Ctx}. %% @doc Check that the request is from the admin user -is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> +is_authorized(RD, Ctx=#stanchion_context{auth_bypass=AuthBypass}) -> AuthHeader = wrq:get_req_header("authorization", RD), case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of {ok, AuthMod, Args} -> diff --git a/apps/riak_cs/src/stanchion_wm_versioning.erl b/apps/riak_cs/src/stanchion_wm_versioning.erl index 83bb12451..c2ad8b66d 100644 --- a/apps/riak_cs/src/stanchion_wm_versioning.erl +++ b/apps/riak_cs/src/stanchion_wm_versioning.erl @@ -37,7 +37,7 @@ init(Config) -> %% set that in the context. AuthBypass = proplists:get_value(auth_bypass, Config), % eval every atoms to make binary_to_existing_atom/2 work. - {ok, #context{auth_bypass=AuthBypass}}. + {ok, #stanchion_context{auth_bypass=AuthBypass}}. -spec service_available(term(), term()) -> {true, term(), term()}. service_available(RD, Ctx) -> @@ -48,7 +48,7 @@ malformed_request(RD, Ctx) -> {false, RD, Ctx}. %% @doc Check that the request is from the admin user -is_authorized(RD, Ctx=#context{auth_bypass=AuthBypass}) -> +is_authorized(RD, Ctx=#stanchion_context{auth_bypass=AuthBypass}) -> AuthHeader = wrq:get_req_header("authorization", RD), case stanchion_wm_utils:parse_auth_header(AuthHeader, AuthBypass) of {ok, AuthMod, Args} -> From 36e41713f3627a45b51177a810221a4a944c8b72 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Dec 2022 13:45:58 +0200 Subject: [PATCH 391/831] remove redundant defines in stanchion.hrl --- apps/riak_cs/src/stanchion_utils.erl | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/riak_cs/src/stanchion_utils.erl b/apps/riak_cs/src/stanchion_utils.erl index f84aaed95..ef08e55bf 100644 --- a/apps/riak_cs/src/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion_utils.erl @@ -51,6 +51,7 @@ md5/1 ]). +-include("riak_cs.hrl"). -include("stanchion.hrl"). -include("manifest.hrl"). -include("moss.hrl"). @@ -58,11 +59,6 @@ -include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). -include_lib("kernel/include/logger.hrl"). --define(EMAIL_INDEX, <<"email_bin">>). --define(ID_INDEX, <<"c_id_bin">>). --define(OBJECT_BUCKET_PREFIX, <<"0o:">>). % Version # = 0 --define(BLOCK_BUCKET_PREFIX, <<"0b:">>). % Version # = 0 - -type bucket_op() :: create | update_acl | delete | update_policy | delete_policy | update_versioning. -type bucket_op_option() :: {acl, acl()} | {policy, binary()} From 0b8e8ca7013021766f2eb51547350a1466cb41dd Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Dec 2022 15:28:34 +0200 Subject: [PATCH 392/831] get get_user right on stanchion side --- apps/riak_cs/src/stanchion_utils.erl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/riak_cs/src/stanchion_utils.erl b/apps/riak_cs/src/stanchion_utils.erl index ef08e55bf..4bb98b3cb 100644 --- a/apps/riak_cs/src/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion_utils.erl @@ -107,7 +107,7 @@ create_bucket(BucketFields) -> case OpResult1 of ok -> BucketRecord = bucket_record(Bucket, create), - {ok, User, _UserObj} = riak_cs_user:get_user(OwnerId, Pbc), + {ok, {User, _UserObj}} = get_user(OwnerId, Pbc), UpdUser = update_user_buckets(add, User, BucketRecord), save_user(UpdUser, Pbc); {error, _} -> @@ -176,7 +176,7 @@ delete_bucket(Bucket, OwnerId) -> case OpResult1 of ok -> BucketRecord = bucket_record(Bucket, create), - {ok, User, _UserObj} = riak_cs_user:get_user(OwnerId, Pbc), + {ok, {User, _UserObj}} = get_user(OwnerId, Pbc), UpdUser = update_user_buckets(delete, User, BucketRecord), save_user(UpdUser, Pbc); {error, _} -> @@ -820,13 +820,13 @@ save_user(false, User, UserObj, RiakPid) -> Res. %% @doc Retrieve a Riak CS user's information based on their id string. --spec get_user('undefined' | list(), pid()) -> {ok, {rcs_user(), riakc_obj:riakc_obj()}} | {error, term()}. +-spec get_user('undefined' | iolist(), pid()) -> {ok, {rcs_user(), riakc_obj:riakc_obj()}} | {error, term()}. get_user(undefined, _RiakPid) -> {error, no_user_key}; get_user(KeyId, RiakPid) -> %% Check for and resolve siblings to get a %% coherent view of the bucket ownership. - BinKey = list_to_binary(KeyId), + BinKey = iolist_to_binary(KeyId), case fetch_user(BinKey, RiakPid) of {ok, {Obj, KeepDeletedBuckets}} -> from_riakc_obj(Obj, KeepDeletedBuckets); From 3e593d6ba2ebf6306ecf59e3da28a92ed1565446 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 7 Dec 2022 15:28:46 +0200 Subject: [PATCH 393/831] update rebar.lock --- rebar.lock | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/rebar.lock b/rebar.lock index f5edb6853..e83e4d074 100644 --- a/rebar.lock +++ b/rebar.lock @@ -14,10 +14,7 @@ 2}, {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"3.1.1">>},0}, {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.4.1">>},0}, - {<<"poolboy">>, - {git,"https://github.com/basho/poolboy", - {ref,"032ea3186fda78b4913deb8932af318ebb9b1258"}}, - 0}, + {<<"poolboy">>,{pkg,<<"poolboy">>,<<"1.5.2">>},0}, {<<"protobuffs">>, {git,"https://github.com/basho/erlang_protobuffs.git", {ref,"098efad8f85dfe556d64e2cf6ce31f2075808f67"}}, @@ -43,7 +40,7 @@ {<<"uuid">>,{pkg,<<"uuid_erl">>,<<"2.0.5">>},0}, {<<"webmachine">>, {git,"https://github.com/TI-Tokyo/webmachine.git", - {ref,"aab2de4ee77649a8722cb59bebf72c2c02cd57a0"}}, + {ref,"bd09cef0e05d3afc8abe19c5db8df4e31f66f8ef"}}, 0}]}. [ {pkg_hash,[ @@ -54,6 +51,7 @@ {<<"hut">>, <<"71F2F054E657C03F959CF1ACC43F436EA87580696528CA2A55C8AFB1B06C85E7">>}, {<<"mochiweb">>, <<"C628CC4518A3CA0F2FB6B8973DCBDC9135635F834B64AEE846337583AFD42084">>}, {<<"parse_trans">>, <<"6E6AA8167CB44CC8F39441D05193BE6E6F4E7C2946CB2759F015F8C56B76E5FF">>}, + {<<"poolboy">>, <<"392B007A1693A64540CEAD79830443ABF5762F5D30CF50BC95CB2C1AAAFA006B">>}, {<<"quickrand">>, <<"06FCAD85CB47D5C85C51D6BC9C84A082501BA098A89D64AD0A2F69599E034C04">>}, {<<"setup">>, <<"05F69185A5EB71474C9BC6BA892565651EC7507791F85632B7B914DBFE130510">>}, {<<"uuid">>, <<"60FAEEB7EDFD40847ED13CB0DD1044BAABE4E79A00C0CA9C4D13A073914B1016">>}]}, @@ -65,6 +63,7 @@ {<<"hut">>, <<"7E15D28555D8A1F2B5A3A931EC120AF0753E4853A4C66053DB354F35BF9AB563">>}, {<<"mochiweb">>, <<"8B5ECFECC26D5D083F9BEC5CE969D717676B6A4FACBDF5915E0498CDFE035A26">>}, {<<"parse_trans">>, <<"620A406CE75DADA827B82E453C19CF06776BE266F5A67CFF34E1EF2CBB60E49A">>}, + {<<"poolboy">>, <<"DAD79704CE5440F3D5A3681C8590B9DC25D1A561E8F5A9C995281012860901E3">>}, {<<"quickrand">>, <<"252CF0493570EBF1A58985CB71990982CDDCD4396B6427F1E10CF58924C1C052">>}, {<<"setup">>, <<"EFD072578F0CF85BEA96CAAFFC7ADB0992398272522660A136E10567377071C5">>}, {<<"uuid">>, <<"E54373262CA88401689277947C54B95E9ECBC977BD5C57C9DD44AD9DA278E360">>}]} From 664bbe7a34898efa8830d4861996670f6f9b255e Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 10 Dec 2022 22:51:50 +0200 Subject: [PATCH 394/831] don't include qs in path when calculating v2 sig in velvet --- apps/riak_cs/src/velvet.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/velvet.erl b/apps/riak_cs/src/velvet.erl index 42094ead4..464f2c6bb 100644 --- a/apps/riak_cs/src/velvet.erl +++ b/apps/riak_cs/src/velvet.erl @@ -109,7 +109,7 @@ create_user(ContentType, UserDoc, Options) -> delete_bucket(Bucket, Requester, Options) -> AuthCreds = proplists:get_value(auth_creds, Options, no_auth_creds), QS = requester_qs(Requester), - Path = buckets_path(Bucket) ++ QS, + Path = buckets_path(Bucket), Headers0 = [{"Date", httpd_util:rfc1123_date()}], case AuthCreds of {_, _} -> @@ -123,7 +123,7 @@ delete_bucket(Bucket, Requester, Options) -> no_auth_creds -> Headers = Headers0 end, - case request(delete, Path, [204], Headers) of + case request(delete, Path ++ QS, [204], Headers) of {ok, {{_, 204, _}, _RespHeaders, _}} -> ok; {error, {ok, {{_, StatusCode, Reason}, _RespHeaders, RespBody}}} -> From 1c37b636981110c4efb05d1adb57364493e227b4 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 10 Dec 2022 22:54:22 +0200 Subject: [PATCH 395/831] make (proper) use of local save_user in stanchion_utils --- apps/riak_cs/src/stanchion_utils.erl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/riak_cs/src/stanchion_utils.erl b/apps/riak_cs/src/stanchion_utils.erl index 4bb98b3cb..b84d444d8 100644 --- a/apps/riak_cs/src/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion_utils.erl @@ -107,9 +107,9 @@ create_bucket(BucketFields) -> case OpResult1 of ok -> BucketRecord = bucket_record(Bucket, create), - {ok, {User, _UserObj}} = get_user(OwnerId, Pbc), + {ok, {User, UserObj}} = get_user(OwnerId, Pbc), UpdUser = update_user_buckets(add, User, BucketRecord), - save_user(UpdUser, Pbc); + save_user(false, UpdUser, UserObj, Pbc); {error, _} -> OpResult1 end, @@ -175,10 +175,10 @@ delete_bucket(Bucket, OwnerId) -> OpResult2 = case OpResult1 of ok -> - BucketRecord = bucket_record(Bucket, create), - {ok, {User, _UserObj}} = get_user(OwnerId, Pbc), + BucketRecord = bucket_record(Bucket, delete), + {ok, {User, UserObj}} = get_user(OwnerId, Pbc), UpdUser = update_user_buckets(delete, User, BucketRecord), - save_user(UpdUser, Pbc); + save_user(false, UpdUser, UserObj, Pbc); {error, _} -> OpResult1 end, From ff45409acf20edfdd8304f398382290536f60df4 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 10 Dec 2022 22:55:22 +0200 Subject: [PATCH 396/831] move supporting functions closer to calling sites; drop some local specs and types --- apps/riak_cs/src/stanchion_utils.erl | 111 ++++++++++++--------------- 1 file changed, 50 insertions(+), 61 deletions(-) diff --git a/apps/riak_cs/src/stanchion_utils.erl b/apps/riak_cs/src/stanchion_utils.erl index b84d444d8..92cb890d8 100644 --- a/apps/riak_cs/src/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion_utils.erl @@ -59,14 +59,6 @@ -include_lib("riak_pb/include/riak_pb_kv_codec.hrl"). -include_lib("kernel/include/logger.hrl"). --type bucket_op() :: create | update_acl | delete | update_policy | delete_policy | update_versioning. --type bucket_op_option() :: {acl, acl()} - | {policy, binary()} - | delete_policy - | {bag, binary()} - | {versioning, binary()}. --type bucket_op_options() :: [bucket_op_option()]. - %% =================================================================== %% Public API %% =================================================================== @@ -284,56 +276,6 @@ pow(Base, Power, Acc) -> pow(Base, Power - 1, Acc * Base) end. -%% @doc Store a new bucket in Riak -%% though whole metadata itself is a dict, a metadata of ?MD_USERMETA is -%% proplists of {?MD_ACL, ACL::binary()}|{?MD_POLICY, PolicyBin::binary()}| -%% {?MD_BAG, BagId::binary()}, {?MD_VERSIONING, bucket_versioning_option()}}. -%% should preserve other metadata. ACL and Policy can be overwritten. --spec put_bucket(term(), binary(), bucket_op_options(), pid()) -> - ok | {error, term()}. -put_bucket(BucketObj, OwnerId, Opts, RiakPid) -> - PutOptions = [{w, all}, {pw, all}], - UpdBucketObj0 = riakc_obj:update_value(BucketObj, OwnerId), - MD = case riakc_obj:get_metadatas(UpdBucketObj0) of - [] -> % create - dict:from_list([{?MD_USERMETA, []}]); - [MD0] -> MD0; - _E -> - MsgData = {siblings, riakc_obj:key(BucketObj)}, - logger:error("bucket has siblings: ~p", [MsgData]), - throw(MsgData) % @TODO: data broken; handle this - end, - MetaData = make_new_metadata(MD, Opts), - UpdBucketObj = riakc_obj:update_metadata(UpdBucketObj0, MetaData), - {Result, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:put(RiakPid, UpdBucketObj, PutOptions)), - stanchion_stats:update([riakc, put_cs_bucket], TAT), - Result. - --spec make_new_metadata(dict:dict(), bucket_op_options()) -> dict:dict(). -make_new_metadata(MD, Opts) -> - MetaVals = dict:fetch(?MD_USERMETA, MD), - UserMetaData = make_new_user_metadata(MetaVals, Opts), - dict:store(?MD_USERMETA, UserMetaData, dict:erase(?MD_USERMETA, MD)). - --spec make_new_user_metadata(proplists:proplist(), bucket_op_options()) -> proplists:proplist(). -make_new_user_metadata(MetaVals, [])-> - MetaVals; -make_new_user_metadata(MetaVals, [{acl, Acl} | Opts]) -> - make_new_user_metadata(replace_meta(?MD_ACL, Acl, MetaVals), Opts); -make_new_user_metadata(MetaVals, [{policy, Policy} | Opts]) -> - make_new_user_metadata(replace_meta(?MD_POLICY, Policy, MetaVals), Opts); -make_new_user_metadata(MetaVals, [{bag, undefined} | Opts]) -> - make_new_user_metadata(MetaVals, Opts); -make_new_user_metadata(MetaVals, [{bag, BagId} | Opts]) -> - make_new_user_metadata(replace_meta(?MD_BAG, BagId, MetaVals), Opts); -make_new_user_metadata(MetaVals, [delete_policy | Opts]) -> - make_new_user_metadata(proplists:delete(?MD_POLICY, MetaVals), Opts); -make_new_user_metadata(MetaVals, [{versioning, VsnOpt} | Opts]) -> - make_new_user_metadata(replace_meta(?MD_VERSIONING, VsnOpt, MetaVals), Opts). - -replace_meta(Key, NewValue, MetaVals) -> - [{Key, term_to_binary(NewValue)} | proplists:delete(Key, MetaVals)]. - %% @doc Get a protobufs connection to the riak cluster %% using information from the application environment. -type riak_connect_failed() :: {riak_connect_failed, tuple()}. @@ -501,7 +443,6 @@ handle_active_manifests({ok, _Active}=ActiveReply) -> handle_active_manifests({error, no_active_manifest}) -> {error, notfound}. --spec bucket_available(binary(), fun(), bucket_op(), pid()) -> {true, term()} | {false, atom()}. bucket_available(Bucket, RequesterId, BucketOp, RiakPid) -> GetOptions = [{pr, all}], case ?TURNAROUND_TIME(riakc_pb_socket:get(RiakPid, ?BUCKETS_BUCKET, Bucket, GetOptions)) of @@ -570,7 +511,8 @@ do_bucket_op(Bucket, OwnerId, Opts, BucketOp, undefined) -> do_bucket_op(Bucket, OwnerId, Opts, BucketOp, Pbc) -> try do_bucket_op2(Bucket, OwnerId, Opts, BucketOp, Pbc) - catch T:E:ST -> + catch + T:E:ST -> logger:error("Error on updating bucket ~s: ~p. Stacktrace: ~p", [Bucket, {T, E}, ST]), {error, {T, E}} @@ -592,6 +534,54 @@ do_bucket_op2(Bucket, OwnerId, Opts, BucketOp, Pbc) -> {error, Reason1} end. +%% @doc Store a new bucket in Riak +%% though whole metadata itself is a dict, a metadata of ?MD_USERMETA is +%% proplists of {?MD_ACL, ACL::binary()}|{?MD_POLICY, PolicyBin::binary()}| +%% {?MD_BAG, BagId::binary()}, {?MD_VERSIONING, bucket_versioning_option()}}. +%% should preserve other metadata. ACL and Policy can be overwritten. +put_bucket(BucketObj, OwnerId, Opts, RiakPid) -> + logger:debug("put_bucket(~p, ~p, ~p)", [BucketObj, OwnerId, Opts]), + PutOptions = [{w, all}, {pw, all}], + UpdBucketObj0 = riakc_obj:update_value(BucketObj, OwnerId), + logger:debug("UpdBucketObj0 ~p", [UpdBucketObj0]), + MD = case riakc_obj:get_metadatas(UpdBucketObj0) of + [] -> % create + dict:from_list([{?MD_USERMETA, []}]); + [MD0] -> MD0; + _E -> + MsgData = {siblings, riakc_obj:key(BucketObj)}, + logger:error("bucket has siblings: ~p", [MsgData]), + throw(MsgData) % @TODO: data broken; handle this + end, + MetaData = make_new_metadata(MD, Opts), + UpdBucketObj = riakc_obj:update_metadata(UpdBucketObj0, MetaData), + {Result, TAT} = ?TURNAROUND_TIME(riakc_pb_socket:put(RiakPid, UpdBucketObj, PutOptions)), + stanchion_stats:update([riakc, put_cs_bucket], TAT), + Result. + +make_new_metadata(MD, Opts) -> + MetaVals = dict:fetch(?MD_USERMETA, MD), + UserMetaData = make_new_user_metadata(MetaVals, Opts), + dict:store(?MD_USERMETA, UserMetaData, dict:erase(?MD_USERMETA, MD)). + +make_new_user_metadata(MetaVals, [])-> + MetaVals; +make_new_user_metadata(MetaVals, [{acl, Acl} | Opts]) -> + make_new_user_metadata(replace_meta(?MD_ACL, Acl, MetaVals), Opts); +make_new_user_metadata(MetaVals, [{policy, Policy} | Opts]) -> + make_new_user_metadata(replace_meta(?MD_POLICY, Policy, MetaVals), Opts); +make_new_user_metadata(MetaVals, [{bag, undefined} | Opts]) -> + make_new_user_metadata(MetaVals, Opts); +make_new_user_metadata(MetaVals, [{bag, BagId} | Opts]) -> + make_new_user_metadata(replace_meta(?MD_BAG, BagId, MetaVals), Opts); +make_new_user_metadata(MetaVals, [delete_policy | Opts]) -> + make_new_user_metadata(proplists:delete(?MD_POLICY, MetaVals), Opts); +make_new_user_metadata(MetaVals, [{versioning, VsnOpt} | Opts]) -> + make_new_user_metadata(replace_meta(?MD_VERSIONING, VsnOpt, MetaVals), Opts). + +replace_meta(Key, NewValue, MetaVals) -> + [{Key, term_to_binary(NewValue)} | proplists:delete(Key, MetaVals)]. + %% @doc bucket is ok to delete when bucket is empty. Ongoing multipart %% uploads are all supposed to be automatically aborted by Riak CS. @@ -983,7 +973,6 @@ update_user_record([{<<"status">>, Status} | RestUserFields], User, EmailUpdated update_user_record(RestUserFields, User, EmailUpdated) end; update_user_record([_ | RestUserFields], User, EmailUpdated) -> - update_user_record(RestUserFields, User, EmailUpdated). From 2175b539a391ecf419f35310c26c401fe1167cb3 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 10 Dec 2022 22:56:55 +0200 Subject: [PATCH 397/831] deduplicate request_signature between velvet and stanchion --- apps/riak_cs/src/stanchion_auth.erl | 31 +---------------------------- 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/apps/riak_cs/src/stanchion_auth.erl b/apps/riak_cs/src/stanchion_auth.erl index 81e26dd99..87725a344 100644 --- a/apps/riak_cs/src/stanchion_auth.erl +++ b/apps/riak_cs/src/stanchion_auth.erl @@ -60,36 +60,7 @@ authenticate(RD, [KeyId, Signature]) -> string(), string()) -> string(). request_signature(HttpVerb, RawHeaders, Path, KeyData) -> - Headers = normalize_headers(RawHeaders), - BashoHeaders = extract_basho_headers(Headers), - case proplists:is_defined("x-basho-date", Headers) of - true -> - Date = "\n"; - false -> - Date = [proplists:get_value("date", Headers), "\n"] - end, - case proplists:get_value("content-md5", Headers) of - undefined -> - CMD5 = []; - CMD5 -> - ok - end, - case proplists:get_value("content-type", Headers) of - undefined -> - ContentType = []; - ContentType -> - ok - end, - STS = [atom_to_list(HttpVerb), - "\n", - CMD5, - "\n", - ContentType, - "\n", - Date, - BashoHeaders, - Path], - base64:encode_to_string(stanchion_utils:sha_mac(KeyData, STS)). + velvet:request_signature(HttpVerb, RawHeaders, Path, KeyData). %% =================================================================== %% Internal functions From 68862b57cfca2f866f46be05953358aac5dd0491 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 10 Dec 2022 23:07:21 +0200 Subject: [PATCH 398/831] complete 664bbe7a348 --- apps/riak_cs/src/velvet.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/velvet.erl b/apps/riak_cs/src/velvet.erl index 464f2c6bb..7d5cb8b21 100644 --- a/apps/riak_cs/src/velvet.erl +++ b/apps/riak_cs/src/velvet.erl @@ -177,7 +177,7 @@ set_bucket_versioning(Bucket, ContentType, Doc, Options) -> delete_bucket_policy(Bucket, Requester, Options) -> AuthCreds = proplists:get_value(auth_creds, Options, no_auth_creds), QS = requester_qs(Requester), - Path = buckets_path(Bucket, policy) ++ QS, + Path = buckets_path(Bucket, policy), Headers0 = [{"Date", httpd_util:rfc1123_date()}], case AuthCreds of {_, _} -> @@ -191,7 +191,7 @@ delete_bucket_policy(Bucket, Requester, Options) -> no_auth_creds -> Headers = Headers0 end, - case request(delete, Path, [204], Headers) of + case request(delete, Path ++ QS, [204], Headers) of {ok, {{_, 204, _}, _RespHeaders, _}} -> ok; {error, {ok, {{_, StatusCode, Reason}, _RespHeaders, RespBody}}} -> From 7b2c552d4830314c47ca6877be3c7e1f2cad4c2a Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 12 Dec 2022 21:29:55 +0200 Subject: [PATCH 399/831] remove excessive debug log entries --- apps/riak_cs/src/stanchion_utils.erl | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/riak_cs/src/stanchion_utils.erl b/apps/riak_cs/src/stanchion_utils.erl index 92cb890d8..b3d6da36b 100644 --- a/apps/riak_cs/src/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion_utils.erl @@ -540,10 +540,8 @@ do_bucket_op2(Bucket, OwnerId, Opts, BucketOp, Pbc) -> %% {?MD_BAG, BagId::binary()}, {?MD_VERSIONING, bucket_versioning_option()}}. %% should preserve other metadata. ACL and Policy can be overwritten. put_bucket(BucketObj, OwnerId, Opts, RiakPid) -> - logger:debug("put_bucket(~p, ~p, ~p)", [BucketObj, OwnerId, Opts]), PutOptions = [{w, all}, {pw, all}], UpdBucketObj0 = riakc_obj:update_value(BucketObj, OwnerId), - logger:debug("UpdBucketObj0 ~p", [UpdBucketObj0]), MD = case riakc_obj:get_metadatas(UpdBucketObj0) of [] -> % create dict:from_list([{?MD_USERMETA, []}]); From 9e67de224d7b7c974d0c4243daa113e419e9048b Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Dec 2022 20:06:53 +0200 Subject: [PATCH 400/831] delagerify tools/internal escripts --- tools/internal/block_audit.erl | 8 +++----- tools/internal/ensure_orphan_blocks.erl | 7 ++----- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/tools/internal/block_audit.erl b/tools/internal/block_audit.erl index 6aa132f59..7e326ec88 100644 --- a/tools/internal/block_audit.erl +++ b/tools/internal/block_audit.erl @@ -1,3 +1,4 @@ +%%! %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved,. @@ -35,15 +36,12 @@ }). main(Args) -> - _ = application:load(lager), - ok = application:set_env(lager, handlers, [{lager_console_backend, [{level, info}]}]), - ok = lager:start(), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of 0 -> info; _ -> - ok = lager:set_loglevel(lager_console_backend, debug), + ok = logger:set_primary_config(level, debug), debug end, debug("Log level is set to ~p", [LogLevel]), @@ -96,7 +94,7 @@ info(Format, Args) -> log(info, Format, Args). log(Level, Format, Args) -> - lager:log(Level, self(), Format, Args). + logger:log(Level, Format, Args). audit(Pid, Opts) -> Buckets = case proplists:get_all_values(bucket, Opts) of diff --git a/tools/internal/ensure_orphan_blocks.erl b/tools/internal/ensure_orphan_blocks.erl index 3a5eb99b9..92b4a7bd6 100644 --- a/tools/internal/ensure_orphan_blocks.erl +++ b/tools/internal/ensure_orphan_blocks.erl @@ -32,15 +32,12 @@ -include_lib("riak_cs/include/riak_cs.hrl"). main(Args) -> - _ = application:load(lager), - ok = application:set_env(lager, handlers, [{lager_console_backend, [{level, info}]}]), - ok = lager:start(), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of 0 -> info; _ -> - ok = lager:set_loglevel(lager_console_backend, debug), + ok = logger:set_primary_config(level, debug), debug end, debug("Log level is set to ~p", [LogLevel]), @@ -95,7 +92,7 @@ info(Format, Args) -> log(info, Format, Args). log(Level, Format, Args) -> - lager:log(Level, self(), Format, Args). + logger:log(Level, self(), Format, Args). audit2(Pid, Opts) -> info("Filter actual orphaned blocks from maybe ones. This may take a while...", []), From a4ba5ce2031c0100aed2a3f40dfb409d3255232a Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 13 Dec 2022 20:07:18 +0200 Subject: [PATCH 401/831] no need to include sasl in relx release apps --- rebar.config | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index 2b4d3c6e0..81a55e4db 100644 --- a/rebar.config +++ b/rebar.config @@ -35,8 +35,7 @@ {relx, [ {release, {'riak-cs', "3.1"}, - [ sasl - , riak_cs + [ riak_cs ] } , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} From 82e64ac3816fa05dd992a9a3d8ca6e1601300b32 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 15 Dec 2022 00:43:23 +0200 Subject: [PATCH 402/831] drop deps target & unused vars in top Makefile --- Makefile | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index c38d54650..2f01c16e1 100644 --- a/Makefile +++ b/Makefile @@ -8,25 +8,20 @@ BASE_DIR = $(shell pwd) ERLANG_BIN = $(shell dirname $(shell which erl 2>/dev/null) 2>/dev/null) OTP_VER = $(shell erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell) REBAR ?= $(BASE_DIR)/rebar3 -CS_HTTP_PORT ?= 8080 PULSE_TESTS = riak_cs_get_fsm_pulse -.PHONY: rel stagedevrel deps test depgraph graphviz all compile package pkg-clean +.PHONY: rel stagedevrel test depgraph graphviz all compile package pkg-clean all: compile compile: - @($(REBAR) compile) - -deps: - $(if $(HEAD_REVISION),$(warning "Warning: you have checked out a tag ($(HEAD_REVISION)) and should use the compile target")) - $(REBAR) upgrade + @$(REBAR) compile clean: - $(REBAR) clean + @$(REBAR) clean -distclean: clean devclean relclean - @rm -rf _build +distclean: devclean relclean + @$(REBAR) clean -a ## ## Release targets @@ -107,11 +102,6 @@ stage : rel $(foreach dep,$(wildcard _build/default/lib/*), rm -rf rel/riak-cs/lib/$(shell basename $(dep))* && ln -sf $(abspath $(dep)) rel/riak-cs/lib;) -DIALYZER_APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools crypto inets \ - webtool eunit syntax_tools compiler -PLT ?= $(HOME)/.riak-cs_dialyzer_plt - - ## Create a dependency graph png depgraph: graphviz @echo "Note: If you have nothing in deps/ this might be boring" From e829a3f83c0ec8f9c498ae4e96adb06312eac634 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 15 Dec 2022 00:49:25 +0200 Subject: [PATCH 403/831] Bishop Bors is an impostor, strike him out from CONTRIBUTORS --- CONTRIBUTORS | 1 - 1 file changed, 1 deletion(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index dfffd42c9..697328d84 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -6,7 +6,6 @@ extracted from git history, are as follows: Andrew J. Stone Andrew Thompson Andy Gross - Bishop Bors Bryan Fink Charlie Voiselle Christian Dahlqvist From 6e31422fa70ae2f480b1e4735133170c9107bce2 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 15 Dec 2022 01:08:28 +0200 Subject: [PATCH 404/831] drop config/vm.args (will cause nodename clash with that from riak-cs.conf) --- config/vm.args | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 config/vm.args diff --git a/config/vm.args b/config/vm.args deleted file mode 100644 index e742798b6..000000000 --- a/config/vm.args +++ /dev/null @@ -1,2 +0,0 @@ --setcookie riak --name riak-cs@127.0.0.1 From 639f33e5d081d913d82e01178d64a1770f4e72b9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 15 Dec 2022 13:10:09 +0200 Subject: [PATCH 405/831] correctly set dev_mode in relx profiles --- rebar.config | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/rebar.config b/rebar.config index 81a55e4db..6762243eb 100644 --- a/rebar.config +++ b/rebar.config @@ -38,6 +38,8 @@ [ riak_cs ] } + , {dev_mode, false} + , {include_erts, true} , {overlay, [ {template, "rel/files/advanced.config", "etc/advanced.config"} , {template, "rel/files/riak-cs", "usr/bin/riak-cs"} , {template, "rel/files/riak-cs-admin", "bin/riak-cs-admin"} @@ -72,8 +74,7 @@ {profiles, [ {rel, [ {relx, - [ {mode, prod} - , {overlay_vars, "rel/vars.config"} + [ {overlay_vars, "rel/vars.config"} , {extended_start_script_hooks, [ {post_start, [{wait_for_process, riak_cs_sup}] @@ -86,12 +87,24 @@ } , {dev, - [ {relx, [{mode, dev}]} + [ {relx, + [ {dev_mode, true} + , {extended_start_script_hooks, + [ {post_start, + [{wait_for_process, riak_cs_sup}] + } + ] + } + ] + } ] } , {test, - [ {relx, [{mode, dev}]} + [ {relx, + [ {dev_mode, true} + ] + } , {deps, [ {proper, "1.4.0"} , {erlcloud, {git, "https://github.com/TI-Tokyo/erlcloud.git", {tag, "0.4.7"}}} @@ -102,8 +115,7 @@ , {rpm, [ {relx, - [ {mode, prod} - , {overlay_vars, "rel/pkg/rpm/vars.config"} + [ {overlay_vars, "rel/pkg/rpm/vars.config"} , {extended_start_script_hooks, [ {post_start, [{pid, "/run/riak-cs/riak-cs.pid"}, @@ -118,8 +130,7 @@ , {deb, [ {relx, - [ {mode, prod} - , {overlay_vars, "rel/pkg/deb/vars.config"} + [ {overlay_vars, "rel/pkg/deb/vars.config"} , {extended_start_script_hooks, [ {post_start, [{pid, "/run/riak-cs/riak-cs.pid"}, @@ -134,8 +145,7 @@ , {fbsdng, [ {relx, - [ {mode, prod} - , {overlay_vars, "rel/pkg/fbsdng/vars.config"} + [ {overlay_vars, "rel/pkg/fbsdng/vars.config"} , {extended_start_script_hooks, [ {post_start, [{pid, "/run/riak-cs/riak-cs.pid"}, @@ -150,8 +160,7 @@ , {alpine, [ {relx, - [ {mode, prod} - , {overlay_vars, "rel/pkg/alpine/vars.config"} + [ {overlay_vars, "rel/pkg/alpine/vars.config"} , {overlay, [ {template, "rel/pkg/alpine/riak-cs.nosu", "usr/bin/riak-cs.nosu"} %% to be renamed to riak-cs in Makefile. We would rather @@ -174,8 +183,7 @@ %% it's essentially `make rel` tarred , {osx, [ {relx, - [ {mode, prod} - , {overlay_vars, "rel/pkg/osx/vars.config"} + [ {overlay_vars, "rel/pkg/osx/vars.config"} , {extended_start_script_hooks, [ {post_start, [{wait_for_process, riak_cs_sup}] From e83fa287bb74685fd95c31390cbaecd21ca969d6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 15 Dec 2022 13:23:44 +0200 Subject: [PATCH 406/831] complete delagerification of escripts in tools --- tools/internal/block_audit.erl | 6 +++--- tools/internal/ensure_orphan_blocks.erl | 4 ++-- tools/internal/offline_delete.erl | 4 +--- tools/internal/riak_cs_inspector.erl | 6 ++---- tools/internal/select_gc_bucket.erl | 4 +--- tools/repair_gc_bucket.erl | 9 ++------- 6 files changed, 11 insertions(+), 22 deletions(-) diff --git a/tools/internal/block_audit.erl b/tools/internal/block_audit.erl index 7e326ec88..78334415c 100644 --- a/tools/internal/block_audit.erl +++ b/tools/internal/block_audit.erl @@ -1,8 +1,7 @@ -%%! %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved,. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -29,7 +28,8 @@ -define(SLK_TIMEOUT, 360000000). %% 100 hours --include_lib("riak_cs/include/riak_cs.hrl"). +%%-include_lib("riak_cs/include/riak_cs.hrl"). +-define(BUCKETS_BUCKET, <<"moss.buckets">>). -record(buuid, {uuid :: binary(), seqs :: [non_neg_integer()] % sequence numbers diff --git a/tools/internal/ensure_orphan_blocks.erl b/tools/internal/ensure_orphan_blocks.erl index 92b4a7bd6..ad5dc7fbf 100644 --- a/tools/internal/ensure_orphan_blocks.erl +++ b/tools/internal/ensure_orphan_blocks.erl @@ -1,7 +1,7 @@ %% --------------------------------------------------------------------- %% %% Copyright (c) 2007-2015 Basho Technologies, Inc. All Rights Reserved,. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -92,7 +92,7 @@ info(Format, Args) -> log(info, Format, Args). log(Level, Format, Args) -> - logger:log(Level, self(), Format, Args). + logger:log(Level, Format, Args). audit2(Pid, Opts) -> info("Filter actual orphaned blocks from maybe ones. This may take a while...", []), diff --git a/tools/internal/offline_delete.erl b/tools/internal/offline_delete.erl index 45ecc7d3d..38f0287ac 100644 --- a/tools/internal/offline_delete.erl +++ b/tools/internal/offline_delete.erl @@ -1,9 +1,7 @@ -#!/usr/bin/env escript - %% --------------------------------------------------------------------- %% %% Copyright (c) 2015 Basho Technologies, Inc. All Rights Reserved,. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/tools/internal/riak_cs_inspector.erl b/tools/internal/riak_cs_inspector.erl index cdf4243c7..d75e003c1 100644 --- a/tools/internal/riak_cs_inspector.erl +++ b/tools/internal/riak_cs_inspector.erl @@ -1,9 +1,7 @@ -#!/usr/bin/env escript - %% --------------------------------------------------------------------- %% %% Copyright (c) 2013 Basho Technologies, Inc. All Rights Reserved,. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -1033,7 +1031,7 @@ print_manifest(V) -> -spec get_riak_object(pid(), binary(), binary()) -> [{SiblingNo::integer(), {tombstone, tombstone} | - {Metadata::dict(), Value::binary()}}]. + {Metadata::dict:dict(), Value::binary()}}]. get_riak_object(RiakcPid, RiakBucket, RiakKey) -> %% With option deletedvclock, tombstone is represented as Object with no contents case riakc_pb_socket:get(RiakcPid, RiakBucket, RiakKey, [deletedvclock]) of diff --git a/tools/internal/select_gc_bucket.erl b/tools/internal/select_gc_bucket.erl index 58d316c3a..6ba548b07 100644 --- a/tools/internal/select_gc_bucket.erl +++ b/tools/internal/select_gc_bucket.erl @@ -1,9 +1,7 @@ -%% #!/usr/bin/env escript - %% --------------------------------------------------------------------- %% %% Copyright (c) 2015 Basho Technologies, Inc. All Rights Reserved,. -%% 2021 TI Tokyo All Rights Reserved. +%% 2021, 2022 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file diff --git a/tools/repair_gc_bucket.erl b/tools/repair_gc_bucket.erl index a0cb7a9ca..6fee0d61d 100644 --- a/tools/repair_gc_bucket.erl +++ b/tools/repair_gc_bucket.erl @@ -1,5 +1,3 @@ -#!/usr/bin/env escript - %% --------------------------------------------------------------------- %% %% Copyright (c) 2014 Basho Technologies, Inc. All Rights Reserved,. @@ -54,15 +52,12 @@ -include_lib("riak_cs/include/riak_cs.hrl"). main(Args) -> - _ = application:load(lager), - ok = application:set_env(lager, handlers, [{lager_console_backend, [{level, info}]}]), - ok = lager:start(), {ok, {Options, _PlainArgs}} = getopt:parse(option_spec(), Args), LogLevel = case proplists:get_value(debug, Options) of 0 -> info; _ -> - ok = lager:set_loglevel(lager_console_backend, debug), + ok = logger:set_primary_config(level, debug), debug end, debug("Log level is set to ~p", [LogLevel]), @@ -113,7 +108,7 @@ info(Format, Args) -> log(info, Format, Args). log(Level, Format, Args) -> - lager:log(Level, self(), Format, Args). + logger:log(Level, Format, Args). -spec repair(pid(), proplists:proplist()) -> term(). repair(Pbc, Options) -> From 02f5d9e86c4ee5b7bccb4cae702b4caec3989ac6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 15 Dec 2022 22:03:33 +0200 Subject: [PATCH 407/831] overlooked case of starting without stanchion details previously saved? --- apps/riak_cs/src/stanchion_migration.erl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/riak_cs/src/stanchion_migration.erl b/apps/riak_cs/src/stanchion_migration.erl index 58b8a6940..148c85ec7 100644 --- a/apps/riak_cs/src/stanchion_migration.erl +++ b/apps/riak_cs/src/stanchion_migration.erl @@ -54,7 +54,9 @@ validate_stanchion() -> _ -> ok end, - apply_stanchion_details({Host, Port}) + apply_stanchion_details({Host, Port}); + {error, notfound} -> + apply_stanchion_details({ConfiguredIP, ConfiguredPort}) end, ok = riakc_pb_socket:stop(Pbc). From e963c3a7e8f7cc022598b49b2e41c092fd1578b1 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 16 Dec 2022 18:52:39 +0200 Subject: [PATCH 408/831] option to store stanchion details in a specific riak cluster --- apps/riak_cs/priv/riak_cs.schema | 24 ++++-- apps/riak_cs/src/riak_cs_config.erl | 13 +++- apps/riak_cs/src/riak_cs_sup.erl | 4 +- apps/riak_cs/src/stanchion_migration.erl | 97 ++++++++++++++---------- apps/riak_cs/src/stanchion_sup.erl | 20 +---- rel/gen_dev | 2 + rel/pkg/alpine/vars.config | 3 +- rel/pkg/deb/vars.config | 3 +- rel/pkg/fbsdng/vars.config | 3 +- rel/pkg/rpm/vars.config | 3 +- rel/vars.config | 7 +- rel/vars/dev_vars.config.src | 12 +-- 12 files changed, 104 insertions(+), 87 deletions(-) diff --git a/apps/riak_cs/priv/riak_cs.schema b/apps/riak_cs/priv/riak_cs.schema index 7eae88abe..39a783fd6 100644 --- a/apps/riak_cs/priv/riak_cs.schema +++ b/apps/riak_cs/priv/riak_cs.schema @@ -6,17 +6,25 @@ %% == Basic Configuration == %% @doc Whether to run stanchion on this node (auto means we will -%% check if stanchion is already started on any connected nodes, and +%% check if stanchion is already started on any nodes in our tussle, and %% only start it here if it is not). -{mapping, "operation_mode", "riak_cs.operation_mode", [ - {default, {{ operation_mode }} }, +{mapping, "stanchion_hosting_mode", "riak_cs.stanchion_hosting_mode", [ + {default, {{ stanchion_hosting_mode }} }, {datatype, {enum, [auto, riak_cs_with_stanchion, riak_cs_only, stanchion_only]}}, - {validators, ["valid_operation_mode"]} + {validators, ["valid_stanchion_hosting_mode"]} +]}. + +%% @doc Riak node to store volatile tussle data (ip:port of the node +%% running stanchion, currently). +{mapping, "tussle_voss_riak_host", "riak_cs.tussle_voss_riak_host", [ + {default, "{{ tussle_voss_riak_host }}" }, + {datatype, [fqdn, ip, {enum, [auto]}]}, + {validators, ["valid_host_or_auto"]} ]}. {validator, - "valid_operation_mode", + "valid_stanchion_hosting_mode", "should be one of: auto, riak_cs_with_stanchion, riak_cs_only, stanchion_only", fun(A) -> lists:member(A, [auto, riak_cs_with_stanchion, riak_cs_only, stanchion_only]) end @@ -35,6 +43,12 @@ "should be a valid host", fun({Host, Port}) -> is_list(Host) andalso 0 < Port andalso Port < 65536 end}. +{validator, + "valid_host_or_auto", + "should be a valid host or 'auto'", + fun({Host, Port}) -> is_list(Host) andalso 0 < Port andalso Port < 65536; + (Auto) -> Auto == auto end}. + %% @doc Riak node to which Riak CS accesses {mapping, "riak_host", "riak_cs.riak_host", [ {default, {"{{riak_ip}}", {{riak_pb_port}} }}, diff --git a/apps/riak_cs/src/riak_cs_config.erl b/apps/riak_cs/src/riak_cs_config.erl index 3d6d86d1f..8d16276c9 100644 --- a/apps/riak_cs/src/riak_cs_config.erl +++ b/apps/riak_cs/src/riak_cs_config.erl @@ -70,7 +70,8 @@ active_delete_threshold/0, fast_user_get/0, root_host/0, - operation_mode/0 + stanchion_hosting_mode/0, + tussle_voss_riak_host/0 ]). %% Timeouts hitting Riak @@ -439,12 +440,16 @@ fast_user_get() -> root_host() -> get_env(riak_cs, cs_root_host, ?ROOT_HOST). --spec operation_mode() -> auto | riak_cs_only | stanchion_only | riak_cs_with_stanchion. -operation_mode() -> - {ok, A} = application:get_env(riak_cs, operation_mode), +-spec stanchion_hosting_mode() -> auto | riak_cs_only | stanchion_only | riak_cs_with_stanchion. +stanchion_hosting_mode() -> + {ok, A} = application:get_env(riak_cs, stanchion_hosting_mode), true = (A == auto orelse A == riak_cs_only orelse A == stanchion_only orelse A == riak_cs_with_stanchion), A. +-spec tussle_voss_riak_host() -> string(). +tussle_voss_riak_host() -> + get_env(riak_cs, tussle_voss_riak_host, auto). + %% =================================================================== %% ALL Timeouts hitting Riak %% =================================================================== diff --git a/apps/riak_cs/src/riak_cs_sup.erl b/apps/riak_cs/src/riak_cs_sup.erl index 9c1fd6771..dd77d285a 100644 --- a/apps/riak_cs/src/riak_cs_sup.erl +++ b/apps/riak_cs/src/riak_cs_sup.erl @@ -35,7 +35,7 @@ admin_listener, ssl, admin_ssl, - {operation_mode, auto}]). + {stanchion_hosting_mode, auto}]). -spec start_link() -> supervisor:startlink_ret(). start_link() -> @@ -61,7 +61,7 @@ init([]) -> init2(Options). init2(Options) -> - Mode = proplists:get_value(operation_mode, Options), + Mode = proplists:get_value(stanchion_hosting_mode, Options), RCSChildren = case Mode of M when M == auto; diff --git a/apps/riak_cs/src/stanchion_migration.erl b/apps/riak_cs/src/stanchion_migration.erl index 148c85ec7..f6386fcef 100644 --- a/apps/riak_cs/src/stanchion_migration.erl +++ b/apps/riak_cs/src/stanchion_migration.erl @@ -24,11 +24,11 @@ -export([validate_stanchion/0, adopt_stanchion/0, - do_we_get_to_run_stanchion/3, + do_we_get_to_run_stanchion/2, apply_stanchion_details/1, apply_stanchion_details/2, read_stanchion_data/1, - save_stanchion_data/2]). + save_stanchion_data/1]). -include("riak_cs.hrl"). @@ -63,7 +63,7 @@ validate_stanchion() -> -spec adopt_stanchion() -> ok | {error, stanchion_not_relocatable}. adopt_stanchion() -> - case riak_cs_config:operation_mode() of + case riak_cs_config:stanchion_hosting_mode() of auto -> {ok, Pbc} = riak_connection(), ThisHostAddr = riak_cs_utils:this_host_addr(), @@ -74,7 +74,7 @@ adopt_stanchion() -> ok = riakc_pb_socket:stop(Pbc), ok; M -> - logger:error("Riak CS operation_mode is ~s. Cannot relocate stanchion.", [M]), + logger:error("Riak CS start_stanchion_here is ~s. Cannot relocate stanchion.", [M]), {error, stanchion_not_relocatable} end. @@ -96,40 +96,44 @@ stop_stanchion_here() -> end. -do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) -> +do_we_get_to_run_stanchion(Mode, ThisHostAddr) -> {ConfiguredIP, ConfiguredPort, _Ssl} = riak_cs_config:stanchion(), - case read_stanchion_data(Pbc) of - - {ok, {{Host, Port}, Node}} when Mode == auto -> - logger:info("going to use stanchion started at ~s:~b (~s)", [Host, Port, Node]), - if Host == ThisHostAddr andalso - Port == ConfiguredPort andalso - Node == node() -> - logger:info("read stanchion details previously saved by us;" - " will start stanchion again at ~s:~b", [Host, Port]), - use_ours; - el/=se -> - {use_saved, {Host, Port}} - end; - - {ok, {{SavedHost, SavedPort}, Node}} when Mode == riak_cs_with_stanchion; - Mode == stanchion_only -> - case ThisHostAddr of - ConfiguredIP when ConfiguredPort == SavedPort, - Node == node() -> - %% we read what we must have saved before - {use_saved, {SavedHost, SavedPort}}; - _ -> - logger:error("this node is configured to run stanchion but" - " stanchion has already been started at ~s:~b", - [SavedHost, SavedPort]), - conflicting_stanchion_configuration - end; - - _ -> - logger:info("no previously saved stanchion details; going to start stanchion on this node"), - use_ours - end. + {ok, Pbc} = riak_connection(), + Res = + case read_stanchion_data(Pbc) of + + {ok, {{Host, Port}, Node}} when Mode == auto -> + logger:info("going to use stanchion started at ~s:~b (~s)", [Host, Port, Node]), + if Host == ThisHostAddr andalso + Port == ConfiguredPort andalso + Node == node() -> + logger:info("read stanchion details previously saved by us;" + " will start stanchion again at ~s:~b", [Host, Port]), + use_ours; + el/=se -> + {use_saved, {Host, Port}} + end; + + {ok, {{SavedHost, SavedPort}, Node}} when Mode == riak_cs_with_stanchion; + Mode == stanchion_only -> + case ThisHostAddr of + ConfiguredIP when ConfiguredPort == SavedPort, + Node == node() -> + %% we read what we must have saved before + {use_saved, {SavedHost, SavedPort}}; + _ -> + logger:error("this node is configured to run stanchion but" + " stanchion has already been started at ~s:~b", + [SavedHost, SavedPort]), + conflicting_stanchion_configuration + end; + + _ -> + logger:info("no previously saved stanchion details; going to start stanchion on this node"), + use_ours + end, + ok = riakc_pb_socket:stop(Pbc), + Res. apply_stanchion_details({Host, Port}) -> riak_cs_config:set_stanchion(Host, Port). @@ -154,14 +158,19 @@ read_stanchion_data(Pbc) -> Value /= <<>> % tombstone ], logger:warning("Read stanchion details riak object has ~b siblings." - " Please select a riak_cs node, reconfigure it with operation_mode = riak_cs_with_stanchion (or stanchion_only)," - " configure rest with operation_mode = riak_cs_only, and restart all nodes", [N]), + " Please select a riak_cs node, reconfigure it with stanchion_hosting_mode = riak_cs_with_stanchion (or stanchion_only)," + " configure rest with stanchion_hosting_mode = riak_cs_only, and restart all nodes", [N]), {ok, hd(Values)} end; _ -> {error, notfound} end. +save_stanchion_data(HostPort) -> + {ok, Pbc} = riak_connection(), + Res = save_stanchion_data(Pbc, HostPort), + ok = riakc_pb_socket:stop(Pbc), + Res. save_stanchion_data(Pbc, HostPort) -> ok = riak_cs_pbc:put_sans_stats( Pbc, riakc_obj:new(?SERVICE_BUCKET, ?STANCHION_DETAILS_KEY, @@ -171,7 +180,15 @@ save_stanchion_data(Pbc, HostPort) -> ok. riak_connection() -> - {Host, Port} = riak_cs_config:riak_host_port(), + {Host, Port} = + case riak_cs_config:tussle_voss_riak_host() of + auto -> + {H,P} = riak_cs_config:riak_host_port(), + logger:info("using main riak cluster for voss data at ~p:~p", [H, P]), + {H,P}; + Configured -> + Configured + end, Timeout = case application:get_env(riak_cs, riakc_connect_timeout) of {ok, ConfigValue} -> ConfigValue; diff --git a/apps/riak_cs/src/stanchion_sup.erl b/apps/riak_cs/src/stanchion_sup.erl index d95a85892..589a41dc3 100644 --- a/apps/riak_cs/src/stanchion_sup.erl +++ b/apps/riak_cs/src/stanchion_sup.erl @@ -36,20 +36,18 @@ start_link() -> -spec init([]) -> {ok, {supervisor:sup_flags(), [supervisor:child_spec()]}}. init([]) -> - {ok, Mode} = application:get_env(riak_cs, operation_mode), - {ok, Pbc} = riak_connection(), + {ok, Mode} = application:get_env(riak_cs, stanchion_hosting_mode), ThisHostAddr = riak_cs_utils:this_host_addr(), Children = - case stanchion_migration:do_we_get_to_run_stanchion(Mode, ThisHostAddr, Pbc) of + case stanchion_migration:do_we_get_to_run_stanchion(Mode, ThisHostAddr) of {use_saved, HostPort} -> ok = stanchion_migration:apply_stanchion_details(HostPort), []; use_ours -> {ok, {_IP, Port}} = application:get_env(riak_cs, stanchion_listener), - ok = stanchion_migration:save_stanchion_data(Pbc, {ThisHostAddr, Port}), + ok = stanchion_migration:save_stanchion_data({ThisHostAddr, Port}), stanchion_process_specs() end, - ok = riakc_pb_socket:stop(Pbc), {ok, {#{strategy => one_for_one, intensity => 10, period => 10}, Children @@ -96,15 +94,3 @@ stanchion_process_specs() -> type => supervisor, modules => dynamic}, [ServerSup, Web]. - -riak_connection() -> - {Host, Port} = riak_cs_config:riak_host_port(), - Timeout = case application:get_env(riak_cs, riakc_connect_timeout) of - {ok, ConfigValue} -> - ConfigValue; - undefined -> - 10000 - end, - StartOptions = [{connect_timeout, Timeout}, - {auto_reconnect, true}], - riakc_pb_socket:start_link(Host, Port, StartOptions). diff --git a/rel/gen_dev b/rel/gen_dev index 1a74ba599..b6f581900 100755 --- a/rel/gen_dev +++ b/rel/gen_dev @@ -16,6 +16,7 @@ BUILD_ROOT="`cd "$SCRIPT_DIR" && pwd -P`" NUMBER=${NAME##dev} RIAKBASE=$((10000 + 10 * $NUMBER)) +FIRSTRIAKPBPORT=$((10000 + 10 * 1 + 7)) CSBASE=$((15000 + 10 * $NUMBER)) RIAKPBPORT=$(($RIAKBASE + 7)) CSPORT=$(($CSBASE + 8)) @@ -27,5 +28,6 @@ echo "Generating $NAME - node='$NODE' riakpbport=$RIAKPBPORT csport=$CSPORT admi sed -e "s|@PLATFORM_BASE_DIR@|$PLATFORM_BASE_DIR|" \ -e "s/@NODE@/$NODE/" \ -e "s/@RIAKPBPORT@/$RIAKPBPORT/" \ + -e "s/@FIRSTRIAKPBPORT@/$FIRSTRIAKPBPORT/" \ -e "s/@CSPORT@/$CSPORT/" \ -e "s/@ADMINPORT@/$ADMINPORT/" < $TEMPLATE > $VARFILE diff --git a/rel/pkg/alpine/vars.config b/rel/pkg/alpine/vars.config index 622d50df1..286a8911d 100644 --- a/rel/pkg/alpine/vars.config +++ b/rel/pkg/alpine/vars.config @@ -24,12 +24,13 @@ {riak_pb_port, 8087}. {auth_bypass, false}. {admin_key, "admin-key"}. -{stanchion_ip, "127.0.0.1"}. {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. +{stanchion_hosting_mode, auto}. +{tussle_voss_riak_host, auto}. {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. diff --git a/rel/pkg/deb/vars.config b/rel/pkg/deb/vars.config index 517f2ac72..540858614 100644 --- a/rel/pkg/deb/vars.config +++ b/rel/pkg/deb/vars.config @@ -25,12 +25,13 @@ {auth_bypass, false}. {admin_key, "admin-key"}. {stanchion_host, "127.0.0.1"}. -{stanchion_ip, "0.0.0.0"}. {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. +{stanchion_hosting_mode, auto}. +{tussle_voss_riak_host, auto}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config index 488a8b09f..b5f4c8b0c 100644 --- a/rel/pkg/fbsdng/vars.config +++ b/rel/pkg/fbsdng/vars.config @@ -23,12 +23,13 @@ {auth_bypass, false}. {admin_key, "admin-key"}. {stanchion_host, "127.0.0.1"}. -{stanchion_ip, "0.0.0.0"}. {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. +{stanchion_hosting_mode, auto}. +{tussle_voss_riak_host, auto}. {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index 3e376cc3d..477013a1a 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -25,12 +25,13 @@ {auth_bypass, false}. {admin_key, "admin-key"}. {stanchion_host, "127.0.0.1"}. -{stanchion_ip, "0.0.0.0"}. {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. +{stanchion_hosting_mode, auto}. +{tussle_voss_riak_host, auto}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. diff --git a/rel/vars.config b/rel/vars.config index 6fe55495b..93cbae372 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -12,9 +12,6 @@ {platform_gen_dir, "."}. {platform_patch_dir, "./lib/patches"}. -%% -%% riak-cs.conf -%% {cs_ip, "0.0.0.0"}. {cs_port, 8080}. {admin_ip, "0.0.0.0"}. @@ -24,13 +21,13 @@ {auth_bypass, false}. {admin_key, "admin-key"}. {stanchion_host, "127.0.0.1"}. %% access stanchion when it runs on some other node -{stanchion_ip, "0.0.0.0"}. %% listen on this address {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. %% to match values in config/sys.docker.config, include/riak_ts.hrl -{operation_mode, auto}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. +{stanchion_hosting_mode, auto}. +{tussle_voss_riak_host, auto}. {node, "riak-cs@127.0.0.1"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index 33316fc63..dcd0fc4fc 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -14,9 +14,6 @@ {platform_gen_dir, "{{platform_base_dir}}"}. {platform_patch_dir, "{{platform_lib_dir}}/patches"}. -%% -%% etc/app.config -%% {cs_ip, "0.0.0.0"}. {cs_port, @CSPORT@}. {admin_ip, "0.0.0.0"}. @@ -30,20 +27,15 @@ {stanchion_port, 8085}. {stanchion_ssl, off}. {cs_version, 030100}. -{operation_mode, auto}. {rewrite_module, riak_cs_s3_rewrite}. {auth_module, riak_cs_s3_auth}. +{stanchion_hosting_mode, auto}. +{tussle_voss_riak_host, "127.0.0.1:@FIRSTRIAKPBPORT@"}. {log_level, debug}. -%% -%% etc/vm.args -%% {node, "@NODE@"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. -%% -%% cuttlefish -%% {cuttlefish, "on"}. {cuttlefish_conf, "riak-cs.conf"}. From 0f22969b7adb613dbc9d69efaf9886d034373038 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 18 Dec 2022 01:16:32 +0200 Subject: [PATCH 409/831] retry fetching admin creds a few times before erroring out may help if riak has just started but still has "insuffcient vnodes". --- apps/riak_cs/src/riak_cs_app.erl | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_app.erl b/apps/riak_cs/src/riak_cs_app.erl index 8b528b3ad..a991fe24b 100644 --- a/apps/riak_cs/src/riak_cs_app.erl +++ b/apps/riak_cs/src/riak_cs_app.erl @@ -80,6 +80,10 @@ check_admin_creds() -> end. fetch_and_cache_admin_creds(Key) -> + fetch_and_cache_admin_creds(Key, _MaxRetries = 5, no_error). +fetch_and_cache_admin_creds(_Key, 0, Error) -> + Error; +fetch_and_cache_admin_creds(Key, Attempt, _Error) -> %% Not using as the master pool might not be initialized {ok, MasterPbc} = riak_connection(), ?LOG_DEBUG("setting admin as ~s", [Key]), @@ -95,12 +99,10 @@ fetch_and_cache_admin_creds(Key) -> Secret = User?RCS_USER.key_secret, application:set_env(riak_cs, admin_secret, Secret); Error -> - logger:error("Couldn't get admin user (~s) record: ~p", [Key, Error]), - Error + logger:error("Couldn't get admin user (~s) record: ~p. Will retry ~b more times", [Key, Error, Attempt]), + timer:sleep(3000), + fetch_and_cache_admin_creds(Key, Attempt - 1, Error) end - catch T:E -> - logger:error("Couldn't get admin user (~s) record: ~p", [Key, {T, E}]), - {error, {T, E}} after riakc_pb_socket:stop(MasterPbc) end. From 9736c2aaedeb4a1354891cdc2308361c8ae71c69 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 18 Dec 2022 01:16:46 +0200 Subject: [PATCH 410/831] drop a debugging printf --- apps/riak_cs/src/riak_cs_wm_bucket.erl | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/riak_cs/src/riak_cs_wm_bucket.erl b/apps/riak_cs/src/riak_cs_wm_bucket.erl index 1bd148730..6d74be6a2 100644 --- a/apps/riak_cs/src/riak_cs_wm_bucket.erl +++ b/apps/riak_cs/src/riak_cs_wm_bucket.erl @@ -128,7 +128,6 @@ accept_body(RD, Ctx=#rcs_context{user=User, riak_cs_dtrace:dt_bucket_entry(?MODULE, <<"bucket_put">>, [], [riak_cs_wm_utils:extract_name(User), Bucket]), BagId = riak_cs_mb_helper:choose_bag_id(manifest, Bucket), - logger:debug("JJJ ~p", [User]), case riak_cs_bucket:create_bucket(User, UserObj, Bucket, From fe1b78a417cf6ff675a04c07ff66370d56bcdda2 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 18 Dec 2022 01:18:48 +0200 Subject: [PATCH 411/831] fix config mapping in conn_info_from_bag (post stanchion merge regression) --- apps/riak_cs/src/stanchion_utils.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/riak_cs/src/stanchion_utils.erl b/apps/riak_cs/src/stanchion_utils.erl index b3d6da36b..6c57adc65 100644 --- a/apps/riak_cs/src/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion_utils.erl @@ -641,7 +641,7 @@ manifest_connection(RiakPid, BucketObj) -> case bag_id_from_bucket(BucketObj) of undefined -> {ok, RiakPid}; BagId -> - case conn_info_from_bag(BagId, application:get_env(stanchion, bags)) of + case conn_info_from_bag(BagId, application:get_env(riak_cs, bags)) of %% No connection information for the bag. Mis-configuration. Stop processing. undefined -> {error, {no_bag, BagId}}; {Address, Port} -> riak_connection(Address, Port) From 402bde1dca4a6af59b3a0d052c23a53cc0412bc6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 21 Dec 2022 14:19:41 +0200 Subject: [PATCH 412/831] copy bits from riak, in hope it helps to fix first start hiccup --- apps/riak_cs/priv/riak_cs.schema | 6 ++++++ rebar.config | 18 ++++++++++++------ rel/files/hooks/erl_codeloadingmode | 3 +++ rel/files/hooks/riak_not_running | 8 ++++++++ 4 files changed, 29 insertions(+), 6 deletions(-) create mode 100755 rel/files/hooks/erl_codeloadingmode create mode 100755 rel/files/hooks/riak_not_running diff --git a/apps/riak_cs/priv/riak_cs.schema b/apps/riak_cs/priv/riak_cs.schema index 39a783fd6..fb99fbcb9 100644 --- a/apps/riak_cs/priv/riak_cs.schema +++ b/apps/riak_cs/priv/riak_cs.schema @@ -701,6 +701,12 @@ {default, "riak"} ]}. +%% override zdbbl from 1mb to 32mb +{mapping, "erlang.distribution_buffer_size", "vm_args.+zdbbl", [ + {default, "32MB"}, + merge +]}. + %% VM scheduler collapse, part 1 of 2 {mapping, "erlang.schedulers.force_wakeup_interval", "vm_args.+sfwi", [ {default, 500}, diff --git a/rebar.config b/rebar.config index 6762243eb..64b5402f3 100644 --- a/rebar.config +++ b/rebar.config @@ -58,8 +58,20 @@ , {copy, "tools/internal/offline_delete.erl", "priv/tools/internal/offline_delete.erl"} , {copy, "tools/internal/riak_cs_inspector.erl", "priv/tools/internal/riak_cs_inspector.erl"} , {copy, "tools/internal/select_gc_bucket.erl", "priv/tools/internal/select_gc_bucket.erl"} + , {copy, "rel/files/hooks/erl_codeloadingmode","bin/hooks/erl_codeloadingmode"} + , {template, "rel/files/hooks/riak_not_running", "bin/hooks/riak_not_running"} ] } + , {extended_start_script_hooks, + [ {pre_start, [ {custom, "hooks/riak_not_running"} + , {custom, "hooks/erl_codeloadingmode"} + ] + } + , {post_start, + [{wait_for_process, riak_cs_sup}] + } + ] + } , {generate_start_script, true} , {extended_start_script, true} , {extended_start_script_extensions, @@ -75,12 +87,6 @@ [ {rel, [ {relx, [ {overlay_vars, "rel/vars.config"} - , {extended_start_script_hooks, - [ {post_start, - [{wait_for_process, riak_cs_sup}] - } - ] - } ] } ] diff --git a/rel/files/hooks/erl_codeloadingmode b/rel/files/hooks/erl_codeloadingmode new file mode 100755 index 000000000..b6c8c6716 --- /dev/null +++ b/rel/files/hooks/erl_codeloadingmode @@ -0,0 +1,3 @@ +#!/bin/sh +CODE_LOADING_MODE="${CODE_LOADING_MODE:-interactive}" +export CODE_LOADING_MODE diff --git a/rel/files/hooks/riak_not_running b/rel/files/hooks/riak_not_running new file mode 100755 index 000000000..bc71fedff --- /dev/null +++ b/rel/files/hooks/riak_not_running @@ -0,0 +1,8 @@ +#!/bin/sh + +RIAK="{{platform_bin_dir}}/riak-cs" + +if $RIAK "ping" > /dev/null; then + echo "Node is already running!" + exit 1 +fi From a9d8df4174127acf8198ebe39a88ce9474e605db Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 21 Dec 2022 16:30:34 +0200 Subject: [PATCH 413/831] restore config/vm.args and never delete it again --- config/vm.args | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 config/vm.args diff --git a/config/vm.args b/config/vm.args new file mode 100644 index 000000000..809ddd7f8 --- /dev/null +++ b/config/vm.args @@ -0,0 +1,2 @@ +-sname riak-cs +-setcookie riak From 7750cc117e42ee0e90ab9a7c67fbf18024d7dd85 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 25 Dec 2022 00:08:22 +0200 Subject: [PATCH 414/831] mistyped {{stanchion_host}} in riak_cs.schema --- apps/riak_cs/priv/riak_cs.schema | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/riak_cs/priv/riak_cs.schema b/apps/riak_cs/priv/riak_cs.schema index fb99fbcb9..6da2a81ee 100644 --- a/apps/riak_cs/priv/riak_cs.schema +++ b/apps/riak_cs/priv/riak_cs.schema @@ -59,7 +59,7 @@ %% @doc Configuration for access to request %% serialization service {mapping, "stanchion_host", "riak_cs.stanchion_host", [ - {default, {"{{stanchion_ip}}", {{stanchion_port}} }}, + {default, {"{{stanchion_host}}", {{stanchion_port}} }}, {datatype, [fqdn, ip]}, {validators, ["valid_host"]} ]}. From e0502baf6ddb678d7cb58cb54e83944df3bbd056 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 25 Dec 2022 00:10:45 +0200 Subject: [PATCH 415/831] fix remaining eunit tests following stanchion merge --- apps/riak_cs/test/prop_riak_cs_s3_rewrite.erl | 4 +- apps/riak_cs/test/riak_cs_bucket_test.erl | 42 ++++++++++++------- rel/vars.config | 4 +- rel/vars/dev_vars.config.src | 4 +- 4 files changed, 33 insertions(+), 21 deletions(-) diff --git a/apps/riak_cs/test/prop_riak_cs_s3_rewrite.erl b/apps/riak_cs/test/prop_riak_cs_s3_rewrite.erl index 9e958af33..00dca5c51 100644 --- a/apps/riak_cs/test/prop_riak_cs_s3_rewrite.erl +++ b/apps/riak_cs/test/prop_riak_cs_s3_rewrite.erl @@ -90,8 +90,8 @@ prop_s3_rewrite(Style) -> %% Corresponding {Bucket, Key} for manifest is %% <<"0o:", hash(Bucket)/binary>> and Key - The key should be exactly %% same as the original one in the client-app before URL encoding. - Ctx = #context{local_context=#key_context{}}, - {ok, #context{local_context=LocalCtx}} = riak_cs_wm_utils:extract_key(RD, Ctx), + Ctx = #rcs_context{local_context=#key_context{}}, + {ok, #rcs_context{local_context=LocalCtx}} = riak_cs_wm_utils:extract_key(RD, Ctx), %% ?debugVal(CSKey), {CSBucket, CSKey} =:= diff --git a/apps/riak_cs/test/riak_cs_bucket_test.erl b/apps/riak_cs/test/riak_cs_bucket_test.erl index 24ad1174a..c8221cd2a 100644 --- a/apps/riak_cs/test/riak_cs_bucket_test.erl +++ b/apps/riak_cs/test/riak_cs_bucket_test.erl @@ -52,21 +52,21 @@ bucket_resolution_test() -> "festersquest", "wasthebest", "cid"), - BucketList1 = [riak_cs_bucket:bucket_record(<<"bucket1">>, create), - riak_cs_bucket:bucket_record(<<"bucket2">>, create), - riak_cs_bucket:bucket_record(<<"bucket3">>, create)], - BucketList2 = [riak_cs_bucket:bucket_record(<<"bucket1">>, create), - riak_cs_bucket:bucket_record(<<"bucket1">>, create), - riak_cs_bucket:bucket_record(<<"bucket1">>, create)], - BucketList3 = [riak_cs_bucket:bucket_record(<<"bucket1">>, create), - riak_cs_bucket:bucket_record(<<"bucket1">>, delete), - riak_cs_bucket:bucket_record(<<"bucket1">>, create)], - BucketList4 = [riak_cs_bucket:bucket_record(<<"bucket1">>, create), - riak_cs_bucket:bucket_record(<<"bucket1">>, create), - riak_cs_bucket:bucket_record(<<"bucket1">>, delete)], - BucketList5 = [riak_cs_bucket:bucket_record(<<"bucket1">>, delete), - riak_cs_bucket:bucket_record(<<"bucket1">>, delete), - riak_cs_bucket:bucket_record(<<"bucket1">>, delete)], + BucketList1 = [bucket_record(<<"bucket1">>, create), + bucket_record(<<"bucket2">>, create), + bucket_record(<<"bucket3">>, create)], + BucketList2 = [bucket_record(<<"bucket1">>, create), + bucket_record(<<"bucket1">>, create), + bucket_record(<<"bucket1">>, create)], + BucketList3 = [bucket_record(<<"bucket1">>, create), + bucket_record(<<"bucket1">>, delete), + bucket_record(<<"bucket1">>, create)], + BucketList4 = [bucket_record(<<"bucket1">>, create), + bucket_record(<<"bucket1">>, create), + bucket_record(<<"bucket1">>, delete)], + BucketList5 = [bucket_record(<<"bucket1">>, delete), + bucket_record(<<"bucket1">>, delete), + bucket_record(<<"bucket1">>, delete)], Obj1 = riakc_obj:new_obj(<<"bucket">>, <<"key">>, <<"value">>, @@ -108,5 +108,17 @@ bucket_resolution_test() -> ?assertEqual([hd(lists:reverse(BucketList4))], ResBuckets4), ?assertEqual([hd(BucketList5)], ResBuckets5). +%% This function existed in riak_cs_bucket, but was refactored out. +%% Return a bucket record for the specified bucket name. +bucket_record(Name, Operation) -> + Action = case Operation of + create -> created; + delete -> deleted; + _ -> undefined + end, + ?RCS_BUCKET{name=binary_to_list(Name), + last_action=Action, + creation_date=riak_cs_wm_utils:iso_8601_datetime(), + modification_time=os:timestamp()}. -endif. diff --git a/rel/vars.config b/rel/vars.config index 93cbae372..095dfdac4 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -12,9 +12,9 @@ {platform_gen_dir, "."}. {platform_patch_dir, "./lib/patches"}. -{cs_ip, "0.0.0.0"}. +{cs_ip, "127.0.0.1"}. {cs_port, 8080}. -{admin_ip, "0.0.0.0"}. +{admin_ip, "127.0.0.1"}. {admin_port, 8000}. {riak_ip, "127.0.0.1"}. {riak_pb_port, 8087}. diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index dcd0fc4fc..042be47ad 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -14,9 +14,9 @@ {platform_gen_dir, "{{platform_base_dir}}"}. {platform_patch_dir, "{{platform_lib_dir}}/patches"}. -{cs_ip, "0.0.0.0"}. +{cs_ip, "127.0.0.1"}. {cs_port, @CSPORT@}. -{admin_ip, "0.0.0.0"}. +{admin_ip, "127.0.0.1"}. {admin_port, @ADMINPORT@}. {riak_ip, "127.0.0.1"}. {riak_pb_port, @RIAKPBPORT@}. From 830240e6c35afea118e6946c9aafd4ce1583a761 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 25 Dec 2022 00:14:10 +0200 Subject: [PATCH 416/831] quirk for v2 signature calculation for boto3-1.26.36 --- apps/riak_cs/src/riak_cs_s3_auth.erl | 75 ++++++++++++++++++++++------ 1 file changed, 61 insertions(+), 14 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_s3_auth.erl b/apps/riak_cs/src/riak_cs_s3_auth.erl index 3767330ef..ecd4460a3 100644 --- a/apps/riak_cs/src/riak_cs_s3_auth.erl +++ b/apps/riak_cs/src/riak_cs_s3_auth.erl @@ -37,6 +37,9 @@ -type v4_attrs() :: [{string(), string()}]. +-type sigv2_quirk() :: none | boto3_1_26_36. +-define(SIGV2_QUIRKS, [none, boto3_1_26_36]). + -define(QS_KEYID, "AWSAccessKeyId"). -define(QS_SIGNATURE, "Signature"). @@ -85,9 +88,12 @@ authenticate(User, Signature, RD, Ctx) -> authenticate_1(User, {v4, Attributes}, RD, _Ctx) -> authenticate_v4(User, Attributes, RD); authenticate_1(User, Signature, RD, _Ctx) -> - CalculatedSignature = calculate_signature_v2(User?RCS_USER.key_secret, RD), - case check_auth(Signature, CalculatedSignature) of - true -> + authenticate_1(User, Signature, RD, _Ctx, ?SIGV2_QUIRKS). +authenticate_1(_, _, _, _, []) -> + {error, invalid_authentication}; +authenticate_1(User, Signature, RD, _Ctx, [Quirk|MoreQuirks]) -> + CalculatedSignature = calculate_signature_v2(User?RCS_USER.key_secret, RD, Quirk), + if Signature == CalculatedSignature -> Expires = wrq:get_qs_value("Expires", RD), case Expires of undefined -> @@ -104,8 +110,8 @@ authenticate_1(User, Signature, RD, _Ctx) -> ok end end; - _ -> - {error, invalid_authentication} + el/=se -> + authenticate_1(User, Signature, RD, _Ctx, MoreQuirks) end. %% =================================================================== @@ -156,14 +162,22 @@ parse_auth_v4_header([KV | KVs], UserId, Acc) -> parse_auth_v4_header(KVs, UserId, Acc) end. --spec calculate_signature_v2(string(), #wm_reqdata{}) -> string(). -calculate_signature_v2(KeyData, RD) -> +-spec calculate_signature_v2(string(), #wm_reqdata{}, sigv2_quirk()) -> string(). +calculate_signature_v2(KeyData, RD, Quirk) -> Headers = riak_cs_wm_utils:normalize_headers(RD), AmazonHeaders = riak_cs_wm_utils:extract_amazon_headers(Headers), OriginalResource = riak_cs_s3_rewrite:original_resource(RD), Resource = case OriginalResource of - undefined -> []; %% TODO: get noisy here? - {Path, QS} -> [Path, canonicalize_qs(v2, QS)] + undefined -> + logger:warning("Empty OriginalResource in RD ~p", [RD]), + []; + {Path, QS} -> + case Quirk of + boto3_1_26_36 -> + apply_sigv2_quirk(boto3_1_26_36, {Path, QS}); + none -> + [Path, canonicalize_qs(v2, QS)] + end end, Date = case wrq:get_qs_value("Expires", RD) of undefined -> @@ -195,6 +209,39 @@ calculate_signature_v2(KeyData, RD) -> base64:encode_to_string(riak_cs_utils:sha_mac(KeyData, STS)). +apply_sigv2_quirk(boto3_1_26_36, {Path, QS}) -> + logger:notice("applying boto3-1.26.36 quirk to QS ~p", [QS]), + CQ = + case QS of + [{"versions", []}, {"encoding-type", _}] -> + "?versions?versions"; + [{"delete", []}] -> + "?delete?delete"; + [{"acl", []}] -> + "?acl?acl"; + [{"acl", []}, {"versionId", V}] -> + "?acl?acl&versionId="++V; + [{"uploads", []}] -> + "?uploads?uploads"; + [{"policy", []}] -> + "?policy?policy"; + [{"versioning", []}] -> + "?versioning?versioning"; + _ -> + canonicalize_qs(v2, QS) + end, + [drop_slash(Path), CQ]. + +drop_slash("") -> + ""; +drop_slash(A) -> + case lists:last(A) of + $/ -> + drop_slash(lists:droplast(A)); + _ -> + A + end. + -spec authenticate_v4(rcs_user(), v4_attrs(), RD::term()) -> ok | {error, {unmatched_signature, @@ -285,9 +332,6 @@ hmac_sha256(Key, Data) -> hex_sha256hash(Data) -> mochihex:to_hex(crypto:hash(sha256, Data)). -check_auth(PresentedSignature, CalculatedSignature) -> - PresentedSignature == CalculatedSignature. - canonicalize_qs(Version, QS) -> %% The QS must be sorted be canonicalized, %% and since `canonicalize_qs/2` builds up the @@ -315,7 +359,7 @@ canonicalize_qs_v2([{K, []}|T], Acc) -> canonicalize_qs_v2(T, Acc) end; canonicalize_qs_v2([{K, V}|T], Acc) -> - case lists:member(K, ?SUBRESOURCES) of + case lists:member(K, ?SUBRESOURCES ++ ["list-type"]) of true -> Amp = if Acc == [] -> ""; true -> "&" @@ -384,6 +428,9 @@ hexdigit(C) when C < 16 -> $A + (C - 10). %% Test cases for the examples provided by Amazon here: %% http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?RESTAuthentication.html +calculate_signature_v2(KeyData, RD) -> + calculate_signature_v2(KeyData, RD, none). + auth_test_() -> {spawn, [ @@ -413,7 +460,7 @@ teardown(_) -> application:unset_env(riak_cs, cs_root_host). test_fun(Desc, ExpectedSignature, CalculatedSignature) -> - {Desc, ?_assert(check_auth(ExpectedSignature,CalculatedSignature))}. + {Desc, ?assert(ExpectedSignature == CalculatedSignature)}. example_get_object() -> KeyData = "uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o", From 75a47518fb9919b46a96441978171452aef4549a Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 27 Dec 2022 17:51:26 +0200 Subject: [PATCH 417/831] use `cp -a` when collecting configs in riak-cs-debug to preserve mtime --- rel/files/riak-cs-debug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rel/files/riak-cs-debug b/rel/files/riak-cs-debug index 7e0d36d66..d436b9937 100755 --- a/rel/files/riak-cs-debug +++ b/rel/files/riak-cs-debug @@ -605,12 +605,12 @@ if [ 1 -eq $get_cfgs ]; then if [ -z "$exclude" ]; then run="find . -type f -exec sh -c ' mkdir -p \"\$0/\${1%/*}\"; - cp \"\$1\" \"\$0/\$1\" + cp -a \"\$1\" \"\$0/\$1\" ' \"\${start_dir}\"/\"\${debug_dir}\"/config {} \;" else run="find . -type f \\( $exclude \\) -exec sh -c ' mkdir -p \"\$0/\${1%/*}\"; - cp \"\$1\" \"\$0/\$1\" + cp -a \"\$1\" \"\$0/\$1\" ' \"\${start_dir}\"/\"\${debug_dir}\"/config {} \;" fi eval $run From 44684f1da0f1b7f2dec961059094bc3d97fb2c25 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 28 Dec 2022 03:48:53 +0200 Subject: [PATCH 418/831] assume localhost if no interfaces are up --- apps/riak_cs/src/riak_cs_utils.erl | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_utils.erl b/apps/riak_cs/src/riak_cs_utils.erl index 1b6c5df99..5ee8fad5f 100644 --- a/apps/riak_cs/src/riak_cs_utils.erl +++ b/apps/riak_cs/src/riak_cs_utils.erl @@ -551,9 +551,13 @@ this_host_addr() -> ?LOG_DEBUG("this host address is ~s on iface ~s", [IP, If]), IP; [{If, IP}|_] -> - logger:warning("This host has multiple network interfaces configured." - " Selecting ~p on ~s", [IP, If]), - IP + logger:warning("This host has multiple network interfaces configured:" + " selecting ~p on ~s", [IP, If]), + IP; + [] -> + logger:warning("This host has no network interfaces with assigned addresses:" + " falling back to 127.0.0.1", []), + "127.0.0.1" end. -ifdef(TEST). From 8044f40c368470c39596c2c5fcff0cf36176c222 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 5 Jan 2023 18:09:33 +0200 Subject: [PATCH 419/831] convenince function supps:p/1 --- apps/riak_cs/src/lib/supps.erl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/riak_cs/src/lib/supps.erl b/apps/riak_cs/src/lib/supps.erl index 35e75337b..e5d83f7fe 100644 --- a/apps/riak_cs/src/lib/supps.erl +++ b/apps/riak_cs/src/lib/supps.erl @@ -22,7 +22,7 @@ -module(supps). --export([q/1]). +-export([q/1, p/1]). -record(p, {name :: atom() | tuple(), info :: undefined | proplists:proplist(), @@ -37,6 +37,10 @@ sups() -> [riak_cs_sup]. +-spec p(proplists:proplist()) -> ok. +p(Opts) -> + io:putchars(q(Opts)). + -spec q(proplists:proplist()) -> string(). q(Options0) -> Nodes = [node() | nodes()], From 6aec90e8e76276a287f514ef5c76c14f62495ba9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 5 Jan 2023 18:10:16 +0200 Subject: [PATCH 420/831] really terminate stanchion_sup children when stopping stanchion --- apps/riak_cs/src/stanchion_migration.erl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/stanchion_migration.erl b/apps/riak_cs/src/stanchion_migration.erl index f6386fcef..20eba2ec5 100644 --- a/apps/riak_cs/src/stanchion_migration.erl +++ b/apps/riak_cs/src/stanchion_migration.erl @@ -28,7 +28,9 @@ apply_stanchion_details/1, apply_stanchion_details/2, read_stanchion_data/1, - save_stanchion_data/1]). + save_stanchion_data/1, + stop_stanchion_here/0 + ]). -include("riak_cs.hrl"). @@ -92,7 +94,11 @@ stop_stanchion_here() -> [] -> already_stopped; FF -> - _ = [supervisor:delete_child(stanchion_sup, Id) || {Id, _, _, _} <- FF] + logger:notice("Stopping stanchion on this node"), + [begin + ok = supervisor:terminate_child(stanchion_sup, Id), + ok = supervisor:delete_child(stanchion_sup, Id) + end || {Id, _, _, _} <- FF] end. From 4cbd63ded4f16c5c9e7095d919a975e8938dc795 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 5 Jan 2023 18:11:40 +0200 Subject: [PATCH 421/831] more accurate handling of riak_cs_only mode --- apps/riak_cs/src/stanchion_migration.erl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/stanchion_migration.erl b/apps/riak_cs/src/stanchion_migration.erl index 20eba2ec5..b5d3b2467 100644 --- a/apps/riak_cs/src/stanchion_migration.erl +++ b/apps/riak_cs/src/stanchion_migration.erl @@ -1,6 +1,6 @@ %% --------------------------------------------------------------------- %% -%% Copyright (c) 2022 TI Tokyo All Rights Reserved. +%% Copyright (c) 2022, 2023 TI Tokyo All Rights Reserved. %% %% This file is provided to you under the Apache License, %% Version 2.0 (the "License"); you may not use this file @@ -76,7 +76,7 @@ adopt_stanchion() -> ok = riakc_pb_socket:stop(Pbc), ok; M -> - logger:error("Riak CS start_stanchion_here is ~s. Cannot relocate stanchion.", [M]), + logger:error("Riak CS stanchion_hosting_mode is ~s. Cannot adopt stanchion.", [M]), {error, stanchion_not_relocatable} end. @@ -120,6 +120,10 @@ do_we_get_to_run_stanchion(Mode, ThisHostAddr) -> {use_saved, {Host, Port}} end; + {ok, {{Host, Port}, Node}} when Mode == riak_cs_only -> + logger:info("going to use stanchion started at ~s:~b (~s)", [Host, Port, Node]), + {use_saved, {Host, Port}}; + {ok, {{SavedHost, SavedPort}, Node}} when Mode == riak_cs_with_stanchion; Mode == stanchion_only -> case ThisHostAddr of From f8c5205a0e4980e7782483675f2e6511743d02f0 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Mon, 16 Jan 2023 18:12:04 +0200 Subject: [PATCH 422/831] complete 5a24da00 --- rebar.docker.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.docker.config b/rebar.docker.config index 6bf56a810..e17b49154 100644 --- a/rebar.docker.config +++ b/rebar.docker.config @@ -16,10 +16,10 @@ {deps, [ {parse_trans, "3.4.1"} , {getopt, "1.0.2"} - , {webmachine, "1.11.1"} , {mochiweb, "3.1.1"} , {exometer_core, "v1.5.7"} , {uuid, "2.0.5", {pkg, uuid_erl}} + , {webmachine, {git, "https://github.com/TI-Tokyo/webmachine.git", {tag, "1.11.2rc2"}}} , {riakc, {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.8+p1"}}} , {poolboy, {git, "https://github.com/basho/poolboy", {tag, "riak_kv-3.0.0"}}} , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} From f5a413defd5826e9bc40d1758ef9f7152511a998 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 17 Jan 2023 20:50:55 +0200 Subject: [PATCH 423/831] thanks xref --- apps/riak_cs/src/lib/supps.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/riak_cs/src/lib/supps.erl b/apps/riak_cs/src/lib/supps.erl index e5d83f7fe..410e1536b 100644 --- a/apps/riak_cs/src/lib/supps.erl +++ b/apps/riak_cs/src/lib/supps.erl @@ -39,7 +39,7 @@ sups() -> -spec p(proplists:proplist()) -> ok. p(Opts) -> - io:putchars(q(Opts)). + io:put_chars(q(Opts)). -spec q(proplists:proplist()) -> string(). q(Options0) -> From 65767babdd95f2a54c2974ceeeedd686cabfe124 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 17 Jan 2023 21:00:22 +0200 Subject: [PATCH 424/831] 503 response on stanchion_recovery_failure --- apps/riak_cs/src/riak_cs_s3_response.erl | 15 +++++++++++++++ apps/riak_cs/src/velvet.erl | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/apps/riak_cs/src/riak_cs_s3_response.erl b/apps/riak_cs/src/riak_cs_s3_response.erl index 47fe98ad0..87e8f408b 100644 --- a/apps/riak_cs/src/riak_cs_s3_response.erl +++ b/apps/riak_cs/src/riak_cs_s3_response.erl @@ -114,6 +114,7 @@ error_message(canned_acl_and_header_grant) -> "Specifying both Canned ACLs and H error_message(malformed_xml) -> "The XML you provided was not well-formed or did not validate against our published schema"; error_message(remaining_multipart_upload) -> "Concurrent multipart upload initiation detected. Please stop it to delete bucket."; error_message(disconnected) -> "Please contact administrator."; +error_message(stanchion_recovery_failure) -> "Bucket and user operations are temporarily unavailable because the node running stanchion is currently unreachable. Please report this to your administrator."; error_message(not_implemented) -> "A request you provided implies functionality that is not implemented"; error_message(ErrorName) -> logger:warning("Unknown error: ~p", [ErrorName]), @@ -165,6 +166,7 @@ error_code(malformed_acl_error) -> "MalformedACLError"; error_code(malformed_xml) -> "MalformedXML"; error_code(remaining_multipart_upload) -> "MultipartUploadRemaining"; error_code(disconnected) -> "ServiceUnavailable"; +error_code(stanchion_recovery_failure) -> "ServiceDegraded"; error_code(not_implemented) -> "NotImplemented"; error_code(ErrorName) -> logger:warning("Unknown error: ~p", [ErrorName]), @@ -193,6 +195,7 @@ status_code(invalid_user_update) -> 400; status_code(no_such_bucket) -> 404; status_code(no_such_key) -> 404; status_code(no_copy_source_key) -> 404; +status_code(stanchion_recovery_failure) -> 503; status_code({riak_connect_failed, _}) -> 503; status_code(admin_key_undefined) -> 503; status_code(admin_secret_undefined) -> 503; @@ -271,6 +274,8 @@ api_error({invalid_argument, Name, Value}, RD, Ctx) -> invalid_argument_response(Name, Value, RD, Ctx); api_error({key_too_long, Len}, RD, Ctx) -> key_too_long(Len, RD, Ctx); +api_error(stanchion_recovery_failure, RD, Ctx) -> + stanchion_recovery_failure(RD, Ctx); api_error({error, Reason}, RD, Ctx) -> api_error(Reason, RD, Ctx). @@ -338,6 +343,16 @@ key_too_long(Len, RD, Ctx) -> Body = riak_cs_xml:to_xml([XmlDoc]), respond(status_code(invalid_argument), Body, RD, Ctx). +stanchion_recovery_failure(RD, Ctx) -> + XmlDoc = {'Error', + [ + {'Code', [error_code(stanchion_recovery_failure)]}, + {'Message', [error_message(stanchion_recovery_failure)]}, + {'RequestId', [""]} + ]}, + Body = riak_cs_xml:to_xml([XmlDoc]), + respond(status_code(invalid_argument), Body, RD, Ctx). + copy_object_response(Manifest, RD, Ctx) -> copy_response(Manifest, 'CopyObjectResult', RD, Ctx). diff --git a/apps/riak_cs/src/velvet.erl b/apps/riak_cs/src/velvet.erl index 7d5cb8b21..942f081a8 100644 --- a/apps/riak_cs/src/velvet.erl +++ b/apps/riak_cs/src/velvet.erl @@ -311,8 +311,8 @@ request(Method, Path, Expect, ContentType, Headers, Body) -> request(Method, Path, _Expect, _ContentType, _Headers, _Body, 0) -> {Ip, Port, Ssl} = riak_cs_utils:stanchion_data(), - logger:error("Giving up trying to send a ~s request to stanchion (~s)", - [Method, url(Ip, Port, Ssl, Path)]), + logger:warning("Giving up trying to send a ~s request to stanchion (~s)", + [Method, url(Ip, Port, Ssl, Path)]), {error, stanchion_recovery_failure}; request(Method, Path, Expect, ContentType, Headers, Body, Attempt) -> stanchion_migration:validate_stanchion(), From 94c9b864b3039e5781f65b8c25b1ea370ce22e6a Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 17 Jan 2023 21:01:03 +0200 Subject: [PATCH 425/831] stanchion_utils:pow/2,3 is unused; drop it --- apps/riak_cs/src/stanchion_utils.erl | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/apps/riak_cs/src/stanchion_utils.erl b/apps/riak_cs/src/stanchion_utils.erl index 6c57adc65..f53151b49 100644 --- a/apps/riak_cs/src/stanchion_utils.erl +++ b/apps/riak_cs/src/stanchion_utils.erl @@ -36,8 +36,6 @@ get_manifests/4, get_manifests_raw/4, has_tombstone/1, - pow/2, - pow/3, riak_connection/0, riak_connection/2, set_bucket_acl/2, @@ -261,21 +259,6 @@ list_keys(BucketName, RiakPid) -> ER end. -%% @doc Integer version of the standard pow() function; call the recursive accumulator to calculate. --spec pow(integer(), integer()) -> integer(). -pow(Base, Power) -> - pow(Base, Power, 1). - -%% @doc Integer version of the standard pow() function. --spec pow(integer(), integer(), integer()) -> integer(). -pow(Base, Power, Acc) -> - case Power of - 0 -> - Acc; - _ -> - pow(Base, Power - 1, Acc * Base) - end. - %% @doc Get a protobufs connection to the riak cluster %% using information from the application environment. -type riak_connect_failed() :: {riak_connect_failed, tuple()}. From 2978bb24241dce3c170733bf70c703e594b47d6f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Thu, 26 Jan 2023 23:22:37 +0200 Subject: [PATCH 426/831] update deps --- rebar.config | 6 +++--- rebar.docker.config | 2 +- rebar.lock | 26 ++++++++++---------------- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/rebar.config b/rebar.config index 64b5402f3..0f8be22e8 100644 --- a/rebar.config +++ b/rebar.config @@ -1,5 +1,5 @@ %% -*- erlang -*- -{minimum_otp_vsn, "22.0"}. +{minimum_otp_vsn, "22"}. {erl_opts, [ debug_info , warnings_as_errors @@ -26,9 +26,9 @@ , {poolboy, "1.5.2"} , {exometer_core, "1.6.1"} , {webmachine, {git, "https://github.com/TI-Tokyo/webmachine.git", {tag, "1.11.2rc2"}}} - , {riakc, {git, "https://github.com/basho/riak-erlang-client", {tag, "3.0.8+p1"}}} + , {riakc, {git, "https://github.com/TI-Tokyo/riak-erlang-client", {tag, "3.0.10+tiot1"}}} , {cluster_info, {git, "https://github.com/basho/cluster_info", {tag, "2.1.0"}}} - , {riak_repl_pb_api, {git, "https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.9"}}} + , {riak_repl_pb_api, {git, "https://github.com/TI-Tokyo/riak_repl_pb_api.git", {tag, "3.0.10"}}} , {riak_cs_multibag, {git, "https://github.com/TI-Tokyo/riak_cs_multibag.git", {tag, "3.0.9rc1"}}} ] }. diff --git a/rebar.docker.config b/rebar.docker.config index e17b49154..fa2fc27d2 100644 --- a/rebar.docker.config +++ b/rebar.docker.config @@ -1,5 +1,5 @@ %% -*- erlang -*- -{minimum_otp_vsn, "22.0"}. +{minimum_otp_vsn, "22"}. {erl_opts, [ debug_info , warnings_as_errors diff --git a/rebar.lock b/rebar.lock index e83e4d074..9b30ee200 100644 --- a/rebar.lock +++ b/rebar.lock @@ -8,33 +8,23 @@ {<<"folsom">>,{pkg,<<"folsom">>,<<"1.0.0">>},1}, {<<"getopt">>,{pkg,<<"getopt">>,<<"1.0.2">>},0}, {<<"hut">>,{pkg,<<"hut">>,<<"1.3.0">>},1}, - {<<"meck">>, - {git,"https://github.com/eproxus/meck.git", - {ref,"4ecc1ae9089edc6977e8c8c4cd41081513cc5590"}}, - 2}, + {<<"meck">>,{pkg,<<"meck">>,<<"0.8.13">>},2}, {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"3.1.1">>},0}, {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.4.1">>},0}, {<<"poolboy">>,{pkg,<<"poolboy">>,<<"1.5.2">>},0}, - {<<"protobuffs">>, - {git,"https://github.com/basho/erlang_protobuffs.git", - {ref,"098efad8f85dfe556d64e2cf6ce31f2075808f67"}}, - 1}, + {<<"protobuffs">>,{pkg,<<"protobuffs">>,<<"0.8.4">>},1}, {<<"quickrand">>,{pkg,<<"quickrand">>,<<"2.0.5">>},1}, {<<"riak_cs_multibag">>, {git,"https://github.com/TI-Tokyo/riak_cs_multibag.git", {ref,"0dcb8ef180d745ae7d8a57e21d4b2f97565271af"}}, 0}, {<<"riak_pb">>, - {git,"https://github.com/basho/riak_pb.git", - {ref,"b7abca90e4c708073021d2c4e18c896f1a10b838"}}, + {git,"https://github.com/TI-Tokyo/riak_pb.git", + {ref,"a838173209f89b465de8a0f9248146da0ff0866c"}}, 1}, - {<<"riak_repl_pb_api">>, - {git,"https://github.com/TI-Tokyo/riak_repl_pb_api.git", - {ref,"c12d05a3d14ca7324a4243d23ad3fc7c0adc7441"}}, - 0}, {<<"riakc">>, - {git,"https://github.com/basho/riak-erlang-client", - {ref,"d9fa46335fda4704fda71cbc011ab6a11e50e3f3"}}, + {git,"https://github.com/TI-Tokyo/riak-erlang-client", + {ref,"44d85b1f58bc3f6cafd45164762d5984a8ae9207"}}, 0}, {<<"setup">>,{pkg,<<"setup">>,<<"2.1.0">>},1}, {<<"uuid">>,{pkg,<<"uuid_erl">>,<<"2.0.5">>},0}, @@ -49,9 +39,11 @@ {<<"folsom">>, <<"50ECC998D2149939F1D5E0AA3E32788F8ED16A58E390D81B5C0BE4CC4EF25589">>}, {<<"getopt">>, <<"33D9B44289FE7AD08627DDFE1D798E30B2DA0033B51DA1B3A2D64E72CD581D02">>}, {<<"hut">>, <<"71F2F054E657C03F959CF1ACC43F436EA87580696528CA2A55C8AFB1B06C85E7">>}, + {<<"meck">>, <<"FFEDB39F99B0B99703B8601C6F17C7F76313EE12DE6B646E671E3188401F7866">>}, {<<"mochiweb">>, <<"C628CC4518A3CA0F2FB6B8973DCBDC9135635F834B64AEE846337583AFD42084">>}, {<<"parse_trans">>, <<"6E6AA8167CB44CC8F39441D05193BE6E6F4E7C2946CB2759F015F8C56B76E5FF">>}, {<<"poolboy">>, <<"392B007A1693A64540CEAD79830443ABF5762F5D30CF50BC95CB2C1AAAFA006B">>}, + {<<"protobuffs">>, <<"D38CA5F7380D8477C274680273372011890F8D0037C0D7E7DB5C0207B89A4E0B">>}, {<<"quickrand">>, <<"06FCAD85CB47D5C85C51D6BC9C84A082501BA098A89D64AD0A2F69599E034C04">>}, {<<"setup">>, <<"05F69185A5EB71474C9BC6BA892565651EC7507791F85632B7B914DBFE130510">>}, {<<"uuid">>, <<"60FAEEB7EDFD40847ED13CB0DD1044BAABE4E79A00C0CA9C4D13A073914B1016">>}]}, @@ -61,9 +53,11 @@ {<<"folsom">>, <<"DD6AB97278E94F9E4CFC43E188224A7B8C7EAEC0DD2E935007005177F3EEBB0E">>}, {<<"getopt">>, <<"A0029AEA4322FB82A61F6876A6D9C66DC9878B6CB61FAA13DF3187384FD4EA26">>}, {<<"hut">>, <<"7E15D28555D8A1F2B5A3A931EC120AF0753E4853A4C66053DB354F35BF9AB563">>}, + {<<"meck">>, <<"D34F013C156DB51AD57CC556891B9720E6A1C1DF5FE2E15AF999C84D6CEBEB1A">>}, {<<"mochiweb">>, <<"8B5ECFECC26D5D083F9BEC5CE969D717676B6A4FACBDF5915E0498CDFE035A26">>}, {<<"parse_trans">>, <<"620A406CE75DADA827B82E453C19CF06776BE266F5A67CFF34E1EF2CBB60E49A">>}, {<<"poolboy">>, <<"DAD79704CE5440F3D5A3681C8590B9DC25D1A561E8F5A9C995281012860901E3">>}, + {<<"protobuffs">>, <<"9D2E7A26102287D116E3E89C61C1DAF5A6BF199288E0B5D337B17F0421D70B63">>}, {<<"quickrand">>, <<"252CF0493570EBF1A58985CB71990982CDDCD4396B6427F1E10CF58924C1C052">>}, {<<"setup">>, <<"EFD072578F0CF85BEA96CAAFFC7ADB0992398272522660A136E10567377071C5">>}, {<<"uuid">>, <<"E54373262CA88401689277947C54B95E9ECBC977BD5C57C9DD44AD9DA278E360">>}]} From e3ab5092c7259baba7750ea4e0e379a734c55fa6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 28 Jan 2023 22:19:38 +0200 Subject: [PATCH 427/831] copy logger bits in riak-cs.schema from riak --- apps/riak_cs/priv/riak_cs.schema | 163 ++++++++++--------------------- rel/pkg/alpine/vars.config | 4 +- rel/pkg/deb/vars.config | 14 +-- rel/pkg/fbsdng/vars.config | 1 + rel/pkg/rpm/vars.config | 12 +-- rel/vars.config | 1 + rel/vars/dev_vars.config.src | 1 + 7 files changed, 61 insertions(+), 135 deletions(-) diff --git a/apps/riak_cs/priv/riak_cs.schema b/apps/riak_cs/priv/riak_cs.schema index 6da2a81ee..b8c5e120d 100644 --- a/apps/riak_cs/priv/riak_cs.schema +++ b/apps/riak_cs/priv/riak_cs.schema @@ -498,6 +498,8 @@ {datatype, flag} ]}. +%% == logger == + %% @doc The severity level of the console log, default is 'info'. {mapping, "logger.level", "kernel.logger_level", [ {default, {{log_level}} }, @@ -532,36 +534,9 @@ {datatype, bytesize} ]}. -%% @doc Determines if messages should emit to syslog. -{mapping, "syslogger.enabled", "kernel.logger", [ - {default, off}, - {datatype, {flag, on, off}} -]}. - -%% @doc The severity level of the syslog log, default is 'notice'. -{mapping, "syslogger.level", "kernel.logger", [ - {default, notice}, - {datatype, {enum, [debug, info, notice, warning, error, critical, alert, emergency, none]}} -]}. - -%% @doc The syslog facility to use, default is 'user'. -{mapping, "syslogger.facility", "kernel.logger", [ - {default, user}, - {datatype, {enum, [user, local0]}} -]}. - -%% @doc Format string for the messages emitted to syslog. The string is passed into -%% the handler as a logger_formatter template, the format is a list containing strings -%% and atoms. The atoms denote the keys for retrieving metadata from the logger events. -%% More information on default metadata can be found here (https://www.erlang.org/doc/man/logger_formatter.html#type-template). -{mapping, "syslogger.format", "kernel.logger", [ - {default, "[\"severity=\",level,\" text=\",msg]."}, - {datatype, string} -]}. - -%% @doc Filename to use for SASL reports. +%% @doc Whether to enable SASL reports. {mapping, "logger.sasl.enabled", "kernel.logger", [ - {default, on}, + {default, {{logger_sasl_enabled}}}, {datatype, {flag, on, off}} ]}. @@ -571,91 +546,57 @@ {datatype, file} ]}. -%% @doc Default opts that need setting for the syslogger application to ensure that -%% the PID is printed with log messages, along with the correct process identifier. -{translation, "syslogger", - fun(_Conf) -> - [{log_opts, [pid]}, {ident, "riak"}] - end -}. - {translation, "kernel.logger", fun(Conf) -> - LogFile = cuttlefish:conf_get("logger.file", Conf), - MaxNumBytes = cuttlefish:conf_get("logger.max_file_size", Conf), - MaxNumFiles = cuttlefish:conf_get("logger.max_files", Conf), - - DefaultFormatStr = cuttlefish:conf_get("logger.format", Conf), - DefaultFormatTerm = - case erl_scan:string(DefaultFormatStr) of - {ok, DefaultTokens, _} -> - case erl_parse:parse_term(DefaultTokens) of - {ok, DefaultTerm} -> - DefaultTerm; - {error, {_, _, DefaultError}} -> - cuttlefish:error(foo) - end; - {error, {_, _, DefaultScanError}} -> - cuttlefish:error(foo) - end, - ConfigMap0 = #{config => #{file => LogFile, - max_no_bytes => MaxNumBytes, - max_no_files => MaxNumFiles}, - filters => [{no_sasl, {fun logger_filters:domain/2, {stop, super, [otp, sasl]}}}], - formatter => {logger_formatter, - #{template => DefaultFormatTerm} - } - }, - DefaultLog = [{handler, default, logger_std_h, ConfigMap0}], - - SaslLog = - case cuttlefish:conf_get("logger.sasl.enabled", Conf) of - true -> - SaslLogFile = cuttlefish:conf_get("logger.sasl.file", Conf), - SaslConfigMap = #{config => #{file => SaslLogFile, - max_no_bytes => MaxNumBytes, %% reuse - max_no_files => MaxNumFiles}, - filter_default => stop, - filters => [{sasl_here, {fun logger_filters:domain/2, {log, equal, [otp, sasl]}}}], - formatter => {logger_formatter, - #{legacy_header => true, - single_line => false} - } - }, - [{handler, sasl, logger_std_h, SaslConfigMap}]; - _ -> - [] - end, - - SyslogLog = - case cuttlefish:conf_get("syslogger.enabled", Conf) of - true -> - SyslogLevel = cuttlefish:conf_get("syslogger.level", Conf), - SyslogFacility = cuttlefish:conf_get("syslogger.facility", Conf), - SyslogFormatStr = cuttlefish:conf_get("syslogger.format", Conf), - SyslogFormatTerm = - case erl_scan:string(SyslogFormatStr) of - {ok, SyslogTokens, _} -> - case erl_parse:parse_term(SyslogTokens) of - {ok, SyslogTerm} -> - SyslogTerm; - {error, {_, _, SyslogError}} -> - cuttlefish:error(foo) - end; - {error, {_, _, SyslogScanError}} -> - cuttlefish:error(foo) - end, - ConfigMap1 = #{level => SyslogLevel, - formatter => {logger_formatter, - #{template => SyslogFormatTerm, - single_line => true}}, facility => SyslogFacility}, - [{handler, syslog, syslogger, ConfigMap1}]; - false -> - [] - end, - DefaultLog ++ SyslogLog ++ SaslLog - end + LogFile = cuttlefish:conf_get("logger.file", Conf), + MaxNumBytes = cuttlefish:conf_get("logger.max_file_size", Conf), + MaxNumFiles = cuttlefish:conf_get("logger.max_files", Conf), + + DefaultFormatStr = cuttlefish:conf_get("logger.format", Conf), + DefaultFormatTerm = + case erl_scan:string(DefaultFormatStr) of + {ok, DefaultTokens, _} -> + case erl_parse:parse_term(DefaultTokens) of + {ok, DefaultTerm} -> + DefaultTerm; + {error, {_, _, DefaultError}} -> + cuttlefish:error(foo) + end; + {error, {_, _, DefaultScanError}} -> + cuttlefish:error(foo) + end, + ConfigMap0 = #{config => #{file => LogFile, + max_no_bytes => MaxNumBytes, + max_no_files => MaxNumFiles}, + formatter => {logger_formatter, + #{template => DefaultFormatTerm} + } + }, + + StandardCfg = [{handler, default, logger_std_h, ConfigMap0}], + + SaslCfg = + case cuttlefish:conf_get("logger.sasl.enabled", Conf) of + true -> + SaslLogFile = cuttlefish:conf_get("logger.sasl.file", Conf), + SaslConfigMap = #{config => #{file => SaslLogFile, + max_no_bytes => MaxNumBytes, %% reuse + max_no_files => MaxNumFiles}, + filter_default => stop, + filters => [{sasl_here, {fun logger_filters:domain/2, {log, equal, [otp, sasl]}}}], + formatter => {logger_formatter, + #{legacy_header => true, + single_line => false} + } + }, + [{handler, sasl, logger_std_h, SaslConfigMap}]; + _ -> + [] + end, + + StandardCfg ++ SaslCfg + end }. diff --git a/rel/pkg/alpine/vars.config b/rel/pkg/alpine/vars.config index 286a8911d..d90a43645 100644 --- a/rel/pkg/alpine/vars.config +++ b/rel/pkg/alpine/vars.config @@ -37,8 +37,8 @@ {pid_dir, "/run/riak-cs"}. -{sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. -{sasl_log_dir, "{{platform_log_dir}}/sasl"}. +{log_level, info}. +{logger_sasl_enabled, false}. %% %% cuttlefish diff --git a/rel/pkg/deb/vars.config b/rel/pkg/deb/vars.config index 540858614..4944e765b 100644 --- a/rel/pkg/deb/vars.config +++ b/rel/pkg/deb/vars.config @@ -37,20 +37,10 @@ {pid_dir, "/run/riak-cs"}. -{sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. -{sasl_log_dir, "{{platform_log_dir}}/sasl"}. - -{runner_wait_process, "riak_cs_put_fsm_sup"}. +{log_level, info}. +{logger_sasl_enabled, false}. -%% -%% cuttlefish -%% {cuttlefish, "on"}. {cuttlefish_conf, "riak-cs.conf"}. -{log_level, info}. - -%% -%% etc/vm.args -%% {node, "riak-cs@127.0.0.1"}. diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config index b5f4c8b0c..b9323fb93 100644 --- a/rel/pkg/fbsdng/vars.config +++ b/rel/pkg/fbsdng/vars.config @@ -37,6 +37,7 @@ {pid_dir, "/var/run/riak-cs"}. {log_level, info}. +{logger_sasl_enabled, false}. {cuttlefish, "on"}. {cuttlefish_conf, "riak-cs.conf"}. diff --git a/rel/pkg/rpm/vars.config b/rel/pkg/rpm/vars.config index 477013a1a..b34ac3a9f 100644 --- a/rel/pkg/rpm/vars.config +++ b/rel/pkg/rpm/vars.config @@ -37,18 +37,10 @@ {pid_dir, "/run/riak-cs"}. -{sasl_error_log, "{{platform_log_dir}}/sasl-error.log"}. -{sasl_log_dir, "{{platform_log_dir}}/sasl"}. +{log_level, info}. +{logger_sasl_enabled, false}. -%% -%% cuttlefish -%% {cuttlefish, "on"}. {cuttlefish_conf, "riak-cs.conf"}. -{log_level, info}. - -%% -%% etc/vm.args -%% {node, "riak-cs@127.0.0.1"}. diff --git a/rel/vars.config b/rel/vars.config index 095dfdac4..19edee4a6 100644 --- a/rel/vars.config +++ b/rel/vars.config @@ -33,6 +33,7 @@ {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. {log_level, info}. +{logger_sasl_enabled, false}. {cuttlefish, "on"}. {cuttlefish_conf, "riak-cs.conf"}. diff --git a/rel/vars/dev_vars.config.src b/rel/vars/dev_vars.config.src index 042be47ad..30bb5ce69 100644 --- a/rel/vars/dev_vars.config.src +++ b/rel/vars/dev_vars.config.src @@ -33,6 +33,7 @@ {tussle_voss_riak_host, "127.0.0.1:@FIRSTRIAKPBPORT@"}. {log_level, debug}. +{logger_sasl_enabled, true}. {node, "@NODE@"}. {crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. From f2924103373868638767019d3e39d89fe4b13bee Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 28 Jan 2023 22:20:25 +0200 Subject: [PATCH 428/831] copy rebar3 from riak-3.2.0 --- rebar3 | Bin 953221 -> 966047 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rebar3 b/rebar3 index c1597bbc58723757ff36e45d811ced14b9932d4f..24759fee62cc0d066002183d1cfc5ede45134c41 100755 GIT binary patch delta 862104 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

      Wyab6R>-@*O#8G)SSx9ENgpz z^{-a@cm-idZAR+w?|Z$qB(JQNTYQV{^c!mU!b~nF95Fpoa%+`>WQ=U5C-Q1z=e)myDr(t4ZAP!J993+8(h`n-!WlUH_EG`3p_&Usx}X_?>@wf_H>RN@r;)(O`fZIbEn_Ev}7noO=oL z+b>+(SBY!xmp1VUuL}6>owL?Obhzw7B%)VtY`#__!N@sdPi6X31F?FOa(qF5jK`&U zB#8hB8C~ta)$Dn=h7)AZbmsenY_9;ZByA*NIGX$PFxy&{mlZT*cmc~lm`kqYrYC4x zKqWhKezp}JX zsYT3hY+|W{Bl!Ggsb}&$&i|Pc@q54v3W{IwWdS9{zn9C=(Xc%K($g@1)6o8{M)pVZ z-*(aBu^$L9waC0+VPEQsltY^ZC8WyTLyL36&Xh_KBj3QW=8JG*+Kf` zyJ5s(TWU!ZNTCHa8rHnoaoC(4mUsAc6vHobvRQPMsS#_WURmFstx-u`R3b1#7Gp!yOjk1o%soCkG z3RC)HfZW-~UXIF{&WO{;(|+V`wfePoo%MVe=Y{z&;iG6GpuU!D221*G70NYowmzrrbg`T1YWR1tR7o9+AeFZr;> zavs0SHS@ItUP>XCs>ktcbS@u`D@9K}n|7hP5Uw7(Lk`#)cjZ2mLl{}3Hg)L-z$e+l zVpd`d^lf*4lwx2iHtHDS1qtZ9`Zj}BI|b<}{S;MzEEaNbD63tb4YDV>e{P2Quz!KJ zLP(al(9O$q)notKmoPO2*t{XL*17i?5v%rzr` zV*I2|A*^xXKC0I;n}O*l+s2+65L9G#rB>E5KC zj7fQaU83`RVM%=>?P3QHKe%O{LJ?rgLE{bb32#rOcn*~cuRXLb#DB%G(GFh=S6|Od z_#&MHg)_QGm=}|$Ui0x$ku{@dSThw>Ul48%`BTknucF|DNcZi`8BjK#~XJlnZbNpH$~g?DV3dNSA->$(&9LZDm&IR9#@K#kru z+G6M~*k^?g*(;{fyasRhME+3U^F4m2<1(|!C$x-FBA0+%ZH3{!+VUoP6ga?tVIwp! zJIG0J$wKD{=;E$wdEim<=`nvR7l=kJVfrI8NR=Dd!#;7aX!OnMZEhG5*v|V%V+*?( zE21J?pxT5QB3?B@?UE5;v~M6URiu10KCif*c?r=EULqI%c+LOrkwL@yUmh7h ziur*NNdJo?L+H2Z0vgueLVL`Abc~D)za@b_cl6w3d};pQzra89cIthrZRb;=%+?Zi zX#jH__vmV4c+q<2bR?B+haWF}Tw3gOKp=96XDYPD1tc+SrzGi4ZG&L1KA?`6dU*i| zV3l@nC$_*V5o2T-Q$zSSnVP|98k}J`O-_6awZ^TipxX}4ob+P_DytoT6B^p+75U1Z zyL2b-uGDK1mJ2zpWUg~$iY=2ONjh;|r@fk;%?5@>)Zmh2ne7^n zD!DQM00960001EW-+H`%O^ab`4z$~~B%|sN=b<@Ybj2lBl#BEk;DN8JL!Zo20Bm@~QWbze38VPN2ue({tn%>t+Ht7OI$7f?#@oe64#I8vg};LT4TV zRZ!?`|4Ofo=QU5xSj~A=B2!C#fMdWbg;(Us{+?*e93GT8XfqRmnte@0oaQqYUnb8S zVF%d*SnyKJqY}Szw)mhMaDRr?D7fD&N9?OA?rP*5@!i=2u`QKgrE_lKdXo&9osx)q zcANxB<2>KC;Lrbm*r=D-*V&HI+a3DE4zCQhRn2+eN+EgoA$ACg!^B_SF59j>>PZH! z2vHtz=KghAV1}ptheVO-1xdFcVXI()%NO^?^x3^Je1;LpACnUhfP7v60DuDc!-DUh zAE*C8mQLc22KW2g;t1d(`UaNY*DNHXA^C0xxPRM*BkiDnYi^?VlJIB$Lqg~8)e;Oe zw6sjm7ES+s^5N&^|Mcnp%(1D)i@whm{<0%v260F1xN*uI#O^9eK}!}ATAJTMYnJEa z=u1>xfQ-F`1Uj5c&kt*T3HAS>-32)%Z+}KZG4wj zNNx7P_Q=6&4ul?Eqi0U9OJcCdkalo%iOV03X|*nY+x19Wy1c*dv*HT#mqG>vR>B=t z!;N^?0{Hl36+=I+;*-)oE)ZC^<2Pc=>F+Gu`tw3;&L^urF%29ec9Ad1AeY67OLLaR zsJwsePKi4S&;n?bspuKA0j7Ezl1FfR~MlwU{Z(l?)2 ziX}9zHeurAQGJB{#bO0d;wi$HC_v`Yq)n93Ihs z(!3$s7pJelN7QT)H?Y7>IqA=E6SojOie)CD;SSyTTEoA!CW1}!PN~D-npk@2z#z8P z4tI*c%MLWN4NOq6yk25_z_zOOGLGkzNbln@7_)nS5j+bK!#%@|Z-F*SMu0l|u>$$X z*)m^w6o0%M;n0@QQ=`nzdc+eX4&0Z2)Jq5RR`bcOD1AM!7Q+UyYl+qqeqq%j>C5&` znuD`=p&)zWP|Ir+4GBaJq(oHdSBd3`RtCYcS{%x+NC;aEb!a{6RvhZk^1P>Pkt;fZ zX&K)*J7=!!(u8<=Eh{f`)Dy?9c`;b5$B*k17YTciIH`9L>JVOkgfh7ON=Kc46aRYS z8qx>}smrI94)x}y&Se36aQ{mo%p&@{z=rEK&{~Yfy~(khiB61z3#6vP77Ipnz6yP6 zkBz;Hr%YgVk7+GUk10!sW$G$3(%x%baW#0M!`#XWWyNlhGf#M9a9W#Vi)%@tyQz=g zI+b})voUjT#Q2#Pj8&zE_uKV!`Jp`8l{z)+ux>seucFxw7*Mr{?z<`A3fKf>S;=& zE^#MtPS6XUSjp)4l;=x@8wG0k&dM!9k<3mXKb6Gr+a}ypX}k|=<6EVbwjcF|em|Im zTgbmwRIKS|c?KSYtxDIFxgUMAqYiQK6hHRGrlL|VP164;va#tvijF2g3|Uj@t6cjf zP+aJ&E_n+9wr=QhM=hy;n20k+ly(5#eZm}5PkZJBg*<=}qorL7kn(Z%;$~?kk!#-y zQw}Q9#Y4?e2{+G$h3cz^A%;GJ1$%sS4SEE4jjw=&mo$q&8fhz&LQR$X=ot+nA~R`f zKxaW41Q8p$Qc`VSf?@2D^G0n0OkDv*1}X(zx{%A};;}$gZXIxcKN>7XC=T5f=4hvU zO}UXR4Q}$k2`9&gz;|T7qF?O=I5W8s%UqFc^oU~h1-*J_?ePezx>;5ux~xmp&j=#pLeWFWa(*k88>pTFTXPBx@k9ds|CJ|S2-dfLZpSqB^-su=q1)==9ibF_1*R&qtAU2XX5D3-xc zuF~4O*5R^$(*sIM^nrtd#EJrKA9PCg4qr~CpjfPAhuU$PL2a-P5#wRHZ-v|~FZgY2~BqG-s*9QG~}rdr(QA7-&JjHtNH9ZH`uwjA!im7wj`KA$`BPhJyV z>*{2_1A)7BP%)$xBAs(g#Mt#IIZCXPxeCBfG>OrF<=9m4Vw#o*dOE4o7@EMhni237 zRWmpWgj#%?i_?#iLs$uY19+S{b`H>EAC^HT9A+?&@O6z4*?qs+Ukw>YUM5OZ4jA%4 zqmTYj_d%eWT5Ul&-HUbWcKQ+F?dLIdtRzFlnnNXdYfrNp2@7*lka*E=guaGNM7f7%@e|6=;;Ra z(i@p^zExhNwXbV1n0ASVt-<0$^x-C;@0m(rZU0q+KZ#gLQ6}_O82sw1|8jh zk0uQri|W7e%zp;F>)jrKHw0pAWAq;wDNGI)z_Zt7@(9UYYQZ>HKGpkv?E0A9x7AA} zm)%Q%^`KyAqe0QBZTzZcwq2HpB_Ml>o#%7=AopN=RE7LoV4*`S<51fSiE^T@ zdUGv{sV}2t2x0lfXPPDsL?~RmUj+cf)TwJ+L_GB?0DgW%6J4)N+5u{AaUr|s0X*@R`Q9W^M9M)lf_MSIB zj;nxhK0K1D)D24OL@%HDCdt7>oP>yQZt@h~T0mia*-n%B0@pkuj8V0B9Djejwb{9d zk3`upN6^9=Xd3QDO#WWOPt) zTbgpIbty+a4Xcf7w!CV%(c=Ql(WA@YtQy<+1&Nq_7I_eUAA@|F`9P;mS$yo~{M9x& z##6a+*;CJfD{fBQ5$u7U8ZtI-0bDRX8}bIIYb$-G0{>e7kT{%+&C}6;FrW&dAjZz( zC{wE!>>G`=rFiz2qWzDB01@%21o!y^XhCQ|OlTTV=C+xqS)MrVWp|6FCa8&{V_axJmB%wek6_o%7DCcm3 zFx35-mv^isAjebSzNj{*iXO`6>mBH&=_aAC7D!*4AM2ZWA}$C_qWmdg9h0LRrB4>UA1|>Cpclb#DPy$C537Y~uuX3+@&O?i!rn z?yzx!y95jF8rOoH=vmp8w9hGynHJ`{}*Ay4s*uy|rrfsb%E&7vxyvm_MWV4@*ow#?l%+F3ky)TZlyDbQ9dP1AVi5c|c} z$p2Q-L*vk7z!vd;HmKk}wS|REOw9ib9`$&~zn(Ww+C?qQc`ACn$ym;(*lg!C-b&Gi z;hL$4TC8T6KzE(P#YnFxcEP+fZvQULK`DUNa8$jvKfC-hc;hPh>*yvjs?6we?9;GT zT)wOZmT(@gmoK#fc4e+q*Sv)(VZI7#tj5%uL?ohG#+8157&SghNNlayTJ^ZPK@mZh z7&3psw-xMUDdQz5!)pi;R3zY|B#uBp;|G5}F+brF^maIBTk4w@87Z(Tak~4&g*&10 zXYyt=Wr=Lzjume_SP4mdX$Y*f>-;kguZ&7(0q2<#OBeD8(Cl3jf8N=a*_{(@88Mv0 z{m2VE-;>@~;UV zKl3It|2MNVGdyvY@$cg=u+uRO&^JQyuf|>7-Y2fPA@?7+>Q4@WlLjlzrf+F!O2K$1t2ck zo~Q|b*VyG;b%OHEw~ylN)3_Hsg0myaf3arKEjH2%+nfh5`F6>XvBK!MyI01h@H2L`$UZ6lr88{M%8`#(yIR6$8 z8U^OZh9B{ue|4=WXbQ##1d8%Patd;a@(RCyymRSk>0bSKqNLyJzK>|0W#OM#ZGZIa zbPT`6A^0g?Yz&M)BG~?4bgTbFE?*Was1;lr6K}aplUU04sC{``)H7W>zG-V+x|loz z3%H+84+O0TN8MK*In?A`Bdi*^oCg@c7aDE)CP<~URSf64Y?8F=vR+xMA^b-GCZ2vK88jDc|`iq72 zI3Rvpsn%6J;8D)PH%R*FDIeKEkeoH%PlZM%NV>c}Zw{dtcph;IRy?;?n}njcV({ZZdv ztmB7Gt;_Zx8416T9rQz0;B97na5qbSL{GtNkqu+c%`@z?F`6edte8r20&SP!*d97w zXik-QCXq}Mb=Cwi%?7j}7-p>!ykQ`RZQDEN?D=>c}k z1OXf2l$6Yr(fravn{AgE~Fuo}Zr(tu%~`U>7`c7$1w)IDU07}rx%@B%G#@1c65wQZD?A$6}w ziK+wj$E6M1Vq#7jpf+YjJ1DU)Vk$2^qF6R%qu@`;+;Ai@n)~+!$i~|EwfPDJ1Jj>@Rb$vdG77>URTI}7(i{RyrC6%DN%h)Dx!J=h8I0WCM+)Vp>nC!sqW4QZM9$7 z2M6i9{R@BrlxY`N7d^FN8mf3o7s2rdCKTKC0lk z`X#A7<)jkSaPYqs7xY(5FpVi!xY0{sH~s_zSle#7w85*<1PBj*>^T9nv{Vp9>%^I+Z= zw|(P6WteFC5y%LCwiLA8Ya~*4D*MN0LJve$d#}SLW`zLY9dVZV4mRPzAuMHWaNr}> zp_{pu_-47*y4_#Kylr5=86gG2CZkB$FfBJvTQ3({FRnJ2g>WHj8qBpQBi9O;K5i^Y z8Y0P#CY0`D)NWfxhAfFaEHYbXqLF{Z83lYLYqHETA|=#+++4(kp*6CNbn4N^l-w`a2D60jp8enV5NH1->cgPuX)L$KCnVc3S7PT5;EBlh<9vZdY^mh zripjRcgE7AfM&S?ILp2IJpPZz+h+bI8Wez4U&=pV-uL%& zNZ-(7(_#H!C$fl*0l@BQJT3{a&@(o$eOmo3872y(JiyG*(ng>DB^~Auej*7-OG*n$ zKWmv1Cgvt~2Kw~R!C=0#ljvvNUo-w$o&6__|G(ru{|fMt+X_(=&`K4>a3qV}qk=|u z3Dm5AS#HEuK-SIj%Uw5A$l-525S3cetZeE49{q0-F!H#+mV*HfACcmE&-{3xZ+JAW zqc@pcW>HPIlB;~vy<8m1tRp_}-^1M`o82szd!3=WU$=JUzLxe#@Tj>n60m831)2%m zGkrCA5FU?%TI9a*)#C0;{(2P2oPeorz2g0UZb!3OZSX04XySU3nMuNxlPI0gbjd0l zmypgKL#!-$vr*>&ZLR69aBnX`dIi40lIV-ZY^j11Z(&xSz3rh7q5?)zHdIL(EfUxi zK^jEwtBc}i4_9QpJE4T7%y|-SVld`h8I}3DLS+wNYBkDU>AhT5?&EFV(d$U&=t$B*~}& zaYu^Up>0g1O|+?K!4fnBFlQ!Kqa&NBg{*$&$$q*08uY9bfQyJtl^yKT{Q#c3+CJ0w zkXjl}-N>DA^~DxSMc5)Y`Rp@)`DDx-tG5l#r0q(kNCGIE=CqhI5G79Uei8u=B#DW# zQziQyhfjJHtmGTtZz z6?oVf;+-C$J*a0uki~}{-;;uDnys@O5=0U2f#I`IXO#+wq^*}!vnjxzKe`=&iVqym zZx;aboGT^tBEt(+Q0$gsu^*^=jIuklB~>;AoN{L?WS8U=#SYAKO$r^(mnH< z;rH-n{#pEw+{0ggfw^rn!q#}HX zrSGwQ;JWDWPqDMv(D#&j;>>Z2DxFUTkS5l(XTZ7S5ajTCQqgkUThj`Z(Nz^~%8a9} zK221{KhokusTbU5%{^J_`JwAKdm7X9E{ zwAMmcxaVALWISJlbEi{pZADkjJ4`lE#LzEOtl6~SZUN_BJcyB2MT%bh44>!0Y^f|F zfn5nDrkYECu|e%MoeXC==mirQ`PyE5Rujwqv{{gDw3toaoFUC#gQS9SNunVfu7BBK z65tT;z^$tJ#=$=@&csFZcqJ1V+c42?VCgO17Q9~R=G0MC6h|ue0?@h;X<%)lAQrWI z`^V}DfcYNdZ1?h8FrXnfoS4q=OTx-Zq`D@Llj#tDt5^Iwg%x_3f-x^0blopJ%Wt>! za~a12Ay-@KHU+XV>vJ7}R}ntK65>`WP?83kZNSUPirBT171#3HFS!(Jhw}C}Px2!n zt8XC6?9q1**q{?ZExStC^XlyrYIhOHnp##A`2|aVni0}YA-K!H>uwLvtZ;`WOE_OQ zc^!{`OLIP3P>H*N{V&DP-2eR5Yr}J1ekRzFl)u=ip1{B z$OH=gs&9;-H0oGtb$y>Gp3u$L+jhZaSlI zHNn*(z*mYZb1rum!Pyj_U}DzSa!p=J=i6{$B+0=OuF6g%FSysI2|92f zJ)q?IY9uk1a=sbB=W%qt{s)( zh)$KZbjA8aY5iTCWt5D0Y^bqIVkHZz3&aUY0~C_X=NA?Afi6D8fH#yIS;LtG{GZ2v zll5nJ$ufdbKTBX$%J5rr^GaF~`@xDYe3%$w_~--o0xAwiy8Y0Uz>aQWg`Ek}mkf4iR^scxCy+q1M%Qy?0XS$xMd@ML-$H`{xQz=GtM(Gy`7^^3P7^yK~()CPD9hX z{$Q9@BV}R%Wv5XIwN;w{gb81uEt!|=*fA+s84bx5NfkhNM`H-mZ_N6kn-2wUIIMH} zB*}7^?*lcPeRXjeCeo=D4ic3+=5G*3vFd`wvBQCD$z$ZVYXi;In~kT4w}WMWGnKB7 zb3M~%@T!^-5ajJC3wKc**Ox**5SBn9iXfHvb3=~XH;sSHbo(Fos$ zDxks_&5CYJJ<>tw*bUV`>4(;*$}Hqhi)9}409Zh$zb=f6d0+t7_xXiOg#=LNCl&;C zj{~(_DXb*`00960001EW-)^Y8R*_>o&#H`i>fFPgWXa*D9D#Ct+ss2MNN=LhufT=6 z+4$qj-hcaZWcdGIl>XYExQTU`e`(>pX@8}0M2Wclqi`c3^o!7QEQS8tfcewX6OO=0 zE|<+Bh?l0L#WdSmP$Ytlx{2;HS^4fO3ibrx#WHotdN0lB7UuA=Dn8>a-G5#g{OHYE zx{og)wfO$kL-B>A5{{{a>{`;DBvT-rD4j=XLNUxsqlh8^L~{5^f8$Q|P85S_ z&8hOXCiZX$Zcz+ajMynNP3%`O^F_z6w_y>pt9XkC{0|}WV z%MgTMbHy?mo07XL7`-WdfB&WKO^Qf?05fLutHmb5%}oRH0R%=k`=9v}>ljgdw1gMc z+oNCHHNu<@bmQs{7Wdd`ou|fFF4wkoq+&o}|6ugShxkOuhM*;U`=+T^@P(fTiyevDoEaRdDs#(;*kUbye-)ev6?ekxe_ zmlmcf5bz;8m2BFwe`FD^hxKXX5QV+rsO@mb722h#q@FozXi>$?y1`KUjCb*;CMox<;D6d6{uX@Yw7+C>Z%d?=fEkXTQ14=5X?w&I*Sl*O8d)|e0hf~o`JOghOi%@WIr872FFSK0^1 zS_)R*BKQuJIF8Efy!~Hk>(t&SdvOdoc$NPtTv(StQ1YkvW(N( z7HgfWe@;@YC>76&9%BHf{d|_VWw54-`jPhqDP~pp)S` zbth376)k~*_;kaaxwN{BrRX4zf@)hIpt+Yv z76z{y#n6ZTOSB*96mLjSJgJ}8X)ADVQL2e!f64pfgzxXPAIMP*`P#>CVM3l~k95T4 z$6`5=(&NO2YZ99oWkSnlmgELD6_`^&&l=QEI8VAv7Ve)^i@sQv3y zq~EyASI~J|M@w;b`GY00-WsNn%|x?jbqL3(B0u9&RFn!yViA_|6=fbU&77w2Mc zf3q^B$oB&ZGv&&}t(Xm2 zIYYe-+|T5Pml*0(<{PsBEgXgo3rt8bJLaM*V_UXt&T6G3ATP3eL?Looijz~s^R7`K z06i>imsVP09qRNb1S4;nbgb8%$8b%ie;`7!H5(;652D=q6L)4*+Vdn3ioAK3$LXws z!xqr=QRH{He{7a>(H?jTA;{5ZiBPa^mZ&kk~hWf?z=Rg$< z40H@E-zSeS{l56Wc%{Fxnp6$KBN~P6qQ>PhP(drPco<9cR#|coqeebrdE^Wfe;-yk zq`2$^V;7my&)>kvOO$ozymaOYl6Wj$CS8)6^c#hPm=Yp|W+6qubr0GoMSzN+G|JKDsH2fc7Kd#b(G3z2Z3seGA+i*le<<$Rpcr10 z`MQ0E(P+-SE3X<%a8KlRQ>Eb&_V_(@MY|PcC!a12r>MySF_-Axdno4u^SOMw_)$+A z(12WZ;ZhrC*B79K2BmeYI5`zmne$l)0Ds>C6#9eTTn2hM?DURPqFv>3Bp)$6Q{}lmN3sg5B7Ay0wYP931s`x#H}3 zy3f~+EuuX1PbPn^j4Sw;yy|)|#+vhYK?F{)ArdsHBM2HkC;u@7f75rX2@_yesRr3! zQF1YhnO?Xl8`7p(8=$+La|^>-!BtyzLz&_Ma-Q9vA6@5SO<@vlyDAqkH{HsyQRnbZ z$&+wdb909yb%W<3)1;RQx*Stvfxya5E{jLiwWG1W4~-8nU^8P?JW+Ryv+hTEJaS~L zH&#Osga$}-_lvLYfB)ogJJd*rK9mLMu|wG~J<3Ac1${sX)?c6OnArBY6&pvCbT-^8 zygv)2$Fo8$Sy(bck@$cHXs(-$bhO6$pwo1$l2elma~V#gNZ$Sy*qk!~ZVER^&*=5o zA>4pr^GE62l7qWLy<%lv1Jcn-zwogakM$0y7E2rC`$bMQfAS5ryxRoV6Zx$G;Q{{; zpVRAa>BdP!cpu1;5Wym?+ad55(kB~~^1jB?czCBQhfpUogfV^w~GaNNF}5S2EWoH17CiYksHz>{t7*TT@` z`7#gRtM;Xh5A&!|GBt4fj8qs*sYXUB*%Nj+re3?O>ZDATfMK4w?rBAb%Zn3HUWrok zNct74dkjJ(sOo%CF^CBj9KZB%C--nG^*o1^sO3qve^y8UdwZ{P9e?&`pcPbRB2oVk zn8bWCQcumPo=0|U{|~c&|5xzG@OPl4XJcmn9cX_R{}-?HSD?)(C9MR;Tu=_+72dlp zTiYYHUP~MY7!qn1mXXVDSYV@1(YVQ!%R9C>ap)SLhE$Gp3mtfRu%7t?Y!>J7>gt`E=7^`Y`IT4^ z4`*ZjXHVeUoIUlbZY>=u`t&l^Z32$8e1=!Be?w5Xlc`~v%@Xm4-7k&b@5|@zpfYDI z4|}G;ir(U!eQOi1znKoP7VpI`dEig1^42`@Q98;|78s!{2`N%+>$+73UL+>WPyq_- z9D9dyfbtcY+H=8ZGp2GFkH~`Riht^402MMcND;ZmA&4-9$VjW-GZ|jH^q@~kQO(-3( zE9`UC?8-Go%!M|DoZie^^vf=U7WE7-+;ABp(ZqFaM!z~{G*2U8I{+KKSmB51+(Wat z%Ep?_EGkZevewX%5MTka&Dib)7*;z(9HYdtXt{X#Xx62YFLR%M#b4AD?*82aty6C3vk}qN_-fC>MVq zyOrS{$FcbuA8AhB^ObLE5i{aEk@mZ8tvLA;1`sH^ER|z8;Axwl3Rjc&f1T$nLPG!x zEs2laTBY0YTET6X!z%|F@Ysxp3YZTFtw-)YrUGBB;^#H(E8$cjebI>7XTB{LkRi;7 z_EzN*oinnk#fYT6Z^T5ie4Ihm_ZFLgHX@uyVAj*2Ao^Mn<2~$~yZ9Pm%Sg_m>9w!x zxw!3CH&1&DAu>4cT^*E@aO+qtuU2(Emkl<#{8w%%7)SLHULq#KTMXP`Ku zxiZ=T1auZBUIInjaXwq}w}c(i2tT z7L3=jISCj*|&jyV1Z^GsQ`=%Td`wHg$|dby7S0)Ddg2^2lukqrgVvj zzuCUJScmv@Q~17rv4>Zp-##~Jf*kM!b87M2v3$QF*HkeG@Epk`XFiBN#fw+;=((BFzddS(4!(rqc%LAS_VB>e<`l${+rt~+Pa4jfxL*d@!f3tRX|7^WI7uCWeC%$wMuatf8@ z=0H2lR1GW8Sn9rxAle8JvR;f#Fmp-c=8kvOx@bi=PS+}hA-+>XC?s;A>CZsKU7r*r zjtEHWq1ya>f1X&Sg7=y(@CCL)W=%Zt{tHK(7)`+VU|_O#rg&uH5n-Vi`iuM)00n)& zU5W3-YuE%e`i|9kXRflVq;TZWd|!pl!sO6Tw+Jeo0lQmEe8Fgyl4Fw3wyoI?O?Pt!mmvX zJF&wb_IV};KDIePlfo6e2f-;AemzuJ~ZBh@0=^@XyB2y?8v*apOlw~!-~ zgD8%E@r7QeJ!*pv1&zA#3VMN|7qRU5p8Oa3f28+2bt!N60?Dn!!qeI^QSJgb(Ja_z+ZF$ko9J zNtqTGmATlU^RLDumJH`+fy`$B_pQ1_K~6~iCl z%Jmz{VA1&PENy>zG<>Jo_t4*P-yc&NxddPFl{<+*3;C)=|u2p2FEH$#kBVA`Q)n%O?**JR;jJv7bo7 zn9mAe@4W8KJ8X2xTXs$Nwt|Kfcp_v*J*Q%Bw`;tnP`hgj6iJomD`YOpb@WwTOh!TL zEa6%Qcr5K~b_?mKY;{}3A_09!e-H4WRG04v7C_M8w9ww&ef8?7=}ysyGRsnpha~UC zj->|JS(^!byJQYTTuI$m%wQ$T^alffCE`|%)1XUfNHI{i8hxJq5j3H}%C}}ybT?Gy zZgy$N5)yt9#wNv+4jnRvmjeF2+g@6J#xAj%gf{?f0*VQOxmaE zSWNt51tOOa$R7}KqkI25M&#u{RJ_WC(m5QD+p#Kb=EO3aC;Ugo{64PSpC0k-r-(}c zhD7(A%>(9pD9dshP%vQNf3WQRiRq5ak!k*;s2>%7$}1j-2%WBwVi<*b{D$|FknHO> zJnt*Hr4G`FTjEYlHI5GNfBABkGomw~{fdtW#+-p$oG!7xkkB)M0p~WNC3cc8e33>N z!qj_AK!A@lwMSniy!%4dD^iy`s$yg9-nc3mBf{BVW}Z>qu^)I*jlfp3roTWsnmfOj zsF9G-{bK2Ub8dP@O$fHD?o$owQ8m&dJX+29`Fu~yo?70q5>Ww{e}O^|T7HXP>acgL zv5WPGz*U&lT_kMd7egkg`>Fh?f(&FXYyQyI+B3Qb(lPP zShFy06|DSk${TfXPadF<%8&iu=cPQizuu?z_ngb9=x6>H;C~1n<@I;M{>%Rp8kR_b zM&9|Uk(k>)hek56f3dPLu{9u&H?VOq(KE0m5HZ&krN{sN#KB--(f_vd&u{?-&&SY{ z(h>h?b~p+&3I=8d@&WFbL!ojjSW zKqU-PjLK>|g2QZksOyJQ8>>{yhnHcq+RQzbmQ1d#qS9+>?4Q4+IHjif@qlV!1q)_Q z_x?+|M4KuB3y^bqI+1C}^a)_1{?(wD_@A|9deBS&e+<6ewhc><`L$%~4N?B;2c^;B zrnKFnNG!IpLRU1&)7q@ioU^bC!GgSP!k7{sAYJr;W01x>0P!Yc5}k`Fi|+dpFk&AS zgSC0;pe<5)R$Y1R<~d+p%FJAH>rDNlk#?LNa)a_ltT_{D| z`SRⅇ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∋BDKM(WxLl?!(p`{e**?WPSqx!*TMOe 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


      @+?vhVDy}Q)!k_ay9 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

      }YktQ9ZDmy9zC8{?gKmbrE#(AzD4?`QJjq%Y~ z5|yXDYzN00w`x1fxOS}ud3`Hegi8~PKwRA2ju7)WnvHg;0A+*oD1?9Fw@s#Xy&8lA zeTV+B&<>*hRNoIIvs>+O$9~1SEXS90f4V0jFt(sOB!n?RhZT`0fya^(Z8{5KEQlI8 z!|FqB_v-`x?2R~q31EMVh(^wHVwRo<&ebeZNYUcHVEe}xkzTEB@rLKehY}{uX+a(I z)qG!eN3Pf!Q#Z#vC%1pzq`2Kop2Md&L~nkQr^WIZyBt!(y88ribt_*ekp#AM{jDZc zHb+`7_%x8@#`kr5;LQ{bC6$_ui^1C&avgoRg<-MFaQvuX28?Svf%H3#T@ zXCucT8Jhzz(rIWlm)NZa2@F1j%8w0~%QB0r)g_!r);fOT0+xSC1Z|Wy&~1i4i0K0| z@Khsu0PYYkUO_z7Z%ANZFdKjsK=P*y014nTvA4J8prd>CAJ^5_cceA6qcbu!H`Fz- zFtw!Px79Z>b+odh)BkCOGI$bfbxmEK_ob)Rx3vf0|9&>$0F>X(W~Fau{quCcG=9ee zYc^I`$zzqSl=pwVw^#@yF7RVIH07&;~B6yk%pS}g2zHOhjnF1L-P5MvU^q=PE zK$cJ2Xg&17ZSV0RjNgKYf^=mV|&PfoQ*PmjzOI znj3yUkIB;+?18L-IDqJ$K2G01wBJk82XcH`G6b>%0Dk|EfYC|*q!O4L8k^dg>*||Y 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
      Vt9UQ7W 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�T#eBV>_8+ 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͡=rpuA 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 z zQ1fXZzjJUn1$6%1Vc5Z$z~sq?FRZD0N#^Yr@u>&Ow(dVRQ*=5noICei)v7DP50q!t zR-vk?iJ?CPGq0XaJo)i`w|o?6pW)h7cgHsy9$OZ8;MIThJ9j1?%%5XyZ@T{Po8NPN z^x)39j)i}JQT){}d!JCxyPkdi@fSxwx^-~*kB)u1?BUyAC|BnE_tA!~dm7fgxYK^m zY|oPqo}4Ota>ozvzxTB(ue@<->Fy7?wR-f^FW+z5_@f^)^Y)LtxG9xU0qFwU)qlsV z`e&-SCT@Qfw}xxuLR^IF;kIzST$J0%?cx&LAg6G{T$amm`?+y$g8LeGGj|Jj2X`lT zn7fO+n>)tc%l$2xU@ssCGC+C(y%lpWu=T%knWQHM!K7OoQrW=xpr>tS5Byd+!B`&vjr)CrC1Aa6UQ08)5_MK(7{P3+kg!moWK^wmW*Uu zekJP{3Nax9JM9G03Ryba!m_03VPHxoq9Kj*pg0tg-joy?5}Gv43?Y*aX&!|@pd^J- zl5|Kj4U{x5(&>;iArIQ7|DI07FwJx()y(hv_rHI?|GB%jUUdEPI)<^m+R@#AeqDR! z1|P#1?qwLJO-w2Mp;WLxlvaY_#7Ht4Q&K3EjTbAaSSUVdsIE3hNSqoG(mQc_12(1P1^oJvlt2golH%P&yMFNklN!?@uIR zI58Z|WRo$)kQkn%q*94gepsY`@!~)tH4@4M^DokgY${C6Qv;D`s!V^Imuq%{@z97; znvRYDL?MRYnp7y6R8mC)p;%fmQMFjKpD(x)9f&FsQ+hZGI+014P>Q-nl`#E7@i5H@ zWsIv6(YU1mtAxTs#Sowp&lE+J{_LRcSu8P#fQmx>iByK47(sf9K3WrhO2wn`!L+Tw z1Vd?E#WE6F*RKRqN)l!l=R+%wCW7E{@xYo?G@}&f-xXf#1!5Ell1T(vBV$5N zO`6;iiHK^>DDg`P>H{yqfxSo_H%V?{^bm(kyfCAabfH0p^ubIRc}NBok-0f`T-|A~ zos`&}7DiI{0LE;8!7V(5%A~W%#)#}5b-%&(5n=aR+*(d#J3$Wh1nAA8*mjxvh8+1s z5sy433F;Z6o0kPbQQT(1h-`w$o>0#lY-X#(o>8%|R3hwo6HMUOEaz?J z65h&UtAznmokaGKPFcma9yfIa+bjWMHA3cy4CcH9b%9ZT6^kYzKvUGE^Od}4M4De7 z8a5T%0U-bgA~8=z8fRB=2^gP7SX`nPTLxLFNm>Qj9TNnNXCQ`dWI)|U1Sq9gND3@2 zRdE?io#AG2nU9}=ECDxoC3}h3)s7r?;swi~J+(&yubTL&Xa`@8q_Z7JKvtuQrx^vl zj#xosx=F}?T}qxd952{&KzaRc(dr=PS=uZ2&NjY+#Zy}lUtR`L@YB!o(^xzWEK{iR z%c07@9;&-tarxAWE2ol6Q!5Hn%So3AFU79^?;ssYHa0E#m~kr;uQ z1+i8O64Py@uUCm+QbUqJLB+F8%pMk3(1dl-#-~ev3z}humoG)+EP^V{RPh{0wJfoC z77=A)5R2WshsBbLWso~SKARY15Xvl`qhbdYLS1AFG`>jJZzB)Q?@yvOelCk0#GgYf zo=Y1QLNm_=SLXIekW(k*w1lr*&d+1u172~(~GkohW} z2iE3)K|@sg_ywpPiBM>lD47Kx?}DLBhq7d@^uo|0P=7jPSm6GhV6~F=mLzl-1+iN+ zh_rqEd-C%A6MC))S_KR&Xaa~<#JkFf#Mip{8Wz`dAV#bPduG8R2r!?vmx`-sb9ES{ z!pvH#rn}W43K|P5k}3m>z&j{T%{R*a{dBZ{ z3n4E&1WD2|>OTQ9TqX%a2vANRiyNV?EcQVut+3MFv;w(8pKICf_9AhNFvNcbrq%owsn=mzE;T*m8)>};C`9zov%~}X4FI?5 zQf~pII0lD{AJfKZ%wsj`Sgk4p_4ESQMr=rBmI~O$;;Zsf=z^;$ruIU@kW`{#AG~RR z_0jI*JGII*@f~tAkVM@=G`dS}!PrMqjr0J~c3vMGF70%GR{=Na z(SbYiZPw}KyJ(Mg<#!y2uMu4Lf$Me_cLN&u;Da7q2D^4CyX*IZ_+DQ{~rEC;aF1ev(D@ZOKe?4%n^fEVC6x=zi(%vMO{QXe0HFeEJodp?F% zaG8kf`&eItB|g9jIKFQ@%ofms6aXSLje) z0-8O+)*SsCtqRDg<5UAJ(D_=Rnh7{{I#2Z%PSE%0a*A7j1#i%KLFb#VnA=AA?zJ>O z%z8b3ua0rG&NI5+d|gicn5Xj;!>Z#=2AZPhmgbJvEC^pv!&z3|rqFYh_zc;!^Xrp0&v{bbLVH{bgHVPW>x(-)t=|DCqOr^f0U9`9Yh zatnXx4%_1Gso3r#JlA_=o#e*w6gw$ekq8{FqvTQw(_&OLeZky(#*ZMbu5`f2%z8O1dh zhoax!y>8DP&;ERW(=|Ph2HxED>~p&+e_Hj?!@Yg$PWpcEt#$8@t?cQ!r{y2s&ZSQc zjh^?I<;L*5zcCjVy|%`FVe*mOj@;(Pf9`1Bc+T`m*(lp`-G`G}Ub*!PW=SGU^Sx8A zQ>&i$rB~#BV!nNPFD(LU(DmE(9xe2ntn;)d9Xc=Tyg~1Oe_7{e0nN~L=$e|Q_d*Gf zoz|T8ZF?p|uQtnWi_uv_h6sa3({Var;{vnw)1r@O-Sc+ElAGT6Q9J+MoYhoeQgkp5 zm%QNGlro?xQsHIyy%4*aHdE)~_yD{f)vyuOGL0&5QBTB&8B=3zeXY0Fqe&A+TPDBY7K|tO9a{{`ZoaETGMkU@ z-TU0+hR?*u!~3q9j3S5kvq&C~MTobD`l&T!6j7CDXF_qg?3_WvpZ!~6$OO9KQH0000801b^IRCMwkA>2$z$;1$uv+9-kO{bgcDwIuznBghHXuw=}%jLL*e+HV+-wx{-b*cgp-^wKd9P&@8m;nNq1d9?=Eg$3?o~?zz0C5Z z!hB!7(XM(%y;g5m3N0^R^6E{q-l)|J^E7O>3Jdinp96Wdu;72`FVxCaBiNs>HA-G% zV1-5`t5Im09fDw~w4ru#b9b&%3D4CUUZHrRuUPR4Rio;8rDjK|O<>_wo8?-S&lZ|W zX!xXeX0BWNMtF{QoO>>RfLY{E% zYd5jZ2>Nn0Un)168)pk8px>w1Yza07Yn3*zK%Edwp9%%L{Z8oo%3L~`g@CWbg(JQq=DIARSVy)yEa9ujI|P=QsJNRciALzi{(p8R1^)E6jpHY-}(aW{Yg z58~CU1fJ>)`%bmJwzs82^kE$U_k&08pbn~*jR27 z)%Jfih={kF2)Cq}WrND9y4#CofH@!Y%as*l7? ziPiD5XJ26Ux=VW#wwraB5x zq5F1r=X%_i)&83#zTKO;Fb*cVb)<*l`uTrhh3ED2zEJXFx4P{~tysAw(OW}%#H_RE z@7$4CRknlGlnS5qRy&?udv!R7inUjLxqS;>W8T}EP>CNn4w$u3sSx8{$?C2w@7b1E zaWDpZk_o+BEw?uNhmun;vH&SGY{tx^3JevKHQ>u1sQdvzT@S zb48X32h)xedeZn`nG2gC!Q#TT#BnBP!nP?`j7H~}tYb7DH!Z<*VKKQFHtq3v$RhI2 zaN3*}x+7wih^GY0MB`$b$qV6JGMInG=yEtI=y^44=ENknPnt|#3)?g4eQbH-8B9i4=C+=OibEp$Bg37`s_PQtuFZh_6>g|wZ)M( z8*MYYKa>QXsc~j9k;(`sB`il|EXgfh825^Z#Rfu_c0uwO_Qh=Na#!Ab2ue!6joXW+ zc2)8lKyZVtU0WtF6~Uk)_)+p3K`@xqe(D#=s4kqCu;Or*`*tZEHL#`E5t-pEW)pxsAD&nAam!pj%<4cfHfe8CU7x>Evn7bu^2!sbfcu&8L1klNwk%N|qJb-@OW|L!?~c0QYIZ zO3IOsDo45&jt_oRxnVEdu$LhjVv*hPNSclk$&dLiKIXevS93Y#OH?X46N1nq*yAaZ zCHZ3tbr*jaqOxZQgvjJnG%HHjd%P}2j3k09NqHQChm-Jd(xRkxFhJHMDQiMmWKL|{ z3NiTIB8RxdO!6r`XQZeo8j0*Ee)f1a#MA-RC7C9Y@vNy1Ef-FnBL72QYdJu~REA)Q zy3wrUk7L6j$)5<5|L9Po_?q@J=b*7$SSqz6R6obB$p#{(h+UFic8I{ya>26ef-ICv!OQQtHHu zWTu2wTxQ8Kq6jYex=;=sWnUTxnH{mHz%SVlHiI!o%2D}b*wiZ`yEnc@(1Y3*2 z)`Kc+f@8aciaqEjIY@ILy%(e&TzZGXa}M@yGwslXPU|x`*h49LqEa>k_dybWwr<|;4e&vPN;XCaB4j#G<+vC11F$xwBUrtQP3yS#zWSaMdyAN6)fu{`)wgoRN+y| zENTMA9UK0@p#w(ku;6!+6){yDz~Fx&*T8{;3Jzr_B|ih1uDlG(DKzaMCh62 z%83fFBuoYK%XQIvqCV0~dALjY%4*6-A&ctFQORG0`p-c9V)MP|r&A``LF#!>4VE0e}xEHjmH@x;PZ%@3Ao{g#I=rqT zuhWA0<8I`|DDvtQ?J7`Sr$B!}8%a^DT1lMDHuQdMr2@yH0Kc)v;EM{y_l8(kaDt;(Kr*JV$K+d0Lp(@{+AS2&`SK8{j4t?_A} zzhZiR71Q(UGCkkJ^zjuu-dx4w&Fgq920Y&E;qe6dk@z?|xh~C0`2i_({p%MHD@Y#`hOna%jx_xPDIc3t4oj@72*AJ%#S*DYWpaJ5o1}_o+1^ zjcM?K-xI0mMUp{M6215@RVRebBXUDZ_42=}+oBTrX0A z;##ZfyO_KT@iJ(DCao!kz~*PbSn|)n>0W^TyyU+FrxJgd=KGU24l|1wNq)%( zK^O33#KVry;l;%A-R2AEb&^(yt?qXWUxH+JN7u`cum`ZtNd6ThoPe_nV)7al*;yIF zOc{$sRIFJ9_X~y>IcbzMUJ{c(5{V}!f1>A{BCTNaycl3IgliMDKH<-TL7Bv<1)J~H z_zO@BD^-|tGHriU7%l~4jI>eenmO}|g^EzqCoKOW&MU65KsPeHF8G0qpsmve_+VJ$ zRX_!Xr+{=VK$`g<5G>Wne+{yfYR7}~6+R?*z6ski!G(gLkK>~E4Vn_V;Nfa?5iDEK z@l@Jq)0Gw1>lTi#mSguPlXN*z-b4lQp}YcS^xx$BfY*O%;Pr^nM3rx7yrH<`dabUX zDp*J?eP^IBZ~DtP=uSa$3wP#I8gIMCi)8R=@T5xqVvpe$eZyZuv_Z?$DBWj9jI${3 zXPMo5A|j6c>nT-@Z|UlZzCWhI>s$I5g5aU^?)P-rF=tG56i)t(a}hO{F#0gYLOXrd-_K;j;VXCe+?H1 z#P5K^E8Pn~9&vKE$Hq^58(#(`Y&;83yplFvWrj`PMq*=(>8ki4NI;>ky8fr3;G*A= z&_S94=~dTwjX-^^N6>e^px03lAn0WXT1*?~88UwjF{Ex67E^%z6U7mn`=)a48*uJ9 zjlU6m4T(*1`f{l8a};KJ$J?sLtn~JI*LaI`coY1{v2XS0@{zC0+o)I2hhjzd_cOq4}PS}2R*uc=34-6R}vd9s2Lf|a=H!L6Y9}f%}A7O>QIr0xX>;LYr)8oM*a+LesYqZl9)&&s2YJ@ueXxx>Q-6&xNQOu*dSye5ZPK>^yze>D_PlTNtTx-Z_8nIX~vkojdpUyZ5`_H^^x+&-a#OgYZs-Q`}|{ zwkzTeUbXQNR&lFA*dbY^G~OtyQ3bpv9FDXK@djb1CZrjAN3D|#!Y;S?E^oF<$-Kp+ zS}-InQWE;BCRyc8s!Z=qlDJEnByE%XT1}Q9nH9<2Rm7bmLJS{iLL4%@g3EBw zEgt4EH$PlFB#%H?%@Wd?FarC35Z_KQNpjaxABsSyK{%|4AJOa$n(z=Ns=!2zZt)09 z)P#weWNV5n$u(%af#_?Ea?7fWs^!pxG#i8_%++WRjwoUS&2>~08Zdv?Ml8G8Egr*M zHq6yx8-YMkxVR{)0qblIisHIOwS@8=Q^ZytM<CD(wS?QX>#^4lMWZK@SnKn$PDzYXt6-ZRN9V41BRkCV#sR~x3bPZIDy-adqdK{_a z;gPZjB|1^!2}Nw9MYez4qH0J;)k#h0i>j)y@>6uN=>|adYMUk;!F1D6Sd2vzj^cu( z;|A$v6;EU6pEaQw-`a%cX}9=^eoV#+F}7ee&7s$2R9R-_=smtmB}7qS918kG5!AYr^r!NkVGSIw45HXw@Ke zXhIAs+JXbu=@vib&5}g7J9=4j!lwtl@6>OIPZhC)7W$difeC7`q;qcZJa2YdgGUBi z{x;q6(=;dXJ~n@J=|{8KjWWHnHV2Ordw2(0wGQm;x!)fp=N0jD%KEv!y&a+Mexa$T zq!wrKf?K?ZO1jQ3Td-{wSyOTS?hhYc_U^;WDg_^1&=+`75ie1yOL{7mQt{l=#eruy z{Ef>mz$>q!nTFsICWHYIfrvyHnID)x3ULRb7qiXmIkkU9788xQlf6s*63a{D`Y=C@ ziPgpT({c4@*8zyTnSUVS9u`migP8wbgjHwX$GE6%WAW6s>tgQL)%YN@Dc@k7O;|kT zdWiX*h+)i*N4RwU1fBhe&VIBl*_wpw9nW-8-Y0wXjoOnC zlXWpqbD@79<(kTRG9B?OX%=d)`*+db>(zuhy+;8P`1< zuX5cp{2J>awKcAL{$Ho@X{B@@adnI*kLB<(n`3`kz06O08lFMAe&N~d%XQBz-6!E$ zmbva3k702<k0(-~EG#kShQ{oG2rt7+y`Oh-FhKTg>@8PwI`A;!j zVgFL*uVmM-|3!9R!T34mU&8z^vzo&G`ApYBb~Q17A&c{~wcx3Lg0~no8?ax7f0x#j zY#e_!vDGQ9c6i@@_pNshSXZf!CuebMqSw!iy$*GKHtipH)$X30Cq2EY>ajCLm7B&l zS6sfa=*pGEwPkmWwj}iHx#n+!IzY<$KHSy;3#_AE%;@3nx&kagR@*I9> z!8P->ZM)BXd%o5E^^1KQi%NIYw$;W>_@RI9?}t|79O18xcJ>qKC!s-`f%g8qFv)X+u~D(o-Y6N*`q)2ZttI; zGR`(Rc1O~{JAav%RaH5@-qbWbDX;TI)f{L-ak~IA9V2h!CxPm;=So|l{=>&KWbQ!wr1}H ze>V2Y=*HeT5VdSQE+A^yTAV{{Ve8u2V+J-c`*e>PsAPGLT%A*NE=<&a~H?0}lOhfp_6e2x?w__Y9 zjoHs2p7Xi!kIwLa1()ZV8AGmlwwg44WQU%m%(xGKtE{=Y${tXVnA2tFUM*#Yj>0LY z<@_)brWM;rgrD-X>_$;KaZ$)7oIHp@OOXn`1dC$ z;5^JAKq{7aw(!U2XlCz0fqw)_4R?8b;<;wS_7H^)8QA5Eh|au$MfLjV)1rJ>=m_N^ zoWXj20*zeI7wYu@oI3n@{6*yi&H?nqTY38XGf$vQ(7-=7@`^}sY{$nAk2cSzo=r?< z-oBhzqCbfOt>kahSyOQC$Dfh753wCTK5@o&et!LmN~jK~V2!vy@@i)NC*$K(52q&_ z45qOl&cWL(1lfkmH>UR=jZaceoh~HXYN-Z6#6oB%PH|s=zQ4L=>Q#q40X&eQY$nm)NdloWAFemF;a1T~zWXzAZ#eTnhI4eC&JGo2I>5yv72@`JM1rBQWx| zugw`avE566L~mEg)p+3(cJMVi+uM|#-?7H_hO5KT=4pnSsFv&6+6syv&-b60tF5}c zw`+R@K6kLhW=VFxPqX7ZcwE+PU5+->z_l~M5`9Nq{vpsW=S1utLOh*&igrVeXnzrj zK*f9^rs6?NOqjSKk#taHL+s+Ar~MF51!$N9Fbz;Zlpz#Nh-p2r+MtyNi0M6Yb4y0Cwcp5fLhkk<-jMtP^A5PSgY^$E1_$7bh!Q}f})qQ*&5pUFYScT5O6 z!nUOWx5NmE1H*Emi5!Ona!k>~NuW&G(IiC@$XK$A;~Gq{Jd(Mj%;U-?&>2!>i5Vv7 z6C|1>SsvqmnbJHY=_ZK%lmwt9{b`7#CzzB3QeIW0h@%OZ=j$~{$-q0zwsPgr;=g!X^;Chfcr49jH zH8l~?EB$Gu{tOBX7?=YN=tsdtb7#?>h)yA!dJoi|IBrDo>P@c$bAFGIYVA%z+sXNu zwJBM@L_wEAfdzbUlxsWL4b*hdu4uKgse%czr4_uCF8(uXQ=(MWiYn1E>t<1%ZfQ>u zYUN-Au;@>#xtUv)$jsEpFlDcH6Kjv3y-|3O?`W|}AaGX#Mi9Sa)2Na*w46JbR9)WT z+mxo_I#xhUz{ z<8hHfty)tusZQ??-B~a|5~Jjhrp_H7MS89ruA)148A_yQYFf~Cj)ko)ngLb-Jcv;t3jN>&XgjyCC}HarL>rhT zxz3SIpFw?>ClqaQpkNX6aa!4hbDqU!xe&|=*_0j9W)&(b(jB8&+Sm$$a_TWO5II}X z@_qzSc6NKFF7IT4WGXxA5$M0l&SzDxGUy2mxwusi84#d}&^=zsM9^}S$)k-S(;99z zRgusDxvi1w;wpRUlc@VBdgy4G11dE`t^JLSgE2WWZ3+{qqOI))t(K8J+Z;ovj*&~1 zku>e8*jmDUS_kOxv!ur08HAVlSt-21^ZO7!l54i*S(7L}J0|Oq9DjUjLC_wU65$RX zw?d6dqEq<{!{?p7!`s5Qu(}=2S&S7YH*+LFL(mtk>L16y6m5&>S<|;x6{ggXx+Yqx z8-y$wH8$j+EjvU?l5g_!ouib1bJJbSzxoe(7=kJl^+Pi@qN&O`7H^DqYVy|CG4cau zuE0Vzvo;FR17sUco^%h@F>33(?rG2vn}#P9nb6+)r`4Oy&R;RVUIT(;9@_s;+6Ha?>TZtPO)2#~&WA zR`Gc*-mIk~(%bk?#qE5EWX zI<`4#Klsahk)jQpV8E?~yy7>mKXtqSB~r)47glmjeOzl-_my}#|7kWC`?n7i-yMvR zQ*5S(7;nDFR7rQI<(lf~oaWB82^0eP;ogi{jL#VtYk@Yh(TdO{%f5_(u|=#bODhll zUb|5h^6aC64r@N$%4BDdfRWe2J{+LmJ(vLh)<1o|nFm<1xYWgFEs~Tdoy|jl#b}As z@qs^2)%i&A2f@+niK4|r#kP~dJ9u{P-R*c7D2X9$T-Kz_C3bCBOoKcTC$^sEL;mP{ zrVjKxX7<7@R0Q%jHb5I$+fKsSh>@afR!o-uKO8%?^TS;Kjh znf|k4>6Ahk(Jr}gsTT*LZ=BlDti)16^&U4W%OaD_e>>8ARw81ki}l96XZQ=IRrn;1L4!wzD~T)sHhb}GDcpr` zHBR9WH#*Ct5<961!^Q)<_hxv~LoCp{QU$rmdMeV=C-mc{gu>szOH|DSsw-o%s7Np~YxlHs6IpEic{7d0W!~L@p`lPy*z;&tOhmUzVwuth zIZg}4?%Y#Hl*H6xRzEL*3XRMd zN4$pNYi5)Ry#|s7JODcSb!(4hhJ#6^{^ro)w4~Zq6Y+rwk$*fu_?$5=54-uF=m<2r zmQ?FhM&qbSFw}UZz8oCw02y-x6?YfGBf0>)pl-z zl76_y7mGndz)5sD#}Z!j5WNAv^N)niW-QAmDbDKKq#TlQPhnKfoQQgvOjOg6QOc;g zBB;1%8kUfmD7pe*SqkEoo7V#O9POo1z)yg6pvIBy?DwO?r{4d6L`sVu`y&~#@1eH$eRO(Swm zo&=Lb%9Yu{U$^t?^6*9l6|!~Uat>OUc>L0P)`)rl3m(`uxa{Wr8&gOzjznjM zsYDO~{JHGuALfLg#cVNLPGDb}jkZrxi72HBkL&b=YORo9ene@g?3d6{BBrww1G^Fw4x%2Ij<6dps1lM=rtt2tMrkEXEQDFW3ZTgZy~ zja8nk47AXqpZ=-sCJ?nfll!2@<&~6;=*manjfLZ&x)r1(kZ0x)R-s6WtG4iq3Z8{w z9TQKlE;cehvvQw_0TDJ&(>H$E^zII37C+xZWa)?(+%103topK8v z@QCp|0tBC&apT4U!Ntd4XZ5(p^tBPJ?H5`7a>u$3@?0SspF&JW6luU^aL_2^NR>kh z#?*A#Pxip$>VU)%BG=nCVL^T#J%IT-cFC*FojxZ1*R_H2_cLxRx zf6W5`m;BWm$OuAG_-~5+o{LA;gl|3-56iNJ`j5&p%Tx<{xk4wljKlb>yT7iuae30T zbMly>a8{luKz#(#;Aizv`V+2R0^Je!U$J0@OpE-q35m;X?6Y=AS&$C= zpwEK+MqdKoGt2FNTg>iBdp9aNkY>hZ^p!D_Gzc9JxD<709aVD;)pM@7Y&Cu^nM`c~ zjoP?dBe9spk6uvEziit{MmhF5oHMDqlQzBJV! znHMGx$*Pos8I_L`#4Zi)w1ZSlNC(l0>m_6J8(em>#fuY%3UIdYZDI z$OxvExA>pLv3e0WqO%7=M7_u_H+cz@I0R+1GA`31Ior_BnUCO+x_qUI>97tnXQ3M1 z2~vHayEyMJs_^Z=v54|@t1vbID|mTTL2yhfTRuW*MOnawmEApL^Y&&alR5EiLfIPP z#sd%L-+-mMlJc^4%b7oq1{tiWV$ndW!|?>sLeSGBh^gb=UtAW9u(Yi$BdT&?6&mve zd!+>$DhqR!F%23jj2KZj;v#}aTPr-%eL(@3RM!|O9}>~v`i8!eJ4y(EgYUyo2`^bD zp_pHAmK2j=14&*v5ZXSxPQyXUp>0f&dYS;jBl^^3Bc8(OP^8>EEHqKAr6m<>25=*p z$v`(#6&WMlqma>Ot_ZkCEu`pY?LdVO+9Q#Vo`Itx9AfM`fzKEV5> z^V^2lhJbod&&ME_k*fnf0ihlove82K5ke-)_MxuBCw!d!&bfsTc{0JDE}q=5LagGc z+t!4mjlFa@Q|Rd}2QOGo=cr17J<;9m@&}xiejZ?A-?T{rS&uCMqh8fRt$*PYl*=6w zJLB;{3|>YHrr`p|Op*`DY)Mr3ih^g}ql)v3TR3&bD=TeUts zUOpEF_J|>AXG#FbvT0}PLl&j(VrZau5O(x=MIkuxHjIk<`q2Xw>zDSQ$gk$LBi4R= zkk1zP%Gh@Re8{_-L9gsl+l0bwU11x@Lh}KBLy?~bGilxE-5=(O-lZdM!mSX? zJ1dxC@_8vYK@0b~cAN-@HYw0jtD&8BLUS2!A9fD1{2AUJqfMPSerikb>+<$Bc-w#C zuigndeuqkK8yvr4tT?-28;D$*y>fdwRZG4T3~>IhRdnJ2j5e+fSwBt7_?^A*PY51A z<{0+*;{m*f`VBJLU~uP;>5ur%u+FMZ*z15g1lI`P>WQPaKl(a5ovy#DHxE7OX5I~5 z|NZYL&wdYx!j4-6|17@>QZ!b+H{~A+GM{UTlSW?^bvUeeglc@&kr2{*fqKs#w(_;{ zs^Xd}s$Qo7!$%KW1#4D&>_1bBV&L1cuo@uId#`V}279q%;))eW*yZJ5^}7`|j_d9d z2t0lm4ij*U1+Ie0V7Wh6pLd;9&ohEb9mw7uks!~*w>=<{1;EVO<3>?Z_0Rm z7&xR9zt0iQe>Yxwqu@Yyo+>$S#P@lN9?YX%4EikrMl9Wp^;TY=zFQt&ewe@VUL!yn zFPvt$qx~{gGle{eBcll!U7WS>;ZB#02n0iV*JyLV(@j*U6IkTk+^1?cwKLf|`flHYfde+hH4U|gopN4{~0im3H+&4x06$r1go&307 zUxu-O0u-QE;Wz-op`E~ukELDp5MSJ%d+(k@(?5PEp#7bZ+i6AX9EE(&~1aM74O9-1d{s0PDM4JyXfqL1Jk1ad^vJZFvt6ZH2j*mSxA49;x zpCe`0QB9A%m$xN@O{nbpi>`9^yGkz*fjI)51+v}OH$R1IaInE^UxjXYRB#ITH&g)N z5=_8>nBXhp+Ca~sX<*IjYwlYW^h;mirvff2uj-*MIIqDO#ptBYYXk!EEx>XCf`wVe zs3fPbfeGw=jz}P{b}q?_>90Zaz<7Z7~tyKW_6;T2*oXUI`!B&hEk%WyBnq0ref-7i zi+V+!@_=8=5GeL9<`HQ6E$|Y6ocC}%V%HltmGe&I6&LIQN&G8v`?ZQQl;$n;OPoRI zoMqd+S^TT>wpae3S005aBfPBea7mNS8<&n7nlstu66J5ljdJ@<`6%EfeD2cjQ{*Ub zhV#btw|Q?LJ!a_^D09wx*nS0LPVWIM@E2yuYWngrw`LadFaHsY&O1L~?adzd0cY@0 z9uEK#c#FI6#@`lGZZBb&q2!(w{E--}Q-t`2geB@L{DJ)PEltKq)~p}-Jr

      kk+WdxWzQFV19oGjo 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 wPL4ARBgkY&%-6CWmU>ivDj;-)zet_ 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

      _mhJcNTO_|HO3m%X+rOh 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

      &1DSwZV86B}OiuX+nIoZxM- zo5DFNWLZ&aDtz)n6%+CHQ)4!8p8x@|-253ug7M#tb9gF##|4aYd~AgDzw`^mESR+- zQb=Ln5zzCEnqaDhD(C)1a@Y!M&&oByUWt9o0=ppL3kw1Y_2-yfK(d8;3mZ=nRs5&( zSzJ)Eg-ho=RiYURCQe~G0^$bml0caylRH*cG3Kf zyqg5>efW-)o8ayv{Plz!``c}d2m|?Tf&^jUd_ceVgfxci5Ar>*2>gHVE57=C62}ah zWko69v1I{59~^;mLQnRCJ&^SRdiy8pz-#-&+OTT-i#_o5VmWuCJz%#ZS`YC5j{*0x zC-TZ95D|N@(1xeJE2R@$d1vYkzOt+3{ZDP2`O44}O1S^~mDx8ye>e3tc{Hr*l&l3w zJEEpQ*adY<3{jE1LQH;6+J>?PlQ%3|GU#$C-5=XRfRr(QA*2r&F z`;rtQLa2b1Ai5_1;uNAnq`B-qszBU9VFIokoLnDW z>7bhp3=B>|j0Exv7K?@oUIPjmULO||UXvCBj8Z1MCQ+sX3O*YqlNJk%S`G^qhZ0om z!UpzHh%zae$;k;y{HO&psmXIG>3gX->&XO~%cy$8=vf5?C|SedN&aSM<|<_*;^d~M zrp%;hB_*b%P9rwJN~Zbua{~m)(NA;Qf6?^;0ZaR(;f85qgPXxHK~qCB(cD5oaWOS= zwXrhIs2E@xI2d5K85mw88KhbE)esRG5Y+`~>g0!Mh6$z38I*t~DkK6Gg6gQGF&mfx zCC-uo{{;gE2Ua(uFobjmK2C@Bg@K6zXT?qnLSSa%;DTbFF}X!$G5}-&VIUjm05yQp zmF@PyxyU$3DngAq=Cp$otpgtl5J5=R12K~(%|Hyv{F(%R0u7sjg|RQg!O9$K1{ua9 zDC5ISf(OC-H3^Mw9(a$P|I943CL@qePUOr1a<>w}-R{%k9SY~6BuA<2QA*yO89!X_N{8 zqLrO&F=H2w?CEhDDJ0cg|Jv^TJ5ALU^ZiWaDEP;InY;fB2m@exH9Es)7MgASfnHGg zzL6pB(xd+c`Ef`Y`s-_OS3^k&tY|aS`B%@lfs~;E1MM`ZBh~{LR>r`w4ZGLhPt7mG zn3?8@`*KYp@GQx4>~Pccw_-5^Q))Q8x}x;t;oZyhR0uRW@XQf7rD;6~nZ@)s&o#Kq z<3A;TDE|C4nEM0-pyU}aOJG~W1e)midOHdkdFpvP`PvDY$&?Thw};0voezRU|D!M(P%KRX7(!ya@LCONC=V&a;gfFa<)qJHnmCgwoz#kW`##R z9VANq%Ts#v7cV&lo$`YUMC+5OBcBPH>^jVvM{DDi8Djx}1MBuvVHR`XvQr)rC(;sabY>JQ{G=Jkd1;{@$i+`9DA^` zN@DB$%zy>JaN2{>OY=`RdhN^yuGLy4Ho3WdEv9J${Ma?mjYD(1T5~q~sZ#8qH%)(A%!1QlXEr!6^IcTavsIJS9TSjW-K@E*q|L6b%5;h_4!r`)52vq-WE zvYfIavS_j@lEC0*nf^!QS9l5;d)y8I1f-Hm`~*b~$W{e7pgp1gTwjy7X6nS)+rc#>X00Yo~Enh9&DWKr;O#C8L zMl>kc@=)QkjZ~;4enSP?vi6hM_Q$ap^>()UH~qMTWP85&?96z5c;0+GZ@nxDtTUkk zRruNgWKSuHeH77wRWq~vKr*291_85654KGq7eK7 z7z2~~d8r9Uxw4+3*Y@)eE0d!T2T)XC<3qNxBplHWN?u}$~7`p=hn}9UmbyH>IKgNz%*sj zgAJwpWt`gBy+#hfeFShs!2vo_1!7{!d_scIfcjvXPXr+rpEs+f&%!2CK>buvC*;gD z^5rwE`G{+aPoscDfs@2Za3O1}R_4g@CtFyaa;I1mSVMI|L|MP)Z9Jja=(2Q!o7CF_ z<6qH}9c%QQ)Cfl1&*0HpFg%(Btb2pEWVg5)oFteYm~9tT^V;Ysk6e)B-x-_&`~iz| z&Aof00|DuE0XA4TI=3(QrDm+W*OR5!9Wd_hslhOnX>scfFNyxakg03 zo36Q!=8yHwlydp3>lv@3tt?s%MHYMU>9FTfVuzku`RzME|9R??-}y=9B1HtC_jS|x9!kpVU2J~hy2G5&>M>V&A@DP$ zz4U~e%Y!&g@N>N2a1@d(4-fC$D6HKRZrZFG3bC%SLCM`*>ZSY^@HIYvR@0xh&L1w+W+bR-bJ39XcDK~-u9c{< zRx-QXzxK%yd{=vUta1J$bZNmHX<+0!r!GFyc{&He%gjpq5;6LIvXXJ<>XsDVJ1JiN8=7 zE;}*^_+f|ks46zy_U4YTv2ESw*_g|YX82Lt%{r>QP5ubL$jE@oI7^}M8Ra>ZQJ}!@L(O-*;L+m?Fi3Ke(#4K_k9xw|%69{~U<4Hr4`4jAIrIfu_65%0VU(YdQop zq2t9;WnN|2i)&o>X4lU_%4GApbj` zZ!;ewYVlu2i~=PP5Jjqx7Zg@1%O?~u?0N&f;9m+<-W2q?RJ~6q3xF;qOW=qcVP)&w{@77^;|w_ZrLz^4d%(}{2+r+%76=Qph>Xilp{ zw;qdTxx#!7`5!VXLA+bVjf55#Z@B(^Is>|s2NYjU7nRpKWovU?N~P4bK#L*8wZ3{)2jyeK z2WRS_=lS^0T1NA@lDc)FQia+&r4+gcxq>pkR|L6e0Y@=L1uOf0?K%{Fr3!zIMZQ1R zt2O=BmUV<%Gr-LehA}?>_cc<~sfCj3*z zIh_-{>s}Qo(oy^7_=na_w^ZA4Qz$l52J60=}TQupacx}HDPcvvZF|=j&w@MDDLXH(PT@+}oroXsFM(e`1Ne@r+Rbt?l z>XlE;2gOnZ#rqrMVd4$E*T*Fw`lNh?E)kv)wiAPboSphl6YHd}>BO%q=#`kX1$5o) zOAm|oY=#CRYZy;JcOYvaC^H+0){MtjQq$=SOaB7#ZIK)zd*UnA%D`okq=VnZg(%dl zaQ(r9Evnxf$x2RHb0B(6jFc^a7RT@1y4m6x7xCXl^GP$su$8)re7b^WqG!U9T4z)u z;df<%n-F}MF+KEm@XI1{wy(p*i+Pv25n_eAMKO{e;78VH@vGKyz63U=uWzj2_#rzd zf&qul|8YgmUnS^Ckf!M;d%7E~&{$ z9qgo`3D}y6o=Wca!O_fsA6qfy-d$wflZKI-ZRk=fBgI&9!@v*I)in2BkPQZlPykxH z{&!yDZ=PCF4vr!m6TCO!jFrE_hw8r*zJGI|*m5TZafroIGwoRqD|C+0X``Je=m`0|I=`(u>&yHN~};o+q{{!NDwLV0Hblb%Z`8B$m_A@Q1eQ| zb3k-4A7eUSxlbL1R&ELq1AFvl4`fNbL3x&<i=fS~-q?pDF*(91Ffot3On*$nG8`ex; zfNH@~SNRpEJ+=12xmFT&INHmVXV)--NC&m&lgQ?QVlU8=s`vIb*0I3JO~+A+G6LLj zS>S&1zm-#M5v|?ZvW~}rj-)4`LeEY7Go7quw}6ASb@{&tr&;{CH!_l5*9Ll3ld9cZyU(nP%gU$iio8}7 z1yjIc=A{r0Bw-XjX(V+b#;xX}slNKk(^z(vE>`%9$n^K?DNrq?w?_(j3Y)6PvJ!g* zM>o*TjqBPrY9vbMjH%?-FXCXFHFS7O1}~y2=4$z?fNXf_r?Fg}BdrQ-W_!KeCyL1U6GxhRGFi!U{Ew1m6H3;LAn9UF^~ z;4P{{fHfXlEt~jL-xHtO1_n(F^%jAqNyXA>ka__IZ34WUssIjct6Ge38b7#Qe$#Nk zbU+~B^1HOWzh!q4O&?UBqKu1#5?r^5Y3>6Zdz-)N>e0t-Sn_5RfYDFO z11C@U3Y1_8q_$V(3HKSB5Exm20~R?!P-@JaxYR`u!w})iz@(vrBmNadWqfXV9+4C| z7StL!i(L#do<@LncMKA<*m%0CB|DK8k~0>95-3S7OEhZ9KgSG*MBuoFdiz$-9G)G+ z5bGKJy-^MrUvRjStQ{tQD|?kHTJ*r<5DbR828%X>kiN~YW#SLDOjswzA~hHC$Y?9W zJJaFQw)edpK4co3(oF$CTE zEH^`1!Mf1m-af#GFyKFE05R~v2>n|)$Bc(l2`@HNu+vcm)%g4;*6uze27W@2BL_{^ z04te^q~5Te&A%A3?lFieZlwM*ZHS-{RmR0RkuOd3UdD+W-{vgIweYOikZp)MxN=6= z;ei9tC*@ZFx$k11(Q#qbM}YZSdA^oBSWA`{HU0@j3H2~LwiS)Dv#p{EUWk=u`e)3zTE~w;driPT8y2iS68k7 z$+-5tiO;1}+DEHD9p~&tF1*w*ozv^Dsj3YC_xEpKjtnc`z;TB{h_q?f@{>8op_8Kr z2gl5v`?AQ@L#MnIddrZJCRHZ#AZ>)6E+=97;Eyha%z;bp)TR6uzXt(K*}Xw*7RhQZ zUR&m2q2i6AlNUZPyrCNE)NTl1 z1P~P%h%&)^0Y;Qd5EL6NBTOAPY+)||u&ONC58E;gN+yLr*erIesq;AFr?jn6*HMDVOqOk0QcZ7{S^II*m1~7Y@CrnqiPtn3hNbRYOo>oxtKp z?`_8LQJc-iuec$b)NTZO#sNoj`u^bJV$}^ag7(9$T<8K$ht+|6?!9X6chZi+r%><;~eRcTt)mxew&Y?;u0HpVC~ z^r%{iOZ5I*tH!r3$Q;tE>PuokdPEpbU)K&INn=AR+^XKe{*~^{Rl~$~s8H=dYOvl@ z1YU8b+I+WuHWp_V?Woprsu? zycFrl*Q48}q}w0>aN4b~-M*H-`wh0czM$^{SE{|e74{#TkKu#>^nmvs`-O*o zRI)B;Xil#s?Mf7#%U3$0{ts0XIFyi82p@+q*Yh^^w|Tqtb3}=C#CpW}?SQ74KTCvT zG%5*PH=(HF#it?B+Q9YyvM1{Z|9vF6cyetk(E%Z;|5zcYSAW5QH&JtqDOdsC`m?Gc znCkj(XpCOGQhW#O-5$!o%cmRjgb7K*gapk+%!SMaAop9mtc2G? z=JpU6i}>}7<=T%heR`rC=mEY2qI7#cKbW7v4*7N;P~~Ffn-p>3c%|RZIw<*4D1!g>RbG^M8>NqjeV!>@j z-yTRpjvizTWZqpOCR~6*oeTsH9#ojE1in1sc!_!m@;E_QI3X^*nGe6%ZLQbeoGjQm z_1?r~G9LjeJgk3wM%zWou$F@W#P3S+bE&sU=d!~5sW>r9+{ z@8yK=L~1$GSG*EFi*{VD)Z=`qy11PBlh68_@^65>Zdmm9nfYG5K3r4nOwQ{PEWO~@ zmC-*7|sK41X0a#M{YHbDdxSasDzxDr`0W-Qcwl_r9>HjMMzLS{5fYd;hK?n?4^fXKbUjZ3W6uen4 zFkpXCDBh8;Ow5tzpU1JH`U_nB!`vKTV~^ zKH}9uiFfKG(Tm>xFh*N{!}!6wdH!nt5Q(cveuWUrL69TlZjia>p-$M?@DwH|m^ znOl~vG5bfBT(Zf|)?9yNTVv^ZajOgPNMP(VmDaf5I#c>@#jDnIcVljU%l)}`WaYlG zF(NZ&En>|Rfq$|RM&RR>e;Jtl`V_Xcy{%rgI=*B`8-f^}-S3J!(^Zejm}I*0A~>J6 zL`UFq)T3QH@{sbiBX;zn;fcE^kRei6Pwu-^FcQD5qsUPz*$<$D46Y?^Iv(;B7s zs{RGDw%>U@ldrHi8G&`?{}lJPN_Yr7mL=VCgV#3RT-8cr*+xpM(pT{Os)UbZwBFi| z);+{_GQKZr-OBE_hPCj%mE8{b0Z1HBAVnt{t8nekvx?oTZZLktRq?sk{cxrx5zJnF0M<7 zQh@qG4$?V=M$e%S|3#v)DguNo3bbb~0F$pL@e0*U$sAipvKh`jfJe=ojf9E{Wp0Rg z07aQkz&c~FJK8FsYAjdqKBod8tz{Jqb9r8zi@{8eAZ%q@u2lkzNztHW6imVA85A6f zv*V6DHP0m_=NLy@W$eA{A*%d7*NBN9c8;p3?Z;a$(~$dz^TUcU=5D9r`O}Y*9nrOM zd(&Y=I(TQLhA9$$BB4XxNXFnpUC9|2$JwemzbJuEd+>Ds#FL(|biRZWk{Can3^$XR zDaIxXuNbdVs5S~vvBIZ67-LA5+2M7CJEB-Rhnr8Ir&61cC~VS_!x?c_%2Af$7AHQ@ zDPj@J(h`v#lhBef^NyN=&!zD2T?1>DD-SOeycv9oEP2en_KWSM3b}u;#m<#>5*AO_ z8o@opiHg*EX$bK`7*>_ByI?%oe{v6V2X^4T1 zAVPZ|=?n(|kP&XguPr)1rT$hX<>{+rDti&>4AsB#oI71Di~P327jd)tMg+V!AqO8z zb71lHp<)c8+=iMWLG>en&>E0e1+XK*uxLQe^$Eib0VCGe5j4etQAh;Jj0WJ1hHNQ- zdF7!=84xD*D{>*QJ7ApeqGg4`I-u7Gf$D_fI=}+1MR582LT{l6M0h`8vTu320tik6 z1o!wqgVijeLFX{89GDPBkWc-L@2s-|l;@yJ^I3fZm9qR<=fHIxIXdzo{~YM(_zAQj zr4|rE7%(x6ptqr@8*_>0fh3oWXdKS@Ii`h4wjs;5K_@!W+6}r)_R(#|thIqUGb6ei z0$=m>JMo2u)`8I0!^G}E^M#kzL0I46EemmG1zAyr1pRmgmjV9g6iNq_c*gb*<3a?V zDmV>^n~IT#fC4C11Gu0qq35ivO-*6%Y}3!a^g78K9tmfG~$hAS+Qe z@+O)LTu<__zCo)X#fA#k`=hu>F{#uq1xi6RkJtaoqY2H4P}Ht&dLqKJfmN#yi&$Rg zZA2CQ_&rnaHO=X~>y$$*DZ@kzWzSl+qE>PVC7^#};xnS+ z7C*yALKwitP&`IMm|AE_9l}UM>n)=SC&~QCCK(AU#Y$S~sLAOea%8AB+mWTP0mogl zu+rtyG!f^adz}KcYErUjX(0?JkRB1y^(^-$DHPc}dX+GeuspV;gegjka@Db4zqAl+ z!on~DCZdMkpvmH4V8R29H|J6*DdL_$G>)@?rw%BLJ5EEgj;DiMA{!wWlaRPpQ&p3& z2IGB_ir6k$15-jVVwMbzrlGM(3v&$HGWW49AGj6x&{s`_Vohx1cEV_`HP-5x;r|;gtvEG!8{;J7U&2z(H<@fXC^K& z!~{S#V~mevBk`;E7&_GP|G>(Urf0U6gnQbN%oD1~FyvMTcF$tM9g_$OH+Uv-_cOfH zQeaIa8$_23O5Ll7pL#SyK7O}X##P>V&J$$vn7?!c?*fL<-`SBSVw@l<2`~tw85nk2 zLLS&u4z#)>xGmwsGepqH;Xg*An-F^SLj(}VxH^l*8ACg#nc#49T3?}xn^!5uxgImb z%gh(0H4~V1XR_Bf6Eq2E^^Sk;M`YAyrf|$O#fQ94bQtD~ua?y9Wm~_04et(hL;-=lu)LpKa9uICa=bPZW@b zCN2K_tLsbM;3ez(j1+fE0_nLdO{hr-SHWzNlcZT%WsNC4Y_=g+Nkv0Pd^O2xJep#m z#BoCQ#rdHGO8MMwV=kI=V=npo7dHTm$4-nr^XcT!X}eDFH2O7=YZ#+H=`T^$I6S3( zcTTf>E{-uipxWni+tTg>OFF!2URI`B@+dxRJRsW?T$W}hrY5wR&IJPGxZ%bUFZfk3$z$#1vLqig#YS3mm*`x`K^-w9{L2DruG@($h%QQD6Y*&Ceh(Vr!L?{4bGzpIM&np7y z0b~h;=?CGF-EjbE!le_Lcy=4;XA^2~8SV602yBeUyHc*1!jHhTy$6s7l5t_P2iiP+ zrT-d3_@U@S8({#EapfXyIbwte!t;7}eJA&uzqrI+8RmZISRL;%?X2Lb{xqNkA~Q%~ z75rPzY@VB#wF>H2AJejft?fMye0{ibv|2;nV0iSyS@)ST-BWsTT-I+n8I^d$ufgp& z!kBtR9>L!~FovFZT??43aoTeEK7@_^w}m92`(DVnlYaTW+S&HpFoV$3O?2<+EIuAA zarfOS?$NB5%)K@Gxi%&ow|-WGIca?n*vxoIoW~{XaJ*ye;LO=#U%XftVO*JM9>0nA z(lxf`gzS{}asBAeh=s)TCgU)Z^RcwEc$fcaCvth!E&i6a(*;Zm?BL=uY@+{s3x5@Z z5_Wlfw-;~s<#)HE9mY!S?u^< zkHQZJmR*Qip8+CPTJ5r=vo}j5OHQENkMCc$$20G~rJUT?N(pPUA2&f0u%>w1E?yQo zeKmNQj6ED)7AVxJ1C4$ZX^ON4!)8fj5j&1JdgH`|{?bJgI1Mf*kgY8d==7H~Kp%2^fEGwe-z=_uu zZ#}tH)%M$uO}1@}^YqzKNPa(WJG0$Z0!C_>rfoQTA36l@2i;eojh^=p6tl46Li!^_!#^`naR_n_&&% zizED93KgXmZB#=wTp(2HVHI;#FA5mnznJgqvDW8>BC+% zM&t_dc$&$~SY>_YAoMVlJYs7ZH1%eJgoWGI0-#xgOEr1GyGb@C(l8F~YTc}pejsch z>!yT=w%#MtgFXg(M{;=DPRr_dWxeN*^g+hkKZgm_xd&~Cs(7ZU#04s@^&XiN&xc!X zMz$m0KwIe7*M_e9W+OMQXLl(CB%=A`XOs`m^XDcUO<`&G*@4p0p)UnCC z8UWpP75R^i)7W$3UGFC4qg5c+bIDC4zWh7GW6dP#h#-5^_P6oYOfhN?W(=RN%~P=J z9Cav%esa(zCVvn|uMjatNfi;Dxb5D;n9sWI;$7kX^QX>}eb_MF6JCfvY8lEP%`>pT73ZlSVP}ZJD9nIh0}Y0 zUFr-rG&>XnV(BqxmqbXA0qV_OkVBXDt`5lxeF#Ei-h~c9>;uCubQ=}VfC>W*dXCVx zwsh}4J**LEVFe;%W$%6nu!4gDJAcIR={V`fgm}Nu$`jBm%9`yXSZ7B=b<~qNDkOML zX*3->#RCMu`48w@u2Pm6*J>eg+pWZ+P4{sf`?xp*(7kj$!{stO{ zTX$Kz&fqvr@o~ytuh)fdbCF3|Cs0zz?D1lahTG~t5vI9_td`&(1X<_9X=Wr6t z*{x#bT~PQUMy^EE%^D{2$IgrkE^~g$j_zryp_;u-#Syfk;dWAxlSj@!qSJ&VCf0pN zCyNV#-oJR2cf}YYRPKb>DLZi3KsZSUg2hZPNJwsAQTOU*u;Ie@z_`6v2Q{bU)I}dj z>a0lthH?%aIDU@FOE{R>!9W-%=)-Zm(}PQ5IE$`AbCn@wUt6F5u&5)z7f=1yiVWBM zl*crOhnR=&n<~~3i8eSP1vZNqNs~~cVRLP=Myh`S!D!PIbxgw~OBPIK3t&T+X834R6_c05 zWJ^{y9OEHkl$ud=(JOTrWWj7`)<Vjnx>A{z7ly3dJ(1G@ z*SU+1(;9}3S+UmNu3EPIGKn%a%z@!cB}8X_U7HhiIxq^vBNXN(;@*m5m=?E~Vbmg6 z@Meu!rjUlP^{=02Vsy43z8b9SGD}Ly62UaGP^wyS>8?yo{U&vF>ndcrAQc*+@RFQt zi{4$s>mf~Ny#;oS-j=BdQKGNF<@hxK{CTr~YZ53JJ5I8JJQgcfs;s;aBL3`2E7m7* z`a;g#Ab;0Bf&HL(*Tqry45LFXi)F<~vH`9X%YNuY(OIS)xCc~MEOKND_-4;U0cvsX zDXR}4HpRgvY0-ob9w7DAih)y+P*F0}MRGXG1OuEQVKQk^7_JF$b82Wf6-W=jO@6;! zT?`UEGCw<NGoK}AaB2&d_^ZTcKRG;hL) z#9tPNNHEO3K-RqfD7|6qR`yP+?})q$aLt7p)l0#uc*pBp1tDYMA}Bi_Y6%7%22i{Q zz{0lGt&Y=S!6UNq&9<-rGK3XIz7jO=%LFJ#N@o6s+eGx!M5;7UYTYd|uCoVGAJd)? z5XEz#4HK#PC28hS=EviUqG-H}V5Xi{Bek((w5i$`8&bVDIBx!vyHPFZL`O^HYg9}Q zj83kC@w7+?)`@j;r6@O`Nb03#Rn>)b)qnYudm1~F!#y{{weZCP*h!#qrIGm^NCeG- z*Bi%b*G_>%9*4p~ENHRH{o)6N{_xI=^rny$#XQjg-w<2ymISLV+*f9ZORIjrQNLvi zlkBJTC!{@WYFi?l%7VL+t@8VL!Z$Nv2&t@rpOh@NrpssuuShkpr1fJ7fk* zeY)SMFn6W9j041?kWPCMnAF}NpfPvk8cOwQNHi=}bKg;{>qM>oxw)j8+-M@etk$1O zeZV0$lH|dP*7*sLrs~krlwVdY^hEwF(*u8a(!|a2*cJ8zFyt}FbtQC~AO5jA4uF=o zmgjV3m0jg)X+>cKF@^x2>uh4C+1@#>*;A*TYcGqky1_ zd3TemrEou2gR!2@Qt-F)HXohKeR*%|cr3q}y77!vWoNLIv&^-*!E!8i+ET8p)N?&T2%Ajn-jz8C z7dT&YkLl_-@xED5+6$YmBGf1J{UdH%rZNu*XO!b_w7YIwZd&ios65bP%GF6oyqmm> zH2XNjoO#kz{ggSF$5itbylTh%aXua^5A3P%sQzQrn^OprakBYJ*5h++uFbH0uHp54 zm0G7vI9wZ5#KzHkZ?k+ANk!gpM8WVVWJFOSq*l;!X)OdgP6t7IIaBOG-{`Sw-jaSa- z=@Im>nC|ZneRU$*4#r}zw5zvR+okGQzlMJ8E^CkE67-l4Plv;nn8E4fe6#A2Rc-l2 zBXo2=3k55!1WPfFx!S4qFq?YuNYnrdN~w$+ax`cnKsH4py`5G(RSDqwTYEqKAgL}t zK4wm2w5vFj81g?xXL<;@bRptgvsRXdAW4PMj{CzpOAAgNI0>flZ~FzLch3uf)?O=7 zLt%3Ty1iBM2>zPwXsa)PoiGSsSq!m(K14i3++Qlvdbb2J(+%$PX~h1T#YO%SC%WA=K;mcTReo*?`s&?QVgUTiClx*x?pr1o0j{1iW*geEZww4B)tGJvtDzkm z7cCbxHMvO@W1DOJS-iZyv@bDsKbf|WxV6*O7p?Yh)tAu^2t(~&+d6=Z6ODMz{av!B z2(*QmCtR(e8;pN6$8l6aJZ|Umn@a>#@w6ZkhGZvQL^0Z{=NITFf5<4D7B6F6+*aYWM&qEz2^7bGd2?mm%Uko3;V}I*@K>mApD0Wjj3V;Lx z%7Xn5Y`ZV-|6to{J~oTT*sU{iHYe8!FVm@vC}AQDvM@T+k})Xbsi5R%zXz1midrtt zH$xd6oy_%Z^z#-ddN|PM@`DlB+GRJ&iY-txGf1uiYw+{8#z}1BY-yU5SL$WAnoQ=) z#DCAJxXxTS56pcrhbQKE<-U0O&YW0(`26XqYs@C<8UeJ}-CW+fS3b%@rJifjJL@GY=S@;leH}@<-f$ggk zq#8A=F@w%BaVmnQU|U3WN^j8mai=rwc&$1`J_BenJxoq;;WMUTv&+!7(W*}v)GHM$ z$>B_Zfy5rgHq{wRqS!BQV^-N$(T$(BmXuy%=S~k7(N-WU?#$;kxC&#MEvLiNiZ8%l zewK*OizBO-m8S+1BH#5C65VqLDT5yUO@iwgK#NTMij+X5bxuyDZGc3q*d?kQiUiCH zObkHI&Z__qghAn>UN4~Z0E$;?hoUglHj1nJgSix0r01W?C##g!0EwlTREA^*Y3YLJ z1q(C*g@OPwj~570q!-`%!aR^C`k+(>t-*Zqnukw_8r3Eb^MEA0Pwf>Ug!+sY{TZzk zHc}(R0l$G>*IbHi2*V4!LzDyTxMc(!zz-OKT0n@rq-A?2Mu9HH;0g0^GH}F1i1=6Y z^q;^ctdP=0K-T3vJ<8P!Y%s2n%tn1UaDhzmNho2e8`g*dkBO|pcM*x5#?3ru8Gj$T zP~St2VrTkY!31O_1|-Q|{!$;M1xF^S-9N-DcStsgp9=ZKK$HOQ@)npx7~rmq1`mK{ zlk5iVQdx$QRAC{Bv|Anx$r}ZdODv(%fyRw`Lk6d{Z&cl7po_C9o6whiBO?Z)sJElJ z%!1S&CgP~`zh6<2Hl_crXix)?kE!ugSSf%PYbfu<6;a%(4nolZ9 zh`<;uHv@%S0%|eN9Bg>`IzLQ=lX(49^{O=TP7+ z5hkf?tO|ip^yL@#E6Q7F0&4cq+W5PkgeYV=3|UT&py$TlrmJ60UN|b zK9$uEyJ#C6L!T4%)duqZwv?+JZg1*J4)d>Mw}X&AnpQmzSQweLQE%W-A^;@)rl`RdFnCdrWT0daPn{gvgw%EoMqkcICSOct1eLw9+_Cl%F>P)V|Myt8f+wvN|O6Sekw>tsg z7PoSA$o2b6f4a-ZaPaU$5OA`vcDz#saJs$uOWW%~`#rGNSvvUB^F5k^VdR(9j@9+t z(PK9p8}qEAg|GKg=WX(A^m4hH`}X~P!YSB!G}2iz-zg7M>%}0@05JO=(B7!fCoqWZ zdhZv^5#;@>{7U_yG0Elj{=sT?yt$23=8dv`(iiAe{#M^fk!Q?37j(WM#MI;c*|T02 zw0}&mE_PDgy4jKTP4g}L<~4cy*C1VesIv=x^cBDT6V}$s`!*$R&vrlEpLOgAl+b7K zzZ==xe~f|B^KZ9(0@8nban=KgJ)cSHTnyR?@@x^Xfw;EuU1y)(yZ+iM=z*=l6BL}# z-M-jonsL=m0k*z2fXIEXqZCs(C<);#3JDXLvfj|9bzF1n$0;0E~CZYz3Kr#2I`m3z9 zH!!R(T#Ei6?8H!nBo~Eg$)--}cysEc{^5XZgd_-mB%4IRlKFpJonvz*VcV@^+qP}n zwl%SB-{Hiz&53Q>ww;OXARabXa|A6lET5FxhDpdiCqeMw3HDsArx!%4w zTT(XmWBa2$AA44pt6n&`UWGiJC9%YosC>F`9X&Avgan>eLG?-%&TKe8Si1R;Z#^z2 z(40KFv3Y+0aBXc;nx}GF{duS#Vt|jaV@ik-BD|4?tElsR*#pWJI?WwFWw50JsER#i z|AdzDBgW#_piN9LWD9&ryy@rN3QB#Ox^U|XFz5DQESi@cmSM#Dy7joIhTh2jc_Fm% zsc3#UU!NjG7>dI!lRiki5ghF~%@X{!#9zGq;@SoGIzvsM_(L5|rdsLg(-Za2xq`{VW&lem+q;{9MaSng9+tHbFTBJ|;&X zXR^sJMt{#fRp3mq4;dVsD7yCAnZ_TsBdzwaJIm{(+nikQ>9p~-v+ISRw!7Q&dvLZU zYz{q9JH9w~Z}IDKwx(>lcUF^r!~XX_yBjW&u?!Xns1G@9t`-t24Y~jU7LcRmVdS@N2w?=VWA%QDDda8I_?bo#_O#dOF&lLA=&W-=ehyU)O z|4Zs*)8^@llG=(3ef4xBAnWi!AFZT4udrO&R_*Vt1b>2M9wiz5B7{g_+Y03{j}sZr zHSBA#C0#cwjn|=ygbFhTH}~$b{4Y;GE8OT zA%E)Y^9Kl26on99ln~mtraMcK1zL$*M>2xRw(*r{nS1>}st_;~yRl7JM^cz`6}B_@ zH~8`JK>`Q9Et^O;KvcE z{}RO%f7Oi)q~DXsRPD*Pk`D78# z4B?m0@>(UK3|MLh3bEEqb%$G)JzX)iPo@4z%x_2M)8Kz3Ymmay5I+?0b8`_wXSMrQ zOiKhMhUxL_5v_swpuj`1;uLWDVH|FXsLd$n5S^vSEi`L47bu88ICqwCQ%lN0;}Fx% z*dno^D4nLjB2#5b$83G(U%}C6ikrvoF;29SQ5htjjuTOC*+h&h&Q;^hi0q_M<0*A) zx=0T4L|a!ffZJ)`#59#xLl{CQ3ePlCYYwXf*1!fiZH)PdBPbweV+=+TRDBR2JGlS40{yK!zdn1tIX!PtHm4!JR z?%Y@;MoN_~EkhaKDpg-9CnUjOX~93???~mRkrYatfC#?CFe4qR%&B561xO$yQZFsa z7Tvf)_QzCYfI`vOq7M|%AoV;|UZid+;^d%RxBxM$Hcrvb*nDs&BXMW$saOrTlP@fa z;RRbcx-~^dD^R>sY+X9R0T{v%(FQ0v z;#e6wfSEa)$u7vdHcJv{X*=39RtgQ_?`A!aiCdN=NLjCZGw1puqb#o@AgVHUG?U4#%J|8#9W$CQxXFC?skQ){SwIGqxmBR&bzXM4@&F7#ijB!)LaJH%q?w zxgaWoCCs2rW}f}Jlxfj-lDp^yH@Vz$%tSo_fR=D|I!FdKtk!UV`kC=4kyIs(Hdg7_FidLz8t7OXTKvIHFqDEj9WZrj1_}@} zESu_qF})H&;sg!#1$ubj zjztv)VX^=Y-FnlJIwNk;DR`U~*i!-vg#FJ{a$qR>+JwXk46dd4RR&0UX1aV=YaD4Q#=;(kTbfZJP5f$4PG2|%4pF+8 z=)?hZ;a+b?DhXR$$DE|v5jC}4aauV&u0Xo35M~bwhDkIPAV+IuPO+syWEB!LyD>c@ z5#-M&4XeevmFk$bx&Lj&ELxNfp1ahHerG;LjCq{`y;rGhVbPEugU;CqkiOcdI7D`{ z;Nyw=B+l8vCEoQ2j26<#XCuO)!k2<9R`%+qnFV42BF>k~SFS{O+srO8PVb?dRj9|$ z88|KH0_zn@i37&@vk?nQBRk(qA6hFlU!i$S%9o%>_G3@}T0NP9C(ho=qu#21Jnj&g zDVWeGq;=d(gR#%P_;05laHwV$^VcIaQn*02j4&)tb~&%WAN{RL2+x*XN%8UWJ}08R zanKiDQ*$EM!K#@cTPKry!xHUUr`uw*f2E~zTf; z2>qvfmiy(1Hm=4oM9|j{mEpN|TScwz`n_)=jKJV)N@&nW-t1R3K=&_}r_x{T4!7?j zT-{W-%U8qg?bkTJX1QStAIa%%$I_AmV};-2Zu>{G|3pJeBm2ujz)8v^p#LIR-Qmmc z6ZtwkeLpWjkUd_1q4sBGfosjcCpKjx0~PkNerwY z!_qfcZNpuS%(K-ZU@qywJLojcHqxHTx~@yW#9H}l^QL%KK)}wRAHw1~r0ilP+vJ*e zhxyQ9kza53*>tvMk`S-!ef@4Nk8tv%^@&hXaEZ~M z#g+2=u{mg+AG@qgp7FIu+vBRwYy5pED6XaY6?DVnTK*Ima1lm3ilJAR#&IG@Qa$}$ zW%s-#dtLN_c^jNt5L%?j|8ufjn|AfJ;(B{FS(ESoz*+0-JNwSq`Q?SkE119fe5IB9 zmU0nebMEl{5Ic}5%RBF(lT!+)cD;VLk)3(Q^ga7%+8cX)@v>j~zItE~s5{?0sAVMR zV5zf91Na{R>SI9%UA`Z$3sWWqvrp>c0*Sbhws8nU-;Ie`3PkbT3V)V@_B-=<{hgh?j-n6O zCdkErJ*2jGdW5);)t7wHSnre7QdvR1mAGiUQYA|m!~>xmya>I|$z@CB5Z(H9B7fm~ zp$`-R%EA`d)mGJc|KLZmRdt0Ji_uR@9)}L(Y7KSL9R-dWff*Dl%dKYM_`f3<=5&0<{O%Y3Yj!t)$}|FdqGl7>#>520&07JaivlLI42Cc-;oN zm-m>w&FDMGjrp$6SV69D>#}>$`7!CvUF@FS0EipEVZS|cX4%bHGIZZNz7OGY1TOvl zCQZ{a@>0aG(ACxKXndKrn_Qgly|M3H&HHD1Pu?!K?BXyu^p*)}x>_oEo?f+olxV^O zMt^N_&bhqp#73GR`fK-Ge4|?ByyZERyE|0nayZ7ho79|FT=BLJ)mHnTtY#Vf94xID zG=viFQ?!3g-h8t=oz$nD4U}wyHtvZd-t|are@?5|Z5V;6R!~eeG75DEr~<%0B}%4ZAsVHcxr{ zqto2GTQ}c5FJIR=TiU*|S9)-=eA?}n`;no5d37_a((xgtswFb$Cxda+)D1qP+S=hw zDzPykDkSnRks--2@_PC`%wnk^MU*aOBON_n6!3p@{s%uQ3{JiHA*OcT+Qwga;L8+} zpxwh198y=hBTO6+;{IAyP@>v>Ln4%zxfqe9#S{1uFdY;UW4U{1WRk6gbUZ}XK(7se zjMnYmKMEJhoQ#N8bUF2KVW441Y-H}c&={@V9L+bh1Cx{lxg#M;Q7#0s$~;UWnarY+ zAv?ZZFxDd^JbdBO-xzN+ClR4XFwiGxCpk>m=8&OIkqBa^0SNU}tW=N!X+~suAu`?W zeJJ3XadT!Q8KmNT&Lyd3$iiHyJ^Mg_NIs;RtMU;)io8mIB^@4GGIy0vFjuwu<0z1j zFUo}T1mB;tQQ|9?s33t&9?0m}!sJ3~_I24v9Ajdk@%UDCDK(#}OlEO^W%isu={N^M zTOyl#@DgB`6!VOR>F)TK$PiIK2teEciH;KHY^8b-r*LqCsAM-IP#L7yCLE#wa#lzv zSWOW+k}bIUv1#O6$9%{*0`@cIFao2Xczhm+L+Dh>2m**CFZ@v^gyF6zCL_A*cpJ7- ze7G4(9->J3nnh+kFHYrodB+s6k$cIiPiPT@3p|8eCd?|5*xPG`fg{5^oE?d=9G>5j zGf!~DFMr!I`I(I!;CwH%6FE@<&UvvFhteDw$sbbJL}>Hj{c6{%PWvE%b7jokSQBD- z_7cGnN)*_UA3VuSqhp{-PQZssj~!B|g9k?K9?*dv6K=PcDPimseiUIZ*jTX^;}X9q ztGj-uNK#8u2ER-m66Mb9fgax=eZ-<5MeL``fMCST)pd2I#Z#ANUJQo;PEjT4yK+Bd z@*X^VlRaLL=>%pvKaBFRGGrha=b&lYx6(z_fciI>=;XB0>nsbxWiT2w8sK<$t>x-( z^(7hw1}z7uRRa^uQp)ebL6PRwrl0oFcq8CJM`+T$5Zg9kO)FgD8m^tnvW%;K;|OFN zRh#cv9cp7Ls@-X%u4;J!I8)$$o97e}ULiC_W&p_wr)L>!8%obu3X2TjrHN{mFSYT3 zA5{>|?&%YG+|h;8)orn=Z?c(A!sXLNh%>AyniHXnL8yW2d#F|zCMr1jv2&#icoZzl zq*TCZRr4W~(V2~?850|k>y5C@P5LTDnZzp4{$5&u%MNZ$)9jDHfO(w%!T?{8Y(N zlJe1mK5Q6Nm-xgL5F9KSg&=Qa*M%B68Hm$hD8!z=j1wM#lbj)+BmX{=L1(+rs*`0W z6XA$fj?Iz+3yvm2zn;|jyFo~ccB2c8(u9a%z>y{_?Av5{ib~;lM7XZL5Vdk|i%VfW z{~yOa*w8$~38M-^_LBLezh%;dK08asgi=F!9hQpV5f7gaK*I7R3+;JIPX?vJ{XK42E$#rEP2-Avnm;G*ENIyYM9sjtu`jieLMn|0bXdCJ<%hG- z@bIoujxcBsh>`i1O;uOzH(Fa*VLF%v&IphqqDMkV1}YZyrm59*B2^+mDmaj)$*p=9 zdN)&ldk}Z>{L5rN?IV8BfNDrZ$< z1t7RX4cGnB62D*YXW z^O$^d1>X$BO!J}B0%N=T5c&BtRA(1}7dLYauw>+0sp~Os_84Cv8U1|~_ga3qF}-_w z*}>*$Dk`?s?FgRqw;wYg-@ zv*m9E;*c!9=p;_-^Ua#q2W#(-{gmTgJ*GW(yY!FaaZP3XLad@kBs`TZFi^b(fWQvCB!{p`?o*D$Ea@A`3_*g0e1 zU*!#W>497|i{<W%K^(%3B&uCCv17ws4Y z>msVPP6eBxd-q48ebS-?nlyQqTv**|xzv01D1C-&4lHLeDt%ij%amuQZBu4}CRDv# zTb#?X`{mGA8KWi0u?Altm6IuA2uU|ch}rr@;WSL^JieIczRa&j`E4}W@@g#s5-_ga zb4PZteKDHK4<<`PcDl%lux!7@q;H#KMS=?h`Uv$+x;d`=9B$RQ0DAV65EsUWkr8 z+uetuz0V<3gx`1^*P8{}?fxz>Wvhq;-1jmEZfWbH|9XF{c(OulxNt#y}p-rX%9rLsLVc0NB!^mg3bK36;F`+rTHRW%bX za*nZU*5v%EyDZVXt9p{RA59xf!#Scg5&Xm`zj59Yqg*^^lg&D_%`9>`%Wx&&kD4ii zJxAG)PFsXM3;j=|l(8Uffpc;4?D!Gp-TfWGoBd1H8(&}2$BK}C4!-H)M_WzmsQ16+ zjIlY* z_?vIs?#8@i`=pZ#6B;Bo!`Bn(fY&A^8J57r8CzK*IaC=KJJHf6`2u1q=zUgjMDU4P zxzZ+ISX4{VMV7Cv)=mvHCRd2rF29#;j~)Jhw;NqAA4ra6RIzVReE@&X*T0%hSYf3i zFk!e;ss$}6Xo{2yLzZIsxq30VqT}My!eSD|VUol`^DuPkV(ACD;>y5FC~=a0?Ev{5 zqo^@ot=w!lav^*bHEI+%>O*S{zEW#zcQ%YwvSH+ul<|0sWHfP&1`}r{0^CUsw+A^f zrewKFG(IMe1+6Sr27pz+5+6Y}%&=-=CVI+YLK|pltE|!VkmB#e^+Xgz@)5h{W^GSY z8g>lXITSuB@yJDK@_%fZP_+n^6ejShrqW`vP7?Y46EcWdFj8jlj1SOp1lkyax;6_E z6%}?g!%;B_h6Cyc_8}S)5^?g|f7jV=oq#xrG&ZNwoF#D!1H!jP*+|>IHM)u$;J*w* zP(BjTxB*le8sQwhQV*>#**!@ZzYcsujPl%___!+(Yf8t8dqz*Z14%ucK_FuvjCU1e zc6)`9#`)ikvZ9W`oB^>!;a#|$6DKO~PMu8Q*xU&a555f5vul1ufs$00GgeUI>}@0} z_6cQ=tnLgE^&sv+hpxXHVR?li0+F8`kBrj#k^rM_6qxBS;?AYR8Io=)+oIK!ooRWO z7#$rEj+&gS+ZY1cj+yk%9qY!Fv#DJAmm(Gnx_^(>8XBu^G4EZk#_e0Sh+`u~o6bC< z&{IeVk!Y!MoB{=hM^?7{@nV4xJW^j1rE)V|;1wg#_wW^AXJA+h;T$lZwPdM(F0Frm zr~qU*l`y8H$B+EcEeIS_b+f%(oI84wSqZr?XQsyi=oY|^soL4#|6cYcy8t_4%uHus za!GS@DOUxM2TV1)eC*FPf}I-2n%=vWBE@!s41qubb1Pe(B9t{cAnw6p3zJEi2hN}Y zBh^x~1&C+#eF4$21d8*h!u8PrVc_-|19&|?L868!>clK$fVANILLutN77vVoQq%iX zak$J*D!`@QyuvMoz)%~cEGB>(;E2#qiGv|b z6QC=WGGGEcff}&VGPF75$ZOmz(3|maYTR$HJwwM<`j?D5Z`c?rlrPpQ^ABQB0Fis)J<=hPvVrU)N0o>o~CQe;e290+iVx5xY{EAQ^^9dxp$QJWi;ei}L z+XO8rjr8QB2|q2-sO3#%jnJ4RkrU{Hl#94=FxHK+*fWaMNof1Z*YUu`+=-)grj$#t zZ#7(wFxFYH=s6{u#!~yr;p4c>*?U?b*HPTXci}eeyMPdG^Ql0Gty*%f0sGXd%3(`A zthQmi)ml(czfCr27jb}XoY$X)bX23+8Cv|*byP#x`8EZzSCWlmvh3oD+1s^}M%^v7 z4mY6Z;m)RD!q;TNwM=l2;m`u+Su7y8%B~#qY7D_GaJT9w_YLeqeOf}RT{s%sXDAY_ zP(IRqeF>(C&`610uLk!&+LvBG4Ec!dl^>2uL#Zbt;s7$awU-Yr1OJ3x6z_H06zj*Vdlf)TfiyNC zuL8sKhH>IAqB^>p>=;P>Vp_T)%@CkGeTd+LuSZ!^cf?gGtR5J%2bc#c=QoeQMry-1 z1Ic@YmNODv zq({jyQS?Z0KxvWy;_ZMMVlWd^{1d9Slzs`dI5RXjn;b-$X6>bc#={HQhDGCMgT@+v zx_~f%kChquL6mX^F_ONH99z{jhll;50#OZ`wH)Cqoc2aB6eZGM`nv_QdZ}@kS&~oJ zf+4id+bVS8K%7BO!W)fh@nw@hy4U^KDo38fBbAp-3k8&DJZGZvp_T2(#1cdzs8 zH}{v`PxQB7I%j-+%X}iUgUfHkYV7x8Z0FO{Bke4Hj2j$F8`e)fhwQ{GB_& zZXb`z*S1O73w2_x?cqPg&P)dz1HG zsXlF^V1eMrt`o}1mMer8!dFD6=cnAje#$)W=dJH725LNQ zz~lVnBKhgF|H_Bl?w6=j2rT6yM}jH3MuT%!Z8Y$cu0m`A0#s zRs&~|zfBc4ou=r6R##L3eWR(b=CY16cT-8Ko_Te@&E2+++4%5^_d?|0rM{+Nj8o3O zPe9{kT~21HP+k{xtOuJ>6w*?1W*;a^Kk`Hm<;|wYa-O99=EK);TvbNZdMvOdKrRzX ze)uTaxQ_&k^`m4eJr@&KaV!!oTcfxfxNibhAU1UDYO`~dtdPm$&C7uITMs=6l^4p# zMc+g}f5yS`xEMkPeXxN<%t!>Ga(oUw!cZ$$ZsY*vyNNQ4Tz%M(1%=r26CNC}_HQ6e z$cHibO>V-_5^VXTK*8n^>>-j1NbW*SN{Zwxp)pX0_K9I6_IGfkLywZ|GGsXb$1TMH zHK%U^@Wa-Napgu9e_4L&XhffxXYp`{1T#rwB` z=h;lY#l#g^WWVfKZF;`hd4Ws{cpQz@x@6AW2_pP7kcN$~v!Z|b5Zyfj_UD2LFFQ{B z03W`i!_Ayq>Mz08KRJq{Kb|I*way`A2JXJ@tHh%pKCS4RlLVQ_27YFXUklWuMWYD0 zYj@wxChU?99~MtN7jYJ$Q35^9H8-1X-IOi!y9RsyjyKyrO^uvPEQQDL@75vphsDG_D1 zSc*A!wg?m{i8NC13Mo-)w$K`(#WNXK^bQF9=$8D1S|7Nff9?RLEGQV-KfDbT5PS@Y z8frKQ{^!5Ut`c0D(mpgUz|q#t!ph!-!Pv~mu0+Ge7Ht*1r;+t}rrG1FllP)E7;+_` zf34FH)e*$ilP3W9fhtmJ=}BPZqTa$HbzK{j9Fd?<97!b@$PEmw5{O1dm%uNaiUwRI zUmDy=R0dZ{?cY|2$P!Fua$>2q&-FEX+oNJijVs@&|7rFO-*xN@U`n^amP90%(tJ9n z-Lmv+xdN&kgEVBrHx(yJC!uMXQ2JuM*xVFsdd@bxWy+tvKqq6Mtwh4End>I4Uid`} zHDWA2c=FPPTrQiFl5H|;Xa5Q?^ z9d^ImCN|3uO3X_+01d+`8d<(Vq_zUvS8esn>#rpb{IlHFr6&DWH8ymlX(To)yxXFZ zepG}F8$WWK4m6|V$j4Mw4l8D5Dgk?9&4`3zt5r#%yI3>bBF)ki6d3vmb8n5=Ww`xF z0fmG<4C$Xsl2;(p{fHh%xIo#Yet7Oj2bgjMe zyr6Baxb(Ve9?jm_0-oNUVkxoQu9Tz&JHkq0N#|6O#blBRL$Y7pO-Q z>{u{N*jhLez;%F>20+_4MI?q{q`C_CFy$16VWbA>O(CMZOofI{8uSgdz4Iq?GLm$9 z<3v`VRwgQ5K6fQuKX*=I`YNLG?LL5^xsg@az`s`eOAgbNluvRegPf2Jk9G_yLwf_) zCXM-(M8T3V**eK>Dtf&Ka@vrO5}&++@vD#fNCUzWApRsw7$53&8iFJsLOlZlUMD+~ zuPY$N3hb^*q^tFN)81LcN|Q|KsPU0a$_Ff1YU{{+1_USl%u5NmxOy)1%w@7QY+-fr zF@OrR5ezK^r)5IS>IMu#Fj;7TiW9S6k*sDBnLMr65^TTYo?lAF2a^i|W0GWlAyx}w zB_U)J&?k|Tm-sLBLm~xNpo#--DQ++Kh~NvtFD%{_FSd6Uo?@^4SWk=Wnd#k!{3pQI zHJx|qJt^P#4#i`DcG8HPib{p(mkf?f#cwG=d5pc*i7{jwus2Q^c6%U`YAA`JekOtf zJr>S0;sz3E>BLDMkSUaXdmgAN`0&o^S1(9<0EKY?sx$#v_F0kmDO`irNQ8el=%i-` zY6%MV8i_5FU8$ve>wv%?V6=k6%Dx6Rwo*4pfbJwU~qpc)G&}u{3oi+;ct_ z0K=xw0JsX)Q=uv(=)}c1g>*%SFAa?lW`1bY@ol5S4isS3d}pnv|`Er zxLe>m6qHsx&_Ezs09sI+5R>2PTBj!50rtruerXyDLgfdRg2|U$nh=N_BV>i)8VXq{9mJNcDY)!X4O0%q>OW6K)iQpoEH?~q$>`uJ=ScS(QAm2H|k=Ru*j4k z981D}l8_G8H`N##2jt&fiMw{2^K50vEGy85CuaQm^%&DOD3+k}(95ZM?e_HR%rtf? z3);a_mafdZ0ulZ%JI`nf_lR}wNDoVnZjUxud&jG9P*BvgE({7?k=-w+n+3yl0OO4P zYagfM_h)N|fPYcT)ltm*_gd}y_Q56Iwq@Ek2G8B#@z(QA z)tv)pF8AYkMe5of>Q~fDkFNXG`h7}CTI@Hy)90Fxq948YxrS9St*dbQ{bcj;zm&$! zCTwn}OUcXH^a-WU{%p0l8_Sv?-!uWWVfX!>SDIr)6ZitZ02Mcb!R7` z>!eEW4f3OPHg0>LKS@X5>F{xe`}Dbrdh<23jqYQXG)rLZejw(J^+ur8Wz^yqp}I%G zkqAJ4J4Z3oPx2SfZJCurk1F?7^XN6jOZBV7&83Z|AP<%v=P6?=;Oo2r5PF=}`0mjUe;%7CY9wBklY#H_CjY1$_3=Jcoq82JB$JERKLHIG-{v z*YoM@qdv-G*5DVJG^4?F2?AH?v)BhatIhEiiWJ_4pYw?^y;WbFk7;#@`zapPE8!op zS$|sLF5rOtinus@CO{DGeg)(da?qw8IRnZ-rm1GEqs_*vMvd_13cooYaD(tc|IgyG(SZG~hx!P*ZeIpO-lDGn~)!F{540Wl6lG2Nkbp)n3l-obRC2u5fc zfzJ-G{=^l0S*m{0o{1po!>+c8tE;?U1y2_Dx>)GVcg8&Qn99_T3(XSxWQiKm+GNt4@eC66C5iYCt(Z5^4d z9O?Y*4dGda7bSiV!Qr-sp_&n$st)sh98$AqOH=wdswz{ZG>_tJolnGCUQu-Y19c`n z^dv`CAaN{ape7{dE!>+KPM-Z$nVQTBKo(zAgD+c>EB*z(8tTNJ82*BO(iBR~PGSQp z9_&n$ss#1tL76=x#EgvIrUQl5OiF=FO4@2skU)tg0hv2N9md7!O5+RB4Z6i|>BSqF#AmQX6iX|%Z!0Fx{o z0#=u4Ol&#*fN4LOHMm315F=|dQ#MAu5SjH{L_eYVEWeQvSMeyt9kzveO{eE-B}sO| z<^#>r4(=U88WC|VB_uHfswNq1w25d53yi%!Xa#|KUd~^~E-+vbkZlB{FjFpl z5uNT?pJB@*lAR1zz5gyDq;VcqHfG2j%#2Rf4y15Ez6%kV3Hen}9^|pt<*asn!<>H+ zFfyOrzs|>wN6*ErAQHVKOe|XGk{se0A)LiMfpi5j8nI4}Y+~5wpPU-Ru+`ETz)ww4jwL2Aq zT5W=!-U$f-js)8y4roo;_Z{)pNCxxnPB7@3+lT_K)K>R#PXyD9G*=M<5^_4xOB@i zAWTD`aCfFt$O;WH17oLM4S2(XLU?iInj3w9h&9>=gMZ?wgG_rz zk_#Vvp}@%Uv1qmCY)S|{eiSp&@kgIk0yTj!5O5Qf5EMH3$m2VlTc$cVdv$l}n;9r4 z;U)D|t)3#t`q$k7Hir4D4H)EDU`VB=4P~+V)rXoCCH3nb%-C9TC1+v;XuP zj&8P3RvX2JeO=$03p4!_{`AKqlDW~NC4t29n^+i|%(AEfuD3?_w?rq3!s+IdaP9*nRGnLfe}IP1Nv1WpjF>zn?(aaewU5O#47p>?M{zI7>YzauQWS)V zILuohU=Jrc$ZO;BugXE;gfymQ=%#RZ`weXjHTmn*9&_i|i&`8_O5fXF2oPjjKL}m`K22(0-Y#```vDw>A?A8yfDMat zlStpR;~M@0Q7d-*rl$hQDOfY>zXS$OL#`rQ)tCmzbrLz(Q*o~<9Ly&}v88+Ekub#a za6PJJ3kN0mpjEMLERPt;29YuT9@Dt@CRYcRi)|NoNfz@Ol5&!W^HmM#Y0wen6}zN-$cV<^#ua5( z-wK!>iMN{bZM#DF>Q0iWHXh)Yu@_&p$1ByN&2iip_Ekl+}TYzJXF~_+sZ)eDn2N{ zO`~mPHQvLUT>Wc>P;;t0kmU&0&sbtufY>DE`ljJJ8%QWU?)`^*w>qnDt%|&fbC$^+ zClI@?k8S`Ntpu)8C;1JKj^Vg;mH5gIU*0TWBb{$^bj>5K{=EKq2drr+F=@-5;P3%s zptY9RkL`i@8$;*a3PVww%Zttn8Oa847k!*|+w!))G>t(a*0SY2)8wlJ-s^b|#m7_a zEBfXq)Um zApB9+sz3Nsp&8rL$Y?M?$L;-tdBZN*u_hYW5*PMjcR=8KP=V^xqL^#&GkF9U9@V+H z)@|}Ae*pi^EsV2f=+<=EQ+cg$bJ*T~ONz_gvhI5EGW+=8ce;M|m__Hwjkes!lyuPd z+AY-{$5;Ha{Uw`k`MB_4d4qZJ?y!6L^%u(Gr|B`KvP^Y)8uO&)m)|C62~PFyEc@r) zorSyG74K%2XM5wG=K)e%<>eNj&Rl&pCdEO48@J2lHP%X2z$x3yZyFN!7ym8WDzY>F zbI!ZP@^cshqJW3wuctT$-(FvF{m=UhdJpbhOCG_CKec7KJ@+!3Ssw~hJ=H_c-OU%j zj4-$q`8&^_Ts)gT#x@}h(wF%)-=~9JTK@hKXnRCV$g1=Js`iVgw2PzT>j;R!6r zH)0K++<29CPzl7Vu#-1PsJ_dCl6;Pc%a?}zKB1R;3bx;FZhJ;<`_*^)#AMdnV{fkC zRx_VmX>~tcjoKK5r4HOm#!nwtdY^{nT%^3uQGjZ~gHhz^Tpt9O%zHD!AJ-?B)Avoc zh9OtYP!hFNlBX%?H&uZ(bE7Y|nU8-{-@%GZ=PW~Niw^CRRFH$aC&=v03iG7N92==Q zVSeECVxDiVQ5jU5{JD2Z`EtN~qQS#TNj4+TOWozET!Ro?tW%Z%VxX5GdsEQ4zMe?si1QOdn>qf?w|_x3;!8 zeT)xv;vVH}7-jNYe2&JB=3si%R5dAjA2i)Q=cQh28aRJnxBHETG43pLex0Q<+7Nz! z*9V=w_S)54w6)rQ-=$1-AMb$jde}|+y1x`aw&Zr)9}og&<-5N?a%~=c-=5xZF$ll- z`Hi0T?#S=Zw%p1s%54C!RjeXDb+|tDkRNxZeBi4GR&B^(cXWKXv;CZV=5+fQTalZN zl-C2>uN42r@6pyh-8+#k7|B~Cf)VKK0UCoCx9omWPqf;8+*^q*=-T0Ktr0&@9)wRq zp&!nFlR4V|Bj};*$;C2)0Rds9Degn#rDYT%{7d?(0p#$+(Q>!>uh$N_QhDL&tFJ}~ zsdZdDWae>-xg!Ip2Bd8)NkkrvjAZEEl z2`YqkS#TX3s+UbRBNokXM$lQoOKqYpEJ(M6K_Z6#SA;_Q`^t)rvUEI0nTpCj7Bzzz;)XXHuvPbmGCz!*W67n|uv|UK%K!4=l{x%VIF@F&rI$8Fi z9E;j0WVup9=(C)Q8tkactKg1d^9$u!{S2vd zNa^V+p2RK}Y555En$S&pyNOIlyJ6RAW0aikH4K#CZi`s%I7qIKn>@abm2Ri51?D$9 zc^6DlxV%>{&#cjl3w=TNE7SGTQ5=Az>wajSJ*aYB*=_Yk1O>HPiweKm!VvniDx+YU z{*RHk^h0Xv?(1EO>Zxc{+65)-$!@mxU6xkPnjJ#Qi9k}opcRdc^}+o;?Kb$|Uz8irf$)PI%r%xdRN_g(?k6E- z3;!4mmBdtJNYTYmV4tg2m=({@kvQx@E+;WRJO^!IX!2J;v5fq8*=Q3!C?#lo&ORSK8b+We-Op!j);Z&7$Se~gUa>vOCxAB6dncp8@ zb~;cj1A4(tH$S1gK>)2y2bt zhoIv$JX^J6m4IXH&v)laQyO9bgae`U$kNogt(7KVmI zJXO3xjMF0uha}57#QA&?WHGMY3na8L15qSyB!GJ~3-wlO(10bPICIE!agNgQy{f1f zu)d-iGMBPCJQNlcnkAYD6%&=1k|h}w>yenl2R81!G;osB0vq~-795hm-l&K<*h`EO zRxq0;RAYTCf)TRnu-__mRYD>4E54v=HOfgKPiDUw>Ye~6cpYeT9Fs6UdVfa)TIdsL z6aY?^69veYvkBi)m>n8@+e4%e9Ec0Vc0~stBTTrBND69e;YiDiAY^rdQ21wMVfNHh zU3Vl;n7#3D_{cWmGMd+^PS@c5NR`)~M(nB##635-Q&}}Oj}wB82utMK`G#&K=$>+#lHhR@g6heUU9o`wLTHM;+(FZ?9DC?J^g z$q`Sz8XFTRVZrP%U>prAo$it4Lt$plkCS4w?D~5t2+UN?_CzHyafyWmxb5V{&74cp zIuTvobd!xa6`AN>urqs5M~BAx2n+9@cy=MzKa+sgj?T3Tz5+1;vJVH#3!BK3xDI~X zR@GN?_&h;ZOQuH6P>7-Ksl1wi1waMcixb9pM#4=p4P4%*^I~SDXbyt!53vQygZ>|` z&M`RCXxr9NM;+Vg*tTukwrzZ|Z6_Vuwr$&X$Ii(od!^g$= z&~Urq`4j(NuHCfLkxP-G+r(jbY};PC^SiTq;>!JbB18vhVA0+I@;`id2cC6E@b2f2 zwa>q1?Pe>CW^-*;5AbZ~JLo-6QM#Nw%bcI0&Qrle4MjfhbQ`ZlEnJ{WVxU^Xu4^&8 z&Bm=iF2Po}+mE^y(wkU-teey0HHBjXX8PyJvJ;)o3y4;CiASYs!W`xb5E^alQes-{ zB-!sVkoqufiE2W%#G*)A7@+?q2Em zYMS&qRd8%nL=S3b?7UW(}a6T073zpD^5 z=-LnmQolBEe@zAsUN+n-Wm;=-fL8KNeZ$plN-X!+`7RWnyp&(45Uyg+07EQl` zQ}BD}bubQzF{GCcIRje}><2quAtG{1X`m5?Zk$UdpIk~84)B+xkVv&6VAZGhB+<R!m#uh`4b8M32F|K z%N!y){lHq+5pZbw-kDz0s_$%q{q_((chsMjiCb{`+i2$!E_u&SZ6bc-;yy@7P@B0G zgNZC^+PXmQ?pEjz1epJJ(EFh9dkx|&Y@E0uDt6_JK>~}>Bmt3{;Gbj`g8(5IGhr!u zU?wypGF#znbxaMY5a)8)KoC!|5nLA<8fU<&OY;(N<3C?`vvNhS6{C#W%T9kYHDoQz(Q)wp$( zqHq!6EKH$Z-%D&}l&GQ0g$`eYbVM7=zRrp>0TLAFb& z2KwC)P&Ql{YbI|B?~p&4%H_!J7cpa|Ou%)iYi$XbQIbU&Syi_(VI6__Y968_y_FCG z&5o*tNJjL*V_a99(u(R-0i`)b2@;f;^N>_L21AMcjL8RvR}mdjBg8*#t?NT4&L~_}^7cg>C9<`-kjPZCk?(=_0gI`KdOcfk|Ng z?6?VoYuehyxZ@DeSq)5C6Wu{W{N`Zzb%4LcLxBN>oF^Ldh&ZHpmWhS)x!N{@xlimA z*b*kCE(kKLIK@)_MHdT$ivqfey%IRe9F;Cp4aR@K5sxCc1-ya=J_Rr&n8I*@A@#xH z{Mh-qd-En5t5>XP+Pee4a#*@hdruuBro~Pj$#i6Y6`s`(uW<~c&mTGShfMFVhys?q z>)NNBfI7Ox?lUow2kyU#u$?=iFns8AYR2eJ>s_mHri$HTQjh}{4$lAH4768%CIIO; z^ArUxI+@Ly43I0#Ill9>?y#6Wrrf0fB}NYPOi)csZsJ-`Sw&JIzq3`^s<*nAqO93p zOTF{yZ8_X8tA2C6d)~Ay9o+T(f&jd9L3lQ(ocYEByznAo~{m>Z)h@p6?4rVB52P+66EsC#N3cVD{L zkZ>-VX}AFa+0Ul}y1PqM;YRgJcy`U7oVhc(%UuuZX9pEMCM8Lv@ZNl9sQ_^J_Y%7M zniiZHb-?L(tR3EG;S!hQ>Ym1P>}WiQ!&;yCH>^&NXNAzgsandH!;`Mq4mu#%Gkrwv zn)9qH*6vBG?)WLJL#r%B%qbP1V~(xkKHn0O?S6f+x8b?@GLYQ>VG3~iG#v7uP5G5_ zgidFF1}X*aJS|P7rJu9n3fPx?9GkPtdjGsSX?c)xyJVKhZr`8Hi+9ob!2Wt{(7(6J zw_&JKgpFe1a5W>^`9H|xwXE}Y0j4WZjx@5G_av!|Y0bC?pM|U0MbUTdi zeOPH&^-I9wPxf?u>t?t=gw0ZYEuwy}!Bf9~OX_v=T$`THWD|9>`+N;o;XnEIFn!Ml z-tT0qywz}O9F2Qi&3C38zE;F&e^XnfAKdh;F;%uTjpU=EQ!nF(eUW8Z{Y4O!(5=c5 zJ-eaMs)4Wat$$cw1Z<1kq_r$C6{~iPbavRbXVI%G7-IxRdSeMS`I9xKh-StCOGAc| zEjgNzUJ^f7eWTgg?3r1DI|s{Om7x~Z;;x*VOpHx9h%_nEuk%=#I&jCM0sLr5PSatl0uJFLcm=FZ zh-(m_Ery9_kflk?o3=|8gYam;6g-1ZGt`A(>|a153Tg^8?|#Qv_UO3=3Dpx3d*RNZ zO&{5-1&QF_07-5G<6K!z?LrOYnHeE~>guHdu*7=I48u*?x<7?kg!{e^+$o2dJ2_^J zr-?&UmBZtv0kDzdyWrYRsx=&shVuestT}a+I<^>WRu<5iarTxYF+LKX_>5Ye9eR@a z3FlT+Hz&Vh*gRObyiXokSMuPF&wS7-Ctqt*tzI2=ih^^(Is=Jm)4sbL3)*NHX|@(^ z?lGV4d!oM8*)6}Ezr|=+Z0;%RpQwEnt)@PX+3ij`08);U+tZlKj8iYJC12mNnrE`klv{z< z63_X1c@1Yc>k=KOzRtWl{6AOBgRv(iPn_!l(<$`2l-j(?0}5xVE4SBM?-}6#7v8}C zKVR0=#%xLOkJ@tokJ`dZ-SmNi{E=Kgek>J?E~bW9*$x}J4i)}#*=TeB+J;%0s=fHC zqQzmwmSjV)eP=f_SFWwC^t0@>qJN0~mWt4p0&hmvzmr4b^@*6p&E@lg_}>DX^Y+dH z!H6WHu^L6OSUk;Kr7q|aWgQ)RIG!ilo_(Eq?52LZNCDMS%%~<+(JY)x{j70L815Y7 z5n%qv3P`{~MO11EODvlI8k2}ekF)$uK#&KeL6Ka(w~DyyVXMeLu8@#wL0swx5)78C zm>;h}@$aW5Cbhjke^3swIC@Dt2E{~6UG$&du{dm&UtE-R{^Zc0zN+>yGJ`*IQLQzy zJoO(DN1}jXnSu!u-QJVdNC2?FIY-!DZ!MC1XyHASI6WMsPtuSY6nS=?&~AY?@9!mW z|LZy?1kYUoOV&VgGJ8b4Eiuj(f&SEiUAa5w9$dx{Z@wb7RZKZIo~9PO$QpI;!U;7f z3Y|J8-cdj3-)EKs70QfB-9vfYz06JQeYSe`cN6dEaRZ-)ZORGv}Wmf6g{?{5EoW%$TJD zleg%(7Elg!j(NbyFFEp)xe zgGk5i`=t*qqVHt0o=FEA{*iRflB(tY{Vw1ULKh2~ExOU!7q;gDEBxW~9l)EWb3U$3 zZ+q3DCcmcVsjB(3`Wl&Qk{X3mk?oYoJ~hmGG!%$_S0UTz3vj8oxq8v_@X7R|wL|aR z`O@jsf0>4r`mRCFtzLQR_M!DWGCkYxKdy)rs%ZwiOxUT(>VWFJpWAvt%xZ0|Xs2p& zW=7IAw1ntUl%@z>%$xl($q2d4YaEX1nHRtFlPpj8Cn%190|2-i+xlxRxVf)*rCfC3 zGh>2qk~4!R00^sLm4*YO#?Bc_8V19NiTteu1Xoco4guvP{LC!LY7z$Ap~cHhWDcJZ z^(eodklgAvE@&AwH0J2buo$V}k0lvPDE+69&=U?KFp#5E{~QRa!ZP&T1FhIf_co2D zvt*U)JIO``n60)J)=902a?sXB|6?~qrZiMRF`Pn^2Mjv)1z{X$SdTTV5{Y03NQ5Rc zIUy9uQ}^+$iv5eyp1fRFB#Q`0_`Y{XkY$l#yOxjvs)Q32&YF(Z`h0;$X>xvsq5E0* zZZKwa*|BMCY1V!v*4~rR7cTfv=(r`a_*hXfU5MK3v%Ctc z_s1Gmr}17k*We6T*rsFXP4KrzB``QE7MZXblx8CXEJVQD(!&%TrR2{e0HHj zHa0lb$b>njK>c%ubH0UEZP_;iPu8hfx%vAu(vnj_PlBuBHB2%HKfr%&hcHeczg5V9 zfXw+)|CIkox#9pQRKUiFZG}u$wrnA_Fk-wBqIE)C3_%ze5{SQ-21o>TQ&EhGgtL?@ z5=aojAA1cD?N(+mBtdmrD@d*Dt_J#vdlWh)B^DK>koZI<`ISwf{R=*-ruA;XHHd4)_Ps@2v3iyh<6C`XRk{g1&R z+|s5!V`Ak3*Oo@jVTAM0ql3O6B}>$-LDPA7t6XXE7ftH3q;Kef%H2}JF<0`xS^e%q zW$Z~O$?6?@Za~%E4=!Tkhn;g(n$Rz4wubA}Ntrd@mv)b9H~!B#j9s@{v0@2v&b?~F z4Qr|$rmjI1La*zX#rbU%m6B!00^K$<@iov$cG`*5N(rt|ie%&>qY^a}l}yZ%leo;T zQ-g+iQ2x=)ky+_fY8MOO!*}$O@JZh}pDUIR|f7s4bj(ZbU@CMxKLf6iW7` zLBOL6nNR#S=u7Txi9(sfcAZ3sn$z2-2jQaFnUvnpO@Cd8{C?O|F&IBJL_bC3MB=gQta|Ef9@%M^&|pfGkF zN7F;epeXb?UBIeV9Tndt7Y__?MJP?lan60D$?X`JuwvT|+0DcPw_!lHVT>PHx=_M3 z$Y*8+HOSw*0%R4E+|)(|px;d+A%nY8t$)Xq66xhn`-h~`F>`)sE>N+9DRc$c-g1@o z7e*S%`X;Pba_yAL9Ahmy`WDcnUzRW44Q*mL9^fvL-rF{*g>a}=u#|Fr^6q3?tCBkf zahJ`0dg4_{kra{LsTdb1+NIftR|H@NA40Mm|M0e z6gLxKtr35Z0v{lW)LTAml30TKoE=tdRsB6^TT*P?$KjWG?@ApUbeOq(9tV!*^&B82 zj!1mQZPX0rzUqBW(z`;bje~ri6>v|1T@TNiD51qs-4x8(jF3s)669cu+;^J>3afUi zfJKZ|0x%!RJHpSsK+>2mX)ev3x-6eXxdYgdjEh2-s$@>OEXk&r9!#6&l!OtY)9Va^ zh{`kzT!%4m5wf=`K|JP^IsEgKq7@n+ z?EI>xPmxX~<@>pn9LBky{jQNG3Cs_wPeMu7092gJY)bic8lL^mZlf*TYh?Wa45^A7 zvj_MOS~uNlvvggKD`b*X0CUumbD@^@*W#(V6gOEHO5@qlXW4j%Im4-PDW^ZG{IsjY{AWD5BxZkZ$(0?4jr+SmT8Qs z02=qD@QGf5bd)rTw`o9tRt^rGX*bdKX{Z&I1&NP!)OGwJ=50t2L# znn@a1_(Id-X&h!5Law1UWb1wo@+DV=>oGO?cC!X**{SSGC+G7Y|128*0yP#KV6EbI zf;_dDHuuSC(M2h5(W|i+t;n~D%2e|5+$`{WMgz;NXWjW?eh*V9dd`xomEPr*Mql(< zC3e1yq-?^L!9bC5ceJowN*C5k5l<&t#Z-%~J-@rQvSyf^>e;dcX`&)~To@xQttyi+ zWiF|KoaMw6N}0B-KQ>5<9-k;4P=tPKE_~S25Fb|mYsZaBRKIa31v_HN2BW$BR|?vz zS>Pk4*%Gi-SG&xV=%S5=&`_udzQtSZnGu`MrP9(LTo%G+%k>P;%`h<6MaHN`1itcN z!r}xt*Onn&CKN8_S~;d|`gz2@ydfB+HQdDwLo*nYow8!fY&L2mWfuKbz*J*{3k!Sw zM12xxX@a9LtSrKjxP3d#Q^VgZ$fleHm~LEJFur{Pqi^eV8wbx%iVWF}c0@9W2C@+A zE_mjtV>>W(mV=(~19V91JP6a>vt_?W3&fnOMj5Re2nMt!SF#?ZM-Tn81rSrwXdim_ zbDK0>If+1q9GO2HPRus86toVpHWX$?0udowvOmvItI>htb32R%iFWu>x_W@zzFDSnb3k*449Jm)u-Fxb2N7ma|iS z?FZJ%9XYw6dhzSO?NlscZg_3(hL)blALamwqXP;^Xyms12ulF6r%Vp+7KNq;VwyGl z{nrCRnhshWr#LYL(2o{-OL9)pE&hvXe29AtJ^f~nFKA`h#%VMr^GROYQtndnyReo- z!v2Els-QQW26h$Nyd6(Kd&7tz%w<;#lZ6(<;d3flqtRRzFGXs+A_|Kpbr)2Q4Jl|YzIt=;Cm8g_}cAw*sbFf(z-G}R6ozW{LsZHxsOWGM~uv+;|0ori3-1q+bKQ5K19AcjP_T=#<& zI#qQ~J(tz;$*_4Um?dcIy^h_0N*s3*mMU46KmzHIXiyBt#9NRZe18kKB5F-ZLH4$n zg|$s!X~lDC38)dm)vc+$0A4kXG1N7?Xz@2=64WvW!0(@#3cCm+wIC=MSg;{V4ea%O zh9i8mdakdE9f)le8yr7YoL=Yp?Yly*%`s~kU$~VEn*MBC|HA#UrV7}EieseNbR$Sm z(C<#`hG`adUHz@!Mxfu~_m0PHi(r#WVUR;AiIAj$vGD~*|KWJXV833N>k1VPU^k77)-2e`{G9BC-{hF+t zjh%$c&gwfgNXxh8YFKS*?ze?rg?j<;eeA5_GJv>3Fl!NcCwd}(X%$$4>0bexQ-{31 z=dH(_MgDL-Ma#pcfIE=);RQZS!xDS=Kr6BVhW0n{ftl$IBrRap=)_Ng{nt&@f0p6V z$M^whDILO<8m`gdrWXUJ>#&EZ+4}_;9L%)VJP_3#0@}2u7d*G>>hmk*58&;a><;5P zDO0~6uMs`VYHoss1>acz=+ZO?=)Nmt1?=(GR&x)v7z$RABuaEIEy7UM%OK}W!?Sz= zL@ft5+&|bEx53x#E{1U~ehY5D3ti;@ZSDu_V~f~5eNXY@0g{&lI$Fl_m*~Y4R^)54 zVB-!d;rdH6)-v}2Bx^$%GKjHmuhsjs?~IQ)_AgYyz-SL7d6$P!v5sAONU(4p?)Jz$ za=Z&(299|Pt=7l>Zxo722T?o{xHcX=pvscQ&WCSs*l*FYR3qpadi!^2{!&~kkG=?` zT>tk~egsaKE?d7_UW99@MLA(Fh8XygeRlzTXr6vn(Ha){Dlj6*evDso-l+n4djpw_ zR$~%4776xVs_V>^aWZ%e>4=1e>$0pR&Q=_3my-82blUG|Jm&2squ!>^`reyhfYoyZ z$ck{0CD@E%@4-M7Q~=r74dS_KP^eT0{p|yI43%>fN0Zp)cn3p;E0s0d;^^ge^ha2z z*Po`v!bsFiFvl@hqNPavXMRwb46i+yUp{)h<@OF(v|pyG$V=TrEbH;fDuLC@DpikeOe{Hg&xkH0C#MP23cxi1bk zUBoq2>04sel@8=8@~XvZnB49M0F1us>|bHZ@%OJ1wb2~zfW;C`$00wSUqoUCg9JpR znh)g6(!VY(yg$iwLf06$0iRsTir;ubCaFO=X8c{N^GtZPW`9pCPAP1dU)d=g7~CGO zIxA}(L;Jo}3~0N*WDMRxpK#b?37*0Yt`Cll%853a*wQz#YiV?)?j!ms3rHF5G=;E3 z-BHJL_FO(Sc*|8|}_7)uiqKbjr<&@o6rn>$vpWUbCE{n<#0dfvwhab&QR70td zp}iV6@}v}cbs^gnY>!!)l5Xca4Vu|~-P(Bh2A&s&$_=t=PjfuB3un?goizPUL>Bp~ ze^2>!1=;5cwJHsK{G;C-K)E)6e%8;Bqq4^OJIprx3XFJ85acOt05Shz-+9zKk(4x{ z!!0f#a9Ouz7>cl&1n9@JlIV6M85^+p8kDvt6O2jU#hbY${q;P!6yT)-{%qW3m|!wGNj<9fS8tIyHnFYVa{UDKBQZiVZ-ulRG!%#f2;TYz51@6go&W* zUyO?(P6px%F54OWeO+_FS#+JLB|wh3O+G z&CC7Er*~RV!|!4fd&>el(F3xD4`vHK{sDXN)Ke)L9dN)lbVZO=h~HFA?0gsM=L17x z2b$6{81^B2JqCn|JlO`R8(MWMYlZwvzYzDywf771Um^m)Y#Hv|c^XcON$bwImp5>* zBhI~L1Ods=$y=7N+*N`Ss_c398r_kihwRqQ=CX;Mn?zY~#w%Z4_SdBpIWKI#1>%@m zm@%j?2w;DEO0gbt8-A7J)*Fa>X7aP>i6t#m?1c>SJuzMM_2=~QnS423`BjKoPafZR z@6y_ahmjb+?9kD$eqNYWw$ea8h)XTP(VEPVS25xxE5!fG?w7U%&5MqG7p#X=ubA`gc20Yuw#e z5KG!H8rZ?o-rFy-^vxQCBQ*m@mT?=+OP7QfCwCUeRXv17c%qNrx4s;Kqp3loC;W#@ z!9K2MrrhS^5)W#vD>MO4xk~2wEZ-UQb&qu6R$US|7R{JGUvlKZbP2Q6zT1&tzEGJc zfJ3$0M9T~9-Y@VzUsxYKr6Oa@PnTWpqz{^;P3oI9Ohs={bH0G)BNRS(>mIU;0rx_Z zKRpMQ;5*JT;epRLalf%GXW;Mc8ksUO4tL73|4n^p1^XoK?d*a7yPDMF@9sc33ZWnG zfiL*r)&B;9_zoJuPxt_tVi6ZO7VQ0U0HpSP!2WQqdHyh{G?OS0ZSNcC@CaFWep*hp7{sShTD$ zV$zjVZ35?{+#7D{qezq4tDFLV5<_oC=Tsr2r!%RG4Nvs1jxpm7w=XnSh|4lSWE(^4 z(y}s{(cGZc(=&9&_hkxcS^&cWW(E+ZQVk=rV8JU#!$&CVd3QNo-$hN05`Y0v2Va@{_r$Xxh00MNOUZ^qvtMcBYbhQw;7(`H8xD*~azy86ik1f>3UEh8UQ2ChGPb zgUyBLjq~@b24(4OkZ3W0z~D$Y#xu%@He*v-U?-5YiQdY*G%8b5Sb8%5Ht0z@6eUwr zRS+lWG%L=tM>$_QAqBxYe9kNd{~fB?Yg-@lyu&BPGnP{)9V(iE>4~XH6?!M|Qt0dl zaGKzpRap$1P>2P!X(=#zM^x~}XcGQ8Sc(x)&UEpEC zLqe>314k|o44M(z&qH^@^mHrL)K;Km{VM2jbqNNyrg^Saxu*1VINz@zwrA>o@U2 z?fBrSfBNC1PCuCIq0P|lXYyiEs;Xh1@A@Ymh=wbFSR!CgY+?V+?UKGp*@Yf`NDxCh~qUSFh3gb=gR!z>;_wTYc22z9EF( z4^Dmnp-C>G+$)n+g(@>M*Ua5FhO8{Wbv|$mEm{@L)Sfp0W(Z&Uu=;jPk2xQDMwKR= zvL8?%Ru;PFQ$6|o`Y8xOYFwhZY8LPAW)Zr?C#kBmWH_ARpX0joNTy!psZzlQb~J_;)!xuZC$-wzf3T_0Cf0u21cr!{Sc>B< z^!%_W_p($zffEnglhWWqCifE0FrHAmPIR#>7J(Mn3>neO8}E$(=v|s`aYd z+iX$Z0vm)eSuhVs$NGu@gcy%y@l`AtJWfCS@ z2tB)c=;TdMJNJlANVU54jw!??WDijc$6d_AEvjE}gj>xXFdLd|L{U02H!bgdzJin- zI%Nlt-Qr5TJIWA#0zu2gEQuQv#OJdQvV;gY>K3SJ93K&)2Aq0~iL zSzbsKA7wcN(3%!wQ7ilZQo}eiNP?cO^y&p{{u+i&`{3IwwJDsyO z#5#rG71B7>mPZ?!9La=rng0vKzC-+?rY1d=yIY$I^z$wXeFc(G+tc!Z(r-#YUt}1d zaF$nrrSql+}E-o#|1mf)nLUp zlcbi9N150OTNl&Vh3RY2JZ{C|eW|;~d`q zdckK?=}nvt4qt_O`&WqO3*Y}+;EVZWBOujz-q-xT>zAi2pgE1NOtc`QK==YhVYDZ)1Li=_4^s;v z4+P;y)C;!@7Kem+F9Xcni~0v$1E6jz>byCMykP-rE_7*_O*hI#-9pBx?n=g*41~H@ z7iDccJzTS1Z0ClZiG|%38eK{B)(ym$+5II<200r!%KazpaEaW=rwbMk`yPVGfioL= z>J4=&wLjQ|C2lPW1dfQS{Z1f^2mLZ$+^mP}%dQW$CkA2|hV$Fp3K@_UjbnE(p|4ay zjGfIOJOU|B!ksdL^a;aHI`@i5AAJ~hkY%YP_v?%coqmRNM^QSIFWb6Gon1det9dxdqv*XBM9 z-5F$J#C(YjbBg#auy*zr+oD4PpzPN|dIa66^@y5=I9DWK(sC^dlx&T@i=(wE-n_rq z#+z8%_=db!!8(U&?lEfmVuYV@;{VlP{6X~5e5Q^c%9p!Xt#$*1FhmUc?R=XYl{F8B zjCPx?xw|hSbhDhTjP5j8D$s;aiFRk4vXQ;A-MK;Ci0+#oRzTiJ-dP;VApz7R;G#dE z`VScF8~0+7zX<&-4&O@2xa@2n)=L2d7h);V`1jKfE722js=q(FWXtfA?4G+c6|TRhU5-p|>VqbOCNogW zpmh7{fh1HFzB-80)e~v(3%4^^%UJ=UwTg``UPG4!~ zZ>PD_E$+B(iDrP?G-g|=+)@Lz%;)v?b*EeMzh7xii+6w>vs^n)LK^Bn9oG*}!30pW z$TQk{^rcTFxWQhbJ+}Wiofpb+e;(Ms%BFx(xY3uh4Ir-K|Y4Y(LBvhOD z81xNc>nsRaLW6{st>Cw!n7ois_PhqeF3_<-!CJ0gPIeNe#s=epcX$=k72b=YHh)!+)h zv${Ete3k<{$EFw^-PpX?20jz2N7_c$ad^$cPaX(NM0}Ts>L=2(ShK6IvpoJ9%KXdk zpatDnE|$~!u=lhGzn?8|b49O7OI!I?`!NO!Aus!4c3QS(JNkDw&r{q??cHpauzfo< zwp9Qsp98b@x8v=CI;6Cyy|-&wR9)6o#P3F}woQ|r#iz!2Cqhj`bL!!Ju2~r-eP@u4 zMmt>3+G$YvuFbvHQ)3^sHYtsSY~Ev9DxgP#bx+rB#J9Vz%vi6_)?G^a=;L}$>#XMH z;vpU{wiepGJkKfJuDw3kht34wS0tp=)Sv+9CrPGIMTy5KJOGZm;Je2{qM7TdNXoLV z5xa!u*zGp^eY~T(=C*x>;{_vIF5a=4?_CSuC&OZgd+MDqZqn1&Zrq66PeK*xuj#ts zsf&i@s7$mpi#Lb3o4*hzpifO>KK~rcFWv_N+h-@1g%?{isqo|%%aumjPFTe{zYYL0 z`VF`wxG}KlIvqO~$r3G`9h$sHy`7_>$J^LkCnD33U4Pz|w?=%v^jido9!E}ho$ue0 zV10kuk`pH)d)%BfmTmi|C`uSpgk>kx^w`k`C<<)RvS*J-T{#=0F4~Q+;4x8meEt;v;Q@Qg;IpVx6>Q2KN=$$x~d|XzOmV9){dR)P$`=xAzp5J9Y^ zVkoz~TW`;iIhMg`o}W6{J6gJcz>CsSQunrh{J6K%(%Dec;B)ex2;u+U*yCA0zH;MC z_9SoS@3NP?kLWH6^-4nhJmAagqay?Ko{7{rhdA^MFOv>zUEx|y;KS9<9*E?ZPiDYSL}ydk(h2SHpVf1-t*$$#|_mUR6<7B2gRvU znl-VC(pCzMokH*<6nAPz(-oEBnu*KiSHsV!h;6*oZBtlX@A3ivf59Vq&j4O4)w85P zSQZu&7MmQBm~{0Eq>Rhjr#JJP39jOPv!0KoF1G1F!biHPU_jqkH^n|#j?5c6=wIY@Ko`kkQ)-;CM6%e_haH#Xf7oy4fPTSZR;jgG0T#Zsf*daCfbi3j}f6< z-itQx=SSC#ryS`n{S)Hu=WPbU5_5MgHKAure^ep}c*`}X{*S$l=9N_8)?+)FJC7CL zt6~-Vh-azj0f3vO_sAJUDcOk%5O=Qn3^nwQ0>0J^*En`gY^51a@J+kR@_l^&^B#oo zN#u7{OS4(!Rhy+(%6d+2v)M5&;Q`l&4H7)>w=II+i#08g*#U%Oj$xaBR`LtAFC00^ z2}`$85<<4vp{{|L;dkQg^C&LpM6zFlaQCktqYHE|1%OcRea6GqD`X>QVqHaE--JCzN zZ+YhMp#W+8hX#KC^5u5$NC^*ak{pDG?^%OKLH;Nhe+DB1(%^r2iy7nH(!>Xb!BZdD zRrCoz0Y8w{r#y@}?Ax^?81_*8@jG=U^{IvHF7ZUf{g^rxaK6<%<#*>k*+A^3@CXIG zbS$OcTHAYa9!g0xB>p{$Ge@V(XIhAA6~HvfcLQW@9F2T(x+|QvcHHA7cWyCbQLzsi z7m^ic42N+(vtZ88!-|UNDM?onLbpcMMffqy?k>nkK;`YDre+{LXynp)X2Sf7;0;j^ zq|iZ(OR$t?8IF!TK!z!HuW7}Iq{X%pj~bJfoTAt04?|}#k||4<_y?Xi@x*l9COHk`ZGb6fFFiU=KXf zna7B)af@Ks>gaGYw2bKEVjvkh%#Js`lVuw6$b_k5ApQA^)}o4zoos1Q&*0dqSX9iK zkRLnLKSv}m?SDrXjC>mpadK2*Mk79ce6PKz1wosLmXKg2BzEan=Dqx_E4Y1r1sq>O zdNWF^x0Mg>ytZnR(k55GuG!AEwoRcRNsLwNgl73{kG70l!8@8}p_`C)&SK46hpoNY z_a$-4=qr`j@f07qSE*U}@@9HdQIW1RMj|D1bWOZYmC-(Dvc_DsBvX#pz;7F~Un#r0 zAJj3p?2Ne5q;2GBJ`O0nw=U0^0=$A}?$3QLvHx|Z*lIbc(Mke1Y)9L%YVTKbSA#DJpUhZ8r%V6_sSOvakC!!<08>}&%$aLr zw>qyipG)6nKb}!M6S?}5RVHf&t^Sny)HNz=Os#3v+LqOhOQGf*pFY-F{MFb|V2L>7 z1OoI$khZ_erLb=xZ3VKWRCoNAi?A+YScM`yaq#Ei&ZFqBfB8{@Jpa-!Vh0!Smhxfw zf#*XqV~FIFGo!!?)se#u0SXjG!=%Y!W%!Zjh?y~EMELTlnel%T8FNUDI8~xnv$l=! zxWZy{49+;&{355+lmh5;sLB!5`BtSkTLQ_Y&?*J*rQkgLE~ikQ5$AI|r@uS{dGi2Z znh3v<`XtP08&TGOLkm!pf)TqzZ3l?nB6>m-1n8d91pN+}RXZgU20(%ai4#a-P*d--z@i!0PcgZk^%)b4@keC9+l}BH4 zK794lUei2J{=;832xv@+P`V}*FI6F3FDnsbvGyy;Lq077=PIm)ZbEE%7N~@tpOrF) zV*cBlGG|L&39|Wx+>5p4D)`H!7Q|`^Gpws9IX}@E)m0q;d*FKS9EPjMDCrIvq3-GL zc?cpR7ie1*A_$ETj8fQ%BI^MKeZ~dFl0{DbYbgL0YmdU3{RBA)3Qy_KMUyE)$Y6>$ zSYPlD0t_UEV8k*J824GC#CB9%%3+Dj9hqm8%$wJg8vAeo3#QBBObFfC#O3pYs~SBJ~qbO4!(nm_2wF> zjHJKE$^W!otQHdwPD3S$zuP5zGIJWyV)I8wLt1_{X_XCe@Cy^=H}?rcM%1Xi+4k?y zx#9ypnN5hCY-(kH|EYM@)KiYbGUkZ_Ekmx6=95LX6qYz%OPhpv0E+&Y;kq|)aiNMB z0^&@(@m@g@xlxZB^wih99CbNl*XE=OMimxqtVQ`rDk5P+z2~56^q@fh7SP3pO2~~B zZq$!D07B)b_8hY2N8n%$D1W$rOP7aFVI%-37@#pUDTbL@3K67RgpEoIKQX;++A~G0m|@b-?_s!&(pKcc^0Y=z2oOt zz)kmEHmIlI+I2qfGc*lP9Dfb$*E6r&kBW~w%o|>{?QTw%I~mSFzs-IvD_dDH---cZ zF!(OH9wvSoMcVIdQef{}E?sa&9h*i1g|vKd9qGWk>pq%VCLEiLKB*V7t_9xahnj9~ zKU0kKoO4Qh-UJ^z3#JY<-u1Y1_IsW+6AMa*>dpr}g(i5I;9M@PRK7Ov6gH|Gj7nzU z&3HeVH1brVzM1Y$GYa$!pKZ!{6bL!O%$ox!?akImkAt#1GqWV-549Nsz0)R%PZEC@ zZ)W_r-*|V-?TGO|X>{=a?X3nly6QO_IQ}oT_CGfniU>;XR@b)6O~piZgkdr&vK0Mh z4$rw5iX)A7=DOm{I;o~avsa5(m(7i9>e^KkVl992pWtG&410<2=w($w0!1Uif_xHa zi@|X*V#}mIvx`X>B>wyaVL!AB^>3!F!!D0|ub$7V$qf&sFU2b*0FXM3$=~^=BGJzV zAU^|RJoF?&kVBTVeOO>kV-eO%4M@pw*VJ;%&T0t-UV@8|UsKMSftHeJB&Avf@<=da z@kJNl5!nIccN`#P&2jmX1R7@2!4iGDB#u0%fGFTKGlXa8u`;1^$&XzW+4uC_^z>3Fa0}meOg-Qlu0Z64Ej0r+8dXX@bYzl$g zhx}aJg_0#;V`~V7uz|=ysgHH5NJallh=~#r$;1pqZH+=t{_0Jy6C>j4XE-jj0s?%tBIarJju2;J|8kH5{&XdbWMPS<+az`mQ{jD*-9 znE_0Fx~yrsJsu7n-7J3VzD!lcaPh22#=z;eq%3wdS=Cy3-DLjAB~AdBqruhUXfCbW zUUXfVOe*@QRdaT&vd-&khRMdE)H6>rdim&F z!x94lR?`ebjb1jwPx1^p2LT$iePZp*^xtLQ%OX+iR1V5Bs}Trp{Jx;1s+K_rX~4%O z)J!3+V`9EwxLv3swNURaK(>>gnXRT;*^r#=q@x+-oIpcG)9(sXFWfGeE>1upmOy@_ zksFa4P*_^}9mE)!gcpsibUf+sQmnJ0N(zq+232#l$%3k+w(tHrOyTK=mT=^1J5KDzDT>gn+KxD3vBS$HUSc7M7qLN6cgCWc-a8L2S&wc`T2yEBr00f7Gm z`Xuj)(-q{C9!3*F)q->XL=SsWByF`~A@RN7#Eshb7fu$+JLB?8im@ z95h+=p@OR`d+Ql_MMqNV9NJATIQ|C4#G*bKQz1OfO#g&-N-B0bp51Obo?lO8bGhtr z0*JG#GE_ML9f}(AF@H{P5WxP$A#ETefhd&GARxOlEJiqhlprWbSReFP5@!k`VJoi| z2BlZ>Z(+fNf(n6y*DWES38W?7ipH1)>jw>K3d{C3vN?&P9Aea9XhWbBfXg$bxj)wr$(CZQJg$ z{<6_!tIM`++g-M8Z_n<$%$}34`I?y#H{%Ov6Cx^hW#$5Pqz&*b#-5Z-JhTD6$~@5# zH0lu?+~BUMOsz;n7dS*R=?+e^wDR9rk$tN|Y*gcRTycR! zv$p1u_t{lrVyKm1e}jBu*d>DtR*V*vLQP;sCqqaeaJY!6=%u4r!I~PzAR^f(<^cN4 zBh)d>+R4d95m<5kb=h-NadT4P-Ii&5UL+pc(1b4C*Us^@cgg7_c13|H5^N(OzXu{k zh=w3dS$Ngq8lgbWjU1)P?l$1f;m|7 zkzNqJhOlk|yMzk$RvR(8AycNv2m>%6G>^zF#N-t%d9z*x;@K?8vGlMT?c)e(0*7RZ zRZE)|tv!KT$)ghqGsE_f{HxxcH7=!Y%Ds$g%me#t6JNU;*n%2LT}C@)CeMd^!jnz{ z*1;4X8zQGLqKHV|zIa&v4fXG)&Y&wQ10S15$zw!%R zWr#}7UrX;w;Fw~2%_q9!Tp52d;r$(bwcRZw2>e@$jac#Zn{_LAzi9bDx*w}F zxIpimNaF7T>S%Lph#7W^nrsO@_^_%G-;{0R;9rTrs3Z#)@Td*!7!y6B;o^O2Ec;3G zfJxgzpo0Jmch>dcS52VKa1ns>gzYaQ=X4wd-liz7KAuc9=kSbeZZ)MTg@LW5HqmpZ z@Pu=sD#+ZDeNy9RZnCIS%A`5&X*u@~J8UBov})b-)O7O2aV-haDA&ePNzkU~d2nXT zAr_*NYBNH;y@JNa4pSlmUQm~rfCLtGK2!-DP*QVk>G@+mup@SPNrXG`M+_2 zVpn<;Q2Cy@tEq^NV7UN6S8_UnoJ0^t+6CXMcy?Bl<=obMu6!UWEHtzzG&Be6({< zd&};yV&Q!;R)tGr)4$oXO6ns@}VHVrccYm%Jw3>r}g~6eo^+umrw7^&%^Wi zY^fgV$+!JM)iU73!rc9f_u-q6!QheqlxO~Xd_^(d{_m)wm6@WU-pAWS_n86e1$W(< z-ud8B=`}CKv?ZY1=J_$GxU$vai~nOO(qqA+=eL2fHVfs2nD}j3UiDT=uXleCi%EX# zJ={WE-jA)Nh1<{6AIDBje${(z#jViP+M`4dzy&>>mnYzG@DV$lGG9`~gYV-Obax=) zXw>ES`MO8V;AP?t&~2c$>3M*^a*RZa1?;H}TT)_jZ@Wt#^Mnu-*6M zu711H_6DH#8*v5hn_?GtP546q|2JpeXaCVsjSs%AKcBV7SHt=aFZ+U<_3cE7zHBAz z%jf4dW{=lVA^5Y+#MTUJBY>l#*>n>(?PoFVX(TY-kVF0nt@&~%&;41FPg+XTc7NG+!R0 z2~&+Ip%c{MVM7!Dre?bFm@&7(Q776$h^=nApF<%=+PRS_2oawA?ux8N8i|}^j<`P7 z85G{vqyg#=J-wEQaQ)=q4GINEWx%u=ImITW#7KvoA z6A&P(^G$mE$v(Xa?tM$~$MW!VRE$ zn4^eyd#9mVw!Qm)_k}aJ^WiS^o7v3}Np&f+6Y+=TZMd*ktPzv*MdKGpcJ*)eu>->b z|59b%J)(sOwLbw=WKj_&CVa{go{=sCl6;D4DC$FOe=^fWyTqm_Es$!Fn}F|AC5s3iHtU;{ZZS%U#})>ISce3_A!Ccp zSqF#*OM!$*EpdGc2?N9LZ*(HW^~zb@AAUWZJqX;~y!1@p! zVg`imWii1`24*TvTl=d=zYfyOhJuMC4v@<<{z&wYau&?@N}!60j1=P4Rwa;! z9;liW#~sQpIsFk!Z$}YUSO%WR)f%*B!Io85u>lrQQQ8|!v{o-9gUK8kZ!WjUab}x3 zLO1lUK^rUo7cV<3SqV83l2S7R2<;Da{6?xKQ%H>;`P6eoDu!XqXKjxci5Sl1hXNEL z;c>C$PxAxsH^GWvAlY$4!2LyF#!#XI)*%Ypwt~WLgY>k9Z)1kBgc~{DhH~Zzl~Cn_ zunlkGUIvYU;WeAeC=F0HFI~rb8@?99uc}?=}Un_ zJsOVSa5`cY%o6%{K^ZcQsRyQNH)ho2+kvtTQkl{$b29p{>K19ti0{G8!Nx2mwWHkP zB)WpFgIoD*}mI>#_WU-9SNg;WnHgW1NvZiZW6pygE=l+ThXe4glDj!swJf z0nx^5c8Ib^$pM$AD{uvWx~nL&rkOc8fUkfOy|i)hwGNPQZ-H+&geR%&N(e3*;qSrGyLO6;TVV3;66 zL`Y5{U?E~)xFC_cF$YOiTmWq1;e|HjGA_Tcqcrm`LkdBNJ?Ln{a3Ng*()#JB#_6^y z=1g4MYVMVV67Bl8BAuW5@r~(!%|y_XlQH(N!@tiS_`PHQ*;QAumY7K7HH*{wA9%Q} z?yd}HKelSKb5XgZekqn1Ih~qLbhb7-t&@xfEjxTxQ!>qjXB4aN3IIF8A&3#vi^BuV zny;;;jP`TB`LvxDqvOY(i4I-C%WPj0Z-r7=| za^dlv);6A(tCLZno2a?yz1E7=XLe#z&I7BX#?~fR)8vTWI6o7V2c&PlS#W24mAEUk$fc}#=8q9RP zKP~DZ!~d-3Rvppu5PS^d3IZO>>zNwLPrmr8&QwzO zbQYf9u_d?r*KuVfs^*u}3`Kx}Es1JG1}Vr^JgH1*6H z8MlQOj&h}(b0h*_n2v-H1A! z$I=r9YwCis@z7>?_GlZxQt=U5%C@w!+Ct43KJYN1=KI&UXBrCBc&Zay)qWew1!A}v zc>=Q9VE|1$%OMKQTt=YMm>|_}j0<_#;dCXf`b;1>J#4g_xM6S9gJiShh?g981@u6OFyKkpC8$AhZk|qXn-kMuQR^_mdMQw zqF7=BI|0-)M91O$xF=M@W&Ddf_P5ZfsP^DD$}9^?eGv*Exq8gSqItC2(KE;K! ztX86prB^CI+19_TBLL^3@p%F_5?D%p9$|&=;c0MK1GRMMa`y#Xm z9OWeDnHsyB+^>q)f7idr8Kep``wv()*rFC!5dG)eggE0*1A}ny5!JyBQ%p4zSmt6| z(?5leM{nkmJ)~765j77+D=7`fsGW|FSL{^{GV0YnC|8ruw2r3e!%j`_gDWYkjY5aq zOhHR26(fs+UA;BoMP9F9f|nSbcI_q;qqvWKhE+RUEsv6bRp%r<_sfZzl&Tp{Q!-@x zfIM8$h54@oiJ5T&d9K4hc48=ZUvRtV;IAvd-}$D?SuUR3Wdw*OX={b@go9>O4acOR zC0TpEy#Sr8oYk3AIp_3ss@uQZInZM<`b!Ktq3&0ILQOf(Tw=nwJh4?Lm3+~E!u7_F z+h$XLk@5qruw47a*vBlLf)jV9L@#!-C)*!E6iGnKS?#kA>2`OHQ+hy=sCNmW1s zv>}0>L4yS<4o1Gg zA6b~C7mVdYYusSxESE?+(bU~n4RDVG)H$ut80V|ql^f(ic`0-@7*}|>3`XaL#kQ~K z=E#`bvzOK!JVD+s?Qt^Y^7SQZehV4cA(Xl@cF7Sl!bQk6yF>&7A#Icf1uFkRSQ$)S zq#@$c5vGzc2z*0sZZ6i9XBYvSA-;*D^i$*It}X zk~9vr3x0;pz$OONsNV$mXl_hk2oLBOE;xgKXcJzpwf}G{zfXgNoxsEs#}2s-A}j(A zJV8X1Oj4Aft_&?Xc6`6@o5aZ$AP1fWJ92bBqD=PSS>;)G)Vp9fIH`&dGqdB8sWP@d>56-)y2|bua&Av{rk|XLO0vy#W zUA9^T|4c&@JkE#WrOVz0m=0-1eQETX z0>)|&s)kSzh_1>qnYV?wx1U$yUXqKDIFODMqUKF^RS{*&Bx*3lmL@iy0Hrhe5`$L{ zcxpEKDw6A`y~8MTgjW{4LRSYnWHG}X< z0NTreyIlvNLSkdX4LE@Xuw^DvLqRa5mlfFDT172+hEWy;l;FUyu|ZZe>5FO(Hlcc+ zfpmfZmD)gg7uhpoo#L@5xqv9Z_d7Q-l-$9!mC?FM$DTZ1o9TjpH1CE0iT@RsMo`iS z2Rj7$RbpL6fRuH>)=`oD#FP=fZ1xIZbZ&fuqrW0orrc;nPL=m)T*THzpj3hTDCmVglh*tg>ZqlvPP@p5R z`&6@P!Nv(c9S$)CX#N%crdLZU#(5iq_}uUdiyxg6z@sb1I+)79L`P4QdR-z_u)#;- zWybm*-DgG^goLSQJu~pLo-O_Z`OBh>IH&~=#c_=pA!5peiHfkJN*KLOo740cT&Bh& zX-T_uD|@!K372a6zT94X6;<+iu!?Ra8i;O$EEx{N)*n$ezd=Z_=TwjYZap=%9;wJu1FyY6uc^}h?Qr3Cc3qn z4O1I&*zDvCm`B$58Ki!;ng(lm70kcx zB*G3oFEg!@y$J+P8+=P-0%e!r;FJWD3BI~X#R?)4G$bWky)s|Ay+0NQzB&xtpU9S# z8fpy(3Mt#)c9)K}$V#oWpqYs<;O(7mp)>!_r?T3Q92JG#294?zNdKY8PNERwS6PI_Dwf`@sX)C>9+DDs zECvwER7hWb=+PyKgkxD8P8gT8+6pS-)8}B%qN>0EQsRj?NoP9S_i*q@p*+QN5bKcCeR0=3PD&o+MxxVMS;P>soCXh83#mFSH*P2Ms5&z4y2_y@>0d*bpbgn z9B!~Sv;`r`NBFKmPC?K-KhR2QrIUS~JUNU-Do|^#a%w? zpG)XoT$rgZUYLS&zJh25d0?)|>MaSAlt~}LnH4NiDZw>wPCTj}g<2V&tp)5}gS_56 z6xmFgeae!3JGc(HBG#Yz?84Dk7v#azJ;wu{l|w9v!)%1mZf}@j^R+1_?bVb{B^~;~ZDB9VFQhH}ctihK9NTDrn7)?cBWd6_^CHyyW!w%T9Fy93w}e8La4|pag#EAOuWV>7C8ca9Ni_)zSH=Vl;2RTt z$@9l%D*{N49VEXm4QehA=mGVpiU%*CUK32{ry}7zkfz~1g${bh0Z14;>Yg zo!=08P%=bVz}t&)9%#%cMeaHZtW>q(eTnO3JcttVoVHV)$z#tVj*Z8{T6$kb@{ z?iu#PFzdo+Pss8~c4s>|>*skM+heoEXqDemv74{=X+Q7VZ=*4MIUeEXGHFHMr$_MR zc2x1}ICkXZb;97qQr5%VkEh%7yBa-fmcaXZgxUHg@4b;yg}{ zP1)h+IeG+?XPUw?JP}N^@AlZvw?W_FU-Ui%zAHM8|1h!+Bc_UH_44@d20{up z{Bhil2TQkaaVyQ^O7!?l$ugw6IP*80dOO%7_?*LaJ})f?u#uTH+;wR_pF zwRTtRZAj<#^0hVFoYYJsuCCFo&2$!4j|*W*EcGmm&YZ2)X=v1^Ew0D z-YT+zdMifre6SpG3pE(BzBJ7n?*CKt-RJBBkgjiCMk_ z=@<}I?1%fjN@3VaZ>!**_tbb8295UseC{${!6i@X_IB;Zmj34a~Z%0xL;HB z=zgDuwVahV`~uD`WY_QbOk0P|^~#;mUG;M@=AsEMX0Um^@t@#AJ+tE@P#p4F3yyYT ze%?p99AtGSuNjbaLUkCaZi6?BPTMQ?1UHD(+*|g9N7zNc8zSBe9c+Vq*@ucV0jIp> z$sStW!@bq$0>A0wy`%TU>;a(vpxq3&9`M$M-3)o`eZBgB0{KG`4#)3}-Z6jviw)%U zQQk$rnt#IhqxXjG^!1K9?t9#JzTyeQ3y$O+)ZVVXqJGkU_XN-w!PtQp!b+g8!8X9+ zfpdemgJ*!-31fUCK|zxED(%j-|`b=i4&^MCi+ zdAahbeY%_Z04{qy-AgSQ%}kC3zyk$zW8Gqq4gHCjEFjTDQ!+>xO_Gg~nHdajznWC5X+ zfnKM}ms69`AO{cC72=%i3b6Ijtwc;7r3%9@3<{tj)AtY^I0*P%EN6!c$XAO82T65l zq_6=3;d>A|4KGw{hE!(QrTDDKbF~iz)BTQ|&pqAxXjxJ(6HSu~Jhd_bUk=4XrEA|^{1V@9E1G`5@t|dC^ z_?J>vsszF%%z9j7-4pmJPHXBrpi=8o->k+(k*O~JM%_}5_9gFw*eSUMf5t)egn`ip z%)m*Y2_Qea=(iUR_8zMVx&Mo`CbpEZM2Y%-FN)u9lCm`9tV8DoP=n~N=acr3MXBJH z6I*5P4={B3{16-k5NfYvKr?u~Y}V7}8MZwhuC>%Pn!D+*7M!aahV%GWoT1}N;^HNp z8U6j3nq5*FeAg7}#M?1iLd--1-&3p+EOcWNzYm}}Cb$2G)ZKhpz~pZ(_Bo$rGA+oI zZBE(B42Xj+w^B|9z)Gdv_3;16l4VSu{NYEzOl#z3Cbe3Xje~vbqM-03XhTgO)(n!3 zK$$&qPH`5VjkLZcN=iX1iIX1J4wN=;jG#V5PLgyk@g2qjFlZpL@&(g-LHHzF%QM{| zb#Ox}M_IyrKJf%`9{urH)!Uv2tW7>S?SUQ+){4B4))z%=ylDWien5eJbxJjP<39?{ z%#LhD58vrG93R%~7Ew_Nc{TOjdQk=co;LA7Mn}>vI7ihmFRlk8T|L1s6BQbGd)N=}PEf+h!K z|JSWQKQCg;Q7bFL5%JWXn`RAhJ%vCaQnH5HLx*xy&i}7j&-*1cuy~7fH!i9?*$+)~ zemy0ut#8SH!L^I0iK&Ti=3C_%cicC{V>!ZqaamW{*vQ+sQ{Ay;{SW6k&fWT6`}1@2 z^Znz)+wD5tK@*qdlvfMrsi|jZuFpKM_tUZ|RcL@v@$vNoMW>P-55BaDm>#={ za>Fz-IWK5%KT=DPtB5@Dtv>`q${PH*#0`thHpPR0{Sg!2% z#7p?bpZbtgw7*SguFWH18C?llSpnwvuBFXlTC&ID1LJBewd@!GXz{8r=W#VUhr;+a z3>v0k@+4~~n@BM_6idWHEbC zW@M>LCOb6vjP5`&Haz>_VIXmtL8Fm~94N*}u#6p4^vB_KkxazkM zUoKlLY>RFGOc6RjZrr#!QY$TwM-3~k1WDQ{%v4#I#)2rEazPm|L!e896LGm#j*e9; zA>@9$^`=9D643(P{9qFfZc02|w=P4xF!F~ETcoK+jl@V|OT~ae)kNX8d?2Vsiwb}K zlMUP*j0V|3y0pnGaNOAG#KVRcBq0KMtVXCSS;l()FDO4?Pm5;{F=z=TpgeH}Q?h{U zYhG(2Pr;_ZSes%XKP2GG#g+?XR9;jG7)qOkF=uGSH;IIpvp}zbJw?iPnA4>4zO$(Y zgPvGu=T?aeJ08s4?2wz~MxqbPT@NCoay{Prw$y#-AM8ZwtNN@g2VGUuHs2HKk#bK% zDM{B}YNC z=UrpGUQtIPh;y;1#ARGa0pTM`t{Gr&R-%uepsP~5dqphIniQTWk(sWK@2#QbUx!^5V-;pk^ ze@g{?&zv*hkl+OKP9|6m4akK5Q8Pw}#S3<1@oiXIh`PiQg$YA3FGQETz-`1t=ll~C zdv%e%HXiD1yC&L%LH0wjY4H{Dm=1y-i!OUfRRuNNAbo-{2o;AbfPGRhlmRHMCm5zV zA=ht6mP__5mP%0TFQC=9CReXJcc6U<6vG27SQn^ekT1bv>^13CyjDFm5G`>!Jrd7{ zix4`zD}nFTk)2h@@2d%GRC^vgQe=@xJBUs=7lb5vwQk!{d#UU%lW;z^Q(1~8<&WA& z{pkSf-l6$|oKn(nuyL+v$TvuQD&%Ozr6`A=hPdAW|4N>&uF%kSgBo5j3HM*Ah`0y1 zbzYJ;_-}8njFfAX+9X6*zl&#eM#412BRvXdE$P)jKdanGgnJaKyZj1^twCv>;*>5u z&Ds!{FfLw02^6?82O;OU2%ZEJr~z10*T<*6eg~q0V8L>aQ%W@`DuJoHtJG!(DUe|u z4?`yG;{nuE$cB)=M}%n%svjRpT~z=k)OXIG+RX)qzuz8s66nbrxxP(^N6&@=^{}#V z;!IYlFL8vE{o@Fi#-*$X8Se};wORQ{iaE|s1GMOtcpYj`n%Xaj^A!LN1(pTS zpL5(m;;E9HGkkL(H$1c0q*OyauxnfAR_)x7hD&@SDPxgFQK2nJT8glG=4MfH_jYT{9sF@Rd4-~YR)#-#w|zptp7o}rCo#xgvD}>_OVL+{w!6^sWeU~T{6MM z#3*AkVQiFlIP+wHxDiBB9>69*HBn~R97F_zr!IfuX;Uu7tXUrLqW=X*9!l>Mi@jjv z$b~1{VA=n*5kG3`9D90VlS)1%l5)*uYwm_2BT0IKoi*sO~CE8AEpg! zlv=6u$D)}UsW^#dX;=!tB)2e5$3zD95x{U1pQKI`W=rp#IS4zP=THv z*~V&WbcK;&xC)C&>zHo}TCqXN;J0jqp2NQtrADsK+=PP@3HA;X+%r(LdS*thRwH@q zXBFXI*``HV$;37S(}2{1Q?I{iOploc^~}O&{vom4GamDn7=b$Lox>(FV1d=$BvBQ9 z@D$WJ#|5CCS_ez1RGvPt8G=Ac%Lr9vU`RsN9}j*{@7u(uz_{&0aPsY@9iB z4!Tsn)a~|s8ejS?v3~R*B@)}Ff`z0B9p#tBJOqeEB~=Cots%Vh{1!mqE<0uDtvderox1t(q@gxyZ*b?%W8*lh z7j%h_)DBHNbk~4h(?6o16`%ZSz4ZI#N|bv&E<4>4R93I1=ITx8cIXDZRRw;UXC1~E zIoTd)RF4^7f6OO#El9-?87(i^t&amrC;b=udfW?m({n7m&@1%-mx>kbQj~CR6BeK~ z!oswabP|gR>rCDjwOiwkjBAJ7Jvq14BhvVTq<)J4edCh3ewhH1-KQ06Upit2C??!n zxP&zT#=3tQL3*Lc!lQd}zbY*Un?@a*t-N~mrVumcx3u-gaZf_N4Mp?UyI*mBQ)cq* zQ?hb?Q${jE`HucggXj5t0k_Iz-#oy<#nt4VbP4*9K8S2;Pa0DJ(kQV{EU^4o8g7(` ziMoh1?x8Z9a*K;BP#QD|2!c>LCnWH!zeX)~jg}5+Xj?@c*=N%vlhT^!E@6#;r$}hz z^E744^;5;5%gA>eLXt5j`1NuS8qur!ck3XQ&x(6^+hSYd(_UsHD1qy4<^h07Vtocd zvb}8*tGLtbLqU4a$<29Se%@#Yd`02ie9&a3TYtoND|Qn4@Fwic$7ZOz&Y1CBW>=}) z$DFbmPR?h#a~Pi|GQb0IVA+tAAioEnN_}hJUwm^k$!`pY!~2xL8{XC1iD=w)$KN|3 zeHXaZQwhtPKRt`NFqXsucMA~tL7;XOx)EM6+zH<1z`?E6!DK}-jXC5a;|z?1xPd#= z>FJW@EHCz>AP!78aaBIp^eZqp+{0&>xBRaUQOHbzkMmi0s^6T8VY6p%fNHx!KIa0J znjFVQmcC(Jz=?mYC*#&P5LVq45g9=_Mm+2Y{8CCYel)`n^17S9!*Hqf zcyI)P?1|$Augq`+(d>Y@@dCb9CcaSguu_&B?$>c{?^32uwyHC3C+>rS+nDTb)?cpe z*m|Mt(ftNh>z6;^Xo6{b<xDipXf2+1Gp}(TNAgf##=MD^jg9e zprN90J5kH2q@`aFT!ob}{T@b7thrxWkS_a9lt<+^h3&^0^>~0)rgsX6UsEf?bm45N zh1iJIpuEA=a)hDuvWvDfRlburoMduYC` zcA*obev~`wPJ4jByiQ4UzdDw{z^6DRRZ6;fzO<6_+e;rl7z0GSuKXhGsZ2(2~l7L>%PZFWvLnkJLq22c9hB2+Z43 zCl9cg5CxIPdpB4@m@G%&S$y^uZix4Jq)Ch5$gh1rb%t1-=Wyj;{T}&6Dwy{&uQO`P zi0<3u{gtwF_;m<;?Lypotl9gnY_?B$jCWeeThQJ5d3liLJ3f=SGpR~ynm7zvn6NPM*N>2HEZ=UzTbMEyKk>!lz-Oi*?wFnbHzNiW?Z*X z9Z!Q-eH|4EeO7(87Msrp!us09;|;$L@ZFB0j{yuhA7*!do=sH^F!|{(6n^~w)|ckt zaC-dATh=UN82a&ly=cx31?Nq_e)TclygKPh`I`)6<>`Ntc^%zBk78ce z!>HBjb!HB@se%9Va?R>b>1}NL=%~}p58#Y`b|(Ditoj52(opMmSGUwR(BP`n1EAQc z;k|!yL#K-lyYS{qz|MIV_RTZ4ORDvu_0OPgPU{bMIPKgtn7pdp%$>L@+}s|&O4}qD zzlv4}+X+Lr@ILE$VD*Gw!B}Z^6>zZll&xQ3<#wInVEz#)21aSY# zRrW+!k#VqEVK8+fUliVRp-3A@%Fu)9Os9jP)gqwy#kZk&=Zc}>Bzm%;=3w<4Z}~Zh zo%0tF&T+4!SqO) z-H)*^bxf%foc+O@*DsW?`sI(a3*hC!V2t0#+v^N}Trd<$+S6)EYMjpD_9^iw8SNX{ zA7R8vre_>V`6sB&_~vk*AWik}oWu$R8ApS3Sfn%Flp>PWe_p;u9J!7aIU(pb$CuUI z#Z^-pX*NvtbSspxSbrG{N6c#x)^D(J1z}F;MNMXMe zPja*Avmx1VghS7nG9~B9?D$yFI^nLRO{5g$ep^v->~p^%zL5AsZckEtFK_Q@sl&Lp zG9H(M_J-dq)UX5KB^1+uKJ%g3m*Vw)fJDW$sq`t6(|gZuH@vqU@KVd)JP7N^xbreM zRa)X5XBhGCl>QGDSbPNFNVVyV*LSyLFL%?y_Z#w|l#Ae&do#ZA+3a45ia?KGVkGBl zW&Ap>b|bH4WdN01to@JPL}r9WDr6kas>nnymFOEPVuXs#-!;&OsZN8ZZChuEWsjs5 z^Y2w&8v$4iis7P|+R|$~O*q`>;|xMW(kIJ2y%nbqH;dB;Jy(0czIj$PnGtQAnglq( zXgoM%$Cu_bDnC9g0FwiewL*dF(nD|OU(!3&Qhq%4TFNVDb&gFn)qQ6de+OR`Pg+Zg zG{co;Osp%)DSZ=4ez1b~8R-zw zARO}mm8l%d4B8?fB;$bcfv$dv#{a>o-Md@o^|Ke;*3})= zmweJfmRfZUT$<|9j-y+!x9*n#cCB5Qcl8(Ke@#g=p#RrJNG3aD6ps!BBu4}Ugp(%h z1BC`~F}L&lzhV1qZD>!_)w{H=hUQMI=?PjpJKw5={_x-Qq=AfZ(THfKqgcK`5TqAc zlMQb5iFQ&_rVfxI7cNB+C{Dy=1?>UJAw||8Z18hnG6+Ou)WnBG7 z=FSK^Wn)xGO%Prq*AJdm2I0ew=pbE#Cg|C~B!4{G!2UA6cIY_}++ox%4^m2i2j=hI z^H}>xA$dB^kwk*R7~$PHXcA#b-QE)5GExPJM2y<61V9Cm(t;J8-nDnp7!oqJRRbpJ z{pz?-c>@HmkqD)PP-!22nwK6`|IV|Z3l z#fBvkiIcth3MUhQ%fzFE1pem5y4kfSE^Weg$U_B{+3gk>YXuo*rD0hQIxg$*4I0I1 zim)Yb^TlYLOhrm4H|8fO-hs7seIp7}CU&e{UA<|31n(*=>@pMA+PaR|p#hXZVcjyp zd8H)c!0LdLpx`+zNu^7rVcoIu(ED3QAl@l?Imq@Zo*soNM_h$Q%kVZdLHH3+Bu4)3i|0a>icqui1>&GeU$}B{ ze_$d$bPLoam4Jy~CRB2L+XNt(BOTEpErom{P!YgV(bX_Sb17nxLx1S^J1k(ryo>HT zkb8UfkLwn7z#}1f&7r%#DYXb;?55~D*dqN-PLz%s?bw7swfl6DecUVn#f;~3I-q(| zasghJf*%l~h8L?2ei8k5g?c)hvsWmlwN6r&z@?z$r-*@L71_kh#sjh&qIMn9wxT3} zLp@=(7#we~(pIk#xIIT-9xK*_ebbilchyhr#5Mc6dk-1KB{bq!J`!zX+yi?Fw#0T2v``NSC$ei~bDN@Jub-6$Bh9sH<~v4-^I1cK>NICBe35;qs*Ab5S9 zaDVPW9mbH0OlC>eDP$d*MxRZ68xEPB$^u~Zb$^^V#w)6}! zZg1i-7wa_8Abk~;i1%Aym35jvata5Iw?zmpYK7+!4U8Du)zGrK(f z;s8-xQHBo0pqPe!@Y-KIr@oMK_H(>uY5hV6Xhf=Yg_$Xvc@s!9hzUG_ilVQ8P9MUN z#Bscg0Vijjrcdo+<38$2n*!{(c@d&>429@WM%r~^YQVW-$|F;FWc_|qqCnp=R=W{< zct#t$PTZ8yK%36GYqG7dt+Q<(74%9LT>qJftyGIEZVTjMaW+YTm=m;g`Q9-jx_B7>#!I4AjlR1@{~ycW3v>V zrK#Gifh5x6P}G>u%{|VS%lEMb<1LWM2bV$+XJm0dam-i4pCiG1-e35A3`B?!a^_e1 zfLM9Iy#i>WD|zf9o9wE|F@<&6Fxh79P88nqQ&r1@dmBo({{!jJ~FnHIQ&wF(zY#-H&`z__5e1W#1|n90l~ zW~(;Xmp2aOUJ~vb+Do)j0)c7PeV5wr$(CZQHi(FX?n_ z+qP}nb~?75bTU0NRZ}(p)q8oa&U;SnXFqE(X26E(G&{CSOm;~CL#M|~+%rGb)3Jyb zybna zVgw%!I-P(9ayBH4u)FZt4>yCg!pQ*=u+#CtleWVr+F`(UrBhWh%&=30Q&rDh_;OhD zMu^7YX8o}FS-Bs}&N9dy_(b}x1IMF;>W%pbw`=x~yg2fYg)qvLbs7_K7{|u`DetD` zN;@~ij@evwLRoD(Y|?e+t@?>4HVKt4g>vY|T-D_9mUEPctX;WA!6;XxMX>?g+MP+Y zE5pn!+;FP8!Lb~8bn7l^@5X*8yT8lWChnn)^$-Kp8(jQMsMCjXVqXIodN=FUi< z@~O`&Fp0N?(v;7uB=vvF&>)hGryO?ZvA%&m>p|(}=}8|?-FKIlOHoV2-!6tfE6o=z zDDy;5m%!6)YJihQx;xN+<)8sZ;hS1q^aw|z28wL%%Il*SMS(9yK$cULA?V?n={AdK z=+%l-S8qxq_p6V7jcZAuV^0NXr34*D!^9%97KR#8iZaKA1pkUfJo>k68cQm_$>i{~ z^aMno8X|I4s8s{e8HTMX%6%His?41<<_QkREV-j?8iWfzHM107Urh_m8CMNQa&XiSuHte96Sq26}3 zp~;ZPK5kc*Ofi{9BuzD`n^p!@!Jno=w_HA>LTzL^giBopV@NL?rHIXjw=gfvkd~Ae zwqRd3N}`KS6U|j2J;ntm!bYEME# z_RvMU#*cCLr&d`tOu}b_T#K-&O&@H;tC!12fH{P% zf_{QyA_=fY&p`m3aQgqbl5u88lzA({xDVmg*xBB2nq3zq)U%AJT-eFg=rOv&T9}~O zr?ri{fsrtU<1Nr>DMY)yvjdVv;Imh^oIz_t`W;~pV~jR{ZP&yX@kUPrZ@KZTft$GR zZdBqp{ zgI=syJpFesIclJ-uvEt^6Ll0_AjL}x9-K+FHY__*FIMhqqO2QJ*lkWaq;29;;F;XK zqs$%-?E5WjAI?^CG5OAlbLMH86;kScy5|xzSLW zCEt2b8S@|2;?uy!r;2h#d8l5`6KpAu{kD!OU=aqmLR#@iD9hf7utT^vgOP4^97^^5 zCiPud0yzb~(g4ybo9wS7O#%5s_iH{f-u7&qE*1{!-W~p2Ya2*23!fp(VA3PIanhL< zD-w7s{xrNHn7C2`5>G?R1ZePhiVD)rdu-em!mb$k4^9IZD7$>DXUIK5y*~5}mn=1A z=|Ma|HrkpZwFsGC8$=c}SeK^~msE2}G+{gS=xZN*kc6TW*IfjDlv*wrg6lUv%(Cu& zcRx5$E?-*2g|PHl#O@)PPsmjuImOhy!I|{_q|SJLSMr0A6Q702ncuV!K1(Uo@GLs) zC9|@LLyyxd$RH2YXj;EYh|4x%LN(-sO1vB(`A`Jw7Hon@3d97m6B4P$X$O~C+f~U* z_$Q;{@$CSWBl_A4j=Nf26!@m^dA0@@O0UTp#Z z`J0;`0uVavD#S{Dg_ExX4Oyehcu$oI5z&WVuAI3A#>N?%N4Y`NEB-)u?Am(-dVo26 zSbr2h@!GuGgv{lB`3~N8%V%MZx(oyHv7ExumB6ZKO` z*+l@)eXBk0St%sNWfn(wNBPO=_9~fsl83qK;&-3kj@RG1KG^JA|G|Hi#v5E(1#@o0 zPB&sj!Bek&mP8E!z`ZDijBUwABUf!TYY_v54nMp$kqZ! z2DonbbS?&fE-CJg1v!*vg(-bz^rhpf+hwhDM+F{8+YX*5IL0QLr6w;&PcMK#RP{ z>e&n#8iT5m+a|yp2wO`Tr}vfeVc&H)n-ybt_5HW^d%*IujPKuI+S~3n;u#)%EH=ir zLC`avZfcva*D|2B_l1yCVb|+eM*ZFWCi5rhUqt1gqx%E?y%BwN%fRs0X|F2ulk)bG z&*CCrPls#1)BdrFu=pQ~N-%A+whmBVeM(8|d3Cdw;Q6f#pVjc((s;U9#WDtPiZ*yo zgR>{>X)b)~iXO`|H1JgTo_qOq{&t42clAEk^*z^*uy%ydN9MiD-Zv;LmsT^`U=jvFG>OXy{3E zPL4lhT$^3T=dftUcj@X?ThkY$XHVwo)h^5P^CGO_Yx15m7hnswMRHRhfY(4br~PkH zEVFG3@8MW(>&I)~%HRH%r@TDbv-EmT$Dc`6Uz*mw=72dz-Jfj=tCWeIU_pEwUx2my z%C5UDfe8SVy{59i3;f>uvYD}VLfYKlvX$jMp!Aa6XB&MBc*K;EfV=)wf8~JpwlT+H zPp{8Zak20U*AbyChkx7S?VElJGBFj7^61BXRJ2ABZ=9s8r&+zPpzh``{|IgB(N*r} z?xyk~?HGH22xI2gU6#J0d(NI3zHTve*|I5{*Aw6Asi~v?F3B0tx}Ow; zF?aCy5I*XP2D=ZjuUC`j~TC;pOuivDS$P1VkHT|@(tBbyl zYv5;YMdT^&ICE%`_3L3HoT*7VA@yyddjROtCu#z>Nb^w|7j&HEI;LKgNqfRJQbT5v zPf&uY%f5u5U>q#?N`@?dHU&M9bF;HziM<|guTa4{?>Hl1e^>=UxG>URw%;~$`;OLr zmBGfQ;c@f*IVLb;qInol{94gw6C1qs2Wgu0^@%5S-(^tp6|;lWrd|lcPMh1JRRyG? zDNwVahRB38x9Nj}iQDC}%^7$#Zjgg{-fQTpy)ni8V<={sB(_Su=Et2$yhbIW5 z6+8e$<9iRqluN%9sZ4&Mk{~}%QUHDcSftf&@@4Uu+f=vg9A&Tsh;^ZyG#$8pM;W4F0cl*%6p!hD$DhRboXhJjLnnMM0-qBUIcnN1s_|-c zigi0$oE&qVAE{sSG_~8H!;TssE9=^BH1)Su1r#!#&$M3-vK|SJ6w3oXzW}|aJ!?0O z=zL9orn*0G1#lb{Kke%0yBnNV8$3ov8!{zZukm2MZI1`?_Iy81Wa|uP_5D)P2^>Bi zRzH_6^1Ov}dz(MCf~R0DPrfjVUg|X$nKjDFHYUGA0BIa?Qw(5h24SgA!cOmUIQZyZwj+}q zUXOYwu=4}ey>0*22o)|wSGocebzxTkru)-A;E3+Cr?x%(P-|m-c1q|u!;|_ z)rQM;%VG2f!oU*&`3erP>@VCcvMiTfDX=(C3Eoiu6avvYEu7xEa6qfU+s(<`+8_2H zBJQ`WdGPoL=JY$rz~21+M1=LZyZNzBEKq+uhO{UH^-e<0HR@7F~pd6=Vp^NWA1~EDnW0dbC;MN z?Y@pP*{1~Mu^CGRSyC!9;?&l~0peSmy)Z{Y?DY;B@5f42*<9{* z1?H#BaoOZb52Yb5Ym2a-%fnNeB~8B+?5q2BGNO;WkZ*wzsr!C-Y!y5T0ETEG4~H;+ zAn^NgI^w(Y#&=BM@5?#veM|?jT=@b7+>*wKvaWoW7~IEFX-*1Eq0Lq){XhZn(b*Np z;&_g$Yf`#8d-bMwGa9zivr;?zHcD*A*+c0ObBzeFdnok@z4b7XIjgO8r%hC<{iKaR z+=P-cP?|(}ZOL%61=Ya=ptMtf9<)`mQG$3851XyY#*8Veg>Y(eAXaE(8Mp z<0`=$x7Zo_$4#wHt3!kNhn&&0bwXW3-(Aty_B5~2wl)6(x@sXet+%ta#|~!>9jS1l zVnh`gQi>##wbhl{MW>xeKPTOXi;$H%Oq{p)S8W7)z>>LSF;}4o!r`%}xMp+DvX+%$ zElIMFlIAH`nipBhc-darTrU>nsj!HBz44rTpXJ``S;VW`a09T41Dq*&M5{QfXB~RN z3hmg@#9J^fWfavAFJ&aA&Y8*i)_nQ`C!sEIMF0bSYUx{H5cnIxXW9b z=;$@vo+}Q2=vS78rV!srm-~x1b%bc^{gLCyRKKFgA+5L~&wAOlq5_w3+J2pUwD3+8jC1Kv^qu_kBTnyvDP{r5uETW!u6Rv1> zMMS@GXkcAeWp>Ny=`9(@;LT4BXdl*}>9 zlVxof*@+pOT6l#xsQ;(p>l7>fx z9TUsLlQIh_8h|zQ2&tmA#)>XXY=<7ktxYg2lzfELH=dZ+t5;aq(kzb1Q`sO;LTvKP zLyCm)zMtV@Tprp@?B)PDLLPUq47q16e0{qQTaoGbUCP#dSK1YhB zDE4!Xgwio|aH~BbbROC?Z|0ir2y19WbbZ5%0V`;2GBwOfrjNaKf7q zE;1e}0{81e%q-fJd2mV7_!5DR*mUr>BUVzs9>rpMUTS|kjNd;G6dy+&+^(FGM=EjG zbjLu=dOI-iF-y!2gLG<-QlO-S0CzatH18W5^j*G5Tu>Btg6?*NmvJ;La=xJOlN(H9 z+s;%R1pGUsQ2IJqm|R6M3vM1u0cY- z)s8)j`%4JdM6wqP2m8&DRNxmLBZ(*r~6x{GF*&o1B8ws%v0IJCqWmar79>hT-|hEhH86kX?<&SB_BP!iaJHS zRs(S0$M)h*B6H`;{;O%VTd|wTzYNU9+bq9!lS;x$k9SCwEce~@>H-3B;YrJC-)6iS zX}Qw%UTj5R_o^Er>M%YaA*iRm59$T8%{itxadgq2WsS(?8%mSWIRIx(6r=76e)3%v zwh$x&c79#aDDm-77yh08yw8sPq3A?&SsM^FK4kxmAL{e3jP+|&9-=nH=R&wOP&WCY zP3T2r0QQgE!?nz>_ozT}l9)VOjO>7KE^xlYrqugsiyBt#EaL35T@xjtT_AtRE#x&7 z8eZHE@>z=7l+l_-c;Hi%4qB01S@}62@k8@QTT`uawa#VFkdt z6$J9uSUdVj9CRGaHD|m~yGHz{?CgkiZ!tRpGN@=6v9J{F?`ph5jUD_(8;fu;5~LRL zDnX$DwKas|30IVAtZ4)dAPZ2_fovnT^r=B4E#!4P+iM6^I>N>mt;-Ih5)C=AcP4$CJFFfACYmb3k8reA6hyOtNy zv}H|?2K{)YZgcz8KqX!FlZM5g?h^cnW4f$GM;X?w%xswp>z4Y8Q<*A^&4!9^$veB& zJCCTj;Wf%evKP#|PK&d%2Fls0v`&3U1=G`UqvBHvgSN*E`q)&&>$&XC=v%<$`Nvoh zr0v?Z-|^sZNnR?an!5i}F)Uj9v)fGME#a0`pV!k@aMtKf+}`%rk=0obCgN8++_fJ& z3)W}X&!ldjoWT9dn=GLFZM;&@&acmEX%y3>cha7ea?am&|8h=3!1bZA@5Pc3E~oO! z$*vuV|7kJ6L3bo(@8#2FW?!VRW(BbK?tQw+g5mmWI9l&&O$B$=;gM?bhGbfihC z*arc#<61#K*@DXC0{})sh(|0wL`7pDC(YP!zkOXI)cAms?}40-j1QPb=IH}j!+xYL3Bxj+(DDyXIXJ4yo5SI|z~5H~K@=k}ga4-w!o?d-qW_ft`7i3yI_ zm+E87A~dT1M}aqB7S$z*}5p| zi`IytWM(IUt&XcR@1s`6>2g9*(MHy1-|LE~VBd2RXYJ~B`)Dm&r{mA(HTvc3-}v0V zuAhUC-!M&d&+>K`vz8U^j@F!A=_%_L9ODe8nhh*lBfDd@=4%bO>kb~QT_OH~JChEU zLw1O`rs%C{^7YajBb9cc_$GbB0>cPRkn57`j7?!1q*rU}Wj~18)EEE3*xN+v{Bpqg z$JnD!o9BYW{5SlE@dYkyQzn3ELuhqDZEaVGEHwS41vg90kxV-J`Kv zq#IZjvzKeni1A5EE)+55lNHQeFtT@QL?$S(S2j(bZB9sJG{>v+>x#wkr{UDi10C`#F|$Vf%KI0 z-)EWjnXU4_v!hO_=@n_%Ukg+CjF$TQtm#<*Jdf2EBH)ZsXl4lDn-d*?WkWE#fcaNx znJ+sE@nfJoLokU2`mfOPbe=@Uxc}Km#95QK_rbQ-DrgI*jXxgHay8*Q(k5RVltNeZaR(xV(mWzJGgGjlJ&FcPZ3bD5(B`VLPL(M}$As*86j3 z=i|bm|Y;#S*6(y~yndd727cH->y$4?5oq&b!%EI>c zDeI)ssVMu_g+s%mb3>F!&7HS~m5bchCKoS&=8n69-MhRw-N*Jg z=VJA4QvO|Gp(~?Czi7reUD$u;Neg~+{gU0I1{ArsPkzlNWqzO z+lJP&y|k~}hopSFr+U~E&XT9cBUevtB^_@^`SjrP%vh~PvT{S`;du3i6o5#m9q^HO zTp~T|NN-UJ?m4@Yrf){^T1(A)cx&k6o-A20G+h9wb0ug+G<*xm>+7v4cbnqOpvj#y zs~4~yO^(-@J1p2$A3a=ZiBurLD*RR0u!=KKsdo8J<`!x#Q8Z~~satWMR zd#3QjDE|A8qHpG#47%kw!3*p|0p=U{!vL+2)7|3YqTbQxzYwhcArJT$9+NK1^k@L+ z3w*u3-Eo`79ttFXYIC{|JG{tVesd-p-EPIyhS7wXr3cxb+`j>*=Jh)ZWU-8ga*1vi zyEQ8IL)JW(8sQ9?d0Z!|Rw>;*8{W*YS~R9BI5m37)hV<-!PEcnSj{vI24rhC>^jVK zoK_5~k*F#v$D6Ozt}PN`s*7AN1HypHl&EJHDn+rU(|+5OoxWYZ&z+fK{Os;@7Bq+7VvPB+XpHJn#W?DPEW)+sAtf$3 zu_4|p*p_Aa4!=}LRH#;15)@45WsZCHs1G|PKvHxV@6d*=)m((LWlGSo+;jjz3bg1} z$0!Y}vP6kk$b0tiqAD`ak2Z}&VU@3Yr_s_qRU z-F!Z9w$E(~=lny-Qm^N_Sk44Nb2T4Y6IZE0gx9CRp&)4fuey=Q?bu%;2YnlZhUl9ei~n-&N{E1%$DqdxpgC-2$H>x)Yv~awWlCjoZO%U6A-OS8cls z0g3~yF(0SrpPa|p*YC$7VYbV+W;TDeF&%H;!j=h7;I&aa+0-gZd-?%g13iLXq79B- zt!Bg#L!$`>5V#8t*Xk@9w$mGfiWNB|n zK#d7@Bv})N;~0%8Xo(~$BE6L8N0N2}s~1@quVZ`GH(YB79_l zIH`dcaPc4&^&pExpcXnZGF0#Q!B;L~|f#*h;cl4c|XBpq1$->o9N1;O*!1_QXn zkZlF1-_SpSR(IfnP9T<8Fhc^?#xC3cDa3k88b34!2Lj^zm%QNp%ZXjgO^jU_&C}qe zAYcHlZZ6gimj7$VQrERZQ^(3>wQOZ=x@sCJcU z%E@V6n*GV8#d(6A_`*ByCyYh3sg@`-=ump>OGQz#pJt?CZQAb{ccZ_Py&iM4&ZlX>n zn{FacJ^9tqXwu<$^iDd}Wb+GCq9E5BG)DjcTuPg%@GT4LHZBgHswdMps+M@v@_a=GACL^%R#aj~d9{ z`smBspQ-!Wj>@*)WX0yJ)aXsHmgBdxMHUKQx`+F}DX=qdTeODM3OS;ZXc;PhLd>=wVHdSp=VO{vqQ*g1(9;9PgRx3SxswXcQ-L zYgVv|T7|6%v=y)Pf#w(oEcl2gI~&`#KLv`?WnNgb-T19AoX>13b zfPxGWWvYc^X++bAD^v53fr>=4Up(M4q7TDh>iKZap)XdTueDmBpnf_Z_VyI*rv|1> z^wg~H&H~=f3@jY6q9vHnk^c?M9*qIq<`6OrdPNaT`}lyep9^CKm~K0?;`bK;88y>R zIsjENkwRyoB~3&bz2{y;JLeLi9fNIS9u}e^*;XYXt)}do_Yo1%SuDgipEH;0x$62H z586?uN_^G)gB^+m2hksHq-H#ig$JQ){D|(swk+6aY*kmeZ;H-bC2E*h$8jVMNBv~q zZw2Sw=umrS{~0F_2=m}?2t!Eo}+`~Mf{JtjMLp>qVQ%w(EUktqM5(7+=Xj7c?fg}2OcpH;mOx6^Y z98G)*`nz~C9C-KXWo2$QOc9LvDrh4{QV;#H*kc0hl6GxeCGfX#}mu4;b%Z@H2yyvn@KUBfD6z%2Y zdB928wW-=G5>HF{G!;|&pw87is?BuX(GW5e|6tLwA@fDnUr&&vw>qRe#9gjG{hJtu z`>x1HE~%XWeoXi{h7k2p0Gg%cmSYrhe3P$nG5hCbhkofx;;fn#Y!-&A=!9xt-+*fkcr#8=P-T!+gB>dn0+5M3# zWfHIBm8Am5Xk9Kp=jD(0Q<178;Bo)*Hg&bfUtQgS{W`-bme_wfmhfp8(LkN3-CC=oPp)k`J1YnQ>@u+JVnu@Q{yHNaR85nS7)>Z>puo)20bk6ID zGjOJN1M94Bqc}0ktfcc&jR*+5MsNb7lvsW(ae>SND3rJ;W869H#@A*!!_X0jH8nMx zG;12yKecMtKcAllwhWPtqUcLIxBjQMyt}W>_NUjj{=H{_QlHk{#+FvvKacN#zNdFT z#<>bE(F~c+ljs!Kj7(MKsM+t6Y*sZw>t_#`5@htBEZBFOnv1FA83<_H z9j(|$pDZahwBJXpqTuD!*TH81zuE?bEf3T`uV`ldDO-8Aau91f{TA!nb&ICEC; zvh*o6i?t~4@Nx^7bDe-`>xs0*kT0bvrwW$TiubUB#uGH%Y#Cxzyo@Bq)of%)C1m9m z4qjav!s;VQ3ET5vg;JF1W!s_>nN94eBiJS!!jb9pAs43XV%sMcz+gH6LcBEHw%*I? zpK(;ArGjTuZL}aFRY4=nk<4g80|^=~Hxi_+Z5c$F4>uMs zwoYG+TbT7w(y@E;Emx903zu@iPOVcUh_>vfP*fwXSuA4-n{i=P`d zKacm+*pxiGEMwXE7@ zl|B7_MFrLrp=hs2ZMZBoMkhrd%VmAVGsD!Wq8e1aH&F_0{j+Z1S2ES~&u1qS<5J4O zQ)SE%0>Plv%OjsKZdW-}k(kAvK=lU20VCZwm*$q?Kh8WEPaTVt&p43u6}*HIV@JVz zQA`OIFRw1}u1*6uf_W_Njwq2H6?f@S60tsxsxMSZ-?U9_wN6HdlX+G4fgtNib{t>R z>+ST6Bg?T~xey}`?*O=ds?mD@`9pg#%E#L-6 zWZ*Pfj$)I6oWY^~qr`7mejG(lP}29u#I_*$9?rgGf2s{20WluFK*$y&)SFq$MfxmK ziXybTLc92oS^&2>EhP(nJzCNHPagBzaxz|t5h65n^a2R3{xSxG`#j_#c?z~zqYUb4 z9%OMSWl>8sT!RiB-@mXxPHDQ}S8nRE&$4Q-g+AJ5p+_?*&-p`U%Yq1pUtdfaeoLVy zSfeoN7%KrF=h|GmR4=vhRLCUtgMCG>=fbZk{MoDa2ZJ5=Zu^d&?I*g!_FnIkp6&8Z z@0Fg7na^~=e1W$349-?VypQRi5?qTQ{8GL_Ecg`yhAzsm(Z4=}<&9 z#60?PkiRJ7rwZ|+qJ0j?IuChq(58zi8TID9^yOzEg;h9DfuJ(=E$qS|FlhpDB_^+u zqFQ~+Kh#Cwp~6QEtUC_&CIr9IWuj+!nZOFbno?(xRmvm+|1H#Y5g-oot++G3#Rtvg z1G|<|N2b`S>b9Cdj&tS`ZYA@xB>n=-CdUd6Q+Pc{Ci5|B}RA5 z^KhmKzsB?h^M0)b7C-S9A}*Az-*&Tj9rQ^^qBn86GJ={L1P12&bK@+=Sp^f|cL*@H z3va#JwX(1Mb9RX5(nW(Bx>RP6Ig0dqr(Tv{iwKG#t`uER87D|Ym0l~B)bF6-#f?(M zCz$m;NPF3@6J#=@L{E@N1tH{ziY&F=4Pu6e;~<4tIadA)VI@QIiWV|M;0yHpRkG(u z1mHz;Om8jYDI^Q^r&MKVP26OFwd~&)=nbOfcs+@0Q%gNbIC;DCRs{kZ1EjR1S`H+F zpjPww)Favgn-a_-c?d&lb#0Xta@(rc-{d}XL<4D`*Q{mUTI`_8n^ODkRW@w7sW@Y* zZT2b_S}eyyg|FRdU$pz12+7AXR3*dbU`)J9(wbeZtN4e?D+bzE7Td?g17ZeiBkoo-jB>0J>4U}RBgB%{2-amR3`NK^L{Y4xI;&B2 zRz;^;pnFrRTNC+g>^QuVZKhh^aYAaKFIt)AaftVAo?>jD1@PZ+`%@=j6eh}1BVX7S z)f3%xa;jq8CMjeW7A>wol)egpRQ0$OvB2;ejRxEDB zK==tUT+!i$gPKJxD!S(yTb;+4oM*r#3{eLS2B}*uUR%)yEVYQ8b}@!OGMGL#Ks)Of z_3+K-PHEv|Vr>f;4wnwNSZkkVdkrlDyRxUKm8AK)YMeo2t7{*CYgw%!*k$qsG_%?< z{Z<47d$8!s9#zXiaz;?aXdjlnKmreZ7Bg(~@Tr4Bcv*6)fu^H9y#Cu1L zU|8T}j=Az2CO;?uH3x9{#O^`m2@a6zTByB32o*97o87`J0XM?p56%8U*rTlU>)`ZD z{Z?$0u6v&$JKeIO-}d*H)%=5Pl|6<rkkEzI6rq|KaC6hmLpOAV_Qbc&bXCDy+`S0~y4$x|xz=8$&hiN}lJ=a0on z(K@9634u+6$UIpQCuM{hs;jhpDcRH{+uSBrf!RX-<5?M` z@E))v_-BWjx_s#ICKY>khvys;0wi7Je#5&1mA3>nO>~|U7%s+Cs&$L+(J|Nh`%C)K zF^}oz1gg(=@JsjCF)c2=NhlXY?RO|f8hn3sh;#sLs8_UGEVNWuHl=Vc4XaW-C+HarGYkR;^b=}@? zo-WGH%BN2((b^!TF@zx16DifXuKI>d^j^q?QQ=|B_?X|UB;BDT=ucZ3J;<}Zlf?qY zZe9HrDG?d%C*?;mIfPX_DJ>*A2T`L9tO0r}U<&q`<9DZGKbO4QM8qs^88e&={olqy zOir2)hejt8uh&5Z7iAUC;dc&qnZmhdT#|7Ah|@j(VfkmpV=qdUQ=V;|1V6MyJ{KE6~^zqXYRrC+zBnsEA#p4HF9lWcCY3@sxkcaEI+mKZAc z009uE4{Z-X_MWUg=XK)_k{=?^lF_d+X*4iPlbSFTzTmpr06+H@0+`I;Lc=2Fw9SRT zP+$%CiqlMdxM6y!LEv2t2`Tni zl7~o<9Wsf7MpFleKq=h*NBJ(+zfaHh0e2AQkXwl1rFR%NRCH@vc%vr5kvIdo(#8lX zIO>P+$?5i+B8NP)S;|+jUZ*jho~D}K3lpR~F;$ruiAl5dQ!o9q!t2~DS$+?pfr1UPNFZUIupzQ2TunENq^@8_F?TE%cE99a=X0iyfY=va!*XTI(aE?%kI(IKCu z6JH3ya(B0$8^m{M{eXPtvGGV&Vb^rAec(rdOpDziCP#Ap3i)r+dVIGHWGOG8I>gN{ z;>!52#4jQ!!i<$^o-H+<_t>e}U*#}`qC(gHA^08}%#kdUkAJ`b)y`dffanK7yNx|3 zem}KXjX0BEetISUN{;7oMW(B74MI7DBix@-MudWe^`uFnaJm-JhpTelFX>l;s2jjL zaYhePA=44DQp;166@-1+A7{yOwuu)JQx&oL(vNS)YH!rI7YOl}Y!Q7`!4O1xc{M9;`ogm6GT$iQ%FPk3@sw=kD1K z$loqhO8tiPO8HR3=Jgu;eA(#;3X|vi=pj9PEqyMV-_%#MSLk|jn}aGJuvC*$iCtV) zhFw?rF|vld!cQdcfJmY)WF&B&<2sZ&6UW+D&=FfC(b`@F(}`zJoNG2GsK;qpCP2$z z?`2~e@Q|_Dy!CAxQCiQh8Y*@U{5J0ir{SgTsag$s#!J0WT7)hPJ4?M68Ztcac*j`| z`?Q`D_z*x2!f)ZEBL;+jWd4TH(eOss7lRsfG!rqsQgpG?ci~X7gJ6R zDAuVS;jqKl))ok+;$96;6!jIpBRX(EnojyQleV7mZO0Xx$7sVNztrE}soDKUX}{jQ zeZgdX!3lto-7tXFYKpK&?Zf`JLX3K@q~l=V^X`t4M=9%>+U*h%#-RD!S^ZEb$NS+h zVt4D~5Z8|YU}d#0KTdc@wf|5OI=}#4hN`V{Ic^Rl1b&ygWD%cUtdAf7X!6nd`%uFE z+v{Ky-AkfXEJ?qtJ}(ecBoDliknAliW@5jrAu!hU6Ex&6n-%Oup}~O)X(^%ThOV0c z6#dEHr**nFMxy0>FXS6@ZH4P`}z-)*Ii!X~T8d@NtPZXm?9R?_G=pf#<-z-Wvu3a8EID$G#+C zy10e_y{@_bKM>SPPkcxpWCMV;z&BOI14Xo#^AzHMQf(f3=+a^Ef0 z*IT2I&ZNM%Ca|9&wBcKzgSlFud%}aSIQVem8A8i(zp_a--(|aMnG6Xxs zg#IRs+5A9hc_z1k&8Q1i2~~XDzc63(f*gPSddYzL>B0%;2pIK8wCPP(YMN6OHQn7i z_Xwm1d-wtVZ+c6PhP7JK7|tw6;zA(NA2lIjn!>teFgOyOekhPgrJ!H1zY^$#$Y23} zV8QuX;n)Nk{FX^IxJKogm{8L%XE)DU3og zd^^>M2J|M~6EdAkQ0+<*p*ut_3p7*PszX+TEc9-uZ0**MtvBQ!&M1T##x!{RUf{F$7063>u`IAou=Jvhu`np~j0Uf%2xE-re3tN-@R$KyYOD~! zG0Yf45f2eqwQ8VPs^xLGqo2u9%-a>aphJl+(4mwo)A{d-Z;)65$w|)s=X@4fN1{(b zYNB39$7b6`m6YDItoM3C+!>lw&%}Jw!<31m(z(jXN!${uy;!CZ(hgH{t7NG*sixy{ ztCGT}>EQ`xD4MGL+IdHw2YP^uBGy0D6sF7+-WKy-6cVY>hNg`tRTa5U$63)Wu@BE! z8*bHj(J^caZp^eH&Q<8rB85_o%rJv@iY2+BJg^O{>PZDcIMX zHt`V&b^O}MSG;IuU-JOk@{FTw8qd9rKJ(5U)kTt))fX^Vc9XnW91ccbtK!(mIa6i7 zdF21fAG57%p7t*3URG}CvpHzx0Ac^#VaRz!w9ZrG`S@;?S~D)-`1JUWoox%?F});) zv@raAJ0N$AQO8>)Im&n9sB%Pq;6v5b3G#wC{9k0fb8w|i(ElB6%#Cf^wrv|5+dj$0 z)+Q&$#&}ooqab!#C*9)-6DnaHc z*kWbat%z=>dp3%oASM$2SB^_)l2mAQDfGhZZwD8zmHJiC_Gvw`CBzl4O340+Q?W%h z?sac=*9%0+P<+x~WoI!^&Eq>pb>Zcqper%H^sWYm_9}jBbTFWi$xgr@e*7SZ`f<@H zJ7B6x>^yn)`{JykXteR)+R}GRmz_ey-AtjyHri;r>6lA@HNJH1RU#U#r*M5yU5><` zqLk+>xTBm8|3CXO23q0oD}ZJP-?i?F0{aS|i&~KE^_Y~Aii!ZZ1BE?UL6>u#(}SPK zWjC!3w7QFR(w|;+%LJP3_~Pn8mAf%t_Lhja?T=o(v`bg3e5h_lPAZypxGqZq6)D>8S@l9iAhFm?x6GgizF>nU}|qu*2mo zpRGhL&qtLFM>dP(n$PRaR>37Co=idirS`FWZ9nE5ZUuj&(SvLFDI|VEhdi(5A$R<)N_xh zE4Q5Ed!3uOvV^Nfv*eZ+hEoKLsmJ5W8$)l3shw;s+9uDR@fRz{o-AA&3{>O7{4MmY zc2PNpu0c-sQQ99q8LYQ&-l?UbIi$n-IGj)QA=7cTm-s#uJ{N$h-;5m|0}^io{fZt7 zg8o`K2RVK#Z@Ua%p_1i**lkvd z@y)DA&v!$ur3J7HCpx&tlcDW4XqVhsby%I> zR}t0BO{yQ%(ROM8JX6}mW#fI-4^1pDHN&?lzq-Iv!D4_1J@D{XL8j$iDN?J;yybQy zR%u1|r7i!#zQVFfc5H2;^PHkM_epU<=6#ZCRh}t|g7qlunDj?Pe&#{}RywX%_n$)v z>lG32?nE9Okq1yL7ivm3EgA08dH;qhxoB-R0sQ``SE*wMj!jjRgM!eOnk_bq=qD=5 zFIL-9N-w~glD)X_Ya$QR??VUXVI!gkCX%p;%%lP3x|Z@e*L^5mi^)iyLp4(X%jp>$ zKB`ygcL|WTGz95F1P_0H;xDGMU}9pJTh#k#jx8cp=IHDQi)ykc0wzOXfFY~smfqhw ztwNKz1#f+pag$KXwh>h_?8sA9c&=0lvqPDbP6Ys?tZW45sTpi1hj^tja~+yQwNhar z3bSsh*($|Oi3B~6yu?jLJ6#}4xg>O}G)bFvP$x^6Pd>9?xokjMhn`eH(R9EnT4bVR z|0Y_DE~&VjU52?yEwXkvg9)X>?fSz9(K<^csp_3I?gTLY%Q7&mGfkPrX6WngIcW@@ z#tslkv6X8gMk5h~38>;r$lN~7bnF06jNUu|3fA!K+1t4<*8NRIO-Og3#1nYGoy{+< z>@Zj(P{Vtw|EG;!CF6Nm+V05J^|-sljzrc)`ZB(;bcJ@2MMvG0+uBLo70f+m-gpP) zet9HF72(w2DB!5>SNw%1j(4+XF}P*vFPPS@+Y#B~V~1yoVB2%#;YnQAcU zDCyR<&s_U{B>bhXWSnmPV4`lqd`S-Je$5}Y=#8jeHC0JU7g^+ax2x+m`&fKsMvT8> zhmDBGY9&Qt1NS1OP7nI6!~`pDOa&{RUugM5M#8y342BBkB%Yu!S8X8I^-mznEDqpL z%u=4B5(ABJp(Q4b=z%3tnUIe%`C3?)n0g7$g(Uki5l?VzZhi>?z9hmi8BYj~GTbYM zz8G-EqXfM%AJG+c6UwG0P}v9$tOneNDa_ailuw8W3?X;9N5rp$kROV20UXu%ryMA! zCt*<^TYLbeXCUWu0OJHC06LfmIuw8m9fU*-h9OKg5CE?c0Q-{&Wg!=ozCeVh;s>d1 zuzWn!dLFdQjtf;7OG)U5BS_cpd?lpeJkYK{b1tOqK93pbZBgEh0Q(jMk6ozazzijj zmw3>$cm%?J$aqn@fnG`E5cAIq@F9~Ar2jV?`Cl^f1b~Lm1q}iQ;tGt@fh7WDY3SRc zEu&|*do1yKtk?|k+Sr-~K`jl14sL-mt{|qyA~cDL=vx0yr$|`Z+tj{VX|ErjpbITi zmPb`bktW9skqMemoJ%bFD;S&-NhM>gQ))#Zgz=&LssvM5Ni&PtY+WGcXE~jf6>uU; zuEFCm#edYk&409!(`jm$xzY=8n*BF&e0>zQnGcQ^X77Yo{B!*q{Ux`^(T~3A4v*3h zy|-4xKB?*2jLc!%Zd*M|i{3x>D>a1i1iiRQXY`~BG{62prSKdp@7C6Du%#0OLOUf)#^jZ@=x22otl0_kXy zNbTfLm4P(K`oibv{xe4D~!Y-(hWvA$*S#mqDVKi+0heOd?o1Z#5?^w&UKbaIP)!Eou$`X`Z*$&#@G5L6;b)EIKE}KMDRKNX5JB4@+5=Bw14aG}$UtIwwVh zsl(`F`T1{aQRzJAyQivo-tCqPSR`+x4>iXoqWXE;?|*iw3)ORnBOplPgnoT&so2@L|GN<&&%LV9c&u-!UVuLIK z!D!Pnuu1sRgig5{)K9M;UxzBsFSxTEMLnnj&Z^AP2_9W9LaGK9rZQ07i2ScY`ibyb zEMYzjyn4!Yt0R;ydoAcNn~}ZZZ&6$9zZvnl69q}Gtl0q)7|W!_NlVJ$cIH1&e{PM@ zna%9N)F=;V0AOIU)>9nj5ple$OfS)}yjMk_g5v-@wF@>Bg8kSCo5bqX z{27gM5>U+jLTg-tx#S5?*(fX8hZuk_)~BFo$q=F*vv=+C^C*btoda=LAq$x|pn#i% zo;dGna^RD@jXbZ`nUXIrMA_!fS!lDE+|f?8KoKl5h&`mf5elZA&zS!_L1Bfvz5RrU z!Wt8wC`c*Re?kSD%&X)G_hu zT}?jZiNVT|Pc6@H?hdH=PWki|@hABiVzToP-wziqGAlj$JbSFBUPa4o(WaQL3l{zehSaZ(I^X882$g;1r0MLy0nxS{Hq1C~_ zR??~uw2jRY)byZ2*m;M5iXXj1#E0M!0nmXlFxtQ3Ai1!~2%d3;mwu#D#2@x-LDmu1 zu=<(ivc4Augq>t)ovM)ai@~x6+bMc#@J@ew zNnQWytN!j;uCV4uADDa{?eQSm+3Q=*@q3LwVTta$6{tvx$d zMVw&o!m{R7o2rU+V_!}Q03btx|xisx4QC z9EXr$G%S2bxT6+~@=Pb1*UV&NMU;BW6>LwvUkJm-Mt{bgoCzw#U1<8V6|jr-LXN_& zSS?z6)kd9Fc~wK4N2SnZ$a&S>&H;Z+EmS|FY8jK$%F+k*V5wZFcS_Q*cUVL7BuxW= zs&pEp>m~QO*x}gX!Y2Gp^nSbglgRt(oV7CHk&uBF@b35zVejLZ_e#Hu+vn<~)XpL2 zv*GQ18Q8b_@a0+R@qVyXn=yUO$T?h{sjufKDDbecNz6$&+sD6U@QR~LFihBv*WKr66-|i{ry1}M{`vneNw zLQ_~@Kn4=xMVmX&N7aES*B=KOf?#fJs>_vIyOQf*DKdkh-A;i!he58PNVf1@&8F~= zfR@rA9X&5rP zUD~%S-!66};^fC~7~!Bako8UXO7^H+0T*opaP&vLS&4#7eQ^3T zI${H+tb#BN*@3k%dfnQ%0#8OJojJZrS)1KULk8`=QgJ-Bxl0I4d~Uj1|4cNR{CF1K}jNnPLX>$RjG8mGulqN zn;!@Ndf{qmxwGXJxCW(%(NlZd&5E=f#|M3Nx2WY>-hj}ON%qXGjFd)pZes@~X}_XI zy^PhmBIAGE4o1!+(j}&SoH&QTzVu940WcYzOC~YrL+M{Ox|E7ir+Kjf$~8J8pxl&n z7)7k%R=*6Y|0vP7wE9YQOzPlOaM{=HYglgnk&(R#fSslhma0;~pt02mS|G^0211>U zGp2fooTp~WVb)>tgvof4S@f^O%2AC@z-X4e(b!K_wkg!@$Q6hesjrodRQqa71I|5I zpb|$)^f;*1O4L0%n%(%as=07x%GRkjIrC>a)suEo(WH0~d zfZ)j<78mIi|J4vX980Cyw6$l@ooKy=wNiFk_!!|xl%Qxi(K8U|qa7P^ujSPq-Mp%4 zHG1G_;QY>RmS`9~e+!h20!&t|z{zSDdxpgS{)Iiz{1uZft+_$&-y?PmVeMVD zk|~@uxr?4Ojucs^OLvZ$+fwEwiBa27vHSKKv)y8+>S`*0+Pc2AP(QonnRkqYS^{iq znu_V0kgp9Tr{$PxMujhc8|+&!tJUdUPytx?S`x*MK!Dj0h!f6(e|9&60YDFA_!w1P z6&+6WaFyf)@QCbQO(QSTux8M=+C$DsLKoWyb^flm)0sGtjz#q557Y;_8I&%WT-wjA;NZI(Cy*6p^}Um@=ZEQXMHBs#?qZ(@!vU&PJ zWJa#_Q3#Vidmd}i0Ye<`X+aV_r{=VDZZk8|oVpSX;r38#aS2HhKiF)oiAnIb?=h3nTENlhql3+{*o&~P>o!iv1ck(J0L2CJBKe1QOs3v&m?V6}1J8t8BnvdEKqkv6_-2LfqOI@GNqc11QLo<& zfzE#)q)<~{LuSEC&&~qV>wP}x5Pt?u^4kX8s|Gv7uLMi}@BX;CQ)ZVI9*V(W_7IrK#z|HOoOYpv*dyMckomDqR6=u_@Y&x`!LJmo+0xEjnd*vN z+M=jq0_wHZ@|3fnAl3C3LMrW|ke{a)Q^iIQk;;myVT_T8zON{FiJ)hyC;>m-Dt6^4ulng-0<;f;gyMW<*-#-mb zk1Zn2cPUhH7A+`8IGjuqmC98Yb!#%`N3ff<{D?pFaLvHiWR|LDKI60grHmoWmblB5 zmeZ|rOYSP6^@{qeaU-wx*+X$zxr#-~DWI%q%GcRt18}vjh!3F#}y+;Ht z02EM-ZoROjYV`Xa>{BAGVY1exRCam-`$vvPErIwkabPLYCDyw!j-$4HBA{8koKZ$OtK*TE#GN*!UT+S5O)FBh}As)H3Gbvl#(E>UOkCC(R!B;mvIk= zU!^VGxfL_JJpP)s~_;#84 zz74tBP3*KbuJ+7pXa`+Z!jbly@K8+{Zug6{AZIgoCV}1-e$gE~aepY3?8dShkVDKF z36E_zg3OjMTXgJ_D!9Z3P#vk7EZmwzIDIR4&441&U8Pq7l#4j5_FV?N>f)+Q=C6xo z+Zi{rA060j(#1@u9$(0x+Ld(YTkU4S)mH4aByA$lU8x-FdzV3glCpS6unI(b+)a=i zxVd$9Bubh8)en09d)Jh9ULv9jc!kk*WxCKIA?);z_KElrHFqtN>Gj6fhF|%QCpG!x zmv&7Ll>))A5JRvWLo6aKpJi&Fw=m=hVt4VbXRR2L1WZ#wyrL9?-`<#C++Gcmjs!{L=8-2- z0{lRmWg?rn)1!%3V|QU%{fKXvViKqd<6{y=S7lvj1%^$yRz3b)K*KPfH+aEDpuw%D zWiV&<2U#!b?`h9_fW*w@*NM3zTb4vIX%;E+b+FoO{%;>ISG3XqQyZN{p~<2I$h)Pd z=ka2%fuF@TSYl&4FmpV8*$`LHO_IY#5`qRf@QXsi5cE4YSaB3B>_ahhlvQ*!8NrYN z@AxpcQ6MkWAp(no211v3nD;v^JB`z6=hzwil{3XhFB?vd0G$~8VoY5L-j5W#8dqIR z$vu^bCGvuLNVuG|;;QMtfp|})XHKN;YHU0NxCaqbg!P_FI}BFxwO1qv*@IxxjDvMv z-d^>&z#pye(j#1;|-~Gctm<>ZM z1_47pz$gse3*v9`+xu-kZzvHT51G8}F(0diszkiFf3hDmiOF&$g=IMWtZVE!RTAbd!ct| z1MAImC<(plQPuHNWdD@&_&wlocN8C`q58%CU67@hqKt1P@7U=5{zA{RX%^QQk>ky4(g=2^{FbE5Bk zed(Ip_vZmxhA;=A3F|<~55#}H?8O)(?)98?{f2kOWw`jYv9+=14csJ(4-yvfZ}Suk z+^8d0U*gi?xQ#GjPo~ZnnZ=)qT=y~D#$PgOQ<&)4otfLDV$weYqoSX!Rmzp?ELVz6 z0Oxjkj)-{n?9?>znI;aQ@@L3C^CXQu%6!&=r2p>Fd>AWmp;moDBVeB2vuCT$K)H#s zQUuYYY5V&Ww(5FD{2x<9w)qCPkTUj(d~#9)CgK@Qcu}lObBVT3%>{q%h{N{`?W*~M z3cL(nzo0CQFDAheQL%|CX~F+)=GV#e0DR$}eDZd^T}eG{qg(=rHouIPK9Ei?0Xyvu z$3@heP}^gV^@OzdS*quvC#PZcRsJnKi-aEaIX&uMm>darE~9mxp0aT9EgsBd{&RGf zxFN}yAnI0-Wp!9eg5p-W@?HymHS9vm5rzVK%J>3~S75oK=lY^xPgTSL{YTV~fCPw3 zQkYC{2uAh=%0#l=S?kRpVs>+QgdEiF5S_n87UeGxWiR@*I5t;FHoJOUO)GWSaReKv z8pl2a{AAfzKCUu+g4f3%|6cMW36ZDc_+E28{i9=v5Cd}ZR3nbMeeRjs))c~Dy-L(X zD5ry8Ec>bBa#6Yy1ov~Kx-EGU0G5(sP1S~MEU{sJLpKp-csX=tcqT8Dd@MWwk;=&t zUda}c_p(~UzSOU4OZk-$)-zyUnogFFnh9UhPQEE$_JOivT>geML^Mh39&8Gp! z)^^^_r%Yb=sYy;CYbFZWel!trH}k4hhF{r?;*s*X`b^ojQ$t4Gt|3EeG z>+yL0nm(?N8@DXk(;P*lY5o@=L4cnW`!_6UcEThwP`@Fiwx#3_qK6b;TQ0e$`I7~N zazo%TxxN3FVZ=57^UJuN5$$y_m)4*AJ<>8Ms45%ZRlYgnV{z~Xor3R70XS2bqhBHW zwP+6LpX+YdQS6^P!q9zf#!6wQ<7ry?+a2}AFP#@7xVQg@!EIiyBQRpm)GL!@~8Z1up^e=y@>uT|p0(^80e?BrW)4GYYDDpAqNajGz&KuWCRL4nD$_eEBg3K;1Lq#o#+#RVI{S;{tQ~M8-@3jvrmdq4DEc&j(q_D57+uR!*W20ZAXN<{$%)vERwbcTwF##qSp%RhgrJ+>YQQviAemgyuc z8J5_zn9fmR#oJQJ}SI4{?_AkWS$JI{ZzC5gy*$ zbP(tGPCJnf0yYFu5S+q|55}7hdl~(`G+;!f4i?QNMa3vqX+V~*4NJ@>HK;FNmfQS> zWJ0(L&-|R>vnQX>*_OE9@urPgxnm-KoLf76mj=s!e>RTchH}K_V)JL+-7#en*#Y(d zt#AY4P~`QoOjj>?2Iw^(SinGjIm3+wvF3Y-q#)8yMv<=W5{6|oQxdlQA0^d{ae%4= zT*y%jVvXPD)!T?(a3Whfvj{*>R4V_2S^4CDn#un-mj;Qvl?$I^lm}pT6Ek6q9a;wv zi8T*B7f^0%U5E+OH2s#se9!srPB36?kk07zyZTe9g2HCf!th`q!5zZJ`tmv-9g}HD z!a0H?n+%fR z5b0D~3}tM}H1cdpD+@RrWo)z26vBlGdd~3UOcFna%X)x$EAU$c;{p6?x!TkswT?0w zB!%-Gn_#r=<{6^pTw1lWKI9Fjkl&UaOyxiJ?!%d~_QPiO2AP?61B6O%fTjPsNcjMf zH-fo+Xi_uf!HOB~pLD8Xq1Mq3{#EjItvPCnVl-1_2vLKwjr#J53+pugJ5~KU^>8<^ zxpa#JpIZGvq8i->QT|DTmlR=Vhwzs+;Y8NomXy&(oZ&0F%!nHJb`+y9e$wh`+e&Gw z+J>(sekZ8ES?K9Ug!^Lf01k?pxh9B*orDg}u=Y&h zHx?KRF8MeJn0eQvBFR9pvug}|3WcL}d5f#O`6TX#;d``625ZB^b-04&(31v_fAg;I zRyXt3LwsmtXPw>G>}H+Bxo)G2S?8&iI*t!zsk-J<>+-yMT@Df} zJO7Vu?)1((I?=~jbvJVB_nOt1azflBpJ{{Q2HN%_&+S^INRnZ>9X`19C9?QKUf@^# zMLy-GxWgJja-;*hf7{Eogp=x6FVMn}XEmk2a^J(p%;L|-+A+A9mA}nt%xWbZ=SBMp z?QU8Kxzp}Az~gf3NbmjcLM_c8z<9N`*9G{8qS1lDI_>U6#_II&<}JnKMapv_wvdvL z_p`Y#!PI#vyPUu80>4|J-Bx8t{~{y3TvIJtN^jrN(_i3WgMEva*6x02@KdAEvln8x zEwx!upv&kF03fn@W;k5cnAQh1DQl3!=lItJ-C2$s!0a;VCM&i*m(8lP&O_&;YpMHh zmN-Uo>mteDb#A?p7s(!LG1I-}Af||sA=CNeIOA*epnTTB^K|GbnjoWoZ`7?=pe&;8 z;imRD=45-bJLlS>$+^11XP1JvLx=NhRY6G=uy;14m7voX}4ir@Y+e*!JV19 zO)RPh+_i(Kl%E_4b!5J#WP+3~-HQ^fOPw178on|HB5&;EOasCCxADp0QnWN<%ZnLK03r}FE}r)6~pY0b~pwDF|m z_z{msSHsgD1&0Q3HeAbW44l%hKj#q^eRvxg?j2mvhRSDX2z6e^Ub7Q-^js$(5CC$^ zmUy$G@b(?K>+rRSZ7Qn~qd_6z7>|B-G!}wxFJNz}c-X~Mm#ytFKD^j$W(x%bzT7$k zru0CUPRr`%B554Fta6*St{#IQ%Zgk?S!_Do(!g10ZEX0`lG)imCtd>tS$8}vUip8i zerTr^{(4YfJV+DL&W6D&O9SP>cK*TaUh%9me|BT*i($OKj ze#R#Nu;U)0{6ea2_L}cwKIdSsGH_u6P@eh~n{km<>7sBv?hZO>nEBS?hu36Wa)4}03?x85)EI`Y-<_Z|fSL9taWUugEjE0itaXoRLN z!j^b_#Qhd=Rep=o#|r6|&^a}ef^$Uv7PnP=DsgFMXA_ckJg%k|jczi!|q~BSC9Po+V*Z0_2#H z;0a^+8#hmRtkV{F`S)se^B(ylfS{0Z{-PnRX@>uviC-vgcJkismBuf_UqNw3^&Zcz z7hN0K&Eo2)^aZ7aDGLsP_WghJf8{N+u>A6+*g-(3bp99LhZFFP@6&5e34r~k zH)d&hY00nSZnaCdCngfR{G3W0`%}=OVoYr+R%B^_lLaZhVbdgEN<}`(zCD&|X0K$< z@~dP-uEdOhp}Uc1+lk}rJ^Lv8$V=DZ>T{`i`Pt9LPSnj!U;YBijns|QK*P@FW{yf6 zLp0evR6?Q*ic$SuJ<>K-XWrga-gDLFo6Lo35u%gyH>Tv&yl326)yzc_$8vi2mmBpO zg&LmXAm<0&>EZ)CJl?`0yNX#Y4rELm{2UWbK^60eRF;kvmR1Kd6SL!zlBR>T(B|S( zZHcM<&LhK`swzI?Wz}XK#}1k)EuBe5E1Ja-7=# zf|@5FCl;;9sJ{jK7(R>KTQfqDYA7vH8+MT}A$AT!>DiBs z91;+&m&%Xc#1|Gw!U_KrGdz+!_`l(hSvOiRIh3_8s&j`wdREu8pg)YSbl}~9Ds(}Q z^*4ryZBn&h&oYq|J7G8K-A)8sjgV_ShpzO`W?#dyuc-{!ckl}ASM5E;i2&LM0GTg$ zv5ug2?p59j+^g_t`%1b~5C;fZXSiQoz!#g(v2oA@}09_N;OLyhTUo-%-BJ>5de$ip<{76YriA zo_`2xdqd4?FZ;UXhd|9C!lDdE!DTsc&9w}fHPeb6ge#RH5}w13!ZJo*B$zAmn^j2@ zhst!xuIk`*sg_FXjb}lBT-p`GcPwdMZN8(dd~H6>bqO!QNFl5^azM{&ca+-4;cC|h zA_rZUFZiYKIHQrE0lPy7E&Z7>yjHXi_$!mn5~u}pEe2OqMs@F2V9KwZ`QM-1P#mER zeEI2|RS@U6;1+ER^orn^mTBO3LrdBm*OZww3<6+N{vw>_=}I(KZgsr$Qb0QD6x8`@b_VFHZ)9oDk&-8f#f>Z9voW(iw*#F)G#GACt8*DU zKYR=LlS>Texir*{tsgwt)NQ77%>6!^%k-MVkIYKU6w+kw_{vR!Oq%XT2zyu_n+%xZ zNKrcT2FPz&#&pqb?JiD;tv_IohN9;vxm6eeM`~WNPL0F~!~ok$7Q*|Ao;Y>BJ;NYD z1yc6#DQ+aMM9m?bLIK$OVws%WIJJf(0Q`me8j|M1k%JKLA09|SIst1LSIU`bk+)y(BTuK=N$IG0G@@&%{>|34{^KRXEuib;>hjr7@%tH^$5$(9lt8@jH!KlM10W|*rQ;>XR-w`Zdz&vqytQC(1N$}<*0 zwfwR)z)d?Y(_bt5H|2GAer^c|cW1P`>qZagke>FfZUoq_ALiqa9jZ-yJa?Gb>*>b) zR)Pw;bdngJRIHfsU!(pg@%wucS}scPg4D5CxxAD9JIukS$aNWami$aMKc?+rHG*1^ za2lz?@*ja&GOLD%q}U7@Fj-UbXd?w(k+9$rAn6yY-pkn-HA*j`W`RE?=#XD(y7Ce6 zHpfCdI|Xo*QEwk0Eu5BoE6ki{(6&xm>gd_4Z@&=py4~;fL;Z!}j_9^a0T)#pSgo46 zTgvkx-^Am-ycww)-Cu;qbJIWiU_04SW--+2!QpB*YZ18{IItS)lbN5MdfRCq0Joh+GA9tU%d6NKeg2@eUWBfPDXjWw_zQU12YH%wJT;*@NO)k>@wKtt zu2+~hv$U6*_geIey9~ofyLWA6(f2`(|3EqYc) zQv#~=e^PX}dwh1@O|o(9Gu~X|EX<}8%L^OvosR@A zade&jdzS_u-?E_AJ_E6*)|`3vYQA=?N7Ql6kK1U=c4~c>HM*hf9*onYP0+2Y#DMi8 zx`tn~_WkOVK)ufOUb_fgph9zOxuVSazn1weCpTv&e2i>&2i;WPvZ2qtgm}qPcRM&0&(zBYY$a(Q?8ml!KWGuQ59ELcf9=0JPYdzI}^m}R>p?*h4|>zv&A1v1XA#U@1sP|~@q^=hQ7+i4xZp2I_kDPcaPg@-t% z`nf>XTb^o0`e^d-crg%{zk@)fE;q%8iTUAX;i6YuqB%p4!0G0<&H1UQ4`BI^ypMlf z^>XIO(9ol~cMZJdaj-Q$|LhDw06707nLHg5eB}*+ z@gM#-_a!C6%!ub-xD#zSexi)-Ur)nw#$Ut_^YmctvU1S-j=)=VVZ#9Ls;!=%0$gx? z%wC%~2sC~0I;$a9?RuWXGjQ_ukx!mV385edK>J&fp34=DD3$Fg1SDIGnX7Ce)*#Q$P9W$ zK-&~De6p$9`_;2YwUhCq`*gX3a?;J$rzY>ort5pE`TjbUg5bL?tmzI4+BJU&P_>5> zQy^G1GYq@<$j1PRtNjZAQiHUG^uISKU9swg)_ zp?NkoRe}X{z|mI+Ae;@8@6c^yf?8OVqDH>hwSe1$PMz9mJX^K&7g3+%Ubf-}*4Jy% ztkkp%!#cWiN`d$XlOUeEP^Sb;U0z28T;+y?DjWgf)T5Dra=Qp_tDBZ2#jj2Os#Y)& zEIyoa>yK)>ai*R~zklDu!l8K-H&VsVWg~O~(vbkg1n2~PpSz;)Eg$O?on1|pfAxV6 zsEC#8Oe9VetTW`F#Cgt!)0VB(hC#%r5APxey{sgBeh0ToFYx{p?Ezf>kOdEmdz*Rc ztktp+s1NBI8Wo^aMP_&De@(y7haDt|E^!&T#;J zSXBd_3X`;Hp;P_DgOv^G7UK$G_vu`5;+eXBF&`>qQS|5gUP9-1f~xPjHt3HkvfxX< z2jY$C9Gp(h>+{$#PV^!;e~|#8VC~;};Xg@&wT!cCo2(g6~9Xm1y)Z$AWqL^z&3&DEW{H z;1q*3`*e4+uEB4lz^#bw3W8jfO$*}EiNF`ou=6lV$gM*rlrYU=UP&bPgF}g;CH^vx z;LA&}Dx;-`^eIEX!qE%C&07Bn$H-&1#Mg;cnU(kxIybv*NxK&6o+sCUi7y7=rb5CO zrkrI~3y++!Qu{44tL}=hDfToYdJoSp#9o52m=|}ciwfKgYk}3=S#QDV?yGh}sOo=shWiW<+`SS@ zvP_T=BWf#Pwi3}v;wYeJ{=Ph0%q5SE5V6E^AtSLw$WdgQLEaF52FDZqls-)89x?eQ zof0XN#a58tnDI-Kl$w!BlYZaa>w?Znw8=8giG4-|>T>Xi!lVeeWnuvdsQYN6l*Q7_ z+@dlgKb#Zvhzs{|s7afpxJ!wiM!|1`JBSwd$xDeHMtE-neaXHeW5oSxV^%b5DVs3m z#Z+sPR#eZ)A5rYYd}g)rNMeyCBl8Dl|6w_GaH(ffyoPs~JI< z`1Oy*DW*k4kAWgQ;%^SXk~TddtRNDeB6c8xD{0pZ9$RK391dGpB4HLH!G0jqm2#=SvoGfM@RK9URsiQe&&&YeKP|ji(d!&f(6+cTCGxf)L}J_pMJh}N7|Gzx zzM?NQ5UxwW|JfB)Xb_B1fdm3VNArI}ben;Vu(L?u-}uI6n?cwl@c*%Zprf!3i2p-$ z3{|rStN9<+E+{a*5f&GiHVWJOpRfKHEE(v3zQNm(ai5J!M^+P$^Q3&9+ikl0QuNn*dQkO&?~>l zoz{`2_IUoV=vk|k$i|c*FY2y0mG!{p{kQ%n%0fgGtWth2P@ZspIBQl=Whw!;MRNl_R z@Ex&JUAJ2L`<#BajQ;pe^kZUj`!7P1{HeR5j!Da>o%Q}S%QCK&um2x1^S>swLd!N& zpwc`n3qTgJp9ucPQ)Zt@jM5tJJzfbMtVWawbRQe;z$U6da$Efoe_T}TEN_1OdQgDM z@2wh*ULo`-v&1OU-NLKJTMQBIl3wwxeHQ7y=KN@wN{|PAI|-2_%`IIVJ6C8VF>Yre>r%TKFM3g^xxpBJ&bNJrj3Lx?J z_x2Mk!9oIs7hwJVi&F0bEZcuEZGK*arT<@xY8jRi?7!epg&r=FeorO;FM9u-2EA%T zcwq1qX~BqH7# zg_5r>W&QZR1%79S+kotZnJez52}luWD4b zP<~`Jnsq8ec&Zf_h`NACzmOs&@mU06+0{M?(_^sl`r_Nd9A*!s-dFite#ix~?P!NE z5t>!+?K_urjvEqceL5iIb{Cs4&$MJVk}+jF;r|)Oc4V~Y(C-|6%XdUjzjv&*77-0l zq3Oeybn&&lVVW;*>LSo!JLY8?$!&(nogDr*sAiSv+z1z)oTiYV08K;WK#68fSdv_v zCQFv&0Qtd{Y%xjYqsm7^ar)`$T1x{t7V2GTd zlsnFj=Vk^Zlq$yg6bgDM*z{-v*Cxy=#sy+yiO$KvFl9AbT|{+UH7v9Vz_E{C;&K?_ zt+Rbvy;mZ?s9;>b;nEGLNND@g6#^P`|HXEq-ljvM$7Hjs#B0ye{*9{#bh*O3iP^O1+B45@yC;C zBGc$T+nG))&@dPi1|fyCNfN{W%1{wZ%pp-pf&dzmUHlZWz5{Um)^w&2S_QL8H53=& zw*f5_MxNbbmR$f;V(v3t!v6(-K!CplEro$gq{{F^f|3ZuQWe;XAeQ*MeI#%#;RyxU zpKDkV0|!l(@)A`=EHSJj5va>K4$MX-O1YExLQZm`qJ(h1zpW|O|1JR4&YC3<3V&Ae zg~<|YTWgd5q?8y*h#Uwy7 z8XAu%TL_VkdO&zG(+5Fdq9A2jGJhT!B%}F4$S4^TSkRCnS{8&Q(U@dlL}Zc)vLF-* zXX61O2*3`KMkt0ttJ9cFGUZo^nDP?QWy2Hrh)fD3!{E^qfrxWDO#a$uOE|T7M9phLC51(j*a(7<>s%11beECyE6Jb--zQs?$IrC^8J; z|1Xk;C5R%%(r6keCYi`2P?%((M?~Rq7XNk*h-4;(paC#wO<2uu4phrlNoMU3{(S+v9v2!B@_F9$;TIgl_Eou5!pzki?*{{e*vfywj3k#$ zW#IJ4PJl=rWCY|vhVwIlG{IR@!Q=Fi7!xdl#8lHKGYNFK4S#SIr;6}+5`H!WJBotW z7?KEq#E^e^!ZT?PS(12;BI8(*p z!IFX$t)mmba5Fv0G7JSx%Ycgx!N&qj8yHO)#uQD;pBP*XlzdfQhBJd`aD!1E5Q!ik znQ3U!kuu!$iGRLNh^C`SO@NWl&vc*xx6Dk2F@xXcGK@KZWC>blfd%sqp<)qC6hZL` z!dRg3x8={?zXMyKNyCmfOK2}dVBo9>PJl=r1jOG9U@4DfX^*plm_GTyk0lz90U@k_ zwLgezEyGxWsCFbI#>Nsyg~Ss*us~v{>LmH;fP-7hgMVAY!HHlzZNPZCzyQJ7AizMV zav-z`Ahsa3?N192}eg_oIy>2#0f}T9C5QCcZduzaIPRF zSNRbEnYe;XTtOyu1lcNq75sYSf$oUK=zC zqlLsU6_?f@yI4a~n`QL4oX0L#2f)FX{;h@lURPYFeFMWj^e(NZ5)l&RE zgA~5-zhTEHa34Xf zk)tb0a`PJlFEOz#f%{39ZwjW(dVo}&8h_={PO~-Hk#LJ=r5P!GUh!s|=?}-7l@)Ki zD|`#b)6?JWwjFBMmE7H=cmCbmE2|nG&L@SQDo=#Ak&jqwtSTJJQ0~em84u0SQV(T_ zFQ{Tde;l=0U&AJPmmlAd^*pEWWzs?8qABUqn`Rv73)Oa*e`I|-I&L8ATI7Q7pMTZZ zmo&M@g*31CSWAPG^Hq()PmC;yRy`89N2|;teRL=x;95j^Om)SglmT8mwbhf6os{^dXSuT76{J{*Lqn9F8~BNK(O z9E1u_kO(fzuzMsg0pU#L3#3##YMhYIrN;63VrsHPOqGbEsd5`SHBx>Nq=G9p3*1Sm z;ND1uZ|1PdPakgotq-0cI)5>l^9zf^f9WS4cAz2=CX1uF2?($MLq>AO23#rQ5nk+A z9{B9dSr>#rEU;ctaw7as3GtyuWQCSbKY8PT|M`lUJ38|hwA4@rOHH zi@cr5Z(iFTYj5}OKk~Z23em0GU+g&rON=57Ds8mrZs`kB9vR6R_kUR_X?)moPZ-*} zKJc~km+|Ba>8|velwDcV0}?7+LmPI_Kk4$_`Pi`M^@Q!Y8g9cm{z0{;susS9C#q$Y zh5Zr3D%C)hy53c{iY{Dime+-|T}mCVJozW8@xr^qX95nM>`F{+!-p0Z_egJ~T+%$$ypZ#~n*C&F z;^_$dHHYdhuJ%wix3F)i_wvuLu4X4Nj9#%@_a=|_*EbFK&*)ul|6}#(>K?nzeQkt& zwGZvr9vxg+8{1y!v!fw5lb*aby&*#l!tsFIT`}xwGDy`8x zo?DqMdha)vJ%8WM<$W5}?+SkV&iicIM>UP<3Vi8wUAe6Q`T6blo=$tANI`jz5ZtXy>P+LNSK+Aj`&HnX=6T1m0B z??@%;cP_E-T0>50^_lI(ND+l;j(JZV7nYpLQR?}!G=Jah?!at@XM2i6Zs=<@$1lfq zt+#X)IyxNkOWL+=?pXKb&vAkF%FDia_&8B7t239z{Bf*1rIobDO-iAJepuf+e5ZC?U)BV+eIS=U)TZyvXwEN7HTZG^W*KqgU z$sVCRAAdSwl=S^k9@lPok(u@v>x02>nrE-S?@~D5>Xk8nx@PkohIL@c{Q8DR=Nj_c z&Ih3fvc6=mBI?`MS+|c2c)a#;DbP15d94v!ce_y&qocQ`UEi<$R;@j@{^{p^+h;h* zTKfCD@Gqmv)Alu4eeOBtvOeOl_Pv*R>#nWv+kc>yv7_&+pk;+0Z#-Dv-@LIXc*En? z+3^E=DJgeX|Dk#M6rXyKPrdHz=WxEnqDkuTb2DrTZ%oR3 zi+}cx+S9if=|79HDlXuR?)@yUuCVszzbtAAPtp@N#?*=Ke!8BX=4E7ZARq#nviAP= zfHQYil)M@VCZ%tzG;3K`zFJw?x^pzXG@@?k#mAZt$*l|PG{dqu9$^cgi5bRYHHBBn ztDUUYCEndQ_-FKRXZ7&@@kivhu{&z&DSu}!coohl#5WfCV!Sz*Z`F*2Lq4^y;*@H!jzf6R)xn^=jdYrDsvohPsimc~++xKox~ zTqntzxw7`zy3?3~=l+KI?CV=lM}M08jKW;CPv zek64aFs9W9qgJMBwcR^-1Q*uQml5B#aQ@lqsn=%Y2ZWhtULL1gpA8P=hZvu9nexOY z*ka|UMOnciCNJU{jXV9W9yB$fC-=si_QWqaTB~9qPKyjlizF|6mC&iVX@7gdvvGZQ zK_l1x_3lE|0)I~ZjLo%+{vxgo(Tk476|_GLYC1GuJLGNnoPI99__8f>3y}wsOvVsZj3z`9qIgOU>ll_Zuz${L{qb|Cv??{R=-l3C^KRsFH8sjPi9iGMu)1wWgv?Hm6H z@LwNbB&y$Zv1OXYooVViyHssv62cQVoa)T!NIKQ&LJm*7*~^yrgpX?_jE8wg+s-_g zvnI1+?%rVouRaG3zvS$+^!%c;&twe)i?x=wXKtR8^dv}0vik{3+MOBr$#({$B<-GF zjL_-Q8JnxL=oVJ(9Dln*rx#;K9g11O6!lkK>6dsiU&@nhVW$LF&BITMmgigVbZ#qr z-NOE3NWGc*pvS%82#|F-w{^HApB&nMcHz^ZPXAR$7D_%otvP)Ex*^`(x3J!dt1_3X zJgt^UwY0r<#siVxR&|$8qMXz?%fH0m#-F>3W6&<>z8%^T+JAi7cF^ca^S@_75rFPHwK-@OptUwbjrQXdpn-)ZA zB6G2HYE65|e!J5YcKo(%*$r&fv`yf+_+91{WFH7H2`xPnns+9&YAdTg7ke<8eCh5? zJFEV=bGqA(oPY9ejVl%GW1Pv2H_+SXwRiscy?PI-uGA;C?U~l9%c7~cPFFVEx0SwO z(iP+UH#Ma0h4rNihw{P(cj9{ca*Nj}%`^~s9~3V`EuGgrx8vwX9qQ8h6FghN@>462 zA0GNzM?_O2EdG2rs`mQK-lgw?q8`dh!m3LT(x=b$9Dj+!6#JjcKX&Y5o9fWfH zeT!hf{n(Ws0!HJm%7^(5zj_VW zpMQ4WbgfW&vhVE0H?}8)`L1fX8_v78xGTLZ{wsZo=T5%i>rFxp`lDORJU&$v;Y~Xu zZk$y~n^E+-aojYGsu4w{Ha%%StHN0I0*C`X&vHKF`DP&Fp>n~8S*nLIkG>W!Fl|lU z5dJy7R9AL#&xv-)E{=Vj-ibi-`oORcZ-1^Qc)vj-&y*E&-PCV?n_JsCdDr}}cS5y8 zzMi#3vZhU!NR)n86IXs9&g zwtn>0)C~iBwv&(CnabVgNq1r-uRkE1?D^Cjt(QwtfppbK(b4S!i zQ8|mrWf`+`o^DM)#Jw?E+x6LIL~GuHcS;sPLx1gWf2XnX2|+n;;995G$BN=tp(n+p zj-(eS1~zvlwI*Eo7~vd2wR&y2$wbhuR#Cm}bDVK$XUzk_j|b{c-Ccd9-uy{*)rzv>{?(bBZatlr(wc~SdGVK-R%W$CXz{v|3>C&6 z-_j_o*h834_}Ki1XQ$yFL|@l!N&_{$5Ia(~=vuIgDeZ83l81kq$=1-W0aU{kzxXW$ z6>Awh?NWY&L8kRI4d#N%bbn1(vsrp>W}$(bLmIz_Qn7WsukQV~jVjCIXA7)O@4NFO zgb$r08dXS{pP7}GU>R(4u=;7&^vZ@EES%KFq=0v zT(SG+fX3Asxn4W0#OjT_%1y`nq*ZNWm=lwVtKUsw6|CNV&*QUiqx23g0o^ zlhCZ2nd^#o8EqPNMqIKC>apDXR!cSIDL-dvT>sU$>^042QIyntJq6 z_WpCtfjj9g+17QG?{)6SmMO=a_0P*Y*qIm>a&O$Ycz?)Z`xlEYg9}N$UqdCRs#gc! zH}oj`CAf;U(kNTM?ku^Wy`w0&JRzt&Ve^|4m&4w!_`KXIrChb%?SnpO=Z8E;orXzhQ@DIS?MvRNTVbeAcnDgBwI z^%oam$djKD)}OKO_S|Q*s%|kW zi+`cHW0qrif~r`fp&G6S*t<=`^)~j1*zxr1uJ7C8#G#(KjYBm16S<@(Jo{Ra2!CGm z=b18~FSiKH+)^rq&yqi4VyiW@6`?}lUeN+1g z`cY`a&yQ+&cxGP*o4nFlrh7A_lcU9sKCoPVTW zu_!<>{}qkvoPh|2Uoo+mjEPw6tHHq}(i1{oQ_5ds%3m{-zm}Aj)ZifK7|X!^1_t&w z%9P&-lY};I2X+IEKGiZjUmS75&gDh`(C~QV=0)T}YWS@D2I}ztB;QBA+4`0mJZB&x z^{rqhNcF)1n61C1E}bF4CHVw1o_~C(6o078zz<34e8^;AW)0224@p2i?ELuRA+=I6 zup~*!;n8EcqsD(CwPu@zpNW+2w~Ps=TydK%yJ2}{kz^~D@0*41slTHcHcOp`s9Zw| zv+R1|9f9LSy1Q4Gsg;;DMv|h~D z69^?70iVf*qg+lb6W)pSIQ&>{3X9G92deqw24ZnU7&xP3gOIJlXY$x8Tn;};HIB&@ zv(Yh37LO@JvqfAcKVFqB5(z|_aRL#KDWT77&>R7s%ZWjM!!WSA6bXlm=I~i;zC@EL z5%A~|m?D-Sf9*AR0#*u_J)>PGo-LvOuqQfxOF?yZqlsf)FVzRrNZ4IoBBVhqZ(453n02qM8j5HZ9#;c5W050bU3 z;SflSk?a-Hf4&4D%n1mycGa2zMNo9Yml5LLkB=q6qj0zKkb? zKUu&qz_fws07C-Pg@56d9D><-l_ycbE0}kgz`KHc1t3&zsf5kw_ zwN(1>Mf%~Hvy?u}F;(6J`^LaDlpF)4k5p<>Rr;`A^bd8YDSaJfov^P3OhxI#InIFoF()L$Rbf8Nv&5h#d_Q1$`VV50oA1!ko5$%`ct5sYo&!j&YTSO|Ea&20EM zM19_<>VN5X4tS0MtlKXEM!W-WD)R$94=c#7m5V2Y_T{2Vj++$aCcbXDtcgu zKMR2sv16DbI#&?SLV&>rrXw3pkK`mFJg7WAm`2nD0gp{h;PFJ%6tRdZ7R6F$?s1{g zV^TO=7L~=0W2SH=R4^(*e}tO~Q@-c$`ge0EXZ!a&ZvSSUL^uIjEJzW>vXc;j|3O96 z9}g!KaArtEEQyKdfLGIYODFO2d=S0gdLrti1op z=jVEbF$pTI+->3i(})T-8E=jG zoFe`3@a16I$e!Oy9EVHxJ)SiY*!2PZ;;#ya;mGx`WHn};7Oy+vY#QEWC|op$^D;V} z`Fq{94}NlQR+O?MT6g=$t6i0TtTgYRj{czL(>7?XedV*e`r8%v>$a^wkh8h&!28DG zsFdr!?QJyZUvwlWfBu}$g$@r_MM6>PsP(+ydj+*rhw25ICmQ3|Ty@+qZ}mi4>rGEn zRc6nZucztqopOPB!N)JhO6hm+uk5t(F<$E2Vm|r0_<7EkH~LM(^Ud%cS>|JvPuw%Q zOx85B=e)?)o$_7S8Qm%Vl9e8{TvM_|xHRUD_7zf7)N`M7f6uAL7Zm2^>G;MY2J}yQ zJ%Z^c>nDDak4GljWq8V`Tnz*b#ftpp3$7jR@A9-(d^&wuf8|nB&4E-N5q6 z+@CSzcSImXUoxZ|_v@{`KdW{ByU4w6NsYoSyGypQI?7s*eqPnpas7>puAkQ7bT;T& zGv6F{y`H%fe{)pjDnZu(^Tc$DczpPwzO=ah@hXmV%Mn-HiqgjnhlKHrUe&(DEA)ET zFY}I>kOIVB%T?|T3GrvRFK;gQkV-l+MMpIUR~VgZ>l<3Tb}M8(XNziZdqcC^ws7a}{s)VP20El! z=N^oou@Bmux3Tj^GHYAh?6Q!v{L1#}Wp!f*mdLZ;IyT1Gpr;O8$3uDiu(!9ne;W^Y zb}zfRlwv3Ca{m%Ec>KiN{8+P|8egi8LKWMbO5lyfG4tFy^&zVrr+awx_`19VfirlU z4^~z0f06D*ZNQA(I-A&K6|rOC2;$m_MSBVyPb_4;Utw(fq3?qA^o5W-+UHGg%cIl# zI_k}9zS7nWwOa1e9$P54X7G~T2C`S5OwedMy*2uQH-+~)`axey$Ehy67Vi(yo#{Mc z;mIBAk5mS>q61s!?7y_Ef7M=zR*__vci%kXf3p72_%NS6lKwTvxK91258r(Li*v~t z_8aT@C1>XMbKA}&KjT(+4EW`q`Zb`8xAs}LMsr`9?$S@>jH1!}4!=cJ^Pes`Oe(fZ zuL)meTXFc-y@=uvLU@9udeD-}y6RiezLj;!#vAuX6rbaH2p_I*xZ=_M)NEvQ_sypV ze^+YXQJuHoHcLADZt#0duk_F0#-x^T`R>av-l?m$9lJ5m+4x)4D(Q+7ZLO=Mksq7a zZm1iXn<)4-Chd5oCExDh8ja>N#``b5|Fx;+d{byzlHP+g0k;QNzxm}(m}}Ye$FREC zruI|8$ziu|ej>5!D4!T7-#v{U@Hs2reoe-k5EW)ZKkL_K%oq2BEy$r^pL!LM9g;ItIBr_3ShURIXh*qvm!MGCLZf`}dESl`~$ zU1fp8E@o?sXwu5 zTVq2S7w(?uGnGCsWfH!oqgEs{-GT>mEo@KXceI)A$g6CrvWRtn5>{0?XGWkm&I!}j z3PtLqA`SMZ4!CM_uj{ciktN+;x7QZ=1X*Gg@ane_BT+^4F}g z;VkXZO6^fyl@l90@(oSxkminR={ZRAI;1%VXgl>o8%m3kx%T8Z|Ss&772aX0@M- z$h5O?q82mOc{^FFykMiyf0W*{w*4`y>kGW_zeY}a+#|O}ei?g>oVqzXf6-~3)LR>9 z*hhELZ`a`>kS}!vM^Jy-p)=;Jxx}SkIiT|;`xnEDKRajaDy;7*pS7tXHciX!R_9&b z##5N|Lx=DWEz&D`^%o%RKcoKmFfU{IyNlaozSj4qFYVJ0{xklafBaf+{kXsOn8RGb z#$c1($!!|~U;7x$H!-X&)Q!B}+7re9?BH^+Vx)J+0ipI!7Sn;bqZRgJ71a8#;^?WD z8yf`b&DJ#nQlFcpy+-I0^*BLZPvUO#hl@POg4{jF)9jC5Nu?B}3e{RdpPdbrWTwAx z@frBM>jeLH5w;g-Trj`_g9KePfVjuYgenz>+>OXLu!>n+ltRbwpRJ& zzh2EY-zv{C<9y-UbUxKGA4nAF;&{lQersw7S*e%Dt(cUwo>;rLfk+ zMbQ`ZA#Z2mf1LFF*E|Eap0C5-jo6i_9vXD_=wZa&i1mU6PM*c|NZ!&5H}A6*Z$~va zJEyz~zgA#F;+IdyCr-z=Ps<)m8`+)hPpNF!b*lEEd+a1XKhp?%$6=uJ-E6PxCf9eB zzYkY)c`KhY>E?yUJQnL-j@D*U9v!r|yLp%RGV@t=xX@-IS?O= zRKC-GsqRR**t~@@86uiEw)*OaFYP=1M%vvxE(u3c$H%sM{w{fEE8iK?anWk_LQdDI z!s%WifBNc^jH_N%>;-@Q6`oRaW+JfneZ|qPuhglIyaj>aa0!m9`H26$?3MqkAo18> zY#25Q8;?!G3b10V6q|i4mat8Q@#3RT72ONkL zDUpT+O12Eaf(XbKCCh%|k73KQMN5=_)<5777?L9nFyom4C3>@olE{hjuO!aT_^_)~ zc@H_H%BhMkxx|+oa#N)$RjE`CzU(nozT}>--wZ&I(r#^7Ma;Z@-TnG?fBiGBU%zoK zk@)t%7k^i-ynQ9Obs>=$`>#YIIWg+lck71lo2?Do9B4WtwDwHfG<;KO8!eOV`fbH( zZ#u)CxnX#9+u36HA0|FOFamRI1FUtY6S$qA-n2ZvY1t-8Dz_c0J=ioiI$IgyCVIUS zShk;bJ*yqmT_e~|%l$eXFz5%KAq!EW6n-yrz`!`G#q< z>bA9^N`bDmgQn*>-hi`{ZFnZ^>N9D`^64?SY1p_`;C0MYYX^k7d#uwoaPfNJ)Sr-= zZ8+{;-Edu6n2o^kEYl~>h-Jjz^8-^F;*WyMwi-rYIc-03Da7bfify%bcvsV?5jZVU zVSihGz{pv|OFkI}al>jG-k#Ec15(f`P4=NTNJq|w)3#Ev@F4y8L#}6TT6c$gmTI1P z$Fpz^T9Ct!SnY=0X`0P?zlld2m!5`wfU1x{s)4tT9gOttjGA|)65{s9x(fuVW1If4 z>p8BpW_ZgC>br*BF|}Ap&y4YwvA1E?`+xNeluGFxbI&tf+h~|a4l=~LQ}J^qx|Bqa zwONPuz-$K;)Xhy3;U%AJ3~f4I%Lvl@yvIDVTY#GVZ zV;Jj`BL7b8L#1Wx^ps|#?|V`svA^rS*BI`!n+Q+aZ1OHs?qDL+C1w@cB>==Brhk3h zhj(G0!o^IZv7Lz_8Uubje)d5&1rkY5cHCyfY1r212!71UTV`Nj$H*ady`bIzwO#KL zC)!TE=>+vC@p|Ogp@HeOGSMr58i8xeY?~e(6shwY$j4wZV(KUPbzC9SFxpNVkh1Gk z9*&rI5kx{}Kd099UmIBvIF7BDUVq>pdn#{z+i`aM{L}X&)hAe|UFVMJ`P-&#PxYd6 z*tnE~)ZTN=!8=yFGOu*n*4^U^c==i7;LsVWn{un7iE!lOVWPi+TbSyhS z1fuN`k1p@YqcW&R$fg+me#(rj9=08$DM>>Sa~huMcqSnx)Afk!6C#JA$MHjf1tRJM z1*zn?1T*aIG3~YtZ_AgP+;bcW#Sz>_QjrL$_?>djGq*anfx>4-Fi`FoUi(O_q3NK) zwh4lFQBbC0Dl{D0$vLZiT3~&qTYpaC1d3e?#6=e` zL>0QRZ8ml!Tzl26zS(IvWCxk~mAiAlhK9Ow7cFg2!fu$l2YJC)Oq3kW#|=>zJv2#q z$)iuo*HK+;xDc&v?{ia!k5RVjq_R#pLv{@DU>iY_ z+9)YT!9)g0bRO?Nc6<{vB<}4;dFjVm089e|P`2AD zdov3IWrV0`G=EL!j-Tm!M-k>S*D-UGiS(TAwYMi!jrMQl4)DbaC!a>dDVW(}0P*O} zafjnJ<+wVLtTwi7yWVlPJfmsm6#lYwf)}OOoMIlGTh zN$p#|Q2OPuIQvqGrklN%)A38?(oE?P;?B;O?8e-u<+JCo`)uhc`H!7_j#7Nx<2E=6vbbsjmkNIbQ0YUd~nz-l02a$N}W=*rFZS#bBc!AVh(meY%S7pmVbH zOGZUl(tmH{!Kw4W=Fw7jv_4xoU_GbLQtG1<`yA&FXgxT%AJBTH^sB%9a8{T3-2aEU zT+&KSCl0|p2$jQx`F=tqk^z#M@wX3shxgu;4TO$upbqYfoRcOc5=$uKiNwn*i9|w6 zM1No7d;j0?yqeTPZD9OFKAF#~=7nArY&p!Qw10$Pb7Gl=<&>srLR(=2Y-NrWL@l9< z4I-EGqRK*%(#m2^&(7g3FSI-{7D%+F>Ehp6xJrC;EL>N#pMy_S3#8Ol%4$~3;T;r~ zt!9_Qdm!BsEJw@_Q`%}*RV^>idk8&?Ic=GwAEmVQVuz)(SU~cdl;)nnQWv$dE+B$q zzkj1+YeFY&k5l=3kv4kQ9)^z0C0&t|?DxX&cUbaa$g>0E>0?^*(I`T| zl#q|7wC^sl|D6=+nSV{sew+M8q^H@qrYFCXN9rl<@xp(wpZ$X6$>@Z%F|QmnnCHmi z$HiZ;^fZZn54o!>`2)1$!L^Vd!Ku%dlRP`NnlFn2A!0?ZtwMAnrG1a!hI|qy6@S$U zs2~vVqbcnNiX~gdHA6m?(zr&kq`hf`r>N?P&jocncO}OZk)GAFxsV@A<$0Fa6qd#1 zj=>H8NP)^Rc3I6O`FK@5k`n{bLWggX9Pp@!sxFobAwRB&(mzNCz-9c1mZ$q_q?hh7 z0VChQb28*JxX&q(MOMk?M1N(DZlx~^wk8TNaTfNDM-RPg_A^-I;B>h_KF|T$ z%5X`6Apm$Tt4Psj30!e{EHi>5NaQ5EoPgBCX>}^cq?PNia;m6K&!uMoI9^C4$hZQS zj#9$pShSex(ewzKSmyaO1X+5vr)Zk2AV*Zh8XFYq@%1D>7V09N@gJ*kw_7pm$> zCYlgG2l4!(lCJ=C(yk>Lmh5tNE#&jcs`|WW>fL))!2B#l4z^HX3x9bvRpuv%(q!2t zmT+uQTh|s9O$S_Ykj`Ma4mgpm=dt}_QJtgQbP?u)_NXk`F6Rn|()cAxV?L)n(j-GA zcc?J&mnFkVIN%N3?-ZUCmgho#0bzM{HOZf^s;8HL44iX%RIG|6MO1QeXpFD$69 zA#a3iJKt#J2%u1;ujQ1(pu8?Y`C1XoI5&@T1$2=9DMb07y11i>G!KJ z?ad^Av)7xh%GkUwd*<6w&!p1ufh>aiZS%vv;vpv+PzcXCB-W3VeCg+e9*kf)M&0ux z3{0yF>VI2s{I$c5e|PQ)$A2sx|5g#qa6DOc4LZmPZ^JYS_&c};t*?jt6LJdRxms0k z6h;#mrM^eQ{S?-mSy11_i8tv)37dC|Si}&zF-r3SB~i%hxJ*fw<=PKSE-`4VgZN_4 zk6VdDUX^KUP}-6g$Y&eKle0*Qn>d|pL&zn(;@wk+Qd@CAsWJlVTar=;GyqO3GWp+w6ovVH=%nWd zIFp_q;)eA6QOG^GwvP1pNEP`53Aj?IadL|?5=(!#8KSf|Hq^{NNXMYAO zUM;FNOJ9#CethTg*A~#LyehWu|}o(uEtRMoqv z?lf@S6@?1w{E$#TPx8Hx|1Gfq#-CqMf2?28mu@bodrKGbpC4Uc7fU&Db52yMG(@wt z#ifKo8B@`>G<*{m#DKIuM1Of+#D_B_y&{K7iNpta)Qhk1nL-hzuNT1J{{R30|No3x zd3Y2>+Mh}_rfkx&haN;wuw@1;oV1S4D1;C#k{O1ZAQ2H2B8D3@Y7}o!QG+MCxNfgV zT*O-uUGY9pT$S}gP}f_;`^Fm&bboJk&rHDmp6B}`ndr1 zrx0L%yS2b^&3Ve~MdTJFt#i3~Dih~~fOD1ElYYXL zFuBAR|A63Uq?ougX{M`Hv^iJU5f*f*5BVhDD&TUT<|?4b-CxDf~PN$Uz8KHr3A zSr@aNXiPufj5B?c)?&i<`_cid&5iit7JvsQt;+%K5`om012mK~u^1=l_X<#^-z&j& zXpD)!_~KTm+kXr{EvZb|iYE%P=Y<<5f&aIleYpB@@!c#aD1^EUaaX57WbChHnHE?1g$bEg(fSa>8@i*vq;J z8&@!~BASS1RR-uMLi8OPeIw8}FmZ!w=Blx^t$zj9SzAtaS*wdegS~=xbInB@i3uNH zi1Sa9j}<4^b#lFf5d}A@jH4Rk5VupxTEBpan<(tEP6=>xGzR{eXg1pHi+_aztkMG9 z0s-!1;uZ>!jx=tqvToz%7&vVoN0r5)9UX6sHY@WYNbwZP0u#5v$-a0xBzU(bcsmH* z#ec-@6c&jN1n+?A!{OMKun_&;X)lgw1iL#_oO_W+zyh^mbtu_rXKhd}H> zCLUCcnplR2Jq2P9MVs3iP|jaABHp-C48dd%2l1h6@hc&%C$&Ex0ll?MJQC6}3bY;# z0z!Xl`6_9N6OU=`Yar|zCLTlV>_@Q^M9hD5#HH+!wEr`<{Rf^t-m;?!`NX z#p~MLPeMN0_b*?(0e4@4`tVdm3iScCE~e}Kn-FHtYHJ;u^tzx)qd~8OWIe2>&F& zdk&^}o{8snWcGYP!zGCw_`Iw6yZ}PP=S5#^0-vjJWPL|Ix|h5MR->z|m$=ze`)o7y zQzl+QQ;9;7_si{;q_vTo4&^l^=?AE@`&3&Sc)RrqI#_pmRY7BAj*J;Qs{ElAWkY`w zn^Blkh_;PHDKApG-y2lgKSFn`s&D#haDWs`x@*db%0Qm~NOAkeP;qY9RYfzB+nZlm0x7*XqHHh}az|yDd-Q)Hm5~nPKBG+!-)^?Ai|7RNvzZ;D?N=Qm z@B896iiZ!NDvbai!W8uT5e$Du@Q-0m8iYRa#Wuvt-$C=!iWWt|7)_{jM#Zy1)rY_; zj-l;$NI8x)$xy9Ee*>#O&_4Gh@1SnUh+%s>*&=G^%%z;Ka3IdLv78ewmt~5}_5_wR z$AN@o)S&6Va0-OV@X$#86C+o%W-htmT3?eH&;&D1)F9VN!%$wd%KCo{F08h`;GM0{ z#bHtIB(2XKvj-EOwYd$x>;$RyKzI$%#S<|qccK^#=wzsO$Z{j)rIeu!oK5R4K;#9; zCxSe!4r;8|w}FYz+pRBo3JI#K9PTV`Q0bOCJEXnbSv%s3B=%E2Yv;byO(Om%XtZ?R{K zZgDP3#W%jJ#K9W?{I;^e4GSRRQSJgKz}hpi)=x7s){oG5AdGIqw)>J$?pfQo^fF6HfWemG*{J<&a2eCv> zpmSZZ@knLf=IEzg@pKf9Ra;w;>08lxGCD`MB1gMh-=q6{$HaF*D$8yldURa|mjDMb zLj+OO;g-A5nzjw_BFA2y(SwVJF5ysI$EoHHf(t3R zC@J*h~-X&8|_#Kn@oD;G@qNjVzr)NvK$%3q|j#S z2YhqEX8Yh_D%FWFagunRmh^U}q{|D%YrW1)?%dxqdEvJ4h)#G7H&q#DvU5$s+l6|S zXPG^{3MMNs<~g-qC6gA6!epg=ovZ8Q!%ogAb5?)Ev3$tL#hoy|5dfGo&q^`5i=7IF zpGV5ZG4Dac#}t#%nzXko&5)i0W?h)~*EG%9B{5tjZXvPnn-W@!ySd0%M5mT3GDr%l(I^ne67v10cu~ zE|Y(|S#A^Z3cVmN>WrMB-->`hnz~@&z6d);}v*Fz6QN)JUk zt_&Sl*)VkvB=?7fPIgaXJLV%=_W%`CO}V=-4}v^v;rcz=y`HGx$Q0M9@_IUD6%m)n zD)Y&>a?->;4U+wFf0X^<;2GePLr^^p`38R=EoPP~$B>YHwMe-UCVPev+RK*%!E7Cr z-?Jj+7A)+`8Vp*qD458AHRbk}cCWYLnzNBuy|t_Mf~#=KMW|?V?uDIgE(94=Zl{9x z4m$8^b;T~casbvRzbc#z8s8$FCYl}T5gM;r|IB}PT1|K@jJRy)lo!Md3)<{ z>W6TWL6`OHeIPqUPSTfo==u_Lt=jJDkQXBY6^9naR$cCN zMI0KAw)#!Y2#2cTFxu5rcriJWYjr5fhlL|>3|0ZHr(6EO_}BqG}H zp(G-r=)g*aDI^iT9gySnC^)V#3R1moEDuUOtq;>zic;+zAIuWt(c({|D}<&3LCA)O zQ$DoVh{Y!J<(QGkn6IE__D6r5ALPpkVE-!E_pfyI5R?}UIC2D4p1c?vEX8cy`v#%+ z4J!7&L3Ho+s?F}+044{79{Tji(rwsvyThrkxY(M=7-I- z-WVoFDf6RXHCmY;H#0d#)d!9L6Bzke7`ZphKF*=FE9&V@)4~9M67bC(@XY}}Tflz` z{L~KksR2Gyz<&n(v<~=b0X|W{e-8Zg4*2N-K32eg0sM>(_!)m141OwRwz&MEvAEp4q_}*4 zMRB?49^E3EX_$W*zlKTN)#eUuWpb=9kE8fF)R)I2K7K?M8dnjCl)fh%{=dH`w0n)= z_#5=LMtZ{!I*0kP1$5>kZ^n0c+y4Ll2xB<<<4MTl@a=dU9`cyr%M-w3C5DS5s=Wz( z5cei@Yf|1E*PD{^CNep(@OcZ(DP7|LyT)AZ9b;bUHJN|4-X!xU?`Sja9cB97kxU+G zE2Y14rS;2`2?&W3F|PGt@+iWjfr)F(5x|@jV2<7%GZC2905d7+O-`FzY4(ek5$;If zP7ZLBD{u@wg2tUwV1VNbUChu_jskcdM&~}ztEt1*Q~$j6Xn;=(w;odw!B!Y^Wn6DR zy~Qqlkeh$R1Jg|@eei=dL>F^6Z?<`{H_N=ln`tigW|&L7>E=dn8q74+biHPCy>~2= z$ClKX49aH&YBZOiO@N*mK&O_V#{ha(0G(EXP671n06M({Jr>aU0dz(QO7A5W1kjl! zDBW<+381q|&}o348$f4=pC#paFj-45H`12r04;wcb0NCtbc~HUo~qXtSzwOzTFedJ z@#a|XI4D1t$+=d_ZNMyiC#o*okBqj(iA^j}%t0NzRDVn(QRZULW#LnB@wlY; zp{>n!eR;Y5eiV4GE*9Yg!7xYP1_@x}S{8q!7EhjDOqi4|t{4z(n0TI@a_NzS=`1R3 zr($Y>{M(?}X#>17_+akvrQYezwfO61n{pZbszaT+xRq)u4V;)ND1(kGy5e}SyMo4+ z4nq-5L+~?7Y|4n~BCXwg`c8l|c}B)Nl`be}`u_z00RR7_S9eqtOS9i)Q8KLVB1wO7 zaREnQfXglln1-w*$p+veIj3bw5=4RoMKZWxBB^9SQGysiFr$);7_OKQFsCc(>xS`j z^quqm_}-pVXMa;u{i~|3>Yi>Sk8iHZ^eIe=E}Fp91Hv$1Qdz2K0!vt4 zl&Xm_`FThlKLd@YGN=apB$_deLYaR{rIC?@*+5A~wzAPg3Pz&8B_rE-$YQ>^DkLfyNzz4=DSAK{1{4wvJkY=cP1ArvWr7FbJejFUJ)>zrBT)=! zRF(maK{H^I3_(10222Lin90X9wqr7l4S~>@G-DQxW=x?mF;l@%;4>5W%(s8i1Suth zI4UVpRG?UFMj<09JcJHHAcGK6bbbsm4F!awsmA5)n% zg9lGS?aq7gHG|SVB4vDTO86{p)!TeCF{4vp^XH09%O; zT1pYs1f2@&FjLsQAdG(yjLyUqq2pPaXbCVZWutpw3HK1&R4{9%P51HyqX3~GMn?AO zp!+GJ7>2Rv7*i3Wu^}f;#%A%5ef*f1D@JEwicE|>&5xn`z_|Tv^Z?{P@Ed>B41XC< z&>ip#f%YsHWiY1u3?#E3bYR5Ks?kB!fbIaO8EhoehfF}8&LDsBkTL;HK{Zvhf+8$C zmjql?0M!~W4V65>O@LJduvY1y2f;Kjrsse@)5Yb09mVLh=@tdg72p~03UX)=GZO!B zTn-(Bq$rBOFUF*$GpK+ctoBauiXnfD3~*yCCYVAVQpImAwg#gcVu~!-OGa=$)2%_umHgIdHFO~?3mn6w zYuIQlbX@z}Hd8s{xQ-_{A2=2Rb*R@t8~&&tbJ{D52D|_}P(SHE>Q@iOHL%e}$lv%| zV)JMCkMIQL0KYicLz;BZ=AU~ACM-__Z-C95U%Q8(9N2$7nuv4O%tntw>ZAYJnFQrv z8z18dQUR+3U~SPsPk?=x2KM3OU|&2=V~A2=o8Y@4sMtZ^MIVMsMO(mtVvSiC&s5a_YU{pdLgLs%B<>@)yr4^?Oev{0}v5690U2}bb?B~nz; zGZdjjj1O#JXUWJJ9#RcoMT1wgX_{&n5!D(ldWIrD>{2pvRtN0@c_>mqOT*qoYCv!H z66d)KY&{@{(_poCv(Zy9_;Vm6xKw(8If!~5SSo+LI_P;&K!!dAZc6`)Atm3%_++4eSOAiA1vFa_qq$X>Cv__@8wIz!)I#6+aL%j%VRm0Ei&269OWP>qUTw z0^tK94nzXiLmMgq&&4qvh$O*&957BEfGe0dFVZG{W4b6ZE?X zIGZp(MFf2@=~u6&;_<*<-Tg-$f5u!&nA-!SU+bcbps&RB2Z0>I_0Z;LZ^Jwf6a0Uw z;Wp5|hJfn`ob?3G1_Ev*HX6<8t&WE`w4$s`~S|^lDRmBkDOnzkbkbjX)%cihGRWv#*&3* z^yG3pf3iTh9oRd_&=%~CKQ8b!I|Y0W_@no< ztX~^WGo{blksNfKT0||nPGxM^HpeNGo}wZu{ZFE$duchRME2^j%Ht*@`ICS0B2~8S zp?wNJ6w{{8#5MYCF=@6muqoUz^6ulemD;jm1HNqalP{O`smpc?OxRygA6W4u_fg=U z5$RHfAoh0F8morF(89ZFC)DPYWM%wN$thmZKN@x=>&2*_p1X}g!QxLMX0tDazjWN8 zR%$=^^hRQY(WQ*1g1%3ku6lph%24O$bicBl8W{)~H#d$Q$Sp|xreEO2&zm)naDU$1 zS4X3_p6X58w87Ru(JI<6nYqB{?27y6MfBHtSiRG^X%hIxa`Cn^Uk_Y=-fDd}5kZ=xz&Af>=&09w%X;zIPi#*r zWmd>*vFLC6CN51dSSM|go zjZ4Zqc+btMVr-4w`VTO@J(K?F4$wQD?0ZVNM0|ifbu8`GqW7k|e_Y{7IB$5UBH?d6 zagIOm&_a>agA#uMlPv3a|J!0hDve4(VlREQk(vPUTQcIevZ|jiX1?H{mAm_f8qVZx zX}@cZEhx-=xP(XTbz2;jf5y^tb(+hzrgGVhbupfM8%_1YL*2&)d&ci=t&Lf%=DaU? z@RqQWi&EQh*Zxg@+Z*yn^=>SBXruS<)oYK#TMplLtIU76vU!|aKG^COCt$lNwEziw z(~Ye&o}Vk9en36KJy-SegFCk4E=NZ0JrDED*V3c*QX7}$^gPG9Q#_BK|F)>y@&wPB|Fr<7|BHbb6G5Be9@78m3ywJdF#f+9ueds6=c&{pJgHk zeFBtyRlR?feKX@m3-FE3V=VjovS3HyRJOxX_Y}^K22r!Ci8-DL@&k7|b_&GW^_E1m zjp{YiM816A&@SD6&cjh1ZO}+vSA27dvFV3byoaAsT-#J@iah20>%lReO5Xwb(1u%` zQUdoSRfVpdelu13#XBr0BIZL(etk_d>0(WP(uaSpwx!t>dom+D)fQ@wKXre-=EzA6 zG11f`mOC}id@m6>#xioxwjXqppea0&Ra#X2qD-wUy2zu{IRAFNi9?IkoA)Ib9<6?K zYhjDWy2z*++M|#zy+M_na>c6gA4l(?Y>nIXH#yv^*M~-}iZ-fy7*Cj(Zkvc(A5^Bg z{?>mjS^M;>Nlov)dhS)6xOuhX@v3*>x{m&)YbKA^G2^U`#mP;Ld80&fE+9e_5ML&P)8)n+n@&4Z|r~Czo<-R*>-*}#g&CS`B z)G0#$O4@n#hx_~O8*M+x&R?DH^<*i>US08ErnJMZiMF>$UADtM<*IKMUeDj8Y*XHG zthz5O>a$cuM6tq|rvb~p+KMUpU*u#xa#`}|Zp@q5vhfL@&2cLp9lWbdTfN|ty~}@P z`fS!5FXs*gOT&3T!cSRm`a;i>k8c&C#k(3^at+I7Jo~y}p5>?Yx+8ZhCW0JxU6;yv zv&Z(Ycvt$BA9-0W!k-tNTbb6nc;KH^j)M}^4+Tb+&Or-RFB``h44=OgL(=^;wm()V z^rWED*F(MQ0(0+Fw>D)8@Am(w z+}aTQxJK~Mq1Syj?k1EetI3<92})P9vsm}U+RdZmGS8P$O@)f>Z%JsxjAr>u9zSyC zbr@~o&GX$~J(dS%r9FwTwY>IkVD*|a;SwvNra~lb&dJC5Z_vOtv#$J=(5ZjpvLvo+ zI6!*a4*}nmcWzsRcz|ya#ey__HYU%*zgOTqK%Rqt(@q1y?=9qZAozWT+yX=#$4x-Q z@NXwL&yYp&?_@O)5uCH?_wOoM5Vzk4Kd&?2M{>#U-&isk=TH6P8~YvSi3k7RaDB`l z-&_2wNrva}kN9UCp4CTz%m#lLp6&1BF~EDm2yVX${14+8-a!U%tc_zBCp>T6z%e}I z_2F0<{9nO2;eF;JJ{I25y74&S-K`7P!~5N7+#b$%J8lEwBemifo*SC*^8?Ja3O{4K z1yX_IS3pYebI%LX%-I*>TR;l&vDbm*;~1Xna&ZjLepxsVJX@yVdU${CO~&=0Mx<@{ znWu#G>t0a+Bo?=a95J{aa&YjmutuSHJX>%K?W2GM;TYa2e%?LczZ-7viVMW>ezYF9 zhxaUN99!c8@2v1nXNlVz05QX3fHgJ6`QiD{5ZA-=u0D=caXZKZ@4PIWUjc{~&IxO$ zjALp19khY9lf(Ii^|^msm^+dj2sOTZo+L_Sc<}T?FqO1=wL(EziDS?AHT)O*eElc= z{SDU!gZmh{V%nYp?FAyeIN^RF!2u+JW$N1MY<1SOHYAh_l;O}!z>_5G>E#~b$E@aCMLH z3-r|R^zwF#2;^!6`niKQfzi<9C&%jlmcuXDBQV1AKd~(PFM0eS!R+vm2#$wW0LkM2 zk&y-`Fxu5EJluaP$UV?Y-HQ|GPcm}%0sXn*WU@7hyuS;a-s58u?R#3H21Yc;8Kok3 z6VsD4nXO0D8MStgO+xLNdz3+3=qB zl+ICKNQ->pKX?V+_ph2($=FtGs1kmN|l9+d5=|8v-`#E7FI*v z9`6E5-xc1;Xvs?T?l|7m)@Fa#R(+_*{6mXUhq{Yi>r#iCc^5af6piErUv%&f=jl1* zJ5A(`Iv#)Of6_eSTzoX3;5B!#dbN4@S^tZ-9qSfXDs#L174%j|DNKh6qMop(am z?^*Ufu~gge_Pl2EDuX2>)k_R`ydQa5W7#Dp`WZD_OWSG|ae40=%`QngrjK#Iov0qr z?!U%<=3KUFZ!NlBxYl2!@So2av;gr2-AeC&6vTf$t}Z&=^@SBs{5CRp%1t|M*rHCi za%q0!wU!N$_1?;3$4VmwUF``dYoJ_>TBkMNP4*?~dj5p5C6@x;L-0M#40W`e)fhHjNkZw#XGm9M#Hr}EE+$SYNpqy;-#`wWvn5? z_T-9cJ%Qplsn^{G;@t(Gxk>|~TRf%D?YnwJH`B%6u3pkdfm^*M9dMwu@$j)hY00Wf^IG>`WWyAEe% zo8?=kic0rR{Pp5s%aQ;e{hs(S`cwO}XY*}kSi`mJA8tN!VHxuL?S1ReSJnn0ZI@$r zxHOn8Uv3_I>sjZ~rfvKDYF%~@342F4>5li^C%4|ea6G~E{q_Yn78ifqG!^SKSZdF= ze!`|v>t*KcrSS*Ukg|{q2Q_jNYqt+cW!6`7n|8k~R*~u0Q$t^oyDegVSbXZ62U67{ zX5Xwt^gj#??NvpMd&*p?8=aAF&IJjvACB%ANZ@<^Fd_Zq2_Lx-?&ivGabJ$4xV<`m z<(aT7X{8^AL?n){r5Jy$lV$K{lW*Tz^C0&U+NV-irc@kI|FPnzwouGaqPW{weOe*w zNsGN!n^w)szwMJ$tKHlC(_MT>!y}&t$fsoN-#;*4H|vdojmDeW{utH0s!~(so%C;m zYwZl8!VrFE)I$_JOZ`NnSROB2%zP@P9Ud~R@4;^u#l^v$o1Jh`ux)Y+-H z@bZ19yn5qm`ar}+&6Sh1V`5S2Dpm7BR4h`i&o=apPS)ofK3i@mR%9^nFfj1K+@PXG zd$PvHx#2Az(>d3hk{_*^FZ;Z9cr;!LQJp`qyRY#`{cS5bW9e%{6qS}+6ESg1jvB1j zcpdmOWvW4S{G@-2?Nc)eiS#tpGbNh#TXpQWMjyWMTJXV8M6JDv-G0Z71(6S$1I9N8 zihf$4Z__KWf|_}rd~w;(>%h9$iCaxA9s$Q<__{?yx-#tr_S9qyTYav%EcrhG00960 z001EW-|DmJ>c9e?MMr?xHiE>q5kUm@a#US{H_9BnaL#`?0x@vcqdqcK&{ZSTsG30F z8UYPW7~r+_2yJ@3YeQfF2~H=1a4^z0_(*T$g+G&ZDm(;jM*?)Zu*%Ek(<9So)8A}N z?MuegzGzH=JYy8p74JmweS{wMj(?|`1LyU@j`F?L(?B?JEfX@g~DdzNV9Rc z*|;!7Ba@A%e8!UiI$qT{Pci~l<23^KtIJ}gb|HTsfC>y*0}Y8cXu7zY=cvq;Ljlzg z#cCiRGYx)v6G@7@FVL(8YSsj`({X-6sOAKyCf@uZgK9$5pqfBkegbs)KzJB*Cjzx5 zVqOy|uZd{*fKoP*HDL!igp8>}=$HyI97;@kD0aa^feSXVb^9dMs$8_|8=YrpJcmzr z3Y~w;--1b~#W>%XsVbHVR!e;)fQNQaClUXi#5!q`w_?^9VWHB+HBGn&FgXe-Fydq! z6DISR&?%fUri7j~1$x$$5Y3c`96;4|$&~rBX9^O^;?Pvm&r@kX2l$Q(@f`*69The{ zDgvLXt7^_Fc&Q==cvLjNX$0UjuSZDn(Qbb+Y&o4e>U83$(^-t0j-qU!?+mE#jF7<$ zA)w7L1+*DN`V1kU2{fjFCXfzp$)^>OUXe2I3{;$fozNYVz-lvzVP~S80#wZMI)V<4 zx$Q2L(+M_G=HeykTwwt^S6n>L#an7!K$Km2}%fd5}W)aVL>Qv zLC9!<@+^N~XeP;k$pW?mvmo?XP?S*SfWLW1N%_KpC>D-|!GyO^obVPItSxMVFTy>r zh^e;77fL6X6GE$<06Xb~5Zwu~mz^MPPn;0A7n@WTlUTOc-LxRN-jWc|5(s~2N!W0S zAD~sN^Ea@9nxuXjiOsPj?17NX39mxOEs>h}zdaj5t(Ic_m%5V~E?gG0qR!xk4uP2v&w}J=v0;tDJxAD%u1C*(pKoDN2T_J+Yh*C7%K%pAzyv#VGj{=|RRR zo?syN)S&WIS1y|NPK9z$4Y{9clzXZk8#JptmCIcoR4!MebZNS@!p2WbmP66YLjlXh z8F#rn<02_&Qg>^;or&dmpKCerBSzs*&&#v1PU8`KuhabbdO6tO`M!V8=lkk^Q>O;a zzAxDP`%v-khbk)CuG;2$>PDsAl(*Jp^6645w)*#>VR=;h4-(b>!<4$Ed9qwbNa~F1 zfcgMVy)>K|DvNNojGVz32aaH?mAYEkgjoc(i5(c68>E4VZZH{S1vf||A!(FhE3BE2 zD5E+k$bE6Z%&>r&A<=&^6S@v40v%2=^(;0-7KZx(9B{0h8C;Hm%Moxn4lYN*u_@&= z+I7Mj`82GBYLZ~9|N@=|af*a5Ob{O5=6iEj)3L%DM1B0QH42Cg*Z`# zJ5dEY5$Um(5PyqW-)e1F+9~g(XG$Mt^3RN7omvprFv6@1S+9ilTN%n(X`BdGf{ZQ{ zwbGjjS@2m!0>~=MusOdvq*<+2bdG9BuP}XF%?-F(QdMyUr)XQPSl^QE965E=(oTlg z+pVnYT1nTnhGBme1)60_O~Fh%*d^I5U)c zX1j(slSw|4NIsKAJv?a67Gww;9%o~@XEV8H6S-&efzktHU*`mb=O}G)!h8;N^>adV zoMUwLbHpt79G>)@8&saFm`w*u!%+OWQ2e=}kaLaV&y9ava-Yj#tO+XDsFkXhlUOpG zH4x64Q0N*X991*WJKArt&4x};G{tpZPpYI@{GjrDH#5f1pwEX;&JP8iFV0Zs%b7ZoLDvHTfuDSzpN%DLmGi=CnN<>>4P#tt zlqG_c{rrFMFAx$gfcjk!YI1>m#6T4bM+`2Iju>2!jqSPE8U6Z*frjE7Ex;#LE(p}Q z09fA#dI9XHwPCBZx|O&2yOv;CYsGp12MGAD1?wJA)>VhjbR~UI_(XMWI7zMz4Yd{; zYAupSo}Oq)8fHt5q!(*L75N-_A>AauknCz-h@XEYUFc$8YL}YJO>}GHB3KEfTuh~0 zOr%`Q9t5b8p2xWA%+eM7nZP<|nsp(sb;2&hI@2?Obp*&di$4<(XiU!p))BW*q z>c`6Ll0dZ)_T|Qq=SCq=Z8Qa{jU)(d6atk%V+vFoNjGj3lIB3Qje9wZFd2M@< z^V;?z=d}PPDC;rHHD&nhCIJTUF9XtFiqYzq&GfXx+XYg_N#Pg$N$D!c#ijL;-i1RrtG|3T~!_*A8rQ!+GOotQ@a3@Y!0Y4ixa_S zXp+q#rp??Wo1;v!*|a=Cwz&@2=6cvgp>b{?#<{`B*t60N*h)9F=Xy6t)^d$;6Ewz6 zA%>f{F>Z=7#!aR*5i-Wjz!)lUX>K<}nmaJBJA`nc%6fa)7r226fjfb}-37(p74o`^``cYn{&p9Z9eCK?z{BnlL(y-DgZ&0@ z@?7dS*rk30>|Z5%HJ<^(;C+I_XRZfDa=a?-*aAf z4~%~wH2!^|3GUNp*b4ZZtuAwK)(8;!i|zZ=YQL>m(;W(P0fjl;{h`$Rq15|B3HP(b z?ER+2?ESzD-V_LI_5jVA9w1%(0A9^L5ZI6Adk^w_?;*qqdy~Wykf51ln=L*%9)kn7UVP7 z?tdV9{XsYj?$$gToC&1^=tcHqOPF+C#PDC_4|!gU97ZpNW_*7Mn(?I&;Y$%_RCRs8 z=+;lDFrb$>pqHXu;$<58UM8XMWfuBgw#;uw0Vx>tX>Vy_xJRv$2YE$rFXLddWA2l2f46E6B+V*p+w0AAw&UK1^=3753g z`A$nt9{xF?`*T1S#*aV4B<#=Z!OdS_^Ni1X~=&a*>wo*kj{ zu#KSi0;=~^TSc{`&{C=g$^UyWhP@Z6{+{@7QI&#=698+9^t})hK=Xc3|GtaHRVGC9 zK1B0=DEEJT5zYG|n)gK`y^jI8uKhtM`2#5VgHXl?5i`^WhQ#CpXlm~F9}+M75cxek zdb=|u+DQ_Voe(dkGveK8dJADE>sUA;eEZh@X;_AatTn zQILNnrCzWDrMQQAr1*>`i=UB1@H3XLs*+B#c&hq2?Ap&m2A>P5>gT3Z^>ZTqb0Jj~ zXiTZ<=Ok5Cqyup1N@3kT=kv_xqG><(jDU00FG$?|Le5eD>F21h?N@~8E90W;YdOWO zQ$(F$hLE7W?NA_h^4fHB-3h4eSA^4?=lg$71zm{g!tmr@@XPZC_qPw<`DLC$yy~RC z7(-CwCa7_7;VTLT%U?$4x{dP_JDJ}$xDX;*MtDJ@nZ&sd5*Rh!gnvn$mmuRMD8uX% zbj*5%VA%dEEC{G1c2B2B^m|>?S#W(_Ud8&l%GB3YQugIl^z_1=_l7&!rq)DVVT*sR zR;-6BBbWdK5AI4lxGT~_wXAYB8o}1JSKigXnFR+(UE7WD?1tKQlO|QKLYP+rhP%O@ z&9PpEVVd=8gMMft(!*KO`JIh*8VkL+8+hWUe|IMUyCWRk*`pY*w5p*{((j>!S-6UM zZu_|2xp%y%OxHsW0aHh@>ol8f(CL4g9!P8toDI7K7(Htc71Mf{Vp-uV^!$~u;UdzH%g&_jAP5eS5rAzJss0jw7f zV7-jdn#thNnv>9I-HT}91~ip;>Yu&QV?3_}1sYsMq86Xl`?4F|_z81|j(LAqU(36U z;~-Mn)q9DVmeUI>`rtvb2PEIaigowc!1v!=I_y1rAdBu{3Pq}-pQj43tH^~ zv}(ez`$4*Xsxv$~bPU=h#JKw*c>PRX-_JPqsAOiafKK?;QBdNG>^?4WB=)1W!hk_g z@28JgE8fuG`=KAi*8QQJ{>p!IRZo>F$0%8OX72t(v;GKuf0McU8_i9Ho6OyxXxTp- z>r>V^Q}r4sRk%OVaR3xEK#kyqg_(uQtWu6?IDlw404XxSq~QRghE%jk!vRFY0om9d z`9jJn=r302K?K_% zBz#cBkQwBBZy?8>A`@{3k#ZPO2;w~<>7IV*!g%*2c=tq@_7pdRyqY~*ik3Swq;r|m zo$Ho^`^n;>=z~aUU_t_XZ%DUysAG6s*F(QILBBV`xOarLRbAI+yOLHKq?sS=ZH6`& z(hWvIW`XTpAnl_YOwfM~MhFH+pi^}NKvYN>kq$N^9RlfwfKb734k0*)AS^>7aH_gN zXl$F24lyGgig*s?1AZt0$Qncq_@Ti84Sku@&BXz{oW%9x4 znrbYTsme1E@)^kTojcHus}E+2!$k0Ij6ApT>FGqS1~ z=sy!kxs!+csRf2(jPb#>t{uxa&&HazgmvYC><=F-7aN`jM)oAbFkv&kooN6eP7?SZ8ybdg$tJi;pHHdu;Vqc?@9d~?+%+ZKc zw8^FV^HjJ@8jv-n0a=4O2tV%8^|g?=RuEWgG$MM-PLocA?IwmZUYQQ@iNr4_A`?wC z4e^PV@Fd%-5U+%G>auE`?%}{wz`=<5!B%Vt@p=8pKb?T^njX@rYFdWK3GJ>+NDaFjhn+H-iOIXILtI~4g)h8pJtCR4`X@0J%XV; zLKtjE$RLj}fjq)OH%XG&_DD#2r0|Irmk5u=BawftkK|82z2b-~$~wf>xDYtfwBK_i zy|ysabP}YSwD=fW?nh^GEInQG9;TU=Q)!Jp2q~o;ZI$9kohd|}DG2oxlR8sOF@1_`wRXiAdr@CR zT%Ui=7xEd!D+LD-Hdd}rZ$*Lz)eK}rkZRp)ntRIp$&+1_;s8RKZ)oMx>X8=90NW*68L`%4t$0s9M1HR9)l>4>4^Me!YrRA#WT6^ znNg{=fAcYdGzXE)v0{7pi^kw>D>iM-5vHv*xA>*Vx_l8NT4cq#&(fmG=nf&5 z4x?X$FfKBpS2fi#dOHxrR9J+-1{h92oKLV~`vjcDLD2>BJV6)~C&+{11bI*_CMH;n z;4F?96pKxRVlhllK>3ou4{;&rou+>#xSl-`Aw3aEKhcWyVShju-HuxT74pSXUh4K~yO)#;8eCT_4ljUUC{7YW z&gG)jY_){$FO(NFMr&yCt7l4H;Yf)m3kJU<=!RTQE3m>U0ePjs}jSLDjFy zMh!+FcmcX1Xbh07;B$Y5*)V?-v7g0=o1!+q_&{kEgQ0xRrJ2RZW791So5O-&gkvO|Ptb)!6TF9dKa`brlk_ibGvRpt1%W>Z*tjT6y&htA90y zQ?LK|P#X5FBx#pVt@C4(s$Eq|&D<6~n%+uix}?y&2`Q;-p3Y>PE^Z;5E~S8{Gf~ju zXCPyqA*@r-GVu&i?iqi9T%g4nw4D!vTlzn#rIV7S|C6ElPtVfiC4m1VG>Pf;^`wYc zgwxY5Xk)_L$db*Q(Aw|}*~T1Fwd=g7k!%HPW{w39Y9htS#df(u%BVtZI0+*U&(4OV zXN#-VbI7u!b zY>gG`wKAQ{I7g4PKQU=*q%K(FK@gL$^Z4X&p2fZz8`}Jbkn;~!{-8O#X-06}2h`w) zqyv74ME%gT#rQ+xt}z85x$5}{!ug2v`O1jeb}3&j8z|@d_JTw2d=l~3BBpD3#AgIO zN_ur(3OX(kP40h!tk})Poa$}{a%}(-7fStsDg4cZ@a*)(=tCY}iQ}Qjsuv@`7bC!` zK_3TjCcm=a-onKoUo6@6Vj7Ruafe(dZ?C#IE+Gzf32J(Yc-yd7!!I26D#F)rK%R0* zHg<4Zv07_coheu63zcdGL1lnebtYe3X|$_VZBY-tan*mB75Rd0SDmRK6J7%Cafu%q zqA0xK3@mmD>hep2Ski>-dO0Mz90Xx#yY)!%_3h1(>%}>8y&uX$hg#1ZYP}cRp{ncg zgtDGRv-MImTkpqtr0#l3Vw{oyen5f0e@cU>dq+wYal@bT1>jGejK5rQ7fTqtOr9ua zEC}qU^aHby*p0b=1jf%e-=8rUuu6-R1pLe(;OAVx&&>i<)gG(TnTp<^NUdykDI{?} zH;CK7#chZ%t4!WEfKV(I^f&9FjW-x=yupC!YUX%X>pUv(yb#XS9F8WfZz-!^gnsN2}Eqp#)e}Nyde>IouKP=T-WQ`8JO2aD1Kcw zHq3y^<3vG!UC*s>y%p>2HBY(YMizE`HZ}kY^QoDS-^kM%*~@PfY;+^H(T$>)-`D{! zXEX%B&DLA6TV+EPot zcGTio^HU3_FPK%Mn}L~LXw~UVw&%4)=#MSDKeq6H@u`Zc7G*4VpHeX07GkNf5-w{<+4+_wAC7%<4>$}W-beFM@?joAs)o#Q>&F@C|?nXlIj=CGgBXD(v-Fr6ybhp^O_weq$ zr-NaC@}7=|$$RN?RSuH(3SECM@A`YiAbGDbr3&e(_P^!Czcr`Gs;aMV7)Kjn^1V+` z;XbayeLSw*XT*PB2jt$*o88~hTwD-dF>ahZV%j)S6-obIFc3!`$;S3{?W#9K{2i1^0e-G2 zkncl(ger?EcT10`cUB(Ji%$itk}9SvjV$s$64({R-bcu0;G?k3qsp&*=m_YeNb;k9 z4rpx_CiPLGJdySo;`12adVGvngf$SaQPCG1+xc=!$!2%odDVd_5S+&$)#HxaLokmM zFpndlk4JaU-~Gf}7_Ff`~QX&*Gkler))JIQ*UfjzBOziMT(>F+NE! zvIZRElkGe&d=i0#PYR#Z|A#hxRIJ*Vaw(rq&miaQ&B;V&bt6=5G2hG{@=gM9T3*)Ctia~m=DHY8)4$?LZn zy`BjbynY+;`fXX2z&NVtvp>+$w-J^8h*12IyU!nqKCA(EpFc*s&mTj>;Zo2|1m!D; z|0^8jD+DELz)`-^&dm4~_p}$U4qppy0-!=)<3bg2QbAu$3*9HN{9bNd{pSvv9fz1dv+n=1{1W4z$&0a4 z`1uQL@E85DsZynUqFvH|htiSP{)Kq$Uy!1IiRe64Cm)ypi}7u~*CE;KD)f3}60p|* z00960001EW-wCkSk?_|efW59|2yYp_Zp5`6l5JP4X6mmsg^!K5v&Y8UiAg0|5Dd3x zW9~&6puM1ci0BQZ(HlJ4yg|&v8t|d=h7c2Xi={kmykQw$x_g6vyts}{@H{-ZCDff6E-;WIjfx-fd32 z|K9?kl9an|w9z>Bb_Z>X5e; zzGLjIcl4_Sil4ZD&G3%l)vO(mXonRWFw^}m#fi<+m7SK9>KCOejR@Wj0&fQbvBNaZ zb{Nw$3IQ7h5`pozBkP=rZpf@?kF3Ya<{I7SHQ-AYP8G4ldl1HZYBh{3!OZX;F~fUE zTk(SsUWLI7RK942_lSP)$z~A9sys756TC-E@F9fop%v?YrC(5U1`JdGL!$nNNXrjR z>VIfdpUU=z5vKuaeJHE-AyI25WWCdh^$paL{Cg+SY$sA+r%AJ&M$M>rNwb|qvz=zY z-AT0j2(tf3MTcPMBDFpuYJG&ze`Jg*szxD6IZ;y~VS(i%LtyzB5`C;hyRZ;gv|JR7o*9QDwN8|rm3jHGZZ#ejGgd??o!I+50fShx*?9T)VTV4u%BQ0pWY)^9l<V;dT+C+atU-qXFf&3Z++ZEr-`dpF&-x8%0H0YXyF z2OYz|2Xm7>R2YR*9>2CG4sZ32_eW_0^{D~eJ_Do)9uf?cQib>+hI9}-HUX_nZf}mG z+neKinvO5%8u9pou1Ky*m-0BnjqjO_O`TDwG**M;vO1l&{NL5-l3iW4E8~KKRhe9W zuDZ^4Ujnh=;l=o#O-(4>i|>PU+K1@04+6N4AtdY*9TN5-eJ%CiVBSH4qoM-2HaU*2 zO^y$dqr#Ags4#>N-63*RkSQagg4|$lFDmG-T$&@p5IRoy;2O$JH#8zRpqr56!*(+` z43mPxFbtAZiBp-h-51{%ZTGc%MWXP3R70~6xBPTPdrvju`|>fluW4zeYYZE820m<~ z&M6c&>U6odQ5PSz8&<(iGK%Gnqokf3MRw)zk%{LHCQ; zmD82d;yFGV5{(XXt79C42)h=l1%@{off#Mrwa^vvt_6c2ZAZC8AgGTPx1%I~vfiqH zYg|&Y!4V%#jIlpNvVWK_yT)La*q>Npf28pKCQIyZv;>teT4H~q;{LKF1hVd-C7>1d zCssHBqBy{P{<5UCtc}1-Z~!sE0Z7vWOeQ$MXaXu+*urvYfNBRARXc#FHU@GZqdGWL zO>%W|n{^!BX06-H+Kn-4N99X@+KnOFjfr&OF*q9;i|~&n_{SocV~vqS)$|5YQP_;r zB<72O;s-MN1Jw-gS=tFJZnGfLy3YhPRbuL-sZk9P&;wDD`hUPJVoPNl9Y<*%+?{>ei}&q0(BVKmnIhBh(`B5JWA1v?pM4kjVNV z&ibGz`yPb2L!(U~Mw@`zO)#X*6Qa}R35MBB^w@)W5_oV#5{NF%jvoR)y3WQ8%Kr{A zO|h6p2uzs3e?6M0aVS^g(1=~m_+gOkVbCvx-Q@V;ocrMsyUFn*#3ka9obbqYc9Y|i zk@d+%#&L9!aeT7DT_#6=yUS#0z88IE3RhrCgs-4GdE-;9SU>J7%ul9@*#{<|6Em(g zc*s#4{83R0MRYlDeA;equuh9k9~kpKBpH|1YtvcRO;tQxg$7#j^!^h?oTc&^*(YeYJG(y;p%!%Uo6c0?rPh`+eG!EMnBZuvY5m&>;PeNupiFms>Q#jt_#(&IbAN~MOBxR{#uSWE|=%bn{a*k`cJZH+3 z5p(8p9wStPL0~)<)1|Wh<_xjHa-;E=L+i*xE@d40@~}%Whe$<5gj9PGAr&?Fet8( z*gJHDh&?LD*lQB>> zxrgq%Cna3=9@qvV<#&ZRq7Q_ZJ8l=u-B0&e+kaCh5Nfg=FU< z^Z8~zB%4)R%U&skVf2cL`wKwLBR2WSH^6muAHQ2w59^+0+XQ)IH|2>zCDr&X;qij! zY`ms_C@u?569VvQJW8G>B_yXsCnV$&@i@9fJYJF~hEl}DP~x~s^28uhMobLh7a?JT zK`r^TBGo7Un$ua^AEeL*C1VGca0ikqoU4#d;lr!K*J>_l3o>~NF?kEps3qE8TQnoj zNl}1lG3wYtbcBy{TCjy%c$cWw-5e~=)f=pTEdr(oemf+UOf$SiD&EqBe@P=~B_Ag% zjU#B4ID%FSp1PVVyILAStD{FyE9uTw#IaQ#L9G!ZsFmYtl}C_FDY%cXN-N91g`A=d zogX33AmM%K@v{}}qLST^S&c&B*=X#X zO~%gI$OvZ}J>hKOlc$}CbdYV(Cq?J*uyIb*lcIBjO2TLjr(F}Vk~oj3dmd_eo)b7N zn-&JgX4n+;Urg`+a&|!l(d3@=IJzf)J#M-uT~}14>&oJ>_aC~la2B~1QmhSpKnm*@ za^qbXwT8V2kzS+{UT40q)7A+;vxU6=BFXD7lD+;Slh6VF*C}=VGe+pRQE0ey+-t?&4yknB?Z**4Xle-cp9VNjPM z!IzpwfW81-J}yHAqi`3{gbxlb6<#TiUz*i3d!;;{Fypp`QZWPax!U-p#6p)r-j}J+ zIlrKc;+YBA=rUrX%aAE9Guh~WGNX;CX!#qwiYzqKWs;dLlgxBkgqbem45*ndBWAiB zCs&uVb>QVn|KrQE)6JP&D=Du^9bXQvQVYy^IWgzu$ZD4xK6&QwGko$)*GVUB)+4#= ziClCKe|&xP3Paz*pDBySG}oiiCFbfs;z9jKQ9=C*0`&^i^a?q9z9J%jd%l9_#8=4K zvrHMW{=9+*Vbx%$&XqF_8QXGFk%-O7E5aCoOQ9D_OU)m1qy8AB8J)2w{{)f#gk3wK z2(Z;zgD3}4)m6<|QE8)^*oZoR8}Tf3H354y!gO`? zn7SH_DKr^g9d=)dxeqo_+1QN&E1i5aK9cvR&Y!l+Y$4i<%SP##!YBKo@?2S#txvqgit`VH;8lu)U2>mrCwXQL$MJ1Zmx`wEAjT$e4O4ncq zyOsdH7U8-!+QF`WH96R|qJv%QI~cL*W=OP|-V&>-F~rRX!{%s+n=O1x>~1lZJ8QGC zv#28G&e}{mYjZZ%yES9y^tvxqpK549+3sd?;O2US=lYJUrmvS))7Q(Z>FZ6a>FdF2 z+OPq6lLa>*87^rP@+Q+JricN^w+8|QbM(qA#j=;wLph8(voq}zx3 zUn*$GtbLno?c2a9bcpkIB9&X~?;gbE9xJwQbGo(8PSrQs^;ze85Wykclpo-@|J);m ztb53YWU$`47a_P8A-LCy?cw?f_#Qe7k@xxzfXn<4g-e4tfQvy7h>t*i%S`xNM}j^U zDxac%{;hP1T7T|@9EJ}0Ak}~CF7{E=;H@oavER~WT~*IJQ6ma6V0@p42{OG8F;x^* zs_UB7pbk14T+183FO9_92gDFI!9(cINZkF1?tUva!1X)#QxN);waU?Wc(@-3g6tk3 z!{!0R{sH5&g9l8{4jwQ(J9r=)8{)-;YR5%?t6dkZt}ofj|Ircd2QbD5k$?xSSRc1d zYVoZ3v!*YZwS?`;JSYvT2jy7(Ae$Kj!4Dz94=G!Fg7bxxRdDVlP3KpzLH3Y1pdK=1 z91qDO?IAhtJd7|sY{mL{nA~w+uk_0^L=TII9yTF*SVr`)@!hK5@iqAGtl$P@;d$*g2cnvJQ{ag`Z|J;g%Y&9){wi*{fRI>CY^47=}UdBX+8P&l8}4yd#tmJJoW7;oi{pvlQ=+3FSfj4EOJGcT2m{j|e(F z!eh-N(wQ3l;hP0&RhF|!Y3Etqh1@)UrFoQe0Q%ld{870B9*yXLN4b?Al{-MDjOc(z zxg8$ey$*O(w9uo#Lh||fCpwno$oGgm!E&D`q#*qS%mn#yw#4EeO^GuEBB{iO>Zb0Ub7a+0zp2*?`WMc9?kvRIEh;Cq9qr6~Rqr3pK z@-C{pQfk%ZFY*q4kw||LNqABHy}D#K(8A8n49@KHBGAs8Z(hU^;YA)oRHJTMhV#`3 zRugm*dbsnV?+CcZUJ}CFOI+fAOYE&IRgzc~e6NsO=_T4;KN~J)EN1zDk#P0}eYqsA zKTx7i=rR`DJQk?!pHSOBS+Tv+mZd-A*JRgMQt4u`tQW!Bj4Z+Y6L+~kkxpmajV|{m zy-Qgvru4=n4?TZ^euvA&1wZ_RLR^2*KyUC)FBTD4^6i8;`gVeD#gB`BX;!&Ro&WSc z&RXb4)V#2cJ*j;g0(@IVmt&MDc6=D#;~swps}axDyChI0a;JM7-RZ75$eH3h7W-~$ zM;W@4wCXtj(}A!uA)Rv2R$l_g>1w#5RLHaHN^KOLe zy{mV7ip5;U{X#VNzIV-kJ2QWSbbn*dMgB%W{S68Jn-m09Vc)V{NhvogrAw{BhYjOI zk{)`vB=8};Ve$b&^Z`Ni0TTX!gy;ijCn23{J)M1fN7s2kAo*T=E=*|vWifO3PzbIc z^5OL%3$FV5_wRX&{U-4-C%h9qzEkzHO13L@X@Om7EZ|FM$aU<0adaKKZfZ!QR89W| zhp7`J{mlpFLpu$T>hF-~@2c-zgtp}?hEP&!qz{w%cW58P2i?jZ|48dlC@DdeO_Ft&sU9J?0MRG0E7X&G5#gXbl&59xX!U+>%D*aVN${~KlH~tmNL==xiN`)by z{a2)3PVv7M-)8xS3HXNRpWl%BDm5W3(N9%zadNSZPpN%>gI|EgSATqqdf;2q1K%R- z->Scx)5S6?RDsvxGdXJ#cgu92GoSgE8VYq% zBF1M8w+scAL@YQ27x;ey-jA;doLoW|DRTnWs!bnNl4{To{ZsbpbbTdg4f%J~>5qOW zOe?B9pKfY@5|;4^6ujJDp&=8GK*NQ#cy zMR3$ETvivF-slqf`|F7+DQqRW@=%}Xisg3Ya=QwDGp{bhGp|Etnt2o5NS}2>61tgY zUR@*3yt+b|c@y2Tv08WLRerB0Uf}v_+SOkrcc$Wc{Z-J_6*?6s&<*|xa)W;Y-Qb_- z9_4A>O`g_W8VS28mXGxA?PLI&fM)=S?tE7{(UZ09X_y=nz5Mej5Pcs+(q}jJ3p6oa zwCEClIzQ^N;L0GHEF|`jGgbF%v~=Kk_vQnG>>;VyPaI7BnVtHh)kd(`2rM&z^y>g5 zWq@%I3@{CX0rDUikc}O*v{B{Y&ZSVznQ~c=1m8;4&N{0)ldrBc+ST52w+0$v0PfI% z1ol9LVW1KAKojhNGVFob*t`YltX-`yQK(jb!r|a8SLbcpvaRZLMJLtz0Jfu@_Y$HN zrO!aD&mf}DAOvoZ@-BU%qfATn+#jxPl{MYAaebSU;}m6KUobI9i0y*{Hlz#<1|>4S zU;-_f%}SdfA!1&}N6C#(s%^zP+HE%WDf=)6dV^Qt7fgWwP}}VweHsa7Z*< z^@}pgQd@@%2yQq5HylA2ZUm=mwDl^QBf~U2#1tI3NsM&g*bDZ26Yv|kiE8!dadxY? zYwA*lv7?&q-}$W(L{;WKwnGkXWChy^b|=zUmt!d-u#^#8$_QvcV5Je@yb}cY_4`QD?;{bok;Z->sncvfEkb=hGU{FW#J)UX+1C;tt9teug(ye) zLZN!2XsWXxgS4OGp|aSr;i**ueUw5|S7plJprph}0y`Ra_GsSOqXPv1&(S_lsMTny z)&302{xH!6O%IUvr4r+e;Z6>J!sD2{aX1L$)&F>8(DB5p#v?0?H+q$-=>b482;-w3 z*(YkaZ`HJOv1+0=2o9LnK}_~Rc!V`Ef(e8`=!8S01D)bg_{1UZLbW|w{vvdtu7 zn@Nb#B$I6>wPTw}g3n9>N=UsrnR)i)=(D~~Jw5BI3&~kuzy~QYnVj|21=3mH#AMpc zc-9v}28^dz?5uBM3Sv5cC3+({F$HZTYjWwVuPzVH`l5a71iC;!G1ZFoa;^)k6jI_* z5ltbC@Tp$EBJVs3>kPVd8ne$dy8i|0j>f0PSQML0L5s(N60?~uvqfEI`??5+f)aBe z(m{`x@836GQ?|{aR4tf4d7++0A7}jRr_$O{nOp~75=vHq_#YH;Ij;B zy$skFc;+&HmYJT&`tU^4Gm`Ha-r-H09Qh8VoB*86g8s?k>pHsFys~V-5uky`+Xm8I z_+e9nR;f&joHxFkc8`r=(b}LF5-K^joAn_#z6sWVwWB*CD}*q&LfCU(!6&B`{+$?5 z+=}2?C!+J#A;PvrBbF1M&I6v>n2q)D-poqPoVOT%*{zY-tr5v?G-U>jmf?_Q`wR^o zp=$cn>GvfH&I?e|om84ecmpeuAtEz~amIYwQrF3kPBZY7CEDA`&;i;cxImNO0!`cn znj{x!;x5n>tjqa^5zCF(3$uwFyQ|o9o@R`&S#qA{Y^?W^lb0-=wIDTr-VEkH&BXT2 z2zax9#m_D4LjT+{Hf^(*cN7h8`N=ykMYi)&6xS_9!>e|>LfU@OTvEbODc1_8Aq7vf zVuL)yYKdZ(+^{QsF(7f8oZ~Zoy^!jJ1H=n@?zAjvhDQy${X0>zVtt)up@UVWC3P8o zfTtvyvP4Y@Fq9Yup@%EtJCkz%vNx!8YXOvhD(#*UJGdfuaD{X*PRG#Y)`^ymcW{e{ zuEp4CEh<(6BS_|2ZImv4pdhiDfm$tsS}hx9HCo~0>Ae*hiQJBzz)x~oP1|6t?QDa! zN?QW0ICSybv2`8ZmY9C=MDnM;dHVCM^l0`So}SsogKJ; zGo&53Gx!c%$OnNvgYLkcVc3B?gElkozyZjB@tML7+?j~!neFVror!ng&NS@6ooU>G zYa>3^hT647@8q;u#><`BXDlZ|ZN|NvHmGQu9Ov62TX3&$BhjLbzt^m2;16MWw= zSxA|)qRn?!g!$TKESv8vqxsH)#yCrVHs4v1Ex7s4BIY|Q8>^~uqYgCMS?C8pwstmO zdYz45uE(}HhuG#E)bt!ndYM@ln_gy4oWrBtIhOP?vw_n5GP9w<5V&xRc#~PvdXoh= z+qr@!=kn$DxzeWHx#F(Sxl!+sC)NKSI|I35%U8ke$h8<_UC}dEyG=KGzlPY&c#Kc}j-g4xaciKBs`wWpep< z0$u){_=#~d{3oW(@Sn)HNhN-gjcpnGz3Gb=&RaNVZ1uu|ca4;3T<{uZ|}j+f6X0#B=KJB$aqh0JnUIw zBvH3!)O*KRgFLT{dxwZ+?pOIMXcb!&aV_}7=&e#kUw5MqR`Z&lF?I{3#^oOZ2oofd*aFhJIGW0+?zw>4Ytw;T=ZDR<=l)WHhBNM? zdGQYyr+Wgkd$6`v(&{kKE=4!uK zk4FsER&=2#+Ae21P||<4wFsuo!8zFm)J-nhWvuwi9M(|b);NE82#dB{`pQS)-ca5W zseDxdOEdQ4kW>8|o<_C&wy9KH1N(@#u|kfCCP$jS_%+&pM%-g5G44jwUEyVBP8V{C zb~iHKruL>cq30TdNE%6@7Or!#rSwY1i?8BoXD;EL-%lreO7E1D3*@1uld3);Xj-6) z`sfVHP`HOu+>27_woxb{Oe?wi3zP@Ov`pz4l@|NxtBtDZ-aqav9Qcmmidmk$c>JJ zQh~HQsi&p34gAcg{JrARzA9B@}ChC(8Cv+C&37r>M;A)y? zT*W9h3enz+t9xM`+8nerZ8&oQ*I=~r=;xo)|2TVpe_ATJ&{`__%~^V0ruUwSz?R5l z)$d+)4gP?xESB$>9$e4+e!X`ZM$~P)w4rS= zMY9&GdvdA-WzShsgS#h*VfeN6iNw)RY7F^Mv$&p|nOP-~nJ=oQV8rFTkDz~eD*q3_ z>+Oku(f6$0b!xP(`^KA{(n49=66r4n)0!XeUQ9bDwEB}BvU2N3Q(v(>YO1dKalBzX z^AOY%rUbjvC7TD_q*UFcRNSQK{Ojp#nmiwUtPW@;%#ii+dEKQN@n++?LlZ!1vw6|M z=ZmLjK8H0{lPQdUbAGHfoY=#%ots}lQ!#XZwNE~-v1iTmr&b&72~lb~CV)qXF`&aU z_)3niOpY&~;_shq*BD#bD=kBw?8r1d#kRRUJm5|{qlmwTXEzT)SHbaHMshZrSvB&} z3a?}rR7RMI)T^B#!#6g`_v=!~viAE!*ack^l{(S8T$F7*WNYk<;~^))OPyPxp4zH^ zJ?h4S{B@WfUe8;*7pFyyEIjMSPpl}4pVv|N*GLdiEB!(^EulREqg=&o0gX~v%EgLR zZw@f5+bL2{q&Orn_LwYE@RH;N;JrVpvw#~)rV%O&=;^Rmf$XaD}O%XpH^QKl{Z`-P>jh)W-n;j{pMf{LUfABJD*8tPeuCSB$*3uWKs(4Mt^k5qEJ((<@f&2 zrKU^UV%gWtmPX$?m+tH_pv7BR8RG{m;j<(YyP6-!uiI30h4-(7QUTE z8(HHY!u`&IK>|B#?(R{4Rmc0>%lYK9VHO|qd${22tsv1o*$)EJzkDReO426~IqMp< zMvulzOqY4_hI-k?rD<$UZXJs1o3M6BZk-m&zG)$kKvDk{i#M1mDX61N_93hGR-;1o z?8UukegIu>Ut^x}`a_hSswC@4SB06C&C^ z*Yg79DHVTBpjF9#(d;{uoLfa172A58-$H^{)9UVeOozl0ATOjcB-M(1#6H|>CR^A^ zVDa7429;HGLw$Y=b~YpwX$x5abZBBGeot=c>#tXj@-Uh8~+(6V1_)V|K7VrB^s>1p`- zo%!&f3s4G8(pgle<_xoAnAbX13@dlxMh9U+&zjVoqs50>9-aH2?8=3IBbK79H>;Ln2_lK0o;t%L93AVm$I z0DH;yqU3qxdr|i-Sp3isxy2klI28M8=yQ``P8!xou_IugdA92Cb7k318e&|acC!GT zG<5l&Xcd;@7M6qhX9;f-j3qFo5|}axOntN=e72>3ahrC2D#jzJXG)@HftbH%?=Ag1 zl9-vc@70~}qHFD>Yh9#kHDo=JpjtlTd(>dDY4#7Un`X%Ip*HE@-y4lT+fUlMPuiAF z+UhKQDbsGJ?A5vsywC^;(Fo|!2(aoph@;aJ-bJ}pN4*S)d>PRHGQdHmBD(b504-U8 zUu3m^L8mmc+UtaqnhW?;d$!O0S6a%s^x1d2X?PQ|q__0?mPoe}FNE;Lj^Y{g=M&S{ zdDmU8Urn+9PFeT+u5RTJGyO=DwW`uTN zF^zK%UxpfMkUa1}`@?kc&OY+V`($ZY7xx5zmp7=zgc%+eqO5UrXkL-3zO#_SC91Tm zn`;By5!rMRrgsb~E-{pr`wD2Oj%an&Ck>RiBN~%0xfD=32f0X&Gn0eNLbMRzlf_h>Jn|AhFjfQ2&VmNJkn-HqC3{iG1|=0OUwK1m?!o$3LjQZkwEo- zqNXj>&HU8^*|=EN-U*t}byshUZDV}0@H;)~;KU;e&(qhe1y~rf;Y)`;E}wG$R+4q# z_jtJJXS=I>l=TE&A@`a8!k-aKYUp}>5&!VUO5@9$CT3;XH{J^Uq98-Bt=#!;=so{h znbR=NfrtD7QP5(p1or}=JwiXq#ArcmOXpzVaXufAqAav&zRY-&nA$35<9 zKL3M+PDv|{)xO=0fjG+YiJ3xII6L>t)%D97OieFwOIk? zBE|lqixzVFiSY*Yz418uulV`NiD#IO9N&tZBc`_7L3y&xJ7{f^trix6U?vT!{geGy zi!MG_gdPd)!4gv}I;+0lp6u{7J?;I^@buHrq&>xadxh{pigo;{)|KNJWdp6=0}fi` zjCOM3uXaa$Zz*cjW?864c52Xn_?SgtEvD!9`ww~k6FkH+=8N2CxssK?F4-=`1xION z+BlG|i*q5O>ru~jM{RtnUfsL6HsY*plx=S8rBU=KZ~ix5*esLEq_N~lYh2i@6sn9X zI`Cvf;~RyuN5~Grg~3FK`T{daKIgW6ZnnO-@|r-kUX3|p58H*qd%E99`%g7{%Hp2*i&q^z>kNGFxIY~CkRvOK?Y|j+8@DLUrB1{2}g$?&7CLOva z`A>&$TfDz9rk+-noLa?*FHRaTK_T7W9UZA97tW%jJ{4)18rn|SDu8!4m~``j9Vt1ODLJuDWD|A+@YM^8+V z*ZfdaCvK>DJ?F50>_+s+v5#d1$6Xy)fpf0K z(`(_H2S>S+6Rz69)TS#G6~f|%4t#G(7yYiiTl9t_10pB;64#IJ=6=0ULPj}$XR-t`%;P0io^<1T#7f?C-tU#x-R6I;IC!K=^SyoSWy`&`e4c+wR3p@YoM z4H>-mS=S%w%E$gk#v&KTzp4%=Z1ZskOYqY>yuactsx-Smpl@rXy&@)-@U!t)LE7kd&5&1V)gt2H=wwM@-VYLKy z4Ix?GN}_nHZD!&1*)Li%YvNBb+|uN~vt`&;jr+NOKl1e4=l!a#+p9%i!x}}xCgi&_ z9GC6qE{Rnp;YUqEr<=bLBzYEFUWUz~XkxM3=8c%&`-zb&m9;w@ZcT|GgA~2`+`0qoo!vH}IQ+{==py{o^ zM&DpmG+~iU1>OsKvnW5wzoc>0+3dK!&Bvmre;n+FzhCCPT{dX5+t4v~z*!#ngG zTRK|v*oF}1bdw6%thT*~n%p-JGpxRU_#5Lj?pJ9ji<wzmge=(V4T%i}@;^ifp+_2Glzl!5TKWbOUh z!CD{k@xs-|Vlri8O^2$p(FOK@m@*06kkxlj!aO=)Wmo1zZU;F!W7{>A)H2lN6w=mVd@5cmRy!3g+@qX%PP z987>2@B_?(IWP|hUgz!8Z5>j=?ERg1Z7!z)Ua;d>Lkcg?V8<_&UrF3%~#t zgm1#4upF!etHL_)eOLrmhabWw@Ke|fHis=?d!!fn3_HTkFb4L3z2QLk1sn>8!BKED z90SL~ad14G45z?v;9NKl&V;kzY`6$cgwx@2xB{+*YvA{AE!+S%!Yyzs+y;MyyWtMF z6UM`R@Gv|AkHTYr@OO9?UWSSAI=l&Q!Q1d2yaWG%PvA3z3^|XGA`}RO&>{@TRfG{? zMc5Gzgd5>P#1Uyk7EwSX5KZI`0wa2e0rCJbM2wI}h%NFAK@caz1#v~Z5N{*^2}DAW zAmkN-Ln4q!BnC-95|Lyi9mz!AAVo+qQi7BsXAC60cl0rkPc)B`GQO! zv&bAWkNiXy5CXD{tRTC{0YXG3ahGvdaqKt=oDPl)cMtafXMnqn6T>Ou)Nyh+X`B&G z1a}h$aMy8naWGC3r-kFeao|*NsyJn24cS1}kxgU^DML6BCU^-1gAfn~aNsqF294k? zcnE|66}Sw4D4|_w51N6dAyJ46;)Zx3P7)mvCuesNF_CA_ooqy&IXPiOJlrrMZWt>O zjE$uQ=C+8Lr3d0@En;nBYvJMOF5-w-{!<*i{?Fp*WoF^#X5(b(Xd`Tcar_t1{{c`- z0|XQR000O84UHmH=BhT`$T0u_oIwBp82|tPa%F6nx1kFue|`p50)Y@(*cCz&g3+$T z@{iCDVDqzD?arL%@J@0*zwvl?0FJnen=efQq)-nsA1TWQ-dTn&ZQkfbQGqLyY9 zIg?DNSrx^lY-m`PlST4qv92kO$;oKak(9$xry?b#uqu^ElUXSpok!f7s^YjDPO8=6 zXw(dzQ>18qkyWQuQ|%m2g~Cc)oo9ZAR3%dWc$rL5e^eR|rR1o@My26gJd{Ys0lBx>hA#ks`}kk{c`MvYDJNE}Wrnu~7*x6iXzfbT}nB!^0~1oIecDE%eybNdQ2q zB%zY2Bdg@3;ut(~Xa>kQ9WQEZEGPXyaG_i_f00znClbkMB&B!dauYOA<0smKeIy3_KVqG_IzZcp~c{WWg7h6A2OignFsIaTM4ij$t`F!W!F0 zf1kte6zqj`yjUHPm28PBrQne>kyNxu9dTxrDdO7+zM=PHB~a6NcEm~cRAeGLkEpZZ zIDssP$jPJ>f!a#3a4xCCBXTaCb;6E`LL`(`!igjZMT!LbE|UyLByKndB_-x29WEi0 zJsJYO!-;fQnR3RG;ViU3xiKXR1mGgIf1l|Xb5~aDv}~KTOfOM1q;Kd&x_dbmDrk06 zEVU*jDRF(nBomP^>14xXo>5{$Hg=G{h3AuSmielt&v4MZp(&h}(^Dxqr#5+-(5M8D zR#v2iO*0R#dA$X)q3N?$)_>-Tr^(esPPAFE7BuCL%vorP3c%4qQT#4AV>!zBf4KqU z3oxo^PUDIyS8%jYE^s2_(gY_(iHt*Z@nRpNd7MPciw>s3K_&t$#VO9i-Qa74Gk|hy zBJy|y+N1RrReoKd#Ww6`HZ#~?GcDrIUc6a&*)vG@`WedIi2d%r^fR0rAZ|Y+csIKN zCJN^~5EbzjavfiNzhZt~){dJ<(C-U8* zo6&|G9NzDDaXjJ7Gg?NUcXR!I7v&Ziujt@KUqGy5iihxcFP$-6i9=$*A@;jOZ=C>a zK$E}7`-r1y-O$JNiw@lmlCBGgF5OO~r%gMLD7qb@*Cq0Gz>m?c=vEGj7kRMaFMo0Z z@pauPh!FT9$7#2nLa*P!&8$;o{f<)@A~j^7hD;^J(^p7+pfuhNQWCV8t-zbuO6+5K z>|tGaEn9_Gv(>nPt--6<1$ZU95ZAMda2;EVm$8fSQg#Vm!Y;*&*=4wv74RZ#>VniFtMvu76}3{*zt(A-m>1w(%~z_6@e_CVkyVuoe5gWt8aW zIY#vI+I^>xDIj{=tOF;CJk){F9yqyaTYe9m!j%HEJG0Fm&1Lq;DO@iwyKkC3CWJVr zaJvBWz>cYK3U>-Hj|>a|+zRGMf`B6tQKeJ3UjRj%UIHQioPjIio!o;C27hm>5m_&; zV12lUMipd(IGBq9r6HHiNu`}sl~Z_B2;%LaYNvp>LX^vnssU6*A*#xbS^&GX5L9h~ zAUUrKa1Ka7Lkpc8swCMkF0z5pB53KSNc+2(3YUgzAsBBQ0eZ5FVeTsQTQjHMCE< z{1PWiXE|90^Xft;3+x#PfPbnfL@l(VmIG=*A!?BwwE|EJ3sJRplp9cs3Q>z^w=SxK z#A`Z`>Ad(9Brj#sc9 zcsaWn3p5hMAm!@BZW=8YgPb9)5QBn?M(#LgJ;U{9vfAnKT*E;|IDezZtFyCO1Hops zRJ|S52&mi|_(h+5s@CGQs4tBtT{*U)H9-VCbZ zfv45%5PIOiWnfE#2Y9og`a%zlGX{Db)(5clcGy}7)T{?u$9Cc-8a2(b>jb+EV7Ic+ zZrvR2y>?i$t^0g)oqwF5wV8T=nOA4F0hq0)(fT=@w zyVZqu?Q<~OY=?E&n03y{tkZ6~*>;0!har$_6gc$??3Vn^=6~@GMPz*XB?WDneM|A^ zVYb3Gg#?FNi#|bX{4NhL7s;Ik9FUW{3)GDkhJwM+Kl=uQI_JFN`58~ZyyjuigSXIV z3$X47uKjS+>xXNan~LZ+J-oHQ9Y+4HHd{m z>+UCaz6_omqJPoW{QWT__B+Ige(4M3FOaCmyfH>}V>h|=!Hde*PwswT-%BGge;vJs zyR4NSBJQBlf&3j3Z6m(S_Z;WZP|#Z8AgQo zaGwvgXVxP$W9_xY^0&3{?JYd?Fy-!Wx73JdaDWx@4u2X2u;39y-gU!KBd}czX>twi zgZJQCxEJlxH%vF2vpZ?jt+Rosy})h{VOQi9SwFygogUN#tCbvt>fx?XBr@CMA|I8E zJ`n-7AH1%k(Kfht?PO>agcs9x_}tD3#DIgA>?8Ue+>oGK@-vqGhUHFfNOxW7m{}Px zR(1hrVt>0^LxV+?>^6=@d)n}BrX2?CB#I}U+ri`AkWd%i$M)d8G}_Avo*s7*F9wOH z1A7J3Orw1>%3e?&G?cv>Is|TafZP3RaUa9(Y{dOc5E`&AE|hRMMx*{Vd>FzVE(muR z!tKNd*j;#lMgwJ>XT*UA^+)ss@P>DC6yC|?U4NyaCqc1Z3}&FD`*c}9#pA;$=i7{noV03V~#vAAf!LS-BW zQGbSvlbUNg*4J`9b*V(_}rG{Z?Z{EongLTyM_NE$i@B|iuyj~Tw=8Vc>AOfPZb zWdyv;xERr0Bs4SxW{1G+cp1fs!P`*GaQ==Oyu+9?@&TM47kt<#c;rMehkOi4ELkI# zHsH}QJW8WceHSG)6m?SMotA><#t9tBu78JtZ4kWA8(Trrw*uir3{qe~l1XbQ2CNQK zG?L3GxRJ#j6dubr3Y?~l$a_UMaCF1Fqu7I0KxQ;F0!Bwb94m*zIrsqlCv?_upASBQ z*>Pj$5QB(=JdQ#hqa+U_tz$D&hkm9Ko~XhLXDfVG!eY`XqK%LSqyV)+#nHN&;*pGT|<-LtmE;QqA7=f zr}ftaQvv2vP>;>#Ni0I>r))>-god6b(K9rfB=4b!{&EZGFE@9$hE5OyKCjpf1iBv+ z0N*DK0;lo>>KH=nbe=#rQvv3ubppnBt!Z-Hn`C-{%riDJQyMx0WJaLL7I=5+t>uQ=Y3Q8(*COv~)raa$*=PYuQDX)Xk41a?*^&ShR(IT(0 z$g3@KgDJ0vvBBbJl?AiXBG+5wIuqXlW8*A+UUpl2x-I$@7J0cv7A*2IQ*MQ^$>OKY zf>~mb7hB|7i@eApFSN)DEOL!SuC~Zk7TINyd5c_Wkt;0EZi_|UI_tTUTmmq)y{6m?W4~!j^am`@;t5kGw&ee4Ai@> zHfpJJjC$OY^G!XGrhoo(X3lxNZ0et*^847( zr%e0vWk{{q?-l!|d&_Shc=N!|=>1#j z-y92E`ul(WlW#=ds{Q33<3Ib?A8h^WKi_*)yww_g=l3p8{Pcb8ov;5Q{6*@Np z`sKm#S5i{@-G8q=Xnc9kXrkz=pB@=|zojuXdLeW1nB4#AuNvaZzI*LA{dfQO)!e1G zA53ts{@>kq{_x+@Z=YD|dGYl6R_XNq|G=O8^1C1Yi^6HnqdVAj04_^LT>H4?kUER5I$4&M8&3g3GuYZs9Je(L9uc-gh;KOhJ=qo?2 z#GzAf)c*X`p-aE`An?U+*8j~`((rM`0Jy4d%cP5*|u|2z6)a||I&T&_V|{& z4>R#+KKOFyw>uua^8KP8eRTiApT6GwE8O*!v$}ouKdwE z?`65vl7IL5YL_nk^yybmmKDGC;=LPZ`VQ1ydf`s_q_6&?q9xaER^Mx>Tl?0E<=3YcP78{<>t!&S$*U3ivwe~zI|`axhv9h&SPuC+ulDr_UP1`eeJ)!`flv` zv75e+6>r_;zo>toKXm!te}Dd7;_R*454Qid*MId7yEdI`X!bnZ^YMqbKit@I?1k^2 z+&}(Lw|-JH|LtEL-YrK+uYHd)&R%P;S^LY{Q`SDR_Kvk*5~e&2W5n#wr(j5w@qU;z zWzyf{Fv4a}lK4kVpCsmCQzmf^nSRKAJZQ>f|L!p5{ax8C;oR`7zDq}nq7*Z(ru9jh zqkmd1eSCQJc=om5jSaSxQbS9R9}nzEgFXERI-VhT=eVShf5(ne&enA;>wN3Hx>nBU z|M?{_XOy!1pF2t|Ov@oP6P`$iB62E|NJ>g5qsS3SRY#a8MMuH9Z}*|l?*9h>0RR7_ zR|QiXK$FGYcOe9Kg1ZF?i@OutbzyY=fPl^4dLUl^3Hcw6PybgAuz#Zk z#NG0L$0G25K#10M)PRiT{3ZDq0fd+ zRn@5qh1S^oEhSSbcy~?hxt*>gt6Hvsl^JsKs5^8PB{suy5YyoGEjE(D)Kz;sT92cqH5a4;qLV zJac$6yy)@{-tiu9gsgptWPh}One&cFf}c;DdS$SYN%ZcI@P>+NJE`?HQ^$SX8i+F< zo$KxtpmI^<)ME2VScffT=4cFCXl&jWw%$>uxwU4HknU;A{FZU$RY3fq6;LH@srRZT zM7qmtWkaLT1k>cKwT>KD8*^ol0h;;ERP8AKnb*#(xo@o(IRQqF(|-*Cmk*T?KGJ?N zzn52_z=-%{;QvbtpU9LgpT04dM9Pubw?*PtJY!-mWAr!1#A^D)I{Kj5X_i9T4T&oQ zsXi;zOmGA^Jq|OC$R4){gj)pG{CQ4+cCl*|V=|tEYWMyp5uqD)h5%c=m1T|Avx2s@ zCU(3mwil@Amj)B_8h<}xT%>c{_0`#z2ak$!BVC1}eky*BE?V_$e%1mgM{@e%-KlHN#hNF)q8Iu6W0g&1(xztG(UWya1 z|82ONK9O+#_k~^ag&hRRhQVCNmWiL;w`hbrxjja_UC)C_3V)1lLEaGcI&qVD{D}bB z3%&e_HtG4AS2#hC&Pvf`2#+y|?gtB+cMIO=7_IvyT8k{tAq5X`0jtP&G$@o$QkC=T zfRoIc?kb0MaRB@Wcgk97*^;SzB#*V0GL@xkLx*8?pY;4ZMVRSeZw;R~Sn^gWXif<_ zrxZ0eN*qd`(|<7a&dq!YiP`=ZWRtmtH|I$CIPGQS4ZO1$IU4NQHKYpI4@cuX6u5-+ZwfX56 z?}F$HIr|CfQdxjjY=1FD1rJi_H8IJ&1uV-V#C!b@#ChfU*y1AbOu)Kz}g0yO2W@W zreqW>7=H$in)K7xxL4nvm+7@amgjv0oi3kC0^?E5la}`-QRAMKIPy z%&$eNk7h|N3-#h;e~ZBzyOl@G?{_4*4p$;gw#9mhIq;I-Js#q z=!KV!{cw%{F~PUj3DDABjF4R~}w2zyXbo>Nh5u1SXXPCLU$jB!Vd) ziY+{Xoby6k*X9qYE}?K;ZvxD5c^B+6TxtlhJZwxJNZR;nh<3$F=R;&JirGaYW7dFI z9e;*NdrX{P|6Z8>gL3!WlV?>S4{jk5eu*^Qbfjs)J8CiZ=|}?FHo0FcRGvT*vO}B* zSyZmylK*hDADdy*DF+?94L=GY<~;jcUpkM*M~^jqQ@Ia;OQga>qGAZLy}E* zxRex?Qj<-8a%wSZ7OOBAEGPEmX+prFKliH*w}1)YGM&}k?;>*c%jztexiSUKb1URt zRw-5yby21E#t7kK64wb2$s$G3fUBJnCX6nM#L-WKOOh(YV9qE*KBqKUQBSX^T zZinJX*Vag|q>+4<=TSzxhk@y_+tSCGw1_h$2KVtpGF4nLP*rH=v8o(DB5?hNZqHjZVaXMO0WwZ=C;OK}i44 z5B$AhA*{TE)Fv046c!Om+<#3W>(U>Iam*~XrR7v5zoE)WgpKFrrep^AJALv@YhziI zvvFCDAlRO{`L=ZQ6k4J=vNFcqUY9~&eS&;MlK#=~ZhBXkv?;k{;0;!4 zVx27d7@|fS{&dhwvE2RGPO;#8-8fz>>#*q4S7#gvMPBi-UGx!seW2@^AK}Kh#5Jg= zc)*4!{dS}pY7V}FVNVue!(vbHNo5vk`BO#B5j#V!V9~X*5Pv$-iD*ddBJ5ywuwYJR zlGa?p{L`9T)iMmzH~&n+x6)iVh3V9_ZrU{w^U<)TN}!}m8Di!H-C8NIS^EB6BclcsofZCP>Y) zvTgS7y@wXM*?)K^8sb6^iTEcPHia5ErG9957cH>hbRCH)l7@TZ$aCAqHu) z8>LB($|}zl*2lM{UB>*^zGhOs*Q{;wCG#VN0UU_d92pNQvv>Ub*9{=w`Xg`y{ZdV| z>a&C4u~UtqM?FjB*{PL{FfXJfE6_K=Yz4qBywWr>?tj6b?Gfj<3>tPutp%fQ?+iN+ zpp7_(>BR^qa0nmFxQJxy`nSu)Y-#kLquRl21Kfw?x*vqHMN|km;d0tC@**FS14do!MafmW_vbae`zdq^os|s^X3CG{3 z;6TH=;>}SoV;S*gEU4T2?H%#vQIu&b2DubHySZF(q2A8}NX$P5%ubTxzflPh#XZ1m zDd9_Sp|fFkf^iQJs_Qg9d-aJ~h>6D74gEYMnI@AS$7XFdbvaA_=_8;ZgMI`}GN*

      |ap77}?Um}6wg-@n9{IHg>y8`~{O8GTEzd7glgtPV$g!HRbcmU<*|4=Vu{LA|!1*#1xG@s`D^qrBbrsgi&~$Tt zV%?=8wb~Q6i7%mIk!tivI@%q--K}7)NVgj10n&G@L8n6ja0~#AphHfOTYqZ7K4*v- z@wqc67GqD&jO$_{haEPfmkI&oopO~??}Jg^QTNdtlDR4CWLCpTkWgLZF7SyT+_1fT zR>Y7|J<0j!8z;2E$n%o(4@1Bv@A6pT6a`ItSZf&^6(-3C0#*??3wxkU3updMk;Sqm-I#c-=g|{OC#{wSW17E?!GA%vcex zg^0$3ZF}cUFGmMA&%+(-AL5`Ke#Dq`?;Stsg*B|)J|ywWAFa2|olLCsQE@Nm#WiKY zj8)^BC}>BML)+{j!jE%=iM9>Gew=#cw(mt>eqhLL-p&T}-T~h5gXpB11*RQ7s-B*OC z@{qhambp3z(d*Giucy?|U3V^1LNpt|?hPPYrhW` zH|Wm4kK*XQoqx1LN1kWP13Gp_2XGAAUyr$KRBBvHMsFZZ`_jS&2oV2q7u@bGC*g+5 zdx68|9Of4;mbTDm`U%YT7Q znkE=56$zhBPWI38s)+v7)*iRO4vpxv|3K9nG0&Y#Tz^vdNq!C)$)v9$`*lsOD(5z3 z5PLUdd{k&tr)K^4Rf+B7pcG_XrNMMah1Pzw=H6~RG*9YMk)-6^5&+v+BYOHnop+1( z^e6ak?dzT3)1PYJZ(MByomUhYJ;b}dOoO)ss(;)yXLL1ZAy5kp9)tBtAdT-YQ6tHX%UK#bu?ONt=7lsbE$>Q4j2+mAb-*9@FB@ z$-eE9V_Nw?rc#t#c>Z)d#tUJXE|ifY}OIU#`1%o4T*Q zOA=>6U`G2Oi!CMd* z_Jb(XoHcwj_&A|lMP8QgQgb|vAr<};{g|{|2x?B(7X@Au1o;aB`Gl0wnd({bXINwW zF}3VRJ3i!zvKYf?=M$soUR8vCp??IWVcGb+0Sqs3Q@opA??+#`(_Z)J1dZosVzuxi z!)9qm@;|zWq6f7?P!2gGQh&d~neeOozt4Seg&t2xM}K$OGaO1;jkZl?Zq0Sp@^#5CWETY{Op>+AE0(?>?ZtaQvg!uL}Fc`R!6x^4bQt zJNUcO>bs@^EjnTo)hCUT#?aS1yrC(UUXHqBlZYs^C(*lTMelX@L4U;Y777-i6@m?w z8-FN=bw}R28Wa4uKtiD)G`6~~2+GuyUpjmXW%B)P%=yzqW5$}rz5A^`f|=7v54UaD zc)xToOX@>0En2E#f2mWN(2BLo`1>gv^Du9fCZt|ATlxVdkERhL)$pD6x4h5jmp(~oT}B%+TRP8U$-M)w-?s6(o;$kmSK2@2<64#1d2(a1e;n<@iORV z-w8D``LMLQ?J7(~Y`>1@EG{(|K36toRsSNu>Xz~;i?buPV1Jld(Op;xSN`iT-M(J* zri4;-NN%2<?<(T>{*fY%$^S@V9g4W*8@3} zV{bqCyi1FEet#9Ue)bn7yi9$fG?Y)Syq6`s9hx`8HNz zGqzfMUG147dfC@<JUIK{Eo|ki@)O?^+HjjcH%$`Es z<=yDBcm}{y^40Pm!m=%%!oMuxwp_gL@$*-dOo#rlyibWn zL)k_bB>7n z6wZAUJ7Oe@{J*&q4taXO%<^~igp+7LB5O8BBubrau+=-G2}M*-#H*(dfZ98E1Tueu z(hq~~JhjoEI2Yk&V28q~@eAJ(lc5`Q1L zKrZ3q;!Qv;?bG~zeaTZgqZe0YgW9xQ?biBHGnSV93xebw3`ci$X)z}GZUslKYUkwN z^Nc&n<&cL#X!~6frQY$BjJmw#K|*N3LdDdAaxQ148kOXhu4g&%_NbS=B84gY%OL;! zKUDwj;?ghTa^kI>(VCs*%05Z03V(jz?WbP+8nhHvKwE~7EC{v9iy=dZY?x&`!+neLr`j zX7p*9Sz!G5{9EOmQIB3On1A2aoOEeK8f&qa-%_5mqofR%t6}2>SDT>cq>N#3m0_Z) zgaw|eE?k0qTytMNn4=z9a@nnK@dQQ4rfGUybb`S1Bg2Vuu|h$JXDRLe5CD;PZhxDR^5$xiE6B}0!*C( z*pkDmoy{^lc=o|LmVe_a+>BGMQbU)h-Pwy#=Zc@xbXfpkq>F-ZrS4mO34#DBZaRE% z2KC?&q#wM$^Tkfel@L_A5B{brLtHcf_B-jicO!of?Re6DEe}Be89&r;67L!Kmk5Y2 zWe+TvAr2LSzCXp+ndH-WLy_z;FouANH!AYB4w_zZMRaxbC4X`DrFC`6^!+N*D9XyC zFIbQCE*ngB$gT04h}Ogote0^8CL4l z16KP_hW7TV3UU@P_zm?QipX_571;1DNV{TCVP&E1?jW+@DA8_&L40=K-`r^qT)7zs zEF-~3)}&dE^?zGOz4J#}RJpoEv8~vuHj!2z#XOfFJv`+Tbq`WZ*||}s6+P2F9res)`X%~Ap}iJ zgAUZn*+rF!OP9SAhVSgg20}u4Y`55b2`cxeRp||_TU#peRZ{w+#z&VE9G^d*)Jzd^KUoXv3FTHnn z{D?uj+kV^Ie!HW7BT1kbX#x8?#rr40Bnb=4W1pk|p)Y>5$F7>P$t-F5b4%JpqAgm4 z@_%ef1L#lY><-hEyeHZWfnyrX;6XwS8;|e9pnrjcm@b8(6Jpk+rn!%sS_A z_J2LLI}%@PslAW3U*Do%Vheg zawJzy$|=d0LMf3VDc0(hKM+=B${Y0S%Io)=DiShP$ZS`p?rJkHDyJ*rGu+CpdokJ~ zMpzj>SGpL{e~S@ywg&?q-@{VfH1+{dO9KQH0000801b^IROv`)_cSj60Bk*%F4PMn zf23IpbQD#Zu1a;fZ`xF-q&h?rNE$jkq)F0AcT7S+D+!?qc@P6Z-knZ&b<#<{sP2YD zhB3;Zh>D<~l#dA@I6g;oo!PVNj*HBW>v6}G@yPM4>pCoR9Ne?ch@;Ny9M}E-s@q95 zGP-9roZJ21|MC5g``<^x$~Aqp46{7gf7;&C-ID5WWSHFJ48te|N@UCz3P)sLIu(v2 zEz!|nN{%K>ia!>#q+{VwT#1@xCE||_%?QU*@{p|fQgL4-oJ2@hK3STe21zF=6%iH~xrXhKYmCjr~%R|3P~lpIKb_!`O!$3pR(c+xy1f2ZWw zj@*zxl9Vx)u;NP;>!)#VZY)JKoydi zdRk-tRCtHBz&TDQ2g)W41DpiXN)jY_2_>G;ij)V-=G)Gd$Oeb9X~t`OzMcgAETcSwn+6Q)!cx-Sax=Z4~uV5A@g?V#%;GcO$r z%As%!f|wSd$&Bf#hGv*+xOq@9=+C$^K0~V*wqZDgU)TnUJd}?36<$j$nI6Q@k^~EZ z8WxCI_6LT|iX4sakj+s!e>x~DW>^PkZ9!-HrfOI~8MHa92?aKp*5?+iX<%ot2q(Uf z5{Hcw3&=@`DmMvbPl;a__zD94SR7W=AJH)sc?YbhoR7QMpYmzjz^qTMfeNK*O=qAl z!@RW0Xi!sI6$w;sbHTT(s=VsT6l&@WV*Ay^7}Iz(o=#TPR+Uv{f0eDqZ7`nmHJQ

      ;k&SXuS^3&L9XuC1C8n%bHXe>y3{ z0o?|D%rL@-Knjfha}vgjFzQ%A6>^H^F|55nU?i3K=$%sn!>M+Qz~F}^f7?+cSp=707uq?mz~Mwvdo4n*vz|LEnYbcBWL@|nsRKDhZ!>If zKEp^CIW=Js2AneIwM$+Xr%qUegfq=qizKha6)_?^AbEQ^_24vnKw~HHV?sTaQ)Cqd z_Fz6ET+KZZdKvbZdK$EB0(;sl@XxYm)H5(G7T9z3A984Sf6gLI$ac(pg@#mhwd` zDUz&3TD(M*tYtc71GCi}ONv!e2w=1AESag2q8|HcmXxSO1YSAtuH^--tnFfsD0vf{ zN^BPU8T=H^e@UDOB?Tj5KMk?WQb{pbIe;wH!kTFjE==-eoc(MoCvZqzu+DGg?3@!w z>w>9J%BI4bt&$ReSO|{iCf7HwYGrJR@&T6J}0Ut{-PbH<` zy$ZZLB=13o*~K@r1iY64w;H(f^Pv`^N#dY*vn>KCbn**0YnfycB^%-{0-Xg@GY8BT zs$>oryMSCYWh{wMv~nm;6YqjGbLndaIXPh6T)1wFVco7{$#qWN<*?Q+=c`$=coJx= zp9AYxe}nbI+E+jrMNNDi;M8T|)FI9iz;Uv~DGazyawT@F+o64xaz%E?dx?{;a@eG^ z`m9RBgAGPRCtu5*Wl8l^DjtZxCMz+QW>X6WtDtgq5C~S#t&+KrZapY?ves`Nzyf6g z0F^j!qLNDZDn?LXV@342_n3&Joy-&lg!a67e;n7IXUC6uTDQSQ*QMBe-qReNsboG_ zmo)PATni^cf$GJ))mgK2)-0Aa3uMhwS+j7~EdC8B_HV#cvSxDD%>NDEvo(V_JHc^F z`0KemsByhk&IQ;4lY9f+XHK9hS#mwDD|UB7R@*nKWFf3jGgvoC-ZR+a5=)kqf565#R6t!4Z&mMjBkl`J+1e7}=lj++5P za>9IrWO7i~E`AV@mm3)pFm3=$?3x=@vIM-}2rS9yT_shpwzHb}Ht6oQsgtb@JG&J+ zyM-k!!i0cHLt9H$snW(}`WrKE#pcR!f9wVu; zhpVAF-IIKm2&ay4+1@H9L@2|zQ<0=Skj}C>j9w)5Y|lcJyQshqgCw9 zLUCjP=pYR`NUus70i+v1ZkptKf2TmsTqTUGfK<|?BlM|cDIoL!!rDo`ZwleuHzELr zN}6?qbt+i~2sLo0^=o(9a_EFfe*M&)wto6fThCe7Ox8;?b)X8r{XVwL}WE(w7+w?$unrw|O^GViDof-fS*nxhPtN_=2(1C*mc9(vI zL01p;W{&iB2xQJAAE0%CO;!je{7RFZS2M2!FR>GRQ3OC6?~I^IRsm=~u;l5hQ9Efm zVB1$X`H=B$jeuSVNr4{*e{x7AtI-;&F`TJJr=Dn7GegA$NW+@*EZF%QF zI!gfpu4P&!8^PBmVC~5G+62DlPVzhTMD*p_41v#^;=z@(lgrVXVkdn@lQETS0i-RE z$aubh)l$h;=w9s;UQkek901x16`4@UHoVSgs6>WH{ZN%VoA^86e!7E`GWQdlO72$9)du&} z9VG+SR(`)#;_tGy@%vb^FW=saSDf1>wLxAX=~e5o&R_%0M;&sMtLc_-1+pvXCYB>Rib20QP|< zu#-hBxeo#di42m1jr<|}t*M2>eh#54LzC(0;jfEcQY_*vs5S5*4}Tx7_x-SK0Vf0z zJkZD==CrMEgIAZn%~#?tmNo~TP9{9{w0*7Zb3CU_e-!Mnhd+W~M}P@EC7>bhw+G=2 z0PrCIe+U*W!jhx9J3Ii?M*iXdvpd!3?qLuA2)cXZ3U`mHWE8-|(58>!GX^REPka%2 zF#<)o4vT>GujIHwohM;UZS+Be55VukLjVv)ds#A>FKH({JcQhp`0jxF8k$xmQG7`) z;g56He@>}Vdrx@)uh65CSf{;-KL!`$3H&`x=*_&&>?U}V*tjAIVm{^sDg1tMT%wE< zV28m!uB|kl^e3TIH?icD#)tyr31F;c$qzI}3>Z%WV+~85(im}IJPnL)mOP`9IB@Xj zf3}f-Zn`PrCgD8v1RNsIgX}pE{|wgehr0T9e*k#Ckv~1P7@7r~O$wJBvC{*j|2nt<;d0;CfLicBzA7`ZUal(xV? zog7N%UBO4%3ga4s?F>re-%|<={Fw&*VoF~NW0rxQLw!}iuv2<2jClr~N&~%!>Y%U1 zfAsG+h+kvSsWZ?XN?#A7!H`R%AmDE;!#}sQ*?2&H$ycR)Yo{zaf|46?6t?#K12_e)|~q1M@iy8;k&z zAD}e;++)DL(-7AV_c7gl*ayW zP+N?<+>rNdN@JguP@O`W57OA9BBk@FF8<`KOvfDDKSJjxX-*mbD6RV>qwhJ6^21c`F)GiY{2_|-5JUGR^1H$*h?!jlf1>WO zM<46!?))d0&^@~Ot7M3jgV_y0C2jy3P)%QrM;mcL4AKvtn&tJUt z{f_s`AIzQ6y6S_U@A@ocZY8tC)&mW>d5*2;JKs2er2Ft#b8gd_-~rc)y}#VPJ$dh| zbIl)I9A8?tZ_&zGW=H<*KTG}ofAggk!OgE-eB}W1>3@ZO(|6H*>g0*afsgNQDE%z{ z3{OVgmEke-Bc}|M2Obj=r<| zL_w~*W7)_^TSpA)!=BRgIn=k{f4_v|u~Ej-P+ec`sdj7Jcmn^(pF}lFkg*2k!Ss;! zKM6r*RxIvICj2{NzCb*h2uEbamr&vXIhh>hf(#o3>%OiHzOFUiAd{!agMP&qi4O%C zb2t_W$7FH;Nhg(>q!OsnY}_@z!E`thtO?2?e>#$? ziG&A15*b64491OrEk-yNh@^v4u{8XZI3oyPPR7$pKptg!{vR3DWdA33wX8(&f>|** z1U)~8-2)xC_w?AKKiRq~vgN!w`Nvrc=N>;x4%m**!*V6 zoBs;{0RR61Y#o#0v}yGj)nX-G%x76kaaYi#xGTdMe`Ttbe9>!V;*DukRzt}#t3}I9 z&4&F^Po_|VwX5v76^{9mff_T_SQ<1dR;g^HqF;G8Q)V*Quh~NkR?cuuMyL#U0kJOU zly@67;?G*YEB`YP%xx7AnXJ553CGnBxp@Y`A2`GRJ5#aTQb@>q8E`;ZaX;Dp z{-1-EYg@(Z{-O2nTbH$dC!M!*#j0tgIkVOQg*(6PtACJlT$96UifzhWcF_QH;U(N0 zW+v#vY;F}zPM#$bjLSHw&Zsyg<1+S#m%rQMaspE_N`2MNJ2vN81L$*X$IjRm5BZAK zZ@C4)r>SbQD9ziJS(r4Ed4j{dP>_%~Pe#%JdN!EW&V0@Sv?dl4R*v~>Hz3zLl>y5I zq(;~3uYVQ|L=2-x5HFvaPFDyHS1_bTjzy9uw7Nppsvh*Mb1lOJlprwxX$J3dtw6i-*bIVQ&(g1nF^O{T&7Grola;G7U$%~Mlm zzThyQAumB?<|ivNA1O1RC^KKD%=|=U=1)zTg@1y>LWVpCm06gq%tEBhLZZw>%^i7YI1vE-#1L`xG9Eu9*oHo>8dBg)$fL~R;GZHb85riN&R;IM+pWq{`F-FT@gU<%sg&G9|K@_XzLR@4l^kW={5k|=fQ|KXzi zQY7nJe9=|5asxGRmCa2zO<-l+YWu3#bAOE5Saz9Ba+Lz0%6`W6|68d3e~Z+APO%MG z`Z?1|wOq7frg7hTe<=*QhIVED8K^f?(;0F$M>#fMvtkuldqb{hR6Vw$EffN5b$o_4 zD!GARd0M;EaQUio)>b=zSJmpSma)D22eGO=H!Whp~oPSJ_ z?K^~}C*oG;8ny{2jm*w`KM?R>EsY^_<1)KGmAd#R|N0++5kqz6#pViql;ffRuSAThZONm4FQCglP-DRJ^GK*_g&B;SHK`Ec?q zgfJw17eE$YCl z;(<||T{Xz|FL`_UGJ^DKf%Iw_>D5B+)!hFc_}$QNRV;fak#qH6s;>8@O`9pEYmhS6 zFyHqXMbDCgBI5FQ3~g)LPaBEDVi-JZky(42QN%H|BqD>c*TGKLF~4Sdc6)1>8Hq(& zg+*Fri@@b6ut=-kBCUg|hJW5oo7b+tmD(hYY?4l}$@R>##3W0hT1(X?Sr(gwrdb=A z|AKQRlxl6tRBIEdM*D}rlK%#85@loc4*Pc_-K#giQ)O*d>iNb0t@o3AdHeXC`7 zj!n|P4W)k@Nq;V)?0ETIg@R)Kyn&iX^2QC&?5uO0Um6Rs*}`e4J%8@g&KR-^+HHgz zNI&Y@<)~{H*xHqIP`fk-O%qc{``^H?(a3t72=!@?^pS-~5!ycJ*T;B-h}FViG?>?bU?#_+C`Q*PV|tA?ra5=9V8Nla28Grd z5?X8c;bmy<3^PiUjejccGC58p9E}}X9i^b`fc9f!>bVm=sqEDhb4I7|Rj2H$PJzEu z87`f=aN*r=+Er#tHnwkxjXb^Ivf1)1;vDt#14||ZAQMK!yk+13Yh)S%E6hp~K3yPu z;_)PKx|D&_g#!miNEeEbE)pSKG(rG>Re*FQ1ju@#1(<%;Lx0Pxk1XSp(XxEKK*{I@i!CSXnM^KM8J(gB(K2k33bzuVl2LAjy0gC1 z*Tn*m+k1rDdt|rw2!K5Vau0vv$Db8|r$jP_H$aM zAbB+CwUyh+ty&-+Zo|B9L%eU3*IYh(Mrq6h3oI(+c7L&iC2_M2#7*>|5rxe*W!P+k zVM9+KKbu6KDxX%Wfq8EF5E%KnU4*X#2~ zKHni=?TBIv^4lTvlg3H0f|&4$(F3H$z9RFsWfS3ACJlK$k7psR55kM~5q(!kQJ48A?H3?iZnxy;}H|Qi~YL_QsV}lxcoT{6%0IAn- z`+uzpaa>V2t|&XMC;%3THc0iU#Iyed( z6a|jFl!!?UmcK5OeHe}}qw!@rzATNGvD}4u-GzAFMV2*;QhSr@(uKY&v2jI}@SWt! zPLgoB=z!1-|vFI$p{tfA<=8dOwIH8 zWc+93fW%Az5HVf@O6sxf}IMbTLA4B63>Kt*f6>r};Y;GTl?CwA4|Q z_d~e*l^J+I$UmUWzynm^0hoc%secF6S}2@(5DGd-1s&8o^RQ6iusBDLAmS_n+BDx(hQiH=Yc9nm=dD296! z!97Y=XGbToIy(v&pw-z?)#@zv*tpPrT=v+wU@%TRHttu%&|}b9;|c4Tdw;R^_ag1@ zg@-5iic}_xo`0l^p8GKS`w;v4Ap85Ivl;o3(EVb>{bJAQo9KSoM6e$+5u-GkR*}}H z`-Oo7-v`9N2PPYK574lCKofQkV#_>;Eb|~)f;|{Nxl^nLA40<)l85X2Oy@BZy-e&& zc}SK5F+YrjK8zSXOj70HNq?lu!+=4YDn1%UsL%BBr6Da0kBD)PC@bRqNYCzp*~8XK8k93os1#biS zpL)o|OBgf$5s2k_>IVsriG-KrAB)?MG5Nhh{xMnpF(K-hO8&7)$bUZub2F5GJZ?YE z{=c(ia?{p0W&X2f$r9cgos}FPWI{@2OFGw58sw4Qk}kB&NBv{`$7TG-1=Qopr+bV# z!!{~x4N4#I9p{EAB;u-_|NjM~r+`FHn=j^@$A#3#WvPz~{*R*#8~a@wRzD%=@xT>y zjrT+x{an*0h$)^JOn-gt<}h7aa;zd%EVCtM`-Ji!;wN;n`6-0+Q@V^}ot_lRJ}E2v zq+tCdnK_=+Pp(hG$rb4R6t0&~p?digoc*3km|Xvv>iaW@(he8)5;?GG_5>O zlZ_)hJUn5_hlh3Y79>8%JE1%_JTcL^^$B!rc!KzXQ^GUrzkg+L0f17TZl6G>+b1-q z+b8JhHkYG0-TpbUnB>r(L(lM@>s+TK6KZ-L;^LD6%1Qpc1^sC1len zq0uQhn@$P!PLV2p$`r?nqFkQBFir(7BtiQ!o|a!m74Ky@Ex!z27>Mzn76VR`Plus} zPD6v7j(?C!yd>QrV^t+Nolr?mgK{m2j4Mf0K~JOLdj;F&6=auJ$d>dKX*+~Rzluh` zs@Rdf8f#}=a7wW!FLi_azUWIvGTYrk*!1jLw+5Zg~)o+APxw!`P4C+k* z{!PK+O;$Cle{ItLizW54DvS3THX8r7 zLVwM-k(#W}H(&tbTzngA_%_t=ZGeen<2y8l6zTX5jH`E`h<8+R^^PVb<#WV$#!oA(UwXVgf~qTZ7jzlRvV z7cG+`#_#DF^L~Kw`x4{#5##scMRdgZeSgGxj^ONf1gt-hSbu<6e-N+UBi0}2S^FJ1 z>nN!|5GCeAxjud<1bj%}t>GkAbsa(lIj&++Dfv$AV%CUb|uzxs9mM>@33j_iCEP;J?60ng>0Q;jASc(@`|I<{w zu=-c1(O;F%iT+Ff#YL8NOqued416SrUxp4x&<7h~L*gsZejj*P6CnVui-`C+MMzgY zstB9prxj6e#RH3|2|lxk#Ht@#@YZR10|~GA9f4!Qp>=!_gkzhxiGKsy;FkJ;WfO?Y z@ajMsj7_>=Y??$cHql^gQUzm^CK#LKV62-IA98hFNLSp57qv+H85)u^kZqs?XArB; z(9~GoHWN5=rc`Nz-+wZ&nTppRLpuLNA-uJZh@Yt|y1a1~4YyedF?&&HVjQ)zY1i56 zs15qh0cy_y1LuG*E{HmFlGM4F;XleGCd z#qjk6ZN35KGsNqgwEs61S6jr5m!d4tl#FIjGNjt0Djdza!hg{`iNeuL3kSJCF(Rr8 zN3(twYo@bUvwjw9R^E6KL#&bA+Z^xRF?TWL(E@X&(vr}hSCUY=Qdwq#cx(Y0v}kT2 z3ftswxB;&D_z@&ML-o6Xqo;5nIK2&N(!otgfsgE@LsZ_rK<>PN{kg7cM`v-Iv@q#7 z&hJ39UC83ObAKRTH2udLDxr(y?u!_IzkBo=LulSbsBSL;=3bx|uIM!MkaG zA3F1;Reyd-o8)WykgU4nGJ?gjn)HWv>c|4b`$BkrP3z~^G@W15`uR1j+$E+HcZt^% z>%$bgowV`D3I|HfOOI0spg$*$()hclr zb=0z?9pf_GHMAT_Q4HGUz+h{tHJIf-XY9Xq*aV>1ZiK4l8Eo!2P(w3MgHxRo(*WN&)0A85} zGhzks^9q1&Me;UoMbgG+B@M8Z2?4ee_naLDm`?agU1YDKf>$N&`fda`ZUh5w)bILk zOn*|oonmNDP`(}2p>{HoL}t6@o1|!f(lo0ntkp?nW;MdK8V{wo_|3@-msO#)Xtmgu zsB^yq2xg!m$d-?T7B-UO@GRrn`n^UloX`vK-YEpxp18>Exu1Bejj8j zJZbJiSmP)LqhG7E|yc3m~K#F&>W*$W_0TcO!p*~8QrwNbgLBV)_*KB zy7i@`o0gJpeJSZymXhwoQgVydJ}^3OAwIYzVY#sxIDa#8{$_xBGyHfgBn20Ks4B;n z7>U?gZ=uH6g75VRiR4}FfNKvx+=CGJ0MI&vo3TtapiQbBEZN)<=u79oib;MRF#SyUEN$1;DAGh&_I}oNjfcQI9nC{SH zx&xFQoJtw=FL9~TC_{L%QL}Dw^Zj|-DC*K_2heE;(rE{PzeA-HzjBPfZnQlUo+q61DkAgMVTT)z2x^ z&r$VrvHIbssXh_Bj}S>Su~(5qeCbzAgAy%baLYtjs!DBrQ5zE0PkQ3pyCV7k2}aC| zjwxt(4N_i;soDWkwelaXqtmsco30(aA3%-KeU&;oY0#a=Ir>@Hp>uYk1U(yc4N6FD z${J?baD&TGXcf9E(TdQScYl!#Vxyy*mLOH}Whrlg=v*^3m&(r2#kGry0b!#)S!NCO zUb&dBOajR4oMAh5p0%sruy9T3st1{qhp@p)>ID`kN1CcdI&nlG&sXn`iKK?~>grHPs z7gcAMvU=@8)r(FCKZH9sm?x^8+Yfb9!4Gx+6hYXiF355N&AlIKAwg^Yh}fQutX-RT zm5&LB<&MLwrIU*Qp?@$8%s8y9ARzjO(Qp_^gq=E)hV>Kv8--a*(Fmg-h*PO4CQ2UFA1 zB&kP8QjeJa*C;Z|5f#c2gmMIc8PTB}G0AHZlVzwlO&jt5fq&bbmg`afg^JKZwvXt% zFVtC{%=RJs?PK<9MT6>YwLEftWjr`Wxlfaf3It022>&RZu}9^Bqqr=OD%2ZA>WvPj zYFb;-D6M{@K)=z6^&6%7jq3E&tdgo!RvkH~?-v7@CBJUE!@;2&VJpDkR67Oq2! zS>^35{1vJer>|w$YpFQ=e*@iGhVqqx7T15F&|5id4}W{WZHHuy4w>?O51JnMy|P2n zTRVqnOKgur$R3A);)hg+MTe04N%1`tU#CDJOLjZNis}qG*$&0-0x$SrRRi9L82KFV zBZ+!g5tD~$OdeL>BM~-{AUsTh@UW@=Vl*`R7&7`8kUpjk!m-3492-ns-N_*Hm`jMY zl`SaJ#(!kkW2#8QJ#eIr{m)dR@iaD3JdFu!%I+N_?meP#?-Awfo1T52h`rkN>{cw||3~`nK(4ynnJWWM^`0vSZ@h4BP1CEYD+We$&cU z`+c8tRC(m>T(N4#SlXt@r|{oP&_GK7002yBZe;)f z0Yd-)00000000000I&c60B-;Q009yS83`H*8wouLJ_#fVB?%`9E(tgZLJ3I;N(oE} zQhy0k30nzV3110d31bOl32O;#333U334sZM35f}d36BYr37-j|384w138M+A39<>c z3AYKk3B3u#3B?J=3Cs!23C{`H3Em0p3GE5*3GfN>3G)f{3HAy23Hd1jDFP`9DGMnN zDHACoDJv-~DJUs0DKRNHDLE-TDLpAZDO*D+L@7uqODRt&P$^R>R4G*{St(yBU@2lL zaVdT&e<^Y)b18KxcPW7>f+>h8iYbXHj46*PjwvK5B?;dN;|W6mPA_e4bT2Y5Xm4$0 zFKBITaxZmraxZgoW0$Y03@9dMX>4U*b#!TLb1r3aYyeP80|XQR000O84UHmHLC;6F zi~|4w0GF=?3?zT~;pFP*>sS(M!N9;^3&iZ~ML8AmIr-_#K+Kex&z6>7l$%(>otvLh znv)uznU|K&mRgjPn3v9~%*Bn;H-oS%{kqym9hfB^z#g3JVBW=4UT0!%_m28;?0 z!psiJ!ZQ{86c`u{W->4d1u-x>I0!M%WbhLZU)(HbB#p_m1TnShuLY8N9Co5{5TMLjE$JS)_VF#RBTCZGJ|5U3b~V@XL7NN;lv zNLL0^3IlUlaUPhHC&2KtI$zxS`@4Cr>zp1)I9W~3%5wJ1O9RTy1FL5Ssb?=sEh^5; z&&y_DH`jkN)icpE28-qwlmG>bLCV-u7`ReWlS!?DXD3Rr8y<~Ihjd7nVbrc z5||nG*biE=lQ`z<8S6 z8~}`_T@`bd2AvMNV<2$lmYdqjM+YX(cbHo6V1l#O@|Z*BD~?^dF)f^by4>ui?kGoO~2B6Y6{zrT~Cj?MQU(1%1^%ZyNbO~vFIm%dB%OGug-r` z_wLQMFZ8%va%%B`sEp~#{V$l#?zVN!(wxM(+WNh7$%OvJb%J^4dv1jrs{HTqKf?N=x6+2p!E zZRh_b=f1E6zLwj|-~&v=z-*DgfB+qAO9KQH0000801b^IR30J# zCtf`O01#1^b_on3e{FCR*SXgEtgVC4ft6R_009GSzMURf($nyxI^ zwNiGmuV$C?cCFX0)he|eUmD*gkF)ex5&zG}j zOZIf5GM%f;Rg3iMaf_Or&9_GV^W~aduap+-{B+GO+1a{1&|WK97qYcFX;|H+U#t}y z_PS0!GP5PLe?x*@&Xp?lV!1G#FV_0o^ttQ>n@D}d%5dOt$i9lT~SIYL9f?c+2gi%u{dDAmAw7y_Bx@gn0waT1C zas>fgZ(vcdlOZI*=%naf>ld=6dAr_IxiFABXXh@oe>jUkV7^|glsO46XXkA7e5F|K zpR;R)ZnJo;QfUw=**lvp)ory=o42)Mg(w8p z*lv7QiCXU|H9mKwpOSI z>Wg(`ba}Q|2xhC*5^QWhPd(r*K^g=aV6>&6KwD-YUui<<_kP)2wkpnL%lVS+rOX;I zA(e^?#r!;c_xMywx8B^jxk{clGhC(Y3%L*zf7l3zU9f8^cx;xp7kcL|K&iM`Eah|A zT7H_?{n@j1LaL``v)X*wU#=iobLae&7VtA*m+SL2SrojvZWYCe=4HXx{Zi_5)h~0u zQSp;y_+2S~-C9^7i-ZV)V!c@`eR%|@VWXYQ!Kq+p9j#tgyQ^evw}vZZ){_YVcS2UE ze_MNGSFt=>5uS*818G@kj$CtANiL6+udHfAMtQmtc+GoKR#VVA#sg8$yIt`prQ_mU zWxgIYqXSXT`(^Zv(Jr)i?d_W7lw*Ycw&(+cylYPf`$%+U4vB&Cq8tT!q(`yYxmqbtDc7TWq~=T-!>njV?a2Tqx;vyw!cZoN|Wf2ELm zKHtDioC!3a`$zBpiD##xIa*KuRzop@rV&ytJ#4W-Yf!hs%rR6$th1PUeGfB+wHaSh z)!0ooVD!uX!^|=Lnoltu%kR@H7O~WryRg?1W2Ry`nV$ZdreqT1Y(EwnGxHkj}LI|?f<>@e?Oo7*X^(V{P|yg{MXBWn^&ruWsS#r*m#8L)`X8a zGsg`>S?Z!{%&8LfY8TaD&Js~?bWu&_TqWwQE~>?x8$`X+Ma?kh7E$j8L5`?aj5&Aw znyFdZI0KJLJTuI>%MC+Q?zNfjshYUm#Z_g_H9`KuqEbjjV$B+K{F$@hON|~wFUH$A9etJ1W(7XpA24d zO&P@cF!M~hib)+dnF`k(9`5N63_xCZR1D~c^hhir^vD<DT3v<)q34u8zA&5Vjo>@%j1h)4AUVxz(zO^D6Vzfp>h zP<5LE?SgNLi_O58fAt%f-8>=;MwYXl2r;&}3~<%`9ipIGaR`h; z=TOtw7)a=J+aT~UVH%m1PbgZQ`T>8EZ1LiZ)+o7Q&*O0czhV^C?GE1sqXvQ06P6ya zdh|YMQ1}jqn?wiqP&Zt={n}OXZ;%yyu55=7bMpo`cRDkBi_uj}=pcEEHKe9AH1%6-%4%RRE=|&{DHfWd zDPxId@|bzrWlKx836Cw!LTQ>JwzOnB3^t_rVRW=#QF#*W2+;@t8a#tRm=K`BQ4H1) z1T;8?!CEU1&b&12St^}|-n8>LrU&o?$-mV2e|AlJxUJE0_F%sC`cxa318rdTw}Ckn zZ@nhlc&4T#TuXo};qViHD~)C`7R*>7*>JFx=y4g^3~YG>cE`m&rkOrBAJP)&eO5R| zeK1bw6g1k^EVT5KeuJ-T_4EVCll=~V4k{)Pkpn^OaNb@p3IG0OR6NDBt8VP|t}~q6 ze`lU*=~U(Tpu?vi>TpKkRze(1?N5n=1C}9n&g7qmk*Vbz=5mg7Fe5qYa+{Y>Ma6gyZSR11 zTH)hXP7leG7e9r%t>OnTu7?PPKkeb=f1U`u0-c9H6Tz7dndl5UIs;PkJ6O75NE~K? z6CU7c%GyF#h0o6@{IF*EZl(szz%ey!4Pq1UID0d~!t@aWXGk2J3}k|aJfy_Jg&7=x zx?Ow5;m-r%lUQ*ySe*&UR+W-RiwFvK3OVcb`ZTit1z8YoR-Y!Ky9J&GSrYi8f6dt! zWmQe-RAm(Xmrz)A`ib}G<4kAcQ%n{jv2AQtqLetL6TM5~6k44%aaRwa<-Ck^+cYGO zvB0TNI+TaM4u1t~n+Ykb9hB#gGe?aB;)KGFNx9PeiF-}^+l43<=Jim1nZo>tcsAW` z1JlrnG)^B7#})ppX86X{9)_{Pe~(N3Gg!67nu?HQY=>1V9kBuiY#|FBp7onI6n-Kh zGVHoINjI2V&3(iQt5e-oP({{fhQJmuBb{=G;e^Ya?{PBb+Ls!|=Mb{zdE5l1e0wky1l9Mqa=Ujt@OB*Z!BxzMfW&kxXZZU|h^gT^$$e>EIuSxBX`N8NAo z9Yf+g<`iC(tmi>J3=}Uw2ccPlW%N4--{`jt4C%Mx@CHymhlSPdaL&8otOMeD7sPc6 zX$>g9s_<8FK#@_ac~}REYUI9<)*+3QH5|SGW#@~*+ z!%9Adzi#z2$9G)gI~D$hOT`ZPU9wV67(A-*H|0bbpuN>+i02iKPV^cm6;Qs1*n}bu zfBm@0aSVPN?F2JbY#{F>#Jl=+aalKpk;Ksc?hpn6gKp$0e_5~C)|q<&c!T<0`>gq0 zSiY-yEi-6LZC$5kK(Tt`s3G0CteFM@!r)?-{QADb--PxWI>ZmCo3M`4gWhWT?aP0& z>8oDT$F-MA#BKW67g@aBhU2omceY`=QM`pPnh9|Q8U0>&=L|H$%W~R+$ybKJht^5& z?_oJv{X>T@f5B?nbl-1ng>(^;cRV;{Nk z-s9W1$okbYw6DdNN-2;ihxpCu+0e}2v3?}A|wGCzH=%sb0v{>b5% zvE((#{PF!VPbvJL9R7VUypGEKXKKc*xhu7ksGY3KlPJu*KILN6&NhjWd-?8y9^)U- z4xJD`K^i&Tjqz`T_cz9$41o(tMDGq3Qxg3Y2UwW=2C5f_*k7=qp&epjRrZ=IkiHvD z`nuc`e}9ff{WFFCtohADo_jk#ru>|a%Af(MU&O^vsdTSH2x+;2^E9-)39$dw(kDIS zQZd@2Cs`j(b_)LtR|W9A1xtQ8DsFaJ@*XT1?!b=5v5xOC?j0i|uNYx@mym^iGcG^f#J0X6pkKr-ge(v3Xf8Y;&Pm>bJr(gGhsPNy!#pfjG-yA*+ zLGQrae;*OQXWr3+dADGP|IoYb(w;*j3fKEEHl7e)pk;s2YS}7U_7}2c|87|PR^h*; zQ!nCn8y*kFub2S%164akvT$b)T!xb$VE@`fAB4!T-+3464-$Kh ze=jF2T(~QbC=nU5k8xs?jr}S&G63WE4*z6jFCPgpnZ^-DpGZQO|KzyEM-~1BjHmGZ z2bRL^_Yv7!4!`CuX)#|z3r{Hg56(UCd(=BoJZ`ER`L!=vJ1coaOnc>28W`1CzL^#1?=0RR7_ zS9Ms^-`gHtBc%}u5u~LXX@LQfA|>5p-*>Xa&hl-bMHC#dCqg5b3PXU0018V0MMa9f(9NML})N#IUyRXfd9l?MS~ry zV>kzvbE9z`C*}rL=S71L4FWW1(BQ}M6vA>5G(@rd7IrKEtBc{ph~sbxoE#KzxFQZ$ z!r{s|{5Fn{3XZOcld~3fEtov@e{o_AaMo-5ueD>i2^yx@vG>q0$Lbh~>*F>CR}slV61_}_RvY&>RNzBr!# zI5~u1^>Ca$!te;3_-HJTMI#Q!GahH&1gs~f=80Gh!;`V`n7N)|;x&VOe@wBt5u*Xd zdW2v(<_Cs`8`jSU4HhiNJaPN_Z~gGKpb)et9>$jnjVSE=6<9xf0ErZ)cSEt`3jUk- zfAm0{{P1yfC{|DUZ{7c+`(gd#uulT49*m7o#XkSW!?5EsuxtLCj}JC33cIeqKHk_o zFnd7y&kFvdL$G=n8e};7e?zR#6Ew(i<_*H;mx2Zbj{hU9o{k0(M^D1~*Puc9*I&;) z08?8>^jGsixiKk5cYAKp$0UuAaC)R2p-2kD@vam_(}cx#rexNkbnHDd8dbCh9~{lU zeEOa^J5y+Kx@CF2rOh$<9kXM{X5@63o0xt)3}I5sDUx3Nk*#gEe`VezvG*J8SBd6+ zA8JsblTOgw>!M!S;w}Lv@P_CK?Vh@h)i=1%VVaAM?9wPIHZSAgomuBigOKY-4=Vb} zKbiN)UlY8UHw8^{A4~*uOIwRXd0DfphG^x}(aHMqUj6yudW58gE1W?m=(Hv3obq5q zXVm^8Yz}{hWTtxKf9q?D@C!@TBJ{pIGUG&eRO>|T1~KrWLPltM{dJo4vu}3DUX=Fp zz!R$!p34+mTVD6snQF5x@_nLJ?{@XIm9{x-OSL1~l4DQ)?o6sq6Xh(vnpb$?JAI$G zI`{gSLF=Q5OPWs4zw#*DeZr&IuAB5>z0>H#byj%e$Ygcwf2@zFriDTc?07*y*uEeH z(DQc0)OrwmcAjGUv=O_v7+&|UeZuYaNNh|Awns3$=wE&R7^~;}t1oeT0=JKGdkFWO z;PxEuIl(;}xc!aW)3|-?fz1Kq;e_RwJJJywV}r&6EXUlz)>wZtG_0^3b5|Q-&lU&` zZS1@%Xxzb$f5p5*G_djVSYUKnG=#A=kw)VtHV2HxgXMx)j)}*-_qeb=nD^T?!2jNd zY}gpglL^b|RRaPrHQ|f;=caSRcLESR^oRWO2ZS0xLmK;`IGnL*C%Y4|_Bwcf}u|T%|+(_=;MJgAoll$`Z+p#0zm(d z6^Z(RgKWLgdjYl&7D0caJ6FTO)g66QiK7ewfF|;w+;=v?X=&fnMORA3jR;L8RocSC z-I~J7B<@J(m=)FmJ=BCM*H2s9S}Q9jD%M^|e^21E)N$tDp-<2C)kt~Yo#poRrrlRk zI%&z|SM~LHmub!&QB56zO^0Tl;>!!nC&Gv4zqh7gGbbG$6+U$8>`k2= zVp*T07E;+W`mp~(ka?!P?O?R=1hTf@~o2sc+T29j{uvv ze?|Hvyt%PN%Df`W5}D==^~|=kqLA9`Q`4_~{)WGKzr3d*+bIObyFMxlQLj+4s`%ux zW@hjZYRJC1AP{QRY4~UOz-z7YLZn%) zU-Z!M1 zJjba34P#VTT*`f3{zZ zSDlm!JjfDQv@$6jA0(B5TJkWKXgrZ2amE`)Mm3s^hZY|+f-{GIO2S${?@-zdnDCno zq%}N#!=i2;6bHLBZD?3By9<;tj)f@~&@8hWS#oBnF&l6K<7hUVpWnG-7pGn`WVkC4 zP#@YYkruul^;wXie2B|TH!t+_e@~=-Ic@6-X}Ywn#r=^LCHys|p7+L@BtbP3pe!L> z_IrL-lXVZwA2nKnr3c5C zAf-`urBeJDTymfM6dANI&OO#$gZx_3xWs45{5d^YV#1%ODf8>YW`jDFBSnQ@N3EuU zx+c6YY%J){>?IqLMoO|qIvI5synQSIw!0<_ROCfgbWGK5ewFI7-}TEKpdz*vZvv;S zp@faCm7DN4!@RpK4#T<6e|#iWgk9svgU)SI25wG`nSUv0$WwPy=-0{p{u1=vb=ryl z?R}73sN0`;pV4FiiTCxI8Ynrj?geXYR7**%Khd8r?@|LHAcvEgqp=Fmu?Mx)ySVBJ z0&}I>O4)Ktvnr~*stNbQ#Pf7+q~X3W<)M`!iQH||J0{1%dW+1ue~Zj&i_BrV`J~C* z(TvJk+&+512uH36NBt{~MELy^WLMG00#3thFL;OhR=+RnAK8>%U*bdAcvxR#ZR+J4C`Yv$qPLWp>`Q0}~eU()Lw|yA6_CxAdM}xJhcatrb zS<06anpJgF0B?AKe|#@**(NRr>00PTe%@Rz0v5T&lkaT>3nwT?NvbZp3lS8qY8hSy zMe%17ecU)s8{gdrFuqrw(aCjp(DJP4(`Qt$s?V}cdQqKdI^^zIIY4js?L9-eT9FlZ z`90BQ06aLt{Sv>MLZk-PO(dL9{((a6^>>4kUnQVpwbDAMf2hrQ6G|UOXiB{%pmy42 z7}YWCc4HZzNENSoIL5Gmg7Sz$bA8)#pv>Ll3$X88q6I!#)_Tz6(?TmLhLRM!CM|{{ zW&5h=^SFxSDU+g)Vq+@Vr~xmHLRS6~$?9V^|1Poz%=`;h%LrAi8~3U|B43j`=TF@d ziPU}I#M-WXe=9j@Bi7dl%;ct-38|UMuw?&Gas6>2er|xu&Fmije;hjX@f*+UKzb$_q-iz|r5o@U zy+FHY4^G2e_i#?VU_?XAN08Jn5D~Yp2-hEDJtxW=b+I%S^E_IJe#^fK3_I{ z_pib_lEHHG^^S+b0~t9i*EYYh)ZBK>ba5d)f0sj`UP)NeUC|4BRJPrF=TDrVWTzmf zo80YO6Rj$n?jHx{$WBV>X#uVl^Z75vW&*Y6)|ByG*)&_}Ul#pEsvhiYwi8_bmUzo@ zu?kh@neucfnGNM#2rY4UFL{5ir*J4?MHkhP_1aQDJ<&!EIVyzy9UB$8{_utD^;`yt zf9tt1F46T3t@X@V_4>Q@_Ph1ayz$uX{MqqZ|Gsg&?i9*FVwi(}aktp{?4G*4`pGL3x}+TKB>qX zHjYiNJuT@FA)vL^=~Iq(rSeESc5uxXf6}*CHp@jmyj**(^xeI9oq1XItE=gk-H%ch zyTG+znteqZ=W9}k;93`1>YQ0cyV%_)$;Ue`vahmdA9n+pe#uiX-=GNpE98<9Z76|`lROSav7B_$3cA zMd(cbhL;Vf;*bCCLPboTHx}vEZH09-Z-ptL4i8l+sWO3$7jOBB-c;NgUjOY7053>A zP0P-KnM~i_$D7>K2FS`Zs|Fjxe?(HhetHk#gq!U|=%z|<n1P59sbRCieoz1P> zeWl7_IIFa?|?XxWr}0 zyT0Z%3Gc@PrHE8D?*K@YP$5)mB~*l+l@Lh_fA+H_pIzZC%3Y)XH2FmJWeET zSntDB%`6WYO%54+-BWNTP53DAjrUEmv2EKRI#_J$iGFDUd?VCWIoQ-$#EqpNqm4tbFUUCe0lp}q@-DgI zvN75yCh$L3Pk+7?M7(7#W&1RIJnU`#+p362pM$3c8{^EGu#YWN{j(MUJ>nv+*oP75 zrh9H~1+QJmDoUNyGH2|SfU59Il79SEdRT4jOF+$7B<9|;zrm1d?J*|JUF;d6vCUEp z87Z7_spdw++fqyuQmryU8>lsWrWP-yoYot>w!3?Js2}v?K%$R_Wbz=|bSv3T^oeZw zBs&zPK4#}pBwEdc`U^G|G}xIbzI0?4pUuJx;UiN`&jGF}7Xj zN0cA%soD6n#BSkj12>bYSn*)+%}kHRkT8x8zd;{=Aq$qMyNAeaA9(HE+Uk-}b`$Zh zRQn*Xh)%@GzX`+p+4g=~Cq)8sIXLwGy>d{3-H(2r&_{fCsbh~8Bnp?BR*k}lbtn}R zDimRZyCP^Os9S5oaJ(1TumV)(2 z4gXMq?Hy-^=jJ$77U;{G5iq0x!Xa7Ii=)^I&}=Dy#WDJ4pc?hxzs@6Lq$}1{) z#d)O6QO9lqCG8%WvcWuBXY9)2ckax*eGW8bFOZoETsZypazSuS(fPg*!|U(LIuo5s z8h%LpUOJZj2)XEOXg7RkZqj!=aBUPZlCsidiQ4-pWP(VS2Xu%cC}!p7axUJ1eq}!! z#3d51f<5_T!jYNSPZsJ3bfR{se&3&$Ske=6_G!32xT6_y?4h%+kmh=S?w*C)h-|5= z$PCiv|A?9kHy`&v;TT;Tg49WsZLs@t;HMe^jkDQ(sa7w)fNEpsNXGZoe^jn}qUqqb zAiWXdS)Ctm1X^zMVc8p&sXw~dmnF|W2C5`i)Z`2@p|`MiImtg$3f#Tfkf7u+(mjigQZsT4=Nxk; z^nF1}Z54qieqL_TFtrpYu$r!3wbnyshMP-uh-8lp3ujiBskuAUA5T z6KH$%NaH%6=yjrqsZcD^gn*W@dvMnd9*xi@g z$$24+S91L`WWN&%RWSVsww^Ehdiw?*)Kcau&A@1O8J92LTDBvv*r-+c+@uY z2r2!L+1ZYHC;j}l#L3OUf_zq(T9x>u;2C+^fZDOm;gMiI+Lo#vN4q_Lc7=@Yt%ies z0YS)PfGC@5-d!no>0Ouc@#)Wf-3!FmrM&cj{ox(u-sFNO)kNELXOPViJ(XeqEmzDB z*dWOHZlZ;0vJ9&;Q(xUOUZ}ZO(q)=-b*BM!qr7mP66l@W+PMgZDcd_7G}+Rd8c90Hx+iQ3hd&dmK`mC74HUvm$+)P>V8#50iCPj6g!z- zlF4s$iCB(joy2T-0uAB!1h}&>L2h%iRKt9IElNDwv|w%;8VHnhtx@|k+ z&Lc?~r9H`L`)@v-81VT+y=dO75s&Ct23$;bYBP#I&$mjM)a*2b0()WPtL~|bE@;!p zGnkyAFpV`zy2pE7letVWfJ5+$LSFhFHB(uODRfLZ_|$^Cc6&i-#j1Fnk(~FhhoPnEPD#6fMsZF(`JgD z!_yHOundHsRp-P|Q|4T`%~VQ_EB|7D+m2K0PVzrDx||MP<@>OVpczYXhZY-El?GQt z;a)(Elbq*O*;kTX0OFd{OD%Q5kOa?(g+uWUDP53zpNe}%U4sV+zJMJc7&=eNU74b0 z=IXMgIkG_N+5DWc`I$W@A&XaF`IIN1)9KWc2%$HodUO4zNk733{}k{efuLVv=2*wJ zcB4&Hd*dwXWf8mh3|}__28X%Ye^83)Mw02TB-2#e0T!%N4-kIl1A`&}Y&ol}Noh^V z^(=n*r%Gm39t7O&!}ntAYF>1!+0uo1M3MjkXu&HaRi-GZ{;Jua7`OYZWtjXmsV z1s+PcYzMSHj#oD%6nE|_2dvVIv&feBMK|uK8&wEVSJG9qD`P9WVQ#>mii6yATh$_= zSMy8?!<|FqZotGT9&L*q{gqY5xBcI8&-G~;Z|nX1ylAuS!bO(2jT@AUHyueKW?;VA zA!4X}VIh?}?q%oLik#_}otm@!_sBn!4KDaX?izaXyxDU4UqV0N4-1|TAcVc)w4iL_ zEs)lH;9l^WyK_t{+=&vjiNUhZcJ8<%qbw5oU>=I!qkwDc3@6wM?>koB*q?u&Jk{D9 zhgQFTSPo(zAUEKhK^)8d+VD6p3yf+1`y^B&+?(;dd#2)9I++PyvFo_y_Is<*n>miR zcUdO0Cd13?wp)XD;mLHC3@;5lQW_~*nk+g%N*;;E7nObvm0n58s~>|~#7-Uon*Qey zY9Ny$7B+B{&0F%JB1^xSHyq~x8BSXF8#}cGgKa{DYw~839y|A>Wq8`qVZuR0j-J!* z%yYnhF}Rj_C|7(bS3D@6tHKO(QY?0N|fCOi$Xp~j4(k+gJ8-GVKm}ldyP`kS;Flpct9u z&i=^?St2_0p?|eOT~iJqGWm5dc?q+{mNXBlu_7^vG7J7#5+w3y&w3c#*LlKf&lGLP zaGpYkUTktST@WL-k9EAwhkVv@SnIY{1Pfd$n(&sw%y#}z&`kBAUHrOa4xz^#i)3Kq z^#`u=PpLVIzOlo-y?J_sKp0tHPGvw{3wIleY9rO_-dOOqoge6*p*MT?ls}zZ-53OF z9X?5ucoo{(9{s#~t$MoSd{rIAbgv;e-i=f@PHof8ys9Q|lxiopP9RrpUzy&48n}EJ zca>T?LVxh_Jf!seXt|$s#wZ^zssVlje83TJuymi6WEHi`x!C%`X)U>~@sw(csO{D1 z+=DkSp(5t@u?YEbz_oP#JqP#VxSSxhj-WM2N+PkwTS!W|(sx7v=>ce~;~x@TpZc5x zk)b^mACs(o{5fKYRvqdV@@3OSmCvs?B+Pn&lxC3OOPQ-sseL(=I^ zJpDI^)*kpq;^d8q+}<7DlI=57*wa7otwLZ_+&b_v9b_>shE&5$U+`AqaOh zXoe4g;Gu62L|@+P1P%b#MFf;hNW#TWM~WU2=##)-Dg;>IKZ8{&Uh-^Gd3ZRg9;a;L zn$_9L0)aXZZOZC`=@LO2e(fHPl-5QBmPWbZU0cnD520lV%VbCrSmt)d`sO&Z)(cYD zDC~rfFtyc~C>XN(rv6F4f`gzMjxmIWAc=>R>*kdV>WnkuD?@>1<-dyQ(8v_&BjSl; z|8|BDpa_M!!~QOPuv?5B?6Vx4Vr`c=45vFkBY5;Uy0OSq7ffD+Ds;DgDtimRwlehNp^JiF z_SQ1gYpY|7_Vp2<03OJU zSjdbzolXCu?Fr*YGqsWA`S8^MKEfNJHKqZK|H?tV{xWl9G#meFU$SU_S3FhWhwxKh-Y=tj1g_wgU0s>@K$AGPc6o zlwjw63+i|u@7etoWT0h+;ZK#9c~1()rN@?gAH+U4;1ng&xPCif zJ0dk1osxko=la+$+_4&cY|6c*=bMf%9X40G8l5u1He(2y?*ofJeZ`Hs)Q-i zB_AVOd&T3~hJGtxALr_G;3EEy9}zWEeM_5sZ4&65zhjUvhIv6!yj94A$ActT9WltSG!+%Fsp`Z6Wp2s@e_)N)IDaY`(mhzCNGPtkCZ`}&PomNnH zz2e_QaHK!|EDGO4T8q7Ih>`lmGaVDBZYv+E`*L6(ysJs$n^Yu58r2A=PsK zy8#gJW`%6PHE&$*J&_q4C`)~fH-B-(D06didWd7p)lhqC!t>?;{(5&8OWz{Yo$3A% z>ELU|(93Md`vwjE3=OgT#fkf10Os!*ba)Oye=SLJA<0@X7y)v9soeb1t;jS*O*mc} zRUwb9_GsE?pR~}gQva$qWC*v}{v@drXu2Bf4)aZ1t?E7+VeC_%ogYc z8>Lbjq^?p&b+@q;$2)~$n!0=5Ha6DU;F~~5i766tq4b);=pNA=m2SlZy;yajmH|ac z%v4v9g80YbfXQx&x$9NALAQPaBpVK7J0{c3ZKQB14Nc1;np4UCL)M(?6Hk0e@CC}W zwD`h^$zDfBdZ6s7#;ObIdf;fb5b({ex}cN+;EG{p*Jh6NA^twK^$9( zFebMB9NX9uK5avaZDYDE)(EeLLjzVQeQ6h8+e7l|hWuF~%q;(ijr__IyO|fUrl|tE zlsr#z_v&JT$9LW-NPjivWW`s>s?ogP&VkYk4>=9k(5~y+sbBX~XsVUFnQ8lxtf_Au zw>k)FY*?sBk}k`Q?y!l@byFLP@km6m^4|CBVI!I@FNpRmi{QXh&fVfq0bWVycJ3Yz zs6A#tYh>jDYov*}5&B#^&XS&N032Nyw?3z(LED47Xlma!PXyD>zG@tbyH1^dV>c*k zegD!MwAMK_4e>s^otf`51fU}o*Cd_Qf+J&Iv!DBf5_W2OY28xGG=XiXIEp))^r_S6wCGFMcln9e`mS+{SoL6t(y>ku}U z#KBp#?-@!}GzL=A8cD7*6phYN;n-z4U>kXz?FT9(=<5IZpe1lrgQUKUe~GFZiONZB zm91?XN8_)Ch^VN`~>*w+9?x^8-ZhkMF2w=OS4v@Q?oG>u|Cr(euUCL2Y0>S-axsLRyZ zU!P0;uet2$Ca_*q}}nJY6dqw-)b;wQVLlN1;Zg27#rY4I}jpn}1`}qH%N)QpJQ+!%r>jozR{3 zsQq@@tGNps@D-azOPrvVAQkSH#lPz;!YHq4ZVW&Ce1SmhE^I9l2FB?8!5m4PJuT7` z1MoWYx?UolF@xbPI$o(M{HEK8`sjK7U&PKLP_uPlW%CBO%3RhtAHiuyN-pK&miAWC zPdkf|J&THNcRtL+Y!GL{wcJTxK~ZK`JCF;b-G5<(^`le8zjs5Y;x&w+pktk!F}bV> z3nzShX27@iepxo4^EUnHk=u5P+h;cqtQUXqCwE-A>+n3VMEol&(1%R1_)AuRf9s&* z{yeP3tvAagdsG0LmH3A%;SX2DAFg?(SK(hE)*!PoYhb^G(g} zs`3W7XYwWZwy|c zB(>?T?N%kZ^?(&(Hbj=Z1xCEDZ1UqTdD(H|!4JsB;twX0Z{D`*Ld``v4|}B_45(d@ughhu zg*1zlX~&lP&_&~7C$;~Yk{L522>QUCYn&m#hSSjd(U7`4PAn zkQ@>88(B*sa!t~3LA7vEHEg@;GoR`3B|?==)iy}%yBdIp_@BiPw-lbi{!mH39>dTk z4-AV(2BgQ@OAT{^4+HK=c(F^#wHbWR@5y9{rLx7`{Dpp84SrY^^{~K3>YjAy(bxKL zPPDnjX5c@Z&&u&P67IBl!0>;^@B_YM#NVlZWRDo#u8YPD6>Lo@*u|`}t;xpPmay)} z+KP2B|2%Yghn(BT+1+;n3p0KzB<^-4pmjl@bs+%ZCLvc13-I?vac6W0!8LUaD-33% zw*Ml5`uYxPIR+V$Q?<@dAQ4x&AXTXcwRYdu2Y^MMzy^sdW#vb68^{NZO8}R6_+55I zPU^;GJ4OC6-#&P!ASk)qrq)ZPqg+xkQ?5-OUL=!?I7qw~nzQ3mx)w~QcsmBDyGG#F zW=IGBftkwCW(iy}FrsVf*zPz-ks( ze6X49uFU=steTm`A7OgE;Ej)E_Y`+)iVyVfo^ICOHq)!V zMqcuG_o&m}rf(hhxdMM*Eu4E7Nod1F*)&J92>;v(l^u}brRRLPzlGZx7<%{%N0-vb z?FP@@f@j3_LRiI+@F*mwaqI&^-*&rfI2Zp8k>T1i6G8e6qg{etx%JO~vqO(zD{2mY zr587MeSu^i4GHc9R};7tyR~7&$=GlG9s*Tqbq|(V54J=c36`u@ec|u+!nG4B_sc^A z>arcT@!VymeEm1vX|7630Au^8f2%FjzR-PyDtzxP_!ow>`aD{O9<16DiOr1j)!7_Q zj|HVAzM#T8LfBeJtZIn0!h0;QB|efoE>gY=gu*{`LD&z7>wBPHZE2Na`B5<5{`k)M zf}T8L^7aI@W07~fz>IL%bQmb~!(75PML+C8RQaIc?Qyh+WP{FJJoM=&*jKlcVb)}jqZ zK{c0jrw7TE_z?B>X^{Gb{5s$~$F{p~ocr`%?T|$D_-@ot>+DIJDa+1AsR%}bl~ufB zDF1n|S!;Xi#IDFqDN>s);l73K%~%r&s575Vy(nE}0UT>-XO*d{3QB)6%qvzGUw-M4 z=dB{s*#2G=vqrDST23ch)~CH;*@54M3p1H|D`9@xRdQpEqi)N~-hYAcAoSDyUp685 z`^4=3xo*D)3Ewve((Ww)5r7Q90I&gQ0So}DZ$beRfDga}umG3=$d2K^Pzc z5CVt-_yGdn!ou(WTm^A}6hHx>_)RM)1JnT;026>IzzkpxumyPhM=OK?!YN$M>c9eg$y)a zPjMz-qU9Wn?7sX;9wXW#iYy4=#F6gX{jVvfv1*n*cw}YQsGyYAjzZGv6|rMgIymba zYn9GmD@$_T|M&qN<&i$7s-Rw~U`8EjnYE-32Jax0N44&YUK$Bq)L*)T{YZuy{lSE} zh=pAsYs&yUTU^ryIZv-rHA`$zmlO+7$YURC_?@2w6s(<6J8hzhN)okUzyg0QFB28% z9_WTBu$TXP8Vo zZisZ6yX0SCS%ecw=n$l7b&*-%J3);|lc1o*=EW)5q+c&-=d10)B+ZJU0^!iaCMJe* z=DbQ3@Lgxat2C*PN~}b|(yjetYE|FH7}RXAnPTw-1QU7@l2c2yTeL)e4W+!7nU;sE ztZ5a9m4MWFqR!7ZMkvYX6g~&pxrnupYYi5Sa`r$$Y*_`;`2oHbcH7fMSPLqWcT;1= zBQ?84nFZ}6nIJm!GS8`IlIZGob+rl7yF87(Xlm&P8$$gyKxcb-q1S@DX_w3cK9q0#qb6-C=$=fPTRVAav;Phx&E(a^jVPC$- zw+>GOps5$imhJtqHUp7xSo>=3ONAHeC!Hjj&TC1fCVLKVF_=RAOcke+*}E;|K}=za zaEH?{q_e?{QhAvt0z`$KsHCQ0iP*OSoLHd5zdyk|$ugZ6e}JZ`oJ&3=EOB=|G-}^#@l`s?5J4gvPI&_KI3Jo5@o%-xgi$Dak+e^?t zsJ$_}@z?PMK#)ZvoYI2>8Y%UcuoDOaW*_GFhi&_i^8>n_&fEiW`vd6+573|)7RC|l z`n{+TBUHRJC2VI(K*^VA&#?DISP94t2|Ahj$rP7cg6aCh5A3Hlt?=~IU>Jb{5@j+1 z0-8W8=e!`|EOnT#hUaQHrDlH#qZkT19a5}3z2cd8SYdP;QfUUpz8x}Wgd8x`w>U_L zA#U(DY(nTLG&D!zjK-ijr~XMh76DFL?Z!mw{NEpRTkDaoAZFUWq;&{geVE+gg^aE@ zDuU|~<_2mE_Gt1bZu*38`iZqrcZrCP;BhdaG=ZMnIR^y}8MoE3`Q66EtpNKrrFa{p zKk`KTMyb+)2A9#I2}l!upmM-X5Mz$vq4!>%0o=CM5X@^xyf%L^?*M=t4X7YAA&+o? zNMMK~nG7rf@;}OaeDrHGDMfh%O;BbRGt&u@BClxiF>=yaBuNs)C&7EpSO%#txG~<( zggf8w?kl0*j9}Mq?960Xr_YY@<bq#iv%qC4p3AFxF_JWcwIfKL*) zk~9^r{G;ZtAVHkzMU#S8i zioqe6x8wxSB$G&JE>ViF-(hCfV)8Hj@P061!5Ev%iN-+ky3Q1|5iws4p(8gaY$XBI zF+^ca(B^kYh$16GW_f5be;)4zU>eyCb0{rzmoW_U>GL2X4FXBH(}RP9iVyd8NwxwK zsfLKk;w|X|i9_>|clM$~rCY@j6n>`k%HbdqQM3vZ=3~%N&M*hXCJ-VRb0GE)g{0eW z$1#A|3{#4W@{219bN)8UFyM%w7WvMy+^}M#Z*qTGc8%LQeb4ncp*l}>Ysk$P}&EQ{Gh2p20FgT zLdpdSCIEaBguoTVUjay_bQGmfIWcxnJAwi1XkVT%@wge7C(>agA*>Vu;?P+PgJCE? z;;o&(;xLHw-4y{6k>YDxDUCBwi2)GCfQ|&Q+>xg$9!Q`fs@1U24_|+_um*&>(j3Y< zUX%$$%j|IwaArKJ9p&65hr}7L2|Nq~P|KQytfPk5=pUS^a)=3W!Q7T;o?;$s3h_c$*v610k0tD6R-BkS5JH@l-%8tTf<_Lm81j zlo+YxPyEr|sVNWirSd)@%fdY}fyha=!LUi}L7w~{cTc&4czF(HK3Meqla~pW{n=au zkV2q8Q9VN5MMD&x;rAtYZ;(vsvV%*Schyy#MamA$*eFX-84vP00fg|^Ujgnukxg37<Abw&sJVvFwCHYR~#oW6@QE02$dL4N-!@AwuU=1(F+G+fm-%&-?zEvM;A|#@>pr z95^?EnI1(F*+bFku1rC^k|=A75)6aLzz>0j!ID67$FuAc?<^==lSP^%?*oZ9Pf~n& z6$yrMS4oHM_<5spBhvf9sZkJu2P89aq^0|;cQcKbG{J*aIW)U&8;yQc!Zj}5&q5b~ zkwgrVbkrNX|JGs+;3SQu5M)FnBwLFKB%Xo%k-%+#TUN{6D@<&_pQb7+9m2|tTSO>4 zw>uGo7<&U3s>uMUIfI#>E(=sNJTifCGbpt%>(u~Zu>Zl#ocaR0r5I~)Ax#bKir5CR zqWDnK!sg2LLt>}W!0Ui<8j*X#}0mp!& z&WRmkll$bs^fffuDR+~5<;mpqlYvM7Mjcl#`FiAzgQlB5f*&C`cJa4U3EbQ7%3pKv z=R4B~$)aBE1KJ9>UJ*dU*8zQD*O@v4i$MH&gX$GHt^x#FYQwuD&_?Drjgd21LyL!! z0LH|_aRXTWQwlbyP`KdPkfH!}tV!e_162bbhRLG*ggWY2hiiUCItD8ZPVlntcH?qQ zXA_1*+}z2cO(g2Lh*J0J+*-+YBXc}#*EtS$^Lb=IbA?zqg08AH|kh#ywRJ4tLe;Cb{JYr-B0~m#htH&iqW6xKfgBQ}>HXr=DaWg9 z-FxvS!lxs6llzS>S3K>n-Q$A6)-adn=*D4p3Xf?Rm)K-@P0jg3@4G{lb5$3ZDwQal znzy5Sk@JSJ4>@4;wVqq=?cetd1BEv4_MpFuXw#@gEvBKm;6q;9to35XF(eN=lq z7UN3Xy)hb3Myvlzx^&?W$!(wPP_cY3=-G28a41?2zpp5iJ_ zn}oh@fG~PvMR}Y$V%xqrwjUW$domD{6A>DYM|&)+ywjY%56NI(r{O5yj`bX~6F1$~ z_=uq{;qB_#HU*pYK8>TM&gMsd;OD_6WmZjza_CO3(&EXuUuD=+_c-FWWXzoJRwer? zKtrUd(zgPJ*14frVUIi!r3{^q%pqp>EV)vwr-W{^_nR*eceP;+j_y-(p3D>6=aO>z zl)P?nw@YjB1LvW$|X|31-habO?`rv_M(sI$0Rc`+v)5v>_h zJUPVDsg5_QTC!ZwMD;%|zvndQhR`gi>9NbM7C6jMlh1u-#eC?7^lqj%Lf)aCW-4Qq z)GMMAGnm8hW<8^cH4l#+Bah7cqJ?~qyF{MK{X#M$0M{iqS(|ILS#t1YPs;5435P>TT9%VfDU77+l5g^KRRxY5U24tSOkbr54D+mOi;Dh1 zl`>|}Y_nBbZsMxKwtCWWoQlA=@w|`U>>c@i7^EmOFsXL_KACW1DiT%{fkebx9UtJ& zwsa(EqWIpN#1Gy{=hpT58W&d_at9TnYnKi5F&O(it@>3};5=E7e7*UwXEYyGV@sx2 zdYbnBS{qwjX+_H_vslKOFvA{Pq?kDQ&iT<-*&Z=fC)8rKHYqYmdI-TbEC8RO4a5u8iaFv{t2hNt4*}qYbk^C zv1Up2856^6^nDU7h0#n*?K&S>w-8+GaoqcD!7(T|YN3d98*jBqOtB?sC`JZ2ID&^= zj4_3SS!=s7etMOeFxxc*g$Ai%*D=EAF@`tMhP<)ldbZ@s&u)f8?qv7*@#y?~o$sSd zUV){;-0fp(WcQ2-rJYgX*)!%$n}hS z!Q^GOqQVGFbwsp!%cbz}YK^(Lo3#AbY(c%6F;BLK>6t{wTW_&!&&fZ0-sfrCP}-Xe zBd%A`me17_K#HmJrR(8G26U4W~07?tE#b=mSq75?+HmAj$~@%+-&YgDNK)pYeo z2S2fzZSNXgd#7`Hnky6VwohWdN06zjsUY>-ufD>t5&kc%;UgrQmD8~4 z*8=9hNk(nEOMC;sloa=>v7{W>Ix#af2 z@{KB4itczO^XF9Z^$IK5X*SjEq-390mdB^aTkLhq&i#5MX=2^4tzP&zROJ$u&Aebc zH9hB2N~Z?SI#2thYV?6-yV6@eul6>k%C-(SKoin)w+t|uxIK|;v|^a! zMyLB{S~euJqSsBVh7|m1vMDJY)CA^7LITuJKT3^MO0rcX@Sj0@`G*LgAn!D$-~ zdixVo^xMS<xnV>N#|Hj|1H`4id-(8ht&Tq~E2y}= zdRu(IS|prketQ&J3_(se;xMd!{xE+AmJXk4Kk941wA_ zSy)S~Ysj;Me_m%KR@3gmbh#?r@1EC6K(?C%hFk2jeXf#Tpl7LUFL*!0b-D}7y^+lnLeXYS zlhfi#+Z{WlY4Uu5i_X|Zw8^!JL`{=CBYRqvj*ftKzB+@xXTIy;n)QU%^3$l_KguBj z{|N>As1b$B;%r!rQq|w$a=tzXeVj19UtyZQNo(HPUq?LCbDsnCS~m{T9c?UEOH*6v z)m|rF-qtaV{NuRaSm8_xSnAPZ`CNI- zQL}k%sFOi>KwSSak#e`3$ut59elA-ETGbCs%#MSqeb$cazKFOxG^u#uuTRdM*C36# z#H8t_qF?=?D{#}@Y8)%BnkI86=a-{#cAz!4cE)wvbNJicSWZjjo%ill!X99YZkJ=h z?IbLF7^|ef?COZ@38AdIb^)V{gw@nqt+2=cG@T8m)|0ljZ+x7e%(1mE;WJbXyk*Ty zlFGW0ouhwYdph|UpX2_gZf|F=vfh(U6NqkOB4n}A6>_gC%Ux%^mbv*%>z0y=dF+uz zkL}^U`L^}G7yp`YRXy6)Q9Nf|$6KF&AHu4${rJy$_)u5w0-yFH*o@uc( za%;ewbDY-Wwo=blg{8#-%|%lOxO9ZUWLI1}61IrBmllwfUX#7KNOXeuIk{?szh=5Z zPS@%3Bx*X*e-qPjcV_(tUxs>F7UeV71&DJ!c7e@4~sj}`K`Ug+$+rVP*`=e2$=6CV=&vDPml;p%Y za=H0Q9UjqB)=p@*09u{n8%XztE?@B90h{j6E|*bRt%u2US_1UG<8ogeDuG1S@$RfW~s z&O7{m)FTn>{u$^6M1*-ILcJ5AF&4HOLz}@sjJ(v(zI4mJbjrR&!dU0TSXZzj!dMq! za6uq+{Xyt@^7jGrB3JMVp?781&ku--0EL*IrN5Mgk)GwWl!e5?&B?<3{RRv7cL`O? zp1^XKi$hh#7Cof%C#g~AchWlB9v1b@E!I-?-n9<(!>vW2z~Poj?1sqvQFYS|b_%DCps_9}ipG%I zjRBOk0qPd9vAMY}D9c7DM-r^dutoD2?e^y%QBUGUp7fNPoYwV}{^wkV?(|N{maSETFi2-I(w^J zJJ~z`!yml**K5^ij}c}iKE3fv%+dDwvsX}5{9@S?XwLxu=kuR;S#ezPivrjB!D2`Jrx6#-1KU-H(@OT?P z#V%{kZEL=A3!avvW_8)oQ$gr?Ng>{TA)2RyZXx*j5OYFw{#NS6#BJQl7`1t1|?ZrShq>Q2#j#z{!CmfS)q7j!d9^Wq>pOFaj$HBRY^?OqA%yZS;ftd6LJkd{6MZfNc7hkTYD?Gu)u>HXH|a zk(;W*6{XBoS@oJi@tOkV+FZ{v6kmBC$nBdr(#f9@(Y6CG07JqLNy=|(%tI#WBc1$# z5&w}&^U7G!hCmE@z|Z3~yEqTdU1e!~s|daa`oMpbL9R)NH_vMP*K$PVUhFL>quhwY z4qph0-IPiIa1Bgdj2|N1cYUKyiuJ|F zHSxiHTir7c6*F7=MTLR(HMwLA%*kcNj1+6O{U@xQ>K)%{`!BHDKS*?#wx2Ia_;=r9 znFKm%1=7buQGU&{Mh;daUy)RmT%TgZua61XkI2eqzJ}djss|mq^Mg}ijnsSJXA}}x zp8+SG6 zN8+<%l-Fq+2OVwVKS)G>=4v@83H~tQ`6ZBe$(@zSiMESDXCG)K(aWpHUNgqFz6eG} z(3@+Qo`$GbV+RhQw-S_1Rh36CjL{j+D7u!DI%!=*yrjM=CNlq$c_!_Wy&>haR_2+y zs=E_Gt+Hf19jQuIXewIlMoYoIKw(*-9Jol-uT{E*XrD%JFHY7S{h85CO@egX%!e`a1u>97zZKw4hC8t4usMKN$x z4ROgZa6~b_q#NF__U)XvYT@gxAJ{J}+nZ%<3;gJ2tn5Mj@j`~@YxkzePVZ24mA~KN zi_a@7_7GVjbe(cl7THy@1e~>6Y%>KPpSZr>5kKFSXkbvxohor=_n%!prU*&jb5vG`bYk#?8jN3V4>gh5w&(VTc1|iuXmW8PD+H9jc z@t{qKak&`<-&-MJUOXu%OuNk@qCFF~H|T{9TCvVjAV6_C+J-|*tg8g0&;v1f{8-5; z{Eqgt7?AVV##}BX$^upbBtK=@0`?x{B4ykX_6}_CB`l@a3idakC83L1?|N~2H3ixl zHW0)nCB_<-0;nKAB1D(PqGe9oAF2R4>A{FFaG5*_ff{4ER-!$c0})RtDJH0 z`kJM;TC4G`>Sx;+x(K8bOSgkh{){bNZ47(O(-Bl$0vRPHc| zQuSZVNWgmP1l^R;+Am}7Rv1!efGb%7@^lC}u?*SzOC3-cY#C7~bEVZ_7*D!lRGm7r zrnq(`!*JjjxErVxYEVo7(n%=UfkkR6DeK&%AtIbAJuCJ(#}-i+eHAZ&^-0k-c!b7s zfL41NFxdAhEh1FR)_9%~{zQtfQI`=?rJ*y4t8S&4Bi(4s zE%DL$SeVYh@fM^Z3f4p1Pb-Y@mQ5#(KlR5Fl1P*_`{dcA@!N?aI;ozIOWpGIqCNj7 zZ47CpdQ#3@c(d5e2qwcU^m7|CmUq^=xYjFmwBNqCb0;G#oN)bd>Oia096a9Lbg$YK z4S38XwZ}wlzwAkU>`*ayxHPD9ZId}}gOswq=hD@{8L)~Juxh*v(`g{P_dk4{Q*

      8zG?IcUi}Y@Pe=t7l#4;7Zv;shM!m^@P_6!3>!z4bE2TK*QMR_ z4X_7YSEz1NQ>7MY_~%7i0`{de(=P6#DibYJC(|!2SC3l@Xs%vBFE~2zy~C|G(F0tk z+FaW>IKde&m&N0%YwFnCX{9UI9|T@>SjQuR~s$uciO~a{mLVl9pgv8m9dciNDj5n;`7Tu(SP(e8JO+0(ea|U^X#iF5CQ!9rfE1xExkOz>HxBKj; zGq-}d&Ckj?s;K{Yl^uL@b4mO4ock-4G5_n&m2F&)v-epTrr`c^&As!Tpz!$ne8*okKq2c?8@pD;oMwv$a526{ja~B>8gf)bB(eFjXtV( zjo|v#_l8~VM>q5{tXmiJ3|ecQHAZb;Mpux!mD^#6 z9%d(bdIrtjL~Sp{`}^$AFYlq%FVNFbODw~8!h>GEd&~JNDZ6cUVGGX-d!4-Xm(Zh| zzq23^^}b%l{s}q0baI-+C=_q7-?ywS(ti@;39tEIztqg|vRX&pv=0H>#l?!|fQDj+ z`&?Pi96|m@>n+u`?U#S8rq-*1rdp53)m}%vI>EaS#*M`Vg{@G_Kjl06_xoS9;q_j@ znt1uW&GpXG1t*t7H=g|e{tOV8>^=E3N{qOFR)$4sde0vXabNw;`x?Xn%3W&zY zQ!z+R8>2IL_=Qg+Bb*ww$?pEp00$q`=>n^eFA)YFYiFCx|$F%o>9rh>|S zM2uyV{xNFQjm-oM>9Oiro4sD_DrS_WE6~;|F*8Rwg0fI#iilCXrWFT96L4S?d-S}ds-6DXMU~QA{gCZN;hjrb$JMonn z;L-Ga*L5HvcpHZ%VCva4Xr=|3BIp7z!bQli;==31Hy#15T2&01FV(HO6J1w2d70(a5c`?9~!fxZswX3T$`rysp8%^Pa}(O%J$$KTxkXSMwH zF+Ps_XiEWf_jh$0Ezg{7fWtmR{_vH$E}x^e=X{nOXg0D#o;T$I-quGGN&QB<33T7g z-aOSY=SCUdzu#ZCE?DF0ek$s&8Fv#<)01)Iw?F28^g0e-4?(;iXGEoIMZm7@MzTkq z=J8GYsX5Ffv8muYm5{Sy_$olui)hq>ZItn|0xe96a2MqxM4u{v*^4aLU|S0|tPr}; zTZ`XL72Ful#ei2r-xFdm3QJFkTk!a!eiyl)GPeN77Cc!&)e3nQb}#Y^ZZRN@{5Rqr zWG_Mz_}``k?LR8kbY)FwEP#i(i>tMx!~d@2FUC-$P0UFk?Z`*cOt30}afh3v# zx=TTUBd3e`>E#EYDW}O5kyW{&O!|?;W6NSe3#&IA@1vn_wGqv`+5(s0k$P_wb>lw3 z!Rv}iL>5dzLrqSQOzG*tX}jdG6F*dT{PS^$wLwu4q!f)R3m?@LZJ8MiwD#7lLb{lu z3`ZGL7(pb-0m#YlIH0trMy`R>#u6ccWjC}@TM0qtdqK!iWZs z{U;l|2Y~g35Sf@46kb{VlenQHf!u@`#Wy$b6Q;m;@EAxkfytVoB81ZlSqea#MvQX< zN1Am+a@}63fx6UMWNFI%E51h`1DO=r+O3aU_bDYUv zWYrWZo4vxq>EgbPy(3A)`3`encV)@Hi>WVr8)TPJ#^KvAaE%UK#S2@|2=aescYeAV zwK}y_I>!)B~9_;OJQq^!EZ@41VlEzP6V?hO199t{wf) zh0g|b0qn)Usx5XgF>uZ=!*{rL{Y@9kU-Hi01r~NV_%U+d_m@^iBV%*#%HaPcJ0J0g z7@F7f*AJN9{P6mWDGqNXod@Ajz>Vfh_Sv!Qqg90Oi9XwY^T>abhr46mg{!MbKBW=H zThXtGy@j5rlQ@XUpg0IW8~Pb~&wk(JY#c|W0=k9_=mQX-`3D7*6^Qv`Am40H)ID`a zE67L#Wl4#PAgvDB!#SiLpWCidNY-D@Q+sSrcp+wVFS5^Z-4zt7GE`cKSP`elGF6iX z{Uc$gBTKL_Tc*jw!NnJY{%JCvp)Bq~|B@7qxWd#i)13-1Lu}^$fl=6#152clk)a`m z224zbC(u=|xpaOUABs>j&+$4#>_n2gwx|m4u?z2ZK}D%>z`9ep$%0&>N^t=jD7FKT~rbjV;Z#(_CJcU8VnfMm~7 zeqS>3_I+fAZOS65#c?{)*Z17a-deH;-X+f8e7?J!WW1kt=iwS;>T3z`t?8!nbFppS zzND4HR+_JAD*F2txP1@I6U=8$i`@a;jcf=1dvms^+)bk}1HO@?6;oO`86oQ6=&PO6 zp~DyoWzVutW8K*GoBe6Q|GP}XkRVEEga!okmpC0+4-zY#$PEDwQ1h=sgQlKUcV1P( zn2V;S0#D2b+vOdWfM898FGK@RyoU_ss9dmoR!5fW)|Kr~wr33{=6mm?G(8B-Q(xRV7dm=a2xeECD0sOrD z>~5W*UvQ|oY^N9k-Y#r#ZI`pFx#t{CxUMHAN_J4>AW$Z+h5kX4(McPnbl@&36G&GH z6w5%-@DioQx=D@sGp7*ApNw=E8#qdr0$_vpoQS54qCGc%mai(2srl`NL)H9= zmN23zpHdde$_uO61%~!x$F{)eqAfKg6eS+j4A_!n%I|dm2a8T>Y_YPX2hhBJWRFgP zz7E@6KOZFjO3Sq6(7jKH6Q0EQZw zVy;)AkLdod=D}1d(L!;c4}7jb_4a!`w@>sP#iQC}AD z#_Y}1TJoY%jl7mhvzZtb!EgC&ahOC74D$`NqL;E{VcPSyCYDeX*C0i747btY%nE`6 zY9}J4Nhw*1+Hx2=gk;`+)m{7;iCG~Ja8z!c7=Ng9z{>eCJw3^{tl z=yIT(3}QT%83~*W%zAx`M3K`r3mAGpLg_sVwcTtx6^je%9C`GanFM1Ofo|q*sb}k{ zH1NAbC~2h_TL&-ge5M~K=vV`4^Mu|k@QNr=FK=P`b^wmm>Mwd>oxTp~kc)Li~ zOp&BMz#-PsWY6T136&>=Mh;x}DS%+L`%!CiPT)Z|XwRt09_-Y|maHsXau0hhkuOSu zd&dL=MZRXa1W~3v18L1DU3<0gS+0ha99&mLifij%+4d3|&ZLX>NQ;jt#&|Q25()I zny=C)EtMMPj%EwRdgtSC0#8-BbbnFRZjxs$ZvNJ;%y)!3?YJO*o2YW)N7;JMTgk=& z*j?HU?vg}6o*m?$NVFUiDG^m>Xb+Q!8|1_i2wq9LA7l=De!7Qa3DnPFN_&?K3%a|? z#$oUj_2?%AJ4<)bjzJ!|Wje}v`}%HxthR4M>^s~jr|}n?yc%1%5*Y?}>_ZU^fO^=2 zI|}`vsI@kBSuEW`HA?It>CdtlIJX4sSb)9*!!o#Jq-XPTw{{ADj&*VOdhxCNJ@)&t zbBucwnl9Z!d9hl-h=pl^@L$xilQxrauFRVYLGpmcgygTFnpbf31vJd3DRL~aFk=H> zB<{hxadUMEygf&dlA=}{LckaiV6@Fda6EtQ`~xhs-wJ6|gD?Jo5#1$6IAjJje$nkai>~|9DPMv|613b$hgW(V=K<0WCkJWhB z8}l}TB{O4oO}s(AX&RJG-AnV9C$kSh15)|w{KRVs%9$_Gn8HLh>M!gU9mfRPE4S(q zw7gxPB+e{qxo{bX_VwQ6sZFIA)e2wMbS?Fc&LFg8MmIyZOw@a6BNW8_{!&lWS+VY; zRCCV~mauC!m-0lgQY@t@;E-b3l@hN%PHjIm2V|-8){G8JbyxWoXnpxdJ!@4pO290+Xg!F(N zLTCz>B&GkUW`OLKgFE61EVP zVUKCELs#a$a`IqX^=2s@uHD$?%aq}rZiG7IuCU^SC(zLp zQ&YmK5}pdo{Rc1S$e>z_vh#;dC%c2w3 z+(siCMj4_~Og{z~Fw7P_13D~klwm+Ii-adDS;e+wuW>ZQ1iw@zH=J{f<+Or80_G}J zU{Pg7Rx^P$0=r0_z$x0i*fPg9;cKN8mXxI)@!Bayn`ob9Jpp1z&paX0EjP9#G~mv) z0oE{KpJ1aj4tG{qU%Zty8!J#j9lEdqQ5pD&zMyrSJf+M4IHJN#Ed@FPNwzU^5YJ?j zbXxhyZ3_7E7BU*gW2;uG8JfBGHS%IvBZ?-f1#W?%MG=?;%_JBERfY*+NTl%=DIQLi z2^k@ZHeTsqu_g#Xl*yJ14rNj1mhe1GybIzkmQEE;6B@OtxJB69NE<*n-(kAmFyY8mL3OGggXhl?XwMZt1s0@b#=u~hTkKvX8M`QT5w z%c2YguxA&z&{ugEDON!?4$|bXR0<2b9nq}h?|W9Y$Ud-HqhD4)!cQ65C#v(oBQ?Mz zTbBy|7GCCvnN$zuN^Z^toih=y4kFM4nkezFT+9MQDcY#nG^q8HbXS#1X#V5hfV-rg zuV0T=8y1GK(KrB7>0V1#MfzJLl<;|Hh#m3(uNhMp3#!%ALQa=0az(=~vBJMqlX2ji z0ug3gAvU0vLH_E8vldCM=qbn#irr>OK2RJwOSZNMd+8~?m%?X|%=(LuD((Dr0sD%Q ze3Zr=!J&(3pUr4Z{vx@e_i0g81{tja^Gu_ewN()Hkr*(?yh@t%dGogh z^e!DP^e*|Nmm2p@!`_6FY{RvYz^bl)P0*v+-WEsdi*LulAAk4+Z_9mc0%cbk;=&_1 zyeUy-x0nq6{XO;XGpIRKe5`#z+YCi*e}7U#3seToI6%DJ_o0I>h<1y~_tSidW3W(F zja;c+X@#z!2Tc_6yjDBr*X`{}&Q37_AoESuk!E9OH|i^L?LSe*MlS1L;0MAQpAqsZyiR#rl&Jg}Z6kE+5AqAg;&s3!RR z4BDb%Snn5Uda5T3;U`{g$jg9&Y?nF;-n+hx-+i6H5kTS@k}&q68` z80*1R1nH$C3&q^&<0@4>Z5nm#ri$9(mql2K^`e%4H_cc|?$Mh9zJ}0LwHV|qIV>0{ z9MMa}FW%?dZB;yOR&gsTPA$54fZU8vD0dX^XcA~xucgps;0!b-W}_-^lyPP#Ih-@8 zzn?S*lMHxC17-ozAi?n|!XyK3rkb0SPf*d|mE~fpr4I2ad(vSFzGQ9L2-FG8f<9=7 z`28uEj97+IlZ&D!L;}B@heQn!53e}J^VY9Zo-;I?4D?(*hJz9GTyu`809(s@bji!j6qbqow#JP4P+1~;Yq?bd5L+t+gHKb*J&KmC~e`W1PAa1jdXzz|Y>gq)S9 z2iyj_bhj-MsJvcC_51|Rke;rTB99Xhs+O+!I`OrK$7s634M6qPxf0O2Zix7W=x!4v zdFbGJ3Fc-qHYAj*W3LDN0Ekrx16QQ0OZp&s?OAwq`dDns7|=_9$UA_fB=Mh?a``%! zdnk$kmPG;ahtDg@o1FuL!`(eg_-a>wkVH-v_&Xj&r>_=V99!M;15`UT3OJXr)a2SX zv-J(*0#5|$-4Ory3t}}~F_95erzyZ3!>{mL8OCh9@GtkFHr#M20^+hU5iSVu!{b@s zOCe9&aof4IhzN!GnJ=$OGc9lv3_)`uQ^Ql^M@<)h=uzo#HGnmUgQ@+=(gyl$F`2anU0A%> zeq&LD?~k*3f&3Pu0EFMmS$M%z!zr3~x!f+hKF%4vYHKyS{$&{x-Q(u|b#i=q&(wip zOAy?v^|0{+OXW{IteTyEIPi_<PxGk8<+EZ@wcW<1!6aBb=(WV1b-@W7(b=FF8w%5ci8396!1t7cbri>t%YDsH_l9; z1Bn0;Ek_t?Ps_sGbpk6PIAn#$?49#k++KCtm_IqQInMeiFxD?fo4of6YuBNTk+wX0 zZ+Rw;PGI<%lDj&r*<}eX-$=mnj+%mUOxry*HQDTy>VZ2to`qYu23ecimc;tiVGAL3 z+()s$_3Y^b064?uz3*jj2XJ}J=*KdUI$M~0;HE3)bZ)NEs<{GQ;xm_N>w9?bDb*d> zKb<}RTNv{f`LCa@poAY)hW!mU7mNqC=69Gw)?Z(#kb>`L$^8J2zn#am{kV|~PQyB$t}nN{WXoMl!JWQ~qw{fuxVM($;HSCte8yL! ztFh{zte57GPTJ7zuHElv%Ed~6o>N8pbISMJ)I+?%b2*RS88h$rnm+H_M3(zWmtch5 zucu*7fTG`$m(y5f*p4KO|E-MK=5W2Bb4$y1qwmeXy-i2cOWZK8!Gqxa(9x*xBy080 z`RweC{o_uL?WiBCfGa-l8rIJ!s$rj(`*Zov?~ltZ*RgNS@u<&c`j6ypn-{Ztf?umx zuR}k_m(ZSl&9-d@`dWlN4UdbofUep$yR#v504yP+&ZfV~7_Ex>bXYSW!+k%JP(jb@ z_BGj%j=Jkv=J=*QS2jc-^CA3ucl-G}uHk+?Wlf;-QThBlH8|dY!RvkM&lKkKZm+-3 zcJRs0KeYEc0D}kLx9%qY#7A(mN$#uWIn>q>W2R%_kL%T^Z1jnL%h{dgpWc(*9rx>7 z0AYQv=k;)T%E$4=vhK;%`J3D1%6sw8!*<;KciG*Zp7w;Aqpc@FKE0y;nTaVA$l(N;?GU z%Khr$iW=)@NR`pO_r5>0o`H`$@7K!(fV1kE?^V%}&yVf#avySs>j3fjRIvZz;~kT{ z-2Y8uILj+y?j*XR(|YY`%@~4kxGQ({s#gmV%lELWZ~Cfr`+MrDa$8{PDtFs|@+xt= z@6_xSUkkY`eXbiQc+J?})KB*0Kx3>Q#FjK!^u!Kzcz5Jk$&2~74#b)fJ4;6vp!pa( z6w|2oILyKxH27cK0F%z#iIz8asIoq5rmQtuWx_()_=TouY0S;();D_?X7NKdCK$DN zmOtWK3IK0CV~f?@M~cl@aDa6c@uZP3e9f4t)&GkqV{jLGW4QAJi!<|6=91!k+es*$Xt!iMbYM@p%c3o?w0`p}4HzBy&6t^-~`j~TgsBXUyEFHN$m*(nH% zi)%7v#*L_C)@9_?K(&({+&wzwyv_eqMG47LpulSiiFSaH(7TD#U{ApS^d2ygu_8l@ zGH(k~r+-jHX2lM5uRUGd0cBDhTFjs2ADuodn}hU@*2P~BYvBvfzOFZCu8xd2Z?1~Q zyZ_J4p&p?xr3#ECbd!^eAQp%?mSeEEp7O7Hev319^ndC|F2dyk;pKzVZe z+sn+iSX|cgN*3FyEY2&OtQ0vsVgETYyGqYLdmHL(VPN;;Des!Br-^cizK>sT3N&}` z%%B>Q1HNcz04~f>sadBU4@|CAYYfi4G{$UQaYjNk*sj1U&BOo+u{t0thjNXB)gzOk z{Ig9oM(?mR53q;8B2fsEgkv3I&10RC9mBE=k}mtFvfO#lMVmzF#Uhi`n4)2p=|h{+ zVU|rqldaSmrNAu}xm0055MY{>w8%I@h4rNz#xu;cj2z!S66kev%8(c}-@;UDEtox7 z6p{Zns-Ca6X_KhOfC~8rWSu`*p|=(MzU92gZasLSBxZY3%B;dyO%eRR>+$;Oa-man zARr~;^gwPH%ygwiXy|`g=HB>3(G%=m1~J!GP! z5J@7tXXb3XCPoWSRHYRtVUh@WVVY?_h8dWOjGxe4A26_N|2YSs)l`wUhRRoPR zJdX_u*_|ipx`B#yeJVRd*&x=x4;x<$x(f{9Wa+aEo?$Ac4-D}$kVgSq2dNQu4_kgJ zK6=P7(*yv@o0y5FL&U8Lo)X}})XS%kp+dC$LszLL3OY%$!-jA)(ujfxVtLPj14YO(V-qgnvNp!y_V>?hdEGC ze=%WYONUK}2UQ~X%ewsfOrj-6ahnDvWX4p>kq@mk&0z)Mgp zE^PyESR!tv^s4XyXRjSdMV`4e>eOKzS;K@|D1NnDOY;bbB^)C z(||aTb;JT*Tivptw~kgaT#1}X9g;d9v6f$(4&9NdNraEQ?frl|C6gqP8)5g))y;xp zL-==;q9BLP3HPv@g#FQn;nsx<$e&P_REWXr26$sba*3|?0u&>}Nl0W#%|xghVdN2n zgNC&A^X3?!F~mLz3fMuGUM~j|#_(^uT8vSem9zka&|L*yc1*?(9rjZ^-e~I2-b4C! zL?{RnDR!kFWSy!_i(T-gK_|wF>!?JFAo@~EUA@mtT1zTYY4d%9z_55r5W1h+iJ<9n zSYA&}Xpft@NwFmZ2jL{oyyOsRq(uQbaHX+ml-pKku`Cx!K}t(1OxlGdq@fpg-Jmjb z(!GE?XL-FrA-Hj{ppaU9=IbY}t3!qo<+$>-gB$FFJKkR8^uzZtU!8sVrmbsuY3sv< zQBR{!6+*}~`@(`lH4~mGOegUI%Y==^!veDHc-Ak-wWKo&&k;wKY%AeW;4G2MzE$ zWS?L7TK)Z&(}%^)?$o7lGeB0Qvctqn;jU`EAJV8MoVe7K*_tS33r z!%Do_8NwBXv!bT?V$~wYOx-jH+6LeqgX;wh)(Cwm@xe~Q3CS92<`N;-1(&gSfB}IU za*8DP`!7b|B}_{gJ72hW$pIl!(}?ENlSs4>SsLa!c$l)7K0fjVY+zXG;+cCWPj#Kb z8p_pL6n=*=TLOK&)y#I!DKtGHSoa4a3rTk51|2XZHdLgmjw_(Nsw@<<0SKT5rVq=( zv?#0N9P$1gnMODkv(LQW`iZP(Ik=}YqjeVm-0UracGe)q0iwHyo`kalxfI|ve zqt%zqJ#b2^^OTxoP_tOgW+5#aU>68H(Z$3ItO2F-(22v(WCYhS8pIx>0NU3gmS_;o zIJ;Biz#`+*2E>^G%quYsC<0tF-TXd)fNRe@ZOBP7cnVO0^&957bi|B9n=f# z%15G1i3T6qo%(w_U?fN=ZW<`ysF8Tsl$ix*poA!{{5&M`UUQl*hBG$@h6*|mUn9xqa2hW!A5P8eEK|NLsSIqaI%qyb zkvUa}WP@d3NbZz5B>}*;L*|r-W${v0uLq`u7ZtHfhK@`F^UuJ;X0^4(vXJs(P3gBo z27)JZlu|sXTN47pV6kBfBh(m8vwGasQLd<&0CND#Ko>_PCe$#99n)|+$k2x46o8G^ zi_4tWD7G6~pNPfOf{phsKzI~)al+!f|DW<1!@L3OKxm=#A4xQeq$>Qbd_jj8J94xm7pd zpa-;yMC{Ye4a^-=R4j(L)G1Y9*ksr08MC$k+cE#u(c&?W#1>9~-(|KBIg?|jk+U6A z^2FfhKr;3v1y+}Cs>s&QV$kX>7vwT!G4OMiP7TO|KR0)p+!jd1Mme$G2KwYdRL)Jy}S*lxqV^q_N6NtCo{I#6WE;h1M*8pVUb$w_#eJb2I^ zw794aUxo147XC8XvWq2>Pdt3}s9@lfMzcKmoD#rGK_2Oq)Q}y`Sg>GQ6le`q^31?& z4kU<>OaS1bTH=V*1K4l_sjQnbOUPu3tspws=4&LDm$PO{I%CPA*+gbI0zxxo2p3JO zk(Os6^|fo-)y_Ka>3oy2Co!Bb*qg9AT_E0#;VK`eMDVqAfM};u(cLBHWRT#cj99V) zg4hw-OgxAOXwWiNCuWHncq|&E(Zy4d$}hFv#sJ$Hz^q;Wme?v3Ci8-0RdT4stg(99 z__RX|B^R?QbC%c)G1%Ggwk}EDbtoCv;r!Lc+74)|Lse!W^CM)q5#YK0XLHxN=4q9Mxb`8Dp9N>PzMjR)!`(Kiau^@nnXU?b&ZUC z$h-Yn8KA!g&~w{VHbAE?M#0PCM#VRFLH-I|C%&~2W2oYge0N|f&LzW)K>ewh5b&%M z4~GU~;7IBfGQ!N;5Ver^;D|(O_~NjGTmVEqo23ccFbV75CB<|kmCI0(RTAXcLHB>j zfEtIVR>$C0)12Mq_{znAp|!+tto+dE!|*kNmmikI$hoGHD_EsOs=}AM!7`D1XbQuq zbYLbtgys|vpqrWrp~MP9BPM{Z86%1=fQ&$$jp-PbTi|l&M{4kmrvKKKC9+UBTLHo< zBQxBG)S6jJnIQ2pvcWho#Fb$)l8r7T&UqJbqAYo$bfB4m7~+bKfZRZxCIuXrT^VC) zWbIBY+Gt07a_l@=w^XN(b+qaSC+Hn4{MMUbap}C$fy1*JlLv!P9U*?vrhy^5HI*v2 zpv-_5x?~xZ)490SM^_28BB)I}K>$$I>GzZyaoEROgbG6wG%3Wua_iA22IZhcT65I! zM7NaCYC+1&jW|eBJHZsdQn^0iE8ooFKi1hwlm;PD(FPh_F+U0~M69QH%E5mshyTP{ORV&h%& z56Re*fGR>ps8?v^{)Q5yg3yzmn6J}+D$%{0hwl1NHqut!CLLEd^1(D+q~e6eG2y#13&_9}H1yWH4Ng5#YNVn@6t=8AwW+~~ z;%~j;#tn%lKet?+r{_6>jva|7WE)ZOr(iY0qO}fx)Y!^!gM;^Ms=3mr{L~D8(pKB@ z?~yxBrCxb-UVx(W*VD>1PF8kDF1(teOMFVN$ve_2V|XIYIH%9h-)@MG68~2J-L#`V zp=-GBeO1`&3^u?EN8efCSy`FAV@=(MKp(5+<(tMjokR8aBz{Fd}aPuuYO zF(p@hI=s)T_osHcyq$s8n)@MoELC$&(AoTW8JAafFM$icPZ*`uCNJZ=Pb`=@mo$ZMW+p!_T{5 z&~zQZS2_zfC%{qHYMq7og8PH@OX``=`*Zfg&5>81)3@)i`Abl6o%2<0H|AvO!BPfWwq zU+f6JM!n^oLGtFcd-U4o|K9ETbwYb%ZmGwW|Hne-(MbG7zWwsgZhQOd5UCII&73A} z-fZn;{_W1gXPMw3w$Gcp`jO!g|MPYj_{l23Hk$=9)&Y@D@9xqz|EA)b@?~!RAMTrk z1+eOMa^mP--_qiczryy7$$gXO;OKj~GC1>5b>sJZH&z`Ndkx}$+x{T&f!LQUKslsvGUWum8R`=&jlRee~ei{v?Q#>EpAcO6k9_?pHeC{;EC0KYr2Zx%7SLTN$&R?z&v8@k4y# zM(DYdThpI8N~&diTz}a4VJlbUv-_;D^8TG~Mh8jA4Y)uB$2AZnke*w+el@$l({u=iQh0;2c+{o$MAc-*49BjANv3J%6yD`+}v~@JqA|sGdl3! zCjZ{0Plw-}sT<@C8{1Je&~^Q(1q~lj(zn$)eNjz{c4Y5iQp%u*nA@S2Lx8!~d~;66 zmt>3YbNZYJ+%2!|+>;p3Y|D*)CYaFDce;w*%W)k~BkZ=yx4zxH@4&5hN?n)I73bVf$~5}kUq?r`1bzy3 zobDI}r~7_(a==pw^*(l{0P!EXzP1RC?B(exO-F{iUrTYe2zU4ImiLf11};yf+-I8g zmJ7S3`0dP$Jl{{aFQu;8;g|fD@d{_2e>zI9J&(E{VzwNca!)Bme^D;lrYBx8J zmom%4tNrf}R&Q2zy3bY+HT?Vec@ZhZ?Pn3SCe0YETZzkO{quKmY&1}@g?X-6^q*<#>}cts)mj4 zKYJaT)2+Ia^l0w+0ioL!Up?n6-EZ5Bu*daxg@oS@!zSK(oWL)QnV(-<&fX5}R_-acv%09hT;2Jy&v-+}vZ5`liQ z^bWkk>O)TVsrt7xl=r&;-wS%+WM+41DUUIDj&DV{rFli?V)q}|Vi^V%lk1m?s-Jv{ z!OqeEw>UW`RFY#@H?GU{t50%Xqcoqb{AugP=S=M<@BTgTK>8L?L+RPi zB;S0wfO-%In3w)-rsjwD`Z{UI=_q6HqNIFKojL!$fJiXecPI4}+j%@Q{g027p=LOj zv%Y35LGbUfZ#%yXbcUV?8n$uv9F?ncBMSOG9~5GC zMH6(IF8^<)tw<&63>2{Yz_@GO8Z4a&dzS?0eFJDAl#sa)m1x*KEZMYuTC|b@lE^$* zXfY3oxTVB8m7}k04ht+GrzNHk~sVvIEv8fymks+05Tb2P} z{&8E7M)Yf0oCgwxV+}&*MdiXC9!2xF$S@Bi$I!M2We2H2F-u0$wQC+`_;u+zKrD&p zIz*kWhkTrc>k#QY4;nw>O)>~eE$~Vvn&wEZIH?(ho?D~|lOnRzgF-w7Zkc0RW?-WU z*_(A+mCV6><@U=j*+IVIz+>-D?gv08(!3>Be2yNsi-(>y?YI;oo8%Ale`8~cnKCh| zf5mtwi2qbvG1GtC5TMctPoTm7=@uO2w#~2ryKRu32O$Q(u#I(FKv{C+t`DCfT^D-> zoPydT?J_zG>~A)MU3%ME_y-V0hnN--Rma?v2JE!cX3Xe_=_pti%`&mH)pAq?Uq|Vp z$#76i+0JA9Z|$kGUuQ!o6!TBMdizflcgyELR+{nSft6O4SC+gQ7O(99KtMCbktta& zI&9vmZI3~jiPG`}P<8ZF>hp)bK~`8jMdt1*DldPh+mdstov|SWcpZpbM^|IjV&k^EHl~FpL+U<4^ zKS9~<(hxu%`(4%z?|K6Olu?wB7Ex3=b3B(8q<*2a_O)a?^x>h7VPrW}Nac(JBw1pX zD6OSP%w-^DIudGtc(D~aiS|m05E{fg7eX6vgpmXi+K_VyN(Pp=8G98;u1C6pdf|D< z1@lr&ky%KT80o4)H?p8EQKvJT0*f;S&b942GSo324vu=h_qi>d4L*VmKgRh zf&L|r2?$(bu1phNSn$C$*$cs)T#<-(4fX`ih^_379X^~GFtR|h$QY+vqkUJ;ME8W* zR@jfeP@Zf!%skfK`Ee(muF{%-7Aw|c9q(Wd0r70{h(V95Wp_TIE?CZIf@=84eax@RcYq{ zBp~Kx)^Z7~dHL%4KI9rohT_x1AGTueEe;$BLeMbudA0RDznG>jD_(Btct7^eobZO8 zEoR&AZeL|I8GbQ!9xZ*y(wf5dvNt=%HJldYe;j7f`*f(FDz$o@1H%f1%36Wpc&-9 zB`zzmUxoAk)C!;Q|9^0U_Mf8#2~ewP>x8<7zO$;Y?P*@CZEOAsblFN~D%956HZzPh zyf20|G%aL>6-G3&fhr(ZKdT4_d+Z470%>~j@W zXUl`Sh7#2a&}HeHEw!-`!v@MP*;HlA)Xf+{pENVo9(7pa_DR(@Ti(H!H76=Bdl_v? z?8z5Lku4{cZq+qi(aKjz0PKpK?c@cOK#;qmADU*QVBEOJmM^&47z=F6jm6oU!JzS@ ztNyYJ48V_2?RFBm&{Wl-+fzX&PmDZVg1#O1Ycxa5>dy! ziBPm~@JRoYs-YzJM}524jI#Lol0*N(Q+`BSeOjWcH7ASeT%~Q)13&@H-fe!+s8&Ub zaWmV|>c&x7+4ygJNOQT2(wSnyqd@G2x2cnza?B*+*vY2=W_>6N`jyGTNqY9LmcD=&5139iE;mffvi zVxCSl1wu-yh)B*V0$?_kLP)gPhzN6)TKQ8XS<%qxt|tb|bYgH?2|!6_{y$uuLwJ}$yM~j- zcB96&ZQHhOHjTd6cB96&ZQDj;+de(lIh+4q&1zP2&0^lUpZfvDmiXa)bZv(2mU7L! z9V3b^&W>)5tV%&_0v@T9-36}0VFZJnPwqY00y1Gn9R1=16D89#9O=DcayR;SGRV{d zyKX!acOxR&23e7Qe&r&;bQKE1!*oAYWTdAfP$3ZniTV+%B@Lx@^&$*2q!ktP6-`v3 zo$yWDM^_3c^-j5K;qo8)#t?B4AW9t~YDvI=vvPq972Yrc1>Iq61&!+E5fAHy_2(RO zza9h*M23~#Uo;0f+u9HbT^&NPR3^dxJLKzM)H%f@Bo=m}bCjSO11yJ%Fy}e!?M-Ex#GKnGw5jn@W5J>erKWWz9hOrmX8QCRqgWjm(_59L#5M_?bql|)tP#~KHR)K*KCg%<)}_R#@un;_9^hMIt0yA%Fbh?X*2F2xJ;{nKe~N3XgYWXh!tPSW zh&4z6CtsYmbrdpi&g#DvOjl?OQQK7hy7<^7~#ULpgY!jGe&erkQJy9xZx5&%ak?t126CQ@XejV}?1qkkSk8am5W%ya_vh zE(n(h?gp?TBB$+l_>|LklYPWidisvMM{wH!$iG@9yW4a1y8{UdodW%BawOpNL5(NxVS}9l0fN5ak81UMkk>DzS41PryE-sa5>^LxiByK! zP$y?SZ0K5mEz9niuZH-!RBfP;P5&ygh|9b2UX6ygMgaVW;BE-;71!tLfy!b53-|OQUm2`k%68Wb4lbmc%sPAR>hR`JG$8f=hc?VgR^}0;yQ>&($+9Tug?`yU0Q`3J} zEq5xv{|T>_HkUeYzizYrdwr*nr8Mo{_Lw~|<-?P&w|p~J$zbcq>SF}#JcoJ!zchw5 zV)^vzozG4I;zS}&;Ios{2d~?%KO9HJ@mP>!}3&#=XBNGb=jl%d>Z@s*#U3o z!_&s{Y4&&bkMI23!nTC|+nG)*{mXc|LgZ4_FRIJxjfSgZ-0dr`L#SB?ybngjyYgws z7>y<_^=@ph-Nw*XIgDjrj(=`mK;na<8vf4~9{0m}-`*eKE>_`;zw7q7nSp%U;5{^b zdmA_(6o4L#+Ta`lVY9P@Y&>e;z$H ztrU&_v86x^9>rIiPag5Ba?OYV&t&~Iczm&Lv{!{;&0*VZ>rAqHuu^)Ajb-Oa_4Xdp zia>-muAqRuYpS4lz}RRuSL=%fG<3N#7aqqqRQ2kn5ly)g3-wl{D;ritrMW2iQZqj# zbS~Wf9fB`_ejId7b7pA;_|;|u!|Ck^qz(QL5TV zf~458$H<1tJKp5u(k+bS*1v$g8RP3FfC0zwJ|wWcy_^Cj)M+pv(&({^;%2w`y0|Mel2Lgf%0s`WkDlQFyoGS13k6HunVVpoyns4r5>QI2n6faG= z6a3-jEuDLHas{$fQs>fbA*$4LdU_OgyreYevdu0vor}(ThRu@j2t^}uE{s4|Vdp&K zTUE||Sz(d%2`mxjti;42GIMVFy$*+unqlDR*ZI*4?^%2IS-bC<-kA^Zw)tcDm&=dl zh`yuO2McsivLICH9VJL*(PJQzY21}nEEu~e5WWG2tsFaY*^-L;K8wofxc>D9@=2O? zMhenx344R5moV|x|8NiM8S;UJaZh5^IBq)x8!m#Z{2~JxR}yKyG+RMx$QI7}(TcqV z027O4qgP(a1N`$uzu?Ir-4Lu(xa=6GR7!puh-n4-LXg4!dBGw>WdS6pm?wS|iRRGf zjwoT8gd9Xt0zv|RP@_CK%-BwK@3lVRG8GQ57}M5&j7i_uQ~H-QE34;B6@ce#1*Pj{ z$lpkG#@GE|DJ}WM35?Gegr>jP%Fzl5AhO-9dTK{?LH=9Qb%N3-`@da&v}yWv1?&d% z>s)0&XRq>H3j!F{06za&@$p;!;SSd3?32i3e{D-{H!|Cu4;9PolhEWlR}%Kdn|`K0 zKW-{bOthJvqJqTaa6ZYQKQn$Km>IhHP`-H=U*Bm|?n-Wx(By4@%hQK=i@+lq!5O^Z zB>y{vCx(|qYuad^jn@rt?AzcK*>bn~O5^m+NNzW_jazp)uzKatccrI!Rrx38>1rS! zF*>znFW5i#_X}-N$#w*{tmG9N1;R?lmw-*C zSnxi$6hfjKkUb;uPBnWo**8#4I63HCdid$bS8caevdvT_ zjNTg!)UUJ1%m|q(+oxwL&Zptv;wv%t1vVY_5LyCH01(*_0B5rwZ;QOrPW~8{IosOj z7TeZc(bDU9n(+@qD6C|masNfCYS(gZf@XH5snxb^)E}wy02h&kc!&HNh$!r5;QHVi zpl?UHZEtS0)}q1wD72<*QNB1G)zOR*luX}kba_o_vAX)eppyN$bx~a>*Q&9~{=N#4 z7^o2P^laLSJ!sHs1&pmVbv#NBI3`Afw_2?NT7myM58Ge%56n7N3JBtkkMXu!sA$|2 zE`mZ7nmEFX-B~k$E6+;X<*dgCrVFw$?=u+faW1y%481S9?NsjzbB}Vv&Y}0Zh}(2?t;TUnqE*AGlrw$6i8!S_(D??g^t%80N#rn?I9n@bErlE-mAZc zfPJ^|Cl#*Z_TeiK`1{lUmg`h~%yR*VMu$25(EZvPv99YJg7TpE^5y#jQ+)F=)Nu1p8YzALDL$M$aQ#QS3>5Yv*YX2VFvedZEm6YGl$XWWIr40k1qi zB_%k@bOTyjAD1RZBfP-ctb$m)%E+wHxiTgA7c;g6w$LV4uqb-2;;5*0qdrOUQ(L#MQV_esAf}C%B}l>DYjY?=yxOIoBL1ax zea!GtOFpeIrNAbGarIe5^iX}-b+YK~Z>W4wqqpRTxyiw>!?E+9X=wDO}F0MO2p@%UDk87S9nIxH|ZXX8cYiltUhM^JS`wLO6ms)?2F?z*d_3}Nk37DUhJhz8k|qVApukWV6O*8j zCWxXyC?zzCinx--3?zalNG6PUCP?3#l1PzYo5GEf>knj{6Y`8=?#m=dxF>om3qB@P zOTuu8#>6o@Mq}nBYO-uweU*e#rWT|AkI8q?QdlVMN>L!9DEZ zO+$hcgpTY*N(m4E7bL6*Fw{gKBK!s;DTIiE3;`P!f~DB2J>!RuN(7TY1Tja5$85-A zDuTG*M?VrOyaEP@DZ)zRexuICkrzS8^sjeBJl)~d4G^~sIGcf|b42S3CD>u#@Nb`i zeEN%W-^1d8*m*5%NlPk>wquyv>KHa7Y)RGdeXUQ%gKj?ukNdB|HA_$ckB1+^N}nax z9g{kB*2aIgP0cBqV%S4~fJFTp()>tOZG%Ej{ecAgzg1Iqw&?#_c2`&1*ZJBmT%XpQ zKXluIg<~JTYZqv;tqVuTY2)&vnk=-RZ8h2ctJ=N11O<9v*@&3ZATjia;wi(#C2_(~ z(ByFDz~713O9U2&1oNznapaOj0Ztda>-#@2866x~ymuXcSUB#URoXc~d*qPd9|cyg zF3uo80C5lyI*b^mbSLGiqqHSX9-|C(N{hB^+$nU}kYog0d3uv*mT=J#x_w!O4&kW% zC=u~3M=j>@J27Fm`zV`huD8DtA@?7MvZAi*&XHUU$_=ucQ#g5D0(+*e(~cWS7R8o? zG2oJ|ohmT`Z_D%)rU@m|AKF zi%2dKGi?+1#g?7Iu|s2uN~+dYmf~iR_XHe}35+=; zc=aw9QSNY6;d2vl+vMDhb_g}YR)X4*R4uLJ>jP*=oCH=_N9G~Li&7yS8`5YY)CKQk z00j>_=J~XSw!fj8X;%vSySJUD`c9HSU)Yr~=Uyzl2}1V6ylGkA>ek(um-Nr+7kdG| zikKd*?w+tzCf#eeeoh3;4=VAFkexaKwkWu`{!e(4tpp;CO)5jFa`nD4LLvG4X;jVN z%mtc-9N&d#RAJfECG>>vn0FRPp$k+80Dfzc1ads&iE^dDa9FqT$f6p^IfLjmd}WN1 zBp;Dl7}!YVBPL9sM~uc;S6%5^ye+DlHBp6rblrC;mg-#UrN2 z=JIG&@NU64;(N4=zZ^|?JDiaG4Oe`O-RCX+cV`=)p0HW*xdgZLFmJ{vOv2@^ZwZi9 z#nCi7x5WGG&&<6U;mtAnME=yKfL5aMhorI9cW2QdR?>)gmjbFerznjWOe&K&G0A~~ zBGK5I_{$k_SYq+HJUX&*Gw?@`DSc1FpNDX+nMhNN#C@p#qQatmqFBWL*KyZQOz4$4SsFlz|*g-Y_Az z((St+V*)ApO8EZ*Ih7W0Tbis0V!Yq+g zm|aS@sz+*h_KNF=Cn2Jo%rr**Q~kybVWzyI!%p%oMepO+NkUQ@EdUU=k3_Nxxf>22 zw@8IV4vUXW6(VJ|y4F|UrfV}L|GImPE^YRNDz0XRCadaT+8(^@a%|l>H6c#mVJYB5Jee*tc%Ow=-KF@M_A_vJHGM2kJ zm45CGTy%9+U-gw??%3Q-f4(1O8EE^qfjM{sq`aou`&nQTJpu+g*MEYEV}FHL@7TO> z`?3)noxO;6g*zOsKR0^wbZ2jmIPCJ^OFn@-sBAHrHr#@3qr}=I!=j9M03l))Rdj@~&bK+cx4LG0V@-Co13Axe( zItHP3S`=5Rcy)E@TW747GDkM@G^B;OoNS}R%qJZxBSqtMjlzh;)F<9$>9{WG&V#D_ z91EX(KS3M$QB)16rk%s;z8jOOz|Wy&H%CUX734mM=JDZQXNgvB{YgD4F~ zp$OJ1MiEafr;dBz`HfC=L9iZKt!kCxk|SEGB&{J~u{c>Y(*rT4QA~ttmCKz;-KvEa z9uRBT8AtlYE0wwx`Xe9y_bxQ(D>3gVAFJK$NC8W}ytOdMs_IUn!Js!gAfPdpp_y)~ zOPP8nmZV+61NbOau8K8nktRcR&oEcXjEXAp^ zS(Zoabu<#K+{K4gBwCMa|T{W|> z^m<0meiUgnJ!1~rpR3J>X*ouvKm;s!3rYL5whvh$1Db01{?RzQs9h%586^6 zTS-;^^c-8RI16f$Z?ErknLA*!;ko;L4aT1BUcC5Ajqr?>iPt0xpwmw&lp&+?Vkb2( zF;JOYq@Lo4)QmlPbx^7YokrLezN=1a|32NgEnJT{?Y1q9HpsHp+Hglr#oeEtoV6YI z#X{MirNNMcEgH#FtsJ^?L)=p0a_Gbph!N_E2|Ia|@dVd#%KuMV|NiCh9!uR;&e1@J z7J+?^R+%0a5`^&`5SK04BraW*G30hyCahKP44QNAjx+Dx&DB~w7 zJxyU$&Bcyp|6(9wB%4iq`eLNxaO~_EMIuG!bo;dWw=MDuG!H#1s2Yacrd}$CYBr^R0o#Q7d z2wr42qNLb_L$LeGr?Cj+&*D|3yHQx|gr-0vD8m&{lhZ73dVxO>-dA}jf%YK4+>GQ= zJ*e|)&83?Gtf>te(~1~{-97~~PJP9`eJX5@=0`BgpsMuul(49lXPjHJfgOxM{Xka22BcGT&fv|FAa&~h&GjM zp2EFoGRNi%p}w)Wn8y~SWVb(~hm&iTgIeTO1ZhcQing3e7QHj+K$t4?&;v@b}NuR8xL4A4USm+?e7US^4g+{*M3pAg*CW3oF zW>z|z#aYOXD|-wAHLXUpJbatvfBhGo9($J_a)sLx_sT<<#iy};z;e`JiONR)3`GcH zW4B++TL!=THrfF)K?z084HgOa;VETt_wbKG>Fe`@Z^hHhdo1Z}^4#icw|dYlgC(8p zQ4TNg)+>_h(k2S8Mj-v(KcC?@z(%hFPTD7EEERcz*7@!6Nod`;`xiJ&+Fv}sJTS!| z?^E*RpAC^R-dZ_T2+Y0tFiU^ucTV-NsI_7{`K{-Z{M2;O*1KBfdiT2K*Wn!;}q*{uq z+34CSpH=u)z2vo-@7p;xzWSsfh26kSn;P4xf=u*I={h?V3+?Y)qgk(Bna=}9JE$>d zh$Q7*SCBNkk^&n&bI_*6wm$Vdu@>5MV40!Cw$-3J?Qgl^3iULjwKb!CGAq4vxIuBv z8L@XVh9(7$>9`?^EAi~#MyRHM)l`&lwK&l=ZoMT?y0cs}x6Ep?@=EY4R(9NuMCFV8py|PNb!{E9IAlJSZ?mxl{F^fJ)p~ z^bq_y#Hk9E3&Tt=+86UWprF|p=Z9QzA%R>;5-=JHB}q(ZnJo`jl8$d-m@N45ID*I!-JIQU`k?+*$w|pl%Kz7t-G; zF~tQ{*9dY@0+T|eVRM+3BWOcX{-80Og}9ZQcodpIpkId%-}LCL9b7tLG}3wJwu!v1 zw7y!le4=j$-DZCC{Ea_Iz>R2s4F@@g`_HGUEzz$V*5h8i9hty@xfEPY5#(N6I_@Zv~1JfPwa)EScDf z0Z}{QKSaVGOPHHXLcKs zZL`%5(`<}kRwr&!W}{gQv{`#21Za|V7ui0{1QC?=kW%PX*cxq=YW<)$U)7M~rjk)? zR=1XOa&0-pG{|TMmGO1|-uHb!dKMNqt#u{2y`&2CQatF7Xq5zqB2nUZ#_5^I$s8Y| zzMmzXwuoe+k~nNYDz|wK!CP}r6`gl+pS$R@o^_5$*Y-Pu$4_lo>!*%(w~(LBaL0}gYJmn|m>-S0uZ`GZoC=@4e-p-U^FJ;FBmdI{p< zCSezOD*X_>)D1*TU6PwcV}qX_BKqf2>b18uHN_p8yT>%dIe7JEwBtBr6YB^(iR-aLRzXFivK}x_jhq_XLOk&zY($o-R=aC>(3^t&dCMOP zbd-(b2Xruvl+SjeCPqS^L(KOZYUA&`QJy~3I&QQ6-ZqMZ`TU^g0ska^Mp`(+(sClV zL`;O{HQbVzpYQ@dtjwWl90lN;0_l0a!65BE5M>C+V%$0g5P z7M_(d>ti7wZ%ANyn7IaO3WqrDCzC9O&Axt*ARhaoCrU7z%Dal@>9b3HJSQ(m6q{-% zsw(J8xt&|54_6m>(tblK=!xsFnX6M=xxo_9?bhN)bSO>a+o_`fUG!zmbn~y-0-hnzPY)AWHJ{l>X-SO)%^F5&^}xZ^o2gC7BQ7e)ZPF2WO|_5nh0c zWc^R}iqFuxkMGbWi<_C~H7yG1Gu1H{+n%p;guUDJPQ-0RUp7SP!fPh|IsQ10HwaQ= z@zJq|sD7s3sH!1_5h~xGP-o9mDazsj+k|wR;+8X+*Zru9MJ{4R*l!_y(V#CiH_Z%wZVi?eB}{-6#Jhe zbjPk9^XWY6!19EaX{_h~Sdc?<_qkVn2aO(#S(RW|M|uPU_QUJz-!K)n?YJYU&+!~E zKz&oS(>55jWR0#`&*9yNYVY_YKf1=JcJHLTy9ka1lJo?60YlpXfW>m0pi}kLE=WE) zIa|V^&+lPtQ_;Ps{#f;Dp7490*|cSIe+c`_-T+cZ(_KH-7ylx#6gxAVb4m60W{Mj)*(nHI2F>Z)6@!K1qW0(v7x(U(;PcC_1GlKC}<&QFpb- zdnwcn1?=1XDRQ?9*}xy6o-31gB)72KcO;gD&WqAFq#EH(D#3TH%r7U{-Jc*g78?G~ zu}q)E+yga-3M{5wd!z3x@{S|C2+#bncikSyi4%c-&v!7tZHi4l$%ejU3BMN2t^#f# z81-ZBy5*RFF1Vp_w5Ua@q3*$FgYcUxdM~6XhJc$$&aY`tJD>2iSJcMf2@Mgc{^DPb z4|Qi9VEbOaZ?-{SA_%Taz>p7;byu2V{j`dR$(F#eyB{6+?f+5xmFiZiiNiSZx3#9| zagDH)gv5_@$>8~tVyqR^!WiIU;9#VnU|NLWK%n9btg4WhuAi~mS_GzPEj1>Ra$#eR zB^`Z^AB5eYwoNPbWs~GOHkO0S$It1L%)891(Ko)k37&BdhbrteoS${AdMwdASa9sk z?NK_DOav;#rY>GlKZ1nC6)0=a<&DN#*dn!xWaMblZV)}A1WZQLcnn`2nCHr_pp|bqYL*89lbt2O2n+n1XXi}mRrXt^{OK!}O@z`ibKnc=LFE@WK ztNbl|e&z&I<}C&m3U_PeoK_-bnN~E>oE8C7mdUpvoUE3p)6rMbP85rhSmjU(;4G?e zX_O^vh=q~a?HP*OrYq)D%77%Rc1h)vNSqyy28twg2<9t{ZB4&==d9DWGj_mb9{2qL zA40K9%;K`z==G+re8k_t|I3g}iaP z^EE;$va~R7%T2E!L#ZYMh2zFqqW||l%rgtZIDcvoa9!a85^Ar#cbG?mhGU2r9xaLl z7j;81_^RBOo;3%r=JfVOu4Bs8Cev!p7OItxE`8<$ z%z3&xb8a`|!Ybj&`QJ-{nbk+W`ewW)B?9=Hvhg@ux9(PZ-F=aKUZ+pzA-TErGcQZZ zQ_bNiZyGO_9XR)S#nwPTZj8cZ);+Z=owZ>v&SLYkt7UudGOv>D<3g zYW)X2V4sQ^^T>xD5K9N)&X)pPs!z|5fne$H{H{PL_Lj=C zj#|7~f}leFm!*tTmYK%CAhR-Tkngqi_~QdP%Px9H`eUDXePRdT?YeWa%(MGS{A8!^ zd0<)RR&7|EhRbNd{U#+TC4JMuA``7$oeoET00lLK_ci^vK@qEtv8=GW{Nw4MP1go) za^jw^d)nT4wz#R2W;5$O>%irWPSj@oc9&nqdHc$?(MICH@onyqM~<#Hu`b)KHt zkCK}oxL%!vlgb6)%n;k5AX;@a*4FNE5DugvMd*WhvMs-oNxU7Dr`+Cndw=)xk!^95 z^QG9tvS-ae($&#(ca$71)i(w0EWyp1#64+;hL8w6e=IQCx-``;=FjzgjP9i5+BDrc zYssWR?m) zL*JMY!S67(Pt+C^YPZJQ7k}mr^BwMuIqj`8N9uK?Z0r4H+`h1HoE~$?V|x$6$=)&9 zwp}-0XTYRwgdJ&!N5CX^v(KUsSS-l8HlE4{qdS2JY+jsadlIHFNIQQzNwARM*vz_@ zb5}n}ndSrB#e%1!ga0^;`FeJfPEfps4GWek%zwB&89yn&x6A=ABhyZN6CY5oHtufs zUoELF#8lU{7l#?;9IBmPmLH21wRq(LF7iAR+R7(qOdnP5BHMpB*zYbf=+ryWd3>fa zzMFRUw|R9-%|;*@l*(1;;U1ck0&mx@vk^tpYzF|++2rBE)po}ZP*e@~2ja4!}fk6)da_(W1A-{l}n2MT=S*LEV5q^}CDwx6paPdGNhYcp=g zvDzsehF7E>j+opP|ENb1dn$Mb*Jhn67^5rukPNYxRS#3_&rC) zWhu=;K?rB9cn05)$Jpo>Jlv^Nws}&9A`sVAfEZQyg6nC+T7Vz2ANSj3$&r-S+^#I) z-H=93%V_wbtg;*a?bQ28)jr}WK1`Gti$+GVY(ZJ6O&dpmm{cg=BUu}z97Sr;I+;5q zOY-~X&v<71?kc<+^RO|;O4TfC6{AR+3W@I= zGTlI*t0@D#c=4YB*k=K{8+3_MNq|I+blikZxv^Z8PT@XMhVZD1-GXYXHSNCB4U_Z}Z)Rt8_DSeSuFsijVo@G1=r6Wr^G@0!&b}rh-*> z!f)n}@*G&Hxa{r_|cVu20o{v>aC0-&w z@mIc_LwzpIn}p(I!@F(V!OpH8!zTPQQzz6f$B*RrHu?q>=0BMmEN-!V4x>?VAl(nb`B^YWkGfRTC*s)nqRe!`hAXi#7 z7%|scH54&F{}{_!FuDZBCtNTu+z|1*A&j~q!mA-j zNDl?`@;D9{q8HEgV)&Sfy^ZVB8qSZJxrE<|0t5` zT!^VYu4lyb9ctHJw&OtDYp{3d<{fTZ|8J6^@FO7zH7L7;uz5z~p+&-WBJBeZsBEBA1%6TBtqLNkO5m)2@ZSF*VxuTh>R*_9<@H^EToU+?#Uvbu|_ zW){_VX)zrnbWCgMw&Ynkiev~Q^wFB;Oxcj*Nv|gTfTRv&e~f`<>n0)=9A*IcC$apb=eU zGDgIzv%Uhhc~wg`REzo6%A4!A#C1;>vwDpSjPWLWCsD^LOP<`L@isT%39U6-&>o|0 zUUU~ETGXH!uO4aPgP$;#1d0d=x>U$^iE(}3oRgXTRW;ZS^+lRL8tc?mM?WZef4aT$6zQ44g}HgQlJrYA+k zQ$x;{TW#c-0dLKW_vH2y8vWdCszt zyIiPSmhZH6i0ob!`TPf3_9Sf(Jnakp`I9 z9Zva~AxOpLYQ0eOvz17*h!n>hR4 z#g2*IR;&y6K}$_)HEQCqxDmmv_P+w%jmh+j zz?>eENbe1zu8d&TwiUR?8U%cyMMJp~A<65ZWvS-cNLLnZ!&ik;!fX34Wbq9{YiX7s z0J1g~q2@hkg?W`b`?kugl1)~j5Tb_HM4}zmi5<&(Vx}Fc;kFZX<`+?}5I*%bKZDAi zCQn8L@dU4L^GiK(D>}b*dqw*|qHgHkMjR`M`4L=xC6!5@-zC+UCCKtC#f;*Y>&E@t zlz?ARcYv1G1Q{Z__{R{N*XmjPIEj!BK!Co*6pmw<2*9$p#uV9Q_q&kTb=R<^4N@hC ze&&+87QEQP3bZMfmssnSG||)+GyW=k&K6t4w&2}#(y-kvT1`05xU_K6VhHFF{Ij6Zs#U{%#Ln zFNyZWzZWrSSd4Zar7H72*KQ1#Sz^=%H}yha5n}=xYuHxqFV=Q^X~i8epod)j6G?)M zT=m;&h#79DpSu9r`u-^Y0c?!~QU`dHSS^jWdRyQ?Z3Hqq{!wfag~lb3Q!GtW05NDW zz+lU}=txwTEHCPLGQjEm>X+aOd<#c=ry3L*I?L^WIp|YU0!h$^qZ92J`sJUsyNCaeoHjF)7p06S9osg?BXMGy^xVW!a*FSNJS~!^>^7 z?`DT?G*=A7_9f=s4=&6R0QNb}&J#@q)w3FCp`6#b%uf~gN(>3+0Qd#EExLb$ZQ|nN zyLdli-BXLt>LLpV`tZEI@?ke96V`E2CSjyc7?06gMVd!&5R2=Jk|>QPN%|s zu|;(sA@4O6%WSBe7=}dhC5Fr`A4{!|?c8{i!pb^YDx=1B>tCIBy`8rr z4gO9Fg?9AD3ti)Dc!FrE2-VHJD>KRYFq z=49F9)tSW}w`6PlJ-u|Brr(OZDS|O#-|;9W9p|+cz>i!9XA81qrX?)ZHHo z$49LPshZU{TvzQ}#$H^F^4RpK4~n&E3h#RZsLicbe~+l?7H`m}l0~X%+-*w_)|DT? zrr{`9WJaV+nr-OT#?dPTOCJ!6Q;+Hzb*yNwUhUsi{(>%TAaE?AmT${k-S#x#HgH?Z z`3vwDSF|0J&0nU>7Z$is9!=R1Oczrucvm^*bZR=oDicv@z?H=<>buXa?wc~5#VIe^ zjTdj~=7w?y%Q9uq$d+JG2;iqvVwM-0;=|>VXpFRKlV6xWQrrz1mp*Kjsklk@a$%Ky zM?{Z+f>ZvfldG96d$gFVQ;nlCD9EEuS_r_M`s?xo{tmV1vrPWDRsX4o_0vlROeFmzPzRhk?&UDwvQ6DZ)n{pL;%yC*B*(tdETeTqCL>c5~p*5k!Sz}1`#N5SY)p#mcLozZV z|5BnUo|U;*?&y|!S4)Y#DROgE`qDRa5<=wJcjujhs(YuMR;2M;f9eF1Jn(&79+%MH z2b7&26+?}(o7!eUwr!XG28>*oLUG<@@DTpg7O^@_*H(7#hl6YN}QbhAe{w~t_>)v9&s$}%L>qx@b(9=Qlxl=7XY$y+vn=$yBjL zw}iU6Wrh-ot0WJPPnM0>0EPw{3+0xDrUrjWvL!jg+A7WMCW3vVOqUf4nS@TTR5+9H zFNDBbMbk*u#-HoeSQI^c$bo++-{9I+L_;AAn$_*#!6G#8dq85`1qevGM*hTlhuh6U zT+@xR;)V?Oc>Bg6J}nVqe=1TC>yEdL8H7UhMuiu3P@9ICBWFUGyQ}0n>vS%QE6a^ zeA_B>o|r4ojBivXYnv>yt$WGL<*Y;S+p2Rgy-jBQ(II+Uhf~0EC|?^l7U#HB0is|5 zsNV=Jh@;scAyXwc=`|V&%~6FO#cglCxuQVvj2ag4nrD?ABl5b{=KXPc&dWnZwxgax zi;#k5MFp4-6F|5ogZ@evTLlr3YHay{ir7PvIe>2MUMnL-uud4aK9js_+c`?iu9H8* z*7qa6k`bNI&QEL8mTs2*%sd6-%mNp^O}&f$p@fXC5jn086VWpFRj-B^z=AEWDowM_=YsH@&nw}snu*4ZfGetRU;@#OV{P<@J~bae@f zB|OPDvKMPX*>j4NFzO*+G}rO>C0HkRwumfg1JWk*V53iY8B0#{=xyzEf_i|eAyQ#? z4@EW~IcP7Cn=Ro68Jsc6^%zU{ARb~oCM8+nCy0+UlXIp~v5gry4MmG#&wr979dGYl}b1k>}8`(!Y+odk58w+Zj z#9TU2@2nBy&8XM=1wV#fV6^eaifuP)( z6B?;>$XaJRafm2;l(+{|Xw(OxS1s{qEd;n{fFw?j3k6)FReLo2`Xzg^A&~&~&G;|z zEezRlVd;ZWYbvG&?+}CsE6a7*!NL`pIdBogF%Z(UY0K$|Hy5G>hBJiuWBDbl(Ga@! zE>Cs>>2mgQ=TDOu!2s+L3mid4_Ia*Ow>O>a;0L5xFw*i(M}%I{rI|NIJ5>+@=1)NH z4MX`9$75ZWDc+|e@hPc`kD6F=o2y#?8Qru&6=%&BFS5ZTQCmB+#vkn7UCdL#(4J*$ zSodg=nps(PTUjgEc&79S;Bb>md=G4Vk3!yZuxAySN~~{`-ZU#zjV4QgjxYzt?++nc zIy{n(3#i~2TO*UwX1q9ZP7d;LNpHXhLYuPbh^1)A-|#37@!bCRy5g5i5qCSr2YY*^ zZK}m>K9told;eD*%-`c!?$8U{YjM_uo0PY<@Euj$Ob+MfR;D>34&VBmq8|kE@Ic)# zGlJpl3wuMaR1x5uDg_Kqd>d=VjZtT&1r|+B#ra{f7z_I4j{)rLmPu1d%nZPs;!1v? z)iT=4$%Dy;EWKt@2=?B@`tj_gCFb(KN;#(S07wa^TP`SP5>saS#BaG zj@5RH3PB_7&IYZJ_z>jyH;8hXr+T?^;%hTX@BA#T*sK(3RPeVRxb_G5f;iJ6y5Xc$ zw-IiFQ9^*uavW~ko0x1Fak#+s`!sB%|KZ|EVQ96+vk3gezby6Q;qPo);8x%6(3g3Uqk87cs92DpDIa(d^Vvhfg{ z;`{%hDvTh++!!w?kb=b5nJ~5SS!O;nM3TR)JECTS9##_Z)8F=Ye8< zy?He)g@Pls1dSc`WcydeY;Vf#Wahs~&IWP-l!`Ne7*V9TFJpWJb3ShU3q1^3<2z+K zy>ej{EWkf~91{qbx4z)&T47l`Z8`W;wBFA3BUPr6ktCa4^Lc{L%@+&tpjA;X7H_pE zfA(gDT2bsJZLk5#L)s?77u)KZ9!u&sP0Hl_cqU{QzQFnTH!Xm%BxHILrJY|eL10K8 zq5B5fD(t;91o>Oa>n4m@(%=U>W7%bxq(gF}YV@7sFXB}|*lt}gi#@MF2r_+fA{|{csmxV)jU$-?t}KtC`m9MdQb9N<=kBG=iYDm9BuW`)~#_2+3+I4Ys)i7 zx{``2q*@!{2z~VvD$mtPlxTCz_W^N3PEBhZ{c(dAShpuE|l|jbr zDZ}HV=9a8@8*OrpY_ZD8^&US(x$7a1fSxwK=SgYfV!7X@KuSC|v|zj*(LDOCkVCJ& z4M3QN_@J(bOW}b-zNmA)#e*;zgK!{~+`?avGKEaX*6LU1=z<96;Rf^>qjX-*?sWp* zfKpG}H=6*-_OBSnFYwb(=!PqRlE)YLwy!9s{HegRdUNiFW*#uhm`FxLFw5YkzNS5CUW1542VfL{NMI#X3MNxg(ME&H|ZdS)M>VIc%)@IUzzBvx((%)-%Hb z8auzvB$d)6Fk(^DJ69L}xUX(7WzzG0C#P0q`|gC~#%H@gb??Pr5{NyG%>Vkw)9+vw zdhpJ~6~YPR9U)tW?`yLlbav5QWMNvg2#v>!azYYM!3!e#Ir^RCOYBvAJ{%y%OIq*y zkst5GcflH?NWTAUO0thKF1Q;%`+{z5C$YudhqveL@W%=;X59cOyIJen4E_?PerDZs&!YQ5eL4w4 z#Yn$@Qg`YvAbTR}e2y2)|2zi)c}^_klWbqjjs0_5Xx*8A>zO7=wh`e(_HQ(;wK1~r zwV9mEkTjk;c2|UZY!MJeykjzFRa+t$8biYEMKQsODgf7)v@^?WpEuu@g`Z4Lea9p< zbDRL-t4}4&_1Rx%#d|nQ^(EMq`}XUECKv9bMKU+U!3$$*RjF!#H4>#hoAE93{uFl< zvC=hjPCq-0shsvseANvt!M4qUtYj5Rk90s$agEztn#8r1F9v%jvdG zAQ0c~o)Axbop0UE&!aNhJZ7WmZVM$~vGB zSym%`AvOwdhnJus>1E_DiVu(v(_;gGza`&jW!%^Q)qKQw8&|7hf*f`?p_*o*|%suk5ULFRUNj>N~U8!Wco#-gbOE zsU&_@%r6-8IG|^rEOX|n5H_VX(oln>)KIc0T_D2q7=e1s(TxK*0i}yONr}398Ubwb zaBi3Spn`TtEi0lf<|xQ*7!K+oE2y>abK#SLQH%QzW=p#zU=v$e++J&S_<#&kV8MlMSJN;`d^U z#co()8IR3udeuO>_h&sAZ{QA^ZV6$zJzXhO5<>6>fPt2nQJA~4PcKlZwxEHjC^%Al z?Pq8Jl#uXc&-;GE8`1-BdAGLeG_*VtCQ)C&ho>w5_D{`bICI$gubbnz7Lo%*!cE6; zPX9fuSo`wt%T+|KCU)QnX7V1D1S%a41vh-(mV3BIkP*vp0WS#=H1=)0*W&SFTx_6) zfKy&=Ol|etVTW8eizkep*9a;Ijwkdl^PoqbC|Wg7lqw|5OBf6B;R-fXMqFXT3Enus z51fi6O5*wo_Al6o@)fFUdk#EPu)fk1$&KBpGx>4ELrGc3OG1 z0%;{H@>KkOmMG=u$?{!oYK}mUv~(lI#hH8z64tD_c9>HPU~OMS_Uh{lEtb0Ny*_-^ zo*^cD1!A6B=g~5j_QT9OM~FIX#`ZZNPfc;sLDe!DN6evjV$%IKrjW10HdF=u5QCaC z-GjWtlvkFAVvc4|6Z79sKDDbwy(9Cc3H_Hc##PF+Y(pzN`(*D1y+Ptyoknr~$*q^A zf6hcD;~EVup;)2&(L{JtsOmC=!8Gm<&VXq3tj*EYd!6SdlfhqF%D zGIN=TU(^_RTzR!HgYaN{=$!?E3%9N0R->{UWi!O3=_B0Ef=js*#J}N1-myeX568fR zPy@uJQnR09#BF@MOBbi4MvFB8f9V`>SJY-u5l7-#ac6rC(XS_LoZ?gneOfpj&3ZNY9T5__miqDtby~3Mx~unS#q-HVU=cFKsoJjvu)E>Ow9T%O zP5mM!5YU{L48X8l@g?48CoE3299_(KDP*-YEjXUO;!MC zV%vl$)GXOz#7Vlg8k8)bJ6p~ya>+KFmbZ-i#Z39dAmt9<_epRF>M~1lNflU+qsv>2 zyFRm8;a@~Hw)eMPxo|iFHZAZt+W+-)xv<3r0EzSNGSlt^mk0L1Yv6|r$6hf;;BdyfFj;#s`!_~=9U%{I8)z%v7k_xDj9w1KE)i*y zRm*bMx^ESs58t&OzALm`L^E!TN&Zbf#Xr!X)AqS*x+?2h%1(QBkU zv{m1+a|ALvc1G(9ryj&F?*z3O?peyUu*b+^V`w)!`!VQY?( z6sKA{T=aA<8`KKWGFdIU7Q{9^6t5@b>Gbb{dPHfo*qB|^Cf2D4b=a1AnDTtiv5%4; zrS^A%M{6jNGY)J4;_0fflU_HHHl988`VG7>+jUpgCBx{k2v&UWE#0S*ls%W5?uHL5 z&5fd$>pB7*j&l#$HKzutH4+XU%ZewMz6M(&NWrP zUnqI`93anEIh0fZvktzofQr)##>quj_hs{nyI!h)oPVq6{p8Sd|9t4 z_~2!W_kqN$O{*)=D&Wr8Bca6o>^`BztZzth&I-P{`d~Ek=Jl8dBzDa?(745`e4w{~ zQ`Uh^US=#oAYkQL0 zt6YZ2zt23)*8$O~oYw-$<*31%-)MebxP)a}@Y?vS9CPkj*7?d!+tw4<%*|F)-%`@kNryzGZTO=S z+yM3&!PvKF5L~;as=TiB;*wI}hdB3R2&+0pFcI$tpdu1puDt}}mu?TRL*y)fH+n2? zVF-Z*9F(wEuXqwOo#|Pa&fgykuFN;`wbZup%b~C|H(yM#MHzHZ)cLl~8cy*7`FkD; z62yljmx{27BHnBWw3kwTenq3+C1yF5)UYYa(oJBxSEo_paq4Gg*SepT`{N4AUCr~@ zIvVGOuhTsyT2)O#4->WtdV-S4_mneeMWVlnC%;}%vL(LtMXK^yEfK2<2zeqo=3W}p1tf?{ z=uWNMzbQOD<^o+g`9+rJCL5!h=X>TwT?P4NmglSP-Cj99k_Zc^PPx~lnPypu?}=Qe zYkmfQLH*yRDAIlw?qBR6Ag-xS>TrpmIxUbIaF`T;DormWc%XO!4ut0Jis=KjxXP7 zm+8Crsn_gnzvYhQ=WZJU^z_QMm@S0#^oghzFXrCnA^LT5C^eppv~(-N1<`ScH1~QINsLdro}@GdcFqhJV(tWIyK-AC{p~Llg-i^ zZN8~h%OMf_rO(|xb_GM17l2kf(arAEcDoCJ&09<}C$aPmx}>0|H7SGJlnPIzh(wxLE5%uVRbL)uS13U}YWja6H}-#7T~kk% z&~l~vy#FY==@s*;-1`gM7o5QRWl?8Q_~L^+GGYV@;mI+J?QIjZ;su8m_UQMfUop%A zB&E(`l1{q+Hh4Tsw{lz)M}#M||5HjO!FV0KMwpq@dov0;K_l;Hk2T1 z*SwBR`Y?}jOrMf(xPsEkq*g98CF$q--vvQM*=Ma$&z#Vw`gZKzkW*~#Nr5hM+zOj4 zb7cL{c1~*h0Kd>Z#%o%I2JCVg!arZ37_q%aOc55ni|ts?UWi$fKph3vWyD^+LW6xzxvl4G)UrBzddXY510^nua|B?HB!RmGk>P-U2u=cqHgn90Wh)+6cpg02o&k}kO=-Iq<_^T&MSIqwUH zZpGjoN19iQ@0edzi*I>N!3zM0;KGT8>|LGq%J93h-Sz{=!!qaw$rTz`G!#^4b?8K9 zI5$GjjPeG5b<|!0wP3Ep`hG8{>D@|BN#2=H@yiCsL)T8RIf~{5e+=nO-^xlc>xI-N z4DvELrzd(wS3t)m0<|D&c6Tv)zf!%}WwY_Yc5J>{yh*-%Y1?tZ6Q>81gp1Z?aPQ{# z=3KT(|D7&|0ToCz26Mzx91bADnqRyd+8ea2HOfFP(VFk~?{Egx+!XVl!ev#(8ue=B zsMerDE3iLRemwTB{x;%P$p&9tyPUMTtpInFozYsS=aR=aW-cIDspX%6d!4%Nf^}4d zTLH+|N&ab{1mPB@b4S=3o3ZzEyKU!-ICYDuv`1GohU8} z2tTPcB?1sG)z)K`7LOf-co%q}1nC9Nq+F3_rbXTs+c{6@o6lrinP#-!7ZXo%{^o`< zE1&lZ_lU^)hF>9FS~&Hz6&l$8O)VeBb=5?Em&WmELb3@IoGJrM*;xC+oJex3b*r5R z3Nz&w)rkR-FDC-q)XyIcdmxYWH~k=9trgrjex2+6i-kFtxGaG`fj81)KNTPk&z3D? zypY|jCHtvhb+o~9u=_V+Deh4 zi@(^bMb>j|J~J0!yA9A%!`XdR;p1Af@>b*BK&W#vX`h2CU?TdkbIwgkVQ&VimH5#F zeLTsU<+$Qd*RE zoM83|HTgfPz zWt}#&%~SAKz@QFTw+X!4&mMv(GX3?%F6V7pJoqBMn9@MxieGA*?(Dg|CxEmVT-VSY zd9JSRE8w+CqJR3ceK|>FocestARu+Yt%LPmQ}omWn1dVncD3w%#*)8l*0hCPvTwm_ zM&TD7tD_6x-ibw&^kbxv&VKWL?HCvx8-c198;No9IjIobVji39G_HP|Yw<@ypYXV! zplhkZ?Y3B!1rpD-lkm^~vsJ%J-)$hYBQWCW?j1haL&;8BLhm@YU~{!wYF%$!zQ41O zfZ)%5X`Qmx-8|!cTUVGTh(G5c_c6ZNe6CGvTBHKFAcp9TJf1$jHC3ty$}uoj@}k(e zuy1VretDT}`v_`>ESNTje)lMttn+dUc^xr?_qre6*xNh=55~+L04Hpz-M)wB>}k|v z-87+SdywjGJ5c+$O?C5HDa{?mT8=>~iYA^skq+2m3USV%r*hJ~BhF zX#)%3)sU|!qBT&{Z}Ni?5$~FYt9)x;v^VrJoWgIti|RR4PS2E8u*BsiWnqc3EHpJ4 z=qotwW2w~tSm$@DW+q+sP;G~u47eY?{*CETa-!+GP(gL+1HPw#fbdy$ccbbS$k~m+ zh!oZ^7<+U!mNs+F5=+;s$04W}c$Nw~?+72x3 zvQVjKGaIH{?%u~k*zeSD<^$Sf;Nu%_7v1lB4^}Q@_zrjDAXaUD344!5JY$x5(Io&F ztKs;2+RS^3td=24+;d}IJ^1Z{5!ER(YfiOM(OP_^i}g}%{;jtot+d+Rv@z9zM|@~F zzoqIma@k#CX>3>cd90CrK?W+QSu|QDt&Ya!SM-$a-=jR*eghh)&pzQ0@D zVlU^tq03_gd)g{ov}Yqrr_{REx2dHw4$l;YgO zg2Q23w)K-OqUWbmjL~|R0yKb~Mw|E9UTyJW88`%)JS>sT^SW5zn!UZ|Z(_f3%Q~^Z zxw^^j{_BFMsiCBBa`p3|brH}YNyfYOLgCZ8NMT|M>^ODkx#+>MMdO;c3{z#+xE`@O zD42mv-9B+>=IqeH$=~)Y2X;ig@4BIrCah)gH5MzS6CUAamCdYwxJ(Z(XMuweYOhk9 z$27FztQeV!>Q5i*heB2HYs^he-3PxE@y)h#W!(MX&r7t(+{q%GUIKJ3eKl;pI`|mX zRBCNEMKtT;iz7qA#B7r0)vZIA!kg*oI~9a@dxo?=t_tFOALPCh*U^ zH#QI~D+l|ZT*98MjJqubdQ9v`AdWn<{GN91iMK;Xy(0+kcN*)Z zm~sBBU?>V)_L1DVpBQP;$o6|a#jx|IQttht=?nn-blE-3I^&z*;@`e|?Opx&!dsD4 zz1|7UR^9eT$^X|!ZgsVDW=rFKZqD3Nzu;gJ7zr-8Q=JmB>?ehZFhoz(R5}=DbaHiv-KjdXsJ?F!WiZf{a?0{2&a~rdM zweI+hcs%Rh)Fs0(QADNCF85tcRO`z>fbU!Yz=ZMAIaaq^OAE^;yM@oBY9G6VYH^gk z%b}9HrE+rBELKmq8nB}?vCBFhkPGm;ZNF=vdSCT!$b3QJj>fC6+t?;z_2%_E1xfb%I=R?(pL+sPp<=udkBX;Z5v@|jGmU8{p<6)aCh<7%??jR4wnTsvLszDk5uT4j8=cj? zXB`t7SE9@aO(|fvMAeRUo`GtF{eZRuh_27tCq+KygSnz$=98Up(MlAZV9<(M%wW1= z>WOmB^53I;1QY&UF2!2RlekB9NgHl&g_gbM7`go786B&C)#0Lj^SG5%Zko)iO z8DAil?wY~})1aTziNY_e;wJYQ`5mlhpyt{}H}w35>YWhKyB&sPCE*$_lz}cf7tly{ zDGhBb+#Yu|kg*bHbU?KyQzI^HN(xJsD20(O2NO;;N}fGIaW^VbpH>)$X-c6b?nhxW z`a40CBks}^dR5vzkuO2fkIZ`%AW)x+PaG;mLPI)ufWs}Ukig=ck@S6!2WyjJOr$&b zQAXY}qIXNxrbrk^b-?W|GbQqI^NF9hPFOF)Qqf@fI<) zM?9-~k0u%3y=OVAh)))SDLSCUEE9#bKj5j%NEu19=gO=$fpQ!UKUlN}aCWL|mC|J} zk6_*dsl)SME+ct#cb9hXyxeJYt1##%?lXbRFD3EX*m zCYXs#VdsT#>;D;}MQ}@q-=F<5i(N-G`_>c)Pqoj5!%rP4hVw-F z|9+9S1C6_HKO9(UZw(w?i&Y66Ea-p8Og}mV$u~j*lDeA}yVTaMDP@tj= z{~w5xCq44ZF7|>LbGL}^;VCd`l2A61=zq@%Y#?6HmhMPqYt;SKUCnwFpx+cbP+3X% zgux7SOs5XM&dc%1*9&sEBSu3zGlUI=Tv~TyCT@A_3#06BO;SzN=p1-N19YQ=BeVo(?h?35J9IouYAd^?XvHch17M)5shW}ZSRd7^b|Ao1!2F~EWW!SZF zfBpw%)WJdg2e#xjz%BhRKYlmC>HoKEy$LSre=h45IMe?UByapzIx#2+h-&J33miT` zq5mgB7m%)87xq-h%yNT^IEHw@E~B{7t;5n@W%U%N{1I4qiZWk%gl|j*-@H5_SsdsQ~65gYb z(%9m_)9PBEr@IiAQa#h`0n2nIqbE)CPhkZ5TE2;2d@bNdkNT5?B&i6L#iRspUnv0T;t$_+&SH=|~Z@xE{QARrLrskm)$1c3RsuWg?p zb2$^29=0Paqlpg{mq~t_O|GS(+6j*Ju%uFq+_S4(;&GoB~K5+TX&8wRci0qL2lD7l{@sb(Z;vLsPJ%Q@~X9fnM50k>s zNo8i|pD~P^oX?;x>twi1UU6*Jm|vW|P!wG2_c zS2|Dfrj_|ZGb&6HI|7F^1%XMQ5K9(IOoFX)Vy9N4!A}b{u@y`mgDK^$Ln(y<7IUqTq+Bo=kAKv6pm4h{lZQ^N33{w{%`zqH{%1He#X7kh}jyK{j) zoC$qWHEI_Y4TrRyJV{#wO>*EU5TQu_v{o|jwgyvCEOys_Al%lTMQR6Ig(nlQKl9(= zNB>nz6G|HF!3rNw=wwo6OzGZ-uFVQKSSa=>(MM8q|cD77gCh+g;)rgVy(pDKqC^fLnfq`3r`U#jWXU*NFH zun65K3<3V|;`P^}VQ9Ayq}(g;oGH&8`~{~O3-(Acz38t?)ke#UqFi_$!n58Am_+h102NEq&A|(C{V6YK75hIW;dJB27*bxQ@i3-;z zk@K;L$=w9U(E$e7426YnX|&= zEI_}HefIq61xKMx8jd49JjMshHN;@H z7POefmn44Iv+INi+nx3g$}9Z}3V4MKenzGig8|500i~qA;9>Ex*@(aw*oEE}t)!yL z!4;y*VOrj)cxZnv29-dU2=EImSg{co(<7G12pcb8Sh4+hun;HF`GLu`^vX+u7{Kr| z@h1p7W_3A(V|jF56$t90zc)@0RIUGZhH(@UNI|fqabuQaNE}_z{I8ODM;?qU4zvRP zOBF!kpT*+I{y?wc6DeLvcM_06^-83ecdU}w#ld(9N7lOET>KYuS&V1}kyOf^qbv|> zd}v`+cyfDW%)fg~F^K0AN6bGHX8+h0i%Gmvz=N_Rh!q2a=E-@%NxkAw86b;Uz>KU}_pQTet?!m3Z2%7%4YXs1E3r zIvR$s>}6oZG?CkVqGvY8`eTZuZBYz!L?kjuYDpb%j~>J2ca06(B*gu5>hp-3)0k2B{$&&-GgQ}|nfW3GNa|~-G zhI_*8+$10~q9*vLQ#W(jz~oYKYpRIDaXcquT)*?-- z{;6pwg@cK*g=HWE7DlaU7j~`avtZ@pZVd6~5aeh!rx+|8^`9rg$b^wL+#`WeYyu)$ zNZ0_EG)I;Y)|4|jK4!QRC_5yY1+kOcz@+~M3Clr{3ph=ibPUYM0HWz06iXgy>Cqn& zsjoTtColnAYRmRz``#kDZ+)g=EKcm4`!+#E#3jg`Cb7hyia>hsj0Gm_qd`IUr%wi^|Ebe?Y82<{*N=#J~!_ zGKoaXkS6e?4~PE96?T>_U>#Y2vb;^YH?vhk63fy!K!%Ynf<8eHAd~?%u;MlyIzJqE zVpLufKRtACff%inFx`!WNGf`gG_i57a|vU+E$wU?YNuZoaSPa=oEJD{_zZ_;g&Zs@ zZBdG79`P7-^e)NWn?=m1rOC6I|Hh?hJyM2JN5EG}TVww&jg%$rZFHu*q*_K?-o?hP z{cam_fr`6*rQ`cey#xh-yz#wQrFET6tPl4oAd2ZaG(#6K>-O$0D(TsB;NL1B>C7qc z`urA3WM^o>j>F=pr#y!l;WS-sgRq|do` ze{f6vvi1V4hMZQU7(EQF7fv5tMz52>$1~25Un@&#^jF`kyXX8z7s=uC-1#S8Px-sQ z+~svAV$^MMWb(?3sJM&-(^45B)2h#20bpl1%li>$SN;JSvO0DyC--Da`C`G};I5Iy zf?S~aNnzVSMxy~>lE(>WE^lT5=B4ZyohtKo?H!#BsCWai7t44(+mRjauCk^s5#=b> zH--*fk;a4M>>}cOaw<^%05#C0fM+DU`AppP0skFQvW&zutmx(6MyK)n)ybrH>yH>w zz{Bj^xCo!f(!aT>1lstU=WBUk7`nUy)D=rCRvL9@yl@GCWq@pE+_Wa-6>2AhK&unn zi4Q1K1O>*B@GOieTP+fzt_*UPAkz;LCPQXiFrH9syy!R+7w(;MgbvC2ebi5NBN3Dp zT7MFhy0*ST2u4{$%t?%E&wRibIb*51>uA*s+(rxTPJlHeW4!t``=$(a*y}0Fvw`#I zk%Uu1K7a)9@Zzyi9rQ5@>m?mPt+mqTIR0okdoBUTte?pVv*%ZnFMwl4OPJzZg z+_O2*Q^(8PxiWD|j*8%JnpU_2`p&270}-Q94+=8{(qK-;-B_EtdBf7lDf6lB>vOb$ zCw}+oXH(njdbWVA5a}TThARRv=K4;`W$O6jXH^;CMN{u%@8g0So9?Nm{pIE4>}k=W zBH_u*4Qhz9jlp51X5-}5Xls-+=<0d1Evn6-`6V>VvK%H;Q+mLBw!eAkXER-a%*GYX zWXxLQgzFpe6wiiCUFauIr|A`>yUfu*Nq9u*LRm#rH~EO0&uWo8QLc|4--cuEt?72v zg^ey?A?Y!6jnv(6dKl}=Bb$oN4n@)Mf2X^Yy#SQe@bkxr4^sR zxNPvC_7NfUt@8CgpOJS<`U$dOUn#+{u=-&#Y_mYES#ZRH7PxMUd&MIs;I!`U`?0@( zUdJ!lJ&g!w0@=OI=`yk#(7ngwg4ouv8`%#)S)_a*lqYAnNL)NmjAf~BovxJ)Ypa44 zC}N20Uc%cC z6G$7XYbYS(5W~oE(iFxrz&n?kxle5SoOXXTjLGKmcGku;!;7uc{wis1IKHZvAbJH< zdtSdaUlNsSi{{nnzh%jvYYlGHGTPnd+b=p|+=dVDH!Nf-{>p(*v=?CZ_7Nso9-sc{ z{N};`un#T$g;O5vmNqtKc=f>Whp0y z_kry8uo?GdH6S%s0jGQN;Tc0`qfs7k^oi}7bNV2Am&NCuK;VqsGr;4wT542h;uveP z!u&Fj`r@C<+2R|K=|J~3>@mf6+>Jz`?KzQxh@9Yik36MkX4(3@ITXXWOq-S}fX|pF z*IBlN+gZt3p|g6_8_5VXp^1c|sn*k=ACW|AD*Sv=rn<|&)-rAen&1Abwa*3gj}`cJ zX{<7mZ7ZC)OA3}3O!{GWxB5`i3DwcMJ?<8@Y*a(z+4K20dxh^CnfHw@KpadprOOb& z0h0t(ZTCt0?<9E5pgjt4*1fp5NS-7JN{i!AK18G|~j(%FEkN|!>}l_ffdB@UM9-ti% zT!(GF*N~Io!^9EacFn`M%9un}Xg?#>uy1b$xvuAGtCx@G~n7?+=J zHC|1&C8*sv1P=SY#-jq)`*924Z5qwQ&#}kP!9207iE(77#ns+mUbOP?IxEYeH^d+- zOM2+uXy~EKy~A;9x~}Wv=QFs*Ee=?z zYo?c{F@u2=FyK>S3+P0z$h=Uy;1^T2g&H1skgYoH@W#pIk@ia+l$Zhn&hGA5W3`4i zAWho~45Svm9;?4eoAE?963tXn>$=1DnwEy#HKN))WUOIZbg1E&xDQ0SDSx(7&d^;6 z_-aw}HVk)+xB*5B5R5(BwL;3*I)TXD8yjQGXZXX`SL;^Y-dA~b^Mrm43%}K(m<4%K zExUl}J>KU-eH%&aX%lIHtqfRb+L1g;aRDdpe?9@wiUTU$v zP)LdgC@GxI)_Ir@NwB}H@^iArUSSbLcWgxQ&#~8W*aD30{^jqpPk{8#pnDg`jO9qL zxm39?s_Y9jWM4*3W~M($GXJZzdxHkEI}sj998ZPJLEUqPyF|l#^u!;J@-1_-ep8Qn zXki(mG!OmCRn4Drj9BGz2$e9)JdbH>3SuQ9x3Aw13d<)UJG@_KH>*@rqhv`$O%gP zOerenuD(;QMH4^mLR@w9bXZkb)u~K{RLKhuu-V16x6;$c47x>XsK}a9bX~nkx{4jQ z?ap3Cx~He;Lf0D$(EKfJjtG_lc@y_rlU1F`vH+uvgL^UhZO2-zXRo*O+rCo+;-^|` znKbKEEzNHuWi}dKR=nbl2pLda&u+J5a(%Z`Mn}=A@9kQ6%}}S53Ox9kKBe*N0!NCSFZGtUlDW`xEFG$5=fl9YPZ0r4Ud*sfcTn+ zitqVi7h@WHqD{^sS`*I?i+EVWR@~ zD>6f5n!twD*I#@N;qisDdb;EIt6sQi7Etq#lH`l)&^Ey1x&AuHAF2mRI3VIU$gWI0 zAGeA6>?~ez6=2K2i}BZOjN#rnE~T8`JKoZm%KaX8DcS@pP2GKDTF6adic~JdtHH>! zm}qRN_;>>qZ#R$55FsSbg{d4CctFf z1rz+rebHQ%0c|8zqLFR1Y_iQn@e-Lr%%T7I*=G%Hze&+yOZsEdn;psFeg0mLIlgDT zWO+e_DtgJ$mES`8?QGCEbtJ&^Eou^Jq6Z7XS(`o9Kw9O9i$W>YZ96}Azj3?V(xF|D zk91v;Dpz6DPP&Y?;3<8%d!^6r1~BnXrjF7EcnIGzhO7Rl{e)|fj@{Ddu9sGRstPB@ zq_&*=yP3YIeU9CZ_~Jy%HBCby9pg)YByo2TD*Bq0`s7yFhMZ%^YvomtWU%P>m6K&F zUK3~~7WmerlzM%1R3ETj6gU(NyO|Svv2M~oOKp$QP2)i=;|*^2d4LD{2{<)T`J(=$ z0euiBW8H*M)3f^vd>g}QJI{#1N3}YR_juy9_t5z!#p}NsS`WG^gxH_SW8w*njNNQP zB$&hGqy6E0!)$2Rk-<$X<&hoF-F~PB_oFF0Vz%re4L8z*FAa@LVh`^xD=ZI7Gz3Nq zx(m?Xr&!jmJyPOa>@+o;5wN;0Bf&4zED)V3V=^bcM#&jVR>jxgbM*>2>uqVid2I;3X|scl2pZ?))o z$~2{_?r0ufjple@#sk{u6xrndNn)ZS6#H%2?obVBo8T~FZq54E1E8mM9Czf!l$z>m zk$hLKw~{oZ;T-MZkmK88Q!(T=brPXw(~R{{+@n(FVYO=cdK}sc z?H(99E!IQW+@6>cEhQ`L7v^WU%zp7QWB>DPZ=L_dfRS>i3MExw&uT z>-}CrS#$N?)9|?L72pSUlXj>bbfQT@w&OqQcsivjk^n|~4>m?@U(4ld?J zUu`VpRI03nsW3^Ox+(&^Tx<`@$fOoz7XS}Cn{LZt_8iZA0k z=yD2FUVu?Mf~RiJZEMMkj|Fk~jR_yLl&C`%-9@m8F5mEl%N7jA8Oa}wCX7_}Fa!&J z=Vs?ySJb=S%u|bnxFNZp_S!>!}?7Ph@8uTeYeR9^z+?}44*SfpNU?&)&jT15X zwR4pl(zkzXiE9m{R<^I!(RPFYEZKR;=Z{1{=(=ic&VpzRETlu7nxwtOOk6;JwQP1t zco?m_pG&1i#EQCA;C}108t?56lD7n$OfF}Jz%$*RcLB`ypQ50B+YEC=N#4zz+NM{8 z^cxHh+&5vpOve6fQeI#>@)yCz9F!^IExy z9#<&`Is%jt#r4A=Aq@_;ll^XA)!P^B)UV%|tQeA1C(%#vr-%9;7RxQphMK*rD)1Bb zr<{?Ha1hT^V)-Re36RAgU!!ZY6k4T75@B`d#t-1ubQe;a7x@4K+1qr%lQD0NfOTSei6;y=e-4$rB|@*ILb$gk|9LgIX zENTfUemCsrQqW1xkH_YiEgREWz0jY)zEl;sb4q`uI%WRDxoyT@DV14o4xW#jW3Ikm zmBm=+5_fvTg`twrud^3@J$8MPW6F7ZUrWp4R)qHMf9(C){Kg>bZ*6=HHrH_eol`mT zeKtlPoVrGf4U&Ub-JM%#t4nz%TxA2aB9ovrit|0^B(2-o z&~N$tf56(v{H>NdE2nnSE!{6fgfb&Wl#MqXPaB1JblkUP zxHH$%ELYVVvVtN2WyTvauFuX@TMeYExC z@o`Gv?ImLgXBF~qtscXE@HO}t=Csbv%&MHWfNI`HTUY?{HPoJKL7v#|Nj95 z1pE7rCdBgaHi%`qnj_OyV2X6?pSlMiDtCNLUI9q2{2+6DjPv8iI7HJ!SS-AzRK5mP zf4-(PyCyb=O*J1475(IYN{Lk!!o_=}nDOVQQECg98eP-kR210>Gny5+W%NaHM;aW? z#qiIvdBewMx(3p9rl)xw2oP2o*8$|OOG9J^BEr|1{Bxbjt=FSl4f&aQ8}<`S{1b-w zC!lPFO8hIPl~yqS$`oZcpjmGy``rlte|H>#cxM!i_25z|5%31d05_Q8ky#^~6>>y( znPQsKpK4lvaS?_*`6*%jDf^Dkr+mx^8-1p>ewO<-&S!jQ^>ggM&l&%Hj+w)^6mH5z zH$^V$Z8VZB;VS`eLMPr-(%#I(*G+AF<*jRg>n5;=Qs|bPzhxGFJP==ge=AU{ zu0{o~>K3!I7@9q5IhH4=iZvRl;d+3*TQpp6VULI%PrT;(zAa81>X}iGq;rsZfEoKZ8lHe?vSTbNp3Ul$mYd6Bro0pcD+Ll zeFq!*4g>u=OkTW$t$c^ii(g>ke_t@fztH5xf8)IP?@Y|!g+{-tEPR*Ai+6Q-@h(X` zcbUA%tf8MVFiW(Zp1Y{i!+peX&qU7>Fc!$OgnR6>gnRT$1vtaLQ%lCX$@9&7r0~9{ zyA9qmwU3}5hDQASxQ66Q9&V_y`x;&D=j(Ex$Z=mM$9=sn4?`oP%YBo1e^B!u;j&@Z z72BQ6N%|#=0u=LK(zwnUh+z076N|~1h{fI-984lTA@mic{1vAB6+`(eNqKP%4uX!c z4D7FAV1KPl`L!@fXybNZH_+(gEyMH05hv_iZUg`g-;Ugzh+IewpOs%j9ezmiz2uv% zZ>Yg@1|m}52zG*0FC2i`fBGBh(rFT0oKG<0$p=dD2f7UWfTYd`Oa^Aw&?uKZe;)f0MM88 z)e3wlQ!iC>WpZ;bZDDeBX>N0MZEj_9FJxkJZ*O!jZDDeBX>N0MZEj_9m+;sOC6}(& z3I`WZO9KQH000080C1(yR4D~8={*ks0N|I;)(RqjwO4yQll}X@x7%TpWwvD`j4jD& zE63-lbR(yd#1y55Z5Xqy9Z1rdN(Z5XA)=%bg&b0}N?($whz^gGr;}1Cawz3{-&)VF z=lA-4|9igoYu9Jj=Y73*ecsn~-`nRi_ho)_0D$no#m#xCvoydF08nHA0Q5D*{PnC* zk%+~A6NC#v0XGiha7AFOL@-S#lJbOtP(Bjn^Vp%tOfropVDn`hF6VEk=C2cw!xLkW zjM8`!S49vS!&Tw)1ktMDp?nEfEi9B16Dm^Uius{}2vx3FEEH>o3&k;^Qr6@|jVEOB zd0}clFbtwjCgt(fcmfVrAk_?&3S(GOgd&lDqAaGw2stu7cT&4n1Xs%XWlpmCk%B(g ziqEF4okO2vHOERTTqa;6Dp_oPs7%8BeVpsvLLJk)Iz+SjNc;Lr%0yYcS2q?T9 zk0zM-qA1W@HiY(96Uk5vIR%D7P>@4_Ka3)fFT>6s^8ZN)kuzX|2qnr=^#DK-8H0C! zA^Q1;xr%MJQPbH4VEHv7YKt5~6AJLC135`xZW2hQ6c8aINJJfz`=SXhc+~lvLNK=w z#$A5k3V8^cunmv8lXC;iy#eFfe&A2#A~ZpaM-Ak>0CQi!xcCQ-!OORx31N5?MmqNMAkx z2MMq@0|JQ<3RI)u3{e;ZIR=m5@B)T8I0IrXY-ELtq<~!xcW;}Gn5ubfi?)h?Hc6WX zQEefcMUX2K^5;NoDJ0nefd}OnZFM{ak`f_M3Jac`GUOOSqADIbs12jENtA$)IPjG7 za|)A)f00O&C=nsq5}|`s2(*O}h)R@WNGcSZnH)3iFRscYcN)S)hzB7iLeyr;F*-1n zhR2v7rGsuB6cBVf2%8FQ9t?PYutgjQ9!QAe3lE&1$RflEfrlN4BZ3DSY*G*;9D_S; zBnRLgk>M6oAOa`{eDJ;~jPVZ;Zm0>;&`F#Ug2GT?A#gws?kLR>HxqOQsjyz1L{$bv zG`7)XKoC`BvSJ!!g9MO5RQ{?9o-!aB73mvkvM$okxb2TLC55+_>Vef+v3a- z9p-=2L4tLF0N^hbGm$U2SBwaG=fH-6Z7OV9u%TenM!xs3p097yfYA0*alqJ)f2qP^^T4yiyTDn|hY1VYp+sE=|OPfW1RWEw+6jb3DV^Pr7 zg1r0s>4~PbR<+~Yd zdP<+>ER~88Y&##RBofU5kPU5eBESRZ_6(@j+x2+Y%q;yJ5ESq-D$3PM5Dv$>C;1@4 zSC8e2CGa*84X8SQSle0KOkzJaL4rF;R^WXqjF*ht!%;F0pH~_q@!FwYYNsr=11B>Ya5_n;H zOsH7O6G&t+0w$5p)$UIln(EkaD=~}E)lbTru6xT zQY!cTpK0CynY2+zJ~fF@CT4S^fz|(9`Sf3pHP-NHBMQE2i^3v!@MCSc-4_66x315r z%jy>X@h@$~>GnQOkzgCzYFqt_nXg^%V%&__z#NV5PEuv<83odqS>Cvj71ZHW!Yd?+=>~0k4(XZK_9zK^*^Sr=si_Q81u02 z8}Z*+A69=rl{31e@yutJh^PLIwMDJ&gWs>cynB3;?#w^FEgP}eU#WY?wVWAzKc$$v zDFEl0`p#mSVS{t*i<-2W+Q$A-!5*4Gx4~s-mP6zixbyd_aLfKdRzug`fJBGaXO0}| zfadLg-9Rhjk&@)Mv+%n=jyG;|ppsTs>uJP(ykBps!kV}eHeok+9A}d=|3iD?;hMP7 zmLU(jj8D%BofVFQyH<{!F!#DYj|Led z!f8SsLZ4a&eb_T^-a2*9g>1h|@BDho`m`;7=uXE?mL_JupafDKn5a+E-Re3$1}d7x z`o11D<}XWID=(Q73@z_wt$AVj;QjXf>MP#jHam0;#GN{$ShYfLU2O;|r9H7Y_I+EW zq=$J1+THpz@#s}`3C@Xef1z)I%_tNx@b#kF74lIH%jK?3rr)g#>KOS|x-Wa(&aY*E z+8!9-49%ys@BH#CSluYRWa`UY1-SluYGNLE@j|GWcl~L4lVSC9jZ2b4gOzK2YNx08tjU(jGNpEmZ5gG1PSn0P zW_@o8PZUR|mzK7js5R{q*atig5kxM{yCsXU7M|&_h_V)Hl*ZRMtn1|$G(23iyMnhk zXQ_YhDWZLOg0|tJiKeM&Py{alQHz-Es%9^)l#a5}$wvd&nOSoFEnhl$O4=p%ok#I8j zVfIRLf{n&+c@%%oPB6ipmb!;3|J3B!>&Q=QoVz2n04o-xAK8fqXZ&_|c`A4@C}KqqZ+m@4ov91AtJ6N$oH;;Mefoi{|@=)u~$8`+nOx{3oH|gf2wV0^Hi8BQE?2TD5L}=%~eL1sAk} z)Yj|qQ_X|5jJsTaZMs}<-j6)?bbTaxBL}@v6Q%#8o2u5hO3_$>GGZ$lHz*q26|)9s zFo8TsF)Lg#i!g9ASTV~~F=3B#N*eL~h*F6eW8NB++PC?)3^L<4@48zDot)-Jr<^8- z`_XBqgIQ&ptw+hkgNpGYT_|L2l!A%RJhF;GH_p^R56)G81&heR7bJ5^RyG+Wbr$y; zMAu$g+553idqShAxw9|-fwU~2^gd`#pSN`fimWA!AdKp%Z92K?DxY;dTWh>NS@%lk z+)ev3glP*GsBKjYPxlMSh|ca0*H(j^?eeuZ=C#eLHKu^5U zVV}`g^kZP#@>p3BL-6%{#iomOXSO|Mp?kq4s*;TbEkmL%+;-Sd;U-?Ur*5 z;B4j;W-?A*HBPRGo>XJB({G4jiVo}lZ0%h>RDy4A{yo0gbYWN$7V&Z|D&`PIl3s%-Fv zkEig_DHr&^%R>2I2Svd8VEwQ`*a&PiR*02gpEq+tV+Ekm#%0W!)R?TdH~HUC+WZXhRM^W_6l&w`H~(gC-txTv`qL5LKZIsV2U< zb}%+@GH%|JLWtX+=xq?Fu5J3GuIISYn$c}DXzUqw*VJMmeKRK8#{Q<+7?d+qE`O(Y z&3(^wZKG)(JIoNvPQ~k7^eBlSYpVh2f!PTts9Rem!b?8c9NBWbwh^Qccu#m{+u1W4 z{(hUn&~UtdDEHIAL`)xv*fNr*&oD7?i~Kuv0F}0}+ZURVzVF`}i~Zg3z2<1Q(?WPU zW{dZja)%S4Au+4aDFGl3F`eT*ynhG#6dq<8&7DjP(HQWP@j3w66i9S?y6d(gPQ$i7 zL-1o(-ZldRCq@pb>jjM_sGUZSIMs0)EhlJ1iPtB`4h>ANoryjH)CgSLX2gPdB=e;s5&;5fEodVzo9iGRF}9mm=A z^G`mLRA1&}*FO-KcAdMX=kJ)dJ<|`>QA<+}@_gSlhwoaQ>VnekSobC$f7A$Ii2N99 z?!a3TvL+J6H9D=xu;DGoZrLgl!ji!tBGmgqB!#(FOS@}W0cmU?iJGSGXZwV`cEmQ) z?D{AgBUEd<{saj@VcBz{%zw;mb}c(VIHKb*k38W?RT&f~q*j~?e#(rj9Zkl10D^+g%om9A{+MhnfBU-x9!VA?m3Rcyp5a*}%^yJt zL6{Ue9hY&ThGY143V(H@4c4c6wI= zpiXfbR8ac-u>rxV1fuLY;LJtNkH)f|s!VKOyicJF5`-pE?>wUk*ZI9kh6f&e03OU% zR(tj+`Wk(l4SzYlLN3Y0o$OGfPSszG@|<7n~WXT>?qw}>k>0vchc;@ zF?fEX-@}J2XSiuQzKH=7@Ajj-^kXRirh(}w+v}tKfq#a9GDcK1o|bdh&kTH{D07+X z7|6*)T4(#c?=ey1gGaeTe6hgkClR3q16>Rt9(_6PXxz3OS0|Fy!Le;Oy6(1Tw9K45 zJwlx7H()%si6S4(nCXMQJQnpV*{o)tBqC~~Gf&VMolNwtiuReFxzScT=(Rom-oxVk zkv=im?SFWt@7Q|>1Jj7vap27nI0wsEG>*!_eu7Hs!2bF2&yK~pi)9*p_S;U^FIUQQ zAcyQ&sG%2x+DxOGO{9z)I&=S$VFB6I6zhS+R)Ix1&@|k=xpIOTb zy?-XyN|;Y+3BihDg@u)rrfEW3WkYPW$O@vK(8VT^D|u04p-5>JQPi_VeC36fC&mI@ zt!ujYcNVS@Uy+3yiuPCF6SV>fb(M;m6-9i5!m_pON_ZcncLd83^TU+3))Q6FOMMR^ zXDO$x(CtSlZKKp>=`1$5`Bh4D&tj{KdVfV1xB|6bliIq_N!mB5{QXE8eQOWHZxpTk zFM=sME9Oq^9Z_E+HoV~5RQ{1wTl}28#6F)E`PIsWWMzpZ^wQ^gdPaMwEwMcNl1=B+ z$K^5^ZDv^bT}t~ZDSE84B3H9kgu+6uLDN6ug_CP~a_vq{=u8xJTW86QJ1e44B!6!! z?2CLQ;`}FD$t7KplkE4yZ+BVpVaT&Xlj##$^3gcLz?6_rrnIlGu>YAB>A8PR&;LX6 zE0LaMlbW9VTB_7j+Bb{;!G7{nmM5bV(#E`U*kGO`i@z!Tl%;3s>bJOegC)O%bSzv8 z`7vmHx{~DCiM4!16bKcodVK>|r+-q~w+L{^r=h8&PC*0#fgew4-%&i-3Z5DAnUuyg ziYJ}TB19!sM~p71leud-rik>sp3Q~)L@Lj-#HO$;9(Mw6_&W+#jam;{ ziZ(iYljML%Rn&B`QV97;MU?+mIsh)?$Fw}XS0lOfjwu-VD%R?C6MrEu;;9RG>dA2-L=`6HgkBV^CaRErO3~CBWd%PC1t+dB z^(jJ z?Y_2JtGoKDKBTYK@9X;Nirz=t3-EWp_~b` zO9;!$Yf1iGO+B*=WI)fEaj_oU5P=8)S^$7%)bjw*xgj=Xrh_iEzG0sKvp(R3o z1ETTy#i@u+Dov6)~g}E1ru+;S1X}p; z-j_x2plyCIP(0*x0}A0ehs64xk}v-?p$B7Fj(<`2{18La+M@b89Dnnugx5sH-pd<=;1CJ@ovRvmHlY2}W8=$_>cjR{Bh+Ade8kD!>26Eaa66GAS z;(s>OlX0lIO&IqcjC&{Z5ZX|81Hm4IyoGBO>KXyAnHXXT2~eJ8vN^A_h%8&hdYw=9 z-M)1|)Z2q*iAw0C8 zsEWy=C6V&$@Z0sPYAeZ`^44$AEvfelTzH90TrbFz--OTZ62R#2w{UoMV1oK>>|Yjv zPSB+N??`Q|N_7!B*Kd>Bpoz&CBTcrIjR5?+id(*wwnoCjitY* zRLXx|Qq2cxivpvmfA%oROFCpzf7=j1x;i2ML+I+DN;q*% zVmS!vqJ7xvr)f)dA9__u}*e|SPLAt-igF(*R|HJX z@x_%8{KOO!i+_{Wxtvt(Lz~a7a9!mXipP|L?N^n<2cZZtm^?3BM@`X)ltD3hb|bk&UXb^0D!1Ra zU7H>gFh@e$=Vky&JC%q71RZJTErE^~Lz#MmaJ(Z09d8Z57Zr582q4nwVw|Agf01qm z6PJWK`hUJy0Ub|;j{mN(p`!r_m3bOC+-A7mBofBRi-8VdNSNCp4CN3vd~rv>Y*{xu z+mPYTz|NNzWVjR{;=K$f==U;T+y$QP$g|6ff#Zw2;l*=UG9Woaj(u{ zax(0?z0+aazPPX4RS-yXzAq4{v%t9%AmX^(7k~GIBkj)EO1U?i3oAP2u05cl+a0xgFz$OiRglq)owPC#y3>rvgdUzBM zqhY$FbwkV?heW&%^<$iMmD$(2l8GxRn|dvT+*d^nxH*dxkKx1^Y`g^<`&rjwV;2)$ z(SJlVixTFG$3yhZ8hs7WS2J<7YT>G>t)mszSyfJUS*43YP#4WbL18pIaQ+GMvEt;q z92HNT?~xpO3~sKfzOu$W2a)Yyifw}T#S}AVYIYh{eL1D z?2TxF0Up+&aTg457ZZ1B>{?*Q>hQS-*2I4VQ5YvLg=Tvcr}|p=z;t&rakoMdX@U31 zY|peZaZjybJ*es4hh6tFajy=!R)pMra7rPnUJi*princOV)rv~ziQINGDPf25PKln z($R=={)!Rt_9?{>O!i<9AG#L58h_GSrTzI3=snKFLm@4rK;2mhrhkpK8clk2(4^6zS3|Ns)>CG0>uDyQQn5J6p?`H*0}4;u z%WZUW;*~NlOz=%OzoR*?25I8_A78u+&P#FbnZI*>FErfq+HlXp6wfj7?550~D`X^)g7ls!28%NV*@ED1ELey`03JkkTuVh7^1iBYFTrT{dgT(O z(oHJfqMSCx+kNpR6l;V{-_$mJ12%n|i8p-l6-()*&u+rT<1ZGo(EyJ=1`Ei{7P& zqP&RlT$XE4kolRyp7np*)50}~_Qb%{7vF)XLjKoSUmza8;4U2Gi|@)HJ)IQT<*c|>Q~rGMGXCL#B`Ci{^u{-B`v z7(&t<@QE+}q~}keKRtg2`_S*_up+^~fQ@N7`qCGFA&8cN$5$1tiXt?cQ0a_{XMx|``aJf8FTwamD zl7>4XQAS;x{(lRnK#1dEUuvqD!&)?RX&A2c9hn84G2=uH^0(|^D9@?3zJ@hxtZ#Tv zYn|9H%AKUO&LR7L-QhO+ax+NP4>7lguBZrHSx$i)(8*9kk-|uMyDCE)Je$_7fyi$T z^4kZ=J2)u3o@``dU8nUePr=8!^x-1o2Ia5I*`yXoQ-3?=nDMQKYsA#7C3k0#5tY4vV4U8Uz$M>I=>9l^Q(Vdjt z#roaR2Y-5j*<@`c2de`p^%KN3Qq^)SdFy->AwN(D5Dd10}{8l^)p)1PfYw2kt)oe7d+t^;@cHan~0Fk?pFy;8*!f8xYk1NV*%P^SSze}_fq z;J_c)LYeqy`1_YH`@t=DpkHkq?3FpgoivQ!zh@6bb2?qoh@2!>rP07LRFFuy{@^i1 zTYp_!pg+ttwbNsvpAySFmbe^$h@X3S5^(cgs-M!uu`MaB=wUlN^a>~CdQOG7mR=cv z8zsd66wMYYz#ivA@aG1l)1$uE+l!ceJjP@sy-Z!;dEHw$lXc~Ms!ljQc~ zySx}yg6sgu3>O;tQVLg01C?@L?g)YpVkrvO-0=`Lne;ZNq225ktMg1IH%CS>X=*bK z0)BeIW=TBEP{sSItj6=qq}P*@E-&`vb)Lm!&po^fUbuohq7z=jD^wY0(yC2(QGaS+ z-WFzGuae11%zjRt2bs2jQJA#t<*u%i4?8)h%;}0_`H+!|J7Ihy05E(mNHH0;Q^7>E z5!s+e?Y)85uJSbAH68T5(SZYq}-x}fen))lju+!6y)v^XCDoI zS0lpI-JRSY7CO0265BB}(Ry1@LDiIfeYpqZc>-qc*Xi{~1xKd1PPNzHDSxYoxI|W& zPsWv#Cia+6sqs6yRE?mBs`hr&;gm!; z4GOxnH;B5l+>siiQEZGlFtRiX(SIRB?5HA^UT?{q-jKtzAz}4Foqt}n?#L^;cVuO* zHU80(_tHs%bg!nC9Ns6^ZgOLidA+L|vQy-Ez8nc%UxKbX{p~)H7Y%`mqYAUEE_b>j zjtb{p{raZCp{m$GyP6AcD@Sv!4n=uGIQJ$vvcZ?5gP`9TL7&n=-&neFyquuG8KdRf zISG7lHIQgKqe<3Xe1Ew&WPJs)?poo7vifo?A}#5q>C%%IWAuB8n4X2kA#G?3g^BkL zOxvhU+ZdWQP5EgA_ZB%G3BN~;mw{lrX~En=Hc~2#)z<7BJS?X zi6kPTXpc&TDI^iTGLTJr6l^Mtf>dw!DGy3Lt@qXUj8g60FMpUN_Ct$5frfES1%hk| z8&0BpXtfcG&E~5yBaty*L(Qx~oDcTp{$T$)*w<9LdI-vkaX2!WDo@hppg0<~o8^r%=XxW} zd0w8$yfQyPCu?AGq%uDYR-=^p5so(4>s418>GN?qmwzrx>z?&VJQq*LbvalBi^QGH zTyGMSqkTDrxQ+4URB-#WmC3y;*R-msZE9k>8nINRyHxy6<*b4T6SWA95Mdld7|Y~X zWq#ID=Z$9)&HD3T)u_xbT9_QKMg+b8OW3&ub{+uBPjG1MiY&c>S{mSSXO+{s;im=o zYytlj@PE_0;im`qOacEj@H4vMX9V~}0lyCTnceU+1AMH2{|5M3-SD$C9!S1a$5 zeRA0MzkhP*^!5#h;h@v)OCJG1XFp#a0XhqjMU%R{kpF*wr!gG;eI?|v|KE7*AM%*& z%YP%mV+BTy18TgKX}9blT1 z-l1u815JYQGQv#;?w9~~Xa$a;W6VY=RQbFDXx$!R4u4hH2D12v|Xpoai@QUIM%f;IzsasZuKf*uO!f&e|Z z=)wRxy9AvI=qUkoP6%AJ#oK z>UnB}w#Y(rjCZ8@vUh|z-fM;OhckJ&m2w*~S*BxZL?Yxh1BA{%Xbz;Fxg8$P1f!$E zo=FaHXvCmiekQ!oT%1_owqV?BwSSu%b0c)H6@q6b$aDnqAMsD@EMU(Hut!#;8g)#N zK$`oaZrrJ3pRFThVTo;w7b0dh(C3f|Fu5G%N02^$z!+_+7xyD$ZPCW$(E$_@bqo!@ z8sUngnLHN75SYJ^(#O?!^HB}wa~BH-3&*XXD?O4r0lONy2QQ}F)*l%Q7k`gAD2eCl z?`Xvl9k;C-LE^z{|W7oy+i7Wt;MH`c)I0`nZ*9PW>MM z00960tXFwFRO|nramF^GVSh%1+^LZ!I!u;qw>tK0-668&+GgxqV~rMtD3NS6vL=KG zMT8=<-nvD)T6DXuw5YV=s_%0+eLMAgy?%dvy?kEtKA-b>-ky7lmSr@bCD2;&&(92BZv|eyhfZ1_{`b z=x!*mOSVQLJ7%AlHRQmLj8l>sUdN=3-2z-RVm7Dy=x#Bmamp#TNb5+XA9^O@2h z1PFwXtP7_=VibxY1cAJAgefA@h4XlYh~4NLaQhTJU}}#{+z3 zF5n`uiOhpyY&K#{LLeGKRYEki5QYf?`eF=*A0^Sncd5e1AhMz!oJP}!^JsJ<8c2&q zp&CGNo{R@M20lcNf>X(na5|Bh3UW|@*271L%tOHcJV-O3%^OC;8RR(l@Pc7FFqB(( ze;B}J3orvfMSqa!5ekAf05Ua!AW4#>37>gPnDRgm&H@qe=OdsRP+|VO_oKjjCLqlw zGBXhsLF#(=D3O^3eDddg<^rEN3$L>g6`_UKIf#nz0?I{HL_jr;B3cZDstMAT)Iu~t z;(QWIJPn~iDRdT}nMb0CCw`j~B=9y*gdWc#GLKOZf`2Iqgh_+Y=7oXgEd_6n3$y5m z5+ub2#C!^!fVPmvXXc|V%=`XafIc7Ri==}#hyu2JUAO=eV}Y59_FSjgvLNu z1_=^m!TG?jKnpHJTUdynrXuMJ)3k^$5)BB+2$5N=3ztA*2!d$R5C&LQS|}$*rlrYe z7LgEfcYlPYi6}7;t$BU~E(YUDwBQpc|A`;?qZjx~`66C`e-W6TC&lRW`FRGCDF!nz z`dim%pld)^0(yo{B=a{6K%PP;@R=usSt4sx;WCIUCq)1*%7AJUC__14#09X51J(*% z_!KAueZB^?g;`t**kOc5ou8uM`6PHoH;(O86o1p>e{x)kItEFBy@UiI3~CCU0{Fq& zufVT_Q(AB(nr7t>X}T<=S;c3Tfq*2y@~GB@Peb!dgobD;Aq*{qYGMc(qmcn_M3VtZ z$Y++5*y5WInlYlJiOwYxw4Nz!ka8J`4OgQs$a26jn)GQcxCV7x^TRe%w&1vyFQNb( zFMkGoIHL>K{nS6kyjM*s@B-{W|73sa-x)BjP7AI_`Rjj3Oksh)fiEHt_$goyIjakw z`?iN5WJM}?18gL}?;axZVD~tSuh}^*xDlmp{O`^rB9BhvCcX#-uu1~f^SW>g*oUcL zA8rQwVl$O4MnR_uwi|+uRRAwWXt)&kJbxI_47T+1L}rT?d;z7t@SU21QnxNpO99I^ zUHBqK-43YR|6l4hFrXb!w-K2awctxA^`)PvJNVZDGZh$i>cUsRq@zfZ3?U^NSiF4Z zDKN)kir^lIPL=~ZI~73c0~Ki_Y8Y6TmAeE9B0ET;@sKKf84`_01i%K?MPy#)Gk>el zSFzv~b)KdQjflcV7d>5xgw9eTvr8B526-q!U`nHNlUWVsW*@%J-C*khIdp>6enkuJ zK!fiAA)!m97np;nWx-PE(}nv%1L=kkx+(o1l720C0R5tYB6Jd&13%2RYIHV0ge?&~ zdjj~g2o3|kf_(tS0fB&!fDkb(h<{;WAR?Gf6bKp9F9IS4L;#2ckj0oDwV~j!6ozR) zq;d93Fue>ASxk@GEXDMwjRFq;@{`|h{3~!VGcc?KWF^L_gv$%%Uxl*~#9=0eR|8SO zuqu!>goQuUFO2EcfT&}b1!OJG*Ge2GJ{~O`*2eHUAUe2Q^l(@o!v;Wp#eeccfFjal$Y< z#u>-yg44U=`n3&*-Ee+?$Bp&C*?8gVF4594qKu2x5J`eTIe z^L9TL4?1u8IQzVx`ui>Z0$j~c5WcUMQk=dV)1LxTN%+2Izs-3x=PFzbYcLzs{xlBP z;yBOXIO}k@9+%fS3^xL4!tu0VKGD9k;yBxJV=vzQ;mz#m3KzS!4)0ma{OHxM)F7 zJc;E`6y9wF_8=n43-(On!Eb;4#`FRhXClT&SkM!`U_3Ecjpp^%{t>{JP(1i#jK}0R zI$DHN&1p+gp>?hzRw7n@B9zk|DX=NoNLom2dxvs;$*KHuGflX<%=XjC)?TB^Y_lY42Xoq-k39yfHM8=4F5R7f$tst-Drx z*oH!)PYWomx@FZo5S;6pD{{3*s81F7{r#q_-nBaASrrp0rb+C=d#cQ(%s)e%;D#VO z+vDcYEy>lZ^16zh{j`tQ_#k1z7H^{+FV#o)yNq?sW+cC~Fm2T_l`?TQ%b25_J$gQ= zdsggz(V2H8OLA{Y9oT>3=<;M!uXA1er+Opy(6PUMz1Aq{+V)I|60?{lw@fBrHmyas z+p%oTu-Bs3P|Rzp#^!g4kKVcVw#30PFe&*$Q$%@KH zWlLz*oZ5#(lI?pdDj!r`75yX~_UvzlXCUQ5M*Pdol3xm5PUviIYFaTi)Dq<8;=Wt5 z7OqhfM&9r2_fvnP)>d+QmNItxIM`~aZIfDhc3|c8Ba1|9{ND+IUd{fAR!$2;*pWH2_dRy}NT+iMb zL&}5=HM=Y}R{qMx%zbs{?M)UBL>K4hG?L^Mf3<5Gq-=jTVsEV5r2OT$sT_6h-9Tv% z<`8Y}T6ej9-YN&0vbcVbnKE-jTY321lqCTtCRjFIzwP)eVYDZ4`nQ7VjwHd_sbZm# z&DI@Fv-M7XGj&flh>xstyq8ft<#Ov*UHaC96BnNDEqD~~R%B_Rk(vEs;tNb{EMjzS zk&^52Tor%a{;IsTsIivgWb3}>)~^lMW*EhKthMIPry?ZUN7|@MHveH95R{ZzyKWmp zJ+Ma0_!kS_em}{}%w=;=SG~OLa`TJl$pe3QWJH{}+59$E-p(Z{o4H-GGi9@>!V$%k z;)~&4lDh`~zGL@tS>0I7$dkUsPyFbImj50~PrZM!Wxr^D(9v10@!cTlovPKgMNQIg zSL9G<#Io|cwk&a;I>39{eN=P(Z9|Xs@_Kw{Yu~Alh~zli3`)D#HhTIWal4$*zS{fhx|YZK4OFX7_nj`t zUg&@Jo`Kba*ChY8_12uLt|yO|RB|;O@(tHFY@3c%|JbgYD^|GY z(X`{ct3xw)2JW0ycHP1yW;&D!$|r>fE1K&`zvy$?;4#{Cg?Yqdhr66C+0*P0tK&=F zA}ywgm!|zqPnq?FyfmpJH+$H*>|X~B|2Tiq|8i?rg-b?Etj*&$MPV-w->L64Fc>-T zM#pnmfb=HYOuLU?onLLuKKgQrkKUoD;}SgczTIlxrmxHb??+v%{y6YtFepe|rQ4^| zX{Nzz^2XRJ<JIi3M-n9+Tg!6tlT4hSIMG!S0J5LhiisPy$IV9`l=&S{h}Yfo#`l5v*0C%kG&Ni zzqH#yM*M|Y(uH-;q>$1f*l&CCnbxtHwBuRJm^OuXEZ%a?#~sN?-`Ac>nxKDO(w^vgtKPc;v{_20i6!Y|9heGADIcx6t+r+)fspl#;heY3#DUD2C z-mxS=XVy-9Wk5eK?H{+*|D0|6Y{UNeaSLlhUf6JO)`22nZdI)hIf0*|Q9G7VzC87- zp8J}bodOn%H{MG;a8Z55lh+N&8Sm!SrIycD=TE-65#*Y~c(2F#wbb6)T}*%Q-6f89 zvcN^c_CM*9Z_hO!mi_>ltY2<;5?zD30a7D9k)7Ng* zXCC~|i##?y8yJ4c_NJeh2w!B<`G@k(>F2AOOkUYVKGN`x@}I-xf1e}TfZqpL4Cr0qZ_FM6zoQsN?;;}@*1<3urv~^P#xQzbx{hJ={&WrFR0h9; z*x2RZ_X-xLBKYmb^m2dTw-d8R>)nRgpm)s+7)I}BXR)&bnrj7izIYF$48w1MHfYoL5PG5a(i zv6vnm7mkfZ?*!Yicw#Y(+D8Kk!7zHy_;v^J2jYp@yJLc4^sIm8h}olkWMi0(30f!g zo@ayE8v(JzV%Px09OFmNhQ^p4?VTZpRWUo12koOK#*g++1LH*R;>sA7#onPd=$eqn z_{oM55$OGhnGl3(`~)}zC@MT;{vm`y*tUU`uCusHf8tg3bwGfzMF_Z~5y$53 zA=F+tipvZ44-J0_BnaxLX{%|@>q5gKfGQj{66O%d9IjWSue*PUPbi15G$hnLJj^pX z#N9hIILtqY%X1Iog?e+t!~Gx*fye=)?W~>Lt$#D;5JY)gFHfF(P^d45Amkqs52Y<1WR>?aNt-y*pnCG9}*rJ9Kz+PbG&$=p%Fjo<|%(P)!n@!{ew8_9IlUNWKe{9 zkiQpr6BMH!&h!38x%q!Y=^x@96v_E-q-Osc+5nVKC_FTh=gkcyxc=|bSLX%AxO;|& zbA!EtxN2Np5IVU{ynMmjc3zyoCJ;*+V)EN}?TEL((h@p6#_GD5!kkU<;~bX^<4Puj zPZg0N5EXy>G=Fd5qcoj*-uAI_K1Rjlr$;!CaNBP_>g=4>x+Xzp_)y z30dQ4IZ8z&T zrB2H~alDl#?`Uw}v!Kyxhk?%1Q+F7Fy(8Qyo0fHhwZjS~tuw00s<&;DGRxdfpDhpH zpA&UyvO3$~W94bpJ6i|JEVO-J=9i_mcJ6{fHZhv} zCvB?Ms%xrn+Gs=0`45|FM^#_hEqXZI0-s?GJ`S$tp3z<^%aa`!C9jl7%!@F}E?5&6 zS>A8PEvPy4&~0`0t&)f7Ndqdai3h7JKMpi)%cJG~)%a9nI>s6iCtI|`}IX4V1QJH8i&#oLjbt+Za^6k{g=L*}Vc4hw}#gjeJU7^a~dYxfh zJSl2(r;&4hiAvN!jl@AnV$vgiWkJoka>t#nE|g~?ujQuZ4lP~6lP%W@z0xC=y3R*- zt&gmx&$0evo=1AbW_S09E!Gor%+r7I^xkhSubD5anZH!?9_NoYo4oh$+30PyU%{+u zqe~>2vPr=|1z|9>mrl=VRf_A~RB6!{i0^a>WS6b8%enKqVqi2Q!7}qgW4SB2EL&z= zpx;|uE-me*-^)+KMd*SL}IVi3pszJr`bOl z1tf_XT_n|9zd@&x4pAXfWfK*Re`Z%}tbNR~UELt1qH&|RuX~fJ@(NSG=dlWwMzQ)9 zDcqySE%_(%cDWhGRnKO#$Fu1Z5+h=R9~ILd8Rzy^Z?tDyC5uH`Tv2P(DAoV^8~0Fw zW8^unk*mQwq&pW)N63Ws7khucD6ZDmeliryH5gk-(5TmU8;Wp9eVJdNcDL@dx3Q_< ztK20v_neR4w5`$0+gjEtWa2iq|J~62h#T40p4dkYO_;1VZa$~x;r5}eL`y9xbKgPE z@AY9LN^RQyR();qocr+O8#csAdiijaeLh=|v)``FqTu%P%*_F1$NGQISVs@`2;FLR zsw&bh%+!`Y=)EpGFfhzHy@M^ajcd@W|48$`hkH1cbwVV|1>KL zuX-?^WhbiDR2}!gqpp8Xm=>{PF|*m6S(1G3$@*?J$FgMw1p=eb);HA8t@jJurX84_ zr!7C=8U0Zt`^Db64+bZMU#1k6v=s)7OE;8AHdjSwS)Nn%35qpxW*eQ!uu)$@bQJej zq5V}hbj54Hy@m6VS7rCcL}*<1VXWw*OEMZV*)s)8R7T7lqfdXIla@~2V943-F!3m0 z;=JQV1HD(h`y?h4`r=|nV@jdGJH1C2TOFI+CA+h>_~P}fnf-RN1BEvo-=Dl_^k)2c zn)thAmG_>m8OXcKYl+m}9nqvrKl8lRQUAmBt^q#rt_pwK(vis3DxEp@Yu%ia+$z+Y z#y$;S+#seh^UHs!ihVI9ryT!vm}twnma}O0jlBnVPbK!3>=rhflMsv4Wh;KHYPM=- zBs&;TA~pnFw=H!dS*}$6izq&0EIyMA&koAH|HRw9ruCANYpUJSiWdzYu?m!P;yM~C zW$Qv!tP`um6RZB26Y4J!Iw+ydCfoc600960001EW-vfWMu|W+QmLi;u8trszjrNFg z(6IyINE{s4tCr}!<|-7XtxD%t+SW{`jUtTangEqr`*xdO%B9gVBGO0(r)8Xe-{B;M)pan;id6wFb`X zD?8lxR?iysJJDDu!Ft)4;pvSnp*J1^`u`9t;SgT}Cir3ZFtgP%1#Y79x%}b~?HH?x@U_LlvqehSfra%ry8hQ6wqu z=fJXBXju!iPEQD9Lo>%hGx4So8GU1;M&Ex}IyT0_u@MLlqw_dm);P>-9OX3*jWbZn zX1o^cAV-kFcLW`Lp$pjwrScGD{7VI5EQ(;Y(R^0#ghYSqp+ zbgGJ_g4Nbk3DiS7uM>!WPhg!i!CP8u9buue#f2u^ESMOjDFAUIo=_&Dd=rftMLd5g z^sGtHvnGYwOo~VrR9&Y`nXiu~A)zb|O(y+3nf7y_-*KUS$3gv$3mYF7p`WU&YRxM3 zQbnxbanTA+Aqr0MdV~}o?-s+B_0&=8iKEuD7*~&?Y+&zHXz$dJ!BiojO*I9ysYLoz zA)pB~rhq1p4s6S(6_H-LGVcsboQi*)&>fQiwdn-d=_vUC6*Ih!po3#pyDRE+f{m0} zc@jH z>{dlw4s|&R>T*&j?<9GJsfxRn9X2}6Dq~enl6FYu1l4mCllo#22%i%&R+W8=CA*j| z+1k-^nWnV%zA~N<=LCBofCn%DGn984RYf-{p#zit@G5j%gVfCb?O_P5T8!;q>`rF5a7oaT_VFpeJ=00nucv=tmpz5`>nYr2 zPa$fbBD!pgdjca20ZW4hOV#L74DdsfrLZrShEOgQX5*!L@Tx!b9Ikx%4L6C?((2=xf-R5)1{R*ezdY2ie4THST4@E%jFptNkNmkTkCCM zEXNyS%Yh#;3V(WDo{e=FgV=kW=Fiv5!A{T$pU(>QzsZw>W-A2DS3tv8geEH5YK^&` zx>0Fo<*kjGe7dv_qrL(H%cI(9B&wZeO5M^tS#BgGjmC9AQ=orNlQf)}Rur&A<;1t zx(+A;9ZoX!ECwPA!+oF}aIBnJxg1k2N0iHP<#JRxHl>_SyG~dmpN_3iO%iN%oYRK{ z!59K3220Lip>ltvjEXv`WTiQ?mTZ?s@DKu!=3G{(4xKY1xFnmr9nzqrN*S#eL2!rq z|GOGp+!RR%HLMJp1bxIyKH{wVD$rqsl%Rs0sKT76LY%0=ov4DHi1b)nsDGPU-)d`D z+bQpaXi6V~^3R%Lo7xc9Fv6@3S+9optq$d^Hco`AK}LTUidyZ>ge>^1ApvBKW!S}E z8`7**D>}zCWLKCzuH^u(l}uG!!Rgy|R;*Xac8;n#W@#tG>+N-{>(-I3TNj2|6ok$o zR-S>wBrx;LkmyYP=vq4#GBfm~GnqPP5_QhxK%8j+VtpugeY-%cXOh{2v#4L9cPx{UZD$i2P z>cP@56n_>Je^w~uETj0dBA47}aW&2kD$iCcRWB#8WOdGl>YN=4J=>^`s@dOrCBR~v z4IQ9ps@FL|-?bdd^a=353A3I zs+=DRJYSrl&X+TFB!jL80s=qzK0g~v+A8OT)iSFjK19a2)G8!`l>PkhFAx$gfc9Mw zT5^GW7C{vYXAv%t&LUipjUBMa8U6Y!f>y;jgMg2;To9OZ0YKkZ^a9vXo5NO{bt`Z4 zcQb#{WwRCQ3LGHdzZtB1Kv}g8o#{&Y@bJ;==5UhS90Ii&0<{^*BTrAXB&}v!j-(fx zLlgNNxrJ_$Zy~$dTkx}_Ew1j1?NV#Gg>G&9FIWks{DeyR36b&>_8>r&berayGecMK zX95>OXf6zST`25ATxfbGa3N9TLW@5W5NLl)&jcMS+PI0^b8=)a(|t zsc}g_dP(R;;F;(pp>RdeN97)kcFJDs#7?b3+1={_Oz@-uD&#N@3B-8n6I=@1Jk;+} z*lU-D%3dmOEUMyeRQnE4g#YXTKy-Ofe|f0FxKM@5L-vYbe+-d($eQe8UoJv@IW&I- zGwoa~6^dk4q>EJqPOVPo+DOuKIm;NfLf%_LCR=5gRB=zif)J^#;ZDCFaIQe0T^W#G zshBqC2f{(%yApW#mBhoZGz7jYg}`?u=#Eg2E5pF|^ALcaha!G%#Rj|SoO@2FIi<9! z*!hZn*xKA|mvCqOTo_hA_iW+;@G5_jK3^q2-MpIbPy7NS{0jw;H6hPy zgg|wTDNtQQg3vWWpb}_If$AF4jn@cCb70yv0;1Q1=1Ln6*NL$w-I3vc9gat;UH6n2 zPE^hQsmO@rP(+5L>s&*$0|xGQ9i7Fl4~bBJ-+(o}!4x@fXfJZ!&|c)c0jPfo%DT>Q zp$wnhB)|Z^F(AEBj8->7FT64A`5XEEjVkJrwbzyGVlLfe2P?y%5-kmMO>iFV-_jwD zzr5K2LH;0_OB=|0FrG1)i!Y=*ajil7V5N(L$WOjl5M8t z3Bu;r0Gr>yE(*cV`>lkQ3&zb5jGIFpZsuUz90kVBrZo`) z;}!tMt*~=KFm5AY+-79#fpHrK)PU>nX~5W?-#mh4eR>{0-6Vu&Wj5_bY7DWz<&UO|3C=A1NsbG0UyZK zW$qOofkysf`vJAu-%x+7?E;0l3WYh{gQ3(1q0|RM2@kTx?1QGo?1KOXZwdsMJw&sn zhe#Jcgjcf<1^Cf??_r+rJwlm3LYO~-nLi>QWqTBY@MzfjQ3ir4=@NPkc85nLcX%}H zYP?7M7*+i-qWWWO{r#A%{o_#k$3q5>GwmOb(Ef2r`^Ta7YzTin5&iT*c&_yX_M9j9 z_APkw`DAF~lhDK`LxY}-IP9hBx;W3-TKV&dC!?PkKSez6DGNU$4afA;A<@(1fZEeg zXG~|*`Dw4kYO=}vGzJRl`V7(a8RL`WXG7hdg}OZ(Hhwljw`UD!X`hY8@;Rd4b4Dz8 zghV?CmOG%nn9hHw?+%1z=;%A-jaSUIv-07#QaQ6a+=ASJasLCc>kqUH^ZKNGgSFa{~(?hf5Juon@oW>i2`qO1>O{q)r1XgjlR>8lZS5wbZ-T8Vf=Ut zCSh-}2RDEJ39J7zt8-!}KMg7V3sU@-Vo)q)R)@p*?GTo?Ls;Hce&umWl}k;|{OjKI zfP?hg=3}4l5a)P@2WVHpccFssW@8B@Fs%Ixto@63s5_{A57xeyjdg6&>ISj(J>9KKZcS&4rP2CF++W9NK8J4P;}<3n;)BOGP;oIexa6;$q0d4RX3w%ESK zE~vq-P|hxS-(r{fvCA&Wz$o^@lb2oXJ$c#1pS=7HTKz>p`Gpnh?puxCf&U`Z?hB~h z7oi$oh@<5TOFS5`m;Ct2*e~3Zv2JL^W`2Kx20$olx4)IL+db|ZNZuW?-7TIG_c^QD z4s%;zOy8|yI(~nCw={=-8L;?Lvw**-cYy%$RjA@up^9ITlpu7XuTYRBrCzWDrMQQA zr1+X9i(ivO@N1T@s*(;fc&fSwcI}>!!5$%1-D65s_YmoOgj7|aF{P?|NUEwx`{IAl zmBO~|;q%NM5!yW-2slUmhQ!@(xif&%G^WJbL+tiw<8n&pmVqIMs!2}q1a5eGZ zYGj9MS>yxPCQ1qVo7+nMm}jM{dVCRMLOm{$Xa`@o*fv0jB?n)QEcgMMfs z(!*KO`JIh*7zw?&GkD^se|I4Yc0qb{VUJ?G(yHb{Nxz2@X5lL4x$Wb6=ic$6GF=Zj z1k4=8uER{WL8oiFBC%a@HtZ5$?OB7UnAX)4)4FPfkeqHrPB+A;o5@SM8NH+%l-JD| zD!U^sx)UwBBVpq8cz%Vx+m3&w;9jKyA9_gl7NP>-Wr)_@aRBSi16X%sv}Q7RwB{r< zT6ZT_xB*Qip897G^cc@8L4gKWk*LL|^`#`!rsxv$~ zbPU=h#CrEZ>h&>seIMi4qmmh50iEz`ZDo^*;KDwc-u^y$||9 zu-*^K*-v?{>Zwv?nv#`gaPLPf+Yf2Kp9${$jBr!oCb;(_R_>RL^(<>WQ%zb?YVdx< z#=cNYUp0c~6{Z&|GfICsW?^4qVP9lOUz3G>jTTbTCJXx#3;Skcz4L{XRnVWt(91Du zV_#z9{z#$y`FyxPF^x5dnh*Ck>=b!*z$&6vKSq7aP_fTRcbp$qGK0MYjVq|*W7W{_8NKwHsrXNG@tE^~%+O*6m942eFR zlm-wI#rs3L{-KTGaa~XQ{zUu!NXPyWXsf#FR=bi`7NnUU^f#+E5Yi1qL1wP)T|Dh; zH;`yI5NR+lLOWI07es}WQPY8DO$R}`K_FBxJqHmz2O(VsMd+#O`k}FH)^w0r)4_=6 zU_Rgn69rj=r~!XJI5?o8?*V7dIhah!a#e8HC)9cfk}`yAJ%nh@8boP5BwFhse0nq1 z>i#CW4@I(ua@~g#-C2Vu-G@f&K9o*dhPpuSK&u)grbgdd>WFE~HpDX%2Fn~tT~2Qy3fGh%;-jv06`eb(j`(o3zpV%fZd zormAKAoZ@s&N3X*4p+2OGkKbJ4=4UI9N{tClx++*W*bzfaOYJ(29k~8*;qn9BL?Zk zaN_%iAPo-TzJCa@g*Axs{X-(si$enJ!hLvMJ_3m!LBx+h{6`pPWL2}j|4bm|P9E+j z8kimlB6>lihq_;-D1BN`kV$}~xRHOdEBYR+aIn`V!F-^u;@H((~u1OcxBKEb2eXUA%-0>+gMauE`?&*Q2fbod=cq=xD_`LqqpiV&eaZIm))Dz>e-2|c|kjx`^#9#!2oM$10 zQYuhxb!)n`vdk|6@EY(SeuS*)5n-&xN*;-HIFc*L2x^#;<#lC!V!JuBQbzAcNzo&* zMuC64qmaC#)Wq(OP`gwqvvG5j#QP{2griIY=O{3f@oDxL^Dvg@+hdrP#|VS%7+J|< zOiCVOp_?ShYGH5GAEjX;6!7dLxmdh zoQWhrPULycL}Jb)$XQ?7tFTpuBXcGZb0#6JCz;HdWQysNWYpRfW9&tJ5ph#GU&v<^ zuaxLvlgu7A8PZKwbW_tMn_@7TC^s1?FxiB`WD^FHLkx&?_!*s0$tjR*ihk&&gA;$) z&vRqZ6r}VNqVyD`+Z1DxsA~4N*H-Mje$y^8Nt_ayBp%Q6z~ki$d0hH>qmwDP$`zk#35PR1O{XEsX?r7oTA1b2q6VePiydLLrNv(a%NV<~o-*6w`StwMvt+1aGb! z7UvO6=OM21jKe_H3={`(C>~ilFI?|{()kv@6j_%qfJ6(dSeF@ER2khN& z7Z|lyH8ryKb|8qEu)v_~LP)ewdEt_>Jx}%cV%6hF+l55ig-9p)x?iuRn{r9B8!bed z1@aalE{m+#fWT&PxK=@)i-h62NFJ_>`P*x*#i9Oh?~ z3ME?xnjjkiN!+P;XJ|QWvfQ&kn$}kEaJfQ%kgTxAE|pi=xtuh)ordU7Q>m68G>c`u zv&CHCH1pJ!V#FzOD|8^}N9JRMO;P(e{M|>V2@~9e*H`$opoI{y$S{AgkfN3`Dp>op z-(*E*BsNFL#-C&5Rx~3knu!(7h*`7g%!8_^DwLhCmN1o@BUKI$YlYk3EBQ9~O7(YJ zKC>1wUdi9L^@hhP)OMBM77UJ6)af#U9vQBOz7cm#CO;l+b!Ci-w4lZO$IFq9AH6j_Wc8e(Koh>=AUBk5Z>n&Nawe!7}3RZNrDFqAR~ zX9=QmiI0hr=MVyRWnd2NmI~)oX*V#okpb0)+PBFU-+EP@lp8gHI|O_s+X&`hG2f<7 zx)jS}nNO|e%CGj_QPO)2(R&SQy2h;c8nfPO%zCfUdN;LNY)^lA9b&$Y??tX7in0dy zC3~;X^q##}jr|VS0T;%qo`Hm%!BstjsLC2}RnLg{3YS;UboKA^aO(9xpGd=gJy~hU zNA1_M0k7IsrPR!A;q&zC2~DRInl~XObQ7ACQ?KY;qBKGjk9;yoD4e7un?sDWe8$!buo;;&(PAJzHF2pF_soImj!{ z5sz%^(&j?W%7xD99oRm%y#w3lGEmM{jI~;{Oc{E(l#_p*htxk0DR!O}>%Kaj%Q)wy zv_COv=Sf{~o~MGCgq_bPhx0A=P23Rk&5-kEl|N|CZkiF?Q35U4OgdmQ61Ca1FS^;d z)lC(UTy+alVGH8CMS-ZXOZjryK-uEs1&7`i67he6nEr%Ed`8f662J76%C^9#V%FE4X@%0z^j~$zg%$_OIUfCJWn~|H=jYt66}m>b)kNspt)g)aq83LK63{265MNao0w`DwFpLR4A4T zO?DY&h1VJ}zSf}A^~~|E*LhUnd7(Pjb9FRnQ(Ia6A`A>lTyId~M$Y<1C;X%ujvI6aVTO+cLRICSRvX3De&QR{e%s^&1`oenVXYi2lvq zi2g0N=eO+)OCaL6+1OAlf;S`rZxU?1iQ9TpI|K8k2*Yp6#)cTQ@;FhY{+*-n?^b`T zhu1vijvHCnzh`58u`r*S`S>k7t&zR_76GGMI7YXKUVh77csZjX3f#`|xE*^rocM1i zNz?7Lp=pcfb_2g&L zk`D@9{~+)B2gM-ypfRNi>8bS(apH%}DYB~S?5kKgM}H7Ujo~YCj~&=)_Op zEgE@K{0Y8a@Pz2DPtY9u2~&TL{e<}D!;@@h{7Dri7JK81K5|oao!q>Dmcs4ePACXH zMS|p0NUNue8z)bhHcs?iy#8foAdWnhjUC|Psy9UZ9h6D|eq$<-@2mb4H5OCulO0hn z+B~HfpGvVxs+g{74WAQ--*dnbh>klD_Z?iv9Yjagfa|!Uo#%x+kdp98 z;ST+e_@wZ8;RvLBfaZUB)$hljN2g9=C(-L-r+)nz!#vv7Zix%>A@FB zr@ny1zF>M5@`7c07DB~J&q7`x;rNAYtlGy9#Tmm<0_> z6n8elUqx0c!k&Mw8m0mL8sz($(!u46c)mv9ehtZZ&E)m38NHqf6}mhKs6m%2O@(slQ4X))I zL`&9yYxzbyGvgabO*k{Y5zLHAXygIXExJtq#KF3h{zElAt{QhnE! z_n!9R)!}~y*B4Ns|HXwW;-pf2EiH7P#PZ9;b@khO2|ErkZ?o=yTYmHMZSpp+6n@@; z4c^gT$SQwT$|u_;eO?`T?K{M4-$91H6VZA4(s%JB{X5225Z{Gl@2b%2kx7cZOB8z- z34b?2v3Io$;nm1@je7kBlKn-onyx=F6+Slp3wvz*7Xqn73xeTavN88|571sPKGf(v zWYK#(+Pp{LVGa0Dc~6Lm`@~Y7Hr}%gZwkIg-nM_oki3_T^$5mBt>t_?4L5drK@4&4 z;}941HoAXi7{-S8O(E`m9O4pEjCh~Ni1&>L>EAa8IGK;psrQ)^@BjBfs3hg?Yj`w{ zeXy6<;yCsJ+aUTtdiVVUIk>6fsLNV*LfW00MWIlkFP`lrj=U3@yVKZP`a2LM#ZTO3 z2tI%NKw`(okmzG8)_1!5F^!X3>lIE7rKSbx$||JZ$3(r4krE%9#@WZl^o**2L4ibI z{C%8t&O|q7R<=jhb#-g4?(WK|vv5Q0w#1fN3{KDT1s^}By-&VXU&e@@K*99j9f$^6fa=2O|;Fyb`8 ztj}e$J||}Ff~@r!l%V-%DFIl#WShmaTx4VdSUqJTy0|>#; zMP_|L%=!Xp|AjHCs2Zh7%88mv6Bby$Fa(y}kZ89O?W%=z+D&xYjU?|j>ZEF_Je_}- zKD+4~pKe(H3etQ9QIZ}*W&{QrTN{ll=K{SWsugC%=qTQ1FKntvE35%HMxcie{WC=x*bcns?A{tES1 zzX79oOx9nQN9eDsdFYpvk9T0o$2)%rM{0vH5r=6-JR#p66HgGMP->)G3Ae}S;^^CB z+GlIZ-E^IJdyH>Ec(+F&EQuJXnt>``waev{y;i>#kaF{Q@ZBz$d24#}%)@zi^TU(B zF6cm*1y_5}$N2G%yazj4#``AXoe*UwWtN{``rivA_cNgm?&95D@>c?Dy-vM%hZKg}Ij&w~QGp*~J-sE?yt+vD90 zL7{teQ0NX-kYYg(-UU76K;~-MlW5r!HSH;n@}8FbfgGof?G%ONdqZjXSdO{D{@zl` zD%j;zUf(gR$2J75C+aue)4hKzAB8u zDUaW^6NeX7$NQl)f%?<|9G?TE2_6z0D5VPV{!G*U@Yn=Ic>rt6G}?deOCUBpyci$Q z(t^^x_+VrcxuH0YZYYiqHiU%1(IH_l>1(M6hwu&>5)~E5#lCTLv2T2+92JH}M1`Sz z=nj>mf=n3^732o}y{Mo+&1sGdL+Lo-gR6!^R}&E&4nmX%?PG8_ND2-IVI@hGIF(7; zeepxlc3->qItouUGz))m%THId_f#W(C?AuDnwD0&#;{Rm;KMfRoI+uvPM3=tb@3nU z11i`_e!z0aA4om<1F|cJk4(f5gS3aqyK;&M56#1nZHE~FJuG5ZPFG5c=lBRnG$PEc zra6EJyB2YBFL4~*ORQOlyB4}a-nC#VNZU~^5eVud#O)}FtcQQ<-&&WHY;eR!5HLnU zO-6?KvI_=7VkALgBr+ziR_$YkGBkmBiBM4~d zBJKDQhP3&J=(PC=!)zvc>`^=kJSrjyJQ`6R4Zjr6#tq8tMMEJ__i1K(V)`$BF^ONJn>;n_fi5b@#Jfxm0UmvwloQg=N?&AjQ z)adkqG4Dx|acR9aops%G)w7__1pk?V#Lgi8GXtqH!{9$NqWxzERzh-|nH>9>QP`hA z^h8(w#!rwJ=_f=i(of(k=@aBdx=b0dNS7Pz@AZGBd4YZc={w%vvp8zAB8J;+L^*r! zhTCkU1*wS`XS2aY6_W0AnVZbDV%_m{By8QyM;6T|ZZIENINz93%#Thf=0~P*3mE+Z zwP0W10!}k6Rn@6bvXvX-LYf{pERc>1eE( zZOhu9C6)_;dpVD;%jw6(bP2u6)H7lQYPo-6ANMR*NIP9CjL@%O(6g|3nqcB-+{Du? z{t|Pe}T@#>&YfVqSh3hs5P+}SQ>wY z7N1e9s9en^s^XAf%YJ7^_?^wY$(H?2ri}1Axk3NX5hC(6o98b)?P=!VHAkdu7?hR! z7@k&2;b~=*i>{Ph)bLCtYr$tKQHlvCsC8@kaZ0xR6V&l64-Z*mvX?bKPLcWWc}o|% zk5m3RT<}Agoav!V>)yeNJ*<_vL92h{2Cc?G+3Fs;52q-Yg}ZKR@27 z*peq)QEV$9?gbJs3P@VP*wLyc>AwVpWEUdy`63^ZMb*}_S4&~|bfoI(MAg#~o6{rT z0N2$${ccq~tb3Ym6P#}Brqc{5S_Ju80y%mqExtC|U)O3zo|B>gv({+iT4E!7oU;}qyq0%~YTen< z#kqQewMB~Qf!_{ECDRITk&1t>ZNa~!5wwnvlXb=sbcQ&B&J;ZLOm6I%(g->;dIYT} z-MJodTrZEH^${azJ=bf!Jc49O!F_yF*0cOu$SF3VoC19h)BgY^%oR47l88+>iAYM* z_9i}UZ!*p;o6Jds%*S|?cb_@&L}F89IrCq?H5m4wlGoc6qkmBjhP-1AY(^PRwH*|ab?Hp8Z%3z*#(IJ=;NXmU?_ z9Nm*1H{Fx2E2`3sW$}O5`({@b&LV#TDSi_8fE3m*G z^UJ|iY5|;=6F4tNs9kROC!Ms}isWu3a?w5f@vYG-41EiKrYs)Q+=@n* zn5$pGgZdRwLH%b$)t{lJKa;cPpG9QPKjS&^&*bb`ri_1BfBuXIVbx%;&XqIG8QXGF zk%-O7pM^03mqIU=mYP>`P_IO32EH~V{&Ph7b9U{7BEYD#22l>8s;gSF%0E&?<{>{P z(S;1Ls}Q5BxMEik#aM$V#jY}~jjzJ9048DJe<|K3xeRT`@g+RXs8hnkD%;<-ID1K0yAkIl+{9m~{>hCdx-@PO5cr9dp ztztEOU4BLhU3R5taK~SZ*k5a!d9F3iJXEN;o3ABP#kJX3m9;LfFEoL$UQ1xT4hpzV z{Yg!_j+k^E()>D;N!J-oq7uy}T}Mp1PR)MAoa=vxIoBg4uIEGZdSVW15H&Pabx&`5 zS|7>M8+I&qT<>Ctr_dXS)Ef}n8=|G&00IJ<$!`dq5SKa%(C~XB_xBqu@_|EG`EU4x z=q{6OP|~(w6iVZZe^Da-Yp~x%R^2y2#y8RXQB^et@Fv9frf2|fvhe+=`@~pw@0*P7 zO$~oByZ24Ry>H6KdaTRXIlbaZHKm%{P@Z=aIcjn<(&y&ASx4S1ts`%i*O51y){!@x z*O9{K9pe1+4)I&0?a5oBwMnot)}qYExE9`LPJDY&7n(OI_nk`%EtfYb zw@35}cKq#ZsBM>q+ID%UZ8r_I?a?o~-3@8)RyF#$2;Lr{B#?_OoUVv^D61G+&celMjPK>aTj zG-PPsE2DicIHeBtL|@m4-=}9HJ<(N=LX2oX_u-_gOTq0MmIB>pcn|V^NOZsDey#(_ zyC2EBzujw4?kB#>+8e{t{g&Yxl>2|_H7KF}4?wyH)M{*YSy8TSNSATS0C_-$zx)8v z>H#GA0b|g8KtB)AXR36qV#;)TfNq<(@*YN99=2i!x2D%M+Nq{hc2m~*UPN$+H{}O7 z?mrJpA?snXVHqTXk0K2oMH)P6#d^Db0=}2dLgb^q1K=`0MB&mP4&Y+Y1L7l+#~6fv zj|Dlae9HPU>6Eo9q=%(LKFIXP+!Y6E8obp75qpd_t5!YlM2#qw0prI#ogmZ45mQA` zrMj+F4eFq?!L_~d$J0p6<3J2y6C~{&k+}arbpK(+`nrDSekwwr!d96q4-fwV1VMJc zC&T9Vi2d)4&lY}fdbaR;!?T6oXJdnZyqHkqxM+>*qBTt=Tlqga;{AK9;}b~06KXx^ zwn;6TF=s}7!;A*DYx9IOte%i#^%HDn3;_5|k(DXZYzTdLAuHpre72h@|M zjN?gpq&+Fe9rO*6_)}J_kEfG6?wgc-d8W}*qDD`dG0@bzc1v1F}scIea3 zpdYwT$%jbd=tCs&XXS;~vk?oeXL$njth~^YDI<2W`Bcr|cJnkeef}x(2Fn9g#bZ;-@av|_{e0@W15??nlJzZX#^jn#aK zne~$4%U|)Az5GM)f>-xaU)c>_WoEo8nei%h12TWW?@`2GQ_3!CMi7$^V8qb}Fmwas z8s#<98s#;Zm3LC*mC`z0{yOhq^0|sQ`dmd^f39L}$!?~F9i17R;qyAM&YN#u#}VOm z9zs;3&RT}^RS8xTbP{@h`188&2)M`I5W?FVT;dz-tu0lOSP*>AkfZblZLgml7c&+^ zK42uAjd=?(c}xARPw+ApZ+R?GTlA%a_&ZkYz_exQ&-}I6O_fx-SS;&Bu!fN(nD20x zBi~Wr+>I{xj^3p#7E^j-l7}AjF$G*MF8KcniTuvD*Vi75S`&XjuUy(w8wS?nj znpG~-=s(?$vljXhHZN>sPjca9<#B!4`7|Yp9WRD=dB;D&X2f$%E(tV=+$J7Jw~5D1 zw~5E$ZQ}8LW9UxOs^k1m3&P5TbP7V3D;ru!zW7Pj11cCK)&3=3y82Vd;!~Fe()3fJ z>8D7UPa|CKQ@z`NQ!M5(?iZxF_kC*KnfVOTea4<1eMXe}3<>^B3WBPzSJ|$ll$({( zrFFrF5936V9(uSW@FBcm@&(d}+}|BX_jkv?kTm+j*-1#})}6t=&7; z3MHjev<+Vi>ahfCPcVK%BlqCW-NQR~kF<)}<78%}#Lv(9T>1^^!f%j-Z;abG- zRE6|P|NqH<#)ddb)Rfxt8iX2+T8%eECeV|je@9CGohbQtB=PUk_)~@5yzaqEEgzM? z2dKbQ=I`zbhIdB--EW@I_nVh1g<=t3+ms-;qVrZvQ>Rd~q8jQ76(*!qI+2J-ImD0r zCK5Cg(L53<6^26V6SQ7T@e@huZI?txCZHqBKNB5)Nqv=?kQ($;Ra~50WTR7Tx(vP` zjjjespuEog1$qG88=g?}%OK73Hw0YkH(t zr!zU{-80?i%x5}Lpl~Nu@ma$yLxCkx6`aHg{l5x|sq%6OU8LXytW}$yswCB{k4B{I zwdtmRO3)heuh!|0eke>Usyv@=X%Uw3iE0F7H3703F{_qFn=0(7M-IqcnB#V4IeMZC zk<V731= zfmZl$w1Ak?Rdm$uf}?ilvbxjsMwiInXHWEh5W`kaA=LN8a`_ePiJrpDs|)eW>yVjd z-b63bXT6YwUZ$B>*N8K(t`KJ4M6YbD&YgLc-|LANxW1Zp^;gTCskljhHFRx-PQ{7d zNbBB2YjiPuqIZ<1^)`80Z)qg#qgX!Dd$*GTXab%ABzp5*<-~rh?S7`ou`fP{=W5@7 z50UiShy4Ogj2A7sgw2or!m!Vig#+bG)%{v69e4-2CILVWl+5fe4yFMNrvYfS5iB+W zWCoIc9f+h1G!BA+ra>@J9s~okvBMXyQaQMDX;f>bT-GDON2$hHXVql#HI-F%jknyb zg&+*X9Xg1pJqYPA$f))pliGu1wFhN?W3%U`vv!R>#ag3;!@*mw$=kMNTQ%v5PO9|* zZO1zAB}FUBoW%Gg(Rf*p|IwHIA`jCH3QIBH|)8gdjEqVKc<&0Ygk4Fhur$fFaq~ z=nZQoY^bcM+pxy-(_o_@bl`vl#n7S9nxQUuk@Yj%sjqLRULhLIzn%K}anMPJdWZjf ziW>k^5SIhDM`_bxX#X@Z0`)ujKtck2AVGJPq2EX7G}}*$P@j*8de=TNk|!)9E#a}M zhabA4KQYP|3e6iuQ=QRFC4I-e%3{lgr&bAcRlcUK%9O!DNr{uB>=@kHV|Zte2@C){ z$M`&MUuwKD+{r zbOlN>6^@8{WS=;a`__@|T)dhH?oB7Wj%Kot#v`nS5gbDZgie?!9q1H~!Y3xW6CL2M z8q;&0x{MzJ)1|^$FI^1Jc?!Ka36f7jy^_X%;){o0x`}PHSf)c^ckGo+h95)#dmFy+GV_L^s`vb$6~4tQ1n> zQ4vicjPU7RzasCPfo%p|I+NiulkR_kx)boJF&4$4N!D{uX%#pYo0*&nkVK*zBs9? z!JDW1#8y1v;4l==!nzE6DCUc2VHr&bDga|X-iKH~6h#-DCl;6#U0}hZ7(na-7j12sTDMOsdPRgaVl(j zs!H}|I-9!{`S^n($BuF;GEB9vYRhNnp)FnBr)gDxx|D9J*rl@Zoi3R>P!3=OdH3)( zqz$JgGzq{F+rJDF>YL>kmolxbbOr0f6{cq-ry1ViP5dbG9ZER?_z?^GKN4Tp(Z%MKWh;&Vtvueg zlJ06nCbepl%CyLNl9g(~c=ECVxDhnj%{c9(n zxP0)e6VZ9=5MkS*faMedIlxm3*;rTa&8*aa^x2CLZscz01b(zwFl7b>%Wz1ueTIgP zP&GXp_4^V9=LIO~&ZPst@EZ_r5CPyZ6vW^BLZ!sX&Y=~ zJKJCzr7eMtICO2~!F8i0Tv*|h3Kv!+HlengtXMbYwmR!`?jV31Hjy1Tni8CU#p3T- z?d-svCGEhS#dqLBK1kWK=nmXjh8?)GXfyK;98eiBK3mvx%XkG=`;6s8=v?Do&biRgbLBXHZe$DY_2-gkaV~$aS<%2B z^JMtWi)_K+JCDG3UN%-$>qZ?2+Ii>) zKel#0UwWO7U#`d4TtKk705!e9l3r%k#io~;6BqDkcY!6n%xs`EzsziCFbFOjBi>}z zwBBUFVcRTNvY9WpH%ps#o5fwB%~9`=C$462gl05;hWKUe8STDxY zH@S&Dfo@{g4PXQk@I zy+Jgwbc1U1Z>q7Y$z2A^FS@6A~I6m7C$9_!Ya_C3bs zsgAkx^m1)&25nb=F|Tg-X|T_@=(ZeLx(N18Wj(ocL+58!|5!xwlnCqo>eu;yw zYwwH89=S6mDY{A?4#{RGiyH>ohPO(aOiDscj}fzLrMK>XWbQMeT$0$c8OGX_YTh(z zW^gkL3Jj3-5LT#PcvOkUyQG#~SuDLt?(GoC^98GWym#zWGTBx*Es{MaO*gRaP2zRI z{eYbYYpOXNsZw)k;#scm91GRz%`}5J_Lj~MQq6y3Q6B>&$^T%ZTFxG*(w#A)Hk%TI zPfByRbX<9VXUk}xOh3NTKc&^?{n}F2wYO7*CSp&@Td>YhMZ3cPXnfFAIsfmu^!;qq zUvkw0_MMso*X{6D*O2AOR#Nw9v6jfM?Jk!7PoulPx@7-Z!nf}%-ADTtYify-XlI>d zNE`3p&4O^sQm(GPbUAB_6g<^zrLWP`sR_ui>iGlaQlsJh1Mp}!F_C2?xqY%|2&n;)l>TGQI)ZN zr*2wtWXbo}Cc!HTk3y?|VYlzs{&slxd=AKeYbrFIb5NFl9!Hsnj-$9fk8`xCSuE#Z z9JH5z)t^%CDG}>?hu6f<=S*JvGL6G7Ci@aj^pz8Ovl&)!E1``+*wfZoI@GhJADz}y}t6O2T`S{$+WXD)0Lky`nbZ%|K9H5+as2Jqho)6 zaa~^(^e*T39L`6}Q}}MJ;=2l>C)^Gv+$S#4SDO#_$X}7%SX<NTUzs8Fz(bt(d}&n8t~v6_;awb3|ODQayMexTm&eSvp7HQoMRN$U7a+nZQIH zzn#I|zO3KBtWWrw>qQYBRyy~vEXesN9V1dVcU#CO;lBVfIL4;QE(B8sCvKU_+iqr5 zD8wlS-CBT#SXVBtwKEI~Z3^svO3l5so+_a5zFq$>pJ$)Ijng=q5}$kKsNK4Mmkhep zTPdM&gbzkK3T+%o(=Gq8yLB0bVWuti;z3rUxBAL!yWqxz#_7ay%WTnVFKj54Qc5a$ z>6$ke7}RbTtzMxzTwDjqCWo{qk93z&Jjj<{ zi@T%n@7L#tU+?|yci#*W!tLpOvTCu z_hcK%6j1rfu5iervye=Gv&F+fA~T?5R+Klm`$3o09sl=<`B} zD$m1fVVKAE$-Vn|X+^8Gc}`!2Ob&jiwz!YFcuhB4V6V4k^L)`GyE(fwd*agm+0bK# zdm5j28g}zYv+jbP{*}Pv0R{TGh4*vOY=oln()KhLvPRU-v$-gL53F7}`#w;w{_}m? zFY`ZWi#KTNHJ00ZPJ%|3h7o8$>r4YrJ zr<8^EUQbFhGd%6=otv^lnm3c|H;g>6T@zQE zPmD;m45?-dNW8Yy58CZ|oczjj-Tfv>Qdx2<&1tn8^G&!N^AQ2 z=FT-G%%u4j(;By}k-F$D*IzRof2y0~20k^3PrV>I@X}58aB$P{O%&k3e*B3Qv%e_t zO+qT7x9)45<-&}EIXbpQu4$&l_z`hW-6j9J4vJBKlSt1?>R*2Me&6TbP8Y2xa{*Hi z>~_Ue&Kc#M4~+x4=XaBLn=DyIN<;kU<7dWVX2wW*+}<8Ys}f-zmrkkkZhHh0vB+XC z_#KG(9kA3f7FI=6CipO*XBM1ahJE*42)cP{&m4QdmDrdJ`mgo+RB|2p!)AL)y zqeYl+njgfy{W$+)Mbzmt-%dr64MqRQkox(5oZdEC<}dVJ=QimTMju8bO|0_oC%nIi ziG48iGJs@H*X{4xmc@Ke3^n>AzhKJqcKSr~;GE6*QbhKg&-An9CWrW+xO5+l*!ZT) z-#6rk7*RjxpuMg3BhPZHv#|eOX|CCrOFl|4HsL!bS1Ip_qJ2)UBT~_m?qr?)&BR`R zn%T@*&NaEHr0>#&w??@omnAo2SUrEn$QO@(s$?y2M8D{&uX{9$k=+uZ+6(mT32veP zvT7Ce&g4oXR=Im?Om}VS)c7E!hgtYxQyx_qo?kxt(M9xA#slM|nfE5NzaCBbBnXUS zVxd>o<#pTK{1X?D$qQlMFIH|6g*<|PzgpZcsdjafkNTZ>`OcpX0Ur&){Iw!KIPu!a zYPQ8_e9+{ewK5#vh`v8Zsff=I(iqCg9LlNxP-1M~UxLRLF;%SyAWw)A@hYKAMIST; zHHPw*lXmF5!( zE+PSUv0!ra0gB2f=>}K3Fc;|%svD0#dWQQb7tczw$C9=DFK2f4n<2T#MZHdcL7VvA zq~YP@O1$>da&m*wcWh@ioVKx1q_(jxNzE31-PQeURm;OsoQ%30UBl?zHwu(dO6aqi z&oA!;qpk*{R8LV7(0#@X_pnNTev9-hM@4q{^>xwoON^Api{-t80MFkIu zI?7`;u?TS)X|354Bk2?CL5DwnIUyI}%@G)F-W3!^aUuC|H8!vDfxJRPkkSfI`t-o! zk8WB_i;jy?!QPRPO0%$@cI~awES+khRjs&k&HEb$#hyP%Q#^Yv7B0g!`%5yIaIDKP|0U6N{%*2a7$4+`3$?EF*N$O~usi-z^J_8E zX+sZJn&tC4>zKKzFevAk^4)Jr>PBbBEJ_Pq>5;uuiA3I&o$5t&wyt_PrfU%`G+J;2 zTizQs?eI5k%uh&yvxI&;ZlG~AoGoI8$xEXZysx@!*?Hk!0A zCwL&s9oKa~3f1Sd(OfzdCp{ELCyPsLTVD<0N{anP-<8?qbvxF7pgQ052q#NbA`=lz z6KM9%%h}%UGVRA(Q6+6O0{?LO&Ma+l3C@DZJ)+H$y@%JK^0+_C zZA6(eh{E$vlC`3LBe%abtN#M&Y3GyE&ccqyh|I=2b20Ou1!=k%Xu5b=7i?*|G^}Km z*k4~1D>0rt`}0JB#0(!AxNzy8N_HiFQI@mtbl@S^D{%!0s|MjD&gp ziE*jeY%`;8wLNElcof*!@RdaKgEXzyq?GaVbey^7gCSynlZ^3%;2jf^g)($!nM6#N zdaIX{%u|x^oy>(;hAe#sQb7SRK>;c~oyEcyHK9>d$$0dt!NgC7)W6SKr6PjUaXLCN z{R7u7#R%}sC)vaZ+_h2w><{0Ghr6s1u@Ji%X5X;$_EwAazo~HvuyvV5`rf!e|G3#W~|@T`yrb*+w6ebSSZ z2$5VSuaLLJQ2t!TCkg(#LIc6~xo3U~m0Mm;SiWq36lx`H!E|hd8e{m?+N^<*eXVJ9 z=5O-dH1mSbv()7E)cJ`bDw*+Uo#eVl4mQkM#x*^OzA{*oq|!mpq2%3FbFtPdWb=ys z-$|%EV{T3G2D`IK*_+wZwY#&mxz`3RUKRyrL^zo zw(nPe$$9+6zCTjUU0p_oad9fnU;2Z8vmr`|sb?wX+E6KaZR^e&O1S8}dV<$vIt_|V zBUn(9MfTf7zTxJ6MuOrL*mxar9p@jEVz}lfto7O8rd)KEln^_+Y)EZNz+EqG<{_r1 z6T(Bb6#% z>Lu*+SlXvc)L)9a`E^H#i$v)LFo7C>U8;G1RdfET<}IrZKR0Jl8M>70r%?4qjRjiFO-!MKXG~Pm%}q8z*b(C%U*fw z?l0>8Z|c&=(W{%BS;|+~f8mRhMv@yeV@$4>vw+%{g0(D2rOEHcpI?mreJ@yl;gp31 zE1CXO%8as5J6X*VlhVXrjmyPNj9VH`*f&L`MWRf0yHTMU-ZO>)2$m9?4?>fkzpQja3`&`6@rxI zUMMiKkOwLx6W3@F;aDkfrt&HxNs1n(c?F5O=X`?&0g1h~EU6l;pB32ICpcpoi|@Np zni4Z&Ew{fhehFl34`f6SGa6j{l+(acaW#A9@(Pf@MoVUN#FG~!+z z^I0}Nzs@}DxLcU7>Zsp+<89Pi)g+8aasAvYg2A(EI0=%fR<}<52rZeXRx^p^nCoLz z`I^^*Ky_7-QGUOJa3LRmd8(Y}No=X6^e0=~{S42O@Wvd?Z;PX&$(q_qz24`1DYIee zN>i`SuY9_3j-s&L?jh1bTx^MmF0>N;-;mf55fK;v1H|;%Wi5mAI}ja24_$^>AXbPS z;)1S2B9H_m4=F%OkSc_RVCWvC328z4kRhZEnLwtH8T1e`hcFO-4#Gno&{N0@@__=O zASf6LfkL4OC=wz-iBJNR484F}L9tKQ0DXksL*-BvR0Dm2>Y#e40cwHT zpiZa@>V|ruK4=&kfkvSzL<;&2twL+iIVmIxGYW!#7}2SPE8xRpGm^E^G)(z#6bA{1C>%Rsegb>IUa&7542QrGFadrJC%}nt68r*AhF`&Ha3-7uXTv#gDO?Pv!Ub>! zTm^rEYv5XcxDKv|o8T6>9qxcT;V!rj?ty#Z0eBD|hbQ1kcm|$_f5Mya7Q6@lh7aIB z@Ckf`5Fr;3a)b(@MktX>2pz(Lup?Ix4ulusN3J0N5k%w>W#l%ZhA1G~h%Tas7$c^L z8S)S@M;;;0h%4fT;1N&63kg61kuW42i9#Zgc;q>Ml7J*4DM%Xf8p%MikzAwz`GAxn zACWSo3aLhFkvgOiX+WBg4x|(5K}L}=5$ zNKhu+CkPQt2^fMoL6M+9KofKbcL}NlEJ2PSLy#nh5sV0i1U-U2;RXQ^GznUSd&oX= zfc!>({vd})IU;~?!oNTm2nPfZ1L8pfXaEJk6o>#?Km(|uJ!l`Afu|%=(wXwpvy5j%;4QFd*iIWt?T6rK&HljARk1ai%@S;wL z)j!3_OVk}_EsAsU!dkk!+d5l0*^1cWoQQ}T{s&M?0|XQR000O8aHY^xBE(+cNiqNc za6*?ncMCFq1OqF9KoVNm75W1)+Lc)T1VTa>%+G4IJ6bK;Kh4bQ$6yeczfjwVI8M*> zG=Y%Wj$~xz1@4N52 z_kQoreQ)kcI}h}2rYP@-x4W~aQyplbsQd^;Q7S8c$0h@zWMViPL25Ffs6kaKBsyJU z64FHJL{Lsd6A>j4R05JLCuOBDB_~s{sG=$;BB_C)WHOeQ9L?7?`NPRrIA)6_gJHWY z#iXDj6-bk+ln5^&ZcSBwBpHk;<-u^+44#&yaAuKJrW8|cACCuuazt5Teg+gdR6M^- zrYJ0bjR)e%u*8O?p>!k=O$;Xs(y3uN881pJQXm0KDlp`tiBK#Zo>$nDM^kE9L`q09q$5jMI4Ube(xl-ym`W*2GZS!^j!8-( z2_i?slCmTdA2{=7=)ibTR^V4GEh$A-T_J#f0;&Z0tO|`tq0zu_QVyhn*>E%g?1s~c zkQz-Ul%kANNmi95kQh~p2Y{GTx#&&;Bgy2bA}qe9YZc-Z$;qTj_QodDYAUUZ%jf7@ zY!t!^4M$^AA{dwK!6AiwE**l07??M;69AAZh$>`iQ{}XjKMc;)4EcgO*A|b+`P%qR^kqigMHk4F2vrUhl7!bB0u8kbkPmZODYffE^rCfF%TWNe~? z7yB5^WhYu*v@s<%G7(@YLUAtcHeVrJ0F+Y`k;^5}F0D7O^eX}_wqhT%jlsT(X%Tny z;_brAt^vB&%TUfb>~ntG%WzJBIK7PE-sS|DC|q($^q|)%_-N2SuMv?01OnYLWL4N7K5YhwB$@x*cq~+9x`6JCU9??OdYh zw25wq$X5eDMw`*CY!okl@?gbZBtMWEcRNW5>R?N7D_e@2SRQX?9k_ul!yDOhyn(I2wd^vyo?VXDu`6&5TZyaL zm3TE%`00YFxqA;PO6P#;(JE4t71}*;-u6Zukwm z@dLK*UAF!{+weNO=?;C%*km*Ixr->#%X5tA=Cy}*A(cgT*31Pbiag|k(H_~k>6|@2 zvI{d=X7?7FJz31`iCwsrW%kfCnhH`l{v+WYQT17wry2zgmr+b%0{iqMXd+a zs%+G1167ReVEA=rYFs>wyw0cuS)YF#d>9#CtuQR{P24S;fH zqiSoPi#PZ35VqTv!7Ha_NB@*$%vkMw=Gcb%33J8|>C++chrY-jfS+<g z1-lK|cFl`0Ys-bTrZZ~?W^FWTTZGv*u-lkz*S-j|?YXdRIm|j1 zW!8~@Yq~wB*J^_ykcJDKx&?MerU#nuWkklKw=-zR!hXi3hY_KnA;F=)(I=?R>u>?{ zPSV|g19HE6L0xZQC>RWV3ws^Zv1l{sWn4b9A;g_7yn{wNpeO7HuKmyx_CrJGq(XX6 zh{gUk7@4kcFjb;=av{Ad^mU2+Aw6){g3b_sb?b^lTqwIW?CK}oVG2(T(n!p7nklj0 zCWiF((3fd7(N43s4C%&B(jUU>%+pW0M6mCrQD>%cy@|cnOb-%wkZE70+eCii%X}Mh zE)DInW_TCLu-QPO-HUaQXirXBy`LOx?}A|aGW{vU>H+teQ2Q4=LNnHZoLIirCcdqI ziH91dobAr03h@H&Vmt938g*g8C5XJ^wyi>7y$mUG4fVp?vH`lMefojvhI@7|jk~%e~y7?z+@Aw=!U?>;ulkwnsyU^GaDiN2C3% zxQA(j0Vj##N#(ZlxCb`m#l7rKe1Jv=IKkEJ%;QDB2%etWFCZ6C_!U$Ct({NGfXfOhDJl8 z|CUiSp_mhXhha#N8&Va+8VW$lk3h;JhOZF~4eq5(FC)ZD6uiv2i0Up*X($M0N5O2g zh~h;5EF^O%)5-epG3JbX0H^tchm3@W&*XEci6I+{SBQnRI5vi3G>Ykerzox=$xe}X zS^}OMCvaqU-3%N9|3lt53d8zQAe@Ln0u0Dzk{XHttK$@nQbiQ>Z6h`c%b7xf+msP` zx99|pPI!0ZyRZt#F%3n*=mdyzFdM;z?qB+_?!z4qP}%;+PZ372>ivm{I{Yqi84v ze1_mWs6{RpT;fiL$W-UL9n;;4#4Xe9M~+PBGTs0h-%(_O(vSj?TIz6`@uPCM*EOUf z4z)szG&jw4+w%Bsh9_Ps7^b_LVXnF$dud_=AAoFw?2Kz@9Ec5n!*QH2Z&RQCCUAN* zG(oP;YPaZt3(^C36v?vNSyHW`Nk~n*hNi&Tw)wA4&)5WfUVlw6C1Cyxu_t(6fYq$1QdNfv$N1;QOpW;9Q14HA84kX9#pL zC15_S6EMD!ohR3Sy-B7Q$Xv)F^Nfa`12R!4|I;n_S>_82-;B@juyUpqpCg~oy6{=1 z4xeM#4!8k8an=J9_&nE)pJ9w*Ak%3LT?9|3;5*6rB0(Ts4daOPTE25$0^S{ZX*nTx z8oI3iT?t*#D6oscb9qiIWi)C(hoCpOXlQ}gC9(m1K|msZjV^;BtR%qlN-Mq!SIbrX zYSCZ#PKLbLN}#5$>=zN-81OdK-wh0?E|UxYQ@Y<2M7vf%VR#0Apex2e@w}mUL08D2 zc+pT?*A)r`oGB2xX>>!Mt1$mG%o&QJ`c?T5`J>zJcnUt5l^}XykR_Y>_qYNWb{Ki4 zKHroJVX&ruuGqxqnetK#p0miCOt}$;3kGfKH(N0E7P-zMZ?wo8OnD0ox5ZDb1+(5F zud~QCCVnf7<^}qUTy61LZP7a|@>+|$#v%)*+ybN3;-}4mS!I!{Eb>Z=TxpS4Smfmv zd6`A7u*l^Wxy&LvEHZDAOD%GV6>~qjeqU4tZuDP+ zi|vzt{N)=x$$t>J%RhLqd+#;w$KTEOO!pSg9)9ES&*+04HE)dhuKnY`{`ptKZ&v>D z&+uRV+xK_;?Kk$H5brjJ-~OZP6F+@Vd;2SYzX*O-`q?{=ZoYPXVEmQ1)OP<%kLq6T z8I9(B@#EuT?={uMN3W!=o=ohIkAUH|?6eKmdUtw$5wtN(ZZ?LYbV#9L=p zxn4TAxmh}Q@IUddfBBu;m;dXvzP25ybz<>M&u{m>p zzn5-(eaVeI>vrE!F5js^pZV?a?#B~{#!G5GH}LptKm5XvN^#)q>y zYc+rO)Aa+)mwvtFROGeM{k`s}da?D=l;_G=!B4ub&W?B7f1HY(fB*B_zuEremG9;K z@WY2!{^GU9A8ngfmVTM~`TfJcyLa(_!-}pQZ$4i3dVJls{;yu77jwny;_A_=EiNe|~53Ta(}Vd}HbV zY`A^>r9)$PzxiO}r5Wi{_LKF&o$p;7dvf-TzP8`rcxU*9u{)lRWOw!Tzp8nEk3Vw# z!GAyhAbRoc?4w=3?{)ms-j++XjjqQ%AAK;9ckf!& ztGcRtZ5I!Svy(d%2?+@UgoF(O13hgmAWk;UAS4PWXA5^1D{m(YYiCCn2o&sQ;o|0O z4R&|8Lj@rrgFr|aI%D(8|pM>TC-_LWej(Ax>aBl$S>k2P73PJ$JC1 zJC~!Cn+L?n-P6$t?8XIu0=hXnd;H(n|AXM=vH*HQpdc;~*v85e>cItt0ADgtA1-${ z>;Dg_@n3?3I9WqILH}E+!hZ+W{y%u=?#`ZW)?f!DqyHX#E;p#pOD~*kAhw)fH>f?5 z9MBemg!GmnR0|0yA>1ct(ablNdT}1{ZZ`WoYGpn?PAy+%)1G(I6p& zBRlPJ@oQpAUUS+Hce{rU;JW3FnM8YwF9Xveq7A~tx=ZESNdb zeBr72-9WFdvs>CfsfTt@6j6Di_jq#j*ROL6hkqr?8p>iuqXv#aEm;^r5p}KJJwhS50Z~;eoD!9zw3tf2X2%^*djspMqo3 z>ZRV;NH2Hp8_d>6>-#neNod+^Xu9>;=Za4*eoG_*y!J8sW zH}pJco(xYmn-ui|<{U7Y_Sf0iHk-PML;MD`x^wLiDizUxw#p<|*490sRsHUV>!aXg zllrdI-A<Bt~3+Yz=p=qxR$L4cPa%N8NwOXgnmS`Nif6v5$~>WWQR@y zHUDHczGB1nt)y|H6q~*cPsE(vjD0`tmk?@Vj8!7y4~@$|yqaoRLzU9>ufaN-Qy4Vb zCnVa~VIR9ZETEX~n6VM8;HNO+#g>L|`)sDK)FEiZR`YIZ>@ zrrNoG{SdEWNTux8QhV)oP-DNbzPTrRT|D+rHMBGA_k%-V&9Zma$EW0bRNxGmRA$K~ ztMS`ssAR=c1#55Fz*v6eSzXEM$DPE~_alpnnIDtujR@Q>Ww-^)P7b!c6BK5|J6{`+ z&5L(hT6rF0b^1JX+7Imn%$EE^D_HQKiJ&fjQ%E3QLByxm6rHcErSAUW8%E0@=u5=5 ztqPrs_ys|#f&i)@{rr(U(l^GBS4VAFGGJbAc|*P)-A98WI&KuGx6r5Dvu2p zJG$8kob47xGFR{GA>M9p}ak7RLn)J=u^P#p#XSZr!5|T zj>S#Hazp{R_W6?NMv_+Px9X3Ua8BazHFkfkqH!Nr&t)j5Ky1c_anUZBErzj~zQR`J z3QRYmXwsUC-7v79#5cxJAs$(tr=%rLSnO9cMeuql#m-QZ-cN(*K)Cpe|DumKasW3sQ zFf1Vyg2zWw%r`6t!Sliz@L&%={s=s&*hvP7GE}%keJxi<)$a)*RgPtqJ6aG5J0M!^ z02Fo*6n4N8WbHWXDN*^zkiWKnJ8W9IXcYgF9K|B^gJ z7Qcq&`5I1()x)$`CS}i_`e7nN<&JO-ER|3f{=e^`$D`5}cXIX;QGfi&kMCd!F@GLL zl%|(Yu}5ga&@no*cV^XN&q&Gm`ZC$0jl>$t^iyEL5xJj5-7Xsm(tovoe>kFR6bIzI z!PLOt+3h{1v#}2Hn=qf%b;lTJ3hHkP%IuK(tv`|?Z-m)k1iKZ2lCo#>u)k9ONNR7v&0VHzslg(U$0?w*3akf|w^Nj8&kWb#A3ZuT zlhq;9d-zey*b=PrV#?TmN`?KW>oT^MyF6;PncTU-x&2zX%7r2+XSdU@9o!mry{n@K z-0pOhO3yWVrrCuOm+Gr@zRDn!Jezn=gyplr*e%UVd|Y90g+f28^LTkBQR8>^*Q>Ei z-dT32eQG$N-psgfeq`j9tV|I>KTnw-r(kaw86O*6rRVQQH@>NVczvmGT8)I=J}qK` zoAoR+*RFSN-c=ybi++uMwMqa!_ zq)6t%sDiF=ywW<;F5;^!QPu%bUTb^do>0ADY`rn;@A~B1ii>Tps6kS_oQ(NQ8 zmGlo4O&>YTD04+rC#O8}D8&F|K%2i3PSp+}-G}n0;?rkp@5kDX$BCI~xLJ3sR;OQ2+WV%K zjju9-m_wA?#cBgrgl7TJyogyM^`q{Y^2DmrquBkH!yTNW3nvE*k<1`EVC{I2l6Wm+Y`qd@VB@CfyPdI}~9K zJDu1uQ6w-@jB%zh@INi`n-FPL=1uAKGgUloz}lPh8*I(17)BT$|2y(Cbza&<=Wh?L z8OG%%7C15ze~>FVLhpI=J?>4@8$s^AAH55^FRmbaL>yGyDNMm>p%ohY!HvNpfvUsr zhuuQ405oN1?W=rWh$Ar{G$k)kH`OW|L~(Z)`Fodaa$u|uYmNI^FZ_f!ogLYSkZ(tH)wr^APKNl#5e}#<%tSQ!?41{lxc^7UJt+aB7 zcgu5Z5Sgu*O!RM7qPI1McauaoSLJ~nKB_qGW4m#L{?OM-T+4H`_op)Xv|b>-{-=4p z=xlXpc~hYFrgaeRBpS8hm3+8fXthrGHsf%8IP-9QQf%wZ=l5r2zMGn)MUT+Dzq`Ws zU+fU`e_|I2ou!B-$D;h+iJr#U4M-mVqjISv||OkB@xxJ17dT75%2 zd@IITr*U0foiy|EYP$1~7%jV27S6+W6nT5;f4cAUL_U7$-$Xr~&~s)gHGYW#M4-_N zD`2yY(^S(I-A!^bV4WVKT(uKEXza+)`_ToT$Y3spzl{778Asls1DV^zgdOnrrEVCC zJ7L2mJs!Cw85 z1d>5DLbqmB#ek8p?NODF5wQJQUPwMiJ?fWUlfc7{7H%eDR7o~fmxt9tMUIP!)dIV) z{q?0Qt3~wrkdlRc>2?VrzrA+QJ75_Je_A4mURf+UW-(#5|2(`&IZGH#E zrE1xv(uARL!9n(W_U&w7qEq@i2Ap6oV9*=dB2>T;G7OHivm5kA%EmeeV**4Ce=A>+ z#-66-apy+K>njfdzm|fbThmg~7s&#O=rCsqc6Mngql4{6!t7W}&6{4AzT@F{=-ty~ z7;${OXFo7bO^Rd%TWgIG&QeRWVQ7!N?C=s(92MavOY3G{wCou66>5}-0&%t3H_V*) z>rt0$HvUW$2Pf&;NZW7XgR^_0f6`c74(Vup;lq8of@;Hwhm-IL#RaF}{*Sb!q(Dn{ zxkavGfQ%k2xKc?j22e>KR{65w%A*y7D(z(SVk@?Z!mH#a-Z!}1=|&Y6>vbmEekbQA zsMo=<1k)Qc2c^+jg5kr+`VuIX;HDgF8_Tf{YP~6NG=AUHhv-Kz{CXVje}83Wen$_R zV~549qw&1xve}+@=#Ck%PJkmBaGPEN&yg%M*40Zr$J&Ee=$p3CH#&O27WQD9jDHP` z)1uOEpIyN)alQ3+Z_!AQj0@kY7T$YCsGZPzCe14LLh9WJ@tppkGUS?PEicMz;x*2i z`RlbeGLcf|C5Z-6TY93Gf8uvtftza?L~HCj&sTcC=R(LOy;Qk-RB#E^Madc!?~yarl#q*x0khi4S;Yhq+Al?MQ{skdOlxQN3=2?he+w(uf9C7EAw2yX zRr;#TfEX5B9CTyag_o&&ucXoEoWf~fnz0_GZ1avUHba)2YdOViYQRVM618l0-;~m< zFrtp&961!rY1pEWh0x#ZDtF-{gf<+=e2@I)3OhPK@Af|W_bX^hT0dd?))dxCx zy2#UUnD$kM4(Ew*(=I-_vn+CWEmP4l5xh1WW)^cR^m2Mxe;3s92X&Hmh9Y;yqj=CX zT#NAR#CA>v%`vle7q90An|6`Q9dwd|YFUbwi9xlIBc=(rLZDiF+@W$)=K{CxD^yuG z)bKrY;7?pHpr6giC{7u=ij#_Cw9fYUjYtB(cA0&&qjc{V&fQWNwBuHoHb4;m)0=^? zJL$#3FBIUzf7{->NnHc&n|43_th?sP&$3xp1PPs;h#dL-kI}`~nb6}ayUiH#DaQs+ zgDf{+qaIAk{jotgm?W6UCVY!=FbVgI-Izr85+p9;Hf+dr+091T1AA^&O!5GI6g zBmdQqqvQOmK|gBKxu!j6)1Gi~<QkJMlv@prrK1y^y1^{d^pq6X?N&Yq(o(sSl zB%el|K8OLoHVG6RWcro+8qg{EJtiG)CUY}+s!MJU7NsM{2$qI zPiZlGrZy=pzJpHxb}T8Ensx=iw#0dEH&o>=m~J;-U4A3GbiLi6x}X^PV~#riX_tD4 zc1uyZC&9-pKiAGyUAqY@{(`4ze)tRnl%MXb(VQk6RTB1?w7pMv2S60x6<_gXkRSsG8C3DaNEao z3)>Eu3A*oN=!_2zgrPhWTprVj^5}KD;6W=#N;${%eaLBtO2u^ z1VnpeG(29J+n+Ksueq_d2Dtt486-IUfANRu!gp`#3ELufaUzjFg`uAj?hG;%>0sm* z?P4SRcL}MtOiXrRc4DzQU{_o>GZK4yDP6K{e~8)6!*m^F-6i z)%$EKSC)=)P6U98ugKa|U_gPf5G-DDIM^3Yh)(m=k<})g59%yQXZHXoe>>NdTALfN z$`{ly7c6=f!=1SXbsk#ZBmmDc1BPR|o@s-8kazAw^zTEuzH6xze!@#8&8&jj)%w&1 z4f$CKHAwhy(;o*)X1?}Uw$y3Vs__|ZPH9eVxz|zdv$Qp1*-iWLdDLT(n0~RSTgX>W zxL%`rt~#IHAV9@TyYH4wf1`$s&610#*F3iJkxcoV%J4kW@O+u_FR$Tw!jS#5%T9Cd z;5HEA%)^F@Nv&xUqwHJl^1*+xKX3~$&|tCJneQ=65c_xlnde&l-3;;ZsYP2#f6^Wf zNfY+?$K-$1obXviR<#S7A1X|e59Bvz58YtW0mZl_T)qCe{~_UP4BdlJ0a22 zoeOsk(PV~na+g~29{Aeh9lw^Sv~#uJNK}ULWc_aHaP3e#qE?}w1$ltlhhlMH8jDhr zEO5k*(xnUKATWI5S>-i#-O=%IC2UakBxzs!&9^*EDRUlF4}koHa8zApc~6MeBbqdV ztVjWS71(OIk85dxe>VSJr8JNqd&PjlGNAy5cB6;B!f+IYbYo%&r@gO?I;(1i2Vz+m z;9z%=ggmSIN0FXAal}47^l6<_pb0m6TRmFFy-~x(bF%h87W%Hex_F2RQe~B=QU6yH?m&>9KQoCFf z`$=7)gekMTNDFJy_gqP&grnu+(3dIbWt>CFWlX9eFIn`&F< zto72iAV+7yfA!7&@s&2HpVX|03;!QdqK_JE(S}tq{FTq|Nh>$nWFlKO+X^?^TGHG0 zi_3v}becYj3j)u}dLRN!8=kBov{PciSAz1+_Zjg}Izw%LZ}jk~9>-JfK}76vvLJx? z_kDO!8TaT|wAM>(qJ^|M*!spba^R<~J+N#+}_KNRI zJue^~e~YR=akVyXS$l+}4ia;-ag-y{=yEJB=u#S<1AD6j%S(WGDbEayyD|4~TM{NN zL>>uGe+edV9V%5kn{HV_HP4K{o|Lg3*j|rNRBn}Nf69lNYzjJccVBFc$>#r5AFF47 zauAwb;I()dhF(5bb5X>83mp1|eGozNtKhEu8hOyIH=S$k{NHRm6=_e@YZo*UjuAdhz#{Is8;OMoVka#4}RX zbFjdlP?*3Yvi-c2BPPzy*K-8w_wJK>zqb+bpILoWfEebkNQ2I>u{rz}`_WwQ=+HM6 z+4#~4&ZDH_wljos4mZ!iQ>42#vlb(@dt9xTE|GP=zsrV8-PFn5)ZM02PYfkU5q_34 zf8J8`S*4W_xOFyT4U`O-eZs^_1`jAUdQfwvtvaCIB@{jkXWd&rMf@B-!(M?l>pippMQ-eJBrdV-vQ-8hJ$|i?!I-j-vi{1iA_23k2pTvcKCj4 z@fP)I{zL5R7un*iS7H1I>0iDb4w|BEY3lSVA)OWr+Eg=6Sw@LPqWra}s3$H`6_#FX zWvUxCo-^I~dd)(s*X4om6?nl7{xw?A^nzUeaYq_&e&61`+NT?eb%^A^@*?+4e?BgY z&Bz21cIS~j$7|Yewf5=_`kz7 zdLALp6{DDsGSd%%g|GdQk(N|?W>f$J0HX{rTjo{6;Q4+`FQZS&gDUkQmvYW`zTF3~ zY0fhwtJl=*IcoA>Sr!}$v0$sMe}jK#J+SD@3@ouCh(*+fO0>ajlG;9KBz}})aN(Q? zsf!>+d}4>8I931j&BC}YX-+eU+vOnd2(>Q?-PzJZ`~3}qQFx5eG8Q_4dm1_`SdEXz zQW_b9>|3YLSdH&{RXO%>cO_GIJ~X71A)AdK68k{8hG=Qsc4&?5u}Lqpf551vjJm{~ z2Uepq@b>f_-{L9{J5P8#pqDVH=gUT4B);}U2g$Q*;YoAjdzr2O)PVuj^!q073=Gd(_^vC2-5FSq-yfYg)GGSFDeh3R=g4Vp@fwWm zZAoUdlb33B``jYXTdnnwv<<&(JY0|WpJF|S+Zj zV2iWwALV;<6@REvh|}(JJ6x<3n;-;k5U|NnGAed=iEaDhf6lhw3mD<=)1W36^Du5A zr4S7!7e%Jv3w|8y5}4b*2w5d2r-C8x5e!kL#jOEo_;(iNMg+8d(2CoUeEE}n_z71f zc$fh|wYU97inek>MAz}*6T@zbA?T(njn=bg!$XG5L-9B3&AA^mv6$R%5{0Ak*wBV) z{seyEgL4^!e?c|Wstkz?>T=IvU0I)q0<`8>2&I^{gJFOizE%b)hiWwxjsC-{EOn^c zM`DNVtQC+lG?-ZJpvvpRI-FTCbpX^8r5=wJn}hUBq@WaDQ$u0vEV}2IF!t4psM_mw z@=fNMV}hOIxtP+qc1;bcn(UZMTH+A3wUc8m56Qx4vjAY^ zgb?j+^t|7I$&l)^^3mM>xCNdnDP_VFJMf` ztNdYTf9p1+p)3;ccbQU|H!tEle|bgla0(iZr8i%$)4K#g!+2Y`MgdT{g=FD4SwUuQrcBhq=w|YyFXlVesbI4;tIh06bx52PO)Q@ihAlab zL&JhD;x^Q)Tqp==r9eN#DYTFXrCVqHJC-yZfBG(qaQF3`LVkD(4vXxs6lB5Jn^CoZ zJfaPcYCoqEmuPJY8Tol*HYu1RhrHe`s;Q7oQtz~kj1A`axLD6b@f)_fpY=Qze=VIK2_3%K9J}3SJKv;ycR0$@GJajc#%69z z)^rT1I#qp}fr?RigQDKi(UU#G-rZH6kvdb$%q#2-%B7z7HQwLiBI>f8^2}F_kr|y; zkAIX*>&teBw7b-$turm_Yn1-Dz-zmc6#M_O|z|#i_C?qGHk<^Ny6}f8T1y z=$8OdlHS0HL>`r*e{{I5cI)B)6Ji7)5J5PCqd1OaTtEs`cmOj5G@$`CsKsqmqY5{0 z4dtkS4V5TCDXfSA;UK~gf>1ofJp@C7Tc}4X4j~FsL_&@T7{H?#8stKY99+U>6hMbU zoPiQ&k%V)I#|fN70u)HZDWoACe;K%lOgzCe+(9oMp$*UR0$q5E4;aD#2JsnV7{>%A zF@RjeFs( zj7i961m3F7HyU*MD{@ZY-Dm#=P)h>@6aWAK2mo-U&{TqMc`rvX001yR0012T0GF|V z4jzB3S$%L@)s@%tldWsT&w2J!;@|{FiJXu`aV*;kvGW1Xb{r*6;y7`>ARn?UJ>Rvo{!%-_ndP->}-GAv#-tNQdjl#b?@#j9O!hpDu3p3xh86j z^y%nmDy>C}g;YB4$&4ooS|;Z6o6JpVA9jQZu53Y&4z97Z{o8 zv5e+Ekxl8I*hrox9^$4`BVJ9<7Y!|%NEsE`aj}reDfu&bU`Jy{d@NPa;suE3abAB) zAI(-|^HoW$py?Bpqp@^eqgYZ#G*^2nl}^NCMk1Pv6~^+cG_4&;=`rI>DV!?pG(Pig z@?UFcv4p)WLax*dBWt(|Mp3IgWx%)B`m_`{SjV$(?9@p}Ssxpsi6_ig4qP6ju zo<$?X(l&;nO`s998ruA^Le$zlRrX{aGF0R_olm|T^TrmZL2Fw}I^KVLJcRF1OH<4B zOK5F(i2XMbQ%q+v*tz~gbS=w4V9L6_)O6Ig=BeA^I#7kSQYl$+&aLZ@QJ3dF= z{yFlt&yj~(mb8?gb7lGaBf>U(x3$b4o!!ytSTV2lqKRFux+^%}WtaVP3F94%4na2M ziu&a)!Cx!8RMYj(fBS!;>=I4CM|RPNtcq?kXAdT zU+xnlvPcuv9Q4S8!S&*d>K5x|MF`P{Y7SS_f8Y`ZYjEZKLNs$8c{r$v5x*Jw zYcOt*1y)CIGJ>dh4xtnWB0Z+msJx{i47Y zn5+(9OZ);`XtIC$0sm!zHJD5RuL-}d^oX)Z)K%|_9?>rbL3&rthO&4zyd@@U0K_eDd~;36 zU*}d8pDH$+Y>~%*txNI)WSQvqHUiHbl$zY$)oNr?tPg*|w8>;Qd0b4Ml9oav7?hT} zy=zsUqBe__erZKWU`uCb0nGeCK+RaD%YaX*SZ=aLcyEFCfEu|Fs0vA&1P1Sm!CeRL ziW=lXajPPdx5Oi}x}daD^e$H2is~cWRnS>EI}2cTi^*<=aR}t9Sz}c}(wdN*E-8eX zh3uMPO#y$@Ekt!&gSxF2*y^AZ3V7SLNb3Z)W(qXrFF^TgrTkIumm-Y%E~yPwODxAU`z>0ZQ_i;*3B*@jQCs2 z78bH>+F-C9nQKQNl)(;@EyHrxLm^yNzvX}hOr)vE1r5Y;;>n%@?^W@|nq2z`CJRS}%5s3KFzlsqQbE70YIN*(_c* zE0oPrWwY#Op!h!n(5p)hw`E zsjh$2-5biyVTL@)jpU1>-hgQrFyW zvbFGjJ6NjIyUAKm+nc(iUUYZw?8(+ko!x(f&h8diw>&A+qS4l>S8eu*rT(Us_fT_H z1kTES)w=>wt)m4{1Y!W4gdqBng3$MMs0bZU@^mSzkaw%wimJX8o5|Wyu_XfA7KHMQb)tVq z06|e~hf~^6J51JrX!?+n{<4D5MhRQT{Q#0OP`2d)jz~Ff8pBOWm>?3AOAZzUH!I4!|!(xW{C-BC_p>Y_N71k%d)dt19kK zx)5FxdGjUdzDS0!$7Ks(hu9}ph?jp9ko~wvM4Q~{nYj` zp;-hq(4!2Np#;hRY>-Vh$N`gW2FPB39GsF4%!0gogD}bhGT9az;gHF01HykkARL~O z4$UIG|CtEDFxl-k!W|}4fzXN`z00GmejKP8RvykN`M;lAm2`=#m9n`I~Svt_8n7_@1_rA)R9pm%_EV(y~0 z&b{5(+slK}xbvnz3B7S5WhnzPZL$HfMm92~Z0xZYs#|8HScFu!oDYB6>&)6BlkH`= zbRo@JvwfJ+BPwUIA%GqQ{z=EfW4~=|*v84>>lU4#TeQ98r|c!4mC-K;u#{z%lY`u) zF}H|3Pes9Ghv4@Zq{Y%=4%<(w)AY2m?C+rG4{CkJs`V+)9fz;xDd{eL>{@nF1ioUHhYRp7vBGMKyZED?eaU2a z(R+unkT2KBlr59R(7o0tUS&u^1%P76$bBXop|^&~;+AOc3G%rHiIT`oT`-BTzhW{C zen;SUvQxSnmvx|{Q@Tg#R(gkm(mlNabx2V=#42bD?C!91j~IWJ?#0vPeGx(5L$tM% zN3plC)#$*Sv3KgdYUC>EeAQ%0IEcf+ePQW-nBNccYX~hlAY%{Q-zhx+Z-I`WbT$xS zvf81**?j_gAS|7=!N(9aUZP_VV(XsmlpYjc5CfgkS7F!D8EV#{kiZ_I zn<^-sSG-$MX?nraL1nTN2yPYqE{98^&rPp7RuA?#Ht1>~JzTorpxx0UhI(<)oo^WS zZj&DMs?r5-M0!MEkJR`F>5lC1slBjGV~adN&qspvi6wtns&Iy2k;)6@7P=M0rz~h+ z>D=Pca*OPZEfzqO;}%~xT}Vd~DSu4Gl3W8aTO+V<*jy~_o76~_z|ZhXe;k2Bl7i%k zPU%VdC9qqh4Ur~SjxM#AN5B0>*g}P_QELZ08I~TWhB2}4fpY>8Jk=>ZEm~)X506Ou zoam?DlYM^yI^NuLY+46{bx_bj@8)1nhoy@Ib`eZ8rA&sjVV}Vv0`PHwKZ~lL6xfvQ zE)C9fr}W&P>~7lW?zyn^Jh^-RI(ILa>?FW5=<`eT4nhX-8;gRcp@F2VEwxRvDAw6L zm2&Fi?>lf(w5iU2n2HJq*`M-x9rh)Mo2>7zSQl z*kpyB{x0cd+^nxyue!m~tIqGnqsAxJtBCpKAf)(p>02siyaGE4{@Yfib4bjqNYz1s zy=F1!?)VNEhXwY!#W2A5E*Sd-cG+U&!FU6VeFFQQ$%^0<&=hZWN>}EZqUe@?ik`qJ z^cH_)SHjZwD1YC#)r$alt5bS=wiuQL4!2KLqUa_7MyWQC{BKc&-|En5chF%@--@xp zv6fCpoLvsgjhw#)<2Ifr!r8=iNWX{E#P4F0kj zho7%G;`%bianAoD#vPo_aGG>Z@EVrZQ>r1YzmMmyAETS|`*?Q9;ywjJJi2s+s2Dud2rtgf6yP; z_|nI#n+|;2H+AvRw+=3N`@O@j{m;>Vd?Wm4w{A2O2mS4vUw9{J+25^2G-OL%m;!B+s0`u;960yrX}@8n224 z*OH%4C#N4c`Q*8~cKmfk;f0-d2A}&;<@P1d|HW9#f1X>@^mzNfXN^_EOMck-`^jrp z!>I$Nq~uAsya{cjn6&;=CE>bB&qnjP*eN|4&t`veskCN9b4E6<Hjy=&n7Hgsa-nMq)-ZolPcORVh84(lvq?Qsb`v)&qGsZq3AuLQ2mUGrDH9 zCPs{GwouNqAUay3BgIrY(VEakW5sl#HJuuPBz?LyZ^TQG1OHEuDLtMpCT1hu_NT!9 z9{>OV|NoR(RZxGO0gt^nAMRRQFYeOf?(P)l;w}Y>yW7PI#fnRDiWDvGu7%JUwh3+}R**4t5|Zb8A}=h@3rC4Frk{^Um%t@^#UkZxxkS!BK;+vSCIUKwChx zhjk05Dr2N#Tmtb1r;`XS3;Hq$*7zqpWyAF_!kL$2N`zcSVZSfT{~NdVhy;GMo=gQ4D&6t+0<=kpXtZl`z zmN8PlrgSoqJ}*5AZrVXBO|6gJ&2|)IwW>*(%rJlbYH>p{v6?RBESSb?s8l)0XsyV) zti^sjy!J=K1Ins$dkSCrl`%tO*_>O_LQ8$Yv$b7+!obRb>s_J@*Td2GHdLR|KIs;h z{NHi&`&?GTBlvN8=ghmbC~-(nygqQDX*};zcvBH$j4gyR*&TQ)`tx|7C&2_M!*w{M z*;;?Y2jd1JFe2Tdz4%Ay5M+&hsA^TZYORpleoG*OLVC&-sYbt)s|DNFdhWG@_Y2+U z4`K?Ws3Ljb*D|R!d1P zYO1uY>{^&QNj$qm(LYBYdv)O#{$novuh!ZgPo?-1-Unv}hghV5;iKkko_y{)2kw8W zVuw*B-MAeM@lB1qA6aqp<`hFkiFl2w%u-GnjIE584ZYb z*S(TF#(W}~C8#K~#2Pfi62*)~S!{~hr~?CJqa5O~gb(?L??f2ISGLClY9T@!*2pN_ zM81WoBk}~9R2DUxl9Ri{q5Cw=9~^%$z}~+oo0WLbMRKQ=OJR1A&$2j0%t#QzWg>)- z!foRSO0a=hxiH%~V3r81w0$3z31%F#97<99k~!ToCe<@W+cP!?aC2*X$=t@ZO3&wr zeM#PCj!4>OQAW(dkG5R6PvSvE8INP11ZmXr+2`}fO4yQ9qzZ<>8fq$!5Ziz1l)p$3 zy5$y%^Dy8{XJ1fdu``bCM`<*{PWz!3JS0c$C1Os)ikrb~kAjAC8^qus;HMOF7Wh^={jTGP9F*Xj*o*rxbRak zkYi4l`^hOs$clg(!SHy6T+-`n=Isql@6>o!*#AHj#W@{~Mph3o!I@|a#icca!GXlg@@<9GO{LoVNztnBWp zzQ3>;0f&AHm#BGBLIr;%sm$K#N_&3`7WD_4j=^o~Uvi_B9jspbX1&o#a5uv2tc?vU zN{KM@ihiN-OV&o%51BTF9#Lw);ciF*L zdi%R7%NZ>*E$-HnM#<5NA+Kg!jyA%)o8R}#iw>oeS^nIJ7?FPhBlk>#2-?1m4v)&} zmR38YT`y}yM`TotjJfd1$<-pc-@2vYJ8TExV@E{FJJYX8mgOgUb3yB<42S`@9cU{P zMJKI`I7P~^wkdIq^5>3Qx9lP7o-aDX^^3S7%9(oYl^quN{XD2ZFJYFyOp}eg3btBn z);C8d*It=|bN_z>p>^vw6AQ~aRU=%U&{kF#HPi=W$Ftc#^=eHQ?If$`WjAHga2wE&<%8UHdMo#dQ%${b*pGtulTXTghw&-gCXn)L>74wlaRj<2Y<#s8<b|C7%i*cFk6qzm+E~1>DCo$8z-Wp`NE<%qt)K`Smw-H)`uxog06~ zWy|GePTwy}F9K1=QJ)vW6Py3UA>3DMUKkCW4I1bl^s+$7;=l!>Gq*#UuZllP_|IA8YII8& z##8(dus6f&kh6}S>c@VkD}S+%o-2R$CX;pa$1<+XIDoYM84uq>RNwpzxvt(Y3qRI& zbWlDBx|BxW2`ZU^8LvZ0i+(pni(wN%%z%D)6q8yE&-8#`U~X8_-kTbumB%5M=a3`< zQ=QoT7d0l;S3R7dT;%U%5d~p#03P{^8PNkKyZ5M+7TWf`nS?0ihLKv5VTgYroUK6w zqSg;Kgk5v$)@fKGl(R*O=>rCf5QYXeAI~vc* zc&N!Jj$?>xvwT7u)}S!#pm2Ltk_%<8FJrGSZA1)LTYqUG@(gRzErEZ6Z!EnW@mv+` zkeSrXuyONvG7%A2Iya(hBn@)4TV)0}5Zm!HBp&oXH41E{)R zDmtECHqliNX6_?wux{=`D zkW#VlL6Cb;oS4mAEY!X~Q1M$Y2d49$Ow=ocA%Wy2;g zq?1wrKXn%=be%P4d?+#OHj3D{FLzdZnp|Jn<(&q$eK~&>%ebmT7Z7)!*_I=q_U@hz`l9|KfGiLZpbyj)_0-8Ty0* z281XjdwB}#Fa&8Sw^C7Hg*dZQwKqk_3fx;!Me7artOa6ng}I49eRk(b@7uzmJ| zIaH!q(2jpESQDaa5utPUSC|S!aa>wDBN2T9WK?}h^6lG8CC~PuBFb799`v7nxru%x zfwIt~u{2Q8J~duaZV@&vJ>&E|&>0QXiBBS%IY%9W^Tp)%x3pnfkb=)of1(^GiiK<^ijvZm?8H5fr$spnsCXbcYp*Pu z=cQolx1Y?aN`6vef;}c(8)qlK$nLO}4x<$19h4L0R6fH;dr5UDMtq!RBlheu;_8Y0 zG+cj1cnVD{`nN7td6+zgk~~jBbAwlU6qCM>NdXHrEG`AoP%&eym_TtAN_ON`c8+*X zcJ};1*!IkRE%T0KR>L7}lWrsuwgf_W430U`5ISI=pV9VNrZv+F&IC`QoiU=TY`LrJ zpfZ;0nbrK>&`+A(@(N0H4gD=|(j(&oknDfbEi-aOty5uj!D%QCCU+591UL_rw2blu z7_!dGLS8!v?aePo|H0}+NH@s5HA7Yg8|9LVU5Vec3kWOYxG$)c3#>Iar z^+(UxT~r(JMNi*d><$mcI^*QrB=XTFu{$8r8ma@8ODRIhaC9J03+&7tBDqDJQH~UN z;%g$e&c!-oW7*F>IS%qB8BLPjx1=_=q%mZNq-z5*8*<=Yqe+`AwHzbV5*Jwy(k_X_t^{ z*Lgdj>^VWu%iDARG~59KlEFZU;Y-ycYu7hv-3e!N6Mx+03+1gt=b7FNHF19i2tp2? zmP*z&Swsp91Z|Tx#6<&}Er#S z**&3L3;ebBoe|8dk@%KTdQpEL0*y4f4`Ib$qv*)hC~euWhXy1DM%Y05i_3K$<5yVT z8^VQcs}<_;$1|$=_EMMaJGBLCixR43|4F55d8&Kz+tj;!g|!sZZ!@>LXje7JdnWST z4e5_78AmZIPd2YlD4grE=JlL};z)fLcOvQM{*0SXAl&Ey%rZ=H&jo+nfi8s@0Y%yK z5uCEz2;`#I(-ag9U?TEUsHwW3Pxl=A?t(ROuX#7mFzFN1_f;fZI(Iq> zZqW>#m!Bbp7Bv?KOLZ7a6%Z<&i(S_o>8}|*!P^UnX`!a1F{Wj(y>w<|ens!}!ob~n zyO$V&f5nJ=&T*tp$6@uOZ#>r*xaJnYtGMAND#{y1h!A^23VDCU+(oT;tL%OjRB_Lv zX@1Tw8lL1mras*;kxT6ig7pt(y$R2!Y4+*dF8SHr`bK>FrkR|srtqwh%ol|j2-Nu# zlP4g=-m^37^#y_(uj!2Yt`MDX5;77>A?u>7a@q8w8M8+SAwm9G-6BRX4t==YBCMt~ zKLU#7vZSg^#QlFvu>DNT{O0l2bzvz;PXljcsr7x`U0R3)*=6@Uy-iYnAqvuv?!-~L zMG))SopOyV@=Xkr@)l%yF+G-?g8z`7+GhzP@fUS-S!3o?c>@ilG^fqYmER4I;NWb z)D7v9AdP=}pAVlGvoXuL4?W%2j8%84bcK(1$#AdPRW455l^>#MMV1H8c<#9muH?ID zF2@nQ(1Z*CEG*P3ndg>iXI){}>$aW9gkLuO?t}TLBA?NgD)K}w*W^DVh+ipD?`6Vc zNSg^{BlT^2U@!}G)zW$8^K5pO zy?1{&|95!)$e8+;QP#0QDvBN@jINXbXF!<0jcA-ry`>b3v#$}eJ%jAZmg3YztuT9d zaHx(m4*CaN>jT`8I7VBxQX;m*q!O4pKB;4r_pd1Zgmyg>GI$7CsnhTp5vjgf(S`CE z0$EIQ@0595dCFlsQ*uC>2M>(tTv>5dL2$;65r&0bgel18#l3-R!0moLwk<2pYGwZ!jKdhv~{Gz9;& zu4EH`e;C%Q6$>tTuy)e{E^_=KSw6{&mUo{qJLnFSpWX$<_L7wdF#cESk!Tve$84j&=+sH`J{_6<#l~1jkX5-QQyOeH+Fw=#Zx^e# zbsB;a47>Xbum5=kVO?qFExZ!uWJd+7n}qtmzmKAm@$h>b zxJyQI@q0+^Mc`w94(+TBp*`7f_bOwp$gYMzt;gv$DNoGV`072fq%WQ0p`DuYiiP&_ zt&`wYjgX*OGod-urV0`5gSwV~M@VMQh_+;@-PzWe&xgU^SD$dy--qUWIjzk{bvdgj zGWHtgQIB*YZ6>MJCu{9DV4Y)6(F<*CMNIlw7&FL=-Rc~lZD|vukE(%I!C3(rFfawk9j?jhei5KYu@UAip23sHgxX= zn)B-R5__RPYZI;*n1y|;d?1`Z^0bUnKYQulSqX9b!7Ael{ zQ{O;&@z!;sYK8_rF?PO1w5}kZ(!;M_E>%QXi2te+6C{Z0L8X6xQNo=vO;-46^c*$Mo-l1lU-KWe$}I%fHFtI~uNvaEq)U~l z{+kX)Vl1ws6v%>qx*?0DW-&^Tk_ySEHI=%68}wLT<-=H3uHtdz6)Q2H28G|T|2|lI?KFICwhdGO1_OK0Cj#+oYAJ(<$9i|$|$uiZV zRGX2#kF@D0hcaMnHVPGCIU`5&r$%e@^B3wHJVXTfNm`8ZOYM@*4D&0QTM>y-$V^27 z*PF-(y`abQB_B6EW#Zs9X{oj1sYf;*Q*%QR-JzB5bKfvnpN&ATZ0OIf7k!9095%1M zsc)fwaz2sxWnqTB9n_JF>4{7_u!%E;Q?i54LP4TT3GALic6Ori-ECflsr96_e;lEK z50o~yQmD#If-9#=4l0q!W?dxS0rpEDnfT!INrk4+Ni~Xt5eLKPe=b|m1PR{`!JYtN zAvBg$x0F=3pvE1;!T_3DjNy3Sur*8Fb;;F#&owi-BpssAkLSyZPMDXf z84+i*nr)|&Ov^~!Cz>msCPhYf5c9v!o`0rlKSm%nj6IRw)3rqS<=LNTti4e1da9cp zW9ye;YrftlSiyI`6X*$i(5;cNQ7waF7eTQppQ1(-Wd<&x$>+0tc=bg;v2}AH`0S~=b_(cu)jdiSn&n}dUo zwc(;sOOLMR$Ag8A9Tc_}qTO{Sj>j*5$xUl{(SP~`vN-ndOLU6Jn-`>fx?%Kl;g~SH zX=;()fw(BdxF|q9WNJR$!F56#LBHWJ;Lnx~A4FcC_N#%Tu_d}sBI+zeq$g6)Dnp_V z48LwqCzeeP5po%S0o<0e zZ%6~4YJ4CiTPFwz1Y->PA8Gxkp8pgE2OtIB0c3zEAO_F_3;-D50Nw*qfFhs-r~q1k zHedu817?6Z00FE3N5Bd20D^!}APk5F;(=r!4fqBW0EIviPz+Q8jX(>~3bX-TzyL4^ z3OD)Pt%uDA_Pc4Z@5(a8^&QD1NQh`7$zyJX=L1qFmGo!#v0VW|O14ac0 zVP*$q;h7443Ji<}GZ~nKf*2Sb9E6x>GWZDyFb04{1Q>r49GHb6f(i=EKm&qHib6mJ zdgc~@Xbq5=P|O0vOhC*AwTlsn&E#5vqMj8=o)zjwn0}BvlTUtf2vm&0v81F3q_;T- zq$`6dg@L)OI1kLp6JYpRoiA?v{oOp*bxsc?oUA5iWjTB1r2*w`fYmdD)U%hR78Pga z=Vddnn(Kd=>KTK@@(W6ULd76O>?sUfDXB@N>EIwtVUWzrk1sArEYFKi&d)8#%t{L6Fa6MB zpvC&RiA5!udBvr~7`6Z}gU?Yt6lsZ{Z=t&?WBW6w-p51HZEDP#n|@Ajp-|vT~>dwwB2t~bWv*9hDj3yGsFt!ZhwEu z@6msWeNP@p|M|W7Kl_^isgGw9W>=@yieGuRT(I23&rw>q(a(#$+4*6MK+%exA55AP zbBmpBNCcK%D=gKXH+y-9$ZSrHNcqoCCQ4ln;>cVpxXod|)YY`tKFJ%J-vm9*IW4+9 zU+HDrow%JB{wMI(ok)JLtG>-5nxQt;}hCu~n(AZ8-~#YO&?a%vY*TbD(}U zI$w7eime&RzG<;mJY98WTJ@Q^`a+{Z!(fAOonomo8(yrrPP1NJa!NCXQaDV zvMv?fCMmhSOF!pUTF%B^KC*wbBeX|?Q=6;So0VF5rc`lyMSFi4ViLMuir%+> zsaRcfnj>>(oVl|dwhF*nY*y+uPLgZI1xJ0ZUa1W)IBvP$ChpejEy8cGT4}bLgY)%j zsj3HI=w)2na4WTz#DX{n=Zn>*qqf{dN2}C{LJ*y<)QawM*ZUw5qyU+b0YP=#R#Tm; zmmHOhV@u82+PNZ-tIU5Dt20Cj2b{NeL^v)v6m8FmDc+utxHbou6L{ngAX@L(BjJ_S z+%8ZoiZ3x4`U$#(eh%?1nspr|h^YcpO%8mIfEjLa8`csg~x7ZfSy*TT5}Gb=e-8VJUT{5tc>Ks)uC(wCcCXilIrQ(rj1GPzeEPIcPWw za3tDWRJX4x?X`ch^gGkrWSW!Oh`%5U*e^t~rBa)(i$FxPg;XrJXMQcNm0SU-RA1YL ziE?udFj@?x+)jb&nU5p`k9MY$l!D6(^~Gk=N{%E0k5|#RB>NEFxuGUELojP zoU(TAB7l)?{>hZ=me;BfZB5>!;sYtWAZ1rFN=c4lmKng1;D2k2uXtPX#_qW@)#n{* z1oc#HsppDr4H5_ltJ1a?a1~=<9Tn=(bwoqt85<@NI|GS3Yf8qClqIufD@HRs+qLvX;Z9Q(Y zgq_gsIP(nE5O>;4y}X+lW7=#et7_~T8!?9E|6|Ov!dghNJUblHY-ZYO%HMd=3V8+9 z76-E|q>oPO?r=y~Y;Tsh3tnSj_%%(L&75TW*~x#ASzG9a(5ywJLEKrUnOSC}_UR`_ zxc1@yUH#wB{^w8s{pa8R<c=8 zQ4Qu@A?o!$s>QtPME#@^zPqYpN#x(8tyQH75DE)^?j*wj*&d99bt~3Xf@qHE9ljc?HbFq?ixeCL7Yk ze=1z>1uM&}9PM6-tQRAZ5wSk9L9B~x6mf;ewb{aC4r)^@@Zu7r=~CLd8`iF1EiTvA z->`NaYwP6NNYpAw*Wz|AVQ&R}eHhLn^vHi49n%p)WyN3hXy-G~+nwyxT_xNRovRN7{F zse4mb_iHB9+i^V>_xR?9rd`ppDg>#TDNQk9hK^sJky-jh%diiB2?=+E4Z~JVY_xw_ zoFtg~MNRYg7Nq}1&Cp;w8`gA%ZyJRikvpPx!Op3+8Mjjjo28`{cajyp0N)A~GAxhZ z1v6&5NC1V48q|J;Eyg#f-MU)s=5O$P+s!>Up>n02YyIASja`XvP@5O({1MnA(LPmc(vVEV;Xi*BjFKiV2>7XGfum9j?0}^iihpdp!OC6mCP>-5a$m%3ay!Je~||4FaQ`y8t7mdVGHeT-sqL zOmZnsM33(zFQj~8*r{4#?6TO-3>QVnus;TAR^TaGC%3p!fWGa+7A(BafD?fO0@GU$Lwk&f&TDTSx(ye?heOTM)8m8RMkKFpNvdl7%Dxyxb?LZKBj ziUu7{Dg%17JC?p^pbqy*IAjtfC_TntXu2(be-K;0e)jvZ{W}5=+(h8+-D3P^4#HLw zY98!&%g}!_-3M=?d(UtIF&!7EC%>R@Zux5MF1M_VF$8=fEq3Xe zWs!8(#KsIlK&7(R^7X4KAbZ@e?ym*@=lr)elX-0$&+ zVc-EcabWEVnn%fIEve}dXd1TJwB5qwQE8HHPqWxGEg37cQo?`A5uYtD*&Ykn@+_98 zC1T4F3@5vIJ~S=iS^-=SdVCsi9Y&)# z7%kW_*=%r%=xKi$+LN$l1ME%E>Ca z$svzF2@Q`TAlWF+w%`DyOjLX-GO!Q21m<9MA2~ ziQ^--A&yz%A%#Db&4s42Ic+YRGn)IRu(T3+Ogt7jDjt7{91{;mj*G(zKO98_=cJP< z({859MsMbyhm8-f=CD?CJQ6KPj;1`{B~VH6=o}i}0dYj(kJ@v3%)i%t3pKlhKLBwP zL@4}70GEFi2&(fu{CO-o+anWQK}T0WVm^bdn@7b_7C8~%ou`~F_m%hgS%n|f?9jE` zh!r`m#_fLu+JC?~SP+v~J_c~iQE}XiOhpZOJ4waMv$*;6yLMc=RFJ_~m+K7%urGN0 z+rWMrvL25%W@EB}<>YO{L?KTjmxKPFM^!v43&qd&Q$+Mn#Zw?l0>7iZIwPxXTBqux zw7?tSYq}7n2lPp%v&m^D3zXQlv@29foYslnCvkro9ne0^H9dx2R74`)IVw)D$WyU= ztOO`Lej0pt5s28Fkav^0BgO%7QsF10U}^th9&3BhEm5hmq{m9DRF=lYRKD9FN>GXn z&mR!e3ZK%9(4;!RFjx4rG{C{Gt@gA@l5t2j?7V5au!Su2_n3q40lM|9(JzYG)G;8 zH2FIl*m+Mz%(K1t8T9Pgr;GU!drUa4C@H)odxt}peIHBfFY1l0W*&k_Pub(oL(e=; z%rm{08|jn_%kRyI7F4x-RsOq7v_@=KJU1pP3a@Ba=+v~X#?3w@bj^DXH$}vqu7ZC} zI?f^YvZ&)kmyWb3J2T=eg5RXzcMbmQDuYSZ*->!$8y5qtU0}UKRDt(`!mDy=2}|1* zzK~65?UX+Uyza}08q_@BujbD;QBxZQmrL#HFvlHGWigd*BQJz4e*dUwFjwJq$=Cq# zVF36%G!T$3?4rL-I7WY4fRFwzdVGHw06&L7F7*fUML&?sKzF$h-DL{q3$8e)@N>Aa z$auXFz#KWNnl}V<8Nx`{iyl7@T~!40eAMU!)6cM%e03L~?n0ls3lz+k$HYqtf2pHo zRW#{Y@$zo*N}TeQE>SNZ(IoMead9Dz8#&Ql0r;a}z$jR~0JUV;iWh=iwUB?pU$uvs z7doc#2NeFAPsN$}IvFV!44zc@8*-rm$le?>#Ip*2%i|Y7c^;JSATV*$<15E3zC+;` z(MGW1;!OE&M!c2F(m4&P_G^_q&M$qmO*$hcsPGgZoTXA*P*R*Pj7D@&d$NDw~rG4)N6kqhWWpF80I_p zbRBQw6A$o71D`m-;3L$%M4$2xUOIw$#rE70&cN0mc>Fss`vnX?>UyfD$W2C%zVh|e zo__4{i`cS^h<;-0IpV~v2;k({kS(58_zyk)T`;@|ncmH1ez98SKY09YY&j2^|9GR! zXB7TV9)AZ6FQIJznRKux*phfu@b(2kEe{vM$iz6(8lQe>Nt5tMK2_Ef`_@6C6&Y zFIvF&166ZK6rS&qx8UOkIJtJymm#w2v*2<4A!P5NFBZg@3LesEeBW2;8w!h;zm)e9 zQ%39uxTeXj{t-6{z~Xlv|9H(HACEDa#U`VVC3J`U_?UmqClvlUY^Uh`9$Vq{y9n&R zdHfT9ONaRr^zV$q|J~ynnBIfjKTL@K2r&L5F#e;DF;la8h-Gz6r|-sw*w_<4`i}hn z00030|EyMZT$D}QU06DoPLW1H8fjEI1Vms#y1|8ImqrAnJC!aGkOn0rB%~yyyBnmH zkg(8i_j!MBzi+?i@0TBE=j^$!`^+^n*UW4agcYKK0|rwdpFbM>r00!frRD1}5464C_*x$vWx(mj+O9lStD`_j_F3L`g zfQCwi3NURGCv5>!fk7aUzNfnZssU-ZxT0F@eiVO|MF9r|^kXa(a8bYm{pXJY1xggK zQJ_MB03(JG;OKW*fEZR3*Z>{PIRMUu0yjp?4M68bfe+{#-PcVFPa%MdpdboxG2mSg zpo?R~+``}z7&+X=;CC?iT@0>(!4)xllrVI4jGQ%qv7qzR#fW);F<$7u#*XHOC>R0n z8l!(;0_bRN3g~7im;*YRTLT#u}k{2u6H3z#~zJ!tjj7=r;!NM9+CFprLs@5RdLF z2_3KU7+udGEzo~z7Xf&L0vrVN?*#aHqi}x>;ON@@Ti19P^M|eKg+O^?p?%3v2m|`B z2K=zGcLonpZ6J_G$=|#I{V|}Y0)BsWZ$N+ccisWr6Y!4*S}>qL0pc@(_HVpD@P6*! zyaC-Eh(pgKK8BAQkVhmiUJ#(W0y=s<2r+aYz$Y06B8+~0f&9`@Aja_b1N3YZNHBl& zIKaOF1=7F%S};%a+$NyHY#--@KR3OHtw0~qS4x~56Vpu0{ah{u?*aQn;BN7kF#6?D z=G@$8nNSKFtvG*;@Wg6%0QPG zF(*Z=Ig`Vnb}S?!)#UQeed(h&ot7UDN5eRf3ymS0A6$vMhkuHub|Z?$n>c^NiP&%l z*;uerCo2)Od}Wch=eHZQke%rrtM<*ik-dpc;SbLs5ucxU>zdxz}bvB7Gih(4sZtY8%jnF*x zz#1%!ukmtM41M(~ogCXciUxmT@r)$7Ph;PeBJ0ye7Fi*iag6N?3?Li zGN=uNv_-GW5a>T=Rw7W-ttcb_yy;(Sin%XBftX4Zf&gCjuRRg~==uMuVa)o$ta;3O z!`xGt^@+KsF!vGWUcjt>%$kP-IiUM@066-5vrs`tD>0 zV$jd8gZ}T1Wdb;Zf~O~X9&Uu9M~d|b+YSWw_CWme1pxsi<`X95G7%Pj=ds~P3HWa2 zuEi-)Vi-`2O@O0x3PA& zgd-j8KzJ|&9EPw*+hf6;L7GBP4^+oOF4pdzFocJf3&P%A$j*Pp9f|b(|JpwmVnUWS zUNE?wke$7QwHMq|2oAGBJ%K+K@^H8PYpL^JvVmoR}l5-q-^7ey7zf(Ls7q8-itiWX$v4sf=<_8gd-Sr??wlW z6G$kfD8M0DGzxzTHg>d+j-@+>Ki`i0vKa7lWt&VpYGGVW9ruI!+b*jRt{Y@;aJV?- z0-_8>V7LUL#!~l-J{_OhtQ;G`Y)+5FKDQMIAhI3X_=tagvHpw<@T;ot^U$#kPu|^Y z@+yk3lWE~hhckWVeA4n=OB8B!V_W~c$1Y&RjY-y#GWvf*Sg$6}xIFac_M}%)LH7O@ zCtvz2F}_A=w|m1OA=yGxZ(p7EcsA%deQf^DSR$A=NaJR*Qg!cB-xTM8=3bosX45^r zBCQ(kb>9Oix!-foo3 zX(_emJ)VNu`?xm;#GdO|ctZoYp?pnc7Qyp3_$z;P4L4Fh%Zv^;m4y&bHV+B$`8hce zmGf8e9YCX}jMwur<9_JVywRfZ5GbpIb4O*%@KX}&7xZR_)Pi>B6&B0k={9AzsJJ~P zhF?^<`}2&S8fZ?-aS5cmbdAxhtgPh4q^0HTXRN4dB1iM6H{f7RVorU6Ho~wKNJtw= z3?6^Q+zJFvHTBE1*|>eJF(pV^;Zu0bRB;ktkq#XV&pwm>&Thd@>Dz(}(WdT~Lw{-vuy+JA$5x;S2*bWbm5nj0Pbef%M zWjx!DWi)LxkjN%+cLV8$kN$eW<6my7#aj`o#}|uu&!t>SRWb2St67(1xf`eHD9V4z zPa&&asqB=Bj|8gO+o(C;YT9qVV8)ZlBk?`AL&veiL^tbnZm25+Vj&pR>mCf-#GFz9t-R-nSp!6Thocqr zGObPtxAphy{$d&gJok#%<%-bdD))cGyCQhG;3jvhbdSlv2}j$V0hQrW(PgyL-B4^h#g8P3_RPTg9RvT_ljd(_ZanR7ybkU#Y@`MCdfwLNCVj_iH z(}&!|gQlW;l?-JD&&oemRq0RqW=yq7q#|8oIj8q==@dkTL_b?{KJHZU7HTS$cFQ~o zfxzmMM_SH%%$~lh^%63_GToW+!!gJkw+OljtikiE8P^=aB?`ed$&Y`{SEOS)ri-0f zuTL|q`(4Qp(^6cg(x~9|xo3Sq=#fn+%;pB%rj$Y=#dmG&AvrVO<27A4Pj_i935U0+ z)-d_LN7c|(gs(Mcp7T2vGEu&oatXC$zLa41ZhEp*W&|U%AbqcEi!}*SheR@Bovq5E zz{)MOUqGR7fFRx#XG(v0Br)Z=hy0azJBM(4y6#gUHt-0S&c@Bn$iY*X@RnKEUMpws zw5p=2S{An|QCz}XF_~KF2QKvI6cl`HiRn&{(uw5O%|seT>J<-sc>*sY2AJ_O;>!@8mI99lB2#$zD7Ds#eyVJkaa6 zMZQMHVH|#I;!zO6w`@}HO}9P^1=$Oti5jDC2lvH!LpoLLeX`9;X8gFu28}WpSU!*P zTL)Uevfkx!O)OZL4=oNvoxRUIH>T6c1i(V!T z0;w9ZIqkej?Yyd6)WPk%-oJ~*d45F7mQCZ%uHLSgi8|iyqb7yNU=>62y1dsBFCR!r zxs-;HEC+S(lMX#cf)1DOD!ww3$sTO3e$sPu?L>d_+hWCW30*N;vIW&7N!cW8*`(IJ zNgTbBd5zqe9H~juue`rw!Y?XePR%eU8Msq3g{-+*i*}-Mi?*6`9Ogslh2C>b^%}jBUQIem8i~~2#9BC(AXoXXZ7j&(# zU(0`sk&>u!8JMLHis$1z(x|KE8h$PSYj_YSvE|dSZqs0;QTI7byhVC^vGLV~{Yv1} zi|q`&oesPm`gIRwzbq=-`yNU1!{eHx);XJUc@LyVIcDvaAL*_VJXkHQSW+K8?tLiM zN|C)D-$Am&$l$R#>?(Mx`&|gbNVnIvh~|GbRz-Hnur8gdp=2Wcyd2!_s~tx+G9{aQ zJ{u{XD?~r<-|}o2sdE++7iaRY3RXqiVCc*_8$)ZzWNTgD-{n-_TOX&B6Da@>4sHM` zn!Y@^`O@Jn>r5Q2m6!===u!T&8sU{VT0Jq78yVx;O(WVXZiR@;;?h9{Z0U@ao?w4` zkA|Puw!(CvlsdbJP9D$OrD9<2P^D(m{?ZCQ&&%c(NbchPmQGJ`ae~2RVoPT*BPB@Z z8v^>mV4&E;m|?C;xt4Fm95%6kjgVH?z43-|2akH$nV{awl(oZ#vglzq1b^S{-Lpm4 zlGWak_ek*UwJhw1sXst|&jcIP_x68`&Jy0oM+=HZL8Cpy`P%cs4rpV;k}p(#IN(3> ztr@YXY$C2$YoN<+pi@%q(wV992`PB{T2*JFUqdGPE7KA?`>j2fk{`2V)qEP-_H;)< zEz|dQSo;A%E0Si5-7Gax@T;rT`nl4OeBAebKKbc zIIx0a*P1LI@@nUx=rNywSD|G&+|FG{mjYfdyS4AsoZ@JOTcOj!sSx#l4V;g zXAQ}2Ahi~gy96DF8^=c>e%GE(bK!_qF1}okTv@cj8^ROFS1=wU-8G{8z0Y!OAVSi) ze}Zbs8Fs9Ct~hbv95;>(7BGKd(jHcwt|~9Squ&K(3N3$&SeVkTu&)ag)!Dn1TqS<6 zEABvA3=W{k47=oZHM?d<5v7f1lN?Xa8OA#g=M+yjs?Fq`*GicRSS5+gP`d2z%_=&$ zV@&-=D#HMm(9c-p(B5sX!itUUo}!}RMM)*sp~iH0Q%a8;VONFnvVnh&l=S79Uaf*7 zcGjt>=)bAH?MRdd${lN%O40szUVU^5zIC?;8Ar5 zY-ES;J2uXL5w(1s;Lf)HiT>O@WWhv}I4s&sgt{{@%diA+c55j|YZ`grMw zYU6w3OAQ&*JYE_(pMuV6bCQV9pF*rd2yi10d|7{ZI5QRB!g#2Z__q6$ zhZ5~Y?)2KIPra*<3xE0NOIOW~;I;u@QDoMKl9)XS9}7VvWfi5b9JYtcc>BxV!atZl zq|eAyhYV?1XQnuy@HDka>Fe8hi=DjoK#8g9L3^xAS75Vmk! z3eA2OdCMblI_-->y;EBaLotZt@*#MGQK=^@L9Zsl+RV1lCZ3#wd1iLaI)GF%@s`x& z?2Y}7TN#ahBE^1C9m-HW4f$jODCfS#Lp&-f`(I0TNylxp;mA&bxr8wj5%)I&jT~>& za2o2}w=93|aa=CUsl>CU-gKJjQX#GSO{{lC=l=Fe1^%|}PMYM{$4gtE_B@7_EB{Qa zxSv?y-C#21YW%m~`gK`?e5=_C#)Ry{zvXPFH}zPGhCkg~mOeg2P-_*)bUl2pLubaL zN|YGo6+r+kZETE9BPZr=D+wM2@B$DTR!(FYaRrfvszeU zB{O0Apx_)@pIzNi7s`{NcCN#M*`}p1#ka;oKC5#0bA0_CZ!ud+U^W05 zk)VI%`*wP)&@AVlbd&u0hrw=qZ9Dr#>}=06Z6`uz!6UoZ5(>)_nKKg6^7(o#GJCD* zQRj;|#yILM6I?7I75A5aDXCs4ooqVbrYN^wvBjoUt9C%eBW_d1(bzUq)@pwNydGLIEiNylce*U1SD<-;lU=0xp%L^I zmz?2+!k+CX0p7_HQ}6$2X;F0>O=*9b z+Dui%L|<2R!j8{)(%_94{Gg(UDgE;WGCZrZ);?8eofJW9E4x zM0YlicXsn?h7Vqhv(6EIA)A~co0}rz@Q!q~)+{=A8s_J@=)Q(@i$pxrj(mSwcn`1O z>E^uQ`wy$>HIsK2VKGOZl#b7MtUak#zO_@m$@h7lQLDc{`I7LZJR*^zt?qEiqr^Ig z;@DIs=~tT6B=W>x_o^}{i?8@w@UEb~qtQ~dIwvgs6N#OX-7~hx7U9SiMY8&z}JChk-^o7Ub}jW8sT88BKqI_16^Th{@Qjt^zr>&yXvef~mZ&ehV&9i!K94UpgL4 zAcp!7Hu^0BZ@(nO-931pZQA{Hitz={%&}ZU#7^k<)U6TC8u{Xt7YPqPun?cge_+3` z!n@FoodZ+Pg$me^*F?$dVhs`Jiv(PxlV<+3Rouqf=fsanX712&?_d-q&yvBH-C)HRAahTW>Q@+ASJ-F8$NCmJ zH$)cUfG3P?A!5~g&{==m$}(m4$Wb=R{1cbiI#+gG8=SDSy)WfzW!tGeQl*(UHFS-D zvPS4?r8Z33ZtBj|v)giZd)-Q}$jR4l%PIdnh75^*<1i$*HYBr!L{2-25klgIrH>GCHcw1PASJ~ScK&L`IeZ3n2Nl@u9lcF=Bs}jnT6Nu&Fyb9n%jQ~ z!hzMeihJ+;N_Bq{!tw++`;z}GLgex5HTvCn+gFkaWf#l-HA!&(p!hJ`vFOD72~i=w z!U?KSg=?WNNnUJ%M%_Yo9*6Zsuf(mdOOu^2s}=DdbmQOA4nU4BR*)~sVJ*lhEXb{M z{!oVFn>G0&14n<~24Xh^Vo#@hmts40Q{3LQI>!;g;BzQ653*0TQQQayg)hLZ@2i-=+N z6$nQc)7XE9;ID0jO@7I)m&F^eciYDaJTAGz&bax6P{NRT93;9$a?tIvxMSJ0I=(Tk zx)HwA#^rvQ7T(f`<%6X9vT|{#(=+bB;AVE``IDpe$EJe@-_3a%8%Ad0pylIa2rPa?C4R)OBydxR6WYnOhX>vbAlMBsu)q%MvC=xamvI}EahnzO z`Bi^DbQc`83pOxO#0j^OyKW`-!uBb_n7=yvbY%51xi+}5eyxY<@Qb&K^B1iet^`F+9z%vrOdJ=TC!dE$>S2@Ne zHL5g=ME!Z4=p}NFBmM2)vt&nW6&SMQI8*!13D+xKl}iWwt(hm7P3T$Qcrl}*P}QFq zu`LR)j0ISKcDyw%R85Sy9Pg@HD>V@4f@Yb=Hz|BfXi{JkR``gzY?lnLb#ALf6*Bz5DAin^yL7Kx)5zaEPFFRQ1$aJ^)CV!Crx zQFVy$>yOqDGVLdQu_0UaUca*BVMn-S@1%4?Kko<)>D&yYFe7RzY9(1Y0DYj$Dj~kWP$o>pX z#zCVE4-oLzosej^U^et2ow!rbN^@UKfFB*fie_(6~}@CJWssWOKY z4TS)q5ZGxG=DlRLg5h#s`tTW@Rp}ia9LX7`NqFuW5wh1=KhmW#3C%(ELcM=CJwY#h zk`kLI$$PFn9eeb>^a~;cW_+t1Xwhxf($?H6C)3y}cgp+lR_`0N?erD8tKQyc8onu(yL}`RB!QZoSHt7ojj}zkx7!9l~ zAcl7^az=rj)(P8hTUUQWJJr`x{VBAtg56N9cgDJR<`|ZSr+Ce4aL8avqcA|leg05C z2K&c8S1?VFZ^gh)Bw<%@Xu0*fk`1m{<3u#msc3sl{f*Z+;!)m{b z8%Zo4GuP_W8N0}qhsf4ZZ8SDlo?~Q#-`Q`D#H-DP$;bDnq(L(2=i;u2%puj5%Ujla z($8hWGHwN$&yjzmKbl;eZaVOm6os14w>Sd?tHi^n#G+zojK;19s%;nXjDwUeYlNGb z>F(d#Yc6xQt1WY9BO#&Vlh^L$72!5+OPZ)kfBGS%cwbYuFs-iGa=&<+h>e)&E=9yU zPF7O2#QS`oA43mo&uCc*J}pcfbU5(mykvc9d4f|8TYG=FnkK4wj8i_kRZK_F3tTl> zkM85bFRfwjyRW<2DD5K{8P|4IYjnuUWv|}u4JxF_Ts`dxi|nNpH}*Qq_V`zbiH}1K zs)Tq%`LNZR$(X@PnUR|)ws&p4^*G`BE3$CCs9VK`3>?|Z`wEN=gjQklca)h8nU9I& z)+rRk$Pa(HHt?XWcxbXDO?M6U8jc$t1}kI~TOnmHJxD*SITQMX81k5GOoDdARYRnn ziAzFG+tr79L64Mb&rvQGy~i6Oh#pem@3?GomUo@_ElO;~`bH?La(=`=>2RLB&@fq;Q*VBklSH(c8plFOJ($*Z2)#yTl39<;CHSJ1E`QGH@n`v%3l5u`QV4Z_sIOHSH%8E0 zSpITFRan%rasO4EkTK29Z!}QUak$J+eIan5Z1T^=nMhe-sJq!QS8UC z(Q!qtMfODGAlix#7BsNYx@^YcHAfpTs@KxELr6rB3;qT$+!n?TM(!qmeR%B`+zB#~ zF(bC11iXw8pn=2(CzjaU$H&G1Rf^Q_IEia@J8Q>pb?ryxs@JsxAijM%=I_PqJ*H;A zl5EWXRc5COa(wb2LjR3)uDDfkz#zlhEV{^2Yz65OA33}@KWGi$K$SW?P$D$DlHae2r^|6dW#s}$QyCXj2AHbT) zH*V^ZRXVufM31}S0M4xEl;eQw!$sF#7xIdR%bc%9D5)QzO{BXhq|Gt?v zLC50ir~HAOH*t>ip?r+LFveli33r+pbb{nji4g4$2@fJb1 zEdj4seCRj0s(9imY>x5q!#}Qv`$EPflFfTS+Kvwwmfc=%`{C{(hC?6+*z+@~DUYRU z-W&C(!XB(ntEU zx#-c4e&+mwZTx3Wz`u%C1cUi^mquMt{bMtUD2n!GFQU(R46){AU*sAV>^sgGt#!&N zx@}T~p8#9<6F7ti88aB zx^F!FguXvKb4)u#r8&`*;No_EYZXTg0Dqv=us;3{Kltrsg>53IGrL4A!#2=K5qdM> zj7z!J#5g-H$pA3KTv2Z|J3nKn=JeXz>4i^*8A(2VS%hX^2=bzG{{6gJXZJq+6GW^? zzw*4Prvc}jEVC+96S;$Zf7+iR$BVrOj*|lPJ%9N(G4pJGHJ=e-3vF*gYj2{M7xhex zxc{7xjq1Gj{&M7Z8QS7EGpF6LO8Nv&b&uJ1dU||HPcGo?(>2uamZ`>n2Qn~#q7$@1E!kBcc5of0Z1FS`c^(|sbhO)_ivdP4R5P3hpxpH;> zdUpz@`4?>e^f(2)inS|t|B-7~*6Y78=)Jp$L)^5A)>n8Gq%u}o^UI1jO+1r4Wc6Fy z`PvU?Emk$za4s}?+c;Ril12U&;WAX65q4P2uImD{1{@{m@uhTTdY6+jQhCtMpr{NtOvT^$k*d7lf+-=5b7mTH1b_^g*!zkWJLdZuLnj74Vclo;% zt}qO+Y>~3tE^NO*!tT~(OA6je!J$R zg;~b4)zn_>TmGP8?iBv;8;WC1PfXMeYMR9X^)1W68Zb@yUC64`kEsg>&$qO}!?e^h zJzR)HWo8V`-sON+fclbY5cA?tW+30Ya2o=kDx=}hXHf-Dg!aId?Sw|9b56F$FaK$H zT-VU62YC$`)8rI5I*2Q!?8-TIIyGUW51 z1W-T|hn-nlo{h53!FXu4{8aB+MmtQp>FRQ)?^l6Lfp@_%tkjQpiAep!bQ2Yb-xUwY z9k&d;y8+)WC!MN{*%=x(cv3XecH4de49E*mU*vnDJU$g$cG510Sx78zwK4hGtGb=o z56yT{F)s`hAI0&Xz+T1}J)B{WexJ1{@0ws98HJ6iAZSMa0hdX7p88Et`VjRI+W_}Z zCjf71)=@SW)-B7xx$8u@E=IbBhv)wsmYmYlaqB8sOlU6du|hHqwN7v*B{KdeIv!?Ty?*6a-99X>I1!ek+Ql@SN}xK+LD2u0wR-15BpOQH4`hZ-)}`mLgxG)mW1qix)l|G5GfiFL2DsJU3f zUjq}z?xp+-ZiMwTcmqdXL>v*6nQ=8p%;7}G-_AqvG3|F|b1!ZzGYpL#-uU%*)`ah2 zj!i{9#+)zhXh0&LjXF<>_w#x+^qa@dGKTkH(+90S6|>YJ6NgxQP@58KWW7wjP#xti z7D!U<=2VH1i^-1;qC0JYSRN-L!>}ozCWOfD!h^QFfgO^f%Q#3hP zkXh7|mPI$Pp=n7&z% zgJae&l2Pxc21y>kZ+8)7rk}7eu%dr`VNVd~renx|#Y3W(} z=mJ;gVPe77Jc4e_)L4hqgyS8m5mK-ba+vZtzfmGe62=;(Q(_h(kc)mI!C3c1cN3k3 zj`BndsZ*2F#5vwAxp?@?25)fxu4bupc|f|uTBbvhOwX6+8@s^_MvvhB-9**w!oM-0 z!qYY3xxE~qLxipk{BtxE%s}KkGS`cngW3xHdLHM{Rx0LbKI&on!#EgXv^yhZ< zmE>+Unu0+i&i!SWuX9wKp)N-u@)Ps7w7@dn_lvE9v3%9_X6$u0V}xtQNdFM04k{P%5+Ia)%R(hTPuQHKi-WhS!#cbPjUXWC-2$VqvW6ZS z7M2GHc>(->o_z%DtJLBFqXD4{!p{N0`NRFAXaENSvGhUJgWCF|5kZ#&Mf&shLEZv& z0deF*V*x1u`}QHtLAU_X31Tur$O8T9L#v0d1=0b6=>oz7a_gCF~Q8UkyArTUv0f@^{= z`^y>rht5H>i$e-V^^fC$7!798hsB5?3lt-0G6&KOY$t?u3i0j_Y)FI!1`$+X$Q=&S z8^~oypb7L1B-7_y4`K_+(5s z_jdsTKLpO`;~~Nw1CI2s1ERTze^1mSfp@F1^ zHdH`B@&6>OI6!G&IB1al=`K@Hnl3(y7i9b5DcgO5^Xy@A)QE>x|SX9(7V)UznzD#-w(VN z$2snAIqp0svgWH})r=T4wh6RM{B+ydsKdraFc?v6jbTbU^cw7A=pDj6Qf3fK$|*CpMa(!);?>eF1ji6 zwvAMOgA%%hj94p@o!^0h(6pynQ@RHX=d5AS%wzN|8iOF)$MdNf_e!Xngew?n+RRNd zU?lufGT5|vn)K}f%(!eF!UPAI-SQ5pESk~<$JDwsPhr>Pb5)Wh+9_=nyG*c#KZ-CJZ_HwP2^Uuix;?O@hG6w;D7O z$m=vy@5)@9A$?LY1Y2_^J>q4I>W`NlzVRCvr>@p=1vT0L2U@jsJGOYGoOX#7)EqP& zc;%^93r!c299C{ewW8!8Cehlt(3G4an!@cu!;dw^^^%V z?v`9etS4~lqzalA-SU)i@tPIt7Chew5n#=%vp%Z^K4~^D!BC$VshQ-IswJ9aHwbi( z(jWwiF!f5t z+aIry2Xwuhg(B5D+Qmvs03M8*xo7LicK;TT@L-^l9kuk6S*am)I;;nImU2piBDnPy zDiRJsHQjA48U%!DeNcz2hJSWgtx|G^s_&1;3&R|s-jJsS`8+1lN~IL^myx4JO@~k@ zcoXPPf9Yw4VF1}_3N^;0AA3A$)x`@{^c&-l?Sim#_It!CiF4ek%2WwG9_pB>7G7-h zFGCd!La8@X=k_1wX546g$i{^=T^_7AOp$X~! zdRF6rUCt}AHJX|St6V4#*HqrvMJigU9ahn55@o$w;RXkSXO+GU)ac$3qY-4Wi+p1zE#=v?$YqSXN#9z`-0^?>-Eu zfE335xtCKp*?%uCa5cOSNfVML9nfMY3z zm^72ats1Q>n&g|k;r>7o2cHQ6)j=Z|Gd)#kvLXo64(jxY=m70k zC)LZ_Pcmo+)yvnvfh?GT+9n?S1*lhS*S$UkN;m^eh&%)^Sxk{5Rht6!6$g-wJe3V4 z;+Mv+CQC=C{JeQI%Dz5B6?#`J5a~lHVLO&?aR{{|tA@9RTpw&(X*2ta;Vned;AND^0<-;-}BL&nXdimd#rbPtn zleckfDJEcSLY{$g^+}5^=mEM>j?D7GU%&$xpbF#paGTJPnQVF213!rQWsywCAYh3M zAT$l773+7uc^8OO66>3r&U$WUMQi}&f00jt;-#3N7UQg>{@XjLJ5BLln- zEM(5XfzSoVA+&<^yG*?5_||j5-wMAXBa+=vh)S3uae$W;ERz)gwLVZO}io{F6y66OL(mQ|0?WC0|Yyx|d+l26KV?`4Rr zVsBj(Yb3gZQA10XTMQmA&|vViyYjU8AxhfNbpMDBYVk`!jq$3e;O3g>{Do>1z>f9DsmSqAJ6y)YXQ3=0DVeld+@`Az8-<(GXqrh17hwYKz;pcf` z@Is^Q2LMzRMfpRWLlf$G=bjS@<&q1Z>BTHWBEl6_M1gS`1SQS|3(=fM0!`F{W7Se* z@WHBs{Zo+YQ9#s%`=r@xi-Ak%J-xv{)5E8Y1=RxVL^<4CFm=8P;Np8paB7iuVSxXy zi;uxva6{7zp9ZO?jwE5-pWcUxq>O$27eeZgDNR5cHb#Q741j{>Y|h8xMFPxiZ@ti5D@6<-6#*%&OOL1M<w72Zwbb>GY04u zXFa0St9X#;j?psNubf#y=>0`As}}|)##UcXrZlEDM?4|zUfySF9+*GJr$QI+I~Ua9 z!>nPn3ie0{H&ti16|k%-Wh#>ncSbYeGA{fI7r?UvVr*x@t@GakCYKKQGS!A>!e5?p zNe;DiYGna{#RaV4yj~SKe29b>plmx-ZQWUOrn;HnGVzI8+ zR@Fx{kele|Ve^nGP6VCJ)*OfT-d50hu9{n(2rU^7;*93Tq3Q!oqwU32G691JK3tk`+FT)&0#0}t=BKgkK zpSL*wxn9EKoUU4Z)rDq4ar4T97Mv0E~FW`#K;TyaepTi@+A#`?FsUfE%{1c6k)(%)S(ab=2N(=Us zH@aR-->k3iAh*kF0PV)xqsVQ3aGHb) z<9eB?^DJJE_qrH)_uTG>hg|u(+vQ}cZ9DlgVOa1%|2h`q8n=d^-&(pbDC#kIx`TO1 z@2*USu5{qnX{HDGz5>pmzu*mE;=V4_FXw~_Uo6{4a9)+3uCN22fq(V^Z zjI|EvMu{PR+MQwj{5txAS*>aP^t}lUCjV||soNhbCR1Qbda!wh(C6ONwrSmMa}wFh zsPFgmYihsIkoA7P_1}Uhd|5D=CTwZBdnc?F9+zFh%+IbfJ7-TE_e76o4b6Rv(4Y56?c?#EnB=AvKHQqs#~)v5$tve(2Be<9|zNNci#ijatqSmtgE0$hcq zdC8*cRFBfo7j{CDX*qKA?U^Y{&kw=hm4n2qm?tuBxB+76iNorFuIkpcysoB+iDnk6 zM>NsSH9d;sjZ3G^I5{x=O>AV<$#Zz9vUu8+jG1iQDq0otW^ii9xKCaWJD#kfqUF53 zvPEj4)N0mZ8OwN;ONT+CIt13t7(V{8KMX?5guDEG2p>0n7{7RRl6s~z^QnzuK5jw? z*RK|x!vPcJbOf0OU&HYvG zcZG^^e@Z7iLQQ|BZ}4Fud!Q~k*SF2P+)SQDdja7IE%;d@JQF8#+wX64IJKl0o#2pu-Jai8db$#N2I z&vLiDTECt!Kh6vO;K|6S*5b+VM1 z4`iKgF9&4eRA8fNdPuU7)14H4oE*qj zGMMx_|2&k)N$HHGBM*mm+%cdIxT$f(5~!(hP=58)*P5SPZz&OIpvF=!On|6`ngZkq zXO1rt9Aw4Z8J<=+%rWzP8Y0Oab#*;Aik4iDK&q|EZVw2U;*K?YBv*%ptPpTjSjpE8BzovEgq zHMig8!PMtkzprP5(Q)f%XaKbiITjc>GrYckF5RLX4pN5?dfBeK&buCkqQh&8=#HixmxMt!QwEJCtJIza71YID=YPLV0R&=tX#Dxi|o>aWfk^}k;f}>)qx}M2q z;0e*)+eN&)8SBYej)v^gUbpEX9n_nimk_CQIMkmdJ~P8-4ybl&D)DX(|J1i{2mcPV z_S+ek(+*0=?_v{r#X*dymz`S|YUKGkG0>85C0aJ-hr#G<iNQTdQ ze@EirZfIueJaX2&$Cy?t(}Q5>RN=umaj;4Ir&*zSy=`Bf4gk~u7bb7^!)Hja|FGJw z&QRDa7U8o7z~u(*TXIeH*h8==Wyu5Y`xsD#dSwZL7dWOr`yv~msTi9 zy=I|0b##K2vZ`0E!j0N3LTi7_&Y#S5nCk$)r&wN!9{}@&3x2+{J3NJ(@olt|PM*u- zMo$7uJP{aQJ&wG98I_mYIcb)=n(Co1(f<1+@FB8{Fk|Ulr~SX~uzxN@Jthye80uVh z7nnyoto9a|{ls?^oa9R_YN}4pweGE;tNd;^;b!+fZqCET#<5pIGq^O2b7d5$LF6&) zwOx*G2LYi{^di58aY^20mC+9*oVg&~bNM_yQ2c6sFJ7A|4d^TGmyb=qx z`}-LbIDr{kUBfr2vCD8UGicYynnL9J+m!?rgEjuXYir2)%I;=;W2eR4FQ&jSWA|Fw zTIyY;^KeDxUpSjT@27+F@f=@hcIk?r-y*N&=?lP>xAT76Y4?3q$70c_-=qGDPiQr! zaLH$LcA2Y@=OG;(GI~@O_mzRRbvIgX_jA6v%xJaHJ?}uuegMcq-);ZL_}8m6f=6lT zsq`A7PFvTwC)j~o2iV)Q3pk)VRR84TR<|Hrd-ERO(IcdKzGgSldEjr*7L^`E8ns}@ z#sT=U&&xg}AU&(~w-O8q`LsMb4tlEa|528N7A|#zxEfw|FXFNZ`1J2yUnAYWrJ8!j zeGkjGlOJEBss>`>6yUQ1C~j6+KBH80QUccfPS}d>V`@Y+I2^i}D*0;sP%qXHEo^)~ z%Q6sZcviUhW(Kd^!=RfU2;jyqwmh_oPyoFVF|W?nS~^n!Z0H(EJUHy_E4^Jv-GI%> zOO==REE)Xcyu3eot+(qG6nPt@4D06{^w-g&vwL&|;3hW!`;S^aS-fT{qce;bC!KaF zt#-AhtccC!rrz|wJqm=y`g|K%m)W!kt3-P5QX&KEyP+0-ZbPy#nfI7xM?&)&wva*cu29R(OBIi$AhLMeIW(g9)S(rJhy7|k80E% zGCVmu{NKaF4b`Wb@J@X`2LVq-z_=RUZ8{&%Z_=}%bki2%49-J4d#QEV$v0aEP*2l4 zn>Ylb<-HMYots~?T5eftH#ptF?y#7A{JMsZtSbzkbWcg^>{|ueYVQse!hjv=M!hKk z*S(bno6)0I0|TnF)dqdNtW*Lgvxwu9EQ;Pd9_)EDlxE(}CrSbB3Fj zvm4IxIk)<}n{0{Dh~8RFl)XjGkIM&b{imt*O$~H9?>g`<=L_Wcds_>yC^;hUm&~R` zi)>nl3rp&T+!lf3Y^iGNF96|x06M_&$PU+DIZv)tD|=0?&*$yy_x4*_SLJWj4ea@|-5b5+J$eTLWivW;Gdc??j9rYHWfh>%6f>y3Sy(4PSO-2` zJj#xg#~!umfE~YYuOX$ShJy`{lh#T)uJ@UnU4|tSymOa5eFxxU+I6(VzDn>WE^7nT zEbfY%c}06e?oSx?ZNisb*lJZ&-{unl4^PqvE`A6L+uucy z<>-aX5N%K_C6Bz0!LyW!QseJ6?QZRwyu&xM0eo`xItJi5>e_N-@AK^bq(OsNzA9%! zUcS<%FaMSi9RsBK$1@la8x#un1cyXh%B_Lm{0eLUooWJ|Z3>!c5&=M2FS%<^WV}cH)+AcETriTCH#9sJ0t0 zff^vwywKdGcq2MS@D=~PGzzgttlRVsp6G_e=-^8yrgHH%hTS4)cfJ7*v5!-1e*p=3 zMoIO~5cc*wdY07E?syT7c{Yv}E$VK-xk{0F(a)dPuW-5fRpOne+40h_&|SyD2J%L0 zRXn`mI0twzWZ0y@xbdyeL3h~1F~&!q^5sSEid6o$)bh%GRmLzLY+T@7(s>KrI6uku zfND6R?UyExogKlh8xF~vvM|sO6GX^cN*B)hJYJ*uZEqm28{olR|N0-5=BAGOS~a~q zHC#O({Odd;c4mX;bdM>JKgHzuuVq}V-T*`5UjR~s({9dmNY0;tZPi811q}GdSq&0M zJ|bHt0}+BsgJz=Kx6IRwIx@oV9&rRfcLnd2X1A9duPY!Y0yO*4wd>GFkJI601QO9c zxagU~rIo|)uhIwZh^0e1?3906ZX(E6DHN+5utTI^Z$>uAb}`kiTnuafBT*K%p;tWk zH=rK^iOUj+YYdqS3c26@D=$C7@Cjpt+G{V&@F_KXNoQQMTdYAjc$ugYTic3+|{~mI;FFo#iF8Vv3Z{vf}t7l@=*L1{}l)gw{VDi+w z{+zd(2mg=CU@7%yj1x#4KU~y?5zCU%UG`i32^l{m9!prunvfMwVOAVe(glIi9e`({ zD#uh9^0LT`55$bmxR{${!i)4<_7kdZP!&xxEP*6JVHghAd_5LtJWhB#4hK6fGLevs z(xMA84?S*^RXoc1uPBZzpTwXB#V=%k4+-z?C+Tj8c|Mpoq1m)ik*8Sfr&ytXy;y9- zIeyX-Pv~DB@+x<@3U|0j_i7F{zz||3G``@3-_7i?G5ss(9LV@b!Qq$qh@aBEpVqw} zsb?>(XYZ13I5O}(Awdtsg;ijVI@=!)Di9~&_m_|32=(x5 z$ELlRow>0Na$%!!5DOrX5;f?BZ4O1EZXnp*V$i@OzrqYZ6lU<=L6a2APl{8< zhnu0!Z+Svq@xkvZL(NYPfKHNcpjyA|p~76lx9#e!Tf zxmx;mF)gxZ+rrnJ@jaTpg&$Ogj{WvG%kA&R_4mzC4$XucFS(=UIUe z6FwvH9Hi_Q(XNMF#iKm~4)xlzRm}~1HG~n_&a#3a4e^pfUru z6-+Er1y0WZP^AurBmZ(OgtoUKh*SEtQE_DTJ})= z@YsI(HWC0}iHl8rKM`ZAW*w?|a{f`?xdto(CFtfGGkT zqkZhwrhsjfBva@a!sIT$na#nz)@>p}#?yyy#AAJZv`rJ@5uNVixzksy4)p5S;5#b?HY`F7RKn?9-*fRFS!Ze_tOFJX_2J8r0FFl!&m+a|8)?0@Z_^WnC}Vk zecJsQv$J$h^W=t;0xnJ)hF}RsG*h_ong$o8Y zOY`P~qXg*WJO%%C&e|8Tv|9|kkz3TT>ps34^E(*lcH#|m>hf4%;cr`^r)LGo+DcHMspe9)a8c=SRDB{9SBPJ2Idm8!d2=}3@$!R;~qjH%C!e*J_M)u_LO z=iRO`mzu^+m$tSvFDPR|Ifm%+GXs$e7grj#HwB<>LQwz>F~Z)S=1O*%kR;lY2%IB~ zTO8@N5Y`NKi)MBViNbQth)Vs5&}QEY-X(Vt_7^ytb)VuG&Oz8D<;4t$ampKm%NmaP z^OxzaiA6sz%Z#jE$-(@&SL+)BiS@wLcw~G`KWUgK&-OwA6Otc|;8>pElF^+xNwERP zoD^WHLEcTTV)#Sl=7=eMj&dzqN}7wPAe1TFaA)!p4pI9nl(WHUFq$u2U8P=~^B)YP zfnzCj_GbXP3}x`2EXhM8*^NzlDmnYyx+yZ8F{3i>v&0U=1b>Sxfb~kQRLB!Mz{HDG9kue6h zTs@~|A-z}SYeJrBUW(MiLhN0*Mr-uO7!`6r>)Fo%i!So#B4@bOV;+k1p?XN~rUsBb zS%Z?MgX-Sh>O|ivrE4#<`LsRLzDe)Y&S$^Elf{xw$CNJT*4>ADOiI8qEo6HPwao}g zh#@0;OhSIU11u_gJYpAm4E@a-_qNDO8$_k^Aj#lVl+O?%`75wKDA<;mUigHV?}SXW zd{#4Z`YmEPJ&rt`LDS@WcUjXvofcquNaP|^l=T@B*p9*cn+{AkwAJ3nnYJD_VGI`4 zUoSoT9fNG36H2a0(%*f4_m*B<7Grb(7R_MFQI}-5EqJd@RK7^Y){hOnupLaQjZ{#@ zXSs&UiS$NN^d5nA7#}3j9WM4zdC0Uvi&cy_btJoo9(7JpVQ>Y}YbG^(#B=*IOFJZWk{%uBfceq_vasZ^neuk0a#{0|Xi(EI`@Nqx{UHe8gE! zJyGBt4QVM2=OQ}FB6>alzbCR%8m`3@l*JUIb}*49A4_$d%ov8`Din>^Dx@s6z|lIK z%>%ljp?v~}wRfd*)*jfH8vqK7orZ3~G&IxTP4MAi`uJV?_;4y5zQ}8#Ji>UcOn9m; z8l5Aj--rnXTq`aoZk+8k={jC#?61{L?9Jn?a4C*fPxr>@ySv$Q@rk!{@k!6PT{OPS z*FO?&kp$Ohd;@oOv%9e%Np}3?YsbiNZ(tuMo{e8p=_7b=MOq&6lYobzNg)d4wAn90O!!FEVBB&_SFbBe`GD#&Si_g%cnJm54#F1E_?QODF^y zORpj&nV)Ua*VsR8(k9meL*BaRe3g-^6#>6%ZsEDhHm_R1PJnCN&N1z|bgDGn+t+m4 zRmU-Ntl7JIZOcM406!PK2bxoz-)?18J6V}ei(kJM!;dcW!p%!&47S_q0@YY;c6+h8PtB8Isay`GjevZvj6RBXK&`rU~25_;NbFK@6v8p;V9E= zMd0AE|DX9q=q%Aa2NMX06hAFN^vC>x%slnLuB$V?Y%hRU2 zW&7P=`QOpS_xWw6b&{(cvbViJ9xJ*egki%XHjZQyKWHAO&yZ0Cn%M|NVgwUFU82nk zEkt#EcK~M0uV9x-(+1Nc1g9}`BAE0g<=`m}Rn0i7s&h)X}f(M=_9g zU82~Nv36%-f}>(ps9_mWr>;^eL0y%I0~duDaUdKXjL;(FjiwaNJza$=zDRr{EA2on097oUW0zA!^uNS zdy`k90-sNqfOyQwl)L8n@I%ga(NZGHK4F^Fz_Si!{_~j?x#TD=VQ@flGHlNsXJ(xj z3A6(ALR2E7U<2UY{@@jGGn`HztJ@&jrA(?cfuDm<>`?mhbAEg%`H`m=+z?GhTblH1 zG9lkQB(ad|yVF^AB~MqvszXVID~Pj%Q+>;-LAX|VCXasajtMJAKyYU;Jz>_5$X@WV zp&n+LWP?aEGYEG}D=&nIo-Mq{6a;5klOMeUMPZNCXWaIlK^J6f7-7#694z z3Kc8XDDIjKYi%mH4h3y)q{Y1(Ag0={eW;3sd)XgaD)*hcF&x|UJ70Cd$=u4a# zg$bViz$~4jNfk|G+kr9U7C;#;09R2MWXXEz73TAv!}mttY(JC-p;X`g&I(p=fP_hH z3|~>)!6-8w5?KsbK!yq4rPN}qPLwv{#4#5Ef`b&Y1z>F6{$q|yKvTD>fLz8ie>b+z!cAb zUs_M4Z5ivIgr=;PFArL&O~;%NX?R!PgT^$3tqd=uu7?bGhYLmt735_dlp`9nZ1jw; zRKYCv;+sMM<@~;&IuCBbj`so*FLDV{1?_NTlof$Zgav_22~_pKg7e;!ERsViq>7Mb z{e^9O7wX^35fM0?g#3eYo8Oni>MH$7Lz(;)4;^EPQ1JReC5SI)rUJwp6dSArG|89@ zw~h3786^NPpz6^`j|VUAA4|U0n_4)a;$o!?rb-RRtjaUDT(#wl916=E6njf)>C%@W zFQj`K3O9&N&HME8FX|J-ov7aO@2u~V2|xuW)&@=#@2Ez>>i18cUlYZxgw>pjuPk+_ zj#BlAmlZron36*ZHXR~SYVe?52SXtJ4Kt5HA0Pza@Q=+GA|kBjg?Z0USOP@+0qPgU ztR3Eu`Oaio#xz#al^Xds8#K`{xMU@hC{EdE_5pqyf&q?>FP*`qm3W4WufCbmMSQ9AYMi0p}qB-N$iZRDe3W@0&Ao zM`*x%j@kt5hlFI&5^+Y*pXSWFfAU2L&1PfAb*R6(OoKSB06h^so1=PW+-Q{ zyci`Mn6uj6sQ}HCVw_?X#GUMo8;I2oJub z2~i=HaL5=`J{Lr-+M=6T`5X2(%MUA?77d^+H8e9nq4rB7rFu!96@42bco#~zo_yYt z_Ax$RaV=h88z~u90V39APIWh!aj0Sm_!bi~DV?a)BYI?Nu4K=MRgxMF(Z=>qpLsaH zA@5p_DQJptJfw#QNI}4Jz!)o11bjA+G7$3<;pIr>+Ps><9XbxYz?ab;RrXK?`93lS#h{CaY-)??FLD9t1A3K(t6$LaZ4{8CJHWw)8 zOx{?i$g&wiDi9`V4a(*Ua|0`Bw6fF>wD!E#PVzv$w?Bk9cW+EXwbTp)R1 z8P3imT_Rr`cr-A>eWXGT{9S)1$77WC@vI6I0BMhOl{crHt;-%asC^fDBwz5Fq(~< zd*!gK9Yf$OHM3oS5wIIQ|2pTd2^!!(7r@BsLD_SqU=y=4h)1BjbnzNjd#LGTu*^A7~< z)6%_4Bw$L+jv%wF$eaLz8W1abBEP&kYQtDx&Zn3!c(DZ6MVl0vT=1I|jY9KZP)|JF{75S{v@-lBgG@YNkPzheO*Dx`SQHh zKCa$`AOv|`8w0RLPL2QF`S=BUyvTO7SNHCR&EW0dv~;}1lp8Fu52#h2y6x_D@3rfg z@3%B^*_xmFSS(@QziMC3%Rw-G>;vwg_;#V5YV3WQ|3kDv=aP@s`G-NyPatf=0yGUG z`6#b0I$lcyj;+PU+iii0I7!`z!$6>ss)x(XiIsu=JDbAT6Wt8I_2Rnw%Sz!p z>8_RA-DLfVo6v!%1fUr7GZdar;TfO@Ze+7YPsN2mE}_h;{L7QW2^%FTlSY0#NMsv# zRw?d!agol3$};@0_&LVU-sJfA_U-s2>dNwCs3@x}yn^53o7)`iT8;soMT@>Q<{xyn zT~r2NPL=3xrY@hClgPPd$Tzk^+&ufp#_eM{-Y0T0)7SnPAizWJ>#_g@VYi-50cG5y z_vf|X_x!y5I|i}M2M4>f9k1Ditw6dD{O2ztrntbiwpk7bob&?&&<Bqn$!?GJ^@wtVIi`B2L2ml_ZJwvsD`E zXyk01yvsib=B`?+Ty7Y6fry1n&UDncN*FKnLo6Ag|7?s*T8kEd zZQc){2lyNtth`3-QfK-1PlZQd`kUltVZb5G|MOX%V4O)^&yZ5^Z(iJTlmK&lYoT%D%DD#=H1&nWRI|lkhP`TjY)o`XK% zh(dCV#Co-zjxElDQcU#zX>*_^prEIQJ6qQ3iM%9mmbx6Jo8q1)TJ`K?cyQa@N4Oiz z#|)rwHjEMWTHay%GrudaxW6(eq*lrIP5?t~5sVyxjp|Xy!&df5 z?oy&{JE&+Ww{Wj!9%pSWKAh<8YTsTF5ry=L9>w(9-jeNP>GuiM(de7*i%M>1O}rUi z;yKybs*^M6y%LE*V+0#x<~3AV3060*bYsDI8c(AVPrkd}O3z3FIG z-EUKDTt$%`YQPD6`w*K?V;Dg@m$zG%?+MQxd}M5ThB*Z!eK{CFJFK4kHgSFsq4+tF zs9%2JADVtm=bG5}eww&G6*JHp7w=Gd8PU^1%fY)noldT#H^X-QUZP5aaah`Z1DwC# z_qD8!m&jn^UxwwIM*Rva&j^`Irsg!F3||BBAvtjEfWI)5q2}J*~gUACL1o*pFf1K(yTDn zUI*)i?J6iI2Ah}e6b&Chk?QN2X-DQCY2U|^+o#hET~d<<9{62HRmG0(#2yJs-t4(X zx?WHqwX$=uv7Jtn>qvCT@D$TlW*YC)+kMy#fZCM+t)lR=1Vo1494X13Fk7{3(W6v| z1z0-&!To1y5*?Q6eYTlgk2iWFAOqcnZ?gOhw_;dmkp9!M>gn9qVIF1VAZ;o*drHJ) zL!>jM>^78q1?vjUDv-mrwchf*T5Mw}H>TghRk^EMuNEP2BI~qqKlne&u1sdv8JOgg zTOi0VI}WnLxTx`VRoT7^W3QQ+(i^|Oac#4QtUEEt4jU zIN^x4n?vT>7a^w2xorn+f8{m0)ZcJ@?3+$kvzptnQi2Litls~;{jPlAZmORcy&t}n zk!(%A$lUKC)u}SF$J@MO(kVv&{U?(_56Cv^>by=8@=@XREOWvGenW%H`JAw2cGCgH9oVOdh11C5WS0x4YzZ#leM%d(ZCJPgW+ zMAow=I(RwF0V2GYibs>DhC`5^8ZZUV<>sR_nPB_ge~{)m@V#gwgNLCkdee<@!N3Qn zoh{~eCcvVP*%95il=t{Cd;*b^-l>p(c}pF=>Aa_A@T@8FxkUDH%R5sov2*FvLymbb z5s9|w>CW*z?=Z=gbQX%4*;pZO#CDQm`}oS^R}(mu*{(*cp8L7^m|bC(w^qx4Rx<65YYY+2Z*6Af zw4Mlw7~GgpR^f9-upWB_1E)|MISq+2xL7dzW>q`CArunUYM;#j3CV6{&>^(-t(#4n+q?kTCC=%ZBE(#4eQDW z%%_T9`)JFj|IXjaTCVDnvy*yMq%mpDWOr`U&7SS5vUTo}{-gCu2I@deyk2Y@G(1_J z3mety_e0??7r*C6OSq;=C@%y~aF)1^?6F17&QxSP=h7>nGXPGzLF-EXA~Vfg`j7Zl z8Z#eI(+N7h1|NE@ksa|;C+En`^1?)mLEq+n22xjD9~Lh0vhe&|jp;NUO>M#$Qi9o3 zd;Cx+xiq2WdXB0MP{_K*Hj&&mVQSi=lVfzh68EolY4{=rnIKEq;qkTCJ0kE5>MbK6 zojNjrTCb67F@JwiU5j?E_E^YOQw-h|7IAEc7xQDm3XO;Blf6yf04t{bw_V;j!O+hz zO^*S?xSQfy9gmVW?mRoh0iyLblA33wisxapF)8`a!Q@d04^{kg9iXp7 zXp(IdbqD(WkC0E^b@fB#;q;ZxlBzB5-;xAVES-ABU7EAJZAJmJJ%%wXugFvGvi%E% zct_*+5y$V)if?h4lq)INZ?5+!TSi~!c2=Es*mYun23dQ~wSmjcsFGNdWr039Yt05b zzG+7dukgjTsPmr%tnS^h~VQqkl4+vg+i;9ROUO(n#*08F!5wC z{J;z_J5r<Yi(5U*ZPQ+{WYq%=Iv*8S`MGDg%sKf|H z@BXm?VMySXZUv;>+1x=oHfs^CGCQ$1wjl>R$92GrFWv8}YBnx;`M}v;tWNs?lIove zJ_j&merZaKorv}KL|dN$AD7nh_G<$yGoaI9nZu#0cV7`4dtKw4*sRkorpEApUZ-zI zv#FrXn8Dg&&IlM9;;<*_z`It)q{2h4jI00`T89s!!Yk5qP>q&!fzp=f4sbvE; zH)mj zx7DD4hksIcwVRrqj4$=(`GuFMX;lR>d>{B}Ql*|+y%zl9Na>8$-~&MswSO%WutK6I zI&`9AjvDMHL1oJhwI(@5?^sto@3q;qw91jHIVTx?IbK^f*$>V$m#OD`wQnu!Cyc%$ zPw%GTuVuVdW?@yX8z){&SKg~=uhV?sPTV?BN0fztgv6Ei>^t0B2+rEO_(76n%}_+ z!*rLgIa{x z9)FV-EPPRaVA|8hl@`1bv4ZthVTznJJE`AEWg>E~84?-emLGfOctU>&9gP#RIa^r| zzx&ShDjl8`CHHl9p^KtIpc|CN<+J7ty0GbD&mm2PW+U=xYbr{d!|zRtT_x7Gw`zHZ z9y-lJFzTh%!?0<&z6Uf-AFvTNQr*_GJCIJWpLU)+WW?0?JLa{wEwabG)LUz5Jf&-w z?i%K{q8R0tH<(3LAFR8bPljA)04Oa@I>mj zhb^vKe^;Ui0(ycQ9>SFVll7kNa!^Cw@|`xIqsTyKuRaroV*pm5PTgPVnLqO_G^XJ8 zIJ%ZH#$>tA6%`g|3tB4VW(hNZto*Ij(V^x}RSgRr(n*~p+ErJtx~g%op^lbGUt6*H zY8;KCFCMu&D03mC-mFt@QEg zCH7Huaf2cj&WHlaDgd=7Q(x#WiZz@Ooa-NlKQ~Ym{xa7;s$pfJ%piVUlSqGWMx#I{ zfMtcNgRO&eg8TP}=@*9o?@;o7bTrs8*a+CTPoRln9032n@$RsOeKS51FtF+rIW5HR zK)Jhzw&KdGfV)s7ES#>i6T-myG?|c7Njs@+!C|t@8WlWEn4q6&8hxSZSYo40Vj+ED z^y=R>1u?ys0hr93EgK#f8IDXma|RXSkwC+%05aw-+(5TrT{@J`l3 zrxBk^DfdH?oTec>l`bVbUzi>xcQLP1of>mgQQwbEmrS7)QAJAG(t$fzTST6gwZGr^ zFKuCHU3@++X_ktLXs%>A1(>1`%Z*_zRCh}F+yF~Mm~i0&x=5s6;~UkibInazVNSu%_+hz!#VoQ(#;G%-MC z&@4QO1`Hb~!D0qwHV7UQ+zT%c4IxRQ1grurgXxRi%ou0jAH-aTYZ*2VphyY7g|aX! zQB9y^M5@Zf2g*?WIaP)jjB~bN7MH}NEHL247@rKattCi5WmVCmUxMi25QaEWH4$G3 z&Lg$@D?f_4x{sgl*KNTUKied3(U|tj7wjuk|ythjm(sZGG5G;4iG8Gq23= zIo8I4owQAgX^i2143o)S_iZk3*pO-&6gPh1-%lv$hTnd9<0asR9)CAy`frx$N9s>r z$=_-Iu|yc5f`XEPYy{GHVHMD4>YcDmMdQPmd+6rUvLpyvqkq__3W5A<4uj{^>QuJG zKC>MX{)k}xM#%3_R1PFEWQFyL34hJn)4~|>^7M1X>EOfI;L)Oje?cfiS*XUF>vJK2 z2|_@_A_TdcGll=k~5iF2fZToEuA6=$$GYk?&ysimF6`Ti5?9@W=NF4Kzyd zARH4ulvqPc9kO(YAXuOsKGYSfiI~L%-hH_Vt+z9(Var%ad`>R6qCe#pmkm5i=;$AW z_-(K-?Jpx#jBpWDamYFGdPgwv6{vqTyouIdZ5R+AOi^J7`zPR2aGHrsgx&L_hTjo+ zS6HwBtU74?1oIFD9;kzwX>|s8=)X{~nEhCyEbL6bLcL=G%+UdLDo9et;$&&>ltXJ+ z$gL`WT+cz{Gx0ZkNntDTDBDmnigxG6sx`>kEzdT^CRdK=~ z>!6?))-xmny}_7;K1hrR0zxeGDWH1$oRN63>MFYX1`|o4v%p+!LMU#galr9VA{<4i zq@qYY@Rkz=^J;-^M;>J)P>J}X+?Sdb+|9KGN$4i%)35u`jS_Jk2Q5)yAT zibTUV1;&3Ye>ap_hcU?4eicBiu~y%q*DhANx>-7 zzu{v0!;+}`!g|6AAb-QGgu1DQ@D(Dwfn$TBg@I)*1ZRiA@223%g@Ec07Q;3tJhb36 z<1?Jcz!~VHV2f@ny_?rOGXnn`%gbvmNjua};Kno9b%sb3gNbJiW5|}}7c%rUKf{6O z!+~5uC4ztk6x}d59UC>6GU2GmG>$F2tlFU`RASF;HwP1?e^>}TTQ$A<>3C0HvXT6M z#fV7b5Yxvd%J}6^LR|q&kTI^SFnjOYE`%`9pz34=lE15V=4OH+1~lm6Y|A+2;Dk(F zj``J;`gO~P7d>>xa1bGu&;}Mmq&nhz=K9~Z)4>60qc(~kP{XN^y#`66d761WA|z?i z`kPSr=GW?sH0Y}c;8wERBN#{wVob?!86FBlzh6n95JLref4S>JC4uSB;NmUgnn(8a zLPj+&be{vy#)4?s%<%1+jQca;^%^7OZ9HjYB0I7l4ldd$oGb%ezE zEZl+Afq$z)>gzS}+mLy#o61`9`i<(WGqGr;^tJf0)ODEu9O~cM6?p}n0${RX%cZ0H z`yT!}oItVp`8&G!l+jyr`r)$`K`M*7%oc?E-FG$murqxVcB9ES4OO9sH72V*>4r%+ zR^mMmWoa(Xl1&O#TGE33&b zb|RM29!nsU;;+P?288Iy*Z#)t=$)q>W-KN8rP z|8>_x0ztRh2iqGhO#=BH^jPQ#DcuPMBm`lhqr2alLV^d6h~aBW?<34JgDJ69GlF%0 zV}_W?3cjXh`)`?L6oS7HjCe6v*qs*&B0B5$9M#{O?h-$y>LsE=7EC1rrT6Y1LTlcC z!;8RiZ--dMQ;6LkBkM^@{onnX1h*%ENQh;$$ac4eM)~T=!bqBF%>@2~| z^T2HI{n>7fo~3+gLuRenDsX~5(PZv-p02I8Deu+1zIeR@=E68MuA@Y#O2LvjI*QrzR8D!hAbk79{vVUNn@4ng!E zQCz?!a?d2r1r&PYP~X45&fU^%p*zkPJBDIt#o!G2$nh~DW_~|##|QmbdB-#GqMyJF zqrpSCdbfYD+545qUu%g%zwqOIvN?8O$S@fI)>Gm_mI{)F{}9V+S6Y{-M1kX&X3gP_B%IG(XG+n+fSo@ z=eqzFV}V7(S{y;LEP?ai{kMEM0nC~qCND8Asl3v;gQxKOr~pfuF|bxB!FvB@@k~Y@ zb=75HgW@68AZ1YCL(%tvzlrkD>@`ax5)f!p+$>Tj1Sq8}EBh-1Z)c!^evG-&OC4GB%-!f~eXxVn%96f#YxDzj`KMv_%UwjP z-*AzR%oVYLw3W{hx7t1Q%gs%ap&$gvUnV2^m1WwAY$!& zTmjgqvU;SDZl=tpM2r%BGHw|K5YZd6L6Qwn+I@3?iD5wol>&82*(d#6`gZF8rKxy6 zDQDbI4cN+a+wDSR(|iqE8k1S%uLg!639SNRzNttrTd6vsD|2citceo4Z0qZv8xI?z z?+Y9X<%tX!WQF2_X*iWIloIAfsv{@QTL+PAGB+_9wv_6;90fncvO_!D2izl8X4WOy z4uduTs5GvG<^G7(ty_@h#YqCvx|fd=9skO{PXPvUZC2Dpr|Sl+uJ4My)mh|!KQex! zK8|u!_2W*`qW!UbzxGb$cezQ^U1*q#u*-66epYd|DLt+7Hvv45&nIPX-Z~grTWFm& z$}B&iA5y$0NcAqIboDOjsF~Y?ds2N5RZ=s6@UoNj=k`YD=*Z(O6nb)-bJU`F0UfjE zs*<`NBXYYw_lt5q2=_Ao-4l#Q%e%x+OaNq5S%Qx(J0{)kvpSysSH@C=c_#7Cs@BN37x6JSv6wzzq*+Y{MJ2p7z=zDUgx} z=iQO_`gET;@k5>t-Pm-Q$Nprem#QOBRyc(FjM8*|jO4hbl9n+gaArz-<>71Nes||^(U2^V?0XURBi6O5;6TMk z$y&Dj&yK#?@Kc;A6iNi42g`TY z_pK~C%K@|C*t1DWj%2k-Vo$&WzM-Yv4AO+VHGR_iBmLRIVF00JPd^sHYwAOlFM--O zS}P<&$<*1N<4W?trjo{YW(R;~TvcD{MjdCi>QEMR_@~TfZ^)D1Hl?aFvN>E!&K8c~ z@R)+hF!`~VXE)y9WiI?_yiF*t$TGIl7W^-=YU~Jn`T%fqq#(;ENcEU) zCP&SJSGx?srS0?)y)FeKdDP|dm z3n8*5c0sb#h`blkobO`o?sULuJ=+FDaWLTd%l|?C#6+P zO~jx1W_km9I<6-dX&88Ka;0-_2$k|O+5FJAy}$X{Qz`HqP*_PT!&$|KX}UxmX>hVi z2p7}1k=xGOkiwaK!c?^{nV^BP(;oAf#*96N7_E6kxHwC9iu$!~3_oeW@)ogp=+v}M{o|Or#bUGUHRkyd(!kF`ZJXo*h`Zjr8 zH{L!akmmGiUiMnWu2I%3=a6mT)|FHADeR~VSeuTV;)mSybsXDYjY1|oE(s;Nd8kG0 zA{6I3G-^GvIs(m{z0X%}6BAv;Xyi6+yDiZOx1(3AjqOuo8ZL%OY!9+Gt+SClccnff zkY@Ykzs2Z_xsU^FeF*S;S*!M2y;ZgZ*SufOOI)Mu^0Fe8i%7Gcg5M@OS!3KT1Cxsr z%VKa%vL^~)JPu@9I{DA~(i;dxOZA30ovd7~Sc*6c?f|#T(8s7Y(>gW!mf#q;wv+Z%7p zBO|qwp*#qOp@@@6=jv4c$?XIqI4s-ghBs%I7GQjA?9^IZJ2hs#@>i?mvVi8NS>^6{ zG}v4f0cUM@1K_{o{G2FVn?KTCZLe1lNVteqM^98UZeck(_n#nVgs~H87B_o$ZgktQ zZVBqCxKrvlnLcl8q#d)G?%jkCvP!AVaA`S}bR*9z;Hoc}9%-&s<9Lu=&7aPL%yL*D z0=ldvnqrovj}cBsR`tL65PN~Pd;IB#T)m3q=)G#a8|W^Te%9znY;v^UILw!t5o$@= zrJYXsW@WpXb+WLAX~UC0;gx%{LoXr9SlDXl@XNg{F|Txp^g=;fw#1J|nUkcObhH|6 zY;Sqb(6Fb~Z)d2KTFTt2ZFO|To}GP;0=;_Nxb{0_XDjF5%CTJC^c^Dx&Y*KBeb+rl zEyqv6DMyx0IjX#X%$E7bizC9z2Gu{|vpoRm>VHG9hq_G4m>-(*FIw?eoo}Ekhqrpk zjES_v#(zmuow0mGxYm?(=B(Qe50P%QcC1{4dxz-06xh!;#JgRHb{ zcBYqx$L(b2((je{0!GL!6V4Sp8{N$rZn#Mkf-c9``Do zExWL$r0TXV*(smLoLwE~=WV`McmL4G)Zb%5H>GZJ*I9d6B(_0TxG8+?5s#d)1PhEB7^ ztgC^#JU#3kznOR1FJ7uxTOL(2-h*ZGD0jZfk8#4fITZ#kSDE4QvvXHLn5uefuTw*G z3t}VB`>MeX;@lMkdJa;t&WNUrFt>~_sjI~*8n+yI_72;_>B0RIU~ZkZQO8+Rk+`6I z)hbPo(n-eoBV8oz`LefQsIn%dN{@w_|Jhu_W=>SW0qIJ0qDG7_>h>^Q=b`$vxNdwL zZ33S0(?)T@ZYsC$42_p2-51{wIsJ;Di+Vd!Bqw*(F!wpPEWwPBfP4CK2HUH>q>j(5 zxI>b^>@h;Om$j825YgrQ98fY>8xHSAfc#g{L|GnQ>g`qM<*R3Axpgq#**HJ9b_6w1 z;$!axfVv}6Feh`&razG?jJk8M~dx~d78O^bu$j@lQ~b+uwJeLN`u{SE-DA`n=G{! zc8lruQ;W5N;S}7tZN`!FK!j5_j-?{a4sWw!QuD7NsiVTzl5X|Q8dX}!vi%ZHN zrO&yn8nFw2WOx1`W5y9Y^tmCe*IA}Ac{=*m>a1vchJLlS$yB2My0tZ`Cg*qj*5Z*_ znJ&DQ6T_u;t~32F8xOTL?}>GZ?obFNW~^DV<*<$1))&GlWrOmO{&z%X9|5gyR@p}8 z0+R{VGjs$N!A*g1+YU3ZuuECL^v3-Bn-6(U0C3h*%4#h1 zns^R4&pIL}_ONP%e&#XTgy+-cqGrE!x|52g{S4cB$5&Ngndv-xY8we}XU_>2=t#Ij z<7APmA){0SjRNn!JYzS?)2ZkK8%+X8{jAv{_v>Nt9nP7jHJeS2IX5HYd^Dn?7)~*8 zoP7WVAW^_WN1OG0(mz{`iBQCP zdtFGAiP5T{{Zvrrei1 z=}mV3{W~KKTUoiAo?_M#QAdeaYpqisO%Skknj0XuYXQ?YXA9rC`A4E;iM0EE{q2@Sh%(dvQ^BA(%v?;1t!B z`3)$iU7;yEAVeYbs#4XIvn#21brg=ey{L) z7d&4>)MY0=6-tN!X&b1j+}VYK+{4n*L6xAWFH|z(0_eRS-umfa0C;Vu>8g@_^Hoer zDsBso*2z2AhlM2KGpRj)l6fflik-<3cQf|7BlRIjFS4A)8^m<=09mEi~v~+ua8{1J3YmW-Y(G8-#f&Y z&_>r_*}Wf~gTxk(#KbeN$fekrSc?HZ1Wo!ZB>aWoH_Uj@1K%VJq!b>V$l}cTez>k-+5?>w87Z;uTGtU6r zp6fKb=`_2)@AxIGTh&Nc&9=qpTYtp}5pyzXv2ZrqH}}1_l%G3Gu6^d}TV}V^*W*i@ za>v~l;pynqnqq^s5`(pl>3FfT*H z87B`3F?D3&z?!BNa(wwUzTU*fBK)^gl=fR~Ga|Yxq(Z`XOXKW#&KR5{B+iLji?0hF z_cl1gG*EU_=C=J8w)uadQF4ErYO}-CoEM}wRiCd=FU7NXg6$qiMK9$=FG&#H4L$Ns zI1?GQ{SkaQ(H3~Upk&5n$2{u9K`Km8Q~$btXpM!>j+nC#StX`cqa?v2-@ zV8DrGl;4j~bYZ@*!U*$@Bh?eei7?%dAdF>Xcs|(61%D>xirEm+cB8Ir`#GZX-baCQ zU^)43f3zhdicIYhH1x-f{!7yoDptk$IFHdb#Ix#kPLK9Ri!k8AYpb}7@!GwYcBK_>1@9m zn6np{^W%BPDQ8GLYRbod$|o+lM$h?Ukdx((9Ph<(MEV8v(RmX^2LvT|X?`^cp2oVT zA5_hNmaf~g?v_cBI}1I!F_HLq#htEyx^f@`qq4h8OO{jm&c}AJE7tuzhex5$^D_z9`&w|>%tsF|r7_xj_ipWr!baE@UAFS`f!{>4-QOUd;_ z%>Mt&?@>6KIN4ddnlP9+T7Ql3f2;d#CoexT8NYITJpY^H!$`3S_zxZ^PxH`LQd=ED zN81k2#)obDD+Cb$`)2~WG+1Ym^fEkHkO2izVq8XDn+8LzR0$=8s6e+tvTV`kcLl9& zbCjZ0QKM_@sz`Z7#f5XGCeKvM-3bhpM5 zEvo5u)VF-UW{3l{!#m*@s2=IV557;4pxJ5hrz+=!&4j%N3- z$k>)}V56+8uVrZi7FH*&HR73R6_UPX1!CqmLViuGvS5I|;dnw-CTN5$L*>mON=>6< zWZ3h42doP_p$1z+CT(O_WfBJ$LATAPWb0~=zTkcPQZtRl`=>f(M$5QisUw6@(&A}; zh^T1U&)&dwWz{?r_BRh>o$itv7W+sDDcaQ8mFASgN2N;YI$Ws=_s(cUeoWhI>F(qu z5VEMi&N2Xhgt_I^W;G@L&&Am~|DQ6K6eb~hNx1h3w2YGFbgvFvXuZHVld=^X?pdic z2Nn#E3bP7%qzDn5oOS)_mSnDSvkIxgr?Pva3F(d%ZNJM~d4!4h;Wo26nd+TdSZuEb z*)AGccrQknbjc*f$buxCA{VW(WtdruIDH&xLmeRgJui5;QPR73nqE@wTZr_E?~|jw z{m%^Q!1gxmk9$|1JMQbx2dOsTIN7~;-w;zVG9h%KxVxuMg#sPh{sfIAUz|f?f7ehs zQYC14oPMxWlc+p-c;S_7II~JI>}(+oUOdah(t))!BrcofhQc;#dkf*CqZqdg{>I|+ zHxKZM3%B~`ozwl3;`~a;%OF2R`YrYK*L4nz0Qv8tnsOASOM(l7kY;KjPNo3RHZCVq zV0<1C&ILWXQZ@lSHWMe)AOhbYbho=xeGK7YHk1NO_FkV86)rMJB#{Tl+i!nprV~QK zU*aPa)cvK$*ggj1QATV&;H4219Pv;l$pv_Owh@Z`2?(kFD&w%jD(K4JKqdy{ecK7o zko=eIRZ1?2L#iT0e!$Y8+$misnAlX83+5IlnLJ|rX2P5}AFuDiQV%LrrZGqPLq$vi z^NTw*FYu4UYM-(&JQ}z5iJg(VKY?cag>Ybun z*HDcyJAr$aH`8zmuNB)Ar5rP%fo>EESE?A{`R2U9aBI842S=0AJ98K6#!x2x7e6wC`|E(YGV-@Fn{uwcj0OSUWz1rJtyV&~-WM8J>EW}60vi`G0u?LC zri%)*tC&D|;8&OVamv^X7cdVnPFCu@UA==ox_ljeb@9IXI(T<^3zG{9cr)ql9D5ra zK)WA6hvG%kG9}y)=$N~GHV6{*Y<>LNd5GCoKu2LmLuB?#AD%%U*1(I@NI+qSPw`_< z%PWdkw6}-iV_#4{ke0R&DFn`j&KDu2=xLLJt3i$}d5^ zbM~l8O&^?LeVRapX&a26k@)2B6&VLcTTwRnveckMu=`;(d$W0b_NjkL!M88jmcd(}q|kh;Cf& zd+W)W=%a(6%Lu6n9R(kP_0!-=Cuh<_tou%bodTvhF~k1ABybHJ-Bja&ClB>mq9!3n z$AOjY9cx0|4pp~=dP1jwam3^ut@Xk9b@_!%VCzHkT7%~f1{z^>>mD3KLveuhVUd=i ze2q0VgY-}hb}hGUfCOO;f$W8(fZh`aTP+&x8`TZLY>k>rv4hr)<#dPUwJdlocW595 zwQNk(h@qg={e^<5HX-Op?1nL1b`+KwAopW;xI25O7TV4k?9;{8pL1V^7nb=pGzO+M zGD8bX2iEuTrx>>xs+#j>>k1JT><1~)B3*a5yE;OyX@C)1x2l6Pg8xkyP)}-!#Q<*2 zE>=|&veWbf30dn$Hyf`teeN}*gArI`blwu$G6|v=x&ol74S}xv`YM`xI3;pj(Te+Jg{VIe8*^j%Y&u zQI+ni#^JD5-~5h(@CH8u}(ZH$}b$2MCdQD7sJGmmP#Bpof0?bxh3+!Hs|GlO?evVgNrU z69aN;L!JWweqF}MyCPu-g8l8nsJ{0v z-sgD#j^LmXpWl8eYicB%KWxKTNUS%N@E@Hjv5|gD@in*P@wFKZ*~_NKN!qTln#wM6`>yZEjdL z0;-6kwTZ~DIZ6f_X&o*LI5Q34qp;clU>$i zXou8ayV^LryPIvO09>WO6g2=_ji7D#2P)N&1tNCK%NHwuJm-L zZicDfcvtSPkmh)nmlrqTYN|LdK%qC#5v#K__IjE+> zNYlUB(OFe$-qdK>8qToIBqxAxML5b7Gy^zXkPl8xId%*q03(G~1r~27YL2BtP@wD| z0sceANS2xMMRGme&jW2iHy`67TTwGH6BEni8bnLCryDfh&6f0UgO(H#p8*F5S3R}k5#rgyjmI=Nv^3DARzwf7A4j% zVkK$q8OWeHlxSfCV^uGthZZHkA7x5kz!>}d`Gf44>1-- zR$I*8tgezg4?gK~i#FS5t|pt1-`0*M_#Py-npOkYh|{oL4C9TRd-oF44wLWLYFztI zz+F<3+x~Mvf-T#at(mu2EQHB{zpdwV)qAgmCMS4uEw8^n!4~*5>M7xSbt71FC;|ok z0om9AGR7=0P3fdbVO=5<-in?#n!}|RLBvOdy7V#H-q(R^KMJK&uZ`uBE_z;?RrJoc zV%bj|KR(o=8?I!{lZf3D?a4l>(CKrqYST924g{>nCf}?lgOPhi`Mb#YK*ra<6f6?p#std1q zoSstZHSy8D(5p`db%lBr)!`t zOIPh?f^#p??VW?uhp@xm?Wr#GuWe3Q6n&A>T|(Vy+{vm64U4oRXdVCYjFQ38*1M{4 z4^&ZE)8*@Jx>&mOtDS!ok96a;NJ{00m`iY7MF@XemAG@)^;lxmGqH&eu9i}*<9X1e zSK0EvBjnCASDT@~vH7aX7;UD%`qF^G{f-y6-GE?SHw*3Ow;@o-qth0=d%lA}{i@l{ zs&7O@v9R9KF6|>edd8zIvaR`**2D8^mY#U>_?EA}*=f{t_s3TAq3(zt_rdI;waQhJ zSqOis@_S&X$y3_#4;zCJZuybo!!@-We(l;E9p9fOx5t6wr$Zb~Rll+~=&S)d-;uMu z+uO3vQ5<#)s|U~;wUQj2ho&BnJ?k1f{qZXyLQZXznVd&^l8f+jyVYzoGNWz^!x}1f zeZkN3Sv%XbZ%z;G;n{o!ImBA=9anwgXSqRR7-40X7svQ_ZXzo5A4zL_JG z)8U#<6v(s8T)12Ld$smTdRp(6V7v7a@_XsS^FBN#eY9WJM`nAFIAKsl@RjG`>EA@JL^*wEzntaaLFTE*QV`h+F4go^uE-YqpNuaT5AJxu8)$C z@M#~(#_!dAy+qCu(2*bS)M_^#S6hj*nsHxd0;@GY(JdYk201n-Xj74TS)abn=YZD4q_SjwA!omC>tADFsJn_22REbfNGZ$Q2Uk*eEJnn0t+rR2r& z^X2}D_M~H5=jTJ4#G_ZjrQLXjm6I=u{foTf?K$4c*w*H83%2d}D@z;6CbbN8mZC+c zTeJO0$9>k}O{W4w7BNHXQpL+%-N2sOvl+HPq&p8{2Vo-@oz_Y{P5p?`L9*6R9|LwF zX&<}jNVVi3D}YddxhYF)ZKuI^wOd!H1-;pEbH5Q6oJYqr*ls+F4!@9#3s<(_8&PO&R~v3%%IP93AgW!w!l<>E1%QUtkn9_=UWp3=Yw_I-{<|8 zpy2A|BjiuG|1D*yB$_d;gD(xZBvUEmhM*kC-8s6*vcJ3in4?y|loGT)H zm4#w*kJeFMt9f@h!FoH%d%MnMHks+w_0GReo^EZs69?}kUQA$?p2Ad_DsGg~Jl`v6Ab}+X@Fd;4xd{Wnq!$Gm*E? z5{N$=2>Ck+8E#4?5+={J>e!AO3hD2;052D7p&W12Rw2#%_5T50K%u|OA?Ra~%8Rv| zP8N4mhdqL+%c{hZKLi+GF8P4qdfiIo_i}Ag$vG1%VYio`n?{KTQP*@|r_YJ@_41n? zuvPOCDDMq>mV(Vczin1iUb71Wv3i>>fC zcXNMrDP_;CU~svhn`pqIr(Kd^?vfZ#wP7{WOT?w~*NIF}CQir`)3d-UUKv{|SOJwB zgS<e%Yokdm4DK7L=jrpj!0I95{@zazqP zv2h0CD5i3?mtDfz@IL0`A}*<2(k4CBF0X$XUyBGNB*A*fMqqQcbT6@R$`)eMI-~AC z=@zcO!O_shYUJvm!gHdFC#udPx7G1`TsVkmU+WKf$g~7t)*_R>xE@-dQ#e?J+jeZpNw2DQ5xbDiyQl-?N?}X(UkQ4zSZkX zNKq|ZrJzj9*I4aWBOR2b_vNMyPoy&Jo#=<=L3G-)${S4!XzF>`H7A$bDSX%diCf-u zhY`+$G2?B}V_7Go%Ng0rzhNO2q*7#CNT`!^$jjI6FQe{_iLbpYFz;#!?rMK={we5{ zsVN1zp@mDhio_r2K^I@QQ|c(_;uOCB5izZpgf4Tckgqj|*M5CjdiL#`=Atu(Pk1l{ zzOvYnI)dl5H5)3{53e~_zQX(5No*SL9PJo^QKLl>`hHBI>rebNrCSQn_k_iu_jQ*0 zr=RDfV>rsU>~d@Tb|O_V%hrFWJ@%eCwd)qQ_wSZ_HiMFre5c73VAbqgxbeft1KTbd z{&68mCXmeRu< z`IiE*=#NDu`{`CVv^ykXEOU%i&D|tMieis^YOv}1aZjFb(j0j?MQoWkSG3q15WB4| z9i^iBzHi~TRNd%%!>E6;tCM|nJFPjMq12sZeU*QU4Y)W;rHQo?XNd&1(y)~W(vRc` zwU?<07Hu>;XDkcr9Gkr!@D(-+PP4u;OSjSI7`fw_4q&@zW@dW(SaR=u42$zDwA38Q)Olm0O#B}P-WQmlV@`cOXunyc+(bhoWb=gq?QZ*ku zBrx3dzLLs@KDB?ql&~lo!3?Ak4Hd!0Xu~FG!^UaDCd?;O!lyl?@+KkYVXR@l$Pp@c zOwi`Wqi46(W=NLQEz;~G?er47BzQ7-{p=MwYDfqYf#8aYdm|N*6de8hE^)pOtV8pm zJL3l>m}H%MD=L4I5fPmq>N86?ZMkz~N%BHNE>!7AuwsALB1=kk?()s^(>Knqf?0wt zU!UbJHJ?IH`>yZz>`Kj-8(Q>lWBe;&%LLLb3sKw|RmPCS?f%TAh^e>18XnE2Xq3tz zd{LC&Ai{qr{4jLMxi+BHm7JfEP0Lg$B`8Vg>TGo%s1DQPyUq0eIa(2U)hJZKnV?Aq zBc6bKe`|-Vo|Xc12(n<}kcKEm*qEs8fn~oYsaVlF&K;Ud+z7}E9TE$11uABmg!FoX z{@K(ET(wZFIqF1uXktYtwQ}kkj%xw(8-ceR*V=!5Cv4c4XU|k#A6X}8>cu5Il~dp zRU}M4!ik*(34%13$-g2Kk8m`)D2&O!<`9wc?@T&!k^~V3LgiS3)uJzJW1^Q| zTP=V0u&;>-6uAklgus~B-}qt525mDw3rv!~EJ%;#;HTEeX!Ik;^i9I>)$Z<1PKo7+ zH@!_IHt0Myk?nP>un**}kh^+Z?6a%vuS3>>Lm0(z0PWO8 zASf_F86!84E=P4qAS_XGm?dal_4mZ*)Z*b9@puezH4O2J+)W2#?qanXRgj%ijh2dY zkf0(;W=J>BqD*0`ubS_yr zOcX+|+n8psuX{1enB3)S3%WK+j)Q++{xS_eDH_!*27=Y-ZfWX7c8;8W{%i%B%H#PR z^Js)UXoPd|2Zh*aBCZ83Wg@OAT+g=}=AgsR6@ORj?o|8B{;rlTw<}RHs8qtWI?khP zkGt&=%CuK4QeFZB3DwePe7FJ_lmrjsRL0!c-n9Z9gJ+nJW&#S-v#ebYqXd5!s`2%7 zR{mo9@TuHgufF6H4y+SB`H?w_q8pj>7(8;;d_|Y=nul zYf`4Mcag>3NoD>1YAqb^EX;or-}4*kVfgEXeX>1@Gg%Xf!%IJjHWm zev4UOF0+XdXIFo{d4#G+2tR*(e6sBhktb+qpb=g%C2AND&7ey9Fqz^)sS zuN%R=9ub~}i0n(PzgEpE%gfJNX%MCK)VVl*GdP?JaV3ddC@<`xE!{+E{_Ak>M{4M& z^yn;s;S*S^&XYDmB9W+*awGWgY71u!;oL}Ucg0Dl;?~?i$XCRzRi3M71F?ReWAVG4 zq(ZHVL(6Y%QJ9MGmm6%g=l8aH_4QVu^YiNVcQ_e+W!S3Tp) zEi~anAlm#ku#uXB;`kG<>ewTZW_)g2aJ?nt(_$+)wyKcA6eVdCz#g>Y)*&vxf)$E! zk!PIoK;(VZ-tqsD^gyIG(zyryW%JMlo@*zw&K52~oy)2mggAc=+z})O4Bv!1Tq|ym zOLaAI(C6;ou-f}FT5f-5tqJ(~xJhD8NhO-B=i?BHzLc#>{tIWNjaxU!)T|=Iwua1;^6ZzZ!0zwjp<&hwOA+B6sOjr0v=gz2Z zR$_{C@hjmahDd)Wb%`hS*+wRsWo1IXE~9}UZ{X>Y0``0K^0}I*q;db>F?~eBv}d5u z=A}LMi~L%K2NTBr{@MHpA*Sv`+qeuA|4_`#XRtd0vnsBtQ&d6mFMr*{cU!$C(E|qq zLHA0d3+*Py@D7DF;b_}g<_w2$dxZivSBJ8EqZ#H5AL4&CD{Hh>&Y@L!MXd0@Viw*o z`*z$1)FK$YT%!Sc7lTMlGrSN_Xv-)SjC(7k^TZq z;}g#m3UB;U+x54P1H)5O!ob{fUESUnH$&wj7Z(oqRYq>E<&T|c@om=Nh^U@30*VP$JRvyvbtg3uERLd@^QJN~Bs9huxbOXcWFCqHe&xUM^wDFhS8*;zpXsXFB4CjoFY1Tix^^ z_Y+mhaeSkeRlI9l?3HvO%K?A?kfT1)W1jowMR$KYw|7iy*I+w0=fihqHybN`K2Up- zpHVD%Fk5v%qqbU%=9nE9*2W+>)D(o#C=kEYO-16r?D}i1b7h8Ey!E?wR`Z}231lM8 z2gPNv#&xg{Ta5^O_C(85II%S&cH8kZpX&1-H1YhHNUFIM4)y!dOr>@@^DVYAhW<{t zqf39dX}gkNA>?IZYijKMJedZ=g&+CFrQ^b2sP$9oD;zz4toTgcE>K51DC0XHrZ?{3 z4I1Nc%r1)aqH@CH0pg_7if|~MN&m8YMwh^hGvgJ1b`1tvo)(aq=uB{;GF-VtlY1vC zdnjitLSp3Ye{#?z4GYc3G+ArZyqb@x8B>2368YB@#A42Bc(E+WS393~J-ku4*U+cd zK>U6`(9vbR_#3}_04aWahqrb^{JGmI=NZ4ua+8~Gq+1;NHol{sUTtKVlax`_QVlaw zulNtS+8EU&C3isaHV?4|Xy2nykm?F+Lh{qPOLoeO^ay^r^^s|audnlPQ=z7swc8uiDn5D6Cb zt>t;sDZ4IzNUuL6>dbo`#xTx{w;RFEM7E2w>WAee9%i}nEx5U9?Yu#^oe?LXIoH&c zV^cQv8SaO$tLJPlqf@>!YwMpE)0`Kd?r9itvB-0?^yt zd45j!CEC!*=|gG0YK+yBzR||$mq(+mb3nXI_Q)%4xMYGd zTAUO|4%tEy-SR2toicKlLqK$C!>0w%B(*Fhir~RjO?#g~ieQ)5YobYGm&efi7*$G; z!?N1gG)mx=+hnTO=wa#;Rz{a!`bT!7Kljf>M2`?Ow5*n#R|%_PyX}9&5U%mF&-#2t zR7*TjuEkB?1$mmXm~FDoQ+yn?6|~1b^<{^lJdwR&i&Xt5JS(DgMNKbI8I)_VI+sR`o_E#_N~$yXxx7n71Xo#K_R4A;cOmK z{rflT%zjet{0MxmIN4wt?Db2f&#)`(b9u^#NQs{8)f-vHd!mX!sM1v%vg0BW(#E?R zh9+B;k2sCx+o7I28RQSCDusENqImIqsvDwws=*42NIE})NsNaeX~ZSzPH4z4<=ZHl zHK_uQdpQS`PThZMMEVWsAFTJAM|_HxQR^5Nd`Buy`tm9S#8$|)hC5z})&~@;2h!U9 zHkxEuv0NxPV*K*)NzflfZ`I&Qlt2$!OLke2KZt3n5W%_++a2s*OFHKdy@PrD2vLod zkoN{j>ppZUBJx$dzwuOgdV{*h*!&SZZ_rQs&B@vE&A@-=R_h1r9`7U1j==rP{p%K& z;Gv(A$m_IVn@TWNXq6HkK%dpRIf%q+s#Cd=2wIXr^Xk;NUL_rw;t!ee=;nm?Ycu9 zH*d7zhbn((fzVPhcHY{**R&?mWLI`zbtww`QoB&7aW$8!tUXc+E}IHFZr^zgWQ_L7 zBwPNih6rWX{=76AT(cYQ->~y>4jTCn1<|g_Ek2#>i9$sF&dKiJ*82GAyU@Fne-zCB zLxEPh25`hYoeItsN>~@*=1$`;H!ZT;6ky~|n=^lG%p}FOYR+6=I|lo`z+Ym9aS>YW z4msv;KqoG+l5)1ok@?*}oFhrHsPt1Sa$cBN+RhO&{x;uWjJyi@=#G{js-V_-3s$bs zr7n+CDfxua^~s;Wz={BnEn}7~G%EZ#u^I#lZSAR1jzV&Ahv@U)8Wlct_Hg|sKGEwW z7k+xUvr!%SDVM?2So%bOyh*D2|ICN8COzd1{SCXX-I~lmRLz5$~=Gc zL@}{YN}&|wAM(iCPcA+^a4vlnr+a|zmCu*iN&ZQT_6|CA!*5kF+H#MGe^DRDw5$iI z3||PSJb%=gT^`4+Om4T! zk;iD<#S7oGsQJr-Z@}ks54#WU@}w&Io;Fuf_AsJo7ora?L---k z6joKUvrDR6W2}1P=92be&B8rg94dEsonQ;@T;+5hYpt|rw^W&{sH|b!gMEMcWT*OO zuj(ADtElW?Wv}Q>JYLnYY}MDz2gGE={5|BA@a zGtsnZR;MVXk|WShw(F0(0C$YT`Q%L#v+%hh{Zpt^H95c_!_a z9Mu13;rm~gS56D}e;Iw|#3bgV+OWw&`afKXiLX%(nqdqID!Z!W?WKQQDwe+8AzQF1 z9Or>6HxKE~4>w|C&JXk3`(_3n;9cPqO$vR83D#Lmg}z&7u)L=jn%FxSvq@X+e`@yj z!tkmp>KK-g&J^H%>zD0CVS5)O8+##Y+(PQvJ+_LicN_i{xr&Xkj1Re#3_a2cJjV=# z*Vc%>++T7jeC(e|c1ZnmG#Dm(r0&3Y5T-}%uh>yS*LLwtw23imAy+dCi|KqPpW{vePIBVd>#AyF)nr1JG>tn9xY@)G(b*Ln}#-LPx(-*_zYik0?Vi>Zk-9ht{ZtfP zQep+?9+P?odbk}2YW%$()?-BqoJNMJ$qTJKZ6(LFw>fP+v0z$$FV#z)>lbI~+Q1(q zUp;JyaTq5R7ibi8 zN1mEqJjssdU5@7m=twS(2WhTu6S!V2MKDe6+ylO-sH?oHgR2b&2Br(ff2aPRL;e|) z98?G@0(}FOfvP}tpn6afs2$V+>IVG+4SmI*a7x{6W|881D=2n@D}g`0)Rju1PBKr zfG8jqhyxOUWFQ4d1HJ&6KsJyM6ad9Q8Bh*X0@Z&&4Nwm>0L?%<&;|4Wy+9u@01N{o zz!)$EOapVkBCrIk0-FE|*amHY;xG((^}K96y?9+LJ-r=Vy?k6;Z9I9ctvub_y#IIS zX=7#SDaZ@8@^Nss=C!u5we)fJ=5=P3=o*ij58BVT}!i2OD&Wl7Imo0g5c>&1;r}ewORq!9*gZN zP`6mB&}G?zfKaVaKaTE9h+B96cHcR_bMO1z`+oP%%zJNi>o!CJfcU|h1npWalNkd5 zf52r90bUg5FwhKT#q&gF0yi5O(cH`vLmj9Mr9});h~l)6BW+@aGFq{@pwYrvp^0Gf zg&3O4cu>~7e8z)cO9~4JEAD|=X@(XVNfN~^B9y|6c%ER{GEasu@R9i@D{iD-HMpnq zY=p&*p$03SODxDk8N(BEX*jQ^ToI0$e?zlX%E)k4_<~$JZf2|mZZKm;JB@mv6h%;R zgarivFokL@hd>Tu5N2V4Gz0+=7EVI|P{kqw=^6yout*vLgXyeFAT_DLoS007 zR-ulI%8ZMZ9rDkic9z(yYd}(SQ1(&{=+qpSfmIr{g4Lv{5U`$2PmzJg*c^ehe-{Be zVy-~mFrtNo5K9UXA3v7#gjE_yrr`-OqJhE7Q7573lQN9}l7U04Qy}${!r=5u9~fe* z(%^JZ3`dV}A@M>M;9_zB6iYQyhy~K%98fHqBVkZ1=S5vSLV{vnmgIOp1Qh$l`1nKK z2%?e6wUA7xk#luD5sgN!&_Hsoe+!L5_7)7!H3uVbf)IkFFjvk$$|ry?8^Dv0K&J8X zcdc|n0H9~64E{wX+eqG$93&jL2q18S_dTBQz1?;`hXou!_xD)n&f$I86TI*L_>Xe} zct646s++~ZlY`uyD|dq*Qa3<%Js-CQ--pQE3vY#P{;_o-l`v+$RTf84yEmSHH) zE-l6QNWQ=VKt(j}n&2=HzQ3qH-S@%9MYE+oe&LFgf`YhYJeP|Nxbh)B-?Ip%Xl{!Z z0v^#3DO}Kal$~8#%k=)1ghEY5f69Onc@{uq#knJi^75dy5J*vG(p+Js%}6m;oVMF=lu}wu z6hScm&ABAhN`uL6#Vkq-nrpOUj1se&xCrJ@(v*<8Q79!YkGH2aDUrSWN&_c1*B^aRWu)ekdglBW-*qR9(~b&%+eFrQt6= z)4vW&s@)y1f3^Ga=@dtP$FTQUjCP67Jz??h@!xujr?8W|pI^WCi@p?xe!o5|e$5iQ z{r;kvv5)4D9>J7d>Eq9W6L%}H6LI8q@DFkJ??m<3VhF1YJF_n8M8nvGQMVD=#G`uiKUI|>*hK?M5fB$3b!rtcsKL7CBRkG9AA;E;R z`Bq4N^U#5#ALpH%yyip(C)poP@#4~>5)y2^E zjI@7Pe@3%EwyA&AXLso?kF{5woJICcC&J^ai?>W)i~d*L{&>YAtV6;A;BalE}c@vU0YPpK3u@9wTnAyJ8h>{)Yhd|`6=Vpy49&m-A3)S zo!b7+eR)*ueBb;veBUMap6#Ap*QO7RgyaW%nDPPOWq8<-DF}tu=$&=?dUsoc(`dH4JCMJfLfATl$Xs8SzI_sqZ@l{-+#(`8ke`q) z;9TGn8f-=rVYk_w=p=UWn;M;VJ?Bt|SHC@vMNem{L-shl`t3d77n0#Qe_d}k>njj1 zdKTMs^t>|%@g6qy0m^{P;lUp~KpAv}h<6(J!lSO%2%_uZo$G)KH_R}404;~&bTT;I z4R#X>6NAlKX|8hVNcM^6PHs*c7+61(K$5_9CZWY_tsMZO!FfR8G}*oCY{mu)@>!*A zV3o;P*6$pwctKi}N?|d`e_v5XMJtpF65`KjvO}aoa8wbV-!od`GzVnsZWcNkrgnsk-?p;)PoW*f4GKm;;hnxqNs98 zi|YimR!7maRzuSau4arl%Xmno3@&GLJt!q51sXRQqm$CiN*q8+hAEISMj8nz7b;05 zQ=npuG6t70PMWP3GGs7=3#*&ks3w6{?$uB)#_5O#f4T=#vMoaDDN}&6ogP$EB7Vf55&2FM(OQh5q#zOW1s%l_v0AJV z8^um`7t&Tvqt6yfDcFMhOM40!ygA8)<${txanOV6WYnpQM#U7+oUZwdq)$YF*vK9f zmXo7_1uO5^*DUQ}@4q{Ca=Ws+T;Anz1>KADU3K6x`G&3~L$mou(xKtEEwNMBj z`X_mW7}0iGXdK(ccBVCB2ieXEICh$Cs>QLZEaB_sD;i8;4?9Q-SN4EjbR<>hyMUY}T6lu``8}uep zX$np8YU~2yAWmcuO9X?H!WfJQCd;LaSSXe-Dmf!lGqi@m3$!xbK_Cu6!4G*Nhy7p= z>S`iRe+~hM4JQYSXfj0POAf|}5Jq=em_)vW5rY{wAx6B!$W@G5#%O3ri7Lq6f+`A9 zxC$j`m6FR~Fi{TarNI%2SdLoI5Lo=)8r7 z?MPZnfmm||Q?N^lNB<+6kvMEHXFVJNvtIhZfQ2pN^jWv|Fj zg6KJ^@(A)}p@?3j6tKk09s)2ZmvYhI9E|{IUjBnm_y=DY+=1*E#u8y*$7rx)xHkj@ ze=g)q7{-+rG6Jrr$q}GJI7WmcOCYg{5s=}FD7bLAkRmJkE{uJCVFU<3!XsHC9E8V# za0Ln~BzXi_CW#&#%vJzpdBPf@&kqj?3iX|dJT&xl!ls=tM zww(;!%;2pop@3q|v_jo#g@OjL%Mv5Of3bd0aG|P0&0vWrxYi%Jy;CM+V~d*G;;zH5YY90&7Ai!LIux5p{Ump5H7SU1LTsvU4go9*Q$XX zYBh|rbx{k&5{W35k&A^OIgvntjS*_l4~0SuON@cHW6CjNw0BE66ac5VnaP(hsgN^j zMh4!2o@8W+BnXK>u0fLV)lM>&fA34UjFA`^c|O;mP-~L^(VU2}!g?~%?1YC*BI7V3 zw#Mla#>nu_z5-Cd^;f9kgg;-#$3d&=YdAxV1%GNH3~C}ooVgh|0$e5~gMC2|JiaXu zi}BElWDpw8KK!C`B~M}zLS0W_i4UV>%p*kYnHWqj%9Xl2m5tt(A9aMjQh2YiERmB2^2f16F1(9QiV@7f zTt>>!YDi7wpO;)y7)wkngJA9l8X_^EKvmRNQ07^^2gZYt|SXFB9$eI0hJC(tcfR6(O{E`2Agyxsl^Db zYp{{ZV5muj9zB5^e=o`)(?pqM8b*wdBhzHbGFlZurqP}w(Z~`(>Qp)+lqE{CDY#6h zCeu_bQOX_CAavo0(p>{ZDlN)F8~~ZX5>r8iY)~O1p3FrmG0!EZcEb$6pCW4WLapV-- zn}MzcaimVhB|;dn0SzrQBZ8cai)e1-W{EO@Xpk5+pvxf*hCm3hgdTEU%1C6c`G{** zdPt={glh@Z-9HW9nSwtz3e0WSgkA!k=j6v;xG9#BUYE%&h03Q1D6g63d3@qv! z^+c19c5wYrj3{P_3NWJ(3@nKw%kX5Jh8gq~Isul{8}gqPf?8OrqJEb2ayyZ1f`IYA!}u>p$!cz1`u6=5k@tsN1{#Kb4>xOE8Q7Vfe}?4pa=lf z02q!DW)4scfEoaR2Wnwp1PDqQi?<+`q4Ql{W>O(%Qki@(+?c_@l!6Nc`A&NQ`eQS_ zt{y(Ie|4}8g#{Ra5EjPo2k?7$SRSz4_&veHMXt~`F953Ar$w!3K? z(Hn94p|{E5@df-|!1GIaxNkq7x{YtJB03|_Tf)Doh369vsGnH`pT#`BhL<7W;YB>W znwQxJpTff{`Fl8crr8O1xy1phx^dn5f-D;yO*N#y-_>xrvh8+Y{f@h)k`rMSi=^K`Sf_T;ha5>6jX%9ZS)Wp*FQMt{v__T z1&&$gTjqod8^=ZN8@u@sHc*-v(B4?~f01hVeY1~y$Uw*9gzw+Jo}~MB)s{8Yy}9+L z5^5H1EA;xy_==sgN0gUdyE&zI)}eMm*iT@96iNd#Hvj19Fy=lI*sD+kW`My-K-Tl^+6LTZG8MgY_J<-R~^pe1h8J;VGA?lU`O(q$D~n5Qeno~~w+k)ug9&ZA@2n|1$`3?a?ruC@RsPif!p~TBUDl;c zn*qh@Em-uQVzqyK_K(T_aX6We-3nNR{2s}e$j2yxW%KY1Sn2#8y059NG_u6~*s|!V2T}!LSDN_YO>UI_-#d951W%YKOf5GH%RO3bgW(4lM z%qeA=IXa`@`TrA)0(Z03Vz!!)c+6ZYm=HC|0T)Nr>FrLl)zMIAHQA$#73fRu7h#+T zRa99;gV|z?GMXy&4HjpV#at1E{_POuup9bBX8(^w@?XaHi5>sH5nF@gxjSqPc7v%_ zQ24(yKZ^gi&q$Nqe^R5Vs4_!Kyf6pm^L>lifI{#iCS&Y znRzm>ZbuCL)!XOtZ)a3xd^&yBiGg1oo)P&@%jj99Uq_F6CBd+^_aD*oHKC9E*WNvO zIIjEgI!n%xy~~1B6aT(evFM$j5C66IKjoZ(FMRXb z$-1n673>+XfA?J1tmP9vuT>alA6|8cdH=4lc>N*fqH0}hlm4uxuGhbAZ{Dtxn$$@x zi-vy++?BZ+&GrsWF`SvLx^9wzki*Z|z&Z>DpGs7rO^<4vSqT=+@x(}fRbez0hUZENeJe?8NW1uUE!MQ<7}I$I?ge`MdX zX?wO#-RHQIzu^;Rct-e;gtL}39lF2(7Pwerr48C+Ta6{XP^g&}kHfXa=ql0g> zoo>ALpk{ORv4stRn{%nJ55M{JjY(Yt2LG*m{k03)@C))!>$|2s?c5ac?)ts#TsOLzIdCm*J>Vaz4EYq963 z+?2du78c*NPv0-`ex)-&^ZDeuHKmro`t2LeEgi91@idVB=i>GY(a+TRr3V(YW^Vu6 zXKnL0?{6J+|GTc*uTJl)yru;-_g?yr76+_iPojU!RV zYU)?IrMfX9m`Oy9%?T#1*4d4=Dr ziKO=p9ol0|U(qGJc0DGsC^wz;{B1ts9@-3Yr{z>M7$ZebU?NX0hs`_Wq zBjfg)OD;ZG+Pf`p?9q|`9$1IvXwnayf8BpzpX!^K=&vW78FTAQd28n8s~6jESFLaw zdb4J?**{-0-*3d)(wLo+tllMu_qu;>JTqeEdq-o885_=3#UC}M-d*qgpeb%#lGQvp;YaHJ{4(S8#TE^XVg<9r*F5)(cBe^WQQ zJ*xe*C#CH9pIim)hJh=AwDP#W6XGRYawXl{EA&c|b zaC42%kG*Xr9*<}Gp8S5Avg7Y3e*(X}=hb}4zj?~efT5G@$#rYrp8xjZyyEb+DMeHM zdZ%r@c@DeYuYI8+bH#eUJUr-OLRAnHk0U!BTPB=%^yRI$-2D=+cl35N|FWt$Yh}m7 zRX;R$7{h)wj$QG?j#Ce;FR$8Ndf-6ba7$KYNCsutzqqKZ>acTpb%I7ce>Ir3hHY5! z(uq$pCw~&TuH^9EN6FKM2Y*}n!!J(joem$zZSBg8sOzP(Ci=U#W?qpUdy=&A^p)4O zE6wgs^Md=)srP?49Q4`Qg%{lv6J`&(={+~k^No?4N4II-^Gp9!I$7M7_c!Ce*7Ur( z`usZq_K#N-y3Yx#JndXBf8J7i>g#aks|?An8Hc~ipg!3-q3i6@UYlJQe{y9n(OKkuWtn$( ztZb{_n$1fmx>wHk-u7B!cT!^IQ>a^&_b;5iazP$ZdE?Ni#CCksyN|w@t`5^Lm`~`uCj2nuVERpLCun@plfD&fXS&H1PM9 z^V^Y9wO6!6JiRV67VS;G+W%&a@NcqdD!F{UW5#;#Dt>*vf(oy*CMj~1RH;f)nv)m zoN!)B9aT9f?0uY<9Zjiva6|Q=vG(+;>cLl*Y^-XVav;VnnqS>q@L=}T3$`1)p=)EPgggjUaWPNuOiSULTk~Z z;innAG%DpzQ>43sQGq$7YQ4U%#bCr^yTGT+-x=I|XdH2MoOD=V9zr^q_x9J&X3|$) zgVdCLteOD#levr>!7tVmtb?t2FDF&j=iiSv-_@sjf1Yn$fbowc{gIxfbUN49+xoi- zNhR^ZNT|SEDf#%y#3EcGn+(IADODJ?-$l9KrS;PSzuU!^cd34gZ@*-_3_FmJdc@3+ zk5}P6c{0bw6r(N$MTtRCJWx~-Sz!WsA)mFxzn>3kIb+!ts3}EK#!hIAiI;RX#Z$^}V8y>x|;}5PULFmdV zWyxyw?LZX=JH*l+;=GlnW%O@-pDpWk9CMase|%4KL0V4I-^?wXQOpIi$4(PW2=y|R zw<<+DxhX=7UuO_WWY9@u#Bz?{NDyn81lu(y9p*|Gn8de$wzq6>7 zf7clm#PrB1(^NZouS4ZNj*`dSzh-4JfGl-MVD`|uK$@JV#u#y;SWfqp_fgnK%ceAb zV_j*ILFF>p&T5%XgiP?QO-k#t?qIjFV7J}#Z-#TXhx~cZBEgA9u^KK8b8R(*iP!MZ zSzA=M+CIy&PoyR84&y#!VB^1&&oZs_f2ObcuGeEaY~;Q|G5Tt1uXM$EaMXobzMPtc zz$O-SPRVwX3`ZhuJ10N6ArH?mjoMyS&~%ZXf&=LXMf>PGhv+Je28rLK59MqTwln)R z*==b`nb0JNF?CvhTmGI9swlpy!7A{Ly2Lx}c_t3wm<@;ET@o|-wtbKFotF9ne;PI8 zYcWE*bHx?`EU0Ot32a0c38a_(&@QfEZk}N7jKdwJ zo(v5?J@x&($!b@%>WheXe;JOZe_|tAK=*>0t!tr}8yB~+`7)lpzvE-(sun7cZKl8Z z^uC6eWXUsBTHV&u=Yg_KQmok?B!;d}Yp6S=Sc^Kj#Ma^+Xk*p&Ec>(IjJzN+cIWOO z!r{uREFlFhBiC^DHcGaBulc#B4&Ljib8x57NbMO-Q|MDngqVTKqX<#~f7htZgzp9! z*bHvJv_8MIgjWvrmR!hFwV{4qdb5soTP{rIy0k*FnkR!h>4t%jLgIeJ`@mmWLZN78 zEiNWfK07{v3HqfsD{T=6+BdN15@%IY-;IjH9D&S|%qq*u4q>GoszGSEW#JoTwC)vC zB0H&Hl zH%GlRh#&lk`IE%je>v@`0)RWh$ z`foiOe04q`a+>5?Q}k;C=BLDKd_VtPp7~3|ezn&A6Fvp*6S~$$QabT6t9_QJe7@lR zT#sRMc&RIeST73ggI}fO|3XB|;6p6wV=w8`|E3$UIe4(RGv^YT7={3!`th_ zhrTE;eNm=Sf29n$OL4TX$~p&)kSJEZ`aIyYV5K8%`DG%hra>=S3LhX)?q1xj zNO8Af#i0~;cV}@e?heJ>-QC@#xVyVNy?@E`;=kEsPR?ZC%p^P6J=ghMXw!<+%u;B+ zg*-pVp;CI9TaNUGa#N@@wtwzFAkXS~{?%Kfcpj@hFx2-FHKE`IbgUlHvDnGB<`QqI z`QXE^Zz^4I;Z2 zjK54VUU_eyJQDfGEGIW-#3H`V>SBh(tnM3Y#(6W#+VSEfpD}b`B0-IBJu~pEpbRhL z2LFhK*b&^gyudgCwlQ9GO)r`O222hwI-|dH`x)dbb;?KDX}0A3WIL|m{~APfan*C) z{%8!6^P0^`eA?&Nuz78hd~UE;D&K9(-?3OwGd6s)N;64qDRXK%9T9Wfq#CoqMr6|} zc?$`+RCD?;b_$SpN|JZGOGEt%tDZh3SF%`^HRY1)BDt#ou!ormu*#HxVvAQudGdT5 zzrRjXgpbdrz%2#tO0|+%6M?Ud~W26ivs*~-nSPuH?ulfdUYx_Xo2F)m#ngvI^uH#eVbx=XZg*4 z9%yof zjcNRvtO5QI66v4Qzn-Bj)z-)KPV84bf3Z#S7GTQ%#!Ba>E)QY56gk3{YHQY( z(3}1n(0F~O^g?T3%u?5T$h!)vaTK-fl|#PV3!F(4PV6dd_=*V^hsQ4`D}Iu>srA*P z^sC1tMZv*WkNd^tOQHqGexB`k1%B5|#^ZnzOBRUEJk(94259pIaq~FwV{*hr8>QB! z1@=+b-JlSv;7Bv^KDU0Q{esomA3MNS1z(jufXbZJxjV@ER&=2uE+3pC&e%V`wySRF z%*ErH5vdw3$nmp^gE9p_3{cz~HrAmOdvh%*k{i^uw%4{qi``8dCsH3}SsaL%0 z%kPa*eU4B}IvmX6$|EIW5c*q_G-3r-8;>ruhzke8ta@J8c2X5zjFf)&b1xStQR&!}Z*0%So>nieCPT zohLmM&oL)!%9lA0g~s=EhA;jy$lY6_fJ(ENOj6$7m!+*<` zao7_=*b}4lpBa}sxpOCTZvzyyC*b#R^bJ{!J23Pf_GF`!i`uuCL7g=gymwKSw30=4 zeNXA`HQ%O5xQdXZN{kyI?`T#CY>A^3PP!r4ZLN^&n8;F5VhKZrhvm>FC-sjI0SB#| z6bd2!t?pGB!>Wp_x&{8=Xf^Bz`YO#HI*fNuzkDda79wzAPUU*BhFMHjQ1r|2ZKfV!K|*U&A1q$@87@5&S;^ zU#EL!kM$Ia!tEh7nG$-Ji_?ql{T^Dec0Q(2>2Ci14*9sAr&q1hDHlkTM#1+G_9EV1q#LZAFvbmQwuE{K^&%USRM%ERu?fCR^ZEQ z~cf_K%Ux~_VxR@Oqpx*p{GaR6%voFd{$DN0I}YK zPpnc*&cbulUM+tTUQ=F4U~4MenfAZ;m1?FO$*v#a^F{jGhl&{oicuwCT*ybbG}i-1 zR0T%D+P|j6t?sC$)PGUSsj^h`%tRddEClvE>B ze;}D8yE6XbS!-4zgy|~tc~SWu;au=Ug|{9ZvUWBazG94H{t&+!C}Milbk0874sp5QVm@5wbvenvt^s%u?C}?jcx_BSG8gV0 zI4tm(+2fofCfd>r4|5ez>9GYfx!==qrLkdWg2H;E*WH*;+zKaR#C6Q^W?CL_h%tu! ze#exx{+c7BJOJ!yut;KSlvhG75x<5L=}=l>B^{a%Druw0t-@&=lS~CI+)Tis!ihbm z(xXF=p$EU|4t(@olZf4oKsWGbKY(FQLsE4kYJkHwgKzobT!H!6!NP%~ks?$0al}C1 z2w@h3sa_$N`B!a$3xSF1LH+LeqK9zi`^60=!x!NSVgu;L$?+qB1M?$=3WPv}gWM*C z5c4xbMf~M27K1n|1Tzd#B~0Ay@1+O^-$S4XLnlPp?Ps6}9WKOJ40)de&f)Kx16}XW zIgJF|ryMU|@GlU|=}^82-!w$hg2idytm`Lfd;$qlJ zm?BC46oX-!sF;j9v)C04T6Y5lW(#y$-ZsvgtECN%7i*49bbl7Kl2?n~HQzJS5f#o3 z-#0F^hYlUt4zphQ53@WcTMnakt7BVYaj`#Gco@ya;wngy`?wuh5!rz_Y|)BQn>hl$ zJGDer>#xP5)`+mI#1?fcIZLJ19`Uh;EG5ojkqg6&rdFkNg_9F13qduw^Mek(X0FNzQ_jX49O0kCp?Csv09~9e%8(Wq9%h(zbU(Hrlw5d5vsYnS>2Dnz^G!O{wRc ziSo9`;niyCtAkE+?Yw=$53NU$-v-SbC2h1o^z1!-$JL2S+Vxl$Uo8SMkKs2g?<5)u zq88J?HSVI@oi)~SGdE1AysHIosilkCGCVqfrZN8^66821`}b@l;d)4$qmDo>zmcq35tDMT2^Kgav&+{v)-M_{*P2>RNRdxUjB!7BL{pTI$CZ?-=ZfDTZp@O1A!M@%Um4`*ZH8xq zcQ!bP`?td6Ud&KEK9#j}oGKzR#79LdU}V&;0xQRi&Cv<4NKe!I4&#~!@@a9&Beu@2 zs!;qAf)~;7MG}lI0NO&R-;JfgBfT!_OfA|Xe$qxyWjN2KSe`f1Q+g95Dps#z{U3c_ z&ZUe)>m}PHFaOu)=-*FEx*Nf?IOizGDv`ybQoe5o4LYq+Yq+XhP=n0c(|ekEUsb;#&2~ogbja3^)%qk^iziLk7PLx zUbLY(h-l!7i0TOh;rjl$AxJpo&e^4kLP6lGyUo`7Z_)gL3;8W;2p{mjiDfG?2R zVsSLCO)?R=!_*A3q>6*{JB>Z@kb-;u9u|)gzH1U5-%nWMRk*CZ!>A4iCkdIXM)Lz2 zp1i?OjJZf1&8JocLYMLi1H{9EiU#2m1!ilfX`i}}dSlXSY`DS8nepXHLBvfqBLF$T zVW$d!IaJNBR2%LIH{{v6E2&=zqp({KQyN7zb2ly(DIrB|8>tzIoVvx{hUFJ05Aw|; z4U7svEt|fDik`v&T`3b^@Q5J$EvH8*`(lM(4P9G{i4c(aUxn_j^@FSpl)TbObLB{7 zu%~CPt!F^iGu;OMMi5{8Y01do3cNtV4je#I9K+zv9%d%Gg!^F&; zm|nu|W;f%pb6-$V;f&U0h=}alAlk=t2$A7piWnBNC>{Zsa`7zi z@k&2%@BL!A(0}vsExS_ri%MPFx6GIWg(jLrGY$kg0&5Jb0U(crKT=4HmSXSfx>Hy2!sFze2wurfSiuH1nh*rNZFW zr|KjBfN6{;i;_`D9Zv`HP!V!(Vp%bxr7AV& zi;c3Ni5kT&$9zkdj1xjUrz8ls3giZtg0hCcCq&LjLGvkSSD}kYmN32vR>I>>^^1zc zZP3{Zfbt3@H#TCvV#bik{~5dr6+)w))6puP*GVS*EEG(ekPZgmXO_5Wv(UI|N>PU_ z(7rc)yXiXlZ5P9eXOJ--e4h7(XI20K9y>Gs`ZAmwnO+F2{N z*W6jr5z&?Rrx6E#So}g$4UaF#RcR4A+9ge_wh=rGbL1p2Q>3iUX*KlVP78iVfC`nQ zeymbN5(51KYGnQRO^lYnHGsJ3v3NoAP_dZ!T?XhOF3pkPy>MPLH4yETaR z;Bb?AreVqv3|(VZNEy_(j3SG^Z(HEc#H_`lhA1v|L}@(_fB!vczlaU%(b2!qLM>tl zY0R%tevdwLlo&cLY>jiLRs8Kpqx^x!2vMh=P^-JsKUZTO+>2YxBQ9VZnm19;lr8jh zn<_*fz(OqQS5ltQ?)kjNW>J-2$fG~wcT)mKg3NCui%L6aEu^^WJn~>13E1!Z){&f3 zgZT?dCmEa8X!AQ9<*{hKG+fb`FHdnyP9EfaE-Hcms&HEl&k;WypKmhmp*6dl{8w^V z{7gz1ohVbMPL8l)JBYD5&6^on503`CEF1f7KmyF(ciqn}=@6m?+!=bO#sPj9AyjXl zgI=;d2V)~-|K0aZvy)d51$z^t7-#H@`=z`WPSWMHcsm?Tb^Lp0=HmILv_MWgU*JBP z^l}j*O~yURNS)gD9+jPzWF zXL!c@_-Zz1!zgj4$JSfyozQBptuDt2>u8I0Y%i;VREXOX^&EE_ny*b+3PqXDz-hL( z9sYG8ncXU(oby6KVZl(AO}dG|!*xXfW7ANSoz-W}-ChcRp~zf6L4@Gb`0L%df$m>; zHaYaO>-xizm9eNZvn(FK^)!V)nNd1Vgq})14QMIW+kFJi5IS7#hZG(yeNakXNj&A| zMzo$gA8fkN>8X7@slC=Z$&7^oW?k6M4BgkY*rf=Y&X#(%8}V0vdM;=CR~r;UA*<8d zu}f2u7UnKb#saq}+kJKRU$e&4O$m`{TRu5!(}k4l81B32Q$dS1Uzx+CkDupQNt)u7 z#nMX0r(cU2y$r7C6&7XNJ>{}EJFcT!f>dX-f-ZE4R*Y|&N%Ok$(t)(?t%X*_?WM_MG9wok(B)-E25s z4Aa?;h%=m`W>~jcE)8F;gg5);HdwW2z1YMoTQsQqt%u0MXTaUw+^@oRXJVRj)1+rG zlK*Aqqpt8HEz46c56}ZFC0f~R25M~6O4bp2Oy#}4eW9>ZdgizCSmI}1B6)eqQ}_kd z>0xU%8K;2V*|R%o6^I;TJp0FkH?YN{%&#IHCWnr5N%`YPNTy|#V~2BP&7|`}OVYO` z1+q5m6Pzy^JU5i76-tzzYBMA!mi7$MFPSk5=Ys;7u2OLm!HWn$R+NjMdh;>M9qlR) z%WTR*-B<{M@tjx0q9kV+H587zT46pxkLg<+h5{)cj(5*o`ft?~Pb;_YZuQD0Y`k5# zUr^OUuAP1l{kA1vaUIfRP$_ztr0uoz>Xhzs2n#Z|0YsUbBfdo zN2FZXNMMBq(?JE{oe^2BRZm1!_bE%YGF3rj67udku14;82D?f3kCfK*9vbyo2xrOw zqf%dz=1{D@oqlWwiD|UR^q0%$Cga!PDe~F#VO||db479uFz9&t>pSq7%iCq7vavBf z6lldO(cJafw;-%d-K4vT<;}XK%tZolDj zi63`_2iUj-W>4y56)Kot=$0+}@~;V+*QPc+vua+x|CN**;BQ-o}80Xfp4=U<-y1qCe&`IpVe0C&PpBfjK6b`=~zFS_#;>?VIiv zdZtII!!gq+fB(`6zwFrIGuI?o#=b!a4|E1B-;#C$63muMNWVnA+V2s1eoxene5Gd& zCgG|opD##UewJh-$eXnOI50aM{3orwiq}3&j?P=UPvXCHrRe}xZ^qJXkzNx3Fx`}` z*Dnp8y=lI^C(8^rniWbKG#^oqTX_n3f$O&sB)?xvniD_!9S<*-S_NU^|9R+q;yv1; z02YzJ_PPQcf%jHVVvF}^TLr1aw?p|B7b8!$Ls57qcVaQ}M^6!pRrx04s{_Jh#Y<}ANXDnvL+Lh8S;S$4`BnBj0adpIjbeIyy@_I| z9@yo~AG>?ZI1fGr-X=e5X%00bhy*RIQ@QtwOOY?t4SZBSIo!s>?(!?Eq8=1EsRMCL z6>fpe&z<12vWrH~4B3{=f3NPv@Y5zWBfb&$%aM}(;JGFgBFh)a@;5K@`pmw!7_W{M z*RetCyXvvLp>%)XT926IUypZN=j-p(Ij*QZty?c|;Ewq?6Sd7^>V|a4TJCWsGGZxf z0SVNm>P%m}rScLRy1q2an5vEQ^Olt%`p1#|aSd(o(i6Mu6xy4$dE+kh`zp@xlcB_B zTC3jHL?3?<5wd04J0G`~e&uF>QtR;zRr+(m&)b<}RnvQiF5fBF2}MAwZL)LB)-t<` zRPI%OYX|bvi&FQk@ZDH_;+k2WO6W7M|UmfBhr9`;HFOWkHgSqP@c`cdh+1u zO}o-oJ9a;8%$s(T`cVdJtr@fS12`OBs5(58q2+J{POxs>E&@6*4%4d|8%cE4%<-B% zcAG`cgKir%jBx=@uD7*Xn!c}__S&gGqj}kTPx0pj)0?#J_H4%YqZDEOei>pI-WY5t{GiAyw4Tp)gaRQ~!JzyP#fe zqLFgTbC?c&p@L+$nXME|GWn}5A42#CAkOL_dj?>F!(;%62}`2*M!9DX+D_d_oQ@R( zudkGxUpcQoVjL4w31HJA)|ferWMEa6WJ^VDb@3XDbEP(occsjY511Pck$Bls;t5`u zKE31KLwbMH>cU5Cw&ON>NZHJVNxx3L<9lz77cVu<1(5*N*0Q~|yl=*2KCTMy$H}(= zE}9SiH3+~1-)d~^lhr5c&hkD|c7`SGdLdgriOt^z-FQHW#k*(SMi#<2&OLJOmP>qq z=!|^hUmwKHZ}W{tBA>iY%CyJH)>*A;iw2>c<%VCFvSY_ zm51h^(E32Q5WXLiVkR-Zd~Fieg{;vIuhY^@gWn7&88}^hm)F4!O2`-a(GYbCsw1#m z5|3<@j#>wMFUgG(vlg27)S6@hQtPE^zSAlfR?{lW?5f26i?CUO7)Q!HWvWUV@(cHX zHX1ca%Sh+?#;aBw36obp-TTau(rt8?ifK#=R|CGW%f;V9soq@oN>@=00hJ_0IuS$_ zmxDqZ6<6qU{ikF=+;s5YVXrd@i>r6Ra?Mjay`=^jZ^r>37`as*UOPF%pdj+JI`TAu zzk8ATDh#fKkf+SZer)&TTN!MGdLtWPcDa4Y+@SvDae5LQgKkW8NX^^>h4@s*3S%*y zVQH?i=~A_GgTCc*0!lgKQcmndJ@4_F{lok0$GJePy1x2XZqmEIR_;1OcEWlo>rGl$ zX(op37p9j=7gO~obQh*{7fUMZ*{w2rg57(9IU94;{XV`d+bOe8{4ql)7_&5h(!%L+ z`~7o!yKOnw;*y8);LF{uJ>J|cws=^{uUa!@wvra4)*6Z?u4#0zhYy0e{msB9m~}=@nsrXxZ>uoiE-I8o zn3bYqkCXn4i(sdwg_~F^A}Kc704ti#J{n&I%vz03 zcQ60fNi;eC@-btA^_UZMGxS=W`0<88wW+KUxD72s_fYlIP(tw#;tmOh=}Tf~RZ zLkjuPbr>azw4JHs37ul>v<$hEH}}TpVGz7%R|;1;GZ>~APn~Oq(zZ6|C5~eU;jB~mXVShx+Iz3jr4~Jqw(9T zS6jruXN<&l$RJA8N3NZEQzo&%tt|=O^jf6f$|SS>Rj9pe)8G1GD@jQu#^5zg#HI)Z zpWd84c@rVx@ev9;1uTsl%y&3xcn`Yw8^qg@$bH%gwcLdKRNB%7(DEZM(C9{Vsme`u1U`VYmxG@IRon8TQu!<3lA zZX4=SZ6e7GRt(uK-4t>GEBReCbNXpVOsSX|M|xc@wm+@pp7Ni1PB@vh{|@&TCgYpR zotOjkyYv8^@k^aMWfdN@^v8dSYQEE+)V;%h_r1w=dx>VX&Gi@HMYT0}A=>N%%yU!Z zx}tR!A|D*i_{hazT&+dGeTWKyw=Hrb^5?P~f{iOD2m{?oh1+G9ZMni~xni>t+#GDy zsrTOc1VZhLEwf7=ebe8T=u-VRLmQCD!H~*Xw0{0*4tSc^a|%1wRxRvyZAg#{id-5$ zK7%Il-8|=7Yd6QY7QaSC`x#iLTrjSH*wvh~aH6nmiX|8XFf|LMz9}1H zAil@KDK}uWmX)>a6>IkMv5z&XG$qXlvPZBlKe6*8dKTPz8W+m4KNzGu(xv-4llIJ2 zpzUlWoUS<2*J~=LN&+C&S4{i9dC_4IuR9Erjr;{Ec`mjWs#uNtZ6 zdB%+j^mX3LA>Kyh|Hc91M&>3Y%^UKykM>Zkj^h4Kv+tBOP3p`BIy{uxB^1ZH zMs2%^cYxzB%V7K$o=@T%U7kH=GD%&7m@Y9gK-&3N*nn)H_6mkuW6`&2so3Nqx!7dr z0&>-kah&wzkr~Xa7aSf|p&;q~8jsAgWijY8$&YhWzx8Oy7G3w+P2A!4Ais5HPj>W3 z7SfKVqWp9hok79DzKN;|eCwR4`gKlW< z808YEnst6uMd#{^Ur*c@dTY}sxI@U&I#vtSxIrkzElj|1@xDO}-8G#LoW}n2{YO}U zx%&61Y)~g;1-7{uEJ5HNTY?!zQkB_ZBh{W z%k_GVi~CNPwLcS&uHmitca4aCP}N?$cDC}%x2yBH=?&^znqbNjd>oabJ*mtAQ zmmyn%3wp)*l5oPjG4gyQ5nnYGetls4H-tm@1PXfuLcfJ#+UJvQNlJA`<3jiVVkl2& zhTWS7;6S?OW1~h{uScIwML3~ZpCK(0$!r0vqiZ?{2wf=2Yo)wxi8=gR2>#aCZrjt+ zM1zq>@~FGI&*wnflPCP$W5NJ%xl$nL^4_}CkXec`sI(ASs$BVb9#OLVn6F`N@0p!x zywMcVx#yOh3!UK|#w2orrMspFO~L|Ag6T7Q4K81ZGW>gklzeJrze=C^MjwqB=14Ff z*INVbU2?QPx;l)6HeP@YxP;w9vqD~YLJNb}i~$COUK5G2cw%zHiavof`}Z_M8{D2- z!NOo4#PzX?=3MbJLrOR|lLI{hFIDpT6z^VBe1m&X;zQUB=@xIH6>qSp^LIRtai?9o z@~1(4e4b#WPuAPWK34OWnsF!2B(68ZiXWO@0YACFZ3S+4nMSTw6I-5$zZ0}tenw(H zd~yW8H(~B?maZu~F}(tqyVoV?&*ly`Rhqd^yf}eBVf?LLu)2EfuMEQCk$u`v0ht8bj4Xma*cZ z*-3%StKLzIuljM8Lx97ohF^J(iIkM7_s5LE)0Bq&2&(s-J#5YN4;?rcR_as&CN3fT zwy9Y^SH624$GM!AWNfmoC@hRZQO+H7w^?4`U1|05v*ejDPy&gj0Zius z)RTRfwTBE;Hia-h&3-^T?jU$HK}EkGQ}3=e!F=WgR|hk<1T&`wGw-X(2JOmz0sg=& zk1Y_KJh|tjoeq4j2F|R~&tcpGGNLy!!-VmF+>-7c4i4{( z;IP1L^BoSW@HrL?iM~GwTtUW9^Sx}p`}{)(QO8*V^@0y(5iudmCx1IJT39eE^l!ms z2^j2N!muGq;KFMk@sZ+}P3l%KtIO3Et2 zc$5cpI$i_=AK}ql(w+k8N4x|Y)Ezk{?%#lT|5q!bi#m+19h)OZ2l00i>0J4hySl$t zB8xJ2+FI~F5#CSnbDtav6KDIx9G1c#b%7WzTc%HTsAz4E7W`(eTTUcuy!wi+f8ZXx zPEbO^FDc&lIG{v4*42*FsxGHE56G)N)5J_368FSmbza&qK5A}$~cQUR%g)InAtYmhC-0ptjB2DyTqK%O8kkPip|g@VFB5ug}Q zEGQn73d#iKg9<=Jph{2`s20=!Y6LZdT0pI!ZqNXz7c>r<0Ih(QKy#oe&?e{rbPU=7 zoq^6l*Pwe^Tv~iuLeK-~8T1PJq=le`riG`4qebKg&4Ok?i=YKiAE+PH25JYDfNa3j znN=N)9UPgh^&OndZ5*AgZHyh5jSL)YZJqv4E?Mydkp=1hD7~7ZJ`gFOApen5n;IaH zwjlo(rNAH|{x3={0wJCMmr72CM{@k%91;Q&68Qg8M2JYW$p0Z%Z4hp_xc@DY7+A8s zI}(2KBO;PC(ti_@HQ!7d|69alK{q6VWc*-c_+$qpr0)Mc^%lLz2*wBo<{XtQgp5Q7 z>^7r)ROckIMh^JHAAe9*JW- zY!~-~7=VW}kY-0Y%w(T$>$)@f{kS)4PobJGN_0r1Ntc-M=)n;Q*?AQ1G!r4VtPS0s zY_c9Q^tV83K*)`q8ZDDuK94gj1<`~RNDREDP^Q>ILrd+=zSXdjqG^^9|9(JDX(28B zCksr70`tg3fdZDwHEyylrJBbb9d8BdCmN-cjJkmwI3`W17pZ}~KZ_CCK3%AxSlR%& zm!4N{4?R7E2i5gNqReiTq}Fd)@c=mCyFAOEWPj-3l8dZ;R~a;$DfGMbHB$%R0glyP zNQ_D_gt~;dO|xopX*v-)W9?JK`X>QI3i0=YVm!$~N~9kw5fp5)X00aZh{8+rG3m+J zq2p#WYI@QgG?DdELe0{tBKaB&aP3Jw{(ttu3+V>~n&k}e%N;RP(Ac9o!Aa*;Pzxzm zLho`10)~27A$y=%xP1wo0+aEX*22}0#p##JW_|;TZ6Rb z9Ml(2jlxV)Uq;pHU|Oh|nXlS!C9h9DzQ9iqi7-$JbjIla6V_ztDfjtRwy2HpE{>;LpB7aE#vV828boPw3;cxz?!kJL3@yc^w6e^fz3clEt ze7}^doNUjE9VK-t_eR87Jqsa$4`m;EgNTo2#-C8b1vjQQphZ!08gp6|Dm21~ojj`F z{{6Sp^SI^1jl0~zrpM#24Ul+9)Ph7@998U$Y8vBz>ih3VK`d~NVSCp$VJ}G;#l#>q z5R76CB?CpE+P{8m-7I#P@d*aZ8R#Osyp#srbh!oW3}`vL6RI_~S2xa=RX{+yw-`iA zNzEuFRB6&Z!PnNrh$k)1pDb3jiK;8G zv)9*K``SSIiV4M>93elXZ!^%Yz{p96Q~G;m`Eh@>#cx;ZUKvaT$g~xfFwLXO;6&$3 zdl7ZFl_kb!qB2es12o=7=rRe|QpP1EvE)&tkGb*)G$-K|G*-+pe>A|itQ{HS zA1@`chmw~rn3@;no6;^SZn1fpo?!%81sK>GRkf32FS zXU2d22*e5ebSav-#$tjtUnkq)F+aFhFB-X16Ek|D-8J$^W!mHa8Hv9!MiGXWNc9CB zzm_KtE!C87UX>U_uplKfxc^S(?>CB{wu!BK%7Iw9Q+v z-&gamzJVI&uJd*2e7}(3Uk!I@NJuGDTcf4vERik+W?7W=p20?syVyoW!z1&{D0_9# z>gT~>lYl(w7?^Ma6dl+C(V+U(qE(4$OUV7;5=tS_WFn030<$Ms#3~5ig>hQrzsWQ( zx@U3_zwkt3*9B<9T0O5$ufnwI2O~CMh!HJ{9LeLj5MpghumlLse?MA*e1uMe`G)@e z(skLfT3;G%F7K|cezP!x^@(dF@HXmCr_RN|`p&;bAwH&wucFp!^cjxbpTYfb{w`49 z0l3<8MFvJSXdw-wlh!fc)mr*$P5D5*A$k2A`9?1TM26xO6T!T4UmE%c%iW^uqW3NO zxDDxp=PM$T>X0pP!1y@(XtYHp4_l}7c6{|&!Uiz*;C(^AEG2niC&dx1D^o{%!4UHJ zs=feIe=R(_bhmIC|8%+d_`!#cyjkMpA2WS$2lJRdSM|-aCI7VKn#}XEG~aZ&h$MTt z`1_gaigYX7EgupgFQRX{$8CgW!0$4wqY;84+vF(@(RPd_pR%=Ykjf=9)+DAU{B8;z zd@iZa^KxfL>h>0B`VZi{Fr~E?O!L6v_8ko{F^7Kvqn?Xj&>#3t?UA9?*ac|QiW)uS zRp7cCPb~zt>c*Qo`$|;tHvtN@pKTNo{lO$8k207H@(g->ac&t!u$E_%e?ToVs)yRNDKGa_$ zcNT7*o;=N+)N^Ckrk5M`mA`Fn2o(V3MhsIdg=l;6l+&3BpFuhkIa61GH3wbLqz=Z;3gCI1+*9@s+PX6z>47P^6Lr7CoyH*QBk|8>-YZu?&&2y_u5M zj+ok+X79p5nvVf%$0z$w2EnxTgT`%#D@SZ7>P=-Q>YMYG0mPGbIgE;?cX?T@<_0mn z%fORfE1}1|x|~;sw~!}4o(^F7mwT^p)P4~Ez%I-3TSXSWTA0?nHNCaV1YfMx<4@_} z9|7p7@?8BF^~fc6LdH3Nj(M=nc&k+QM_f1mtl3K$x6&%(?2aQh@SB%F!~>B3)hf<3 ztsUp2&_A+tXXu^!Vdw|9Ei5Avctm!fmqapZk)Xx77c}sPN{8{QOn{93)306ct)>#T zKGIv*4}A*-IidNfSy?{rFUJQuY=%8pEK=^{se3sZ-wf>AVeKZA@xsJ4rLOKTm%q#O#^H$t+vh*#iQ~@ zcV}XK_Tr#D%Q`yj69NSk67TwGDi-uhx?Y~k8h0OfZNCi#L~UN)2Y;A1ZRXo%tsSGl ze!TXi@-X7}QD2GJts7K9W=Gerwm^8Ggqx`+X+|1Y%Ib>Tv7s1c zeI>gX31vt!?~gZ7C!^TgsL(*6#s65JAeKnK*Xu&mU|y zG)`cB=vLoXAO=GTbD#=N{U9q2QBb&?MkXz7L(4qcGO&OJ&kWM5n7BX?rPIu6KE43D zekD(@c0XTWx|AFpYRJZ{I+VVjY{;0F#u0|?7w8I|W&>aVfENpU2kYUIOn^1xYbROH zIUvincPv!NO`-QP&yh3K`G(-zD3dZ-&`XIHjBc}-Qydst!AH9lY)Go>D5B@L7yQ_Au`f+m8W!_o~Jq%uEXV=ff zH2H|vg!d6|QSL(D1s`r~D@X2F1*YLw)a}-l3JZgM@e*3!@k2lULlI&gkjwBD%`LCp z#9X@GbG(Kw|K~|!-ZQ1gE_OEhq$qI`RIa{_mAdZcR%T$NZ#3De|J6p;R%`>(Z6L8EvyNtcj+d$B=9(;8R0Z>k z4d+sKRV+-OoK&}SGa_;}m#EL*?+5m3mUK8QVTbr2;k!m5Lh0-Qw80+7;fA4fJ}V;YxsTsxyG&D2 zn=WcF6sRK28DSLp|N0Vh0*rIDXdfdDTJ%TeK@OQBZPn-fNL(_FoVpX18M%T? zA_?g%rCp7m*}+h{MPVXMmVpu}!NpJMop;Nm-mP7|W%tvrPyJkYbE#mb=Ih#>1mdaMaf&QD^i&?2(3s*I2>0UyzX;o*flz~m;Oj4KC_H> z{{2;yuI~jSmO_IHR9$?S4sT53?*~wOZI4NZ`P|tLd~HH-++&;XTRa?gGABoF8DA5L zxn235kL${!we^4|o6UI~8jul^FLRl$%sMU3w>HXzH-lu>fSeVR73b(L5U9*YcMvz( z*FBeQDG}D1n8rM3O@dA&7mWIy74G`acmj_%H0E~-*beI!9h>m)1IdoYbnO5oh(bLc zwEBhG2|SJ>ER0Zq()jMHRMiW(6V^=)l%wM2ba;Md;GIjJyxICHU1Q@3^fnKTa(TFJ ztiF4kksio51jQbl+o|$nXVGLn_e;f7NW0XyWs%r|Gc?tC$K%slpjl>e{RzcrQv46^ zil+`8CCC^E$Gr+ZuWcqY0s-Ku$}>Q}3NS;OhipPlBum*Fq>nj@;&?JRcLmlU76EB=1~ zd_aT0y4l8E+kLcGdHStrw$4n}wxkyjuA%yq*_S$dt#zFs15`FYO8RmI9QfA&$jh6y{T;_TCNkCi-A~yIPBvtvBAT zTaKqrp0@WZ{1;SP8$auTf2I4cO=Ii%DbnBH;mJMoJJ($7D|~L7YAyO3X5y44M8m&x z8rx~;U(RD2o1~2fpYvXS_!SXqjaT>ybM41RE&rB4y;sE_5xo5GidQ=>+Lz6LFU3^@ zE@}slF6t|{dC_X_|FB@*tI#!MT_N&^Vmd}Fs?;S7Mb?ZX1DG)Ee>sRah%rzHD)pF{ zrI&Wf*096^D+<*F5oOImR!GcNd#0JorCiS?8%2Y2IcK;+aWst{`(_*_rT;=x5$d@> zyCKQM2Nst)2|YhrX2V)Nwe`>YonN~jR-5S%qI5A&RJ#Qu+5RU=XzN+o+-i4No}K*( z0!z>>l&TT_%5JV;e}Ab<8Mue;)7AdY>D~^l*85k@32iHX33YfBh;kYg52>D$!Rs|padd8kBVW#kgx@V;E4g#O;^Jxk=#m-ml;_B-@EDZ*> zkJ^8IbNp)1)||mUtdNf8)QcY0*w_jxt%F-qu1p*69&xOXf4$9se8*Dy@6l{!UJte} z-2!7<*I9=;Mb%hq#O|Me{m)s?ErO+L$^QTV0RR8IS$lKa$PNFWpJH##MpB}OyhSm3t+$o1jL zRi87iTi$wYf4U3&`5V_5e3rJh*R%sRiCkv7Oazv1Z$f6fEL;iZdJ9ntm~gkY@40K? zhMF&&2O}n{H`tD($j6Ntu6kVW@;5A4*~^fo#KXq(LpJGO_D`mLV=@}ejI+T+qe-s! zC$lL&cjmU+iN&INNQc9ECOX!d)IIgwtpKsR?$KYGe~0j|yJw-t;HiBG|GKPhyCOVx zL(lAV8=ART_(m9Q9ASi>5rlrKInI#Iav$baER4bV6o%ki4$|YUxvzZ&4QS*5_9q<2 zS_$hbTiAg)cSLV`dUW{nPjb&&(_w)KS*yi#Tp^RAr%P~Y0?P~p(+|Mn^!U2LHoonK zOIG_+f7DL?*J$f+-Vn*p3Q7C*!}0gOa_lb~Ojs+A@l(@vy^w88A2b+@$rK_87}@EV z)kyOiXWh3ij$&RBm=+$u+WaaEFA9yN4JO6INez0yu0b5kZK4ot;|nYF{72B(+u94U zNIVPt;iECSo*CzZ%f2x_nY~xNjBQQdMytjmf9ngeG$SX(Ge&MJ@_i(8Jj)Di&t=|{ zZP#tnzYD;N7c6)T+Lq@o?Yjm^08i@abzuWL-(Ir%@ceBz_7J8I&-XDaOx<8y;YO~mFJ}W| zI64FV+c#)Y>3np=Quq$E+_&`|A_xA3mE#=?ClJq3XH+S!h>c@fqVjM9027)uyug6L zAd5<}M!L%V3f!!|HbZMw*AJWgM!((Ne|*{BzTERh!jgPIP7ln8F%G1Y>Fi`Odv(;D zT=s_-;AE{I8#(g85pFNoICfYE&Zg=6O@7?sd7^C(#&5c}xk1tE4?hehqv6dqKXHer z$Y1a#|4bkFCGzs@WgXXLZ&??8O!Ru37xzJQJ=z^m_S%DcU6Szk*H5i*Y?CK7lb65hwle z<;iK^7)^~2CzI*_R>1={NUtX{4)c8FijqTi0GKTT#7A71Md1A5$_y(!e>ZRaN~bNj zU4cV&Jw;1%vvD5jeyu`lMgU`n5nZ@&5$Cq6h(Q6c6TGfrQua=O_jW8+ z+FCq>AQZNdH*OI-dL_@Pf5ZoCQ{sHy;?)jYJkd&zm0nxGm$IyqCe@M>xKRZvj{1M{ z)Bh^2Qse(&^HoA^fflfqY8*dujg{wp%|Q13X!N&fFTRA9U>lsqgjS~+8eVt>mz4Dj zq^15{gz*Hw&~j)-4^uSs`anPuZiZr^@GgCC&4g*K=CX|tJ)tkup-iEq|e?4r%zK&iWrliR|N2Slht$_ z|0zAIi@P@Jf6_nzNwl4ZW?Z}j8bsLPkWqt3O|>uG&~~ULk+u|YAwisxw5q*i&5{@o zIFyp9QTN$4^Qc_*p#!$?y-l0~_(7PWEtZY|p@6p3&O$Av)nm47%TlHMv1Y&{yF)4V zNZcthe;nBF4l=5B%40zpYID;Hh?HO?og>_k%1Qh_NOzo?DYawup5+F$C6xV! z@WTL9fAW(j$FRWZw4|RZ`=b^0C{IY<4Th3J?Xjk_{j2L9p9^!Hj*KUx3vBoFI4qWq zUY;43gLjjY$)}{4NX0q!{8%r{b8Y%*I_qEIpdpu6`fdp;Zy+=5^uyK3f5L@Y9I#W0O10%EvoyrQKti8zEr|WC zZL$^;Q9_H&R z0R|0;o>#qmLcWGF&E7bov$h{VUC)xORV$WH=Z4#B1@yB*fE@&+wggwdk`l@a1WYnF ze2Kp?GQmiS6&v#YUzE@{9yqJLmpa2dH4m7oNV#y=u26!jqV z8=8a*>Q!}WpKG;FlfxhC!QmrsG9;7X>WeV)0Z?cH$K#(Ex9JMfJy4-KnlD*_N>;LG z(yyXQ$Oar=d6Bcg&+&J+99#6JMB z+BK9dU!3F&8~ce0O7-{vI{qjdbo5P)RaUQq@g3V048MLM@o#gYaRWH_ug(|6n_hK_ zO-pI}9L*DZnRK#ILa`Al<)WLC7gu#b<-T|t1Zi~P9mSBizQp^yltet4$y8}Ioum;3w7vv>mF zh}>+KoXsQ1cN{!zEc=9IFKw`b88G0+HBd^mEsnln3*^ijA@1yAguLrt42H?OKWd)i z`N|X2Qf`^~$Co&n7Rzjm=i6TLe@iQvHW^P}T9BEF4f5DLu8`T)%G_cs0-89Fn28{C z37Y`atWc7-F+te1BPx@NWPB0RR8QS#59P zND}_euc&p{aTo=-%$_t-qO8IOPl7H$1Y~wkJ9Cy}H{gwNTW%YM4cu?Ps&2pXmTV@v z<--K*>gwvMr>dUn8H`NhuG`k&>p4VI=2rke?apvywg%V33$6N;fBjfP^=UY24b+OY zRvEh$`et_f?fY8;WsfHz3qb!*odq+;oN*`im=0R?bC=eecdgNl2CEfBVa#e;#T~=% z__m5+v#^8ntvK8sAp6_FVWX1adF!m(w) zz|cLLywvDD%hdrge`gGCmCRj#Fe+>QD^}2_)ou@rA=zvBJi&JCxSO1{Y|{aS-A*W6*vSUwri#4KxO$q4{~( zTVpIh@Gye?Nw%5znT*Gn2pvgWU?L9f%hzR>R@M!(6awB-pr#1S~$^(Pn};N-{A z5auitF8(M4e-LKO@&$x!CZ^3WuwmhP9{49Bdzk5S8qpWmHk@>?Nc_LPH`obPPYN$J7Y2mGFFSr1@gg+86N9uYbR z#;w_Fb&d7!)#}#-uZLA9ao8Qqq&(%h=ixuhH)pQDe*-srrLAv!fPkA*nK=UETNGNh ziXx(Kf&sNTe{>nXYjYKc2ZkYG6pn8u3Yb23m~YJ(g?YiiwtNBvxC$E-M>}Lz#K408 zHXDdb%bzq7tulM+J~{|J_M3Ut@Bgc_QLWUoi?T!|i-dYWjw;r3M55Z^K;fpFdKWUIRAca058wY)af|3sbnw%ggRq_ALBcc|Z89I`_m+g7w^VeJ486_R^A ziB_7Nm^xz~`%VK!6gkhGxsi~;6?W(b_f@B zvXX*{;f@I877(O>kJEe><)m#Kt}i*x5_2Vdf5su76~dWG=e|*=Ect!~*5VQLC)p#Q z`eCitHXwbE6<&f;1k85FOQ5fE!-X47IToqQDHjnvL22nHd6u!|da40P_|mblL~+Ei zm@>~p*&)YvgPA~}pE6sOs!Qo8?5Vk00>sP}0##IOtYB0QWO2~Y-_qFkm+xzEeh!B| ze@D>cn15&nR$7Ovbv68lR9z$*FRRB}d08XHN6;#oRAIuhRl>{uK#-VQp=&*OGLNGv z!qAO$0oEM-ARl9`Au*lJEl)>}dY-5-wVd`QZCRpcx)36N#6oS5`6Ix-MsMh0YGp;H z_f3B|Qs+s7oqB2oHioM1=$AU?)`wc9e-bg&E0giAb7x>p8))$E9mpTQw1)D@h2D&2 zL6e$c;08=I^-3yC6fFIIR^Je-(ymRcjuqRX;?(btNI#wNN`{(DAG;x1fK@V{F$5n) zpYkV+Wk!iK)~8vRWkX*%7Q)C+{+JJ(N3{&=TT9Z9lCG7WNtIJ~9Bn;ST%>_nKe?tF))^Yb0nZk+8ECQA)3vwM%|D~y*> z`rAG2upngE448A!V3o(|uVl2y7_QTS>Q8YG$6U+dFWa7e@PB9g*}c`nN)=lSqN2wi{aIW(~tkm30XOV)1;M6 zdiLnJNUUaX`tjpOB3PS3nU+K{C>DZEdR||Y%EZ^_I3X4PgwqllPUM^bdKHJEfsWOe z3EAtW)*Q=!=wi)7m(Ov{1m7UN)w9j?6JXe9aJ7T{HIlpt3q=_Fvh;z4e*yW%-jC8a#SWG z`v#h2PO&Eoa@W8x6})e-;SLL;Z3Ew3wMIre5$NJj*Se-IwC~kfUDKs2b#xkWNbIXQ z#F1gJz{4@pp}9;~`GLs&f3gLA`e@W)WsiPfvM0}RUDBPz6p>xWp>%cvft(kBk}~!p zlzgzlpBg-zP=prKB`kSN3t|tqW&1XZsc(Z$oOcounbK8<_i;;%OvJf|5wNEeNnI?F zY0n&8TW8A3P(=2UCAl1L3we&r@EKfI_qlf`JhbXBogN0cNm0e#f2Lvkl%6f+!WJZ8 zw<8jr>>IPG1Z-9cRVdOrp~^(DI8u?I8Ugh>A+4U2gt|mqsctMRS2a_aADDs|5FuYnf=_oSA-9B{t%lN&Q#@c-m8uO&0j4j{Qt zb3$sV;@ugh)%qF0e>YQC9z96aMLZt6wo63&0AEjhfBhyDy_{l_JY}>j;)<2+np^VX zOjk~3GFYzE&y~C@uf2)e%Lc0U#%89NZkeL)1KElivHF(W7OrAHu)Cb}akff%HyA+aY^TX?_M7)r9IPJS7X)FOEw#^O0&GX~fWhb(qSV16f z+Kb_s@&%jIe}NL)cGyEanaCS|YJt)J00030|Ls?8Z`(!;{+?gKDMq?>abgF2{7Itta(wuZN3#SKs4SFO ze-OnO@{^em888L8!bKjR9Khyx2-iXao-9w`g~BXPUmSzr2ub)AaE%x01p#{ zkc(`E5{x$$NtR|iS5c@CtWMto#!I33Ah;4SzT6Y)A6vjj=q|{}wQqx~k$Y+$Cd099 z4s5}vbD)5{VF_^IIR5qM)*iGNTMd1Te-%E@i2<$YV8I%q^YcB?LP%Unk@I;o(Ziw^ zkf%BwkVrKluoyS5J4^kjO9Zp8Aal;L7Eh#66hY-F$~99=a8UXwLiHbm_}X#p8`rs; zTsc#J%kgugX}ue%l3kInNxg;o*t+4<_qHq%urwrDb{60+Y6 z&~8%+izbpVoYW@pX0nVeJ+4oLqe|-*3+{KW*8=2iJx;OaSrQH?i#`# z-wiDNeV60Zb#645b)eqitJA7Se|$&oc@4N4f9MFuI31Q{gPefp>Y<`}wC`#AqeJvL7&d4V{b8MAHFfj3lt2 z(`XL(eXmemGo`K0w!jv24VSG>168ZdG$8!I`_1$1ad11j&}1areL=&Je+s=|%VOMo z2riw;_2?#;4*j9r_Z4|k*Ad`>eF)*teZ6)SYWlfp!r!o(+%?w&&45Y5rQXNpdfKiue-$)?V2PQk`N*j> zu#h4lds+Zfx;`^n@s5jE8ftOKxH8VenL-|6#erCu52@U=4`@D>-#6EQOrw_-n{jwg z+BunobT}%_$kWRVr$d%nDZKYs`GM3eM;zx0l&e^<_a?3Jpt!ErqXsDb@E&vfu3EpBjhv|aAJOLsK&ixsV+wNX0x zD~+~1>0s$D%VLN8gEY_D*F`gJaz%{XAAgiD?8aktKKagcbUDxt&uc5j&KJcqYK_yq zsurNYPhYk8kRjLGaQSuQ1=MHu#G^Sf=zMQnGZmDI=HE&!V^6D7wX$FUR=+*#QYk2~ z-A14u+=U2=e@V4ShD(jjsvO$Y1JJq(?a#=22Y&)kO9KQH000080C1(yx6wKcq74IZrO>x_NDZM718}9# zw;EXu=neyLrO>wpXbp-95pbo@RK?=4Lu&>A0L&8r02-H34GkB!w{Z=71_N-V(6=>s z4K4u#aHY_&N&|X|(Fg}WD+dJ95sr38BamK1 z|8-%If46LH?5*tJXfHyzuNNHYi9jI{J;7Bi2ge%rJWPp&gI`8LU%OE-4)^KzOcK2v<@kxUZ)df7;3mWo3&%5+IQO)B-|zxsz$@KYoN| zBODNRHePTdcZ{to!p_PC?nmtIg7CG1BkfT3aC|$opSu?d*U84yi4?2wN9aG2#BL~i zj4Rv{8HHFz2$Tbi4|xSl%z)rf)j@#yBoGJ`j0*)(L%Tp3!UPZiUnA%n zg)rbB0xlH<415CxfuYnOJje_L_&x)Qe?vt?0RfInpMho0z>xn*$5sN$cuYV+!M6n> z0z*{*pg-I-1zZ5fU%oIYB?S02!x{z#-lE8G|Dz)eyhTX@5r%T$Lc!F3!icCjphPsF zj1U50$e(*$5G8I#A^}90kCX~T9SH$sS9M_&vJTr8OWrN{L5-BbVl9^m}V zkMlPVjt0W(4_65bP2X%gYiny;e{1WGIN8^RkSSvVi~!7CJqwhz80||8H$Le{+KVJ_GSzACbJ57aDuz z33L5ZsS}Pp0Oak7{O1Nq0bs)~m?1lW2{m4aR9j@ag*iJvQbjso&-VX`e+T`EC%{hH zpQYdez>^dd7Zm-+hjRDAx;*~`;n@R-?BTW;$A8Ab9>9P^S$VqK{MiyHH+O_99BqZ2 zayz)E=N~2z;R4VXGVsJ|3c1-}Cll$3aYMqKoBUP7)2TcLk%H4IY7e-mx@UvcCA=i&&Yoh!y3{@(!N@6M6NaHuN1m_FP9p`WZAICtGjMP`g{y}H@LB}I$j_-z;nNeE~rrxdh9;26j znIgQBQ?p$BXOc|LL1UG;uhd5C2;!Ut)2?%O8E|v;kho3KABQw|eaiJ^vMVsm z-`&QJ>F>RJ?{U)?f9c}SVmMzhgA=el51(3`)ZvxPE}yZPzi}vH^wQ5kM;sfe7d7pC zPe{FFLPi`Lti9MIo3mW@T(So3ImUxiGF-Q~XPVH&TV6Q5`h{;2rd=%G$BN>U z@=3-GOZL|j^h>bny9!0ti^Q=#T_oAqjul46BE2=jl-KkZf2kbE7E}gmU*#L}$_ko% z$ej>6hwzH@M^$bHtq7coo<_)y*ZQ4?3l!Y>5{I5CO9?-$y)GerjhtIrZ%K9TuCv2q z!smJrOT2LUo2sF+Msn5PT_wop$8%lPksrAhWqyXcRSFgPK0c23f}KALM2|2~hRdOh z1Uwo2#XgWYe{*b$T~fx*9CA9z5NO_ED{^SGxhhm~e0s4-Jo7Yj2RDqPoqv&(+4l1* zUXiTf^wEo^fedQJkLv@{)RvejQI&&`Yoam7^p5tj2Gs9@uH3NY!s=7#tP-z1=f6yXR^poe(6F$l6T*d4z%GVSd?o=;!BIVfdlOjo(YoAissVWkvcu{Ob?uL%8 zh3;9%`kP@sFbh8zbSHLf=^fH6Hog6#A*qVFF*PVfb5+Z5O@eH}VJjYiKf?B@@O3zt(^nyf7c&Zi4a8l;okWDdGZ_VZ%YTRYIoM7 z6-O-!hD@^0Oic8pvo^;J%j-b;8UFdkJha3=S8VUGHc47dEXhhAYf0z`-+Z9fY?Eq> zIbgYWv+n8EoPV_3E-f!99=KYGZwvQn=54QNf9>wBZIz@-PVnO~!>FNC+uGS15&o!p zf6AMBVzXegos>lB1kZ;;?~GPPU$hrQfE(usOf}qG3dXG;?zBG)q(9smuvB7QtUwqj zxf)!B$un-5ggFAMc3Cf_t{z~1yC)WrnYP|_{q<#1j-61h=V?S~aQXDXub|f(6o&fe z3Y8y0wvG=32CvyaUKcieybfdjA>Z}pjNi{9z|teZT> zV8VVYg}(6W<&HQRhr77UE`l&qTwlD`919!T=*FBXyU69&%|#D zvJ&ZqHL%_ht6VV?1u8Kyu8j~(mWzJkBIPdE)3>9aPM@3qs_do&E<<-1FeZ<3f7(9d zP`;(3^<-@8R$95#VA@nC-%*$F`-ZdelsocFWiG>S|8GwU&^#1~w~d zg^bKIPNVEp`8s5bT!#AA{;I(iLpo`?5qf23S*iKkAExy4EW*LBEQx?qRdG@d20FuO zo-1i)(sss^Z>rZ4`RElV3#&gTfATTd$CS<*yA3FBTAEa2*7l}Zh8FDuXM$Q13! zRL~H4X3^Km^~0dsdO@K<_XNWRJp6wTD^lcD}K?OQskf8;3~b-UU9 zsJX{fG8DO$Z+4gc3#e()#HFS9S!wq}qGa7dcXQWMaPl>3^BR>bWP{v^T-+i~(MI>& z=~mJzvxO?YHT5w4@K_6Edjqr37o%eT8btOs?+HtZc^AeC=l*LNq8xF_ug){uN!*lo z$lY_v$JI);y2oyRGB$4-+iL+*yVxGdlLaMe61k#!2yqsP-r>R-f0eDa*M#)O=T*7{ z)L)FHH3oEaeXz3WdrrjS6@zK-YTDxG(XyZjWND8o)a4ZF6`_#2~OB}*0m%k7AoI# zz!b(FoBXWv_U2mufK}|+14e-2Sx`tI)T4naTHWO2{s)GK@*I^Y{~|3VDv&mMDVZ7+ z&t*X?*Q=vl8((;rDYxYE2g1DJs4gt%Q;BZiHHqVI60@l1f3=(^-$YG?ey4{8S1#TD zMHmjv+asNmf6ej^nB;q5^6|Tg^M*W=HtAahwsf&wX{{4x)kq#=Ot+`z*f%+XhuXRJ zLU|WKv?;F)2ZBQyiAzP&_tzC8vlrDjp`*Ir1%%x13Ozn(Z?ukBwmLm{uvgL*!+gV@ zO4&B9eaeJSe~Y=)j{W8|9Uac8#PYT$qqAqF_HJKmn)CrY^ydUmn)@Li^EuI7S`XQl z3gX+ZpPY5R4^@qj_%Z$V1?w`yzvW7t#8~WtVf3K z0ZW&Xje$L5QWuUU-u}TKPaeLmYiU*tzNRX&b*yr3^!^6szKO2CF?jO)mzr5Y=k}VF z-m_Yx&=2&=b2W_`D;sOgxOav3fqu^=7-+59O+Wg`1xJ|=y$K9t5(Ly`u zP4wd*r*MqW@jAmvOH=9BhqiFTY=>R0_xK_6f7|Nqlhbh-^8FyTo7@?0InE4v(Q(dL zCkadGBPiXd?IRMiZ=amlz=tbQxo{Hhu#v&(6@eGVip55BAWdM>U9pzgrG0v{*opEX z$0(+eFCCF;c`l;k`j8Cgt?gb0AKE0>*A6zaq_C1&3rAbC%D6cK*Qo>*(|Ysc&^@Tg zfAWx~kNGg0{6CuC^mLN|`cA^RllwBvu{oZBp)pl!8lZ zpPaAbKX?A|Lgt=FXk=RCq**gPj8^aUmzFTC)?W7-lNvoMu28RV!EX3cYm>|4yBxeEgSKG3B0}ONVwGn4z%Y_6yt!nkN-T>&SaqfAaA1 zr5T75#-BCPp;0sKC%b}GtxJeKspg<*mcDMT%lGZ7?!8O0DIea912giZPiE3Zx)iK? z6?@bWX)X-ko2YSzT zUs6$}Hg9BAhB65{wDgG(E<(E`e~8?h#?pK~=lu4DqKsTGYU`#vn(*(3Tk(45b#|&$ zO*25YNisu}lE=2M;=FxcLgc`=#)|ipL|p{6?oOQZ7hpc&yjIYQ2wJSqx=KMSjp6$_ z){AFLTDN_KuRrGDk|uzCjFNZ=GZh=7^GTsE0ZXRN9q{QsW{I$X6vs%le+eY_Pz9nU zNICf<`jKS(fnurJ)XobtT5lXI^|^K=o#qvA-hJBFJUX&~xYD_7yHV#m*u>wze*;zXQnMx(I>5wU%7K7b)47#ixL>myLB&oIUC3MF(sj~) z!d~5Xa5|j9=hPz(>Rb|WX&NA*k*;%gNbA553%P4dS2dKm>~yX7LZ)G{%GVB)sp^&S zv@CvK9Xi5wSN2ZjTiji$vm0-960^g^b`!lM9-}^Bb49Dq?4&^Je`0?mFQlq)Vicz# z)g~r>U3m9U_@>M)G6hF=KFEOm4xg8BX^d;3HH~@2B1>aMqfB#fo&F>RjB#@AA<3>y zW+1q$Ojgq@Nfkn3h*!varWHE%*8wPPV9$gZ7|g);q$twoOKlUn+(@IrEW*wP!cWBdEx`&4JWL#;r=4L>W)( zN?WPu%?D{!Lxrjs~OgmRj+tU06UuaC@DOQY7>4le`L35ndni2H7eW5d5((IDq-Q> zSKr;fTgfkPwZHNtH=iGLyP$&o(%qjGB{>1Cu_gvTn&O{iIH55|94EyAoku%~Hag0K zVn(7n@z-ihF2aoq7bWGJliTzyp3t%e6F&=9|FRhY_?@`WPres;&2pXDM(qETf8ikx zJL`n=e{Y^ORs)ycrIuI6PtW;eQ|rh1!{zWNS*IAkNv*LOF@0-UNxbtuQI55kD4KF; zL?r(Kp|f0ugw%b!@z<01cSdNIvNdO2i}pnGdqojMzv=Ub8srTlGr~^&bU{i3z>9Bh&&|x2 z@~cq!Vpq&%QwSowf6!IcYO52M%4$;Mxh4MhVSWb5CpBzJojAKjPG$2lvewNa_(4Qs z51&s%qHbzJZz>GV)1YtKc&$KtHLrr64pY>CeqnC*ZjprFea=+BXD)K~^a9`MG+csW ze--ySYadE2O2(ypLr&jlh@h^~w1~JSe!NbHxLFheUJf_>Iusc9RL!&C@=Q>y*=joo z>W@3?b6ySt;RIv`6oDKV8031aXECnH(B9!U-uqx1mlEYxu1EY+VuIc8ji}yP zC`lkX!Y+q!j_Up->Eg^WobUY3te}sjhuh1(g|`=)r;u;o^M%ydy=t>UhWh|->}b*Db~ z)iB_l2Ft7AIz?K}&kVx`I&E^qLIZQ6S|e1i?(7$NaUC&bxz+WOn6<{=UqZ6O2OqK0OzN+rE$ut~hBQw2@9ZIb`Xh6kX@%UE$kWD`?d z%cP*m$bNF290N?N#8S+9FM>MVPbE|4gYc6km#6juwQjjD3ccPh@Vm|e2W8HswfR~2 z2E8n3OA-s5Dx1;$li$0~f3wv())#Y!NWav-32#u^q&6*`$r^o7R*_!E15YPNlEVvJ z0`@e?Yl?k7jDcC$Ekv@O96hAS;(+;Zk-#j)BurX+4>UePv}e9ZE<%p$l2`MD3rFAE z)~A|HI82aG^X)fo#^O@Fn{5IN(w<+6N|#(<`~Bun>Pjlp?ZKu#e}#8BQVEfbe=(K9 zr)F3@b)^vyGu~V@K%08dzP~$Drt#|vI&kGK$??m)eOh>hoby=w#x|PmBhIx+nb|J> zXBS4tdU7WMmfzOPNr5iIki;rPb~o(vb0vM}P;=C(053ihmgM_PDPV^5=k|M`; z5X}3rr0z-i@?cG6f99(;z;54+89zXc3iH#u>@D3c@Z`Q2k9cMtd1HsiOPw5I{he?G zNztf~Mw@MWdvd?!j7( zHF`AH*z~4aIA6N(P4x8~yJwEdopWu8A@I`Vl}#pQ((0#$I8lr=>ZgNzAbI@PHV74h zgW|*Q6TnG{f4Cs@s#AS*vHMa2J!~~a5+8UUM#-xj%lq(yd&sm-aLgkArv&;$31^bp z(;g0ZF@Hqen`cY9cE-PQQ1!6cy*35*N8v&Nq_A&d&aS6C`|eZW3z-B4fS zsU7^NFp)x$mv%btRVkaL^y0<7jByQz_}Ca_y(Xr!o8MA? z;PkB$O20Ua^7+7`XLPOteXlYZQCtBCNOgv_@v5ic4W{?aWU}oYduTfbTcN_&&x;@% zMSD#a1Z!XPn=I0LB?bn?s%PiU$?2y&7DaHU`k|ltE0+{x<*U>V#UVOVEiVi|tJqp@sJxZJ2Im+p8eKq{$raHSMA)*r(vEDhvdr^HX``1>N=(Xip`^2W|%#8CRf2{(K1j9oioL@1{jh&@NSC)^jaEUDT zZV1be5eJVp9~>&)1ifF)b1RJRr?_45Sig#slb(^>DK&uNE4hQ-w~GAF?7HaRxz$Be zU=gCY8pPSP%vxuz<`~N6SC;7*Nf|AEF%2Vm?W!VY+)@Pa@{J6d^^?jG$3;hqtJIJ* ze={dFV?v2$ZU^!BammQ~?QU`d)r!g(DHyTXZ6p4T+hZaw7Y`Bx9uBh~5kS9z4%v?g z-#>iO5g8Vsu&KJtPKG9mdo32z!isYlp;8}tMVa`ECy??-5kFt`>!+U)qwGg}{QPXq z6TZstBEe(oDT+Ito4;_f5O99TOrsogxmwC=ONnWElbyD>r3z9;9mjZ7JuTLEZbQs)eU^1=}h%^#%V0vphV<-(&nV%_ry)x@pBJkXF}oUbbMjn z-!zQnh8!7q4AchnN(U3p?@5+KNCqFfA$6bq;MRnrG^eC&Y833=KIhZ4e+#NiXtgLf z@s8{BT^WmAVOj1S-8+kKM#9T{g4z=NxPLQet$lOue-!w#&tS;>i!ZBDCi%}S+f(M} zH7EA1!$YLn)rY3=ijOWv1m zmj8|ucj$8;>qwac8rke+e~bHBQ^)d~$LjMe7DQZMWd!A;iX~69s>`S?HRPAlgM^PrmL}NI7pZ*5`009600gMQ9_Zpt+JS*YquC&;} zySt>Zb4U|Ac&XQ1RG3Ux=!h44rRj)Qdr5Wtphm|_K*!0=IhkUze~FiKwdPs!J7(~P zu9;2jA;r`aZ|R!SZ&s^ivoZ`%Q-j08?X3368~j)(^)`_iJLuV_351>DL;y1uxc%$~ zjQBZ2qH=fu&U%G%C5c>x!m*2HhSEbM=E7k`h-h9`n)s%Y-$xt!%0?0^u@kRr%7qDk zH)+;W7AE{nB)k19e{ErMSYr#mr94@*`Hoi{>qZw z@}-{bSp_ts6W#W`)o=Bnm5P1uq9nYaDnnmc5( zlX~LS!E-~ZQgmEkiJjbraB}1eBiVN z(iHZsa>;E-T+P#e*>%QKtEL~67#bc=qybTO2{GPhd`$b;T=sn@o^i{{XSuafg&$a( zWQP|Y&utx;f6KX1O^$b+Y6MJMi7jR+`Q(@qkLr^8y^F9oJ0?k-B;o19=Bd;kB=Rt7 zk(wtHv)h;FwWy=*>QXB)9chFsmq*Mar7)_i?OAZz;%^%D%ufGUslOrVoN?7Rjb)EU zEhK%tHz(F8N^Z?kd_^Oy@MgptR1%DfyqWDUQ%b%qe_2EDbYHVT&AgSF;RItPc9wj_ zY<`Q0R6LuPUGzMU+AH;CcDs?2B++n8*qsq2>GEDgas!}n&2sbn^Afw{ISJ;uxaPTR zjAqT1F_+z}%2ROJ>TtfpE-iFMO6dY{RX8=Og67mEZD}~!vIEnpCT?NEHR0s$&h{zu z<8-URe~EPl6&cQn4P-UhKxUP_S}nk5o?SM*EgdEH#e&sg+5Kjt8id1~?^jDa;yZk= z0*|P%*ZMv>6US&gV;kZzLNga8hw!#y<|NzD?TKfcl)=IR zhL{*M>Q#QuaQk`auW+J0-Lpq(fnAD9+VkDWf1&f)J1K5iBXFuvIBC#6LOt#f{R!GF zh-nuygDb&yyc=%&G~W303Dst1_Be#cY-uaOt`w*Y+LhtB+gb4x({&@G7PLvmk5aEm z6w`aqT~k8^TXN#gY+2S;f{hSKYuT$MpPKn#Sdp>b&>Sz=LCEp+TrirRPOf`3t5M;r ze^YM231|Ql#@?p^d9%H=+emvCUU+XeG=#htBX64VP3#`E<59F&QBjK(HA2s)lufHW z&Zo(m6y5HTNmw&vv&f&^{LDc@j}^K^!DC63I~Tn;1-RVLOX7+6p$IU12^vo5IlH1y zEm>Do#D=ki{h+xHD7rN6mkIb>X28;Df5jG^0?!p$ii)s_vP6TWDh(8prZvZ0J9?v^ zU0kf)EybBZT=Fu70ns2$JtC++flPXn{oMA3+cLt$|<*kN4zNKq~h-tfAXngIbvwgeTAD%uJe^t~_ zoGVv+Xo&Y$G}EaHFUXdRm}6zTH5`N!iCAZe4mmNVZR&wl-*N&AJMxm@Yr@^CykTFwr%`k+iH?d z*fd6?hK+68wr$(i?tkxdF819y*K<3cS!>PuzRzPdV#97;KhKZSHtbp7<;mgpTbKju zlWY9m7An)Wsy&2Zp(q1jv+=FL7V1iWr=Qy$K3*xquG2{~s?sbU<()IvF9R1}TcCOw z!C}dV-Z`DmwGKG#$7v#lhF@1P7+hy3pEsdCR539~NKs0)=vx{1$>}8KqKO0i=?r*J z$5K!YDUU5?H!rDe&WVYEJtJK?#iDZ!vZ+{_AuX^`181wwjXDx0qPSqSw8OH1KI3rh zwg0h|9$6n1_?-Z=xHb1lKE|ofh zTl9nRol}Tiv&n>t;Aai&l5q7{NJh-7D$^$t;jT_v%gBTs__d%Z7peh&c^!^k%ytF! zi}Ghp#hhM;+o-+aA-*!*BB|dZ(Q{E097Kyp4B9u>;Rp#%V4bQbU@*sOrcjO`d{yBT zL^p??D;iJzO|5#_h+@F;EU zyfa#o7U31cqkih!OKYiBit`;0q?{++qg@xwP_QQwA5DoyIJde|a~Lj!=RQQve8=6HN2zm{VHpFuoW1HKOd-1VxDcg>hEJEqtVePSb0n) z#lPkMe}Y)SQj?o?(v`fuT8>#mP# zLHkd*(Sd=nCp)vDkSAw_pOkqqn z&4)7?%nK9r!~V6#GLyH)`hAtl8Pc3QT6}!`$UGE?eylvqFclnpZ=O8m6*_d;eDt>7 zWJ!Vn6X)fqn?s)S8^ZzzGlB;L+u9??aHbWCZHi=80^A39d7g~$q#FzHsXvW*4kM&Y)2qFZUeY!FQDKz& zFs`uh9Md5;LI`)y6|M?Cq-NojcB2N;jM{uzy=cZd$1^YNC{-{GrMM!0$7EMhpq#o9 zVHSmYQcszFpi|~JY3Bf_<&fyiQKB0xT8mt>ff%gZ@sKB*K1QEf7qpg+fv_Xshqsk_ zvg|WZGUR8Ux!`$ra8?W(A<{7ev3LiY5bU2cu3vE6Nk|;aaw|~>*rzaaqovaLwtQLV znD9uj;_Cc8v#&}2`Z?oaJuqB)nU|_=6d56%@Z>Nv3!E%(!klD-1XcR(NaP)ot=xq2#v`te;pj;6|e;faZ zu4NWB+F*2W3(+I6u4Pp-7PyEa!X-R#h;I-n{;DCmM!~r-+6a+gtZ}`hXJDid*^tnd z6tvl3f5}8)B{2Z*+y^+KuTBlyU+%{mU|9=90?0k65Qzlr5G9)i>z!bbW4cwuZaZSXGE2`S{$zoGF5XGy=YTc9ZNhxEiazDCfqhy zZ_$^Dny~_tzrmu}EJZjee`K(G;PZBbS$?PUpqp*g!o;UHZ=rFr1RgV>Uf9t|##4U# zDnKj&$E*zyjX`M!r(3F8Vi?f{r{l)vSWKh&kA#a(jGo~2$ROfFWxjoTy|uy5y1j1H zk>bZ(QdJGuzL|%n=J()*1x>BRmIbD=B!2)bigw=4U$FaF=ydNX?G+j$<#VCy_Aw3i z{T%b%aN?%%La1GUKr*k?3F~5P2SF6F>xcMT76Ct2?A3X!;gxUMywOzm0pbrBap?FfmB(D<}YK zdbT@@Jr|BRQ=4#rVE+p=?A>gQzuc^ zx%{6%>8pE>o+e1&4}e|j=F>S|E*6M3;_A|n!es#KLXBpF0=p4}*_&TA5%3;h>%E!< z*Ix%GVt;6wvpn%QdQdp`IU3*S%Wxys-h01}^2zO`wzpk1b|kE|y`ykJBUOW2Awx#^ zEr!<>XdL&#LYiA4A}(PDJ%wk7fG!^+@@=CR{rbbcys$P#?}a!gP;~XzssdmO-FLn{ zQ^^nAB;WEfKBUph#5@u;<~V$?6j;t0HxIV~X4%X(8|72dG;JFbYUrM#jyyY}s_*f2 zCk2FE7Hs-+BucQ=pkir*nbFu6}igqn&|4_?ZAfx{wu2}h zms#?iOQW*(iK(+G{9MQ>FTfDCf9Q14JoJ&1!S2`l>pq)^jk}P+kL-d&1_M90WSpB^ zh>hW9VXb%fcZ=P8m3tE^F%yXbm8;&V{DT1GeP?Xn_orKh*~M`bT_S*jL60VpoJ8t? zT95-{EeJkn&(XCe6Xa0Mi$)-1Gg8?x|8gAmSnWEDUC5B0X6VLKUbE>RDOVmX1H`4? zzDjL3?wI!Hrnmp>qnrAs;X+(A?S4_iB7hrHW1qjs_uK9At*dbvvexmw^69};v@E$) zyE5~#!)H}mRpe69Mv(la-xvzKVO#E@`7R`CC#U>|9J zsgK{xh4GH`sy^jctPpY1bPB$=m~~rcCcf^fw!FxQh-#-A?^5^6hG+(LBmB^K;#E6T zMYf8REm?n&TgXXku#fjHAb9##era$#kj5s65MgVL{Qcjrj6EO`d@oU>_X;XX6B8I4 z`{n>tM-3bme$y8)I5ptGuo-e6v=d+&k))umuvv(v^3#!Xs@=Iw`t#Hnu5~@Cc_}7v zF-&@B$fAKP6t1A!M(>Yx2Ib=GHCcr{o;gsJeKgeTiN5|N!R1yGG$&?b4&|-yx-0UI zE>u`zWLIGl8UXNU?hQIDq@51+*WBHUZb|PVtnZ)En)TMN3Sha11mq4`6Q3->CZ7g7 z^l?7|4-x(P)q`Ah+L|WzoZFW`cQNqiG&xYhig~|3#@hNvHlYNh+d@!}a5f8PGbmrs6^sqogDi=rw1BW9ivtMD$xU zO(D~0{?fT1{ zLg5;D9_rb?-!$wL9ON3favDDnI@rn3xr3+ZeFb*rL#&hK3rD6Y%pYFwSeI8uoaNJZ z4NGe&S{w)IE(D5J7Gk{jlq+(m%F8p=9c+bDz5v;2ZCdYSh>x6#ydnC3zval@cleL1 zDCNQ`fVY@@gHS96=trJ+;}=WT+h?StAVoQa1l;j|TVYWd5nC)HTg~3>q}z;Iu}##I zGXqkLH!#^z$O8!nR%kT_3XkjZ-}aGp3_In9B6AJc-X-hj8F(ON)VZwHEvUcrb1!!s zwlWhu7Ca66mi(Li*Y_gF8_?awQGlc%mj!Rec*mf{N4 zix8My!|vR>lXB2oZX$W|y|VVMm(c^#WB|tInTkUAd{aWoTD*jt955TuB*CucNgS<( z9UJ0sTA-T&+#g>XvFqZ;ion{pYl-x>HSW#KDSSiYof3h1j34el{gKq0LJVnZF7^*+ z>{2)>*byZWJwe$rTtAMiZ{Mpx2aWYJj;Gb9I}rz&kpPf7UE^yqfCt^7T0|34q&Qvwx8jFh2`?F)>i)brx4f8 zt;KDp@Ao*`Dtm^nZ|)ow{cQZ1pX%%()SC;M4ll2J9{e@r+SN4LO>~x#h3*$Tql37Q z-G*dwcs9AHEzakI;e0mmBQN3KI{;cXDqJC<&g$idk+6QmVXJINlkV=Jdbay$k-d_X zKK6)BB+`Iit1vSm5_rnHaPNo0vvc=mc=>q?6N|JTJG?L2r#^2X@${{sYzf=TE*N7K zAq!73wJ^@O?v?X;r~hsWH%G)a$npiP@(J{e7cvx-Z5hZK7%yJYS}4Lv902Au=G4!h zbcXK8Ox45$UP~+HUy^7wjsJDb&C7VM`xdEKTej3r%W|@V;9M-FruXl&vG%dwcS`uM z4Y)TNYg8cZ`!^d(X*fNHk(g$zNz66h;+=Tv%gy7-8s?m*7K{&uQb_hriJ{HKuMOZ5 zHEp{g{^}3ftfRMryJ%o2>I1OhOf=!c9OZh$bQY|!qm}Ird7@aC-g*~sCq)kdb#_=x zsF6Q7ytjEzg}=-j((U>{cs?UHM#ortvDfjxc-Z5Sl1!5nFn8HCm!wCNMAFeU7{-MC-_btoX;R?{S7h2y&USy17 zuEPz&`tqdpAViDL*^^ZcwbH&SMzX6xvwk$Fp{J~{&qtcU2}S)q?RAy;mkrI9(zmERF8^Nq$BC%E@pnTR zx$PCaGO4#|C705Q_rKtc<@={FQn;Y#P5YS)ldDF6O8no!7=W(>OWP}_&iZcIdFG?w z)NnGQ!S;z`fJG6@iT>eTZwu0$ee*{vn&-T7-lb8Rv<`>k%Bb`jEbLE}{GvR`{@Bq5 zY6Qxn%50Sb=fE=*OQ{EF9c+@)Mz3^^{&CzF+c2H4qo+B?h0uAQab+s?d)-n7{g-!F zwi&1|e#cvtfGLo#nDvu+(r}uo(8de)bER4pT$N#H zv1~udQ5Uxm7B_UFMnJ4=(V;nAVDvCHQY|**;*yiq)3MMMfIhR#%(w-eK`1 z1p2fC>k!t@dCW?++=*bmdI*ECHGJk%{6$gLCpgT_6zPoMva^BTV3ZNHQzc_~dKg}H zNT6OX4+@`;mZ7z2K(C^vWEkXg#$?CC9pq{U1KH}wJ*TOf|N3o%*x>u2`;s#vBh(7Y zSzfQ6lw6u*Cyn-a{?J$AuUKy!4~(&MG{N!#T9Zy{`kLrX_w3|DZx$0sOZ@&g&VvC? z5k7&v0#rYo92YJ{ZLnKPgu<)YZmV>oCWM^B8+x3|Mf68=m5_P24idbFCN~evz%N`! zWlEEoC!6f53xv_66xk2zQh&uXuwf^%XykvfXT7a>is_?hBhnf_|NVVk2#PU9hbXTI zh@woYBaYf7FWdW9jfJBwx=*GY#Z}EbIMhXKW<6{|h>e@Wku>XxG$z+fnQrK&=|pbI z6NlT)G)SiRbwmhJ1(eommteFM8zIu=xFzNg=?K=he-1qoff#k^Zm8!xjYh7Y(r*j*o z%3==R*m0qt_FzdeR~NN}=~yS91!bk~(ZLn}>lcS=96uZ6NAJX2u9zzFc!pA;!8Z`B z;z&iOCrL#V`m=*ZvGV3wOjnWF{tQFwe8>%o00li%gxa8ZV+w-ww|m#&g~Zf4fS)$S zyr5Olq{xy%L_Pw?LU9&X)}zNIIy&yr!c5J!=6v)@gF&dXC{onDQ;2(5 zY9|eEqB(+M=9f;W=YDD9mqlAN9m0a|JssoIOmxj@jQ}iG!Zttd`EXb|V64H5`@Vu~ ztlP#!YiEQ;-^!3NMp3q+=-}%(=|=VBQfj^MGmg2;cdv1Ic3%8N0G9?1DQ(2ly>fX< zDEnSY-g5DlMu>?Tu_-^ApHr9?lsd=SOxjChU-s$?pB)IAH;ygH<&@yiUh?Pde-RhV zMM)l_H88B8)XMiD`TimYke}rC#q0k0$Prs;9g?^lIlRIU;}MHYhbEPEi#J5Ik!c|O zMzc~+@v+OFqqr;=5w~@19xi$s^JEy4K_&xptC}Rq zfWe(;;xWZ-;QP;J@@O(y_;MsMgmO`V!80-A7m`4>`QE0{xvM{AfctgVT0<&sMMvvA zS=VcunwPR}#i`Fv*8-=9FDsV_)GCo%Q0W8eaqfM%3*j%5WlP4_y)@O=1|V=)oXK%{ z*Yv_8P&EnS>2{?yRNBDLADDTcK_13KZ8u)}$ zy(G5n14NYXJ;yb}0HL2P`k?JbGS@MhtE6DWCWP@IbH1HI0nQD&0n;v-+~xCQydHTH z)qrSH=G7`RUEaiA=~#V4y-tU9rIj=alPr96G&_MUN;IhMbw+2q=t-Z&n7W-VLVFzMahp_V2+pU9X5wQ}{cPi{v0brk*!3M-8(mtds}mc}T_ zr^SXK&K^7ja?>2H-Lm`lUFS##l5d&M*1*;AoU%=85)8!QhVuvPOlDAAn>gx}tfU^} z#}Y_1u@tr#nPwSKYfxTbr&O>FJgu=N!d`t#XU6`PB%6zwvsRtmO~GJ;t;K;*^?$*O z)c5j1$qT%kX|5FQ>DHR*1Wq8!2#QUXb%vYsCw>(L68SwgmLjW4f2PMa{|p$J$9z~7 z)(eh%;Y1si9Ienfj$+xp| zx)d?cu*?>TVQMXuU_n98;T!Lx9N869IyL&V@=p1NwA#gtIW!>+(TUgf52m-CD3FGbdT3Yyh^g+^kOm4qN9ZZU5v$0ffBKQNabD zds0C}E(n|~*R$L;Zn#`39XF2v%@uUlh-q|x z+jg=gj>6Ngd6?t+=uya5rVElk>0Iz+_pJkcuAgc8y~Z>C+jA#!NrMLDw_F36aC-RI zV@+dvQlBLQ>)@x1ZV;+=yx@Vbn0z<=U`Hhw68Moj{-~@dYcw zb&DuR?Rg&m^~vfjlXvX9_;rJqbY&aGQNYz2TA725ewB;m?W)S3Q09lUO`q=&U_I<9?|b7fo(a84>6 zxz+sEIX8juIG@dI?X41lX-R zm9PqX62xiOYE)g=D8C}!@W01CQ+{|uiL%v%1H%JvtPmBF{l6%IV9kWh&mO~u9_DeQ zYsuQYzEL@|o^)oO9}d}=hE53w`l5b5_FXdtMDENoc%9cRJG6v$H(?n&tqJCTO5JYZbzrBo4;#5Rs4v4Qc1-`&N#=2v zdSpFPl$^HjxU850uA%F?0VkLYk%V((h!?-=R4I}{M7a;(ik8~fzvyo>s7HPgLDi7l z(8?ZUj|mi_W|eb)kIY+l>+E)AC?qQ;sghyhhW0C&xtp&P;hbZpg2n5ucNxAk6P&L4 z{K;t8K6HnDT*=DSPas#GR7hv#<6tnS<;txl7o;&2Hfs_BXkL1Ps$8z7Svl+}9P@tZ zuGj_fvE;pk4MNc;*?t-4slM?obt*FJ6Pq*0;wsP?XZ-CRUTu)`gM6o?8zW?X-7{lk zvO>CV^+)64%ulEScY-#3lWP9Pvf<(_MaQro>9WxoGPn960p}UXck3(rt@m%9&rsyI zbx8xSk4HShK&0L9Y-^xnQY-IFXV|-iHMGT`XEFv&swyJLGV||(AU5c@{&WAyH6(o} znJ3YiTwhJ~F|~2QKK%h>z1014zmJ8Ji$GIP=Gojr@v}Zy?dHMBeb}#Iy+U(Dk?%Zy zBw6c8zCl$?-_k`Ra^=VqMcZXGDK8gu-@z{|jCvLXyqNb6B65R!N@OXkahQuw&dn2b zp70H#&)SQCc(&6WzbyhvPH%~}kHqQ|ve&;tes?^0wlOt?5kF;I&WG#5WQYAYURo-r z;I0(Y-|gmFzuupu^H($DdTf{uGd`e*J7_98{6%#P{;w1I&Ar+%zz-JQB%=H-&^4$b zqr^=J@Hts(Q*~@I=vc+WO)RXQOD^OPL*hRm+k5_qmPty-j_IQMZ^q zxgTAC|KP_F(itEy*l&bVS>FA^4Re06m`fN_D)Kf=>`{IP@xzW;~u zP_n~({Oag8q_O$zx10nol&Ne#Jx_PQ!(LurF0YE9P1%-MqS}E^9)@(efn&WyJ^RJ)&WfV__pK4N{st*Uo zE+a?>SgwiAH+&PdNouLgqr2H=(7PPR|BXqz88UdqM}LJ~ZV$Mdbo*fn1(yZqt7NuncC=4i%Vg1?AIip7Ui^tL;`3B}URl@M!`01auZsM;Nr{urr-^hzRhkz6@qe~N zDgXGNlA=e3F4UNA7^CIa=e!hz#*^@m|K@)n>LeMjm#XGJZz3urx{Ru~W+oo5H*YxZ zb^7|&R6qeml+*rAigy);t~=u&XiLTq3so}@7#g}D1qr7CjZOI^0eo-ihwqnF32N$V zE&0#klG@wjihK!30}>nA!^vN$gw96%y9)K zX@Gof3mQd5jxglG;Pqvdc%~Tga00Lp+oavwNr3(=-txLusyH}?uuBvluU$5`t(dDTphMA0S+;n?O^~UM6Cf#P;=~b-R zG!=;py}D1#m`(ioHQhvstX(?pdMwS%ppFVS*Y{}k(c(pE$qVOp#BJ@y$)>roDb5_d z==5+o)@_~=M*|r`&~9RF#(_Lq6DH|kl(a@thm9fWo94$k)^9~9QUvE@7G%ftKL$s* zzdr2hRmCReL04pl+(a-MZ07{el81X0@3|L%g_Cj^YXMAvoYwYAJQP$zxkr%!A>{2G zeOFvUWCW%~#IizEJ!z)9^Oxs+I3$-8k{^Bs)w5rmvYi!>Q=?MtnE*wIJ9Zq-pLRQT z_&t}!J(m8e!pguXD%eeb@IDV zM6%M84vg7_X}RZb)c~UZqA|^2lCkkXn$q3oAxuqWLnuu2Gu`HFf~bs)#oWeR^ABxz ziPQADx82pOsnML-p3KE$GP0WZe16*3px~Hvn|VbU5>x`7`_&j{Hf< zByy@w`yPL(W9-AodF0bpjPY~hd+WXu6)?^kuS^-QP=;F1^2qBo^wwER?s7&IHw+i7 zB<-{4xO^3wjVt%7SIzipYZ&EMr)zsYNRzT#TSjE$z3{^~slHN%yWIGahEz$q1gERt z&O3?;UdE(@(-`Q`Oc2l78=}`Om3_q2H-c>P=Vp$3GYXnP<^1&{mPsY`1m>RIIcVaB zGY@t!4xP3uBP~ue5wUimQn)fOx*7YT%0ty9O1+l3Ei~Mst$yI=r<)^~{o~#i?i#9J=X3qqd z^y7<#yP?Cv{k}yua{#5ikZ_zl{bwLPlqnB~n0IjnFSdrWOrZGv-Uqtp0U}|F(jwiCZN| zph}dku~!%)&2)3bhM3Z9NNi|bYnkWT8_IN-nv^s`GcG^fsXeGzvK~BP2ne}7tC5w0 zOVee~uGBkwVHO^*AIfLsQ{h~((~^z6>s8h{mh_;|ZyW*tt}A=6v%6u@P30A_*=)j` zN#F@g!~JRy$gz3mdz?8xRy;JhknV#TJ?oc{VFyo1uPD+wDlpjI)U-Pv|A5g5uWbj( zwBrE!M0#qKZH}|_XRCJzubk}#zq0trwMJu1h&W~sv4lk~0m z_N5rB+IJv4S|TzM&1>x)nWK-|T0JDI#%f|wCvANlJ`CLKrS2KqI<)iDoovWEX<3PTM9 z`%PED4dHk|cT;OC(~^f1irkqKiBjr)3+qQl3)iL(4DWB+lB_1D3pBa6mMgc)CxtU% z%nvzKJq<*xs~Gax?AofnYuz&;19Zj&4-MMS$?f1(O(QVUNpTv7QGs^6u?n;5rbzWmhvD~3DMkBOB$aBWIG75kWhR*~2?n)0;kdxp>!&Sr? z`zaZ)1SH7s9z4!o@vE<>o^bteZk zMV8PM+?s68m{qsq;86=7Q4in8j_|9XfYwp)QkU{ne^AO_ zN`L{)LXnt4B!xz}$&_CS?3=#AyT2z`TN>9Yk%%|uSUfs=^4X4}`z_0S02WOwTS!24 zIr`OAH(y(<@0Xo<-WeJQQ!olKH=`@Q6c{^l7L<^4|7A6vU9WUcN@u$Xt8rynN4fnQ zT6u%t{(sckc=Bmj87GRqEXJo}_A6z(p#d1zp-9}Y;hwo~v{^;$u`9)0AQz9}K9gz? z!@!(YA3Vl22*|<_ygD!MAgMD@49?~Wi}cyUT^x~Cz~>ljecw1Y7BjXq0wL(Bb$(50 z;nKvSZvVm|q;JJ?6!6HT9yiU9N+_CynK~T;6NE8JfZ$k(pODoIyqP(i%lFrq1GPIG ze@Gvk*h$E4$A=Z9is#M5EM_5kAVej3$|t~R1LfI%i!typanMP6!t?C?oeqb~*rSM& zF3>nlpaY>kz?LJ?z^TI1*Jg*jsYA@|l~R2VQWe9S#|KR&%iZgiZ%?KZC(GWE`Nqu^ zsSiK9@T-}qe|e(IPxw5{_@i`W4(#^Ne%$QHM#-Be?Cv7Rf1bdM4vip*+Rlw$*&X$M z_K$CWHvVP+JG&pRCcUE}zACXVh z4`cHFrnYjX1|-|fD5;>S=+~`Q0=?#%^9j-&9LLO zb@PV}FGb@{x3tYnd1=di$!{ElgG!Y1N`}D6yQBdq<`ua8p9;I#u)rQTvVsz>K=>nl zlaP~FVWmU-{!}Sg0?rsou|20YVhnP#2Gw403$n4E&_vYUJn$5Oh=cXT%3Pt!L20Q6U}nT>~mCpqDNI^cA6bJ^Q%9k4J2Es zpW8IKeq37SJm|YtCj08WJ5`@0h1|M4<8F9*hSp{tBlq{t14CDt@5P>id=-GPjxCUV zQ1hJpO5e)Gkb*~8?;%cz({o&|s%dD_`1*_J(#KDOLdlU&O-3kHymz#>hv{;O+;Z?d z>)2X<0r*pz5-@R$1haoN2irE_m6tqQl5$W=I;^QW-cF>qwKGi$-D|)pt%Fw z>`L=;PyNM4fK-p~ey{kWOHRT5`mG)Q;0yeLK2@Oym(>NaP2`WQgoBNII(Ngzw=~Nd z%KOxSKCb(cFEccaf*nHKTf3iE2W1;9$!TO^N_vwHKAIaXC-aj6`Z1MS`foO&l32jV zNwo`ZZd<9F*x_l@WJo8LWP2c!1Jc`e^C+@VDf1&K@b$c(>%!xXlMwx`%nr5l(#fv$ z_0>z!x6k`@c@5fYz94&KCOb)PxQv_R^Nq~1wV@QMqj=_GWL}BaFeeeVNv{-@nqThu zq6L>w_1-}CFw^Id9yLrbeOB$=r9iAmvSedhhrCUsjj)Nx-MYp5YL@TZJk+X!nQt3k z$a{1haGUmoi81y5=4tuhfwkO%+|YPtFq74{+R2+!rj+2_U7y#?f)S;d*-Ujkq0C`9 zcym*^C&${TvF+XKac-#PUjLDaY3AZ;#Sm}SxA5E=n~8mUyj*ki)mjJ@n@#g8;#>{E zC`}1lcz`3r(bZWiXt>y~F6ST(U8CFoNpeOUm_IYw;=*=onkW*I7HTUQye9j1#OgoB z8pPGJNiG*iYI;~|C?Ij5QN+7w_<^brqxmUx20)JsS;^2j%lzuO* zUhL`nhxBk*#2G9qo`Io~0w$w=^#Heer`tIG?iy^UpVR@64fl<;g45Le6$!nE@bFv; zuq;WIEKb~KK3Z;VWz%lB7p%nm$p*X0o#PZ5}c2<`_7=QRNSzxQkh z-5K=yao=|7!w(2d5)OL%PM)?+ zOg8&g^!Ix_8bHGJnGKH&xFk~zx?@5?lm-fuLNTNf9et5CpZ4t$c*nB?P%^N@u|XuS z!BcS?l;JdgMt0zoV_b^dIHN=kQL|yEz8JeTp@!km;>jZ9sqp_%r;BjZz$SZD83zCS ziD6WOHztgq){AqM@4_#Vj8-BHmmzweJzb1-eJ|by^(ngdQ3O|J!zj`!6Gnd&-A+DuXzEvO?^;wr1oj5iXU^brX9yh`|-Bn*+YP%Z)#W#eV+ zN@$`c4$z0QLsS>9QiSj=T(#L-m@$H3*?Ni?pc1jAb6$HI91;6^;kv?hv@5<5E{dslSCU8masq=KEOKh!633EkML-k( z#MA;s`iCUt!XM2;fNvB9j0T6nn>bBPDAfA1pui3^K!I^{!9;!0Fnzo9G(2;5zOr@XukN*LA{*yDSEsh|eEDo{+9i~PVo^uW>Trv!N{Gy~i82k>o zIr%f`7bhbP5z8X~{9*CyZ3J+Js)9sFJpW()mHq#odlUJ$Ab>gG<`Lq_JY-4Vv`G(m z84Mb=wvq2GW_&W5^xC9}S1Iu07H^TFNCW~RSlu4;-7*^JgsFqubcM3~ir`HsvdI1} zaZR*>?AmaSuBLt6WR=YtT*|HslEsk9w5sQZ2=m>+rQtBR#YixVV8_!Sy#tOp7_|JL z8Hm3pwDw>q5;o(C4#n{d0u6#YxfGF|e}Q{i+7DuW`mR`;!` zL3vC|87NCfl5z8hV0+j~SaZ;rr`MRgi>Q#31AKG*wStplt=?Xt2@#ZK_Jp(dqY&03 z6i)We$X#F8$BX_A7tlh{g9SpzaBd)U1xQnnFQj^c2de8q`if&+3Ol@bVsiqnWJVe< zXtXntv@lL&ibuw@Grr?+7nO`{v^S?M5VYZ^AN+h5sQS;Sevq_XB)oP+r8iQ9^Fn7fz|jiOH?0@bTZ{S8 zb>o&YK0R*`DH0Hr(<#_#t`8i(j|q#E4`PBoZ+5x~t<(KZ{jy^Y;@aEVXblW{e=z&D zRS2D4YzM&|_cm~|4e@8~xktM#ToZ^)>&En!in*>=AchaLOw<-vF7}>cb{gc)v~(@F zj#iwuRra+^>=LzJ#OUB=5}6NgS9$U5Kzhf$8)3nrjTBU(99c=n%>fJ9I!echhyp?( zW{0U2FRyy5vwmI8N~IrQlUXFb7grnc;Anzs0+<518U#VZ;0kt`m?Y5T(%IibpDI3v z3x&;&kd!!oV@Vzg6sFV(UyVZuG7PJ8riBL2K#;!P=`S0}zmsA_Kz3A#1|F#=3HGP; z8##THMoHXLS4Z9nv;$&Yg<*nEXjCCkE_aaD8!w;t>&256ai8!PA40_Gk~FYCm5V+p zoj$S@w_4>9&%hE2L*? zrrm-Oi85gZd{0pcRQ$)83cO#DaSlpU(Zd}*zYUOnFpX{>L;{9|tt|xvKJ{@+elwyD zzx2+*e7;rhO=mL@J*2sKlQ|Y+n(d?d1xaE4Rv^dO5QiRGZ}}W`+IgNCB3>NeqsKIt zGfeJiJlXWV0vTjF8|0lt0K(g$KBLx?gGi3}jT3%JO}BqO14CmqHOMv8Jv=V&{|p#E zDeO`kYY*PrECK#)m)`YXZey8h#kelmEP{CPWMLi&0+S7CV8!KI?xFB{$)#RFt*9u( z%?24-t74aW56#8e%W0Q}T=S*+pm%HPb@yx1c83y6V=4ZTz~$&Lw63;Tt;TP5)2b|I zbV6usfAgKe~ z<6FX(1Waj0HnkrZYdqR2H0V7kOn2ZaGmEAMLE{NVD z7-m{TeVv()p{`zI+%=KP7uo@%cw~XfpGk}?9T`ja!!pQ3Js&?0BY-5PHBCbSW5r%?88D{q z^lkqa5sAzg-GH?2nFqOO>j&ZUjO<&P`@XN(>T)sa>8&?=fRshFoXES(^k0;nQ+OD0 z`=(2=<8{4*%#!edB6I+dK+qUgAb{gBx=KJ=)d$4DFJZJNpYi6$ZeeV0&lS*`* zjA~}FIuE{3EB$p}z?pP2QSS7oWZG+$>mU z>rQ{8x(VKkOF5rQMX5HQd}?$22D@hfRIXg!k4#v}1V+tnIyJXfGQ*Q5s87zfi^kjz z@<-0cj>GK7T19mUH554%J{NqN}^N!0Mad1I7 zj&-bBrEly(ex)3JOar_WUZj~ZiFxw5em+YDCGD)UTeWIz;AJkNc8Sj2Z+g}ZFt|h= z@LmYR*%>aw_yfM!|Ddi_=4$g0m&jgJ$WAHlwv9?51CN6u;wh|^I^&kRPxGk`jqq5g zp_VyY>p!X#Hb^;O@$c7bbc%F03bN5lv8X!2&uE{Y7Y{3!I(L?bxlqw~9}VJ{6Rt}O zoa)UO7VJB5i2ae#okvCcs~O9}Ks#-{l150723)|GRaA~iZa^!(pDiU9) ze*SVK`z)Ak2I5GNo|Kn*+Dp-0V877w1M3VGtZ)z+MMy05$4d9XPeY zEYX!1OCo>!LWkU)^X;cEp;`N&+Y6gpnfi}q1dTu9TW=3uR)0CC)t++A+bc9g39JUa zoi}*e-j@2Zek{3K@??T20b5|%&@rYOHmxoL?!QRoYRxt87Z7%W6h3zPiNSvw>B)0# zEE8`u^iOS&>66?LtG4gEpxl*%G^m=iNBv>8T5}AIJINvwbiPmzKxpc&zWksp@mQ-A zZ#&EDwx#)K9Tn~=FgcK`2sM6K(ld3Ecs;Pbg$pGQ!nE$o5d_{`TFv*DMF@7uN75450pQ}Q98YZ;s<~00=q=) zNY@lojLtOQq`ljX2kzL}$bUZ+ULQ-I!erlME7X_LuDN;~r=r>Fg&&S;DyG_#Gr^mD z^_Xx?)jdRLcdQ~b{R{2dsaY6(#d&V0VsugtL`cQbrPiE1;q(4vy2(w9d7a6y_L(yJ zAXPb_V8kK1uH*Pvx*fA90nTklcH&`?=o5h$-h%fU za?>MpojU`6-Qr6oqK5c3qcM4HW-d(B#2-9S(hATg)<~S~Q9D^yb!!beZFLvkEvV!? zurD)O!<))?4|UOcr^%6fu{lnOUedUV6?Knmq``SZTHhWVCGV>_`Z;V36jMKfZl}Y{idOFG| z>8Nm|4CCcDVM(~a)Fkc}AoT{6LS)Scr26vFiC4D@%iaO$C`m8o_cJwnwa=FcxwY0a zzM#Rs%_QR}J+@&MeR<%5t6F!-<+?@1vo*z+wMAcRL!=+}D8-pP>P7tQ-*A?#GWc!G z+xsd{fXpP}iE&<26q@qDLqw7TC?(vYNo2Zs6fd4|r&sB{g#KZuOG!GX}=ZF`WH0r!x zMaC@rRt?uKk?6HD-8Xx0TO=9vT)6Vu>ztuiZcUx^6`^I=zqfiY;#0?@{?_INN?!ki z`JG|?%rTNd-1_iOf!+%9E~99T;|9#}Q*~GYS|$iSq3oVsBx)`# z7zmSq)vD-TWqDRUX9yH?l}xsGOyrUAM_mXhCs=8f?0p{V9cR5K3|=E3ax5#0uos(G z)a@$d>(0BBd$4J>%$A>s*_wYK8(P#+wgS(e<5M&XDaomgtw$20-f+*a{q+39QV#8n z1F6GG+Mr@9>en=HO?!bnT9WmsEV#4O+wJOh#E0ESxK^EOME&?`{NR%#?2?smT_R&Kk04=sry-T=QV&i_TE8Z>0F;P= zA(ab#c+HZt?SD7@+Y}Vf|E>1yEMcJ&@~pwl-n!04{qOR?ad%)6Hkpdf@^CuR^5d=I zH32n|%|_RxF@+)S&}pf+X@UG^eTH6d#1Z?VS0msY(~6RCtKtpE;WK>UAM~()o&HKP zXCY$$fg&eN0dpAJ5h3(Ea%M%BSA|yKyT%7`Ol!Kfj!$??s^W{C%3@Gx7LD;mv zVLE(AuYG{V&8eTYRfui`V=MAJ1OGKg-aMoMiTCcX;E4xxek|&VnJ_#B$Wbo&c+nm! zM#=Fg*-wzO3;EgEi7UyJUec{^ zC@03m8Q@EFHX?&WvEjxt1E%OXcOB!2Z%mIxv-%LFuD9WepDvZ;gkajis%;$;PSd;#toEKXf{k%Go{3FYAT`41%am8~Db3AnlMgm7`p&wJ&dgVy0=wLX z7LU@5CJRm~L2>tX3efS|qRrpSiplE*+ttclZSE8m2ceHj#*mW3u7OR(@Fo7;b>!`10|d9mXSuOY9k8MQ2|_(m`}3&6KJAaT-1YxxFm?qytD>1s~Ul+{wYr%V)Vj43cL~F zlFP0AG}&=GfL2|f(?_9SyxJ0Ix;5rwR2a*`(9Zx%tB1wi7(LQIn-|`lw7KcKGi5(P z?nhGdPcG8@*MLeEM5dCAzX9u8ty?Knj|%(3snJtQoTL4a`EBZiLVG0F+~TJ>KlPkj zl&ebr4IOGt@uL%tlG7jB3;`<`x7$fuA^H)0t}n@8Km#oaF~p$Rv@AO76k`(+tB9?a z{GPm|cNPS8>k}JFORJM8h-dwl3UXOW^uVT5$r_F$ci3L%xWLZu2&L=qBpPK_pC!AU zaLHk|a}(y7gs9B^^XWLWV?LB+v)S!lHT)v&|K<>R|0;pNZ}9Rp3T?5tKFq*Qj@{Pw%PG z^4#hbKYjG(;Ny5|c$H}$)TJg%J)YR#?ZfP3rzhSACZcf9h2OkcE_k?WOA>j`KVSAD zttJ9!<0lK0s_~%+sL$1(!iqtVmWBQLKH$bbfc@KRSDpuudF-}V1YVtrbLNomYgo_> zn9wj{a=~nxD0J(m&|5#glg8W3K59!7gtdEE>y6egXa-sE9@x(_W_ooMumLvmY8>KpmMAMwfJBFwb7Y1hmPIh(x>GceUdCt$d+yshW@t#UUR z0t@au^A@79S6o*6>istk>3qude+cUgpFQ!Y={uAef8AI`J(fI&AdYAF%bOC$5&gh~ zW|A$gKz*o!;o8@;=Vd*0418Kcd-o~X?f2y~78^72sKb1u=AdEu)XJP?+Str-cjPT? zSP3_A?3?S5+p_g-@&8`Uq82hBXu=<@^4xCp4C#^ z#!rb7l7o1`wWM-z!p33~kSQ&`NwEr0Z{}ojLhxjBtyH*}$RB0Q<&)e$PjN*2J&E#; zk)uo-i{I!{ur=MFyZ^acbie;eV5#9j_1$ApY#3BxRQK=0IL4ceM^MeRM!mjw@$B3? zjJw_il8~=Ae3Pp0Fh0RtC5i6yYk5`&&P*X3hPJ7q&CB@0oBLz=pPxU{S?iwcUf1?p zN?hv5+8AWqD~53#vtF$o*JHSD(uo-CajzH;8Mo5p$zpX(V?-B#!(kQYxp3=yv{rHH zvjI!&i$VKstIt7>3N=NPiYBOIa@0Zb@}r%TfjCh{L?&zf7j^~aZC-Kz31Cs98g?)| z&Tp8Uw11Bz%oSuBy?{aSs->mda{hK)ryymvURnt-SaCSe-UvPfp>}`ojkL;XA7gso zj+6D9X^b&tzR)qVeVNvPX2vV$?b>uf72kYHwcHc?k>7c?<&&dvQx6EG21k5sE_I2- z_-`v$aqcyVnFP~NS1BTz0abljdg`1(CE8=l`|-aj;`Jn+Bv-y=oQgfr6@(`XWj0g_ zeS>qZLVMGXZo%!cs*`MzqJpb(X61I4EPa_T{{Tm#7+y;mX4IKl^l?v$`#2ZhYEa8i zlC=+o4?nJ(Y}bcVBv{tB_Of6mC*{d1!rsupq)&)if>B2Q%VC)D53uL-D(b3ajB=Ew z-cYJDG`4IW(*206b%4H?rrG4S!PNOZ9L@PQ zUF>nc0RP)93xV-^TuBvG5As2K9v;W`Z}gqoD`KX(NCq?UuKna_u{8X%*l)Dho;?7_ zYF}WSf=a0W*$t%ReLn>VD#? zs3+y3FPP!%QE7>{qdy@1;pFi7l6RdIG2fXs_F{yj)`3;FYl{c{>WQMK~3_9zQbD8GD^h>i%I}O)}>4pA5-i$WAJTN3L^^J@Ot3k zJW)^^JmFwAe_6oMGsWuNCN>a5*BlLPi0~7T8)tDM8h^=g<3L}ms|q7YHXuEUL_%h z4+of{P92I07`C&f4!SnM=Fh+N>;_wH*g$OKI=5|Th_IK8ve=Bxo<|(bci2E?9833{ zN~>8!(;1vfd48i>V6h?p;ef44`Jhf#8$nPZQJX6_w_M1h`=?2Ox4^#rAy#x1PBnH2 zU(*ax38ca*Lkdkpn)+CduYgLS-h4gP{R1El^6eAdtKtc(al5{9;u{BoYz0j6uA|nS z=@Te%Tu+x;T@U4%HM+5U-2MFcVFfK`bCYJDOskF*Ce7E2G2gqqW(h?i#`8`GgVTie zayI$}&^l8lOeU^#Y|qpe8{>k4Lut z1$XQ3AZ>b=t*^JdkDOk5Qch1PoOozxIMZh2@(dtH@YtN|5l^`^f69(X5XZoxl35~J zlEaO^0pL`CvN7@_b52J_d#ESmHlR1EJ0QrLdu_Q%f@ldBwd8TJ=M9|^{GVyvwJ zta?&OSBr^mtvFD+vFN@k#5s7^SiD0_+R>M8GY6eP#pHRVR{VhWt39A5BDBhYm)#Ws z%z8=%Twa*#k8(bV;$+z(YSnzWDJ*t)ri<~EWY@(q_JvS{KYl>DZ>zKWFI_i0KLlgt8+Ym)3p=ND_8{OG42NN7Pumd8&_2v8|AQp0&Mo@k{6_2+v-hfja$Mr*cXy?Js&z6{lJuL+RpBIX-z-h@>rKKrTd4xwxC+fup{V) zw4qByOsf>>bs1jRbw~Db=WmZO{FV3UW*hWlSC_V!XX*z|Hc)j}Zi17a*_fqv)qCFB znrz0l;lQLLD;wGtas-&Gfin&aElv3!OxyFZIQ5n)X>!{s3%-MArEK_F36vQ8ZDEGv zG=WQ)c)u(9Dr~v$nEpYo`k~BLXy8*X7mfHUk2$rEg?G{PQQzJ0lZgVYWIN)2!`U-j zU;Mn5qE8(PLU z#_w48jR7a4vNZDLBsUrTa*|Vt4 zlU~~Qsn@MeYcz06JN^%mR7h!C^Isx~!gc0nXUa0Y9f|KKrwxB6XaK*N1R5ez55TEI zsx8{9PRi&yJE71NVMl@Yx8;9;q`Fu0)@m!XuD(pSjTw5G<#x&X)LKRZTax2*Jx%!d zbI!KyUt`LmI(!Ew5YWW3!u9^(u*D8{^diA8cBnI!M7YI&-oK5aWPw%dqsuaZ{e%*irK)A%s;&A)v`L&!JszeGJq=e&Gi&dM?%_}# z>8B1mEi+{k`N!C;L*wb{X=E$>INCzd&YFc3!z?fpDWg#!4R2HK5@7VDqX-e9P|*CY%v$3Y?0rhmb_1#22VOCf5aza#wsNgT% z4Fv~_1UqsBXBZ>6M+cLORt%f`{c0*SXFatdPQS37F8Q|FxU&$P8(ws(M$&=i^F|d0 zKzQ9eXS^s2&7vTdngkmLDQ&WhjY|P@#>14t&WvYB^m(a!kk_#LZa3O9i9DGLcQ|V0 zLux59ckWbNCSqG*pdM$prP<tkOOh(F?Y<%Nv&hxxk@ zFE!4yhjAMA5fqr^PBEwZpJ@`I0*tH?7?;86t2)t7bP(y6?6GRp!e?uZ*!uCvBKb$#8Mpc%J_4UcE2Qkl^ zMDS2KQQ46MgwkRn)7(c3&OVLGP$Z*%&X5?3p~!DAs{31_=U1`8hGD5V#;NE2U4j;j zI~TvU()^C} z%_S_shjvyrLfT;-DYc3I$1i_P?7ht@N$gct&`#cSTjLo-1i0BSLn5S6L*C$*LQedF z)@3D@QKeb-BnP%|ZCf7pCT^t`M6jjK(hlmkP44?iL?4YkjPY8ag(VEK@lYl)h6D*?X{Q&=foowS-YwJRk_CaXe52Q?-2 z8?A6ylf>=d@`5X%5e_f#(1GG%K6Sl-u8vb$-!X|}FME)9yw-wsfI?MVD%YZsnWYj# z7SmL}Z*4z@SUUmFR%N#DNBmTqsP9#{SbAZ&F=J%2CEB(hvBZyW_} zjB%pwC*rIKHh1|YK^EH(Fu6++y zIIQPOzz>@F1g7!|#xz1nrXsutc4bY}PB2=fK70g|KnN#c0l+Szo#7MIADQCr6Qgs+mxDW=!$jvt^|)r%;>eeV={d^iCUsiqOo zrUKC!8OkJDNKz@G%eaZ-FhPtO+HeS0lS^_v%O*1d^n&Gm*ME@?kX2YE`r{-`;f?y^ z9HJZ@tPSw3QUtP&2GGwUs}-ar6V*$Lm?j%@4iw5%OFtK&{I(4zPfQjg#0``*NpP=y z-kBpyPiVVmX0m9NkJmRK zp||w{_Cc0*DiAs092`$c6;$LCVH8>$Du_XrK0K)FvlO6FI4!#^d>emZGZeYwM0aBR zO<*q|3|CBc1ENK$!Ww||hKUi5SF68%?;YHRoO85O_(6{37PrQEs-3l@GzP{)M=_At zFSoZxv9uiKiP5V&3zccdn&{2Q-=)<;F;i55_A165qO@2d`S2-()=+?rmj`n{&zLb3 zS40l(bf#Q{+RBym$lC5yB4jB$Q&AAP?v8SD?{@$J+%XJT&^GIfNs|#hwv>l^N{J8> zV)<*-{%q{bwQz@m23!(3ngxM;R<44uc`HXHV@R+xs!N--HSxXV9r~fKtnZ`}i83z` z7iL=-|5s&*i-Gi2A$!+kRO8S@CM@b|V7c)3fdpGEa+!QN&b$$BBx!iGL?af{@U?Hp zFNA9h97$R-E(cV9i`}{Kj-oJkS>>Jn1}gfv1c0Sd2BKu`F5kzEuQZv!_O!LGIHpkF zNTjVX`Vg9_;^@k#qjbf46^&th!H5P3Av7Xk(j(08%9;{aFX~ax)17m2Nc^5(jZze^ z0$w39FJgjrXK890jbH{-kZKZI-h1c^X&bShn#T|bd+O-FnLTeBw#2xzvO;{o`qC1P zqMLu!{adMj9|bx*z11yg>=82fA;{nR4pNkGqvsKsTX~>^xIG52nHdPe zZQ%E%KVd_u`=4!0M>sgn5J@3zYc{kgYPrXuDi~bKUv|qK^t=GoSxi@&*IoLv zi1xsHxu>h&srY2vpBrix2K#Tv140yuZ5xDSk zue?2w>IZmNyggzpjn_#fQSV21%LrQ4FaCI<^WMms#H@!5b;mT2p?2q-yocFt$a|d6 zQxCmULw$y_r;%NO`x^sDM}K#bs6>4fd_5F!SqNod$8BzFRJ9gZc$pVty@*O7n>h)k zCadkTLTcLy)VQbnHMu!GQx4B|cth};jV?wXGI(jGSMskjcn=I$90?M64;6zB-x}+1 zyP~pg&nx~2B^awirNw9#x@$rWTRbr}+7s?Q=Cy{*57_x_e24&umjy1d%6G5{hp>%2 z@+JH3B$Qq}sgb3W{Y;5Cr;?@>l&qSA@!^B(4s;mMkO`5a${i)Xi zAIZWsv!e1^?;Vuj{@Jny1~uxNtaq7<_m1^55E@6IY5i5T*0I|~+Nztz!$&VVYs+l* zC;EdX#aX?Kui34#3!eCNIBsYh&onIGdxndymmH^Ewm1+xeMm9(mNf-Wy$Ro!q_Dok zFv1K|LJRLt2+_9NdrEUYpZ{$yNL#!5A64|V^-J7w4##dQC8L?_=Kg2r7u_8Q($Q=Z{ zUh&~Pd@&O;4@7h8A$W5z?m%qW12G18K)91_nf;d0OAgW@U6nUgrt@q~yA)r!d%Hj6 zk}2Lg3*GV`l0fc~Tu862i*UG|CcN71UZTsoD%F7da~V~nqQ0S>ZK8)&L2C|<5_o9n zLOY`U@v|cJTl{|nd>2dI`RF_NnJ|~;4;NdrNpP#d1X*MN1_sUGgtOb>)?yyVdXC!a1g}>F?h;`97sWfdhFto)2Fx zgBkSKVpGPuPmmGX8t(sF(eW?&78=ow%Ig0YnWe@1e?ZyqPvN9O)F2>{KR`ez{tI0I zcE9NjO$@9XoLxEAE|&ljHsS#SYlX%~dYTfgMlH`lI3b9zmDMt}^6;`8waGM9m2>$? zjKY#tPnF-vd4EygJ*u`2Uq5fhojV<}A2}c0GaWA+^$xqN?bN|QzI&7u<(3tn7?B`> zfNXtDg>@MbL&TnlYpD(e0+YG_74Dw_5yY-Fu0k9nwR~tJAcSO4AvXiD&xY$vSsz$h zcqr$Q!mawTaxe^JDAMkw;vB1}+-vzW2|f?z3xEt6APR-_DgeFz8Qe-lK0xB?B+Au> z`ZbHGD8|GIy6shLA@cqXfuu(k#4rSV97!UQ^K8q&jCR04zC4ca*T>;W;>82NYN0SR z@WKh7=*I|;NyT#!PP#T`Y5fE4x&s;6U_}&QK_%l@EI>tF{#PCwp-Fh&t#zX_~ z$9@8aUNwG!pAkGgSn}EM$hg4KzW^u07Dl(_SB^H_G}yy^xtFCQ$ur9s$HJQ{ryEhy zPYiKSdxFmw3Kp5n?XP=^jUocG&ENeN!G|J%7`RO=a<{%KkOGF{5r7P*8~|2;R*03l z6Nh8TEMOnn;>H(>?UD=)7g#Px3=t3ebDbFO6rLq8w4YuES%GRs4jGWTk_aEWh4j$z z*hl8++vZVF(g0;dMk39t4hD5BF<|6Kz(O?qs!iA#9MuQO)taFf!Mj@WOCf-QRO=N~ z-~bPWctD4;>hBLbq9$hC>X38{$KA*+DcUGM12$fP|xj+W8h{pwE?S@|_%C8x^FD zD5af<=-{g!1G>J?cMWjkrlX3*^M53fJa!Tdv}*(Nfc2;TY&20FTOy&tHi=zx600mG{O{tKKk7fOzZv-tZH9MWAK zse52_tX}JxFhnlWzIrJ!=FauLlQAO$F(ZP=+b1HvP)+}K+V>f~FnA=Qffgu`ILH2D zK{sDMG6adKTS9<5_vJTc>gQrVir}MH%@Ag?*X0E4s-OQcXg>@ZmweOqNDo<@@ z4-qy^Q*r4uTcb)4?n7E}VQ}Hw=kg1Ioz&WO5HZ20@wv|(&P7g(u!_7&uTraUcS(WV z#w^e%uY;_P(#%9+QjxKamSY{Ei#KnBo#kU@_u+27isk)s;%zr>F;li%(RbVhhNjLJ zcwTvR=^(Fw=e^PWAy&MQKPPlzHiGvdIaN|Vcp0J>n0?B_dgNJ-x`nhh)iJHUSgjwP zCW$*mNQcc#IFt469T$XCwENWLTwHsRz6UIsD(A8#)8e)sq|%Nbh#uek=u|I2dvy%| zD@Fj(sAb%t=pwi@8tuUkQ|5)i9LJiw<2#I8&#Z|Nix823xMV($G6egRg|fxaBe{f8 zu5Yu$m;I;kPEZ|ZX836eUB*uIo{q--9@g{D@IDcQ&knBWfipp&Irh$3nV;FKO&L&F z^zpX^qVkmB{$cuX9*!Lx$}|o4vK(oN>H-rH^E9ekN6n@prNn#bd~!3}m)7uhevd)g z<$=@c{EhEH=ZBrearVYJ8yZ7){W(aHm}JR;TyH_kenKjYKXSIkxq+Zp41Tk2C|V=X z=CAIYU84q1?sIA&YWYmflgO8P|CLNh-)3+ZGAPcRRtNL2N3Q*?-RYBKek0%|vJw|p zY8((Hj|rQc>KZc|S2kRuGAp*s^{)rsOWNqq)~3d2@w2gl?uw;xYP;?Ifg5Kg;d0?a z+agxt8wzZCrv}o7E$?#McAKXAR|Gg=MQ2t%aH7u12w@!qN86L3J@}ol@)8I-?_MI# zG+E{{a0!Z}bjd^0Fuz-<4CWUx6k{c+2|KyMXantlpaPFR{QM_kS@>PkCVV$MFIBWN zIfG_OVqlp z;J~((KD^71*Nd%xxrR$!7g}Fs*Y86*A0wHcGvU&D!X`C_?ytDsq^$s5|6J6t)ZehG z`-|pHGxFw!fva(M{JN!m`|r4^rkLqnA7!X1w$vz{%b!s%+eJQm%DQnviDufXG_&bm zy`mnu{5JAQ0N{);V>~*#F?JMET^(Yijc8sfdta^XP9PnXsqE~Tc;gg0@U!->F8h1! zZ#K+f3oF9%BL?O7`5VAKzlX&c=RRZx%zdoA@8vl_OE)GYQ8_W2%WnD^jq#L}?O zU=CmKPZtltfsitR^efG6!PCLy1i5h64e`Z7P%zqLRt?EBryoZEW$9Smk2yT#NX0Sv zBJjl$b*D^>eLHvuda~|{{bG^O)J%3x^mC8)A zcSzaI`)E}$0`K2Jn`!>p{{pHFML#$#q{Yn$mU^s@4a|TL9t&2*_FxAU_SN%`KVN1H z^U`^I(79R3=Pb!2tdL)m45aD0!Iy&u#l6ePTl;6_@)iJ{S#*EM^XOYQ!x^=i%?}37 z0oaPQIk$+~q9p6tknpK( z8$OenC$UuTy~Qu(^D0DXp$;R7@k~ehcgHI47j)0G%(B;=_6QOk77EgSGk%gtb2e>-&Klg>T-I%=<{-E7$>jk81X@$X)v`9nR>K-u(U`CwjZXNpnoE0&BHh>=gW+3IG~$W7jqQ$R+(Pb! z*x*xH-?n9#W_#2^{XC}bRR|sZH+|e9@A?VyfuECFf5t6PWAHuxUW4`a1YxIQo&7?vDRQtuTx(I(@6F5W_i% zNOYznwVbUgfP26pqWZJDuTUEri&b@1852lSyEQ_$v{y`V735ugygC!QhMuIJ!L!2) z;)LrU!tOz@*4iI{XhPcJLb`#6JF-{fNmZU;C#1K3ngiZa&aFc;g#?sgGD=BCdkSPq1 zfxO0v?sBdpZw2Wd`p>IrJR&-%=7nDyR-P^tJvFo0M$vYqEF$#Hdh=E7)*Y%4>*6&c zj*?R-n!0}1MJ%W?%}_pbT*o>1;RCoA3OdY zmpaS9F8hwIN^P}XcbU}VMp0xtD_fC7fAdU}q(Z)RA1?k7cq}}XxK|J@bqOTcY7OgN zlB`Bp3XAUBWM9Q*IyIWBO!%JoP=rKx|#_a!r=9Q@orJ zAHC(y?U{O59x|L0OSVai;)RI1tz{ZSkM%pYQ*myN-R2Tz{CtHitURRrIZLR`-b^QayrDaEp*LK)>`*djN0EPxgM05Yr0`hu zMwUkHS{o8m0EEb@3=W#Q0l`WxqY|^-|~Hfa(So5*o48Y^=|xjiu=F z$#wElwszj~t4~8LKX6Q+IFGHyOYy|~`jW6xACs47>4V1E_YjqByC_?*gdK@)`dL+~ zo<;r_l0;gD7FZ}Q!v)HwhMKrF8hOqjiLNP7LqNLp9llftKB;dzEz zwrx5t<+9WE0a-G3@murh`b#XsU2A)zTEiPZWY^ZRmz!;b?r5$}T<)D(bX@Ry$Ns_j zsMfz`3|!J2ziB2%29TAuJ`Y@hN9vP|$ZG_RX4~A|tG;T~S22`+uIu(6aJ8hRf?xS{ zCX`OjgsyZS7l3ta&)D6huFj3Ak^Ivc=c%R4HwdVUW|OP`*OjUxJhHtxzNTG_KJa3i z)KMLIR7L-ablN|BeTl8PkgPz;Bg@5KT_?$MdkHuLcE-E{ZnsnqV6hnB=55A3K#9zMEpDx9PWo5{DsOF27i#MiGX%%B{zIcfB$ zDoki!He6>9S@rRL?yQ8rcdq`yX&97>GgQ%12G+4ADBHXLB#T6ki+;gVuNS~wNSmORYO3gh;uBQn_5>Jn0vMjCEuo{Q5-%N?O z#z_{P%jQ~pH~$dUDU5xCdNk<6*T1!#m z9mw=G_5bx}!P{)7Wp*O9tPgjXfp{~%Myyo-nnr003LDp8R|oO#vTs3FBU}9Vh_X4C zjCC5aukPmWPyJNqne6q6on6%>17^F=eLI#6ZKM zjI_&NFE{Ei(Pt zezbqr9FJ8yb&-_Ve~P8wSXC*xQkF*}M@R#`WlAM~tSqbCkeq|g>N+0g3yb#Pm;uH4 zR+bVKLvk+yP~$>&YjV;9^}^{j@8NYXE!7Wg)%<-Kmw}Kvg0&yHkC=Te&e~(kgJJPu- z6zs)?pGo@8<-TX?EV#-`Lt`w4EkN6H^Cj!yc5F-o_X(27Z}!?8vds@zx+70dVFJ55 zMu=TP%S+yE_6PA*2f@9F35ZJ^AozfMLS<>Yt6|#}d=r;$uwrE7_my^?iZ5wF%%s|@ z;TbmN2J7~Zn$fj)B{kcKvi-G4weiDCB+$HJC3o6_)g~=98-aWM3b>9^pZ{)}HP-oh z(6&$lgaFI6{7tXI4BH)CA}!R)L8WE3zvO3%R?p0n$PAkFxXXg9?Eco)e~g1OUT%V3 zO<%t>7WCgUzB;U;&aA^y1*zy?;yraP7Ez&1+|=7A+h53-1+`{*^per49IS_=+#%bl z7`=)AF4fE6o~`lG0`Lx_Wi(1Q)gpz>sE0$FnX}(r3~s3P<>w8} z@?n}@MoJW4#nn2jFFy*5gv7L$-mib6B>mh_x#KjMa(|gR)k#J=0|W0K{?~UxHob<0hI0}s z!#Mv{TpLQ06pK6Sjb}Z7I^jpjOa!m6Cw%Ueg0o zqEt&P3wmNY9>5gt2#Z7VdB*Z|atd~( z%Mndc-`G-)f41MYxdqDVn-b3N3SUK1NLjo~XO+-5?BS>-6MZiu=h)kI>*T^&s!A&t z;V0%`K>t8eBuU@D*b$pRv=xU2G8ITGh!?c;3WZv{0Q2HM7`Q(CPCyR-2+TOGPryPb zLp3;Ga>}*whrC~vMV?TWGBM%a68&W?^Eb@C8(Um;Z?{>P*(5H7U&<5CI|<-{a{XO~ z_xRo%_I0wxd1+p5C}#5*@XR2O@n%l{uv`P5Jqtv-A*!w|TgqHaJKYIy!ET@RC6+uf znp$^Efu-0swH~w=lSGLtZ+wL%q~9pmc=fZNl1=LFEQlpE@$aTuHQHhWEcwIMB9ld4 zvB=NDd-H^rA77@t1ITHnxd{K0#RI*FD#*G6jV-pgreD#zQo@#6>rcZrkNI@pKH-m^ zc8r1@a!OKGZKa-GL${|#{Wm0Qo5YZwqn=kL09yFnXZiAkh)6c1)9`}T?BC|4F^8R! zrVeW`Sf`cIdr?ba0)3EiArU=xl%mJKPEhIg-C9|?MJJ1F-o0qA9R`K<&AgTp=hA4W zEdM6NK^KEAw1<)8<`SX+sDo_jc}|Nh?^uDm6bhCiTy%Pu;PARE*@YF%M4|kWQJ}9j zz|`G{sprpdb~q2qoQmEx(+g8-6ELWBhX^&KZjrPFbneMCbG4K7jKH|U%o!`LL$m7e zF`f@t4Vxp>AI8Va(1B3ZjI1D!^X)ySIk4e2iPv0vE3lFh*Clro&_(IeXDG-4)W52N z_ssVQhzp^Em?g@$@4$J#g0!b)c93+hz?(aEUEx?=kRmyAQd6~Bwy#aXrnnC|J5^~| zwCcRF%~?g6yr*ee$~bZqU#*#Swj|y;#0JSy$ynT8EC4^^Gfdig>^7)-R`bI<14rTCDA!RoW3u7mRk^=9!^qp#O~B zj?8azAO^RrQvQShn(b5TSU~5hY@AhK(r~JhT(3-O^l%hOeSW*C1hRjykD>-+ME2jP zT>|Y{SmFtElm&R|d;5IBUo5Ibc3Xk#(7Qt~cBG-)24Okx!YFutm_&X+2TB z5Na3CZmV-8sOp21dM<&|YV`DUO^ddJkl#UXyb@Qk9k*?azFEf5Xy|gF8($T6VWbWJ z(q0st>M)Cdp!jo4%z`|kV6W0YP@813I0g2W5+}1U4z?O^2mw=pZ_)V-;B@b|ARK12 zh*{;1M*<|loMnd-9TlQ9D zUWx3Pe65T!vZ7>$q7sQBBV=cljL3?5&b{vM_jBuc{&>#IeZB7MocH;h&pzjT@9{nG zBjY^#m5~EJdRO-bk#(`AzCX@(;SPt&cE1Hy`cn3aMW6JE!vnNWZLWyg4%@K@2j9N$ z>F)S_*Le-ss7=ZH64oLUL+FFggv)+5UcY|J-nrc|#5*17q>n4vaBCJJ^=;z8C1DDE7`0Z6VCNM3y1e=r{fqNWN^k=rO^n8rALT7t!LnP5YeI3$mH?GnFFeMFS(iH2*qb218#k>fU$_4<}k*e$s>eA9vEbru|QD69Ig zl!po5fb@&&(@TG^w=r5Gdx_(kvd7j+;_FAkwYBtBy3DRI_hi+5$|Ht&Z#3uodEJ(= z9~Scq?5d_V>~5%wepDl3a&INBIcmBDE9`zKtMTNOqP87oMKSJ%(ojTUNXGSdA6UD3 zr5#k2FH;O(HNIy!bVcUVL9_FP%7l@qjaOa0TL$XRVdU1`6l&?xrq55@A*Ro?z z%lg}B{RM5l2UWg3d9og?M=x3;)IM^)TO8e34^!>z#{X=x5WaeS_y#?K>q+zt{ zgEG_Zt6DOu`cavjlh`#BN+z_#~Hm!7y*vbfN4v1cy&>JOgRb>CAOfR$6mHOt z5^}{7b#%%KU7}BpJ>}el@bTV}cR38>dGCt3G<$jzGdt#QT;x3neoHJ~YR4}}R5kwfM$1-JROPcLp?K?S`Um~xOw%12ZN?8? z6t`Ty-1_Of#^u&=4W4;^X_0)yDSFy2>1@uiSG~ATP1Y8 zbE@-_D4lUF^*3$0cQ>!KBPDv!n=-rnR=(#ImQ^e+tSp{4XB;GLi{H~zM8CxLc{GG? zVz6<1pN7bUiauxF;D3&ZTpI;YVn z(;?gb#F%TZ(=U4US-jeN8?z@C?b~A)rk1Z?cs?TmcH!|g?=*ZjD{8j0CsvlS!CRT$ zc#z}9DA{V&%q-ZN-9p}{0Z$I`kFx$VF)nN-DAYN=Pg2phAotRx=4vMKEe*92gx#xy zpaCJ-O%8V1%BNlHO%?l!t;!AhnUpnf>ofMl_vf+PSHBq3W7kkvkI6q1zMMY0X+OI) z$A)k(m913is2_+o&2tUE;4^~ds&}KUZ9*?A2m15mTOzHb*2Ray;69B4PV{{mLI1r^ zqrS$+q8=CAr@kAxB9@m???7->ukM+pY>y}LD)9bY6;Pko{>h!t*)3SzkHlpATIKDpZ z1dgxYEsyii6i+h)_b3x?WIK;))ijoMwVT!k^M$-y6}#n=vvuT@6cU=UENaGX|;|6)+3($ z6Z(bcWXX55d7otapDrix6OgAhEG{FOu!@RW z15Z*q?&;{c@7EoNZf5WCHpcGBXf;-S{8W%HSdnWi;_SR>PBuBD7n{ADO@Bz+Rlvu+ z@mP7(-K8q!>&$(q5ca5H>)@JRST`1xO-elFc16*0ojQ$ig%q(VR$qG~wxVS5cM(!> zeEkzyb^CqF$z~QtU9w2?s#IIVEp054GLFqdS5@z&ggOn9MiQysGHLH2pQ&yvF|E_x z{%k)!KlFK$#Cs&t#JAdH;PnkInUeN4lgB!7GPD8u=*u_@1?5r|*`LBT`{0t}NbGMw zL99fR+k%boG8w^V<@nBNx51%fauDFpC#Np(75x94k-**;_7szhda>w0guQ!d-&o7! zy{DbUh4Rq>P3#H5^^cl5mrxvyOz{;o$%#Y|E=G(jO$ z1I#Ko4a?Ef@txlFpM*a-Htv6P`j92mSi0vy4gNA_a5z6+e3qOW{Ioc;sJ{d&SHl3C zo!!S(iPC87c7;dX9A%pWqGbZ7Wr9TpYsB%uIdi3vNUU*Qh)CUIlo5e%Dt z!lNcOi=18@SAjeDmZi{wU&g|ZAz17~D}m^40o$$@^9AB{yOpPLr>N&%Ji}Tc>ToW* z{m}JNWHHs}xWs_?#DKT)bmeKf+OS@}0ft4H%&`Ko2ilF?F`Zh;uMrvWdb5$G`FUU2 z*d6w0=JR#((L&$cbxQV2a1!>@m7Y<=S`}R)ug>U_?>wA(xyUQ|d(||cfLSq%xhE`m zd#z5kh(>7*9+S3A(&?m;d3KfNnRDR7`C?X%_2{S9qsPh9%d1SXTXyWfy3MeUB|Q0g zrQE$npyX?xmetkquI>y(s_}L}-Hm?V0?yZ;%hX{z*B`hr_&r+bkG~||9m%ztaA3le z{HuOPr}=I8(2eJxKK`1|r%|1`nNh>6z<|e1``uyQ$&qfS?OD>6>g`HJUJI#I=1%rO zqtB|o*ls}~6I8enPnW` z*dUKFdGZBw<4U%)&Yo4erc8zej~DY5&NG8q*VOC=?TEErPHH~+<&Nm+-Z=NMKv$+m z$XU87FrA9r_bJn&mTPu$p{A-rDI1Spq+C;VwzzF_>DA6X5!UyY{7bT3a2zIL=_W4U zcV+!)Kt9gO5Sk;C|Kco{JE!-Lrtmi(FGSoG{pN!ZrwHrxYM4DUx%sf^Uf2QcnK}(bm7VO3PT5~16jLYI?|d#5?V(r96MZ7(Y$zf9;IX(`r32rbk#gZ(j56 zWd!5;TFWc%gCxq7N}Cqq%i$l1IsXuax*1cVFCu{zfVD6T2K5TVMY)~+e@|92L%Jex zT)MxGR~kNF)yadyU^9@X2wWJ^W*j1CI59CDvSZt@nv)B-lOe07^MSX-LedG1nj3|O^=WKDhi74+w*Z9VkDd*`sx zK>7DuVfo@AHT5P{X3n^B zFagAQi-<#O3N%vLx}GSAqr(KS&A4M!Y1N7sPi? zzzWYkZ-6jX5q;pNye;u@APu2?I&ZJY0~WD%Uw-yxvkkqQhAvyg4Pj>Gq1U$@-8Ix` zQiK#`j0jFov1n*^k@aoPn7c7Jrs8(MaXoIZv6pi7%$&mKRAv{_Rgz?Q)j`T4{LMz@ zveHEnwOe@SHpdYwjucrO@K+8F2t!6b`N?-h|kew+`pCdj=cL6;z>l}`W-$~ zs-ZTGygYVgJZ^t4<-{#AqDw0TzBISFS#C+S{@k{NN8!)m&pqJQ!1KMtd0#9yCXPFu zNlp7(61fT&(P?8Aclpe#Mct9xrc}5@tdB>O=NS0t^@K00eGs6*W__Z@lFaUPeH8y;T@uale%PYMdj^PWidKXp_hf8-Z)m|3k zsN$s7<62?+ibIie3u}%h-gmjcIANz!MTI7vSeLCZA`*-6VMJLSx2bS)1foIJ&Q4v# zF)9(ycif(dT-oEY!JX{bevhPsSh$+f3OhYb{v{Tk88a6abM7m49E!`#w&!AFRnLET zeEI1)n#=l$kLXl8$zldBQ8`@F(SML1HR8b9qDvozd!Dl=m1BR=&5FH?$1e7cOLc;$ zdN=D`g&;Y5ZXE^UFLALKVm~?~^w^Wd$ee{@5*71iEs2&b6Adn(7ta3{c{{+4y{p_d z_6NJ+WLBK6^Muf4O|^{XBb8fP4`ay*s$dY7U5^(yo$ro$xOAxc>GKb8e@6=U&O19O>%A;0Ww&Zfw^snK zF?OTqdHt~Ojy*q5=9du#E$w&?#8P4vRj-Dsx^|-M#Y^|8Z!z#mJCwA3d1sVyFrdq( z{#e*;t0XHjCz9$;$tImET-sIsQn>*8&*?F{@!YN#ijGDrD0W1=G<3TM2@Qt zW180Y13xb*Z&iPZ=Z>mr{vf=oUG6(o*)I4#cjp?lnY#0UYcD5(-#~V@eq&HSH~3D} z3bPUPsd%zvG;KEE*5&ta9tbGLFn;qrD_?dc=;J}z^pu6m8&>|x!?(XID(meS0)j*h zuLjY{_EohhP7X(AUA7-4s&i;hT0pd!>e+AhSFK!&cHf%bEA;m0qu%hnT_5*-6KpWv z>%0^vXjBS&zsf;(Z%?mu{@|tg)jlY}tTYj*aQ-QHPT)C$S33+UfbAM!-Bh~)>i zT#S8P?%%zy*}QtM@tH@(H`wrIci*`CF6aG;m1~R^HzJt1y{p~1bmpE|sF(<;oVgx+ zK4{z_r3~Ne_5OoZPjm58OC(!w@?SBH^S6h8oZmHKg|=}XhpMg*c7Cf!F|g;Eq&aAR zwE6qp_1vpg&vf~a0I4%Qa>3 zrExt2m0I4wKLIJe{Fjv$(^})-ymy*=`7Pr!(jNfH)eg@rELb0JQ|ov zhFEIZ*|ID6@zUx8mCy$Myk+BvQP$wR&iW5LI^K#2N9+!Ip}vXTa-}bUFIU+uC-enx zkG$2TzK18t=KHT)mHld{d5{EZ$;nC6z>coF?+A|7$HO69x! z+NNzGvE+5n`V-P+qbE>y5Yy1QI|32&Gwb4~!Kp8Q3KuS4A8LMLNvjYf{Mmv@OOD*O zk?o=1;U#IiAIy`FO*e|SH7AGDf_5&x`d&>_o;};*cJt}Q>lD+Y^^HUZ{x+PK*iGEa z2Hl0?#svS&?HlBJ+#OYU0ZC@Cj+d2sag`WIaMfjt4r7)gZABXNSP^8YF8YnMfAizmLPn<^^+-6fm|X>Rl#239f5Zd?V1q_y2EpV z9r;GE5i%#S64MP9yVxerkm_7G|fC}A2M<(JyS%qwIz`E zdOIXED1SQ8c{+R3fcz-XIC$q*Fk1mI5lcUxq9E|9DPJM zTYHtpS4s4ZwLaeK|8CT*O6XYax@$3|vr`#ZVRQAHn7mYuU30+Tw-=XoqwRZd5e(Oi zCs;FD*l&^0Gv-NDq*tC5`TFvX*CWP8L|cD=@?LZdT=KWf|errk|HhW;$Z<+|KgWd(Qmu0=*-g6Q@e`~ze5>s|| z;LH+z!{DfhyiY>^l-A0qcJCuf*`G;rpK=tf+kz)jl8nqeOU0O%dMAbk`fu+dq|IN9 z(lmG7CbiXiLABAX%7~wIP`ETBowqg`8dXoyemvWO7XC~`k2IaAeyf6i$45LZq#oD^HK ztbU(f>q6EK|3{XsGp!}w0bd+PZ+~tJiw=0kKVk7pdw8Yeu&eJKUDfD5mdYi_2k%%c=3!0x$obOWB!dC|7N`9M3p1{q9%Y)PX-10x=i1 zS-QVXYUpV>{g&y*!EFBa+O*o6v^nbgzh3T2Ci1O^&wg&?O3!5|Hxb{@{kWZ!>kN+y zd*3HD)E;{Gh5x;Q-PZ3KpRORjX}g;^Pa5nr6<9J|enG3N+5!<9-d*yN53t{|o*wPt z{VnkE77wo{Nz>+++p75`yH7My2)q$1J92%@o+0CuYOJ{~%T4WP>SAv!^-s0W^(cRB zy7yglxIauV__c-%SJ-cIuG=2GT~uzZ0ac&GL?s@57IqmQSM^+bKr^bb=+(Zf^yNF3 zeuehaJV7bj(=k`A84dLPtPOS*zYWIBdA)0x8o8&r)X#bN{a*dPUCmefT`JY+=ZGs! zmA2~!T`fMrhlCxsa1vD{YJdI;<9+^S-6kuw?p8R9XGgv$C7i~q*SeYNG1sjj3Q1dg zEP3nXjQVLmb^dPlv%K|x^3P{ThyKtAHU4q7>nP-*8&*_EZJ=wRhLSP2kUdt3~6C z)>qyd8NyLndmHMxp#4#5v93&I%*SyOaa2BX=DNY>2fi6i-SbdgfJscYm6!)j`ghAh z?M}ugR|2zznnTR(iUP+|OZD}#-&vnoi(khjaF*edl)_mT?oU|N2q$J*$43x`yVn?B_C*(|Sd0{F~wn zKB0CQ4HGX*Iy6i)x0_RU4ZI4tRBq0`%6iRnSIL8|W`Ka<>A--&^Rd~eKOPN#I%YM< zyAap&;v~iYIGoK$t2X`pEVq};g7WEGV}#AMCl1cuT_0cDn=Uy$Q@-X#29r%g# z(c3f3Ec`p9UX_8r{bdR699o44id}WkiJR@Y%YAh!Y|J#|``Uw*Paiy>D(rL5E(q?E z&)rDh_t+|GKU=NiX!G=%gk@a)qwJf`$xj2s+I}@%b-}GbG=!aoHTmE0*rr@z-B?dy zH9VTai>sBXBDrH{WlAb>v%HqaT~RLE)G`LB1?H$p>C_bFf8mIc1=#PhCx==XV&9C{hm5fin!%QQY%KJ-X##|&i_^^BY)ZU+{i8Wo z!=;|yEVGzHr}#5xDuD;P)hik{Vpm%IYs~|f&2XreoaQX(2VG{RuS63QP_%UG3TVC{ zxkTC^%jd;dUglEC23{Ec^G^N)$BXAR@>%M#ZH9OdFDgY#HbcZ&xJg9-n;W}%x!-vXDMd2VDDyZR zS2E`Nafr)8_B>HH?kVMcnvUQOHXx%i5Vv*XW6RZET}{tW)rLm4~MyNpIZiC2JZZ+AKCu7@)=HnTsCO((7Qr0ihvrjkH8DkeRuy4Ws{Fk(k>?77 zDor_a-533y-LV+O);u-S5DBw|T^OB@=-a%n-ar?DM@CFWQ7av`%&zr`UG|W6$G|4B zPCP%3fdadEAVT8WpyZMtK6a??i-Ni!SE}CqF4#egq&aQ&$ZRS#wf@bq% zcP-U-zX{j$Gz-ndmmRAn5QDS5T7o44CuZ|S$0HIJyAi(WUAOA$aLny_@4ryZuM?&uj(lHN z!?Ek&iFnRxzpJZyJ*XmJEN@3|e`iW3S5>KDYH9R!>g`-v$1VS(-cssf#y{a-f30md zsk91)B=4WC^ddRr;km9gtRyygQ0V91Zo3{|5k0Q$cu>^YakcY|AZM~nWk_OM-Q^F1 z^ZWHfne;}^6t}&qep)aKxMW!bwl+(CpBWx{SL}kA*7ht2(*Q3nux@{>u|Sf-G`{om z>HUtTyWeucEM!E7eo4?W{XCo0+^S_$PA8i^A7^zz(26OWJ8Ao>1pmFUvJ&Hx_skq? ztr4D|9%yGb|L~AG!#GZTpD`i9P_Cw((Ncp?X6n<_QK1$mZ_tW`&4|X<+Y4Qf&m2u? zGhIl#c7(WS($$LVdCAToh|bXB{PUynU(!8K7}vwjx3o#|nTyDTJMxz=IsuG`Xt z3bJhq{)u{fv^{dWvqP2*`z&rq4s^IXf@d(@n_E$aD3fvs4)SYOu-Gm2bIQl^RzFxX ze$}i0MbE!`>*aTnGwnG8vSlr-Fc z+p0&uU0|o3m|K;2J@5QBbI(S@t9J0R)a9=g{nmWF!$I06_dfBA?JvBmIaCGG}kr@G|pPf4KgA{dvfbI?}pwfA!yUZ~MHnQ?+^LWwqAN1?cX#x@TQh zHfC<#0{d=w?Ex<2I$WMt4(5ke7e5Du^VU0e%>Rn-E2=y?x;QoQ`}OT_OG}lt8}ENd zi_OiaTp%3}o*G1y%O>6LxX2WYcd(Lv;iy0j@Ab0$W5dL_0!r1mvZHVZ;`Bdfbu~_5 zQNgId^I?3LPss;JTMe!b2VV?h5h`JF%rF?cFjS%jzsQ2D>rvh#-viLyQ!p4E@|p5~ zOYYe_LmCe(7NWNJhTD#x?BRX3oULfx$LT!(dDp z9g1H;Y3guZY$SK>>TpJ^FWu0DI-ChLPI+b8H(p8@tdJ1~1OIt{qAd16v{&F~P^fq# zf-pJ`7|iq{3?=ISVDgiY;T1S5ig?f!Ks*KuveSaoLZq5-0;u5%oD4_h$#hD|!F+zWIv4|iyC$!Cmw>Scy1IBRxGb|W* zS9>I00L9D_?`6XgfEofQOsY<<$5dOi;j}1dBzaKlLWjC&OJH{kY7PLE-~%o&bu94g81MNQix|?@ zL*u#l+_DXTaGybZvSH9yd~u8qZ2*=o_z(U***nn)V81+&JuvaZ6UX=kJ+uuuVnykk z0rcHJ(9ES{Xy4@jC2-!d-n?Hy4ue?&ePagQg{|XmG5T=kbI8Q{%~NKb1PHnZLK)LK zLZ`7I;a^y+(6T<97==xIbLOTKP~;7uNEQr1LrJh9y=p9aC>0wUpa1U+TYP6$#_ALd zMgaP9WAtMoNA;tH1o5ybphN?-Mz;%+B>jPLrGRlUJG`WT;D&HI=z{^A8I?LW4M6G) zrAO9Ep?rwMkH8_90eGgs-$|p60f}OUq732msJ?}UpzmFA=#&whTF}nN=Wo98=O$e? zY=Mtmhrwtu_=Y5qoj6bf;<{!(d<-Px16skHKUyIu)d)@x*%-meQBY&ujXU*#kRMP6 zCbTRU3FSqh!ouQ5Vu09(z@N@w44avUL@`3C>DV~Xz7bkmNx>8N;Py?}Dlj3Yf1AEW z;u)Ze#&8;x1?QWhR%0kGyfCm(Vgr;5@1(~140;cJ{=l{UKqo< zP&~JsO0|jsgd+f93JjhVry)EOI1378nLt_p0U(gh226CK?0tc5nu5vC+61kt$Kqrm z<3Ou)zzx7!;AB}tLg}C~6F3!$Y5*?-eHMTgg7Gosr}=RV-7-O^f+uuj7P9~<1*ifI zpD1fTkD1Uu6lP6a9KV-rBKW@v-XvW|}?7{Xw-34hD3PJn`c_>E2ckD(qD z>mVusE3f`xh0Ge&E6D(dH|2gFQ8|5l2aCyJ9Qb95HJ*y%8`ECz#-IsHx8Ee?g;H-|H# zRM;({vocBzgNcDDnB|0;VX(Az6jIFsJ>Mu&$;1%=i#1*N+i;~rDCBw%4%t6?Si`B? zN&)8S27!cW$n_mmFTqtD5~xWBEn+_T0q+>lhACJzVXE!f5ehD938zMdoa_Q^b0-LP zN5Q|1*@t@?I%N*0gpPjU5JRz+Xwo@SQ$E^YjjI4UU`pD{20gVzF9g2HEu38k*3Jhr z19A=hzhWW>VOhahQG+iSS5{gAt!1#lU^M@OfNwVxPD4rJr)eQeEA+T|@;0)yfLbBY z9i~Y5#?XKj@X|ah^gR8ubMFZb@CO&50nD7R>57CN=Y)raH-1ilW*3l&F(Zi28;PQZ zv>i^9LUPt<2Ck$ClDh&f9f654LtZuR7$0Vho)`BWk2Z2Zp1}t=Olz$c97B7o;dEz_ z6WpSgM>{K6gK-1V*f3P^64J8)Qc>BUBOWWP?%67kJXYlI@j0I(iBdueOt|=vrwuwq zG44@b!v|UP3&_)$@@Y@}7f%4SfI(0${I&3dYZ}O+AAn9U@tJ!k@PxK-DwOe>NZ8%m zfOJBVf8(9;aUq}8(@c z$HX>Eqp=77!QOP}uPX*vx__|!3b@dQ5H8z4vweZKv#2*bQ9S%a0n7lE%LQauqD{IWSC$>j072!$nc* zF22I^uo*ZgA5b~wT&Eh2L{URG?9m&Cv9qKjnPeah0e&(4SvKYv`qCawfuaga6iiJ6 zYh_!oDr3PI8$at9O6UNmN7+P@WL-c2Fc1N}50mO>0WOr5g3AC|JD_!-oFp%9gA911 zzr9rMAqq09_Qjn)t)BLkCcp9`SV__ihRv4HV~y&e*K|A~*zKa9c1qK%Xe&lu(B= z2$G0pTpVc35k2KUQ!#!20!;T=Ah0nb)sFEP&vzA_xNB8mdJDh@ngA!~P7nsKwBtF3 zPSN0zK>{vl*_QmB+G2rURsqXl>LF6<7~g#rZQxI529w`{goOj#3^NHRD<4B^gzzZ- znG_TiTM`O^u-rfZObcqOA9u5NLI-!@%#GOrz`PpZ1k;H*^pBxO7w`!F86o87Ce{(4 z{uHPO(@6#Fj=LRb;Sobe|Jfy0Ri~&o0#;af|ISfP-bg$(bio;&Bh3$ei&#MDUIH>> zrc<-HV`%(;paEU)d>uf@E&~f;YO+2B2|Zo~%8&M1<22Pz>b(=Mb;ccyK@F5=IKZ>(Ri1-Re zCMF;qm@iJ0&A#JqXP@FxK#Z+371u=u^6h}@-C?86;o$#0bOK88x43}mb z(Cd<^VqvXoV5c?%W(CZh``f3-(9|4!Qs}J*TG5Ty#LDJ@fR3_%D=y;QG5+Ec{C|D# zF8#dBHa6HrfsBF~2!$KR-ON4F>9WvX#JCx_X&w*&llh_TV`zmZnt7va&;2RDd>(LT zOt zI|>9mW(S`$|Lbu4bb#T?tF<^_rezSInCzeDMPs+U&QUO=J9KHQe@8kXZc@NfXtm-KsB^6)^b0Dl)w3I`Df0VifQkBoz zf{Abj05RQCX#tI8yM~U8n%**nWv~m=1z60r!PGthWcQ7L3i7;$UdVI4E4{=Gc<=!{ zVAB0fN(dEQgP%tYKa_M-^d2br5JUzhtM*icNRq4&>2q`-7Lva}Fn)%;C z)FYsZ0Q3^2#5#(m3gi?%-oIr~s)xvfz+3@OB*Y{A%kU6OAb1eS{rVVT7zn3AJsxyN z*0y&a*A@h#)AVgaFRWVNtN%X36Y4pJehY+Cq6nP20SGX>J+2kM0jERN>LP0udyi{L z?i2p|EJ8FhnFojo^8g>r>3164t@1u09Fht`Tf=g>oNNOR0En&wEDmotU+{bVJMjP@Iv8as3wL` z&=fv&+yT|3TS-U&S%sq6@IbcL5C6BF3DxU4vUXwQxOOWPZ9;e$s3jdcuAQg>(rAaF z$ygzqe9=wvwS;6SGofhJBAd3yk9)m%Oi2FEqV|`I`q_e0Fqj!g0GJ{8>oasN9Q{+I zb~vCjG=;37gKmYxsZrE(k+tH}$JF14!_S~<*O9faW{zu98wv3sUIaQV6!jWrvw*=2 zfY*R2`$RcEO9;(25>i5L0E0AArPR zC|U5tX&D^BR2mCH1~X@K6A(iRH_^%Kb|ky4J6J`eg26FiuhgKJo9N`FxRM@t53FC< zfeOLq_C#^^gWlhSbE1TZtN-FG&jN$hg6PDgB@+)(N1|yxTRC9M69lxtniZ2)O$B5X ziKaDs6DxHTOd-e(FJ|h!ISxIDL~~zo@SgNJSTjfg?lBdTG7Ei;gtMbmar2UB+yDo7 z-T;z45aL9MBp`tVZ=qp2Pm4u=0PX66bsZ)wR*(dml_8;q;%>o7kDc`v2-q4?banqN zI4x=lR#&q;m0Z9LNsWjl|R|0Lrg*rr9`7cJ|78q zcMPC`2BYB=DBe^b%QyoMhrvLMVJ1fT3n*eV5aVt1q;i-t!jJsP`g-!;>lVR_knU}` z0E)|-x4}T39;nVd(AX_>Ah&!;(6j*iIS5RT=TE2rgmo|)%N&E2UnmBUXoyD(bJ2{1 z77C6*%MpicE6PT=bFb$fE4u@OAb*3zbW4E;&_)cL8^s%AEa*H?j_#}-i(ZiV z#u?;w1B=dqjE0#Kuqx5moLKbI=gA%UqCDXHiQF(4aPSia`w0Qc)mMkP8(M z3MWdzZzTRA%AkvV!xXuo8Ak#vFiv2=S^yu8pE4UHnPLmvSS4UHmH4*k-_F&+Q_)G(890VjWbbQ{%`*Z7U> zXWKK%!vt4Y6d;*b&H*kj6<&5-`L-3T-jrb7;ZA zrGd8FHf^`1OBb5%Za=r}((c*+`Dg#w|JXgd=jd|Ryy$3a7RWuiaby{n$yG2Klwp1T! zcaM2)r2&3?wAfJlR?yN&rRt50SEnjYt6MJ@D-&V2Ua!{M#;SjlH7vK)-6Jj}8l@_! zHR4s9id^lu^@PV=~0NRPZm8s zezacl+>r@ms?wOM)v9&Rbw)h5KB-rx%4Jq5l{<=Fb#jqe+f=1AR(0Ii*x_QmI0nMT zGV3*qDk;+y%j$pVBV+`(u0LEYRXUo78YxZI%Gx1qcYCc~tp(hf)c_WjhMuQXOXti1nj~B}gw23A`G-Su*@;az#LoKj`t>cD^5b$7B@s$jf$utucR7-=eL zUgEIJiZ3n_!?5BOo@&6ztw5SroQO5tF@o3#_?0SS)p{LcW9hBwq*k?YYZ$L%hqZ*( ztrOdpqSscbs=0t*8!MK}SANEi#fe}k)r4)iTCJ^GlnE7xVi|xImKf+l9wV^@hhLOBFU*JjQVr^2{{r+u0XENK~9+xms~s4m;7h zTXPX2PI-E9>(Rq7oBoJ9-RM{hrxA><2$n|(H7#CwC0tNF0*BR#WAI}gfIJLKcQvO= zKupD3p1%aSS1gs=l(F2#noBP$RJJdnxivt|6-|He5a0^lj|PSGm@IAc@wM(K#lz^v z$zrXc)36mjePpVpS772OOuxK?=&qQoI#U#ImGSD8#Py=_Ro%hSwruS#kB-F;CAVzr zPIiCuQTUYtV^#M>KEP60k!%IYl?bE&LSyCPRKxA;CjSu|kZi?sYqz;HwanSFIR0(H+!@B^}zD z$)|PFog8)Rq0j&_WGM8d|3ZB+Lc!mAp^$&ph35{<@Qs$v4VGrf7P~b$s3m<115DnDbrsIAoRPCy7G#?F=i3Zx{(qSD z7ve5sEE@AKkUUZw%OAHHN&jQr5Er1lp7=MGOOje?7ESw~v{}-)V7$Y+ET#{#7N(Tb z8II$5DpgyxciW=kr=tbq)ZL+_*@re(k$!i)i9+CJ~prNF~%GYa_S z&_&}hpU1#xrJ?bwy2VP?5rVv{+Kd_ea$^n@D{mBC%;zij8)r4%^$l?~>l1&gG=6oj zSj{xP%CHO^6AG^ZQJ2zq^)4pXcFD+Eu_m%ktkL)y*}|ao+N4+)2)MejJ;jmI+sp`pxx zF_syy8oP$DDkE{RDRQm2R^!*slfefaf2B6-6Um_AMi$wW$tKOH9*xV$^;o*5&H5D9 zxEWj%;<^Q~OXJtcY)TH>(jmlz;gOogHyReX-pphrfsI>j7B^(pl+2a~!DfA1l1ItX z@n9oM!4NV%d|D>4NNy!cJtgA=S7HiaZ0g9*$c9d!O~s|1mSz@O*h=LM*z>PGF}DHY z=Mv(2wjkpvnYKx!4j7*{q|f7vd}COmdEyI$UcXEm$b!pnSTtkPgg1)Kku8&s2p@kI zXY7<|WgDi0wX_lH5`evqltqrf+dgBn=q4OsLD4qDbBTt)04jybtlcNJXnga$*nK$_ ztk0;hQK=9!7qy5ur( zWf8h1$t?ToAV+gJm?H znJ6?9Q)DMdZX&p697D~(%xOS=$3Cl9>}5OgZ&ATV0n&GwVlVPSr^xo? zP?n65C40sG*t|FpE1byyi$3oMfpS{ zv%-HFk++h>LfUa@Qkp_L!UkEc7657xfLhfn?!t-gSvnEsZ#@|{`05ygopL9_As!>* z98IoaI$2lk&cWJio84oY60^_ufZ@7?7-nyi{}$|MRwcUIlwZiNS)$a;U}|kb+)0Te zj>Ivf@jJ0VL}|*z=_ZLvCUJz}5Jf?je1Crs1#Xy1U_5;~X#o#D-wOjBzZf6)!Etvb zaH>cyA?{A+q>)sSn~itoVeY$)d}uHoSC-5&HFXcnK}NjS=lfv9Juu>Z{btJS5f7XF z=0Ni~WTx@#s1=k|hg9+p8W85F#B)0`_YYx_b7BJEm=Y6u=t(2QPKkm(gCLmb;zob_ zb>gA+z{q4KOc>5ONwyzgXd!Hz3{C+e&=|1tG#vhQ8ZE1}^NXW6^-#ftm zT@@wifo9GO%#s&XnB^gg2NWOV=XBIjw%;Fwjzf(E{JEbPB*dXC>^^Mvi4lz-B7WIn z*kHuSTMArT020%tbnGaLqbDjT?Pq_!sBG~l9Wrv;Oeh^y{Ww1W86WsOe*%DsF*rMa zGHmfRX4Kp$MokS0!p@`T#2CPMlzz>bkU5K&nYn5Fh78MsJ}DL6l#`D_{Fu)VHlbJz zvnZkT;AEH;VA}_cx%}H)cn08!ABEKm5VbFg!u)9i| zi%0dK)Wo6_7hQPQq6>rG>aM_rhZkK~()i&e7nT-Xc;gpc_^`~)fZg4JRUYyAJplSX z0KMFArv`e(WU9l+%M_|AvfY2Z$aY@?+YC#ZgSu%4mBV5e=lO$Z?I$}zDB|}Kb&~|7 zNkwL>Dil!SVo~w={SbINa9Uk4mzTCD%~{BjDH!yDix@bR|ARIGEGYFpNU3*T)EVrF z6qW52_3Tdk=QCM@CB&o5%Va|gy?z=kyRE9;LyF;Wau`hGV2ae1#GQYjHXGUI^Fzwt z4pVOcDQ!5UKuW&OS{Ds%%1S7W>1a0UL}#&}(jJ>t$sE`jp=4g8+>BUtm`AN+&`{F3 z(e>0+4jG~ zK;Y31DG7vjEchxwFvy*S_7haC5@H%TUFOc?8gK#dM$h8&!w`RoE9+t1=w?0Q7_OJ` z=F?DVu|z{h%-wS3sR>HsmEmQV=O)#s532dpJ4PzFnY}AWhh5lA73$t z+ph=rE1W_#2bxU=b@XY}(bLTGc}3aXqfToWqagbYV;IW%ysA=17TOG}rpZwqc8&T0 zbXp5(QkIdjHZ*^z!jW(LycX2nEL(b|0{Q4kpm=pQt$d%2dYFMC*GT5|if5tAv#9Bw zk)_^N!~GDO>+s&UGPB89>Y8Vvc>^0Pl&c=`49j>Sub=6#+^n)-8goAPRH#tS@>EyA zhE+slArVt57G_Nf2iT(hBv?*C(9b_X+gAPcuL0!~Qp;+5Mz$YU5$gE- zSRngJwy;s0($Ylg^ogf5{-n>RmzbVXOoJw4I?(47YdezbEKX%L{5TpsbK0sw zIoN0eotb}bZU{1;KSpK@npAW+iU6T;Jg^T{z~fCPWs!g3$tH`SPj|>y(Diu0#37P+ zlL=*3O|^-6z~}@~Ad=|26~c?|Fs#!;l0QYY%!{$kISgjWPmABGJQhqood6OeIYrkJ zOg#f{?~Q5vS-@nEr}5LkEj2t}_W4Pm`)=g&=Qe+f=UEF1{a3mQ=+&Q(ti%6W@w~>L zmkZQGf8~lWkE3Oy_pkc=aqPPn_2X;vVh-JAhUHTUF_(%Ydc+Gh)s%#IA%!Y6fd1_T zBcG%kiQT4+?Q<(+G6?X^;zb)byC))Heyz>6ix=59k!?J_5!`We;i z&7gn&{Ujk?Qmy0SxKF&S@t1gAVSdykpZSPh|v3>I=SSb2S3d_7$_L#?SQ->P^& zN$Dmb{1|;LL$!WG<33gEn2sH91l5|15;uPpkFN)5@yQ_be8cBY!N&I^^SpUZ%%l9i z%WP{(yv33@RO%F7W)k8pGt~;*Yy7SEm^}@$P~fe3G6$Y#eSQjD9srlOd&OB~hO?^M zN1--SFw9xHPks{)U(omh>NU1}v%`?&0^L-X{Mmg5-Kmg^fRcB7{xsMP!tvkQB;J3~ z0R3l9gp(*VDZHHwOTH#$F21f#*|feNc|zmoeEuwUJ_si7b{GbI?YKU~o>q;!>P}B1 ze*bT?cn|hSh;OqTF5~Y7Uo?Yj(zjL8N44|$mnr9m4e`HV_8p%;2fh#C^}FhW=JV8r zWAOvD9e?BVuVC>IPXE2M_&$n>g71I#J3CN-cYqjB(6 z_6H!`)1vY7K7RqM3Xt=|bK=Li9KUNaYgYWooVjp{evt%QAz9-;de3Cv!Wsnq82^9k z^EqrRV&hNFiJvt$PKozT1~cA)(@L`jB@JBobFc||9hXm z0)`F@^kI+q2&S-EulUH`iGM3&hf*2auuqDQ0%s<~M<%swK-`BK|0uXy|H9|5f`toi z7q*LE($p_^h+ja+Yx|8kjsJgx&tJ#-IM)C13yue@{u2xTl*VrI_ z*M773E$$q@!KLZf8vnJ-eM-!KBXiuKm*3(gN-w{|ODDbj-sf*jhK-OBGVcr1)hp2O zpMCyya6gPg{(&y^OwX7}#A(Tvk%yt@H|WC&#QqtXuOvQ>JR<%S*)D(nsPR8SLzQ&@ zbT}sdMMlbtSbY;#-c*WpTK^9K0RR83R()7hRT{sSGXv+2T)oU4pj=n)HlxmAgc)N} zFmbO4=}ogSa22)WYZMR|90tX&{1&iuv&^1pNf1j@w9sWL9Jzf1(;t5U6Oyb+R~>EiM6 z6!8oij*>?>#1qLQbKT;J5e?!oE2L%hWTl8FvLsh-Q&z~o6+sp!!e6639$M-Mi)yv0 zvRg$NstohIY>6IuKj!Ab*vWl#*0!CO!506i!+dRlEo<^$4jLaU$=X4NnG8u7S zL95(HYTRes&mlCQ*hS6UK@n(Nm2tRyluNTkCLHz1i1t;+M z>|pU*Ihs>~cuSOm9jW3sXoz?YDUwT~yBJ;$GY1ymIDj|J3ME9}zoij8&%sc-*53v3 zR+wV8#N+cR;sw-%QTg2$Fhjfsw;KEiuqMp%d2>D%j3TE-rNP9G1{~L=YE&?_!C!qm)ErxX469 zsK`Xb+YMbs78&4OSESwOPKI7RI$9>6vPCW zWx#X;<{jQ19mM^CSq_XC)^rbICon5i-rj$sAyI-8E5gB`M;2LB*#?IjWm*s{Oz42n z1M_<5z*yjhv8pJUHiRl#UA$ci-ypAtZV-D+5WB#)20oY@66Mf6;j%`$GI_fk7P`Vh zOOWbnA*0yT#5mwvx*4%E2Ei)CsUxur3)})7>_Qxu74TSJLV%E#*BcwKxCi|+;W z)bYJp+y|iO=DLr?{Q&*hTr^J5*&6TRFD@~_Q z*UdFT7iX}TYBJe48b74tJ-Qqo`wf5J6=&)4$=3Og*ToZbagI(uRhMUhPE)3f%bBJU z5YVk>l}SKL}I+&9%s+reV`cNy>}HjeId9MjNVk(rmw z&^2cyi=$ag^(KIk@tDQDPOIOTxZ<6sw`jXHi%eN`-ziP<~8t0BYgk z>_kLV*DrYV-(%l#NmI5C`oxpbSDliwe{rvQ?GfqoSMI9&>fJScwp_*=5;k|H%!pt6 z@T<36>#tq;xSBs5$F1D)Vak7i`TG@jajolkN81C@i8XU7_9;~Ze_7jaSoE?ZbBGIP2V(D^8bWuj%*F?q!FIXC;baYan;> zMR#QP=9Afn<{rq||6Fp;KGsKVfFh>(2r!+EJqVb_;&%XE7VifXGW|Y4KI8WQ@>skJkjvs7fG3!K zJK%A~Hv^`ycr*9E`|TCLWTxK$n8f0j027&JHQ+C7EWIbjF%5scOCDu)(KQ&$VtOZy zVdsO^J(~HH0!Fcz-g(1WO#Oy3&qn|$jHlnN%+oqN5TI*oUrJs0qKHBc&8jR9y_8E_ zx$UjI<{LlW{4~Dw$(@uOVto|> zASz`WT_Z4_6E2)?-Eaar}yfQCH3cQ6=19K|8 z;Sa?#xZ%#S@__SxXOXYW>ntiO^E<05{mx2%fz$8J&+{icr{-4`mliq;z0>llN(0W) z;(TX*e%DVs6?Qpg{ywMT@`BQ;LT{H_+V65Jp*E3~zAArzfp-Sy`Q0_@UX#53(vpn) z>BY2Hm%=Y7KdQR^mBSBqj~E!8IqrMMn#RJ|I8THkG7G%yQq z2yY2{gnhyR;XUDf;UnQwp;c%TJ{P_ajtD1&Gs1rrp+mST+z@UGKM8k)yTnK$Nfg1v zOa_xwGK~D03?%oHWYUxTfy9zH5>M_Sek8Dt1~gm_368BZpViDVL) zLLMjM$YfGTyrh_vkm+P5@slbti_9j~WDZ$OmXH->8L1_8h(TF4Hvlk6h9$zHOL{F59c?~xD4hvX3X4>?Irk#=&HoF^B^MRJLBkgMbx zxlX<(H_2^shjeO4!r2OVXTLvgXzXYeTg(ZMc@9Wonu>RvWKP&?ag* z+T&WGHeH*cRcHaNTAQQI(-vuU+DdJewpu)UUVBli*BZ4=+GcHwwpS}9-;i_UJJL`1 z$N#?%x&H!CO9KQH0000801b^IRIXA_)cF7a0QUg^02lz5(0UFUlLsIVf2YzdO-v{> z9h%XEB3WnWh%5<7Hnhh7y{fSxq`KvCy2p1N8=C0qnW8gDytv_Gh|Ao81BVszo9C>9(?OQ$;~8HbQqPyCrbW`-VG3=upi zR-ONkZ!!l~UBMgBEJUSIe`efZhAgGCs@ISJ>$eyEaxvph3&DgxJAFOvY1Uz`X*|*c z#!D|Lqw68s`GMEATW?Z;*TS?9OG~E=ufaJT4Zcn+=W$39A;cser0@x78f;VhS#I~o zl6Q*UQ`VyIZ@cp2RHoqPiEn-ZP)h>@6aWAK2mlR@B2-6njT}Lm2mt^PngIYA0GH5u z4i|r7WnpbhkOfd2Ot7ul1r~P=?(XjH?vMm$k;PpC!QI_GxO)h}-8DGDEx5b9)b3#`b?EcII$@2md;ZwFAT+?tibkAlW&9-E7T` zAodmxAaiG16MIWEOLJGF|6@ZzN&e0L`)>MQ(4qeKN$>WA5)4+iF=di({qyH;p8Df8nm@E`lh8i3ho3J#1O$-JaASNb@j+K95 z3{S>}4p7T*1Y#CK0gT0D$)K?Sju}uu%myfc|GyY06?8E`{Qo%UfP67%tp7F1)Sxw8 zowfcgC2!~WuPglp^cU!V`~3y*p9cM>;r;^ue>B2hfPX>$_qYG~|6c>8J^v?@>%T0d z|K^DQX{i6Q5dYJl|FZrapc2GY3krXb#tjAJWb@4a)eftty}IzA?7=H%ivU^5Lj7}g z7Qf=kJ4?>YO#SVI(9zX0yP<#Rw2h&5 zHE_AGsj#s_GhCh&zk3;uQC}qqRyW70lVK784eEC3NRhd?rU`1R3P~=O3Wlm^V1R#O$H4G!$jQ0>3I~N04+}#zAlvai0o(=!_}{-bU8*lH zol7skVGLKliV6|vl7Wa`SUrG*yY%>X@#2J2ehire7I{1IC0M69N-vWC< zkE5s24+Z0gEaGdqN}olavP)#Lx5kDn$NcCO6DNCmeUPgoCqFkf4w%08^QS^Xv10RN z{wIqzAr{$SsSs1eA4C^CQEm3CN$1Mge^*w3pvj^yt^lm zQlUcslI#tX8ZRr&7oX^dcvd7*B3W*|P6)KbsVLYU=VLrm#@%)}_22@ajj#Oy(+Q%{ zQQmC14{E!utPGv+{Z!FoaN&qyo}zV|E?RPOV7>5n!x)B2_*Z|+pOM`NXAE>jWh*#HcE5Mq?3-y<}x7i`QzoNyHw{m zrSg#N`d*t)Y-oRCyNoyoxr0#0Zz`%U=Gu^EIi7h!!ipq3T;8oNoRR7bZX0q9{oJZ5 z$j@L`b8d?_J7Lv4*>U<0zULp3cNi3W?JT6(99cenq6ngyB z1^)=0ZFF7Qvu}`ssWqG7KG@RoPGV7jf!cy)MO>Ritch3@S*59)g=GMd+cCfx(MA4{ zd^kT&uNC#;KPj(t4eTRZQUQxyt zNECl8xnvx5d*0Tt@-sC2T|u-db^HX>IzA1#J+x&Mj%Qhiku!|BqNwreLM8{)eCmzZ zU#I|$?wHZQ5(aIL4U48sC4)Keq7{!wYtjxXEIZI|W%Cwa4(`@1hRt z5&Epz`e1i~3nxru;xKM%G&e-}gOy1McTR}!^>?d#ktDVv^6Z9;Bo1ULU1d*LL!GJ8 z_zzs|oc?$Ls_ld{Pl2ny*HYC;BC<5_&%Z8s>u(Ezt|`brY=cjo<1yDRd&;g1&cA8{UtYsWcHrM6O;PW=jNet+I02SA}ErqP%Q|8LZ5&p1EqqZ|in3hAB zY-7a24{850?rP?H`9$Z3++Q5^xgmcAX6DvVuq*y2n0NTTTmxfDB2Wb!1`O=m*GM?K z0rxOV*^?TIKE-a(vByMklJ_QGJkbT`I^1%&&&w_qAc)D=xq$B7PbP9EPrSSUoLmhP zZJ|eZFeLKwOxG#aD>(t%4$3+LikfkwKdJngOTq9&vAd0*rso$DG@P!x(=*Z$OdcBwGR;{JL3!wuBqF(Rvsh?3LY(?)>x_q5Fx@) ziHd3hWj`<>?gvW&gU;mmAP7dK?*mo1#)+}I!=OA+Y_X{iJyX8E!56*1iWM^>EVzx5 zEpVMeBQ#<(DZ4!Z)6c zW+y(W!x8r+_+*>?=*#6X96B0JW=(w_2qHP3D;*cCxwK^2w&8!!iWM%+)!7)8Mx5Rr z7%r{gOSyfda@N`>2y(urmt(~8T*RtlV86_q743(_QNMk(m}KHM%Qh_ zmJ?_Y7nM1PiQ8MDv%sFn9Yfgq@ousOv$p^A7`e}RhCaOL+=>T8@Fr#2`fCx)ux_M! zy{-&-QS5(MWh!yJP^gS*;5coK|0j;|oeELyRrW z{IdLlDna%~D?{LyN%y0L-!xeMAYQAs*v$03u|^tc{pZg9Aw4RMIK8J<^*nqu1N~C- zPdz}!AWm5sk{`kEE%U5VOFqbY=2@AgZ}`MdEBU5i<(PkGJWok$J;JZ+)xvOixBXWy z7Q`J>B+E;3)5+ad1e0y<@z1e+pK&wGeB{4moY79Nz;?mZtbLhCeA40W48z~5K1?ZP zFBuM|PADi2Q;r7OCBxX_rG^aHlENMC-12te8ieG&%A__R;Yq&mBlqstCWVJhh0M7% zC6qoJj?90>toKaOKcIJq_)=FH$=O#s9+I!SFU$%_ArMB9xkS(g_CzFUF|9A=hjf2F zAoKN@xeRfWf$y+<_%q5<2@hrh3ICC5T!%+8k#eQ#wu^0-_2h>?=T4bW$;k|INYOn_ z4$`_#cP5GM<}lK+p|$~GPLo;F8?Y9XO&G5ZPtAXeqEkEL)3G#%a(vYK;c)2Ks%)?2 zQ)6SA6M+XA6lZpiJY04P4Y+AODz1>DQc|qx-XidRFTREoO>AZ9OMv^JEh7T(ef3QG(}lxxJ;X7EnV@K{-|so}aUX`97d!t%4g9f^RS-d=oF z)kc4{X-C<{Cfim`^R1*p36w2^_kRf^lZg8aFryWzel_-(68nJtHIgJKGaWXDL3&w^-#6SbXsGI`sQ| zM!c|M>MsoMYo6++Td5|WET8qJ7fW%CTw_bNk3vtU_2bp7k?c_tJ ziL3+pb#$~2=)N*i-{?=65$JNE=2s0xt65vCV|gPXP9+>tiXD2f&J!7J2y_iA4BJhu zmm_vDJ;dsM88%o&eE(qm{u%aBt1VlVzC%?AD58H;sA+4RGQz6~@hoYz-5cy@tIsI138gH(C1plMzhSS( zcf>KbFDrAO;t@z5eHXvDk39L&!^gE#xO+i!r_fJP{cwcjf11^-yg2Ow@*knaEAEer zk#WW#wUg(T>!wi5w+JlrJ&_GRn&1yLdTkPVcOdz;Q&$Z{HDSO?co2U}yqlT5eg7sf zQ#$?>U$X>6MxUUJ7+urgVY}-1dDv4%+BGkN)crKdX^kj5BGbhw)M{5xl(;^@bHL8N zx1d#6?3MMlOQ_4{_r)_jVvt5;YGrS1-%aPfCjGG_Wl*d*Cf6kL179t3aXAK$+ChdV zqw^y-DTs-<)|F}gVEBJeKDuZdZ+HT=(9)Fqk`VS!Hh9)jE4fnIWdEjS9CnLFu-xE$ z$H3QKGP9Rp$td!DhXlTLVG0-%BqKeT?=K7ed3H4(;#N2YXHe_G?D_I_ z72QA?`vM+=PHs&~Lz28J)GwB}NoXOc$x3n;POUhQ3_bNYVhw+fYRv_>Jl%)7VQsH; zRmbywt4o@Ceg?%jOnhW;dh<JO^T@Z$@Q+R7BTws1-7OM|F23#f_4La- z4m3~hr21HTq53LzyitSBbj`&D)zz&}?)lOhQ{0(05a#V4D*17rYJpXo z0IX4PIgMKGNQr-9oAb)yj(BZD?sj-L3MvaXf)mrH$jlHeoth|E9{`Ad78N@qQLa9YD@Gm;`(UXLaT0hm;GcZ#ic5d)lIdH*7Zr$%U~6!$f9*ei zhR;q4iOD&I>v|`DV~sh=OFsBwRj7dA%Cu^y%ooEegR0;)8P=FJ4J_IZgm5-u#V(+% zCB6RM+KolknBhVOavrx_WJFls=DYUN<+_{o&fKcOr5*0D8yVwSyLzl{NR2wz; z<36Zui`l&HoPs)SqLmjl>>Ob2eZIz~@@ndk@J)XZCVO~SZs6qkjrp!ya>>z$l!s_N z48>)m8U^5H{Tg#ytbI#5C-hE+zVQ0m(REw56pl$$#iXBoazFXRD;!n+QXxfUt3mE{ z377M`a=d?f*W+W_Wru(`pIFuTij40e9R-XUPm?Dq1st%mGWDWB8`kz@8@}^>=Md5T zMUsEPGY>h?Uu=^VR#3;D43F_5?7`1G-49QS>GboALq=IAV)%&LIAySss^p#DKGnR2 zo;xz-c}BR8|D$-Rzvs;il{FdrS4~hv9DWo);H4(3M73m3Q1UU9)}Vp)9E`SXJ=}dg zaaOuFfI1O|m`U|mIq6??qPpKu>GZ(ipm2ZQUH(BA6Nw;pD0~^Grf{hR5?#3F!1C;M z&Gi_(a@1DryiuS+!`>H^LXK#+p`A&Zy-CGm6<^-9H(B(3nQvdzjQ67y`6OzhNovAJ zvwWrR5qN90rQxO@ny|7M5U;6-DPKz{G1)mZg6;Xk3pcXKF<#9J00bHMn z4uz>Eun)?+qqlTk6PJZ1tR8~42gGd)Dyl%+(Unf;sOdM2F?;x?PrR%l&d|Yxx7e=w zpefU?S-Czdh^OwBc4txwfr3s>$&>y}0Ef}{QYvgXzyPex`6jr)e#})MoJXejKCIQoaekww z5|_wlO<)wO9qR69uyp2pCNZ@;3yMGsE*9eFYSN0D)Qlh z=4&`slBf<^BPLS)1Fsk?v3o6Rt|z2pTIA!Wi07yBKARi!nead)iZohPhAs|y#B%y{ z`vrl@&+8#Br9(8}kabqtYj*#lvkDAY{f?WH+NLpTE_w6iOy7XBLOkQrNCN&5U#ag- zJ)}0QtF;|HobPh(da0k+#teT=Pw)%DUUeUP(J7p`Hu$xcfAvsb=Z59eN83kfeK$DTA*g{yEuGrzBMJ&0%eu3}e&6y@IEt=EVUqF~ z+U~`y{w?W&R;C_$CpmoVBR$ed8S}+Yt7(RV{NkA$gqMqa8c|L@iJC^L3O{yC4yJTd zbQTiX^`3l=WB)LAMDKr?OdFd6JAw%x*h^odDdaDaC>Ui6Bq`>d8td*c)1ZPZmSZnu zn;z*6KbH9a7NcRD?v0eH3slx%O6nzuffiivPncuI5pIVmX21Oz)d*W@!xS$dQ5xxJ zzQR{I#l40XPscT>JJCU@_{(%Wv-{4l5cNU0dT&kbu8&JMwbXyvarawm7UPHOnW)Mn z;kB%XH#2?A=gtD2PjTy(h&x&j(Ky-}fq49koQe;3Rs=ehVws)*0q^Qy7Bv;AphT&- z9kckt?I6SsFM9ax-Uh=|VMo!2+-Jc3+V_{quVA|jo>RsU#~g>v3DH8MGg=?S@<2NO zxUQWf_;D*+OEZ6HcP{HYD2rezW(6I)I~ev=K6v%{FRpJPoZ#l zk8^|i3fp5ZQdXH2jIj{?fY9&EyRP-W1ZIkEOz7elBgTIgn28L=9!BKIf0rF;&wVOQ z>n{sP6N{Nsr!|rE)Q1L0!i2(PC@tSx zI1_0qyS;z2RML67r}#F~qaBwj2b;>gM?>fAC*V{d;!NSlHpv>xyRZ#Kc|LO7{QPy` zuEJO7UvND+3?`yh#fbuWm^1tseLF;q?QG@kYeG+sWhD1l*B3Q02SoGkahRk(*`T^n%RZ4Orze=!*TLX-KWH#2b+l7DVSDte#|DhGP>9P5#=}y@y`aaSV z@Ma~O1U90JXiu}v^v)I#0OxG(O4joom2;{>&9yR1+Oo){>H17zfg}w!;&!=6+p!!w zK%@{VcSJp$?`V_0SfbKL`o;zWj;Jx1ksMs7WtcC6VlRBl4bL`V!^OhgcJZ3SlFG{u z#i)Ne7PVfgR$rDe>YCW`lEFG8F>&_4&u=0)dX5Z?k31Plv6Ud)>w-4)^n6iA3jFRrf8U{}F|>fwu7{2gIrTE;L9GQTj7f~AFZJ<<3h)5P4cU)WXG z$ps!=>?;MbIm^RiwO1*_^)vLh?+%>3jbeXX)B);VM-h7XJx9#)u}KwTwa&dCFkOB! z5^X)ESqaB=tA$6{N&0@GW$g{SLItJ8Dkh^1RrJu)fGY9|_AHVNfGV|I7JY+vznc52%; zniwPQNHR6mpR2pZG6x0ph7YK=ZYqDGi1o8;RBlAM7TpHoD{e*(ZYpVX?9Fb|VmkE! zteernnvmS8ThKn`pwj0Z{6(bBjq~=inH%we9whbR7VV8XH0uV7o+|{Xh^DD(PxCb0 z@l;?PYQnmylmc}FE9K8aUB+>`x&jm6rh!zyy9+zsn6qXZp-|akCfY`IPW^wJh{xN) zF(H(VmVc9_;SM>#(z{4Kcx=VvjAerM1hVJi&C`uQIqbKS=Ct9kjB= zk9Qw`QLxbn|0uE*^%`r+G(LZ_fUC3mhxc>xen*)&)rcTPm*Qi;-}bkhr$dC-??uC?@5p*eJswWlclRVT{%)-cerx*C*j~{)v*@jfN{Z0hlshAZdD@knD zM%3J0OrBF&4fQ4^hBe@fl!Vi#BRL|1XS(opQi4t6V&Fe;chS}_8t#9{iaIL?wQ1ea zu%=%p2?K-2422qKlbi`c_+hh$#fcgfre{-NP+uk+VK_Si4&GD&T}9@8gv76RazXK? zg@jMDw9@7;M=mYH74_I89ZxQwK!KjM1lNCVO{9QYLcU@O-gcnA56-sW5-ye7jFBuI z7iwGVLzlI1vY`EN!M%U7(_!9zweHfi^tptq9D~r`tqs)0RKxj}?fo|B@`d@;pG&3o z2l~rD!#sRyspGB7I4J7LqdXy9YkceQUg-3g>g`&Vx+a1Z58dP}avi+9*RsG8orBq1 zSA3`aRs13f#zk9v6ztO1*&lDvL|V6fq`C?&B16`$3gKy@iR*v&G_QyPs8dD@ezseT zo`5MYR+ z%O}K~-dOtNfi{8NRCto>CT<{X$ZgQW>V_-wvOTWk)?is&g4LM(W+)0He^HS=eRSkA zP3G!W&-kUqbkKj}39@;>FSIPiuEThAx#?soQ@NvYUdtM(3ZWT8iwgpWOV-r8coDfY zvH!6wCoU6x%*K~a1#t<>ko7J z^NtV=S0DyX1V^&r{`sM@k>MNRa&uVOMr{b!7llW8reA;l+?%Rq3ls2gg>Zz20=OND zVDuR}?S$g>Rh2+w428(jVxXL(;kn=-v+O4so*Ku z7O;)>R)D>>_F%r!dG{qj3l&}=LPN3Acd82_x1VD_HsNZ{^80xhr0__W~2I!8s{II871KtswTuQR)sh zh2akm$}eu$%l+UCilJ4_?Jf%{NDsjAg z&!K1h3xg+nh>{;pTl;s-CtEE+4#OT5m_=VwZZ^r@Fc%GL?7Q|nE|5@BlQZvt&HFs} zq||?CQG`=wt*?HwCXkS)e`-lC1L67c=P`bxtFj$~;feli-9WJ(vEgHUE1UrsDE>*x z0*_tN(Evw4xWAn3E-lO@w zU|qy!ujHY-ikOCr9A#di z2)i3ktfAX^PG|EuC%tHtj`gh;B1dbs&)q{)NVIGV~?t)S5RpU z`?5bnI2RNHxzjy=aJ!E8sIk3wyT?E3tVU-n)|)-+=DLrJR??W#e+Pe{`|nFgn7VHEA8#a02AXAj0V|E`hxAKSYaMAwyoP{^7sa<&67H|A;UPe) z(~GP%)yrnPHocjD>%FPukQ;@TgLfFKw1l0^5z$6cwu6M0kBa!~ zdh0)r)ghai4?8e}4UQDXg=|Zm$hIeKrGDqwEg*oV_l~_ndYxYItuyA)t8zSwRe2Pm zExmk7eJfGVYpykgp)@gkOj#W2Cu-a-($K@$F`04qANeM2Z4l~o{JAOFsCblrzI!3O zz#c?WS(PBWuh6$Xacorh^e&zWURMgz%mNF_v19wevlrZZ_MCgq9{yvE4P*k4GzWR* zw3n5xT13?0VpdTO^^d;Y;wK%;D1)8=DZlHOL|#Z;Oc@}orXnRTrlJB+loe7HS5TG% zh}b#WGlA}nn|b;D?2wkxAyW@X! zc?$6j6LTD<>=SY28fBe66YBQr@C)6Rxft+1G9HCkSwx62s@r7zELmuUpQ73xBE4R$ z4G_;u%h$Ov!9&*~H3r&BUueuc~c_NQ=2$blv$%}!IEYEzk>84#4wu5%E| zlAJi>ZxO<85Bp?h==tr$!T zypyk=cV-t{)PuH8Tn3s|Qd}g+wQ+F!-5)ii@1k5ha{c-uXf=Bg>o9K(Bk8&ODvDB4 z(PP1g;5O8MFZ%K_9Idq45E=&n{;*7#KbKLAFzEMZ>4q*^$MHR zktTQ|P`z^)4iVFMF_lScL>{P=1VNDGW|y_^R*@ zy1m>!W)XSiolVlSR9{3Ep_`GMVQm}PqY|lG(~I4IdG>uY8q&{_%sk^Bh+JL;yA^#MAwvxI<7gC+9`j!0LN^E^C%9SMbWe?m-jz*m0bXAMS zsHZb|Hu3(A z3PRh9B@-rq$B{;@w%QSBd27y%o9LCV_N!q(2h354;B6~e${!;6^Tqt49k zr&-ZomY}#9x`F|ccGe~qwq{NY04ZBzCJ+yh>w5+T`mM_kaz1QMQ2b@$^S=f;3oD45 zm4oet!H{(Uy!^ZE^!9+5zt~~H z2^p6phUJrW%wJB(oDpu=a5ozzOBrIm73gJ zsKNaY{0}QdwS0ykK%>jA^yZP#VS>Q`$bkG!m;Qm-Ft+`D4b9L#wXBOux(ZoXSx^Q;b5EE zG&V`&AjIC6ZbWOtX&;?EA0pS)`^a_iK635;VQ8@DXu*q8$KvcvEj52yE)e?HdPDiM z-cbIeH_Sx<>Z<|$`?+(f`=8%f*9 zN>k|=68}fN&E*orW(_F*En~y?N9X~@6}jhSP7_|+waAqS5Qtj7BeZm(@gevGexE{X z>KZV}7-yfUIWv@IC^t?D z{a_q@%|=wg&$4EEI}1sF1+pb7Dc05Y&Gn2G$ChB|tS9p`*c}EN%;W8v_Bc`5$)vp7 zNk@MX__SS2{?iB|EpIY&%@r63hQwo$TAyS>=Y=$<1%h^=em0MV6QgdC=3441@}WyU z<$j<}qj8pn3?HsY*mHEchA;;S9G;ZNxIN*=2!YN1!d9zFBh8+#acnV?K zm^C6K%Wh&4RtWnoU&X*qUnmZ?Z& z?x=&qs^YEWv&<{I8KzNxI*hBMEiGkFmEGt;=zB7JVUf9!_Jwvz_p%R< zDud!JpoZWFRm+!2KD_7#=){dt;UEqih}PtCzoB2EFH=(w>3EF6S0fH>#DwC zamsQ({c1xxl$l?UNxnRxlo8-zVnB<{pL?U=Xj!^8z1c*m#vm#a9x9rDHW)NT$NOLK z^q7` z+tf51QZP<9Zd-1En6{L<3^C0N#V#{&vzsHX*gCG&60ocVC@uT*95*QY%AY^j9)Y2#w7SfkUeR~O}m0!2QE=Ue*DI(2Hv1$NvD>3ic$_F_Da zgUF`96TYzMkve?+xmtW73_WTmgBKc7{m$FFhmuj2p4 zkp6jQmAK3oK40Z&*GJth8dF`Xj_VmELg`Hur1ja@yrxe-WE@wLv?!*$O(kb>l_#da z;F&o~eX!8`5FG~3-dnHdi~sHdpAbx3go%vDS;^x&Aw?j3W{y^Z)(vo&xvD!b* z7=V9&pVR!f@krRX-!)}t>ikP#-p=ut6a>TpWc!{DGyZn`x34GoN45g~Em!%?hPXj2 zpnJ1n2eJIftvDZM3xGftR_*_(Vf>w+AJl12V2z}G6^n=Ts!hVEE9^LhjCp zOFM~J^9yP-MOKpRf~yakBDq0O8jyNvl7az$Dj07%`gzS`8Uh$MPr&2DHiW~kE2!~;>`^&>WS;|cV@-X=WCu+4ffbe zR~Y22)Gi!c^Ui2Ez7cpgP_rsybwObb-3igqmlx*gG?tpjX7^z{5kS5A2>M+sRc4i*he``PF)8Dm9KX zu$RQCGf8vwMFaEl2WPNrWdwTGySIXW4fB+N&CdY}cIaFxL#!y+^wG1aZFKJ#tBJj3 zlm;axB&i+sLiT6Gwj{ynmC7+KIynSj4XjM_=4o83gdPj>#<97?_-xQ(7V zMw(bG*|TU$qKTI5fxl1|;W-&pV`r!;uykPl~o_^Y{pgR)9~y>86Ju&CVaxY;D!ChVL7VJ4^%JXkI2LBLK+ z(+<&rTv3vG1z4my8sfF`h}wt>w~di(1gee~lW0dEM)a{tfZtmMo_pD5*)z13TDYcJS;Ji@v@96=eL7hI#a65}IR2rYQEQRm(;@l3=gR6CJSMpWtm z!pa-XOg&C{`U(*2=v zKY+>KzO3k9p*1UzgN^+sT0flfKSJw&Wf=dY%0K;v4@%fY2%BQW4<;B&iP^Hq-v}8z zd^VU)YA0=~lmoqx9{a5UuR79p)oWzQqkws|b<}}*GryF7=D--nH09#kQ9K6hM}HdO z^*-~Htw%uy(qWaKJkWVZzn+PnLb`YUyU+i-p%h1ZWt5Ap_8J%sTDmb|j8E);@%;aJ z=a%M?+#bs1GyTs7v_m{cOS3FNgaTeO%-z+)@fC`#h%9}5pL_;560kPRU%=%&8fS(A zL8R>B)uDZVQR;qY_JNo)V79{-p*k*ZfmWw*B||{WW~UMisMlekf7?C|uG2 zpM1}$$yC5#fSa2e6ZrdaCR?yGvo+Yv(3;U1>}cbE1mXsAe(wpSF{XV`E<50Nrvfkn zOzj*2hTrx79Bcw`aRLMEY^^>1u^<4O_Qxmw%e4UaCz4?M#eUg=>@1w1hZn~$YZLCH zj(d^qLHz&!fAH_(nCb%t;m>Omz`Oi7i8aQzEhb4egXgIAT3xk6MdpO_l|eQ@dp)0H zrpbGMz~7STFGyDEVZU6uGiH^Wf`EF{b1?yjkl>*ij=M@*dvnvHuv4;@#p^NBVI{({ zvfzx-e12j+-8vpJQz8>iXGaH9UsKSZ^?XaRbaFy#c-DtvE6Mtc@aD3T46e{8Dd~Y# zjHFrDuEYF#4xA+Rd3SPl>`yJq+Es7 z-6b=Od6DcwmB6HuHZ6zRQq@|Uo6fW?LKu6hs5YKNg z5DbZ=@+ogJXVU2tbbShaF`#vFTxv9m@v=_aB+|UI%29-E@)7bGgUaM!j7+fUbx9!k zNd%GI6Uj1HH-wJfWZjb|VHuupn@w0CeW%{8Xxbc9mj}2Mn_H}qeArlmP{}35>%$G zo;i}2DlrPrK%}K~thOfbYTTrr1`nz8>V!gWdeO*0UrGgf)%bd?e~QZXHBgCCOIKvW zLT^m+v<{IL-9EKB@ZUO63@QHv=$j(=$@)4N0yZ%x>c2(1gzT|Vyz)+|KCof3nE8t|L3nxLQ-4~;q2nBgi ziK6BjJu|Fhgv>ZS3B;ax3tuwPs{Pg`GB8bwLos<=12&Di{pRxmKgAzx>~A13Vk#LsfZSJBcPRHS6%S&0f-M=B67s{-d^-$ zi`)|o-sH^VcTtbH)E`?a#ZSc!iZ6yW@~H$eAdp2wtE}9Wkv*h;nN#;^=Gc9j+4y5| z8Uo(4aM}C=h=F*)_dR_T6ivk1d4F^(c0bn%WPaU#i-3(NX=iH&kh%Z$Ya9H}ZNI_! zq0Q={UD3|T83X{5e&;6s@7n)SC}90jxZnV?0$EtN*?tr*eiQ%a2lRK?t__{r8$}1m zw{Oit+kDo#?$&sJPivkXh{kW;Z?2g}Y#kRaNX-bRQsmX)^T5XtAQ#dp1 zWRMt*SG2hzmiskwy~^J(QBhpP``|r$2QBiTkvDPO|jKYPJ-_-RXAY9xO$(p3OLbfp%TeG6i z3(zz@wSW|V4)(F=8h{(zd@c^&?VeQ>ViIWF_+&lT@dOex2ai_TiVZI20DH3G%F=c6 z>8CHVj4K~;4{~2KGYs(4Z&>i&IZ{<~1nczsT1BWmlI{f<@>L8eenjADuZlJnQUM}p zJxwNYYcY;}K8T@c(D7yN&8v{;q~6;kOUQ&=FP#^EBy`+7|8dB&)ELGt5a;De;0a{8`KR4BuH55B03n5S(*(mX3VXQ_3g0#ra>7VjMBgz@En z=h@1uw(&0sp4_OFwMD<49IM<8W*8zvw9Blf_o0ld_Ra9fj z%XPPq06cRHYByKIK<{&6z_W;lzpWPg)S9DaS+!U%4Mj!$Vy>|K97k=)2L34`SeLA zi7#sz8_qd(`-UFNSDmLw5WMK3Z&9m&+Z%_kSuPz9NOT#URJ={u9%IhjcAYS!yL#LT z8ZXI|$g3eA#N$!a=+O}|>jfJ@OF{07EX-eIl#f*#qluklX*0ZL>@DalFOoQap_b)B zWqKsVt9-H(8c457GkwIaT*neHG>P=W)X+^)wL$!Y&KVt(izem4FV4Ghy?ECmLv^>5gz)Z=599z@R1NIbZ&buR3q zKEx@XZ%|#T1}>0Hz0-anpx@sB|CzsYG_~^oRPgGVcaEuxVyW%1PJc#f#B}$ zPH=a3f@^RH1P$))?iwKYM{<%rIp?PP-0s)6?|a`Ln;*4S)mpW8%^EeTYR*xm$^w)e zB-Ya(-n+4um0sB`4$a_%_~qYGMWL{nVUvn1a#1M9n$~ofa;EcKb|kW^f`(!vY;4vx zybi$edvw-@7BWVE7tI&8W9E8>^E~tyHlqvN@AxgM< zd5X`Bx(wCR1tR3)Rrt_0UX)*v)=flt%}rq5S`jJT%~^fHjCjA|jVYElSrmVr5v-LH zTpIU0t4ys3F(4ZXK3)oYZ$@GLD$4|Vvl0GRp4X4rtJb)Gl)xPF>H=+=(E+aL#ZvG8 zDbMR~L==q`1d68;g)hw=&hVva3Kc4?#$h}rOsBb7M0#BMMudW8Q#J$2l+H1^GKdVU ztn15<0A0C%Z{W$wvMNK~v%1P>w~~FvC)3@PiX%qagaX;)E}`vv1u5R61F|K?>^afZ zcM0EKyw{|tb)iQkBO^Qc*yxrV#?wyQ0z@^@#kUy(&VZXbOqz^zhp?YQ2!nvptA*tw zOW&7(Xt^`M?-k9JBT}#EjkO3cm=d+$*(nRA3q#+3jv`w4PR)I-oG@n{$`$@rw?tlY z?QEsL%@0=KD_+Y#_dDrlbDQ{%*W6d&MaI@}^P&EKz-zOg>|ad!*Y;0BPxPDpWB;&! zMFTx!ODl6LBNGEVd`S}v6MF;wzXDN_zXtICXl4Emq7&uAG|(Vkl3!F+FRcS1dS`HG zi%DgFej;I3vp;MG!`^APt=KK6TjN)Ji~LT!de_}|Tf_AIVvWOaDA;Hq(FftF2>6#E zpJ%XRJg@TgK3-}^(8^?^V*pVxLiy@@pvI2<$>!Z(1NkFO4u+)q45MMwQsAbE>IwXF zi2gnHsO>^$1n32hemr;sx@AxRD4ib!T2w!OUWnu_ES76k*_02Y$O%^|1ce2M>z#aQ`?&$U50@oFaF4F?O;7rK~;j1!o*!%6Iwj<>fv(V`sru{fh%rU znh|w^h>y~#rh*%g+WaV)I&@CjB&qs;I+DMV(OG92R=e{yhc5<46K&g?mt`lX{-f@C zNgli8dkz+>ePEMYPDSGYi|KQ^S4z0iuyC_erg;ftNZi!Uvb&ry<7moTESP-Qyy4VG z94i8=e*E?;xkDcV--sG-m_RE6gl;;T5Wu=fGec-0e;ll;FPm|<4(Sc}73SZ6oxlcW zRBkLikA?(jUcC3GPE?rx66UKtorhh%^|0Z|&BW3eoBuMAX2#l@TBLKZj7n|KldS%HHOCaVd>)~{N^l1oSNa5o*tDbdTVjyxJ)^A#htDjtKT?=q{v?;&z zuRn0qi!>g1u7D6#+@^tn@7?Ledh@;SF^6IxABM>ssUc$V<_|aTVsrDM^UmfI2-urr z58usJ7y|rYva1euE(9HQTfX)o{k&X-JHNbI`E#fN-`)d*5A|mb$k}6mv%=Z}9F+W| zYe1jb0FMhfO`D+Qra?S!Pw}to`P%fpU>fwkAg_L`=lAbn1)nJa!{%=DTXby{to^x< z{>+$#<$tVcK*2x?8k<@A})Sw2`IG zA9U83p0hE~vokR=vVC2DYX3R;Kl<*!T22{4=PE`g$s)#j(7K)=;k0@ggHS~ z37?rQ%@y$S?LQjQSb(diITC_EtDdVFm`0PgC0~e;&IqZ4zRB=Uk#bxnq|h9%83*H~ z=P0tzjZwzVwvvRxx5y-Nt?iko-o&9^tRWvoI+v6N63bTP%h=w30?nfF?|VuzA3X@c z^oPK$HzqnJnzA0YkTZF4obCE?jF91@Z@~DulB29UiR&kSP3Y1k0colo-yGuLfvD=y zW1=QQ$!6WW8wGWJH}|C5T+s~p`0_&Z&!&g8z(N(L_FpK6Twjm136e5WoSj{o4|)O- zKxbOzy=+TYSRe6!D57>(#Y|k|VPiu#Bp>JNmJ12%q#0HSB39L>N9`_NorWslTXDX+ z1aUV(@^2X%D+C(>yf$usr_#)+Qw9TB*TggvtqK6Kb&ZsyA)*W8lSlKaucO!k=)7`O9k(WxGj`724 zNg1T?nH*YHD(evoYg%(}2f&yP(aP2%%uz26=zlz)5 zz_w~DgQL_-ruyU=aAmU#1|0vm94U&eJ{hx1b-cr{&;(-oHfg6@`^2M=@EUMd>Lz%9 z6fOl+EiWT!&Wftvx=sJ1Qts!yiq05{#UNDTWbSa%q&kiI!Qpx~@CVYlqyXY4H6q}Y zqxAH5n_BF{GxD%j<1a0$K+VL4L!yQ4K3~zDzO!?JGbqgtHGdFYAav>G=*;yONzZp(Rp^*R(l+>k`jdYKRYi#y77&M^0k7E+iG8amoo z>zUIF&PfA~4zf}eY7)h#oOziL9S*H>9`Uf&U&zY5kQt|nywvYw%8+4JH6*fr^XDN( z^w;fJcszwJeTHFy+3f|DZwRVJ_M7vsJ{b+xOC&T`;=ce}w3;CdKriVq*! zU75-RtRC2-8aUMv&@9uF#wXR^c5IT+Q07CQ;vNHf07{i2I@;jKo6v{fJYIPgIa?|u z{8Vi8rq;>R6ptHI-W7xgoI3!2)_)Yw5$f6$dBt{v*L{Rr7m&Dzs*Fqs7f$+>j(D3dSkSP};i}B@ zD0A)ZA@Oh-F%%GX=4z;E9ci<3mpx5`Aa~EfL%viGz1Uf|`IL}y8SRz??KJ7R3qG#-db&cHuJPqEv(ZZ$)~Lxi*t5aRV%P{vFr zqu{NtIFzxX7rO%RU>*RIzML9#u5Yxf)*q&msH!o_|(@}KG;O-y4ZeMNz=|%k!cNzV46uH14v=L zu?4fXukOAm*4%-AOX+ioDq$Plm&4FlJb#~#ck!AJ2vpQip$g4On({4FAy zz2&{fedOp{(n_qmM)Q*O3?7sYE?OfX)#%KVF9LYf^~RSDWh3veo)A1fo)YJmP26U2 z7u~*I%+ERz%xjz8-P%M-Kyw4*WjyMw7ie+Joi$*mVrP*ffP=H5Wk%v#qcVcA5a*{y zCsJorO8$g@w#vPHb?8z?rHYYLMoowrAJLW&^;$rs>joK^g$kQSP6eWnbNS_FUoEiR z#|~2OW@rJtGS~`I+xfw^np{6sSl@0uVY!Vo^uh4d@I$c!2id7Ga!DL@RwPk5944?=+vMmG zty_sOk;W7CwxVlXJ0;5Lr|?QwF5x}uptD;PIV1D- z+nG8nuQBByI!w-Ru4Z3^RS|$u`L`u^fu8WhW_;<)MlIpJG=Wwwyb(p*XcAtP$s3h6 zZx*31^*e`OwOH6RjxUpGgzV1tl&`6IjF8i?G{h@oo>i+#)FZO>xz`*?c&~-uG7{B) zS=EciLsSV$2ZV6~DdN+ud{B|$;*27g=^$lM#6RqPDROwC{z1aEql^npR#SHtUP644 z>ejNwE@tSkS9X^_VW!B_Vs;NFGUR=uYD|-O3>A#>gZBZ%sTPGL7B);pWNdKRLThdY zL4PpD;mZ3?%mdU%XI9B+%TZo5>?kyUGt#CzSGo@f*ywOHcEFKYTP#`X>yi#QHftR0 z3eJ3kez7x98R;64A)8yPqMM@CB16)Y4wP=^gjb*1AfpphT!Vs2kF85@7AZDhu(=SW z1*Z$8D@pq<<}eeZjrUK&g~7&^g;Z0xVc`85KuJ0|M!52rgX>)o=|sABiV{tK?hBlZ z-mkcwxf-Bs>L?rhJ(aFsO#6SwTc575!OKnhr+gR)?JyK00(-!fm0!Urk^$jm1XY>f z=D<^<@ph-TC=ZC+EfJmT5$k;Qu*KDO#+J5f-*@t zIe28CO*325MMFy`j!EGFa6?$P!1WQ{s&Hg4P6G=^6rw9tSayi>EvpF976VKLf=qSVSQYna~H|xWa_(7IVu2Ngy}w zmS`XiZk}eMlbw1@32s7Xj8W{-SWUmt+JYray_#R|BdFFTC=TR*tESbT(C*vtL@*M< z1AW}cIjMP9bKw#B1qP20kH)&T0g%~|9$<^exlnmV7BA!u?D8YV>FC#$aJa8f^Se0a z3rmrrzRM#$Q~s)frQ3(zO+qaFu0v;d zds(>EY)S{6rJQfc?m9S{Uj2akIKVxJ&ylOBr$JW zqe=9d7ugYi^992LD=mfN{7;w!(|^h&{_fTWo($7lCW?@3|K)*R0#*LtedTm2iGUs) zNwO9%QaM|z^~~wq{y`yR;n1=Z&%m(5Do?tnBAaw{e<2WlB}=M(Qm^JHzzqqErcK2J zA;_vJ^Ju{`f24?%Fj#LG#;aAbf7T>A&PbcGXvzbBd`2eDC=pv5po|_`ezmpXt&!(W z)E=Ktz1S9PMbwzPWB?$q6eeFt>NLPxBU@BHlcT%-n7s64z|k1Fait8Ls0IW5YfZ_rT~9-;1D^8LT3LisIp*EU@|x6vmy_Us zei=5uW^F(F(K!3217ZHfA50}Y0ST&!7*{q^1TEAw zUS9%aVW;*uCx%BorS=uqRv^f6XwBUjl}%|Nq%)>qwN5o@u13I7YpjD3Dx^$)8+bxdc;OrcIZqjioR48D7F%l(U1CvEJLNLnXj)sooBMhIY{J zpDJmA>_E?cnpDgV;C?_R2CjZPkyrmOQL*Ny{s^K>ndJV3b>o736f!j2Ik;biG}W1$ z7C1d-97Fq*t+f~R-mu{C`Ic;h)UFI%J=FY{9*V5nV}ljEXa&LxZ(<~zsbm{k2QHPqc?6X5L--g!we8-NKw#X!fA zT-{?9P)zi8&W$pPs2`xgv-32!2R>=~N5Ze7I8l3&dd_!AEEJ+TfmaTHIqcdBOvn4D z2l}0FMh!uVOojqm&#U(U3w%Ce%Q?l8Rg{36^BcOvlvhqD2ccjv;26sIoL83Jl~@-S4WG@z zRH_~__0xTx>Sf(snlyTUb3D*ac3CR;F{>HzI7eVdte@<-kMKKfT@~tPbNwI)%M&C; z?IoHnBfW`{V73qG_@D1w{Zg}VeE?)XZo&|%$-g*yrTiA)3$lD6PH1dcj+C$$S&vOB z@$%+;U?{Ao8Gc85#+t#bX>P%8Kqx0T1a{M9q*4mHgXh+vkKq`9fn7F>Ahb7+Mw*rt zC0fFmA5oB@#dhGjH6xuo;ZEOLCfRIbGjalG~Mg?!xE556}Zj9|Vt zS65+Pce@KMrnHHFiMe4CH&j&C@~YDG7G{z?PocC9j0-;ZsEfc#yMd2!@r@Lr@_?;su%cDaq?6psBkgQ!pvAgfnh!)P6*(+&!i^&=BxjLUfvKl(?u zxA3(?Yqnm!tzj`QMVIyRUzHq+nZVy;YLQQ_V0=$eLqb_AdSkoRuYbMm`yzZd{bNYb zExTdJz1|Jrjq`(>f2Px|(}7<_PHb-Q6KdB@?Cl(GnDc z73m3(eHuSyEdb0a;1eQqW5pQa)@hb30u&(=f;jX1U+ z@lib}z*iPdaluxF*cr-k|lBFw9W13j;6sQtjk9q{#k$|9?rgU*CaM{(D;7|VmB+ONNq5wM9Bi^ z&n=$UEu;DOenwlB(V3TJ1|ij5mrHASnRf*lmcoE4+&mCp(dt$&B6cWgSj2hVk7Q znS6n2r45&?d4*@=adP5D=ef^1ooEe>ay+A{Y|50se<8*W)8KIz9*|e1ruEr$Z7KUo zU$A^z&X2&b2Z8ruSmZd39FJuFsnjrji3MKs1fN>>A-bt(@LoMF*2j+`QQTeKww7bG z-f6()!Gtr0?Z}edK-hEdO{+^#qBc9?=i>?u-@d@9wPcGhkaNc-u`A0x3ta826Ea^% zzApt6f2x}B)B^JYJ#InFy&bbcsU5uCIyiHBvSL@v0j8_y-IgLH`~noIS8rg)87B0S zh+@?Nd_-$chC+rujU*q>WfZfn8B5rRA+wTm^56`oM3QWK+vrfecN@GRLG@W<(9X{F zM9oV>HBCfsb+pZg&cI>arpu;lvyO&;w>|%*e=CO1oW#?u26C|)t;}2S)Hpvf&f&>k zefJ%ZI}GG{kpy&B0JLu7Nj5{w-N}_4NU-^Ck$rYETFv_hF?e_GLqBx_RLFy-?wC4533sB&mH_x~`pvG{puPxOaK z859z@ikO0dgn`QsAcRK3kP%Z*6v7v_a;m={z0Hu zn`HC zsD);V#0zpy`=23+JD~|P2TaL)ePGAiD;PHIeJ%S*=E5A(&lW~gawG^mQ495=#yKXd z-a2ceC&0^Mv9Q6L_AJgJN##XEv2C|%Fhu_%iu51$e$ltcr5l|YQExbB`h$-rf6BsY zWexvZQKY23CK`)VJJmaVFkxYxODAhYhe;IW?SC*)x{WP(HSB`o!x>9@yHf1D^_NBV}) zG2Z=x%XV?n7lpxIGR}GseTcFa0)})_jV|O;@|Yo*-t`zhaGqTuE&7rK*sqLdc(_Bl zs|}~3QtBDNy4%(*7{Ll~ZyFDZa~nRi`Rd7zo}ve@Y{I)-?&si9j$6~Z?X<);TPUoH zx`(|0XMZxRcGB@&-4Ej~f3D5Dx`-D?1h;qys}3F+&C+q|Q?;+0B;ve&&Do!`kPf;0 zT978{%x6d?=GL=C7DSJE#Vi)R&5X60W3!Z)wf^*^4jV}≀ul%X&b)T}}f_vC#Qy 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

    2. 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%0Dk|EfYC|*q!O4L8k^dg>*||YS!(Okn%G+a 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 bG Date: Tue, 16 Nov 2021 22:43:28 +0200 Subject: [PATCH 242/831] rm leftovers in /etc and /var/lib; tweak %files --- rel/pkg/rpm/specfile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/rel/pkg/rpm/specfile b/rel/pkg/rpm/specfile index 8dd46eb00..f4348e32f 100644 --- a/rel/pkg/rpm/specfile +++ b/rel/pkg/rpm/specfile @@ -138,18 +138,21 @@ fi %postun %systemd_postun %{name}.service +rm -f %{_sysconfdir}/riak-cs/riak-cs.conf.new +rm -rf %{_localstatedir}/lib/riak-cs +rm -rf %{_localstatedir}/log/riak-cs %files %defattr(-,root,root) -%dir %{_sysconfdir}/riak-cs %{_libdir}/* %{_unitdir}/%{name}.service %{_sbindir}/* -%defattr(0750,riak_cs,riak_cs) +%defattr(-,riak_cs,riak_cs) %{_sysconfdir}/riak-cs %{_localstatedir}/lib/riak-cs %{_localstatedir}/log/riak-cs + %config(noreplace) %{_sysconfdir}/riak-cs/* %clean From 43186af839942f8aa42efa6a53b4e40a974b0c9d Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 19 Nov 2021 15:54:49 +0200 Subject: [PATCH 243/831] pull rebar3_cuttlefish from repo under company org --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index 47d3f02d6..fc2c5cb1e 100644 --- a/rebar.config +++ b/rebar.config @@ -15,7 +15,7 @@ ] }. -{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/hmmr/rebar3_cuttlefish", {tag, "2.1.1"}}} +{project_plugins, [ {rebar3_cuttlefish, {git, "https://github.com/TI-Tokyo/rebar3_cuttlefish", {tag, "2.1.1"}}} , rebar3_proper ] }. From 84efa7db145d0b828224683ded7b753b69c240e9 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 19 Nov 2021 16:35:13 +0200 Subject: [PATCH 244/831] increase verbosity in docker build --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 782341dd4..e593dd4f5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ COPY . /usr/src/riak_cs # rebar.config. Configuration from environment now becomes possible, # via rebar's own method of generating sys.config from # /sys.config.src. -RUN make rel-docker +RUN make DEBUG=1 rel-docker FROM debian:bullseye AS runtime-image From a5971af8961601e88eafe11e791d714139e62129 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 19 Nov 2021 18:34:20 +0200 Subject: [PATCH 245/831] no systemd-rpm-macros --- rel/pkg/rpm/specfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rel/pkg/rpm/specfile b/rel/pkg/rpm/specfile index f4348e32f..4f700c138 100644 --- a/rel/pkg/rpm/specfile +++ b/rel/pkg/rpm/specfile @@ -29,7 +29,7 @@ Vendor: "TI Tokyo" Packager: "Riak CS Package Maintainer" <"andriy.zavada@tiot.jp"> BuildRoot: %{_tmppath}/%{name}-%{_revision}-%{release}-root Summary: "Riak CS is a Riak-backed S3 drop-in replacement" -BuildRequires: systemd systemd-rpm-macros +BuildRequires: systemd Requires: logrotate Requires(post): systemd Requires(preun): systemd From 7b680e82a4e6b84e3698e227093c9ce481a3fbf6 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 24 Nov 2021 11:38:56 +0000 Subject: [PATCH 246/831] amazon linux is rpm-based --- rel/pkg/Makefile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rel/pkg/Makefile b/rel/pkg/Makefile index 5bef39d3b..425147f0a 100644 --- a/rel/pkg/Makefile +++ b/rel/pkg/Makefile @@ -12,9 +12,15 @@ DEPS_DIR ?= deps ## ifeq ($(OS),Linux) ARCH = $(shell uname -m) +ISAMZ = $(shell cat /etc/system-release 2> /dev/null) ISRPM = $(shell cat /etc/redhat-release 2> /dev/null) ISDEB = $(shell cat /etc/debian_version 2> /dev/null) ISSLES = $(shell cat /etc/SuSE-release 2> /dev/null) +ifneq ($(ISAMZ),) +OSNAME = Amazon +PKGERDIR = rpm +BUILDDIR = rpmbuild +else ifneq ($(ISRPM),) OSNAME = RedHat PKGERDIR = rpm @@ -32,6 +38,7 @@ BUILDDIR = rpmbuild endif # SLES endif # deb endif # rpm +endif # amazon endif # linux ifeq ($(OS),Darwin) # OSX From 617d45c43040ae736994bc244eec1639cc09a0d4 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Wed, 24 Nov 2021 11:52:24 +0000 Subject: [PATCH 247/831] convenience script to prepare riak for use with riak_cs --- misc/prepare-riak-for-cs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 misc/prepare-riak-for-cs diff --git a/misc/prepare-riak-for-cs b/misc/prepare-riak-for-cs new file mode 100755 index 000000000..85cb5b970 --- /dev/null +++ b/misc/prepare-riak-for-cs @@ -0,0 +1,27 @@ +#!/bin/sh + +# sed the riak-cs settings into factory riak.conf and advanced.config + +sed -i \ + -e "s|storage_backend = bitcask|storage_backend = multi|" \ + /etc/riak/riak.conf + +echo " +buckets.default.allow_mult = true +buckets.default.merge_strategy = 2" \ + >>/etc/riak/riak.conf + +sed -i \ + -e "s|]\\.|, \ + {riak_kv, [ \ + {multi_backend, \ + [{be_default,riak_kv_eleveldb_backend, \ + [{max_open_files,20}]}, \ + {be_blocks,riak_kv_bitcask_backend, \ + []}]}, \ + {multi_backend_default,be_default}, \ + {multi_backend_prefix_list,[{<<\"0b:\">>,be_blocks}]}, \ + {storage_backend,riak_kv_multi_backend} \ + ]} \ + ].|" \ + /etc/riak/advanced.config From 72c264072d03f164ff9abd254ea622c8324c317c Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 28 Nov 2021 21:26:32 +0200 Subject: [PATCH 248/831] use rebar3 that suppresses stderr when counting rev-list --- rebar3 | Bin 945054 -> 945067 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rebar3 b/rebar3 index 5add22df7d5bec7f9ca61f393227e6ae652d91b3..1c3c6989e9c6e49e397eaef6470a725efd4cb469 100755 GIT binary patch delta 13546 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 delta 13610 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 Date: Sun, 28 Nov 2021 21:27:09 +0200 Subject: [PATCH 249/831] enable amazon2 build --- rel/pkg/Makefile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rel/pkg/Makefile b/rel/pkg/Makefile index 5bef39d3b..570c16992 100644 --- a/rel/pkg/Makefile +++ b/rel/pkg/Makefile @@ -13,8 +13,14 @@ DEPS_DIR ?= deps ifeq ($(OS),Linux) ARCH = $(shell uname -m) ISRPM = $(shell cat /etc/redhat-release 2> /dev/null) +ISAMZ = $(shell cat /etc/system-release 2> /dev/null) ISDEB = $(shell cat /etc/debian_version 2> /dev/null) ISSLES = $(shell cat /etc/SuSE-release 2> /dev/null) +ifneq ($(ISAMZ),) +OSNAME = Amazon +PKGERDIR = rpm +BUILDDIR = rpmbuild +else ifneq ($(ISRPM),) OSNAME = RedHat PKGERDIR = rpm @@ -32,6 +38,7 @@ BUILDDIR = rpmbuild endif # SLES endif # deb endif # rpm +endif # amazon endif # linux ifeq ($(OS),Darwin) # OSX From 8f10a1a8251940fff721148346b4e96318a0baef Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 3 Dec 2021 17:10:38 +0000 Subject: [PATCH 250/831] packaging for fbsdng --- .gitignore | 2 + Makefile | 4 ++ misc/prepare-riak-for-cs | 10 ++-- pkg.vars.config | 39 --------------- rebar.config | 6 +++ rel/pkg/fbsdng/+MANIFEST | 16 ++++++ rel/pkg/fbsdng/Makefile | 99 ++++++++++++++++++++++++++++++++++++++ rel/pkg/fbsdng/rc.d | 19 ++++++++ rel/pkg/fbsdng/vars.config | 47 ++++++++++++++++++ 9 files changed, 199 insertions(+), 43 deletions(-) delete mode 100644 pkg.vars.config create mode 100644 rel/pkg/fbsdng/+MANIFEST create mode 100644 rel/pkg/fbsdng/Makefile create mode 100644 rel/pkg/fbsdng/rc.d create mode 100644 rel/pkg/fbsdng/vars.config diff --git a/.gitignore b/.gitignore index 96af2e25e..0cb45e3d4 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ distdir/ *-riak-cs-debug.tar.gz current_counterexample.eqc .local_dialyzer_plt + +*~ diff --git a/Makefile b/Makefile index fc0c408a0..7cfd0640e 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,10 @@ rel-deb: compile $(REBAR) as deb release cp -a _build/deb/rel/riak-cs rel/ +rel-fbsdng: compile relclean + $(REBAR) as fbsdng release + cp -a _build/fbsdng/rel/riak-cs rel/ + rel-docker: compile relclean REBAR_CONFIG=rebar.docker.config $(REBAR) release cp -a _build/default/rel/riak-cs rel/ diff --git a/misc/prepare-riak-for-cs b/misc/prepare-riak-for-cs index 85cb5b970..7273e3c4a 100755 --- a/misc/prepare-riak-for-cs +++ b/misc/prepare-riak-for-cs @@ -1,15 +1,17 @@ -#!/bin/sh +#!/bin/bash + +ETC=${ETC:-"/etc"} # sed the riak-cs settings into factory riak.conf and advanced.config sed -i \ -e "s|storage_backend = bitcask|storage_backend = multi|" \ - /etc/riak/riak.conf + $ETC/riak/riak.conf echo " buckets.default.allow_mult = true buckets.default.merge_strategy = 2" \ - >>/etc/riak/riak.conf + >>$ETC/riak/riak.conf sed -i \ -e "s|]\\.|, \ @@ -24,4 +26,4 @@ sed -i \ {storage_backend,riak_kv_multi_backend} \ ]} \ ].|" \ - /etc/riak/advanced.config + $ETC/riak/advanced.config diff --git a/pkg.vars.config b/pkg.vars.config deleted file mode 100644 index a9ff87590..000000000 --- a/pkg.vars.config +++ /dev/null @@ -1,39 +0,0 @@ -%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- - -%% -%% Packaging -%% -{package_name, "riak-cs"}. -{package_install_name, "riak-cs"}. -{package_install_user, "riak_cs"}. -{package_install_group, "riak"}. -{package_install_user_desc, "Riak CS user"}. -{package_commands, {list, [[{name, "riak-cs"}], - [{name, "riak-cs-admin"}], - [{name, "riak-cs-supercluster"}], - [{name, "riak-cs-debug"}]]}}. -{package_shortdesc, "Riak CS"}. -{package_patch_dir, "basho-patches"}. -{package_desc, "Riak CS"}. -{bin_or_sbin, "sbin"}. -{license_type, "Apache License, Version 2.0"}. -{copyright, "2013-2016 Basho Technologies, Inc, 2021 TI Tokyo"}. -{vendor_name, "TI Tokyo"}. -{vendor_url, "https://tiot.jp"}. -{vendor_contact_name, "Riak CS Package Maintainer"}. -{vendor_contact_email, "packaging@tiot.jp"}. -{license_full_text, - "This file is provided to you under the Apache License,\n" - "Version 2.0 (the \"License\"); you may not use this file\n" - "except in compliance with the License. You may obtain\n" - "a copy of the License at\n" - "\n" - " http://www.apache.org/licenses/LICENSE-2.0\n" - "\n" - "Unless required by applicable law or agreed to in writing,\n" - "software distributed under the License is distributed on an\n" - "\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n" - "KIND, either express or implied. See the License for the\n" - "specific language governing permissions and limitations\n" - "under the License."}. -{solaris_pkgname, "BASHOriak-cs"}. diff --git a/rebar.config b/rebar.config index fc2c5cb1e..af6c81aac 100644 --- a/rebar.config +++ b/rebar.config @@ -96,6 +96,12 @@ } ] } + , {fbsdng, [ {relx, [ {overlay_vars, "rel/pkg/fbsdng/vars.config"} + , {mode, prod} + ] + } + ] + } ] }. diff --git a/rel/pkg/fbsdng/+MANIFEST b/rel/pkg/fbsdng/+MANIFEST new file mode 100644 index 000000000..1733539bc --- /dev/null +++ b/rel/pkg/fbsdng/+MANIFEST @@ -0,0 +1,16 @@ +name: "riak_cs" +origin: "databases" +comment: "Riak CS" +licenses: ["Apache 2"] +licenselogic: "single" +arch: "freebsd:13:x86:64" +www: "tiot.jp" +maintainer: "packaging@tiot.jp" +users: ["riak_cs"] +groups: ["riak_cs"] +prefix: "/usr/local" +categories: ["databases"] +desc: "Riak CS is a Riak-backed S3 drop-in replacement" +scripts: { + pre-install: "if ! pw groupshow riak_cs 2>/dev/null; then pw groupadd riak_cs; fi \n if ! pw usershow riak_cs 2>/dev/null; then pw useradd riak_cs -g riak_cs -h - -d /usr/local/var/lib/riak-cs -s /bin/sh -c \"Riak CS user\"; fi \n if [ ! -d /var/log/riak-cs ]; then mkdir /var/log/riak-cs && chown riak_cs:riak_cs /var/log/riak-cs; fi" +} diff --git a/rel/pkg/fbsdng/Makefile b/rel/pkg/fbsdng/Makefile new file mode 100644 index 000000000..7774db990 --- /dev/null +++ b/rel/pkg/fbsdng/Makefile @@ -0,0 +1,99 @@ +export + +BUILDDIR = $(shell pwd) +BUILD_STAGE_DIR = $(BUILDDIR)/riak-cs + +# Where we install things (based on vars.config) +# /usr/local based dirs +PMAN_DIR = $(BUILD_STAGE_DIR)/usr/local/man +PBIN_DIR = $(BUILD_STAGE_DIR)/usr/local/lib/riak-cs/bin +PETC_DIR = $(BUILD_STAGE_DIR)/usr/local/etc/riak-cs +PLIB_DIR = $(BUILD_STAGE_DIR)/usr/local/lib/riak-cs +# /var based dirs +PDATA_DIR = $(BUILD_STAGE_DIR)/usr/local/var/lib/riak-cs +PLOG_DIR = $(BUILD_STAGE_DIR)/var/log/riak-cs + +PKGNAME = riak_cs-$(PKG_VERSION)-$(OSNAME)-$(ARCH).tbz + + +# Recursive assignment of ERTS version +# We will know this after building the rel +ERTS_PATH = $(shell ls $(BUILDDIR)/rel/riak-cs | egrep -o "erts-.*") + +build: packing_list_files + @echo "Building package $(PKGNAME)" + + cd $(BUILD_STAGE_DIR) && \ + mkdir ../../../out/packages && \ + pkg create -m . -r . -o ../../../out/packages + + cd ../../out/packages && \ + for f in *.pkg; do \ + shasum -a 256 $${f} > $${f}.sha \ + ; done + +packing_list_files: $(BUILD_STAGE_DIR) + @mv ${BUILDDIR}/rel/pkg/fbsdng/+MANIFEST ${BUILD_STAGE_DIR} + sed -e "s/%ERTS_PATH%/${ERTS_PATH}/" < \ + ${BUILDDIR}/rel/pkg/fbsdng/rc.d > ${BUILD_STAGE_DIR}/usr/local/etc/rc.d/riak-cs + chmod -w ${BUILD_STAGE_DIR}/usr/local/etc/rc.d/riak-cs + chmod +x ${BUILD_STAGE_DIR}/usr/local/etc/rc.d/riak-cs + @cd $(BUILD_STAGE_DIR) && \ + echo "version: \"${PKG_VERSION}\"" >> +MANIFEST && \ + echo "files: {" >> +MANIFEST + + @echo "Copying Man pages to staging directory" + @cd $(BUILDDIR) && \ + if [ -d doc/man/man1 ]; then \ + mkdir -p $(PMAN_DIR) && \ + cp -R doc/man/man1 $(PMAN_DIR); fi + + @echo "Packaging /usr/local files" + @cd $(BUILD_STAGE_DIR) && \ + find usr -type f | while read file ; do \ + mode=$$(stat -f%p "$$file" | cut -c 3-) && \ + sum=$$(sha256 -q $$file) && \ + echo " \"/$$file\": { sum: \"$$sum\", perm: \"$$mode\", uname: \"root\", gname: \"wheel\" }," >> +MANIFEST; done && \ + sed -i .bak '$$s/,$$//' +MANIFEST && \ + rm -- +MANIFEST.bak && \ + echo " }" >> +MANIFEST + + @cd $(BUILD_STAGE_DIR) && \ + echo "directories: {" >> +MANIFEST && \ + echo " /usr/local/lib/riak-cs: \"y\"," >> +MANIFEST && \ + echo " /usr/local/var/lib/riak-cs: {uname: \"riak_cs\", gname: \"stanvhion\", perm: \"0700\" }," >> +MANIFEST && \ + echo " /usr/local/etc/riak-cs: \"y\"" >> +MANIFEST && \ + echo " }" >> +MANIFEST + +# Copy the app rel directory to the staging directory to build our +# package structure and move the directories into the right place +# for the package, see the vars.config file for destination +# directories +$(BUILD_STAGE_DIR): buildrel + @echo "Copying rel directory to staging directory" + mkdir -p $@ + mkdir -p $(PBIN_DIR) + cp -R rel/riak-cs/bin/* $(PBIN_DIR) + mkdir -p $(PETC_DIR) + cp -R rel/riak-cs/etc/* $(PETC_DIR) + mkdir -p $(PLIB_DIR) + cp -R rel/riak-cs/lib $(PLIB_DIR) + cp -R rel/riak-cs/share $(PLIB_DIR) + cp -R rel/riak-cs/erts-* $(PLIB_DIR) + cp -R rel/riak-cs/releases $(PLIB_DIR) + mkdir -p $(PDATA_DIR) + mkdir -p ${BUILD_STAGE_DIR}/usr/local/etc/rc.d + +# Build the release we need to package +# * Ensure all binaries are executable +# * copy the vars.config over for build config +buildrel: + tar -xf $(BASE_DIR)/rel/pkg/out/$(PKG_ID).tar.gz -C $(BASE_DIR)/rel/pkg/out/riak_cs-$(PKG_ID) + $(MAKE) -C $(BASE_DIR)/rel/pkg/out/riak_cs-$(PKG_ID) rel-fbsdng + chmod 0755 rel/riak-cs/bin/* rel/riak-cs/erts-*/bin/* + +$(BUILDDIR): + mkdir -p $@ + +$(PKGERDIR)/pkgclean: + rm -rf $(BUILD_STAGE_DIR) $(BUILDDIR) diff --git a/rel/pkg/fbsdng/rc.d b/rel/pkg/fbsdng/rc.d new file mode 100644 index 000000000..d5897e075 --- /dev/null +++ b/rel/pkg/fbsdng/rc.d @@ -0,0 +1,19 @@ +#!/bin/sh + +# $FreeBSD$ +# +# PROVIDE: riak_cs +# REQUIRE: LOGIN +# KEYWORD: shutdown + +. /etc/rc.subr + +name=riak_cs +command=/usr/local/lib/riak-cs/%ERTS_PATH%/bin/beam.smp +rcvar=riak_cs_enable +start_cmd="/usr/local/lib/riak-cs/bin/riak-cs start" +stop_cmd="/usr/local/lib/riak-cs/bin/riak-cs stop" +pidfile="/var/run/riak-cs/riak-cs.pid" + +load_rc_config $name +run_rc_command "$1" diff --git a/rel/pkg/fbsdng/vars.config b/rel/pkg/fbsdng/vars.config new file mode 100644 index 000000000..fd733c448 --- /dev/null +++ b/rel/pkg/fbsdng/vars.config @@ -0,0 +1,47 @@ +%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- +%% ex: ft=erlang ts=4 sw=4 et + +{rel_vsn, "3.0"}. + +%% Platform-specific installation paths +{platform_bin_dir, "/usr/local/lib/riak-cs/bin"}. +{platform_data_dir, "/usr/local/var/lib/riak-cs"}. +{platform_etc_dir, "/usr/local/etc/riak-cs"}. +{platform_base_dir, "/usr/local/lib/riak-cs"}. +{platform_lib_dir, "/usr/local/lib/riak-cs/lib"}. +{platform_log_dir, "/var/log/riak-cs"}. +{platform_gen_dir, "/usr/local/var/lib/riak-cs"}. + +{cs_ip, "127.0.0.1"}. +{cs_port, 8080}. +{admin_ip, "127.0.0.1"}. +{admin_port, 8000}. +{riak_ip, "127.0.0.1"}. +{riak_pb_port, 8087}. +{auth_bypass, false}. +{admin_key, "admin-key"}. +{stanchion_ip, "127.0.0.1"}. +{stanchion_port, 8085}. +{stanchion_ssl, off}. +{cs_version, 030000}. +{rewrite_module, riak_cs_s3_rewrite}. +{auth_module, riak_cs_s3_auth}. + +{node, "riak-cs@127.0.0.1"}. +{crash_dump, "{{platform_log_dir}}/erl_crash.dump"}. + +{data_dir, "{{target_dir}}/data"}. +{runner_script_dir, "\$(cd \\`dirname $0\\` && /bin/pwd)"}. +{runner_base_dir, "{{runner_script_dir}}/.."}. +{runner_etc_dir, "$RUNNER_BASE_DIR/etc"}. +{runner_log_dir, "$RUNNER_BASE_DIR/log"}. +{runner_lib_dir, "$RUNNER_BASE_DIR/lib"}. +{runner_patch_dir, "$RUNNER_BASE_DIR/lib/patches"}. +{pipe_dir, "/tmp/$RUNNER_BASE_DIR/"}. +{runner_user, ""}. +{runner_wait_process, "riak_cs_put_fsm_sup"}. + +{console_log_default, file}. + +{cuttlefish, "on"}. +{cuttlefish_conf, "riak-cs.conf"}. From f73ed90e23514488b64e3b83da7b7dc75b05e522 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 5 Dec 2021 14:16:48 +0200 Subject: [PATCH 251/831] spruce up .gitignore --- .gitignore | 4 ---- rel/.gitignore | 2 ++ rel/pkg/.gitignore | 1 + rel/pkg/out/.gitignore | 4 ---- 4 files changed, 3 insertions(+), 8 deletions(-) create mode 100644 rel/.gitignore create mode 100644 rel/pkg/.gitignore delete mode 100644 rel/pkg/out/.gitignore diff --git a/.gitignore b/.gitignore index 0cb45e3d4..01d62760c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,8 @@ _build/ .eunit/ rel/riak-cs -rel/vars/*_vars.config dev/ -package/ -distdir/ *-riak-cs-debug.tar.gz -current_counterexample.eqc .local_dialyzer_plt *~ diff --git a/rel/.gitignore b/rel/.gitignore new file mode 100644 index 000000000..2af97318d --- /dev/null +++ b/rel/.gitignore @@ -0,0 +1,2 @@ +vars/*_vars.config +riak-cs/ diff --git a/rel/pkg/.gitignore b/rel/pkg/.gitignore new file mode 100644 index 000000000..89f9ac04a --- /dev/null +++ b/rel/pkg/.gitignore @@ -0,0 +1 @@ +out/ diff --git a/rel/pkg/out/.gitignore b/rel/pkg/out/.gitignore deleted file mode 100644 index 5e7d2734c..000000000 --- a/rel/pkg/out/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore From 5f1ef4aa2e9f2f536f8f5031b8f7019301bb1d2b Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 5 Dec 2021 14:28:47 +0200 Subject: [PATCH 252/831] merge 1.x release notes into RELEASE-NOTES.md --- RELEASE-NOTES.ja.md | 650 +++++++++++++++++++++++++++++++++ RELEASE-NOTES.md | 670 ++++++++++++++++++++++++++++++++++- releasenotes/riak-cs.1.ja.md | 647 --------------------------------- releasenotes/riak-cs.1.md | 666 ---------------------------------- 4 files changed, 1318 insertions(+), 1315 deletions(-) delete mode 100644 releasenotes/riak-cs.1.ja.md delete mode 100644 releasenotes/riak-cs.1.md diff --git a/RELEASE-NOTES.ja.md b/RELEASE-NOTES.ja.md index 873729cb7..ec78bb7b0 100644 --- a/RELEASE-NOTES.ja.md +++ b/RELEASE-NOTES.ja.md @@ -686,6 +686,656 @@ Stanchion 1.5.x へダウングレードするには次の手順を各ノード ダウングレードはサポートされていません。これによりダウングレードにはデータファイルの 変換スクリプトが必要です。こちらもご覧ください。[2.0 ダウングレードノート][downgrade_notes]. + +# Riak CS 1.5.4 リリースノート + +## 修正されたバグ + +- バックプレッシャーのスリープ発動後に取得済みのRiakオブジェクトを破棄 + [riak_cs/#1041](https://github.com/basho/riak_cs/pull/1041)。 + これは次の場合に起こり得る Sibling の増加を防ぎます。 + (a) 高い同時実行アップロードによるバックプレッシャーが起動しており、かつ + (b) バックプレッシャーによるスリープ中にアップロードがインターリーブするとき。 + この問題はマルチパートアップロードへは影響しません。 +- 不要なURLデコードを引き起こす S3 API における不正確なURLパスの rewrite 処理。 + [riak_cs/#1040](https://github.com/basho/riak_cs/pull/1040). + URLエンコード・デコードが不正確な事により、 + `%[0-9a-fA-F][0-9a-fA-F]` (正規表現) や `+` を含むオブジェクト名は + 誤ったデコードが実施されていました。この結果、前者は異なるバイナリへ、 + 後者は ` ` (空白) へと置き換わり、どちらの場合でも暗黙的にデータを + 上書きする可能性があります。例えば後者のケースでは、 キー に `+` を含む + オブジェクト(例:`foo+bar`) は、`+` が ` ` に置き換わっただけの、 + ほぼ同じ名前のオブジェクト(`foo bar`)に上書きされます。逆も起こり得ます。 + この修正は次の問題にも関連します: + [riak_cs/#910](https://github.com/basho/riak_cs/pull/910) + [riak_cs/#977](https://github.com/basho/riak_cs/pull/977). + +## アップグレード時の注意 + +Riak CS 1.5.4 へアップグレードすると、デフォルト設定のままでは、 +キーに `%[0-9a-fA-F][0-9a-fA-F]` や `+` を含むオブジェクトは見えなくなり、 +違うオブジェクト名で見えるようになります。 +前者は余分にデコードされたオブジェクトとして参照され、 +後者は ` ` を `+` で置き換えたキー(例: `foo bar`)で参照されるようになります。 + +下記の表はアップグレードの前後で +`%[0-9a-fA-F][0-9a-fA-F]` を含むURLがどう振る舞うかの例です。 + + + | アップグレード前 | アップグレード後 | +:------------|:-------------------------|:------------------| + 書き込み時 | `a%2Fkey` | - | + 読み込み時 | `a%2Fkey` または `a/key` | `a/key` | +リスト表示時 | `a/key` | `a/key` | + +`+` や ` ` を含むオブジェクトのアップグレード前後の例: + + | アップグレード前 | アップグレード後 | +:------------|:-------------------------|:------------------| + 書き込み時 | `a+key` | - | + 読み込み時 | `a+key` または `a key` | `a key` | +リスト表示時 | `a key` | `a key` | + + | アップグレード前 | アップグレード後 | +:------------|:-------------------------|:------------------| + 書き込み時 | `a key` | - | + 読み込み時 | `a+key` または `a key` | `a key` | +リスト表示時 | `a key` | `a key` | + +またこの修正によりアクセスログのフォーマットも単一のURLエンコードから二重エンコードスタイルへ変わります。 +下記は変更前の例です: + +``` +127.0.0.1 - - [07/Jan/2015:08:27:07 +0000] "PUT /buckets/test/objects/path1%2Fpath2%2Fte%2Bst.txt HTTP/1.1" 200 0 "" "" +``` + +そしてこちらが新しいフォーマットです。 + +``` +127.0.0.1 - - [07/Jan/2015:08:27:07 +0000] "PUT /buckets/test/objects/path1%2Fpath2%2Fte%252Bst.txt HTTP/1.1" 200 0 "" "" +``` + +この例から分かるように、オブジェクトのパスが `path1%2Fpath2%2Fte%252Bst.txt` +から `path1%2Fpath2%2Fte%2Bst.txt` へ変わることに注意して下さい。 + +もし Riak CS を利用するアプリケーション側の都合で +以前の挙動のままにしたい場合、アップグレード時に +Riak CSの設定を変更すればそれが可能です。 +この場合、`rewrite_module` 設定を下記のように変更してください: + +```erlang +{riak_cs, [ + %% Other settings + {rewrite_module, riak_cs_s3_rewrite_legacy}, + %% Other settings +]} +``` + +**注意**: 以前の挙動は技術的に不適切であり、 +前述したように暗黙的なデータの上書きが起こり得ます。 +注意の上でご利用下さい。 + +# Riak CS 1.5.3 リリースノート + +## 新規追加 + +- read_before_last_manifest_writeオプションの追加。 + 一部のkeyへの高頻度かつ多並列でのアクセスによるSibling explosionの回避に有効。 + [riak_cs/#1011](https://github.com/basho/riak_cs/pull/1011) +- タイムアウト設定の追加。Riak - Riak CS 間の全アクセスに対してタイムアウトを設定可能にし、運用に柔軟性を提供。 + [riak_cs/#1021](https://github.com/basho/riak_cs/pull/1021) + +## 修正されたバグ + +- ストレージ統計の集計結果に削除済バケットのデータが含まれ得る問題を修正。 + [riak_cs/#996](https://github.com/basho/riak_cs/pull/996) + +# Riak CS 1.5.2 リリースノート + +## 新規追加 + +- Riakに対する接続失敗に関するロギングの改善 + [riak_cs/#987](https://github.com/basho/riak_cs/pull/987). +- Riakに対してアクセス統計情報の保存に失敗した際のログを追加 + [riak_cs/#988](https://github.com/basho/riak_cs/pull/988). + これは一時的な Riak - Riak CS 間の接続エラーによるアクセス統計ログの消失を防ぎます。 + アクセスログは `console.log` へ `warning` レベルで保存されます。 +- 不正なガベージコレクション manifest の修復スクリプトの追加 + [riak_cs/#983](https://github.com/basho/riak_cs/pull/983)。 + active manifest が GCバケットへ保存される際に + [既知の問題](https://github.com/basho/riak_cs/issues/827) があります。 + このスクリプトは不正な状態を正常な状態へ変更します。 + +## 修正されたバグ + +- プロトコルバッファのコネクションプール (`pbc_pool_master`) のリークを修正 + [riak_cs/#986](https://github.com/basho/riak_cs/pull/986) 。 + 存在しないバケットに対する認証ヘッダ無しのリクエストや、ユーザ一覧のリクエストが + コネクションプールのリークを引き起こし、プールは結果的に空になります。このバグは1.5.0から含まれます。 + +# Riak CS 1.5.1 リリースノート + +## 新規追加 + +- Sibling Explosionを避けるために sleep-after-update を追加 [riak_cs/#959](https://github.com/basho/riak_cs/pull/959) +- `riak-cs-debug` の multibag サポート [riak_cs/#930](https://github.com/basho/riak_cs/pull/930) +- Riak CS におけるバケット数に上限を追加 [riak_cs/#950](https://github.com/basho/riak_cs/pull/950) +- バケットの衝突解決を効率化 [riak_cs/#951](https://github.com/basho/riak_cs/pull/951) + +## 修正されたバグ + +- `riak_cs_delete_fsm` のデッドロックによるGCの停止 [riak_cs/#949](https://github.com/basho/riak_cs/pull/949) +- `riak-cs-debug` がログを収集するディレクトリのパスを修正 [riak_cs/#953](https://github.com/basho/riak_cs/pull/953) +- DST-awareなローカルタイムからGMTへの変換を回避 [riak_cs/#954](https://github.com/basho/riak_cs/pull/954) +- Secretの代わりに UUID をカノニカルID生成時のシードに利用 [riak_cs/#956](https://github.com/basho/riak_cs/pull/956) +- マルチパートアップロードにおけるパート数の上限を追加 [riak_cs/#957](https://github.com/basho/riak_cs/pull/957) +- タイムアウトをデフォルトの 5000ms から無限に設定 [riak_cs/#963](https://github.com/basho/riak_cs/pull/963) +- GC バケット内の無効な状態のマニフェストをスキップ [riak_cs/#964](https://github.com/basho/riak_cs/pull/964) + +## アップグレード時の注意点 + +### ユーザー毎のバケット数 + +Riak CS 1.5.1 を使うと、ユーザーが作ることのできるバケット数を制限することができます。 +デフォルトでこの最大値は 100 です。この制限はユーザーの新たなバケット作成を禁止しますが、 +既に制限数を超えているユーザーが実施する、バケット削除を含む他の操作へは影響しません。 +デフォルトの制限を変更するには `app.config` の `riak_cs` セクションで次の箇所を変更してください: + +```erlang +{riak_cs, [ + %% ... + {max_buckets_per_user, 5000}, + %% ... + ]} +``` + +この制限を利用しない場合は `max_buckets_per_user` を `unlimited` に設定してください。 + +# Riak CS 1.5.0 リリースノート + +## 新規追加 + +* `cluster-info` 取得を含む新規コマンド `riak-cs-debug` を追加 [riak_cs/#769](https://github.com/basho/riak_cs/pull/769), [riak_cs/#832](https://github.com/basho/riak_cs/pull/832) +* 既存コマンド群を新規コマンド `riak-cs-admin` へ統合 [riak_cs/#839](https://github.com/basho/riak_cs/pull/839) +* Stanchion の IP、ポートを変更する新規コマンド `riak-cs-admin stanchion` を追加 [riak_cs/#657](https://github.com/basho/riak_cs/pull/657) +* 並行 GC によるガベージコレクション性能の向上 [riak_cs/#830](https://github.com/basho/riak_cs/pull/830) +* Iterator refresh [riak_cs/#805](https://github.com/basho/riak_cs/pull/805) +* `fold_objects_for_list_keys` 設定をデフォルト有効に変更 [riak_cs/#737](https://github.com/basho/riak_cs/pull/737), [riak_cs/#785](https://github.com/basho/riak_cs/pull/785) +* Cache-Control ヘッダーのサポートを追加 [riak_cs/#821](https://github.com/basho/riak_cs/pull/821) +* 猶予期間(`leeway_seconds`)内でもオブジェクトをガベージコレクション可能にする変更 [riak_cs/#470](https://github.com/basho/riak_cs/pull/470) +* オブジェクト、マルチパートともに PUT Copy API を追加 [riak_cs/#548](https://github.com/basho/riak_cs/pull/548) +* lager 2.0.3 へ更新 +* R16B0x をビルド環境に追加 (リリースは R15B01 でビルド) +* `gc_paginated_index` 設定をデフォルト有効に変更 [riak_cs/#881](https://github.com/basho/riak_cs/issues/881) +* 新規 API: Delete Multiple Objects の追加[riak_cs/#728](https://github.com/basho/riak_cs/pull/728) +* マニフェストに対して siblings, バイト、履歴の肥大化を警告するログ追加 [riak_cs/#915](https://github.com/basho/riak_cs/pull/915) + +## 修正されたバグ + +* `ERL_MAX_PORTS` を Riak のデフォルトに合わせ 64000 へ変更 [riak_cs/#636](https://github.com/basho/riak_cs/pull/636) +* Riak CS 管理リソースを OpenStack API でも利用可能にする修正 [riak_cs/#666](https://github.com/basho/riak_cs/pull/666) +* Solaris でのソースビルドのバグ修正のため、パス代入コードの変更 [riak_cs/#733](https://github.com/basho/riak_cs/pull/733) +* `riakc_pb_socket` エラー時の `sanity_check(true,false)` バグを修正 [riak_cs/#683](https://github.com/basho/riak_cs/pull/683) +* Riak-CS-GC のスケジューラタイムスタンプが 2013 ではなく 0043 になるバグを修正 [riak_cs/#713](https://github.com/basho/riak_cs/pull/713) fixed by [riak_cs/#676](https://github.com/basho/riak_cs/pull/676) +* OTP code_server プロセスを過剰に呼び出すバグを修正 [riak_cs/#675](https://github.com/basho/riak_cs/pull/675) +* content-md5 が一致しない場合に HTTP 400 を返すよう修正 [riak_cs/#596](https://github.com/basho/riak_cs/pull/596) +* `/riak-cs/stats` が `admin_auth_enabled=false` の時に動作しないバグを修正. [riak_cs/#719](https://github.com/basho/riak_cs/pull/719) +* ストレージ計算で tombstone および undefined の manifest.props を処理できないバグを修正 [riak_cs/#849](https://github.com/basho/riak_cs/pull/849) +* 未完了のマルチパートオブジェクトが、バケットの削除、作成後にも残るバグを修正 [riak_cs/#857](https://github.com/basho/riak_cs/pull/857) and [stanchion/#78](https://github.com/basho/stanchion/pull/78) +* list multipart upload の空クエリパラメータの扱いを修正 [riak_cs/#843](https://github.com/basho/riak_cs/pull/843) +* PUT Object 時にヘッダ指定の ACL が設定されないバグを修正 [riak_cs/#631](https://github.com/basho/riak_cs/pull/631) +* ping リクエストの poolboy タイムアウト処理を改善 [riak_cs/#763](https://github.com/basho/riak_cs/pull/763) +* 匿名アクセス時の不要なログを削除 [riak_cs/#876](https://github.com/basho/riak_cs/issues/876) +* マルチパートでアップロードされたオブジェクトの ETag 不正を修正 [riak_cs/#855](https://github.com/basho/riak_cs/issues/855) +* PUT Bucket Policy のポリシーバージョン確認の不具合を修正[riak_cs/#911](https://github.com/basho/riak_cs/issues/911) +* コマンド成功時に終了コード 0 を返すよう修正 [riak_cs/#908](https://github.com/basho/riak_cs/issues/908) +* `{error, disconnected}` が内部で notfound に書き換えられる問題を修正 [riak_cs/#929](https://github.com/basho/riak_cs/issues/929) + +## アップグレードに関する注意事項 + +### Riak Version + +このリリースは Riak 1.4.10 上でテストされました。 +[互換性マトリクス](http://docs.basho.com/riakcs/latest/cookbooks/Version-Compatibility/) +を参考に、正しいバージョンを使用していることを確認してください。 + +### 未完了のマルチパートアップロード + +[riak_cs/#475](https://github.com/basho/riak_cs/issues/475) はセキュリティ +に関する問題で、以前に作られた同名のバケットに +対する未完了のマルチパートアップロードが、新しく作成されたバケットに +含まれてしまう可能性があります。これは次のように修正されました。 + +- バケット作成時には、有効なマルチパートが存在するかを確認し、 + 存在する場合には 500 エラーをクライアントに返します。 + +- バケット削除時には、まず存在する有効なマルチパートの削除を試みた後に、 + 有効なマルチパートが存在するかを(Stanchion 上で)再度確認します。 + 存在する場合には 409 エラーをクライアントに返します。 + +1.4.x (またはそれより前のバージョン)から 1.5.0 へのアップグレード後には +いくつかの操作が必要です。 + +- すべてのバケットを正常な状態にするため、 `riak-cs-admin + cleanup-orphan-multipart` を実行します。マルチパートアップロードとバ + ケット削除が競合したときに発生しうるコーナーケースを避けるために、こ + のコマンドは `2014-07-30T11:09:30.000Z`のような、 ISO 8601 形式の日付 + を引数として指定することができます。この引数があるとき、バケットのク + リーンアップ操作はそのタイムスタンプよりも新しいマルチパートアップロー + ドを削除しません。もしこれを指定する場合は、全てのCSノードのアップグ + レードが終わって以降の時間がよいでしょう。 + +- 上記操作が終了するまでの期間は、削除済みのバケットで、未完了のマルチ + パートアップロードを含むバケットは再作成が出来ない場合があります。こ + のような再作成の失敗は [critical] ログ (`"Multipart upload remains + in deleted bucket "`) で確認可能です。 + +### ガベージコレクションの猶予期間(Leeway seconds)とディスク空き容量 + +[riak_cs/#470](https://github.com/basho/riak_cs/pull/470) は、 +オブジェクト削除とガベージコレクションの振る舞いを次のように変更します。 +これまで、ガベージコレクションバケットのタイムスタンプはオブジェクトが +回収される将来の時刻でしたが、削除された時刻そのものへと変わります。 +同時に、ガベージコレクターは現在の時刻までのタイムスタンプを回収していましたが、 +猶予期間(`leeway_seconds`)だけ過去のタイムスタンプまでだけを回収するようになります。 + +以前(- 1.4.x): + +``` + t1 t2 +-----------+--------------------------+-------------------> + DELETE object: GC 実行: + "t1 + leeway" "t2" までの + とマークされる オブジェクトを回収 +``` + +今後(1.5.0-): + +``` + t1 t2 +-----------+--------------------------+-------------------> + DELETE object: GC 実行: + "t1" "t2 - leeway" までの + とマークされる オブジェクトを回収 +``` + +これにより、1.5.0 へのアップグレード直後(仮に`t0`とします)にはオブジェ +クトが回収されない期間ができます。つまり `t0` から `t0 + leeway` までの +期間です。そして `t0` 直前に削除されたオブジェクトは `t0 + 2 * leeway` +時点で回収可能になります。 + +ローリングアップグレードに際しては、GC を実行している CS ノードを +**最初に** アップグレードする必要があります。 +GC を実行しない CS ノードは、猶予期間が正しく動作するために、その後から +アップグレードして下さい。 +また、`riak-cs-admin gc set-interval infinity` コマンドを実行して +ガベージコレクションを無効にしておくと、ノードの順序を +気にすることなくアップグレードが可能です。 + +マルチデータセンター構成のクラスタは、より慎重になる必要があります。 +ガベージコレクションを確実に無効化してからアップグレードしてください。 + +## 既知の問題と制限事項 + +* コピーを実行中にクライアントが次のリクエストを送信するとコピーは中断 + されます。これはクライアントの切断を検出してコピーを中止する機構の副 + 作用です。詳しくは [#932](https://github.com/basho/riak_cs/pull/932) + をご覧ください。 + +* OOSインターフェースでのコピーはサポートされていません。 + +* Multibag はオブジェクトのマニフェストとブロックを複数の異なるクラスタ + に分けて格納する機能です。これは Riak CS Enterprise の機能として追加 + されましたが、技術プレビューの段階にあります。クラスタ間レプリケーショ + ンによる `proxy_get` はサポートされておりません。Multibagは今のところ、 + ひとつのDCでのみ動作するように設計されています。 + +# Riak CS 1.4.5 リリースノート + +## 修正されたバグ + +* list objects v2 fsm のいくつかのデータが「見えない」バグを修正 [riak_cs/788](https://github.com/basho/riak_cs/pull/788) +* HEADリクエスト時にアクセス集計していた問題を修正 [riak_cs/791](https://github.com/basho/riak_cs/pull/791) +* POST/PUTリクエスト時のXML中の空白文字の対処 [riak_cs/795](https://github.com/basho/riak_cs/pull/795) +* ストレージ使用量計算時の誤ったバケット名を修正 [riak_cs/800](https://github.com/basho/riak_cs/pull/800) + Riak CS 1.4.4 で混入したバグにより、そのバージョンを使用している期間の + ストレージ計算はバケット名が文字列 "struct" に置き換わった結果となっていました。 + 本バージョン 1.4.5 でこのバグ自体は修正されましたが、すでに計算済みの古い結果を + さかのぼって修正することは不可能です。バケット名が "struct" に置き換わってしまった + 計算結果では、個別バケットの使用量を知ることはできませんが、その場合であっても + 個々のユーザに関して所有バケットにわたる合計は正しい数字を示します。 +* Unicodeのユーザ名とXMLの対応 [riak_cs/807](https://github.com/basho/riak_cs/pull/807) +* ストレージ使用量で必要なXMLフィールドを追加 [riak_cs/808](https://github.com/basho/riak_cs/pull/808) +* オブジェクトのfoldのタイムアウトを揃えた [riak_cs/811](https://github.com/basho/riak_cs/pull/811) +* 削除されたバケットをユーザーのレコードから削除 [riak_cs/812](https://github.com/basho/riak_cs/pull/812) + +## 新規追加 + +* オブジェクト一覧表示のv2 FSMでプレフィクスを使用する最適化を追加 [riak_cs/804](https://github.com/basho/riak_cs/pull/804) + +# Riak CS 1.4.4 リリースノート + +これはバグフィックスのためのリリースです。統計計算の修正が含まれています。 + +## 修正されたバグ + +* basho-patches ディレクトリが作成されなかった問題を修正 [riak_cs/775](https://github.com/basho/riak_cs/issues/775) . + +* `sum_bucket` のタイムアウトが全ての容量計算をクラッシュさせていた問題を修正 [riak_cs/759](https://github.com/basho/riak_cs/issues/759) . + +* アクセス集計のスロットリング失敗を修正 [riak_cs/758](https://github.com/basho/riak_cs/issues/758) . + +* アクセス集計のクラッシュを修正 [riak_cs/747](https://github.com/basho/riak_cs/issues/747) . + + +# Riak CS 1.4.3 リリースノート + +## 修正された問題 + +- schedule_delete状態のマニフェストがpending_deleteやactive状態へ復帰するバグを修正。 +- 上書きによって既に削除されたマニフェストをカウントしない。 +- 誤ったmd5による上書き操作で、既存バージョンのオブジェクトを削除しない。 + +## 新規追加 + +- マニフェストプルーニングのパフォーマンス改善。 +- GCにおける2iのページングオプションを追加。GC対象データ収集時のタイムアウト対策。 +- ブロック取得処理における接続断のハンドリングを改善。 +- lager 2.0.1へのアップデート。 +- 時刻によるマニフェストプルーニングに個数オプションを追加。 +- 複数アクセスアーカイブプロセスの並行実行を許可。 + +# Riak CS 1.4.2 リリースノート + +## 修正された問題 + +- Debian Linux 上の Enterprise 版ビルドの問題を修正。 +- ソース tarball ビルドの問題を修正。 +- アクセス統計において、正常アクセスがエラーと扱われてしまうバグを修正。 +- Riak バージョン 1.4 以前とあわせて動作するよう、バケットリスト + map フェーズのログを lager バージョンに依存しないよう変更。 +- Riak CS 1.3.0 以前で保存されたマニフェストについて、 `props` フィールド + の `undefined` を正しく扱うよう修正。 + +## 新規追加 + +- 最初のガベージコレクションの遅延を設定する `initial_gc_delay` オプションを追加。 +- ガベージコレクションバケットのキーにランダムなサフィックスを追加し、 + ホットキーの回避と削除の性能を向上。 +- マニフェストに cluster id が指定されていない場合に用いる + `default_proxy_cluster_id` オプションを追加。OSS 版から Enterprise 版への + 移行が容易になる。 + +# Riak CS 1.4.1 リリースノート + +## 修正された問題 + +- 最初の1002個のキーがpending delete状態だったときにlist objectsがクラッシュ + する問題を修正 +- GCデーモンがクラッシュする問題を解決 +- node_packageをアップデートしパッケージ作成の問題を解決 + +# Riak CS 1.4.0 リリースノート + +## 修正された問題 + +- GCバケットで使われていないキーを削除 +- マルチパートアップロードのクエリ文字での認証を修正 +- マルチパートでアップロードされたオブジェクトのストレージクラスを修正 +- マルチパートアップロードされたオブジェクトのetagsを修正 +- Riak CSのマルチバックエンドのインデックス修正をサポート +- GETリクエストの際、通信が遅い場合のメモリ増大を修正 +- アクセス統計処理のメモリ使用量を削減 +- オブジェクトのACL HEADリクエストの際の500を修正 +- マルチパートでアップロードされたオブジェクトの並列アップロードや削除の際の競合の問題を解決 +- Content-md5のヘッダがあった場合に整合性をチェックするように修正 +- Riakとのコネクションが切れた際のハンドリングを修正 + +## 新規追加 + +- Swift APIとKeystone認証のサポートを試験的に追加 +- Riak 1.4.0以降と併用された場合のオブジェクト一覧取得のパフォーマンスを改善 +- ユーザーアカウント名とメールアドレスは変更可能に +- データセンタ間レプリケーションv3のサポートを追加 +- Riakとのコネクションタイムアウトを変更可能に +- Lagerのsyslogサポートを追加 +- データブロックへのリクエスト時は1つのvnodeへアクセス + +# Riak CS 1.3.1 Release Notes + +## Bugs Fixed + +- Fix bug in handling of active object manifests in the case of + overwrite or delete that could lead to old object versions being + resurrected. +- Fix improper capitalization of user metadata header names. +- Fix issue where the S3 rewrite module omits any query parameters + that are not S3 subresources. Also correct handling of query + parameters so that parameter values are not URL decoded twice. This + primarily affects pre-signed URLs because the access key and request + signature are included as query parameters. +- Fix for issue with init script stop. + +# Riak CS 1.3.0 Release Notes + +## Bugs Fixed + +- Fix handling of cases where buckets have siblings. Previously this + resulted in 500 errors returned to the client. +- Reduce likelihood of sibling creation when creating a bucket. +- Return a 404 instead of a 403 when accessing a deleted object. +- Unquote URLs to accommodate clients that URL encode `/` characters + in URLs. +- Deny anonymous service-level requests to avoid unnecessary error + messages trying to list the buckets owned by an undefined user. + +## Additions + +- Support for multipart file uploads. Parts must be in the range of + 5MB-5GB. +- Support for bucket policies using a restricted set of principals and + conditions. +- Support for returning bytes ranges of a file using the Range header. +- Administrative commands may be segrated onto a separate interface. +- Authentication for administrative commands may be disabled. +- Performance and stability improvements for listing the contents of + buckets. +- Support for the prefix, delimiter, and marker options when listing + the contents of a bucket. +- Support for using Webmachine's access logging features in + conjunction with the Riak CS internal access logging mechanism. +- Moved all administrative resources under /riak-cs. +- Riak CS now supports packaging for FreeBSD, SmartOS, and Solaris. + +# Riak CS 1.2.2 Release Notes + +## Bugs Fixed + +- Fix problem where objects with utf-8 unicode key cannot be listed + nor fetched. +- Speed up bucket_empty check and fix process leak. This bug was + originally found when a user was having trouble with `s3cmd + rb s3://foo --recursive`. The operation first tries to delete the + (potentially large) bucket, which triggers our bucket empty + check. If the bucket has more than 32k items, we run out of + processes unless +P is set higher (because of the leak). + +## Additions + +- Full support for MDC replication + +# Riak CS 1.2.1 Release Notes + +## Bugs Fixed + +- Return 403 instead of 404 when a user attempts to list contents of + nonexistent bucket. +- Do not do bucket list for HEAD or ?versioning or ?location request. + +## Additions + +- Add reduce phase for listing bucket contents to provide backpressure + when executing the MapReduce job. +- Use prereduce during storage calculations. +- Return 403 instead of 404 when a user attempts to list contents of + nonexistent bucket. + +# Riak CS 1.2.0 Release Notes + +## Bugs Fixed + +- Do not expose stack traces to users on 500 errors +- Fix issue with sibling creation on user record updates +- Fix crash in terminate state when fsm state is not fully populated +- Script fixes and updates in response to node_package updates + +## Additions + +- Add preliminary support for MDC replication +- Quickcheck test to exercise the erlcloud library against Riak CS +- Basic support for riak_test integration + +# Riak CS 1.1.0 Release Notes + +## Bugs Fixed + +- Check for timeout when checking out a connection from poolboy. +- PUT object now returns 200 instead of 204. +- Fixes for Dialyzer errors and warnings. +- Return readable error message with 500 errors instead of large webmachine backtraces. + +## Additions + +- Update user creation to accept a JSON or XML document for user + creation instead of URL encoded text string. +- Configuration option to allow anonymous users to create accounts. In + the default mode, only the administrator is allowed to create + accounts. +- Ping resource for health checks. +- Support for user-specified metadata headers. +- User accounts may be disabled by the administrator. +- A new key_secret can be issued for a user by the administrator. +- Administrator can now list all system users and optionally filter by + enabled or disabled account status. +- Garbage collection for deleted and overwritten objects. +- Separate connection pool for object listings with a default of 5 + connections. +- Improved performance for listing all objects in a bucket. +- Statistics collection and querying. +- DTrace probing. + +# Riak CS 1.0.2 Release Notes + +## Additions + +- Support query parameter authentication as specified in [[http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAuthentication.html][Signing and Authenticating REST Requests]]. + +# Riak CS 1.0.1 Release Notes + +## Bugs Fixed + +- Default content-type is not passed into function to handle PUT + request body +- Requests hang when a node in the Riak cluster is unavailable +- Correct inappropriate use of riak_moss_utils:get_user by + riak_moss_acl_utils:get_owner_data + +# Riak CS 1.0.0 Release Notes + +## Bugs Fixed + +- Fix PUTs for zero-byte files +- Fix fsm initialization race conditions +- Canonicalize the entire path if there is no host header, but there are + tokens +- Fix process and socket leaks in get fsm + +## Other Additions + +- Subsystem for calculating user access and storage usage +- Fixed-size connection pool of Riak connections +- Use a single Riak connection per request to avoid deadlock conditions +- Object ACLs +- Management for multiple versions of a file manifest +- Configurable block size and max content length +- Support specifying non-default ACL at bucket creation time + +# Riak CS 0.1.2 Release Notes + +## Bugs Fixed + +- Return 403 instead of 503 for invalid anonymous or signed requests. +- Properly clean up processes and connections on object requests. + +# Riak CS 0.1.1 Release Notes + +## Bugs Fixed + +- HEAD requests always result in a `403 Forbidden`. +- `s3cmd info` on a bucket object results in an error due to missing + ACL document. +- Incorrect atom specified in `riak_moss_wm_utils:parse_auth_header`. +- Bad match condition used in `riak_moss_acl:has_permission/2`. + +# Riak CS 0.1.0 Release Notes + +## Bugs Fixed + +- `s3cmd info` fails due to missing `'last-modified` key in return document. +- `s3cmd get` of 0 byte file fails. +- Bucket creation fails with status code `415` using the AWS Java SDK. + +## Other Additions + +- Bucket-level access control lists +- User records have been modified so that an system-wide unique email + address is required to create a user. +- User creation requests are serialized through `stanchion` to be + certain the email address is unique. +- Bucket creation and deletion requests are serialized through + `stanchion` to ensure bucket names are unique in the system. +- The `stanchion` serialization service is now required to be installed + and running for the system to be fully operational. +- The concept of an administrative user has been added to the system. The credentials of the + administrative user must be added to the app.config files for `moss` and `stanchion`. +- User credentials are now created using a url-safe base64 encoding module. + +## Known Issues + +- Object-level access control lists have not yet been implemented. + +# Riak CS 0.0.3 Release Notes + +## Bugs Fixed + +- URL decode keys on put so they are represented correctly. This + eliminates confusion when objects with spaces in their names are + listed and when attempting to access them. +- Properly handle zero-byte files +- Reap all processes during file puts + +## Other Additions + +- Support for the s3cmd subcommands sync, du, and rb + + - Return valid size and checksum for each object when listing bucket objects. + - Changes so that a bucket may be deleted if it is empty. + +- Changes so a subdirectory path can be specified when storing or retrieving files. +- Make buckets private by default +- Support the prefix query parameter +- Enhance process dependencies for improved failure handling + +## Known Issues + +- Buckets are marked as /private/ by default, but globally-unique + bucket names are not enforced. This means that two users may + create the same bucket and this could result in unauthorized + access and unintentional overwriting of files. This will be + addressed in a future release by ensuring that bucket names are + unique across the system. + + [riak_1.4_release_notes]: https://github.com/basho/riak/blob/1.4/RELEASE-NOTES.ja.md [riak_2.0_release_notes]: https://github.com/basho/riak/blob/2.0/RELEASE-NOTES.ja.md [riak_2.0_release_notes_bitcask]: https://github.com/basho/riak/blob/2.0/RELEASE-NOTES.ja.md#bitcask diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 90bccc1d5..699a89611 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -872,6 +872,674 @@ Bitcask data files is not. For this reason downgrading requires a script to translate data files. See also the [2.0 downgrade notes][downgrade_notes]. +# Riak CS 1.5.4 Release Notes + +## Bugs Fixed + +- Disable previous Riak object after backpressure sleep is triggered + [riak_cs/#1041](https://github.com/basho/riak_cs/pull/1041). This + change prevents unnecessary siblings growth in cases where (a) + backpressure is triggered under high upload concurrency and (b) + uploads are interleaved during backpressure sleep. This issue does not + affect multipart uploads. +- Fix an incorrect path rewrite in the S3 API caused by unnecessary URL + decoding + [riak_cs/#1040](https://github.com/basho/riak_cs/pull/1040). Due to + the incorrect handling of URL encoding/decoding, object keys including + `%[0-9a-fA-F][0-9a-fA-F]` (as a regular expression) or `+` had been + mistakenly decoded. As a consequence, the former case was decoded to + some other binary and for the latter case (`+`) was replaced with ` ` + (space). In both cases, there was a possibility of an implicit data + overwrite. For the latter case, an overwrite occurs for an object + including `+` in its key (e.g. `foo+bar`) by a different object with a + name that is largely similar but replaced with ` ` (space, e.g. `foo + bar`), and vice versa. This fix also addresses + [riak_cs/#910](https://github.com/basho/riak_cs/pull/910) and + [riak_cs/#977](https://github.com/basho/riak_cs/pull/977). + +## Notes on upgrading + +After upgrading to Riak CS 1.5.4, objects including +`%[0-9a-fA-F][0-9a-fA-F]` or `+` in their key (e.g. `foo+bar`) become +invisible and can be seen as objects with a different name. For the +former case, objects will be referred as unnecessary decoded key. For +the latter case, those objects will be referred as keys `+` replaced +with ` ` (e.g. `foo bar`) by default. + +The table below provides examples for URLs including +`%[0-9a-fA-F][0-9a-fA-F]` and how they will work before and after the +upgrade. + + | before upgrade | after upgrade | +:-----------|:-------------------|:--------------| + written as | `a%2Fkey` | - | + read as | `a%2Fkey`or`a/key` | `a/key` | + listed as | `a/key` | `a/key` | + +Examples on unique objects including `+` or ` ` through upgrade: + + | before upgrade | after upgrade | +:-----------|------------------|---------------| + written as | `a+key` | - | + read as | `a+key`or`a key` | `a key` | + listed as | `a key` | `a key` | + + | before upgrade | after upgrade | +------------|------------------|---------------| + written as | `a key` | - | + read as | `a+key`or`a key` | `a key` | + listed as | `a key` | `a key` | + +This fix also changes the path format in access logs from the single +URL-encoded style to the doubly-encoded URL style. Below is an example +of the old style: + +``` +127.0.0.1 - - [07/Jan/2015:08:27:07 +0000] "PUT /buckets/test/objects/path1%2Fpath2%2Fte%2Bst.txt HTTP/1.1" 200 0 "" "" +``` + +Below is an example of the new style: + +``` +127.0.0.1 - - [07/Jan/2015:08:27:07 +0000] "PUT /buckets/test/objects/path1%2Fpath2%2Fte%252Bst.txt HTTP/1.1" 200 0 "" "" +``` + +Note that the object path has changed from +`path1%2Fpath2%2Fte%2Bst.txt` to `path1%2Fpath2%2Fte%252Bst.txt` between +the two examples shown. + +If the old behavior is preferred, perhaps because +applications using Riak CS have been written to use it, you can retain +that behavior by modifying your Riak CS configuration upon upgrade. +Change the `rewrite_module` setting as follows: + +```erlang +{riak_cs, [ + %% Other settings + {rewrite_module, riak_cs_s3_rewrite_legacy}, + %% Other settings +]} +``` + +**Note**: The old behavior is technically incorrect and implicitly +overwrites data in the ways described above, so please retain the old +behavior with caution. + +# Riak CS 1.5.3 Release Notes + +## Additions + +- Add read_before_last_manifest_write option to help avoid sibling + explosion for use cases involving high churn and concurrency on a + fixed set of keys. [riak_cs/#1011](https://github.com/basho/riak_cs/pull/1011) +- Add configurable timeouts for all Riak CS interactions with Riak to + provide more flexibility in operational + situations. [riak_cs/#1021](https://github.com/basho/riak_cs/pull/1021) + +## Bugs Fixed + +- Fix storage usage calculation bug where data for deleted buckets + would be included in the calculation + results. [riak_cs/#996](https://github.com/basho/riak_cs/pull/996) + +# Riak CS 1.5.2 Release Notes + +## Additions + +- Improved logging around connection failures with Riak + [riak_cs/#987](https://github.com/basho/riak_cs/pull/987). +- Add amendment log output when storing access stats into Riak failed + [riak_cs/#988](https://github.com/basho/riak_cs/pull/988). This + prevents losing access stats logs in cases of temporary connection + failure between Riak and Riak CS. Access logs are stored in + `console.log` at the `warning` level. +- Add script to repair invalid garbage collection manifests + [riak_cs/#983](https://github.com/basho/riak_cs/pull/983). There is + a [known issue](https://github.com/basho/riak_cs/issues/827) where + an active manifest would be stored in the GC bucket. This script + changes invalid state to valid state. + +## Bugs Fixed + +- Fix Protocol Buffer connection pool (`pbc_pool_master`) leak + [riak_cs/#986](https://github.com/basho/riak_cs/pull/986) . Requests + for non-existent buckets without an authorization header and + requests asking for listing users make connections leak from the + pool, causing the pool to eventually go empty. This bug was introduced + in release 1.5.0. + +# Riak CS 1.5.1 Release Notes + +## Additions + +- Add sleep-after-update manifests to avoid sibling explosion [riak_cs/#959](https://github.com/basho/riak_cs/pull/959) +- Multibag support on `riak-cs-debug` [riak_cs/#930](https://github.com/basho/riak_cs/pull/930) +- Add bucket number limit check in Riak CS process [riak_cs/#950](https://github.com/basho/riak_cs/pull/950) +- More efficient bucket resolution [riak_cs/#951](https://github.com/basho/riak_cs/pull/951) + +## Bugs Fixed + +- GC may stall due to `riak_cs_delete_fsm` deadlock [riak_cs/#949](https://github.com/basho/riak_cs/pull/949) +- Fix wrong log directory for gathering logs on `riak-cs-debug` [riak_cs/#953](https://github.com/basho/riak_cs/pull/953) +- Avoid DST-aware translation from local time to GMT [riak_cs/#954](https://github.com/basho/riak_cs/pull/954) +- Use new UUID for seed of canonical ID instead of secret [riak_cs/#956](https://github.com/basho/riak_cs/pull/956) +- Add max part number limitation [riak_cs/#957](https://github.com/basho/riak_cs/pull/957) +- Set timeout as infinity to replace the default of 5000ms [riak_cs/#963](https://github.com/basho/riak_cs/pull/963) +- Skip invalid state manifests in GC bucket [riak_cs/#964](https://github.com/basho/riak_cs/pull/964) + +## Notes on Upgrading + +### Bucket number per user + +Beginning with Riak CS 1.5.1, you can limit the number of buckets that +can be created per user. The default maximum number is 100. While this +limitation prohibits the creation of new buckets by users, users that +exceed the limit can still perform other operations, including bucket +deletion. To change the default limit, add the following line to the +`riak_cs` section of `app.config`: + + +```erlang +{riak_cs, [ + %% ... + {max_buckets_per_user, 5000}, + %% ... + ]} +``` + +To avoid having a limit, set `max_buckets_per_user` to `unlimited`. + +# Riak CS 1.5.0 Release Notes + +## Additions + +* A new command `riak-cs-debug` including `cluster-info` [riak_cs/#769](https://github.com/basho/riak_cs/pull/769), [riak_cs/#832](https://github.com/basho/riak_cs/pull/832) +* Tie up all existing commands into a new command `riak-cs-admin` [riak_cs/#839](https://github.com/basho/riak_cs/pull/839) +* Add a command `riak-cs-admin stanchion` to switch Stanchion IP and port manually [riak_cs/#657](https://github.com/basho/riak_cs/pull/657) +* Performance of garbage collection has been improved via Concurrent GC [riak_cs/#830](https://github.com/basho/riak_cs/pull/830) +* Iterator refresh [riak_cs/#805](https://github.com/basho/riak_cs/pull/805) +* `fold_objects_for_list_keys` made default in Riak CS [riak_cs/#737](https://github.com/basho/riak_cs/pull/737), [riak_cs/#785](https://github.com/basho/riak_cs/pull/785) +* Add support for Cache-Control header [riak_cs/#821](https://github.com/basho/riak_cs/pull/821) +* Allow objects to be reaped sooner than leeway interval. [riak_cs/#470](https://github.com/basho/riak_cs/pull/470) +* PUT Copy on both objects and upload parts [riak_cs/#548](https://github.com/basho/riak_cs/pull/548) +* Update to lager 2.0.3 +* Compiles with R16B0x (Releases still by R15B01) +* Change default value of `gc_paginated_index` to `true` [riak_cs/#881](https://github.com/basho/riak_cs/issues/881) +* Add new API: Delete Multiple Objects [riak_cs/#728](https://github.com/basho/riak_cs/pull/728) +* Add warning logs for manifests, siblings, bytes and history [riak_cs/#915](https://github.com/basho/riak_cs/pull/915) + +## Bugs Fixed + +* Align `ERL_MAX_PORTS` with Riak default: 64000 [riak_cs/#636](https://github.com/basho/riak_cs/pull/636) +* Allow Riak CS admin resources to be used with OpenStack API [riak_cs/#666](https://github.com/basho/riak_cs/pull/666) +* Fix path substitution code to fix Solaris source builds [riak_cs/#733](https://github.com/basho/riak_cs/pull/733) +* `sanity_check(true,false)` logs invalid error on `riakc_pb_socket` error [riak_cs/#683](https://github.com/basho/riak_cs/pull/683) +* Riak-CS-GC timestamp for scheduler is in the year 0043, not 2013. [riak_cs/#713](https://github.com/basho/riak_cs/pull/713) fixed by [riak_cs/#676](https://github.com/basho/riak_cs/pull/676) +* Excessive calls to OTP code_server process #669 fixed by [riak_cs/#675](https://github.com/basho/riak_cs/pull/675) +* Return HTTP 400 if content-md5 does not match [riak_cs/#596](https://github.com/basho/riak_cs/pull/596) +* `/riak-cs/stats` and `admin_auth_enabled=false` don't work together correctly. [riak_cs/#719](https://github.com/basho/riak_cs/pull/719) +* Storage calculation doesn't handle tombstones, nor handle undefined manifest.props [riak_cs/#849](https://github.com/basho/riak_cs/pull/849) +* MP initiated objects remains after delete/create buckets #475 fixed by [riak_cs/#857](https://github.com/basho/riak_cs/pull/857) and [stanchion/#78](https://github.com/basho/stanchion/pull/78) +* handling empty query string on list multipart upload [riak_cs/#843](https://github.com/basho/riak_cs/pull/843) +* Setting ACLs via headers at PUT Object creation [riak_cs/#631](https://github.com/basho/riak_cs/pull/631) +* Improve handling of poolboy timeouts during ping requests [riak_cs/#763](https://github.com/basho/riak_cs/pull/763) +* Remove unnecessary log message on anonymous access [riak_cs/#876](https://github.com/basho/riak_cs/issues/876) +* Fix inconsistent ETag on objects uploaded by multipart [riak_cs/#855](https://github.com/basho/riak_cs/issues/855) +* Fix policy version validation in PUT Bucket Policy [riak_cs/#911](https://github.com/basho/riak_cs/issues/911) +* Fix return code of several commands, to return 0 for success [riak_cs/#908](https://github.com/basho/riak_cs/issues/908) +* Fix `{error, disconnected}` repainted with notfound [riak_cs/#929](https://github.com/basho/riak_cs/issues/929) + +## Notes on Upgrading + +### Riak Version + +This release of Riak CS was tested with Riak 1.4.10. Be sure to +consult the +[Compatibility Matrix](http://docs.basho.com/riakcs/latest/cookbooks/Version-Compatibility/) +to ensure that you are using the correct version. + +### Incomplete multipart uploads + +[riak_cs/#475](https://github.com/basho/riak_cs/issues/475) was a +security issue where a newly created bucket may include unaborted or +incomplete multipart uploads which was created in previous epoch of +the bucket with same name. This was fixed by: + +- on creating buckets; checking if live multipart exists and if + exists, return 500 failure to client. + +- on deleting buckets; trying to clean up all live multipart remains, + and checking if live multipart remains (in stanchion). if exists, + return 409 failure to client. + +Note that a few operations are needed after upgrading from 1.4.x (or +former) to 1.5.0. + +- run `riak-cs-admin cleanup-orphan-multipart` to cleanup all + buckets. To avoid some corner cases where multipart uploads can + conflict with bucket deletion, this command can also be run with a + timestamp with ISO 8601 format such as `2014-07-30T11:09:30.000Z` as + an argument. When this argument is provided, the cleanup operation + will not clean up multipart uploads that are newer than the provided + timestamp. If used, this should be set to a time when you expect + your upgrade to be completed. + +- there might be a time period until above cleanup finished, where no + client can create bucket if unfinished multipart upload remains + under deleted bucket. You can find [critical] log (`"Multipart + upload remains in deleted bucket "`) if such bucket + creation is attempted. + +### Leeway seconds and disk space + +[riak_cs/#470](https://github.com/basho/riak_cs/pull/470) changed the +behaviour of object deletion and garbage collection. The timestamps in +garbage collection bucket were changed from the future time when the +object is to be deleted, to the current time when the object is +deleted, Garbage collector was also changed to collect objects until +'now - leeway seconds', from collecting objects until 'now'. + +Before (-1.4.x): + +``` + t1 t2 +-----------+--------------------------+-------------------> + DELETE object: GC triggered: + marked as collects objects + "t1+leeway" marked as "t2" +``` + +After (1.5.0-): + +``` + t1 t2 +-----------+--------------------------+-------------------> + DELETE object: GC triggered: + marked as "t1" collects objects + in GC bucket marked as "t2 - leeway" +``` + +This means that there will be a period where no objects are collected +immediately following an upgrade to 1.5.0. If your cluster is upgraded +at `t0`, no objects will be cleaned up until `t0 + leeway` . Objects +deleted just before `t0` won't be collected until `t0 + 2*leeway` . + +Also, all CS nodes which run GC should be upgraded *first.* CS nodes +which do not run GC should be upgraded later, to ensure the leeway +setting is intiated properly. Alternatively, you may stop GC while +upgrading, by running `riak-cs-admin gc set-interval infinity` . + +Multi data center cluster should be upgraded more carefully, as to +make sure GC is not running while upgrading. + +## Known Issues and Limitations + +* If a second client request is made using the same connection while a + copy operation is in progress, the copy will be aborted. This is a + side effect of the way Riak CS currently handles client disconnect + detection. See [#932](https://github.com/basho/riak_cs/pull/932) for + further information. + +* Copying objects in OOS interface is not yet implemented. + +* Multibag, the ability to store object manifests and blocks in + separate clusters or groups of clusters, has been added as + Enterprise feature, but it is in early preview status. `proxy_get` + has not yet been implemented for this preview feature. Multibag is + intended for single DC only at this time. + +# Riak CS 1.4.5 Release Notes + +## Bugs Fixed + +* Fix several 'data hiding' bugs with the v2 list objects FSM [riak_cs/788](https://github.com/basho/riak_cs/pull/788) +* Don't treat HEAD requests toward BytesOut in access statistics [riak_cs/791](https://github.com/basho/riak_cs/pull/791) +* Handle whitespace in POST/PUT XML documents [riak_cs/795](https://github.com/basho/riak_cs/pull/795) +* Fix bad bucketname in storage usage [riak_cs/800](https://github.com/basho/riak_cs/pull/800) + Riak CS 1.4.4 introduced a bug where storage calculations made while running + that version would have the bucket-name replaced by the string "struct". This + version fixes the bug, but can't go back and retroactively fix the old + storage calculations. Aggregations on an entire user-account should still + be accurate, but you won't be able to break-down storage by bucket, as they + will all share the name "struct". +* Handle unicode user-names and XML [riak_cs/807](https://github.com/basho/riak_cs/pull/807) +* Fix missing XML fields on storage usage [riak_cs/808](https://github.com/basho/riak_cs/pull/808) +* Adjust fold-objects timeout [riak_cs/811](https://github.com/basho/riak_cs/pull/811) +* Prune deleted buckets from user record [riak_cs/812](https://github.com/basho/riak_cs/pull/812) + +## Additions + +* Optimize the list objects v2 FSM for prefix requests [riak_cs/804](https://github.com/basho/riak_cs/pull/804) + +# Riak CS 1.4.4 Release Notes + +This is a bugfix release. The major fixes are to the storage calculation. + +## Bugs Fixed + +* Create basho-patches directory [riak_cs/775](https://github.com/basho/riak_cs/issues/775) . + +* `sum_bucket` timeout crashes all storage calculation is fixed by [riak_cs/759](https://github.com/basho/riak_cs/issues/759) . + +* Failure to throttle access archiver is fixed by [riak_cs/758](https://github.com/basho/riak_cs/issues/758) . + +* Access archiver crash is fixed by [riak_cs/747](https://github.com/basho/riak_cs/issues/747) . + + +# Riak CS 1.4.3 Release Notes + +## Bugs Fixed + +- Fix bug that reverted manifests in the scheduled_delete state to the + pending_delete or active state. +- Don't count already deleted manifests as overwritten +- Don't delete current object version on overwrite with incorrect md5 + +## Additions + +- Improve performance of manifest pruning +- Optionally use paginated 2i for the GC daemon. This is to help prevent + timeouts when collecting data that can be garbage collected. +- Improve handling of Riak disconnects on block fetches +- Update to lager 2.0.1 +- Optionally prune manifests based on count, in addition to time +- Allow multiple access archiver processes to run concurrently + +# Riak CS 1.4.2 Release Notes + +## Bugs Fixed + +- Fix issue with Enterprise build on Debian Linux distributions. +- Fix source tarball build. +- Fix access statistics bug that caused all accesses to be treated as + errors. +- Make logging in bucket listing map phase function lager version + agnostic to avoid issues when using versions of Riak older than 1.4. +- Handle undefined `props` field in manifests to fix issue accessing + objects written with a version of Riak CS older than 1.3.0. + +## Additions + +- Add option to delay initial GC sweep on a node using the + initial_gc_delay configuration option. +- Append random suffix to GC bucket keys to avoid hot keys and improve + performance during periods of frequent deletion. +- Add default_proxy_cluster_id option to provide a way to specify a + default cluster id to be used when the cluster id is undefined. This is + to facilitate migration from the OSS version to the + Enterprise version. + +# Riak CS 1.4.1 Release Notes + +## Bugs Fixed + +- Fix list objects crash when more than the first 1001 keys are in + the pending delete state +- Fix crash in garbage collection daemon +- Fix packaging bug by updating node_package dependency + +# Riak CS 1.4.0 Release Notes + +## Bugs Fixed + +- Remove unnecessary keys in GC bucket +- Fix query-string authentication for multi-part uploads +- Fix Storage Class for multi-part uploaded objects +- Fix etags for multi-part uploads +- Support reformat indexes in the Riak CS multi-backend +- Fix unbounded memory-growth on GET requests with a slow connection +- Reduce access-archiver memory use +- Fix 500 on object ACL HEAD request +- Fix semantics for concurrent upload and delete of the same key with a + multi-part upload +- Verify content-md5 header if supplied +- Handle transient Riak connection failures + +## Additions + +- Add preliminary support for the Swift API and Keystone authentication +- Improve performance of object listing when using Riak 1.4.0 or greater +- Add ability to edit user account name and email address +- Add support for v3 multi-data-center replication +- Add configurable Riak connection timeouts +- Add syslog support via Lager +- Only contact one vnode for immutable block requests + +# Riak CS 1.3.1 Release Notes + +## Bugs Fixed +- Fix bug in handling of active object manifests in the case of + overwrite or delete that could lead to old object versions being + resurrected. +- Fix improper capitalization of user metadata header names. +- Fix issue where the S3 rewrite module omits any query parameters + that are not S3 subresources. Also correct handling of query + parameters so that parameter values are not URL decoded twice. This + primarily affects pre-signed URLs because the access key and request + signature are included as query parameters. +- Fix for issue with init script stop. + +# Riak CS 1.3.0 Release Notes + +## Bugs Fixed + +- Fix handling of cases where buckets have siblings. Previously this + resulted in 500 errors returned to the client. +- Reduce likelihood of sibling creation when creating a bucket. +- Return a 404 instead of a 403 when accessing a deleted object. +- Unquote URLs to accommodate clients that URL encode `/` characters + in URLs. +- Deny anonymous service-level requests to avoid unnecessary error + messages trying to list the buckets owned by an undefined user. + +## Additions + +- Support for multipart file uploads. Parts must be in the range of + 5MB-5GB. +- Support for bucket policies using a restricted set of principals and + conditions. +- Support for returning bytes ranges of a file using the Range header. +- Administrative commands may be segrated onto a separate interface. +- Authentication for administrative commands may be disabled. +- Performance and stability improvements for listing the contents of + buckets. +- Support for the prefix, delimiter, and marker options when listing + the contents of a bucket. +- Support for using Webmachine's access logging features in + conjunction with the Riak CS internal access logging mechanism. +- Moved all administrative resources under /riak-cs. +- Riak CS now supports packaging for FreeBSD, SmartOS, and Solaris. + +# Riak CS 1.2.2 Release Notes + +## Bugs Fixed + +- Fix problem where objects with utf-8 unicode key cannot be listed + nor fetched. +- Speed up bucket_empty check and fix process leak. This bug was + originally found when a user was having trouble with `s3cmd + rb s3://foo --recursive`. The operation first tries to delete the + (potentially large) bucket, which triggers our bucket empty + check. If the bucket has more than 32k items, we run out of + processes unless +P is set higher (because of the leak). + +## Additions + +- Full support for MDC replication + +# Riak CS 1.2.1 Release Notes + +## Bugs Fixed + +- Return 403 instead of 404 when a user attempts to list contents of + nonexistent bucket. +- Do not do bucket list for HEAD or ?versioning or ?location request. + +## Additions + +- Add reduce phase for listing bucket contents to provide backpressure + when executing the MapReduce job. +- Use prereduce during storage calculations. +- Return 403 instead of 404 when a user attempts to list contents of + nonexistent bucket. + +# Riak CS 1.2.0 Release Notes + +## Bugs Fixed + +- Do not expose stack traces to users on 500 errors +- Fix issue with sibling creation on user record updates +- Fix crash in terminate state when fsm state is not fully populated +- Script fixes and updates in response to node_package updates + +## Additions + +- Add preliminary support for MDC replication +- Quickcheck test to exercise the erlcloud library against Riak CS +- Basic support for riak_test integration + +# Riak CS 1.1.0 Release Notes + +## Bugs Fixed + +- Check for timeout when checking out a connection from poolboy. +- PUT object now returns 200 instead of 204. +- Fixes for Dialyzer errors and warnings. +- Return readable error message with 500 errors instead of large webmachine backtraces. + +## Additions + +- Update user creation to accept a JSON or XML document for user + creation instead of URL encoded text string. +- Configuration option to allow anonymous users to create accounts. In + the default mode, only the administrator is allowed to create + accounts. +- Ping resource for health checks. +- Support for user-specified metadata headers. +- User accounts may be disabled by the administrator. +- A new key_secret can be issued for a user by the administrator. +- Administrator can now list all system users and optionally filter by + enabled or disabled account status. +- Garbage collection for deleted and overwritten objects. +- Separate connection pool for object listings with a default of 5 + connections. +- Improved performance for listing all objects in a bucket. +- Statistics collection and querying. +- DTrace probing. + +# Riak CS 1.0.2 Release Notes + +## Additions + +- Support query parameter authentication as specified in [Signing and Authenticating REST Requests](http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAuthentication.html) + +# Riak CS 1.0.1 Release Notes + +## Bugs Fixed + +- Default content-type is not passed into function to handle PUT + request body +- Requests hang when a node in the Riak cluster is unavailable +- Correct inappropriate use of riak_moss_utils:get_user by + riak_moss_acl_utils:get_owner_data + +# Riak CS 1.0.0 Release Notes + +## Bugs Fixed + +- Fix PUTs for zero-byte files +- Fix fsm initialization race conditions +- Canonicalize the entire path if there is no host header, but there are + tokens +- Fix process and socket leaks in get fsm + +## Other Additions + +- Subsystem for calculating user access and storage usage +- Fixed-size connection pool of Riak connections +- Use a single Riak connection per request to avoid deadlock conditions +- Object ACLs +- Management for multiple versions of a file manifest +- Configurable block size and max content length +- Support specifying non-default ACL at bucket creation time + +# Riak CS 0.1.2 Release Notes + +## Bugs Fixed + +- Return 403 instead of 503 for invalid anonymous or signed requests. +- Properly clean up processes and connections on object requests. + +# Riak CS 0.1.1 Release Notes + +## Bugs Fixed + +- HEAD requests always result in a `403 Forbidden`. +- `s3cmd info` on a bucket object results in an error due to missing + ACL document. +- Incorrect atom specified in `riak_moss_wm_utils:parse_auth_header`. +- Bad match condition used in `riak_moss_acl:has_permission/2`. + +# Riak CS 0.1.0 Release Notes + +## Bugs Fixed + +- `s3cmd info` fails due to missing `'last-modified` key in return document. +- `s3cmd get` of 0 byte file fails. +- Bucket creation fails with status code `415` using the AWS Java SDK. + +## Other Additions + +- Bucket-level access control lists +- User records have been modified so that an system-wide unique email + address is required to create a user. +- User creation requests are serialized through `stanchion` to be + certain the email address is unique. +- Bucket creation and deletion requests are serialized through + `stanchion` to ensure bucket names are unique in the system. +- The `stanchion` serialization service is now required to be installed + and running for the system to be fully operational. +- The concept of an administrative user has been added to the system. The credentials of the + administrative user must be added to the app.config files for `moss` and `stanchion`. +- User credentials are now created using a url-safe base64 encoding module. + +## Known Issues + +- Object-level access control lists have not yet been implemented. + +# Riak CS 0.0.3 Release Notes + +## Bugs Fixed + +- URL decode keys on put so they are represented correctly. This + eliminates confusion when objects with spaces in their names are + listed and when attempting to access them. +- Properly handle zero-byte files +- Reap all processes during file puts + +## Other Additions + +- Support for the s3cmd subcommands sync, du, and rb + + - Return valid size and checksum for each object when listing bucket objects. + - Changes so that a bucket may be deleted if it is empty. + +- Changes so a subdirectory path can be specified when storing or retrieving files. +- Make buckets private by default +- Support the prefix query parameter + +- Enhance process dependencies for improved failure handling + +## Known Issues + +- Buckets are marked as /private/ by default, but globally-unique + bucket names are not enforced. This means that two users may + create the same bucket and this could result in unauthorized + access and unintentional overwriting of files. This will be + addressed in a future release by ensuring that bucket names are + unique across the system. + + [riak_1.4_release_notes]: https://github.com/basho/riak/blob/1.4/RELEASE-NOTES.md [riak_2.0_release_notes]: https://github.com/basho/riak/blob/2.0/RELEASE-NOTES.md @@ -889,5 +1557,3 @@ translate data files. See also the [2.0 downgrade notes][downgrade_notes]. [upgrading_your_configuration]: http://docs.basho.com/riak/2.0.5/upgrade-v20/#Upgrading-Your-Configuration-System [storage_statistics]: http://docs.basho.com/riakcs/latest/cookbooks/Usage-and-Billing-Data/#Storage-Statistics [downgrade_notes]: https://github.com/basho/riak/wiki/2.0-downgrade-notes - - diff --git a/releasenotes/riak-cs.1.ja.md b/releasenotes/riak-cs.1.ja.md deleted file mode 100644 index 23fed7906..000000000 --- a/releasenotes/riak-cs.1.ja.md +++ /dev/null @@ -1,647 +0,0 @@ -# Riak CS 1.5.4 リリースノート - -## 修正されたバグ - -- バックプレッシャーのスリープ発動後に取得済みのRiakオブジェクトを破棄 - [riak_cs/#1041](https://github.com/basho/riak_cs/pull/1041)。 - これは次の場合に起こり得る Sibling の増加を防ぎます。 - (a) 高い同時実行アップロードによるバックプレッシャーが起動しており、かつ - (b) バックプレッシャーによるスリープ中にアップロードがインターリーブするとき。 - この問題はマルチパートアップロードへは影響しません。 -- 不要なURLデコードを引き起こす S3 API における不正確なURLパスの rewrite 処理。 - [riak_cs/#1040](https://github.com/basho/riak_cs/pull/1040). - URLエンコード・デコードが不正確な事により、 - `%[0-9a-fA-F][0-9a-fA-F]` (正規表現) や `+` を含むオブジェクト名は - 誤ったデコードが実施されていました。この結果、前者は異なるバイナリへ、 - 後者は ` ` (空白) へと置き換わり、どちらの場合でも暗黙的にデータを - 上書きする可能性があります。例えば後者のケースでは、 キー に `+` を含む - オブジェクト(例:`foo+bar`) は、`+` が ` ` に置き換わっただけの、 - ほぼ同じ名前のオブジェクト(`foo bar`)に上書きされます。逆も起こり得ます。 - この修正は次の問題にも関連します: - [riak_cs/#910](https://github.com/basho/riak_cs/pull/910) - [riak_cs/#977](https://github.com/basho/riak_cs/pull/977). - -## アップグレード時の注意 - -Riak CS 1.5.4 へアップグレードすると、デフォルト設定のままでは、 -キーに `%[0-9a-fA-F][0-9a-fA-F]` や `+` を含むオブジェクトは見えなくなり、 -違うオブジェクト名で見えるようになります。 -前者は余分にデコードされたオブジェクトとして参照され、 -後者は ` ` を `+` で置き換えたキー(例: `foo bar`)で参照されるようになります。 - -下記の表はアップグレードの前後で -`%[0-9a-fA-F][0-9a-fA-F]` を含むURLがどう振る舞うかの例です。 - - - | アップグレード前 | アップグレード後 | -:------------|:-------------------------|:------------------| - 書き込み時 | `a%2Fkey` | - | - 読み込み時 | `a%2Fkey` または `a/key` | `a/key` | -リスト表示時 | `a/key` | `a/key` | - -`+` や ` ` を含むオブジェクトのアップグレード前後の例: - - | アップグレード前 | アップグレード後 | -:------------|:-------------------------|:------------------| - 書き込み時 | `a+key` | - | - 読み込み時 | `a+key` または `a key` | `a key` | -リスト表示時 | `a key` | `a key` | - - | アップグレード前 | アップグレード後 | -:------------|:-------------------------|:------------------| - 書き込み時 | `a key` | - | - 読み込み時 | `a+key` または `a key` | `a key` | -リスト表示時 | `a key` | `a key` | - -またこの修正によりアクセスログのフォーマットも単一のURLエンコードから二重エンコードスタイルへ変わります。 -下記は変更前の例です: - -``` -127.0.0.1 - - [07/Jan/2015:08:27:07 +0000] "PUT /buckets/test/objects/path1%2Fpath2%2Fte%2Bst.txt HTTP/1.1" 200 0 "" "" -``` - -そしてこちらが新しいフォーマットです。 - -``` -127.0.0.1 - - [07/Jan/2015:08:27:07 +0000] "PUT /buckets/test/objects/path1%2Fpath2%2Fte%252Bst.txt HTTP/1.1" 200 0 "" "" -``` - -この例から分かるように、オブジェクトのパスが `path1%2Fpath2%2Fte%252Bst.txt` -から `path1%2Fpath2%2Fte%2Bst.txt` へ変わることに注意して下さい。 - -もし Riak CS を利用するアプリケーション側の都合で -以前の挙動のままにしたい場合、アップグレード時に -Riak CSの設定を変更すればそれが可能です。 -この場合、`rewrite_module` 設定を下記のように変更してください: - -```erlang -{riak_cs, [ - %% Other settings - {rewrite_module, riak_cs_s3_rewrite_legacy}, - %% Other settings -]} -``` - -**注意**: 以前の挙動は技術的に不適切であり、 -前述したように暗黙的なデータの上書きが起こり得ます。 -注意の上でご利用下さい。 - -# Riak CS 1.5.3 リリースノート - -## 新規追加 - -- read_before_last_manifest_writeオプションの追加。 - 一部のkeyへの高頻度かつ多並列でのアクセスによるSibling explosionの回避に有効。 - [riak_cs/#1011](https://github.com/basho/riak_cs/pull/1011) -- タイムアウト設定の追加。Riak - Riak CS 間の全アクセスに対してタイムアウトを設定可能にし、運用に柔軟性を提供。 - [riak_cs/#1021](https://github.com/basho/riak_cs/pull/1021) - -## 修正されたバグ - -- ストレージ統計の集計結果に削除済バケットのデータが含まれ得る問題を修正。 - [riak_cs/#996](https://github.com/basho/riak_cs/pull/996) - -# Riak CS 1.5.2 リリースノート - -## 新規追加 - -- Riakに対する接続失敗に関するロギングの改善 - [riak_cs/#987](https://github.com/basho/riak_cs/pull/987). -- Riakに対してアクセス統計情報の保存に失敗した際のログを追加 - [riak_cs/#988](https://github.com/basho/riak_cs/pull/988). - これは一時的な Riak - Riak CS 間の接続エラーによるアクセス統計ログの消失を防ぎます。 - アクセスログは `console.log` へ `warning` レベルで保存されます。 -- 不正なガベージコレクション manifest の修復スクリプトの追加 - [riak_cs/#983](https://github.com/basho/riak_cs/pull/983)。 - active manifest が GCバケットへ保存される際に - [既知の問題](https://github.com/basho/riak_cs/issues/827) があります。 - このスクリプトは不正な状態を正常な状態へ変更します。 - -## 修正されたバグ - -- プロトコルバッファのコネクションプール (`pbc_pool_master`) のリークを修正 - [riak_cs/#986](https://github.com/basho/riak_cs/pull/986) 。 - 存在しないバケットに対する認証ヘッダ無しのリクエストや、ユーザ一覧のリクエストが - コネクションプールのリークを引き起こし、プールは結果的に空になります。このバグは1.5.0から含まれます。 - -# Riak CS 1.5.1 リリースノート - -## 新規追加 - -- Sibling Explosionを避けるために sleep-after-update を追加 [riak_cs/#959](https://github.com/basho/riak_cs/pull/959) -- `riak-cs-debug` の multibag サポート [riak_cs/#930](https://github.com/basho/riak_cs/pull/930) -- Riak CS におけるバケット数に上限を追加 [riak_cs/#950](https://github.com/basho/riak_cs/pull/950) -- バケットの衝突解決を効率化 [riak_cs/#951](https://github.com/basho/riak_cs/pull/951) - -## 修正されたバグ - -- `riak_cs_delete_fsm` のデッドロックによるGCの停止 [riak_cs/#949](https://github.com/basho/riak_cs/pull/949) -- `riak-cs-debug` がログを収集するディレクトリのパスを修正 [riak_cs/#953](https://github.com/basho/riak_cs/pull/953) -- DST-awareなローカルタイムからGMTへの変換を回避 [riak_cs/#954](https://github.com/basho/riak_cs/pull/954) -- Secretの代わりに UUID をカノニカルID生成時のシードに利用 [riak_cs/#956](https://github.com/basho/riak_cs/pull/956) -- マルチパートアップロードにおけるパート数の上限を追加 [riak_cs/#957](https://github.com/basho/riak_cs/pull/957) -- タイムアウトをデフォルトの 5000ms から無限に設定 [riak_cs/#963](https://github.com/basho/riak_cs/pull/963) -- GC バケット内の無効な状態のマニフェストをスキップ [riak_cs/#964](https://github.com/basho/riak_cs/pull/964) - -## アップグレード時の注意点 - -### ユーザー毎のバケット数 - -Riak CS 1.5.1 を使うと、ユーザーが作ることのできるバケット数を制限することができます。 -デフォルトでこの最大値は 100 です。この制限はユーザーの新たなバケット作成を禁止しますが、 -既に制限数を超えているユーザーが実施する、バケット削除を含む他の操作へは影響しません。 -デフォルトの制限を変更するには `app.config` の `riak_cs` セクションで次の箇所を変更してください: - -```erlang -{riak_cs, [ - %% ... - {max_buckets_per_user, 5000}, - %% ... - ]} -``` - -この制限を利用しない場合は `max_buckets_per_user` を `unlimited` に設定してください。 - -# Riak CS 1.5.0 リリースノート - -## 新規追加 - -* `cluster-info` 取得を含む新規コマンド `riak-cs-debug` を追加 [riak_cs/#769](https://github.com/basho/riak_cs/pull/769), [riak_cs/#832](https://github.com/basho/riak_cs/pull/832) -* 既存コマンド群を新規コマンド `riak-cs-admin` へ統合 [riak_cs/#839](https://github.com/basho/riak_cs/pull/839) -* Stanchion の IP、ポートを変更する新規コマンド `riak-cs-admin stanchion` を追加 [riak_cs/#657](https://github.com/basho/riak_cs/pull/657) -* 並行 GC によるガベージコレクション性能の向上 [riak_cs/#830](https://github.com/basho/riak_cs/pull/830) -* Iterator refresh [riak_cs/#805](https://github.com/basho/riak_cs/pull/805) -* `fold_objects_for_list_keys` 設定をデフォルト有効に変更 [riak_cs/#737](https://github.com/basho/riak_cs/pull/737), [riak_cs/#785](https://github.com/basho/riak_cs/pull/785) -* Cache-Control ヘッダーのサポートを追加 [riak_cs/#821](https://github.com/basho/riak_cs/pull/821) -* 猶予期間(`leeway_seconds`)内でもオブジェクトをガベージコレクション可能にする変更 [riak_cs/#470](https://github.com/basho/riak_cs/pull/470) -* オブジェクト、マルチパートともに PUT Copy API を追加 [riak_cs/#548](https://github.com/basho/riak_cs/pull/548) -* lager 2.0.3 へ更新 -* R16B0x をビルド環境に追加 (リリースは R15B01 でビルド) -* `gc_paginated_index` 設定をデフォルト有効に変更 [riak_cs/#881](https://github.com/basho/riak_cs/issues/881) -* 新規 API: Delete Multiple Objects の追加[riak_cs/#728](https://github.com/basho/riak_cs/pull/728) -* マニフェストに対して siblings, バイト、履歴の肥大化を警告するログ追加 [riak_cs/#915](https://github.com/basho/riak_cs/pull/915) - -## 修正されたバグ - -* `ERL_MAX_PORTS` を Riak のデフォルトに合わせ 64000 へ変更 [riak_cs/#636](https://github.com/basho/riak_cs/pull/636) -* Riak CS 管理リソースを OpenStack API でも利用可能にする修正 [riak_cs/#666](https://github.com/basho/riak_cs/pull/666) -* Solaris でのソースビルドのバグ修正のため、パス代入コードの変更 [riak_cs/#733](https://github.com/basho/riak_cs/pull/733) -* `riakc_pb_socket` エラー時の `sanity_check(true,false)` バグを修正 [riak_cs/#683](https://github.com/basho/riak_cs/pull/683) -* Riak-CS-GC のスケジューラタイムスタンプが 2013 ではなく 0043 になるバグを修正 [riak_cs/#713](https://github.com/basho/riak_cs/pull/713) fixed by [riak_cs/#676](https://github.com/basho/riak_cs/pull/676) -* OTP code_server プロセスを過剰に呼び出すバグを修正 [riak_cs/#675](https://github.com/basho/riak_cs/pull/675) -* content-md5 が一致しない場合に HTTP 400 を返すよう修正 [riak_cs/#596](https://github.com/basho/riak_cs/pull/596) -* `/riak-cs/stats` が `admin_auth_enabled=false` の時に動作しないバグを修正. [riak_cs/#719](https://github.com/basho/riak_cs/pull/719) -* ストレージ計算で tombstone および undefined の manifest.props を処理できないバグを修正 [riak_cs/#849](https://github.com/basho/riak_cs/pull/849) -* 未完了のマルチパートオブジェクトが、バケットの削除、作成後にも残るバグを修正 [riak_cs/#857](https://github.com/basho/riak_cs/pull/857) and [stanchion/#78](https://github.com/basho/stanchion/pull/78) -* list multipart upload の空クエリパラメータの扱いを修正 [riak_cs/#843](https://github.com/basho/riak_cs/pull/843) -* PUT Object 時にヘッダ指定の ACL が設定されないバグを修正 [riak_cs/#631](https://github.com/basho/riak_cs/pull/631) -* ping リクエストの poolboy タイムアウト処理を改善 [riak_cs/#763](https://github.com/basho/riak_cs/pull/763) -* 匿名アクセス時の不要なログを削除 [riak_cs/#876](https://github.com/basho/riak_cs/issues/876) -* マルチパートでアップロードされたオブジェクトの ETag 不正を修正 [riak_cs/#855](https://github.com/basho/riak_cs/issues/855) -* PUT Bucket Policy のポリシーバージョン確認の不具合を修正[riak_cs/#911](https://github.com/basho/riak_cs/issues/911) -* コマンド成功時に終了コード 0 を返すよう修正 [riak_cs/#908](https://github.com/basho/riak_cs/issues/908) -* `{error, disconnected}` が内部で notfound に書き換えられる問題を修正 [riak_cs/#929](https://github.com/basho/riak_cs/issues/929) - -## アップグレードに関する注意事項 - -### Riak Version - -このリリースは Riak 1.4.10 上でテストされました。 -[互換性マトリクス](http://docs.basho.com/riakcs/latest/cookbooks/Version-Compatibility/) -を参考に、正しいバージョンを使用していることを確認してください。 - -### 未完了のマルチパートアップロード - -[riak_cs/#475](https://github.com/basho/riak_cs/issues/475) はセキュリティ -に関する問題で、以前に作られた同名のバケットに -対する未完了のマルチパートアップロードが、新しく作成されたバケットに -含まれてしまう可能性があります。これは次のように修正されました。 - -- バケット作成時には、有効なマルチパートが存在するかを確認し、 - 存在する場合には 500 エラーをクライアントに返します。 - -- バケット削除時には、まず存在する有効なマルチパートの削除を試みた後に、 - 有効なマルチパートが存在するかを(Stanchion 上で)再度確認します。 - 存在する場合には 409 エラーをクライアントに返します。 - -1.4.x (またはそれより前のバージョン)から 1.5.0 へのアップグレード後には -いくつかの操作が必要です。 - -- すべてのバケットを正常な状態にするため、 `riak-cs-admin - cleanup-orphan-multipart` を実行します。マルチパートアップロードとバ - ケット削除が競合したときに発生しうるコーナーケースを避けるために、こ - のコマンドは `2014-07-30T11:09:30.000Z`のような、 ISO 8601 形式の日付 - を引数として指定することができます。この引数があるとき、バケットのク - リーンアップ操作はそのタイムスタンプよりも新しいマルチパートアップロー - ドを削除しません。もしこれを指定する場合は、全てのCSノードのアップグ - レードが終わって以降の時間がよいでしょう。 - -- 上記操作が終了するまでの期間は、削除済みのバケットで、未完了のマルチ - パートアップロードを含むバケットは再作成が出来ない場合があります。こ - のような再作成の失敗は [critical] ログ (`"Multipart upload remains - in deleted bucket "`) で確認可能です。 - -### ガベージコレクションの猶予期間(Leeway seconds)とディスク空き容量 - -[riak_cs/#470](https://github.com/basho/riak_cs/pull/470) は、 -オブジェクト削除とガベージコレクションの振る舞いを次のように変更します。 -これまで、ガベージコレクションバケットのタイムスタンプはオブジェクトが -回収される将来の時刻でしたが、削除された時刻そのものへと変わります。 -同時に、ガベージコレクターは現在の時刻までのタイムスタンプを回収していましたが、 -猶予期間(`leeway_seconds`)だけ過去のタイムスタンプまでだけを回収するようになります。 - -以前(- 1.4.x): - -``` - t1 t2 ------------+--------------------------+-------------------> - DELETE object: GC 実行: - "t1 + leeway" "t2" までの - とマークされる オブジェクトを回収 -``` - -今後(1.5.0-): - -``` - t1 t2 ------------+--------------------------+-------------------> - DELETE object: GC 実行: - "t1" "t2 - leeway" までの - とマークされる オブジェクトを回収 -``` - -これにより、1.5.0 へのアップグレード直後(仮に`t0`とします)にはオブジェ -クトが回収されない期間ができます。つまり `t0` から `t0 + leeway` までの -期間です。そして `t0` 直前に削除されたオブジェクトは `t0 + 2 * leeway` -時点で回収可能になります。 - -ローリングアップグレードに際しては、GC を実行している CS ノードを -**最初に** アップグレードする必要があります。 -GC を実行しない CS ノードは、猶予期間が正しく動作するために、その後から -アップグレードして下さい。 -また、`riak-cs-admin gc set-interval infinity` コマンドを実行して -ガベージコレクションを無効にしておくと、ノードの順序を -気にすることなくアップグレードが可能です。 - -マルチデータセンター構成のクラスタは、より慎重になる必要があります。 -ガベージコレクションを確実に無効化してからアップグレードしてください。 - -## 既知の問題と制限事項 - -* コピーを実行中にクライアントが次のリクエストを送信するとコピーは中断 - されます。これはクライアントの切断を検出してコピーを中止する機構の副 - 作用です。詳しくは [#932](https://github.com/basho/riak_cs/pull/932) - をご覧ください。 - -* OOSインターフェースでのコピーはサポートされていません。 - -* Multibag はオブジェクトのマニフェストとブロックを複数の異なるクラスタ - に分けて格納する機能です。これは Riak CS Enterprise の機能として追加 - されましたが、技術プレビューの段階にあります。クラスタ間レプリケーショ - ンによる `proxy_get` はサポートされておりません。Multibagは今のところ、 - ひとつのDCでのみ動作するように設計されています。 - -# Riak CS 1.4.5 リリースノート - -## 修正されたバグ - -* list objects v2 fsm のいくつかのデータが「見えない」バグを修正 [riak_cs/788](https://github.com/basho/riak_cs/pull/788) -* HEADリクエスト時にアクセス集計していた問題を修正 [riak_cs/791](https://github.com/basho/riak_cs/pull/791) -* POST/PUTリクエスト時のXML中の空白文字の対処 [riak_cs/795](https://github.com/basho/riak_cs/pull/795) -* ストレージ使用量計算時の誤ったバケット名を修正 [riak_cs/800](https://github.com/basho/riak_cs/pull/800) - Riak CS 1.4.4 で混入したバグにより、そのバージョンを使用している期間の - ストレージ計算はバケット名が文字列 "struct" に置き換わった結果となっていました。 - 本バージョン 1.4.5 でこのバグ自体は修正されましたが、すでに計算済みの古い結果を - さかのぼって修正することは不可能です。バケット名が "struct" に置き換わってしまった - 計算結果では、個別バケットの使用量を知ることはできませんが、その場合であっても - 個々のユーザに関して所有バケットにわたる合計は正しい数字を示します。 -* Unicodeのユーザ名とXMLの対応 [riak_cs/807](https://github.com/basho/riak_cs/pull/807) -* ストレージ使用量で必要なXMLフィールドを追加 [riak_cs/808](https://github.com/basho/riak_cs/pull/808) -* オブジェクトのfoldのタイムアウトを揃えた [riak_cs/811](https://github.com/basho/riak_cs/pull/811) -* 削除されたバケットをユーザーのレコードから削除 [riak_cs/812](https://github.com/basho/riak_cs/pull/812) - -## 新規追加 - -* オブジェクト一覧表示のv2 FSMでプレフィクスを使用する最適化を追加 [riak_cs/804](https://github.com/basho/riak_cs/pull/804) - -# Riak CS 1.4.4 リリースノート - -これはバグフィックスのためのリリースです。統計計算の修正が含まれています。 - -## 修正されたバグ - -* basho-patches ディレクトリが作成されなかった問題を修正 [riak_cs/775](https://github.com/basho/riak_cs/issues/775) . - -* `sum_bucket` のタイムアウトが全ての容量計算をクラッシュさせていた問題を修正 [riak_cs/759](https://github.com/basho/riak_cs/issues/759) . - -* アクセス集計のスロットリング失敗を修正 [riak_cs/758](https://github.com/basho/riak_cs/issues/758) . - -* アクセス集計のクラッシュを修正 [riak_cs/747](https://github.com/basho/riak_cs/issues/747) . - - -# Riak CS 1.4.3 リリースノート - -## 修正された問題 - -- schedule_delete状態のマニフェストがpending_deleteやactive状態へ復帰するバグを修正。 -- 上書きによって既に削除されたマニフェストをカウントしない。 -- 誤ったmd5による上書き操作で、既存バージョンのオブジェクトを削除しない。 - -## 新規追加 - -- マニフェストプルーニングのパフォーマンス改善。 -- GCにおける2iのページングオプションを追加。GC対象データ収集時のタイムアウト対策。 -- ブロック取得処理における接続断のハンドリングを改善。 -- lager 2.0.1へのアップデート。 -- 時刻によるマニフェストプルーニングに個数オプションを追加。 -- 複数アクセスアーカイブプロセスの並行実行を許可。 - -# Riak CS 1.4.2 リリースノート - -## 修正された問題 - -- Debian Linux 上の Enterprise 版ビルドの問題を修正。 -- ソース tarball ビルドの問題を修正。 -- アクセス統計において、正常アクセスがエラーと扱われてしまうバグを修正。 -- Riak バージョン 1.4 以前とあわせて動作するよう、バケットリスト - map フェーズのログを lager バージョンに依存しないよう変更。 -- Riak CS 1.3.0 以前で保存されたマニフェストについて、 `props` フィールド - の `undefined` を正しく扱うよう修正。 - -## 新規追加 - -- 最初のガベージコレクションの遅延を設定する `initial_gc_delay` オプションを追加。 -- ガベージコレクションバケットのキーにランダムなサフィックスを追加し、 - ホットキーの回避と削除の性能を向上。 -- マニフェストに cluster id が指定されていない場合に用いる - `default_proxy_cluster_id` オプションを追加。OSS 版から Enterprise 版への - 移行が容易になる。 - -# Riak CS 1.4.1 リリースノート - -## 修正された問題 - -- 最初の1002個のキーがpending delete状態だったときにlist objectsがクラッシュ - する問題を修正 -- GCデーモンがクラッシュする問題を解決 -- node_packageをアップデートしパッケージ作成の問題を解決 - -# Riak CS 1.4.0 リリースノート - -## 修正された問題 - -- GCバケットで使われていないキーを削除 -- マルチパートアップロードのクエリ文字での認証を修正 -- マルチパートでアップロードされたオブジェクトのストレージクラスを修正 -- マルチパートアップロードされたオブジェクトのetagsを修正 -- Riak CSのマルチバックエンドのインデックス修正をサポート -- GETリクエストの際、通信が遅い場合のメモリ増大を修正 -- アクセス統計処理のメモリ使用量を削減 -- オブジェクトのACL HEADリクエストの際の500を修正 -- マルチパートでアップロードされたオブジェクトの並列アップロードや削除の際の競合の問題を解決 -- Content-md5のヘッダがあった場合に整合性をチェックするように修正 -- Riakとのコネクションが切れた際のハンドリングを修正 - -## 新規追加 - -- Swift APIとKeystone認証のサポートを試験的に追加 -- Riak 1.4.0以降と併用された場合のオブジェクト一覧取得のパフォーマンスを改善 -- ユーザーアカウント名とメールアドレスは変更可能に -- データセンタ間レプリケーションv3のサポートを追加 -- Riakとのコネクションタイムアウトを変更可能に -- Lagerのsyslogサポートを追加 -- データブロックへのリクエスト時は1つのvnodeへアクセス - -# Riak CS 1.3.1 Release Notes - -## Bugs Fixed - -- Fix bug in handling of active object manifests in the case of - overwrite or delete that could lead to old object versions being - resurrected. -- Fix improper capitalization of user metadata header names. -- Fix issue where the S3 rewrite module omits any query parameters - that are not S3 subresources. Also correct handling of query - parameters so that parameter values are not URL decoded twice. This - primarily affects pre-signed URLs because the access key and request - signature are included as query parameters. -- Fix for issue with init script stop. - -# Riak CS 1.3.0 Release Notes - -## Bugs Fixed - -- Fix handling of cases where buckets have siblings. Previously this - resulted in 500 errors returned to the client. -- Reduce likelihood of sibling creation when creating a bucket. -- Return a 404 instead of a 403 when accessing a deleted object. -- Unquote URLs to accommodate clients that URL encode `/` characters - in URLs. -- Deny anonymous service-level requests to avoid unnecessary error - messages trying to list the buckets owned by an undefined user. - -## Additions - -- Support for multipart file uploads. Parts must be in the range of - 5MB-5GB. -- Support for bucket policies using a restricted set of principals and - conditions. -- Support for returning bytes ranges of a file using the Range header. -- Administrative commands may be segrated onto a separate interface. -- Authentication for administrative commands may be disabled. -- Performance and stability improvements for listing the contents of - buckets. -- Support for the prefix, delimiter, and marker options when listing - the contents of a bucket. -- Support for using Webmachine's access logging features in - conjunction with the Riak CS internal access logging mechanism. -- Moved all administrative resources under /riak-cs. -- Riak CS now supports packaging for FreeBSD, SmartOS, and Solaris. - -# Riak CS 1.2.2 Release Notes - -## Bugs Fixed - -- Fix problem where objects with utf-8 unicode key cannot be listed - nor fetched. -- Speed up bucket_empty check and fix process leak. This bug was - originally found when a user was having trouble with `s3cmd - rb s3://foo --recursive`. The operation first tries to delete the - (potentially large) bucket, which triggers our bucket empty - check. If the bucket has more than 32k items, we run out of - processes unless +P is set higher (because of the leak). - -## Additions - -- Full support for MDC replication - -# Riak CS 1.2.1 Release Notes - -## Bugs Fixed - -- Return 403 instead of 404 when a user attempts to list contents of - nonexistent bucket. -- Do not do bucket list for HEAD or ?versioning or ?location request. - -## Additions - -- Add reduce phase for listing bucket contents to provide backpressure - when executing the MapReduce job. -- Use prereduce during storage calculations. -- Return 403 instead of 404 when a user attempts to list contents of - nonexistent bucket. - -# Riak CS 1.2.0 Release Notes - -## Bugs Fixed - -- Do not expose stack traces to users on 500 errors -- Fix issue with sibling creation on user record updates -- Fix crash in terminate state when fsm state is not fully populated -- Script fixes and updates in response to node_package updates - -## Additions - -- Add preliminary support for MDC replication -- Quickcheck test to exercise the erlcloud library against Riak CS -- Basic support for riak_test integration - -# Riak CS 1.1.0 Release Notes - -## Bugs Fixed - -- Check for timeout when checking out a connection from poolboy. -- PUT object now returns 200 instead of 204. -- Fixes for Dialyzer errors and warnings. -- Return readable error message with 500 errors instead of large webmachine backtraces. - -## Additions - -- Update user creation to accept a JSON or XML document for user - creation instead of URL encoded text string. -- Configuration option to allow anonymous users to create accounts. In - the default mode, only the administrator is allowed to create - accounts. -- Ping resource for health checks. -- Support for user-specified metadata headers. -- User accounts may be disabled by the administrator. -- A new key_secret can be issued for a user by the administrator. -- Administrator can now list all system users and optionally filter by - enabled or disabled account status. -- Garbage collection for deleted and overwritten objects. -- Separate connection pool for object listings with a default of 5 - connections. -- Improved performance for listing all objects in a bucket. -- Statistics collection and querying. -- DTrace probing. - -# Riak CS 1.0.2 Release Notes - -## Additions - -- Support query parameter authentication as specified in [[http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAuthentication.html][Signing and Authenticating REST Requests]]. - -# Riak CS 1.0.1 Release Notes - -## Bugs Fixed - -- Default content-type is not passed into function to handle PUT - request body -- Requests hang when a node in the Riak cluster is unavailable -- Correct inappropriate use of riak_moss_utils:get_user by - riak_moss_acl_utils:get_owner_data - -# Riak CS 1.0.0 Release Notes - -## Bugs Fixed - -- Fix PUTs for zero-byte files -- Fix fsm initialization race conditions -- Canonicalize the entire path if there is no host header, but there are - tokens -- Fix process and socket leaks in get fsm - -## Other Additions - -- Subsystem for calculating user access and storage usage -- Fixed-size connection pool of Riak connections -- Use a single Riak connection per request to avoid deadlock conditions -- Object ACLs -- Management for multiple versions of a file manifest -- Configurable block size and max content length -- Support specifying non-default ACL at bucket creation time - -# Riak CS 0.1.2 Release Notes - -## Bugs Fixed - -- Return 403 instead of 503 for invalid anonymous or signed requests. -- Properly clean up processes and connections on object requests. - -# Riak CS 0.1.1 Release Notes - -## Bugs Fixed - -- HEAD requests always result in a `403 Forbidden`. -- `s3cmd info` on a bucket object results in an error due to missing - ACL document. -- Incorrect atom specified in `riak_moss_wm_utils:parse_auth_header`. -- Bad match condition used in `riak_moss_acl:has_permission/2`. - -# Riak CS 0.1.0 Release Notes - -## Bugs Fixed - -- `s3cmd info` fails due to missing `'last-modified` key in return document. -- `s3cmd get` of 0 byte file fails. -- Bucket creation fails with status code `415` using the AWS Java SDK. - -## Other Additions - -- Bucket-level access control lists -- User records have been modified so that an system-wide unique email - address is required to create a user. -- User creation requests are serialized through `stanchion` to be - certain the email address is unique. -- Bucket creation and deletion requests are serialized through - `stanchion` to ensure bucket names are unique in the system. -- The `stanchion` serialization service is now required to be installed - and running for the system to be fully operational. -- The concept of an administrative user has been added to the system. The credentials of the - administrative user must be added to the app.config files for `moss` and `stanchion`. -- User credentials are now created using a url-safe base64 encoding module. - -## Known Issues - -- Object-level access control lists have not yet been implemented. - -# Riak CS 0.0.3 Release Notes - -## Bugs Fixed - -- URL decode keys on put so they are represented correctly. This - eliminates confusion when objects with spaces in their names are - listed and when attempting to access them. -- Properly handle zero-byte files -- Reap all processes during file puts - -## Other Additions - -- Support for the s3cmd subcommands sync, du, and rb - - - Return valid size and checksum for each object when listing bucket objects. - - Changes so that a bucket may be deleted if it is empty. - -- Changes so a subdirectory path can be specified when storing or retrieving files. -- Make buckets private by default -- Support the prefix query parameter -- Enhance process dependencies for improved failure handling - -## Known Issues - -- Buckets are marked as /private/ by default, but globally-unique - bucket names are not enforced. This means that two users may - create the same bucket and this could result in unauthorized - access and unintentional overwriting of files. This will be - addressed in a future release by ensuring that bucket names are - unique across the system. diff --git a/releasenotes/riak-cs.1.md b/releasenotes/riak-cs.1.md deleted file mode 100644 index 332bdea1d..000000000 --- a/releasenotes/riak-cs.1.md +++ /dev/null @@ -1,666 +0,0 @@ -# Riak CS 1.5.4 Release Notes - -## Bugs Fixed - -- Disable previous Riak object after backpressure sleep is triggered - [riak_cs/#1041](https://github.com/basho/riak_cs/pull/1041). This - change prevents unnecessary siblings growth in cases where (a) - backpressure is triggered under high upload concurrency and (b) - uploads are interleaved during backpressure sleep. This issue does not - affect multipart uploads. -- Fix an incorrect path rewrite in the S3 API caused by unnecessary URL - decoding - [riak_cs/#1040](https://github.com/basho/riak_cs/pull/1040). Due to - the incorrect handling of URL encoding/decoding, object keys including - `%[0-9a-fA-F][0-9a-fA-F]` (as a regular expression) or `+` had been - mistakenly decoded. As a consequence, the former case was decoded to - some other binary and for the latter case (`+`) was replaced with ` ` - (space). In both cases, there was a possibility of an implicit data - overwrite. For the latter case, an overwrite occurs for an object - including `+` in its key (e.g. `foo+bar`) by a different object with a - name that is largely similar but replaced with ` ` (space, e.g. `foo - bar`), and vice versa. This fix also addresses - [riak_cs/#910](https://github.com/basho/riak_cs/pull/910) and - [riak_cs/#977](https://github.com/basho/riak_cs/pull/977). - -## Notes on upgrading - -After upgrading to Riak CS 1.5.4, objects including -`%[0-9a-fA-F][0-9a-fA-F]` or `+` in their key (e.g. `foo+bar`) become -invisible and can be seen as objects with a different name. For the -former case, objects will be referred as unnecessary decoded key. For -the latter case, those objects will be referred as keys `+` replaced -with ` ` (e.g. `foo bar`) by default. - -The table below provides examples for URLs including -`%[0-9a-fA-F][0-9a-fA-F]` and how they will work before and after the -upgrade. - - | before upgrade | after upgrade | -:-----------|:-------------------|:--------------| - written as | `a%2Fkey` | - | - read as | `a%2Fkey`or`a/key` | `a/key` | - listed as | `a/key` | `a/key` | - -Examples on unique objects including `+` or ` ` through upgrade: - - | before upgrade | after upgrade | -:-----------|------------------|---------------| - written as | `a+key` | - | - read as | `a+key`or`a key` | `a key` | - listed as | `a key` | `a key` | - - | before upgrade | after upgrade | -------------|------------------|---------------| - written as | `a key` | - | - read as | `a+key`or`a key` | `a key` | - listed as | `a key` | `a key` | - -This fix also changes the path format in access logs from the single -URL-encoded style to the doubly-encoded URL style. Below is an example -of the old style: - -``` -127.0.0.1 - - [07/Jan/2015:08:27:07 +0000] "PUT /buckets/test/objects/path1%2Fpath2%2Fte%2Bst.txt HTTP/1.1" 200 0 "" "" -``` - -Below is an example of the new style: - -``` -127.0.0.1 - - [07/Jan/2015:08:27:07 +0000] "PUT /buckets/test/objects/path1%2Fpath2%2Fte%252Bst.txt HTTP/1.1" 200 0 "" "" -``` - -Note that the object path has changed from -`path1%2Fpath2%2Fte%2Bst.txt` to `path1%2Fpath2%2Fte%252Bst.txt` between -the two examples shown. - -If the old behavior is preferred, perhaps because -applications using Riak CS have been written to use it, you can retain -that behavior by modifying your Riak CS configuration upon upgrade. -Change the `rewrite_module` setting as follows: - -```erlang -{riak_cs, [ - %% Other settings - {rewrite_module, riak_cs_s3_rewrite_legacy}, - %% Other settings -]} -``` - -**Note**: The old behavior is technically incorrect and implicitly -overwrites data in the ways described above, so please retain the old -behavior with caution. - -# Riak CS 1.5.3 Release Notes - -## Additions - -- Add read_before_last_manifest_write option to help avoid sibling - explosion for use cases involving high churn and concurrency on a - fixed set of keys. [riak_cs/#1011](https://github.com/basho/riak_cs/pull/1011) -- Add configurable timeouts for all Riak CS interactions with Riak to - provide more flexibility in operational - situations. [riak_cs/#1021](https://github.com/basho/riak_cs/pull/1021) - -## Bugs Fixed - -- Fix storage usage calculation bug where data for deleted buckets - would be included in the calculation - results. [riak_cs/#996](https://github.com/basho/riak_cs/pull/996) - -# Riak CS 1.5.2 Release Notes - -## Additions - -- Improved logging around connection failures with Riak - [riak_cs/#987](https://github.com/basho/riak_cs/pull/987). -- Add amendment log output when storing access stats into Riak failed - [riak_cs/#988](https://github.com/basho/riak_cs/pull/988). This - prevents losing access stats logs in cases of temporary connection - failure between Riak and Riak CS. Access logs are stored in - `console.log` at the `warning` level. -- Add script to repair invalid garbage collection manifests - [riak_cs/#983](https://github.com/basho/riak_cs/pull/983). There is - a [known issue](https://github.com/basho/riak_cs/issues/827) where - an active manifest would be stored in the GC bucket. This script - changes invalid state to valid state. - -## Bugs Fixed - -- Fix Protocol Buffer connection pool (`pbc_pool_master`) leak - [riak_cs/#986](https://github.com/basho/riak_cs/pull/986) . Requests - for non-existent buckets without an authorization header and - requests asking for listing users make connections leak from the - pool, causing the pool to eventually go empty. This bug was introduced - in release 1.5.0. - -# Riak CS 1.5.1 Release Notes - -## Additions - -- Add sleep-after-update manifests to avoid sibling explosion [riak_cs/#959](https://github.com/basho/riak_cs/pull/959) -- Multibag support on `riak-cs-debug` [riak_cs/#930](https://github.com/basho/riak_cs/pull/930) -- Add bucket number limit check in Riak CS process [riak_cs/#950](https://github.com/basho/riak_cs/pull/950) -- More efficient bucket resolution [riak_cs/#951](https://github.com/basho/riak_cs/pull/951) - -## Bugs Fixed - -- GC may stall due to `riak_cs_delete_fsm` deadlock [riak_cs/#949](https://github.com/basho/riak_cs/pull/949) -- Fix wrong log directory for gathering logs on `riak-cs-debug` [riak_cs/#953](https://github.com/basho/riak_cs/pull/953) -- Avoid DST-aware translation from local time to GMT [riak_cs/#954](https://github.com/basho/riak_cs/pull/954) -- Use new UUID for seed of canonical ID instead of secret [riak_cs/#956](https://github.com/basho/riak_cs/pull/956) -- Add max part number limitation [riak_cs/#957](https://github.com/basho/riak_cs/pull/957) -- Set timeout as infinity to replace the default of 5000ms [riak_cs/#963](https://github.com/basho/riak_cs/pull/963) -- Skip invalid state manifests in GC bucket [riak_cs/#964](https://github.com/basho/riak_cs/pull/964) - -## Notes on Upgrading - -### Bucket number per user - -Beginning with Riak CS 1.5.1, you can limit the number of buckets that -can be created per user. The default maximum number is 100. While this -limitation prohibits the creation of new buckets by users, users that -exceed the limit can still perform other operations, including bucket -deletion. To change the default limit, add the following line to the -`riak_cs` section of `app.config`: - - -```erlang -{riak_cs, [ - %% ... - {max_buckets_per_user, 5000}, - %% ... - ]} -``` - -To avoid having a limit, set `max_buckets_per_user` to `unlimited`. - -# Riak CS 1.5.0 Release Notes - -## Additions - -* A new command `riak-cs-debug` including `cluster-info` [riak_cs/#769](https://github.com/basho/riak_cs/pull/769), [riak_cs/#832](https://github.com/basho/riak_cs/pull/832) -* Tie up all existing commands into a new command `riak-cs-admin` [riak_cs/#839](https://github.com/basho/riak_cs/pull/839) -* Add a command `riak-cs-admin stanchion` to switch Stanchion IP and port manually [riak_cs/#657](https://github.com/basho/riak_cs/pull/657) -* Performance of garbage collection has been improved via Concurrent GC [riak_cs/#830](https://github.com/basho/riak_cs/pull/830) -* Iterator refresh [riak_cs/#805](https://github.com/basho/riak_cs/pull/805) -* `fold_objects_for_list_keys` made default in Riak CS [riak_cs/#737](https://github.com/basho/riak_cs/pull/737), [riak_cs/#785](https://github.com/basho/riak_cs/pull/785) -* Add support for Cache-Control header [riak_cs/#821](https://github.com/basho/riak_cs/pull/821) -* Allow objects to be reaped sooner than leeway interval. [riak_cs/#470](https://github.com/basho/riak_cs/pull/470) -* PUT Copy on both objects and upload parts [riak_cs/#548](https://github.com/basho/riak_cs/pull/548) -* Update to lager 2.0.3 -* Compiles with R16B0x (Releases still by R15B01) -* Change default value of `gc_paginated_index` to `true` [riak_cs/#881](https://github.com/basho/riak_cs/issues/881) -* Add new API: Delete Multiple Objects [riak_cs/#728](https://github.com/basho/riak_cs/pull/728) -* Add warning logs for manifests, siblings, bytes and history [riak_cs/#915](https://github.com/basho/riak_cs/pull/915) - -## Bugs Fixed - -* Align `ERL_MAX_PORTS` with Riak default: 64000 [riak_cs/#636](https://github.com/basho/riak_cs/pull/636) -* Allow Riak CS admin resources to be used with OpenStack API [riak_cs/#666](https://github.com/basho/riak_cs/pull/666) -* Fix path substitution code to fix Solaris source builds [riak_cs/#733](https://github.com/basho/riak_cs/pull/733) -* `sanity_check(true,false)` logs invalid error on `riakc_pb_socket` error [riak_cs/#683](https://github.com/basho/riak_cs/pull/683) -* Riak-CS-GC timestamp for scheduler is in the year 0043, not 2013. [riak_cs/#713](https://github.com/basho/riak_cs/pull/713) fixed by [riak_cs/#676](https://github.com/basho/riak_cs/pull/676) -* Excessive calls to OTP code_server process #669 fixed by [riak_cs/#675](https://github.com/basho/riak_cs/pull/675) -* Return HTTP 400 if content-md5 does not match [riak_cs/#596](https://github.com/basho/riak_cs/pull/596) -* `/riak-cs/stats` and `admin_auth_enabled=false` don't work together correctly. [riak_cs/#719](https://github.com/basho/riak_cs/pull/719) -* Storage calculation doesn't handle tombstones, nor handle undefined manifest.props [riak_cs/#849](https://github.com/basho/riak_cs/pull/849) -* MP initiated objects remains after delete/create buckets #475 fixed by [riak_cs/#857](https://github.com/basho/riak_cs/pull/857) and [stanchion/#78](https://github.com/basho/stanchion/pull/78) -* handling empty query string on list multipart upload [riak_cs/#843](https://github.com/basho/riak_cs/pull/843) -* Setting ACLs via headers at PUT Object creation [riak_cs/#631](https://github.com/basho/riak_cs/pull/631) -* Improve handling of poolboy timeouts during ping requests [riak_cs/#763](https://github.com/basho/riak_cs/pull/763) -* Remove unnecessary log message on anonymous access [riak_cs/#876](https://github.com/basho/riak_cs/issues/876) -* Fix inconsistent ETag on objects uploaded by multipart [riak_cs/#855](https://github.com/basho/riak_cs/issues/855) -* Fix policy version validation in PUT Bucket Policy [riak_cs/#911](https://github.com/basho/riak_cs/issues/911) -* Fix return code of several commands, to return 0 for success [riak_cs/#908](https://github.com/basho/riak_cs/issues/908) -* Fix `{error, disconnected}` repainted with notfound [riak_cs/#929](https://github.com/basho/riak_cs/issues/929) - -## Notes on Upgrading - -### Riak Version - -This release of Riak CS was tested with Riak 1.4.10. Be sure to -consult the -[Compatibility Matrix](http://docs.basho.com/riakcs/latest/cookbooks/Version-Compatibility/) -to ensure that you are using the correct version. - -### Incomplete multipart uploads - -[riak_cs/#475](https://github.com/basho/riak_cs/issues/475) was a -security issue where a newly created bucket may include unaborted or -incomplete multipart uploads which was created in previous epoch of -the bucket with same name. This was fixed by: - -- on creating buckets; checking if live multipart exists and if - exists, return 500 failure to client. - -- on deleting buckets; trying to clean up all live multipart remains, - and checking if live multipart remains (in stanchion). if exists, - return 409 failure to client. - -Note that a few operations are needed after upgrading from 1.4.x (or -former) to 1.5.0. - -- run `riak-cs-admin cleanup-orphan-multipart` to cleanup all - buckets. To avoid some corner cases where multipart uploads can - conflict with bucket deletion, this command can also be run with a - timestamp with ISO 8601 format such as `2014-07-30T11:09:30.000Z` as - an argument. When this argument is provided, the cleanup operation - will not clean up multipart uploads that are newer than the provided - timestamp. If used, this should be set to a time when you expect - your upgrade to be completed. - -- there might be a time period until above cleanup finished, where no - client can create bucket if unfinished multipart upload remains - under deleted bucket. You can find [critical] log (`"Multipart - upload remains in deleted bucket "`) if such bucket - creation is attempted. - -### Leeway seconds and disk space - -[riak_cs/#470](https://github.com/basho/riak_cs/pull/470) changed the -behaviour of object deletion and garbage collection. The timestamps in -garbage collection bucket were changed from the future time when the -object is to be deleted, to the current time when the object is -deleted, Garbage collector was also changed to collect objects until -'now - leeway seconds', from collecting objects until 'now'. - -Before (-1.4.x): - -``` - t1 t2 ------------+--------------------------+-------------------> - DELETE object: GC triggered: - marked as collects objects - "t1+leeway" marked as "t2" -``` - -After (1.5.0-): - -``` - t1 t2 ------------+--------------------------+-------------------> - DELETE object: GC triggered: - marked as "t1" collects objects - in GC bucket marked as "t2 - leeway" -``` - -This means that there will be a period where no objects are collected -immediately following an upgrade to 1.5.0. If your cluster is upgraded -at `t0`, no objects will be cleaned up until `t0 + leeway` . Objects -deleted just before `t0` won't be collected until `t0 + 2*leeway` . - -Also, all CS nodes which run GC should be upgraded *first.* CS nodes -which do not run GC should be upgraded later, to ensure the leeway -setting is intiated properly. Alternatively, you may stop GC while -upgrading, by running `riak-cs-admin gc set-interval infinity` . - -Multi data center cluster should be upgraded more carefully, as to -make sure GC is not running while upgrading. - -## Known Issues and Limitations - -* If a second client request is made using the same connection while a - copy operation is in progress, the copy will be aborted. This is a - side effect of the way Riak CS currently handles client disconnect - detection. See [#932](https://github.com/basho/riak_cs/pull/932) for - further information. - -* Copying objects in OOS interface is not yet implemented. - -* Multibag, the ability to store object manifests and blocks in - separate clusters or groups of clusters, has been added as - Enterprise feature, but it is in early preview status. `proxy_get` - has not yet been implemented for this preview feature. Multibag is - intended for single DC only at this time. - -# Riak CS 1.4.5 Release Notes - -## Bugs Fixed - -* Fix several 'data hiding' bugs with the v2 list objects FSM [riak_cs/788](https://github.com/basho/riak_cs/pull/788) -* Don't treat HEAD requests toward BytesOut in access statistics [riak_cs/791](https://github.com/basho/riak_cs/pull/791) -* Handle whitespace in POST/PUT XML documents [riak_cs/795](https://github.com/basho/riak_cs/pull/795) -* Fix bad bucketname in storage usage [riak_cs/800](https://github.com/basho/riak_cs/pull/800) - Riak CS 1.4.4 introduced a bug where storage calculations made while running - that version would have the bucket-name replaced by the string "struct". This - version fixes the bug, but can't go back and retroactively fix the old - storage calculations. Aggregations on an entire user-account should still - be accurate, but you won't be able to break-down storage by bucket, as they - will all share the name "struct". -* Handle unicode user-names and XML [riak_cs/807](https://github.com/basho/riak_cs/pull/807) -* Fix missing XML fields on storage usage [riak_cs/808](https://github.com/basho/riak_cs/pull/808) -* Adjust fold-objects timeout [riak_cs/811](https://github.com/basho/riak_cs/pull/811) -* Prune deleted buckets from user record [riak_cs/812](https://github.com/basho/riak_cs/pull/812) - -## Additions - -* Optimize the list objects v2 FSM for prefix requests [riak_cs/804](https://github.com/basho/riak_cs/pull/804) - -# Riak CS 1.4.4 Release Notes - -This is a bugfix release. The major fixes are to the storage calculation. - -## Bugs Fixed - -* Create basho-patches directory [riak_cs/775](https://github.com/basho/riak_cs/issues/775) . - -* `sum_bucket` timeout crashes all storage calculation is fixed by [riak_cs/759](https://github.com/basho/riak_cs/issues/759) . - -* Failure to throttle access archiver is fixed by [riak_cs/758](https://github.com/basho/riak_cs/issues/758) . - -* Access archiver crash is fixed by [riak_cs/747](https://github.com/basho/riak_cs/issues/747) . - - -# Riak CS 1.4.3 Release Notes - -## Bugs Fixed - -- Fix bug that reverted manifests in the scheduled_delete state to the - pending_delete or active state. -- Don't count already deleted manifests as overwritten -- Don't delete current object version on overwrite with incorrect md5 - -## Additions - -- Improve performance of manifest pruning -- Optionally use paginated 2i for the GC daemon. This is to help prevent - timeouts when collecting data that can be garbage collected. -- Improve handling of Riak disconnects on block fetches -- Update to lager 2.0.1 -- Optionally prune manifests based on count, in addition to time -- Allow multiple access archiver processes to run concurrently - -# Riak CS 1.4.2 Release Notes - -## Bugs Fixed - -- Fix issue with Enterprise build on Debian Linux distributions. -- Fix source tarball build. -- Fix access statistics bug that caused all accesses to be treated as - errors. -- Make logging in bucket listing map phase function lager version - agnostic to avoid issues when using versions of Riak older than 1.4. -- Handle undefined `props` field in manifests to fix issue accessing - objects written with a version of Riak CS older than 1.3.0. - -## Additions - -- Add option to delay initial GC sweep on a node using the - initial_gc_delay configuration option. -- Append random suffix to GC bucket keys to avoid hot keys and improve - performance during periods of frequent deletion. -- Add default_proxy_cluster_id option to provide a way to specify a - default cluster id to be used when the cluster id is undefined. This is - to facilitate migration from the OSS version to the - Enterprise version. - -# Riak CS 1.4.1 Release Notes - -## Bugs Fixed - -- Fix list objects crash when more than the first 1001 keys are in - the pending delete state -- Fix crash in garbage collection daemon -- Fix packaging bug by updating node_package dependency - -# Riak CS 1.4.0 Release Notes - -## Bugs Fixed - -- Remove unnecessary keys in GC bucket -- Fix query-string authentication for multi-part uploads -- Fix Storage Class for multi-part uploaded objects -- Fix etags for multi-part uploads -- Support reformat indexes in the Riak CS multi-backend -- Fix unbounded memory-growth on GET requests with a slow connection -- Reduce access-archiver memory use -- Fix 500 on object ACL HEAD request -- Fix semantics for concurrent upload and delete of the same key with a - multi-part upload -- Verify content-md5 header if supplied -- Handle transient Riak connection failures - -## Additions - -- Add preliminary support for the Swift API and Keystone authentication -- Improve performance of object listing when using Riak 1.4.0 or greater -- Add ability to edit user account name and email address -- Add support for v3 multi-data-center replication -- Add configurable Riak connection timeouts -- Add syslog support via Lager -- Only contact one vnode for immutable block requests - -# Riak CS 1.3.1 Release Notes - -## Bugs Fixed -- Fix bug in handling of active object manifests in the case of - overwrite or delete that could lead to old object versions being - resurrected. -- Fix improper capitalization of user metadata header names. -- Fix issue where the S3 rewrite module omits any query parameters - that are not S3 subresources. Also correct handling of query - parameters so that parameter values are not URL decoded twice. This - primarily affects pre-signed URLs because the access key and request - signature are included as query parameters. -- Fix for issue with init script stop. - -# Riak CS 1.3.0 Release Notes - -## Bugs Fixed - -- Fix handling of cases where buckets have siblings. Previously this - resulted in 500 errors returned to the client. -- Reduce likelihood of sibling creation when creating a bucket. -- Return a 404 instead of a 403 when accessing a deleted object. -- Unquote URLs to accommodate clients that URL encode `/` characters - in URLs. -- Deny anonymous service-level requests to avoid unnecessary error - messages trying to list the buckets owned by an undefined user. - -## Additions - -- Support for multipart file uploads. Parts must be in the range of - 5MB-5GB. -- Support for bucket policies using a restricted set of principals and - conditions. -- Support for returning bytes ranges of a file using the Range header. -- Administrative commands may be segrated onto a separate interface. -- Authentication for administrative commands may be disabled. -- Performance and stability improvements for listing the contents of - buckets. -- Support for the prefix, delimiter, and marker options when listing - the contents of a bucket. -- Support for using Webmachine's access logging features in - conjunction with the Riak CS internal access logging mechanism. -- Moved all administrative resources under /riak-cs. -- Riak CS now supports packaging for FreeBSD, SmartOS, and Solaris. - -# Riak CS 1.2.2 Release Notes - -## Bugs Fixed - -- Fix problem where objects with utf-8 unicode key cannot be listed - nor fetched. -- Speed up bucket_empty check and fix process leak. This bug was - originally found when a user was having trouble with `s3cmd - rb s3://foo --recursive`. The operation first tries to delete the - (potentially large) bucket, which triggers our bucket empty - check. If the bucket has more than 32k items, we run out of - processes unless +P is set higher (because of the leak). - -## Additions - -- Full support for MDC replication - -# Riak CS 1.2.1 Release Notes - -## Bugs Fixed - -- Return 403 instead of 404 when a user attempts to list contents of - nonexistent bucket. -- Do not do bucket list for HEAD or ?versioning or ?location request. - -## Additions - -- Add reduce phase for listing bucket contents to provide backpressure - when executing the MapReduce job. -- Use prereduce during storage calculations. -- Return 403 instead of 404 when a user attempts to list contents of - nonexistent bucket. - -# Riak CS 1.2.0 Release Notes - -## Bugs Fixed - -- Do not expose stack traces to users on 500 errors -- Fix issue with sibling creation on user record updates -- Fix crash in terminate state when fsm state is not fully populated -- Script fixes and updates in response to node_package updates - -## Additions - -- Add preliminary support for MDC replication -- Quickcheck test to exercise the erlcloud library against Riak CS -- Basic support for riak_test integration - -# Riak CS 1.1.0 Release Notes - -## Bugs Fixed - -- Check for timeout when checking out a connection from poolboy. -- PUT object now returns 200 instead of 204. -- Fixes for Dialyzer errors and warnings. -- Return readable error message with 500 errors instead of large webmachine backtraces. - -## Additions - -- Update user creation to accept a JSON or XML document for user - creation instead of URL encoded text string. -- Configuration option to allow anonymous users to create accounts. In - the default mode, only the administrator is allowed to create - accounts. -- Ping resource for health checks. -- Support for user-specified metadata headers. -- User accounts may be disabled by the administrator. -- A new key_secret can be issued for a user by the administrator. -- Administrator can now list all system users and optionally filter by - enabled or disabled account status. -- Garbage collection for deleted and overwritten objects. -- Separate connection pool for object listings with a default of 5 - connections. -- Improved performance for listing all objects in a bucket. -- Statistics collection and querying. -- DTrace probing. - -# Riak CS 1.0.2 Release Notes - -## Additions - -- Support query parameter authentication as specified in [Signing and Authenticating REST Requests](http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAuthentication.html) - -# Riak CS 1.0.1 Release Notes - -## Bugs Fixed - -- Default content-type is not passed into function to handle PUT - request body -- Requests hang when a node in the Riak cluster is unavailable -- Correct inappropriate use of riak_moss_utils:get_user by - riak_moss_acl_utils:get_owner_data - -# Riak CS 1.0.0 Release Notes - -## Bugs Fixed - -- Fix PUTs for zero-byte files -- Fix fsm initialization race conditions -- Canonicalize the entire path if there is no host header, but there are - tokens -- Fix process and socket leaks in get fsm - -## Other Additions - -- Subsystem for calculating user access and storage usage -- Fixed-size connection pool of Riak connections -- Use a single Riak connection per request to avoid deadlock conditions -- Object ACLs -- Management for multiple versions of a file manifest -- Configurable block size and max content length -- Support specifying non-default ACL at bucket creation time - -# Riak CS 0.1.2 Release Notes - -## Bugs Fixed - -- Return 403 instead of 503 for invalid anonymous or signed requests. -- Properly clean up processes and connections on object requests. - -# Riak CS 0.1.1 Release Notes - -## Bugs Fixed - -- HEAD requests always result in a `403 Forbidden`. -- `s3cmd info` on a bucket object results in an error due to missing - ACL document. -- Incorrect atom specified in `riak_moss_wm_utils:parse_auth_header`. -- Bad match condition used in `riak_moss_acl:has_permission/2`. - -# Riak CS 0.1.0 Release Notes - -## Bugs Fixed - -- `s3cmd info` fails due to missing `'last-modified` key in return document. -- `s3cmd get` of 0 byte file fails. -- Bucket creation fails with status code `415` using the AWS Java SDK. - -## Other Additions - -- Bucket-level access control lists -- User records have been modified so that an system-wide unique email - address is required to create a user. -- User creation requests are serialized through `stanchion` to be - certain the email address is unique. -- Bucket creation and deletion requests are serialized through - `stanchion` to ensure bucket names are unique in the system. -- The `stanchion` serialization service is now required to be installed - and running for the system to be fully operational. -- The concept of an administrative user has been added to the system. The credentials of the - administrative user must be added to the app.config files for `moss` and `stanchion`. -- User credentials are now created using a url-safe base64 encoding module. - -## Known Issues - -- Object-level access control lists have not yet been implemented. - -# Riak CS 0.0.3 Release Notes - -## Bugs Fixed - -- URL decode keys on put so they are represented correctly. This - eliminates confusion when objects with spaces in their names are - listed and when attempting to access them. -- Properly handle zero-byte files -- Reap all processes during file puts - -## Other Additions - -- Support for the s3cmd subcommands sync, du, and rb - - - Return valid size and checksum for each object when listing bucket objects. - - Changes so that a bucket may be deleted if it is empty. - -- Changes so a subdirectory path can be specified when storing or retrieving files. -- Make buckets private by default -- Support the prefix query parameter - -- Enhance process dependencies for improved failure handling - -## Known Issues - -- Buckets are marked as /private/ by default, but globally-unique - bucket names are not enforced. This means that two users may - create the same bucket and this could result in unauthorized - access and unintentional overwriting of files. This will be - addressed in a future release by ensuring that bucket names are - unique across the system. From dc9cb47292d4bd3453c556e48f5e1e1fedb3a355 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sun, 5 Dec 2021 16:13:06 +0200 Subject: [PATCH 253/831] update README.md --- README.md | 105 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 90 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 0bbf19056..9de382df4 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,79 @@ using Riak CS. For more information, browse the following files: - README: this file - LICENSE: the license under which Riak CS is released +# Operation + +The full suite of Riak CS includes: + * one or more nodes of Riak CS proper; + * a single instance of Stanchion; + * a Riak cluster; + * optionally, a node running Riak CS Control. + +## Configuation + +These components need to be properly configured, at a minimum: + + * Riak nodes must have these items in `riak.conf`: + ``` + backend = multi + buckets.default.allow_mult = true + buckets.default.merge_strategy = 2 + ``` + and a special configuration block in advanced.config: + ``` + {riak_kv, [ + {multi_backend, + [{be_default,riak_kv_eleveldb_backend, + [{max_open_files,20}]}, + {be_blocks,riak_kv_bitcask_backend, + []}]}, + {multi_backend_default, be_default}, + {multi_backend_prefix_list, [{<<\"0b:\">>,be_blocks}]}, + {storage_backend, riak_kv_multi_backend} + ]} + ``` + There is a convenience script, misc/prepare-riak-for-cs, which will + apply these changes to a factory `riak.conf`. + + * `riak-cs.conf` and `stanchion.conf` must have the actual address:port + of nodes (same or different) of the underlying riak cluster; + + * likewise, in `riak-cs.conf`, you should set the address:port of the + stanchion node. + +## Starting order + +Riak must be started before Riak CS and Stanchion. + +## Users and administrative access + +On a fresh install, in order to create your first user, you will need +to start Riak CS with authorization disabled. This can be done with +this block in `riak-cs/advanced.config`: +``` +{riak_cs, [{admin_auth_enabled, false}]} +``` +At this point, you should block any traffic from your _real_ users. + +Now you can create a user, which will become your admin user, with a +`POST` to `$RIAK_CS_ADDRESS:$RIAK_CS_PORT/riak-cs/user`, like so: +``` +curl -X POST 172.17.0.2:8080/riak-cs/user \ + -H 'Content-Type: application/json' \ + --data '{"name": "fafa", "email": "fa@keke.org"}' +``` + +Copy the `key_id` from the returned json and set `admin.key` +option to its value in riak-cs.conf and stanchion.conf. Then disable +the auth bypass by changing `admin_auth_enabled` setting to `true`, +and restart Riak CS and Stanchion. Your Riak CS suite is ready +for production use; now external incoming requests can be unblocked. + +All the configuration steps and procedures are scripted in Riak CS as +a [Docker service](https://github.com/TI-Tokyo/riak_cs_service_bundle), +which you can, incidentally, use to acquaint yourself with the +operations. + # Compatible clients and libraries Any client or library that faithfully implements the S3 API should also @@ -25,14 +98,19 @@ The following is a sample of the clients and libraries that have been tested with Riak CS: - [s3cmd](https://github.com/s3tools/s3cmd) +- [boto3](https://github.com/boto/boto3) +- [erlcloud](https://github.com/basho/erlcloud) (an old fork; current + upstream version not tested) +- [AWS Ruby SDK](http://aws.amazon.com/sdkforruby/) + +The following clients have been tested with 2.x and may or may not +work with 3.0: + - [s3curl](http://aws.amazon.com/code/128) -- [boto](https://github.com/boto/boto) -- [erlcloud](https://github.com/basho/erlcloud) - [AWS Java SDK](http://aws.amazon.com/sdkforjava/) -- [AWS Ruby SDK](http://aws.amazon.com/sdkforruby/) - [Fog](http://fog.io/) -## Administrative interface +# Administrative interface The Riak CS administrative interface is accessible via HTTP just like the object storage interface. All functions can be accessed under the @@ -62,19 +140,14 @@ should be used with /caution/ and it is only recommended when the administrative requests are handled by a private interface that only system administrators may access. -## Repo organization +# Repo organization Riak CS uses the [git-flow](http://nvie.com/posts/a-successful-git-branching-model/) branching model and we have the default -branch on this repo set to `develop` so that when you browse here on +branch on this repo set to `develop-3.0` so that when you browse here on GitHub you always see the latest changes and to serve as a reminder when opening pull requests for new features. -All releases are tagged off of the `master` branch so to access a -specific release from the git repo simply checkout the appropriate -tag. *e.g.* For the *1.3.0* release use the following command: -`git checkout 1.3.0`. - # Where to find more Below, you'll find a direct link to a guide to quickly getting started @@ -128,8 +201,10 @@ The unit tests for each subproject can be run with `make` or make test ``` +or, if you only want eunit tests: + ``` -./rebar skip_deps=true eunit +./rebar3 eunit ``` ### Running dialyzer @@ -150,7 +225,7 @@ Dialyzer can be run with `make`: make dialyzer ``` -### `riak_test` modules +### Integration tests -Riak CS has a number of integration and regression tests in the -`/riak_test/` subdirectory. Please refer `README.md` under the directory. +Riak CS has a number of integration and regression tests, in a +[separate project](https://github.com/TI-Tokyo/riak_cs_test). From b85e8b5213aff9fe7eccd87916751965df775d45 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 7 Dec 2021 01:14:24 +0200 Subject: [PATCH 254/831] riak-cs-admin test --- RELEASE-NOTES.md | 3 + apps/riak_cs/src/riak_cs_console.erl | 99 ++++++++++++++++++++++++++++ rel/files/riak-cs-admin | 6 +- 3 files changed, 107 insertions(+), 1 deletion(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 699a89611..d0c7aa168 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -29,6 +29,9 @@ org](https://github.com/TI-Tokyo) on Gihub. * The new rpm and deb packages are built for Centos 8 and Debian 11, which in each case rely on systemd (old-style SysV init scripts are no longer included). +* `riak-cs-admin` has got a new option, `test`, which creates a bucket + and performs a basic write-read-delete cycle in it (useful to test + that the riak cluster is configured properly for use with Riak CS). ### Other changes diff --git a/apps/riak_cs/src/riak_cs_console.erl b/apps/riak_cs/src/riak_cs_console.erl index 3a4156edb..5aa21f2b1 100644 --- a/apps/riak_cs/src/riak_cs_console.erl +++ b/apps/riak_cs/src/riak_cs_console.erl @@ -24,6 +24,7 @@ -export([ version/1, status/1, + test/1, cluster_info/1, audit_bucket_ownership/1, cleanup_orphan_multipart/0, @@ -50,6 +51,104 @@ status([]) -> || {Name, Value} <- Stats], ok. +test([]) -> + UserName = "ADMINTESTUSER", + Bucket = list_to_binary(rand_str(10)), + try + {ok, RcPid} = riak_cs_riak_client:start_link([]), + {User, UserObj} = get_test_user(UserName, RcPid), + + BagId = riak_cs_mb_helper:choose_bag_id(manifest, Bucket), + + Acl = riak_cs_acl_utils:default_acl( + User?RCS_USER.display_name, + User?RCS_USER.canonical_id, + User?RCS_USER.key_id), + + io:format("creating bucket\n", []), + ok = riak_cs_bucket:create_bucket( + User, UserObj, Bucket, BagId, Acl, RcPid), + + Key = <<"testkey">>, + Value = <<"testvalue">>, + io:format("putting object\n", []), + ok = put_object(Bucket, Key, Value, Acl, RcPid), + io:format("reading object back\n", []), + ok = verify_object(Bucket, Key, Value, RcPid), + io:format("deleting object\n", []), + ok = delete_object(Bucket, Key, RcPid), + + io:format("deleting bucket\n", []), + ok = riak_cs_bucket:delete_bucket( + User, UserObj, Bucket, RcPid), + ok = riak_cs_riak_client:stop(RcPid), + ok + catch + E:R:T -> + lager:error("self-test failed: ~p:~p", [E, R]), + io:format("self-test failed: ~p:~p\nStacktrace: ~p\n", [E, R, T]) + end. + +get_test_user(Name, RcPid) -> + Email = Name ++ "@testusers.com", + case riak_cs_user:create_user(Name, Email) of + {ok, ?RCS_USER{key_id = KeyId}} -> + {ok, UU} = + riak_cs_user:get_user(KeyId, RcPid), + UU; + {error, unknown} -> + %% this is because velvet sees {error,insufficient_vnodes_available}. Just retry. + timer:sleep(200), + get_test_user(Name, RcPid); + {error, user_already_exists} -> + {ok, UU} = + riak_cs_user:get_user_by_index(?EMAIL_INDEX, list_to_binary(Email), RcPid), + UU + end. + + +rand_str(N) -> + [$a + rand:uniform(22) || _X <- lists:seq(1, N)]. + +put_object(Bucket, Key, Value, Acl, RcPid) -> + Args = [{Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION, + size(Value), "application/octet-stream", + [], riak_cs_lfs_utils:block_size(), Acl, timer:seconds(60), self(), RcPid}], + {ok, Pid} = riak_cs_put_fsm_sup:start_put_fsm(node(), Args), + ok = riak_cs_put_fsm:augment_data(Pid, Value), + {ok, _Mfst} = riak_cs_put_fsm:finalize(Pid, binary_to_list(base64:encode(crypto:hash(md5, Value)))), + ok. + +verify_object(Bucket, Key, Value, RcPid) -> + FetchConcurrency = riak_cs_lfs_utils:fetch_concurrency(), + BufferFactor = riak_cs_lfs_utils:get_fsm_buffer_size_factor(), + {ok, Pid} = + riak_cs_get_fsm_sup:start_get_fsm( + node(), Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION, self(), RcPid, + FetchConcurrency, BufferFactor), + + _Manifest = riak_cs_get_fsm:get_manifest(Pid), + riak_cs_get_fsm:continue(Pid, {0, size(Value) - 1}), + Value = read_object(Pid, <<>>), + + ok = riak_cs_get_fsm:stop(Pid), + ok. + +read_object(Pid, Q) -> + case riak_cs_get_fsm:get_next_chunk(Pid) of + {done, Chunk} -> + <>; + {chunk, Chunk} -> + read_object(Pid, <>) + end. + +delete_object(Bucket, Key, RcPid) -> + {ok, _UUIDsMarkedforDelete} = + riak_cs_utils:delete_object(Bucket, Key, ?LFS_DEFAULT_OBJECT_VERSION, RcPid), + ok. + + + %% in progress. cluster_info([OutFile]) -> try diff --git a/rel/files/riak-cs-admin b/rel/files/riak-cs-admin index d71fbc04f..c10ea322a 100755 --- a/rel/files/riak-cs-admin +++ b/rel/files/riak-cs-admin @@ -39,7 +39,7 @@ RPC_HOP=$SCRIPT_DIR/riak-cs RPC_HOP_INF=$RPC_HOP usage() { - echo "Usage: $SCRIPT { version | status | gc | access | storage | stanchion | cluster-info | cleanup-orphan-multipart | audit-bucket-ownership}" + echo "Usage: $SCRIPT { version | status | gc | access | storage | stanchion | cluster-info | test | cleanup-orphan-multipart | audit-bucket-ownership}" } # Check the first argument for instructions @@ -102,6 +102,10 @@ case "$1" in ;; esac ;; + 'test') + shift + $RPC_HOP rpc riak_cs_console test + ;; cluster[_-]info) if [ $# -lt 2 ]; then echo "Usage: $SCRIPT $1 " From 7e8113b911f39f9f209dc22a7b3cbc490ee1f458 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 7 Dec 2021 01:15:32 +0200 Subject: [PATCH 255/831] make misc/prepare-riak-for-cs a little more flexible --- misc/prepare-riak-for-cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/misc/prepare-riak-for-cs b/misc/prepare-riak-for-cs index 7273e3c4a..3025502eb 100755 --- a/misc/prepare-riak-for-cs +++ b/misc/prepare-riak-for-cs @@ -1,17 +1,17 @@ #!/bin/bash -ETC=${ETC:-"/etc"} +ETC=${ETC:-"/etc/riak"} # sed the riak-cs settings into factory riak.conf and advanced.config sed -i \ -e "s|storage_backend = bitcask|storage_backend = multi|" \ - $ETC/riak/riak.conf + $ETC/riak.conf echo " buckets.default.allow_mult = true buckets.default.merge_strategy = 2" \ - >>$ETC/riak/riak.conf + >>$ETC/riak.conf sed -i \ -e "s|]\\.|, \ @@ -26,4 +26,4 @@ sed -i \ {storage_backend,riak_kv_multi_backend} \ ]} \ ].|" \ - $ETC/riak/advanced.config + $ETC/advanced.config From 0748216d2c6b160772a5c04dcd79fdb5027751ec Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 7 Dec 2021 01:36:18 +0200 Subject: [PATCH 256/831] inaccurate copyright notice --- rel/files/riak-cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rel/files/riak-cs b/rel/files/riak-cs index ed737ced9..cf54fc27a 100755 --- a/rel/files/riak-cs +++ b/rel/files/riak-cs @@ -4,8 +4,7 @@ ## ## riak-cs: Riak CS launcher ## -## Copyright (c) 2014 Basho Technologies, Inc., -## 2021 TI Tokyo. All Rights Reserved. +## Copyright (c) 2021 TI Tokyo. All Rights Reserved. ## ## This file is provided to you under the Apache License, ## Version 2.0 (the "License"); you may not use this file From c1c007b52db2c5581efd5ab29d7a136df7ff348f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Tue, 7 Dec 2021 15:45:11 +0200 Subject: [PATCH 257/831] touch up README.md --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 9de382df4..bc2159dc7 100644 --- a/README.md +++ b/README.md @@ -32,16 +32,16 @@ These components need to be properly configured, at a minimum: buckets.default.allow_mult = true buckets.default.merge_strategy = 2 ``` - and a special configuration block in advanced.config: + and, in `advanced.config`: ``` {riak_kv, [ {multi_backend, - [{be_default,riak_kv_eleveldb_backend, - [{max_open_files,20}]}, - {be_blocks,riak_kv_bitcask_backend, + [{be_default, riak_kv_eleveldb_backend, + [{max_open_files, 20}]}, + {be_blocks, riak_kv_bitcask_backend, []}]}, {multi_backend_default, be_default}, - {multi_backend_prefix_list, [{<<\"0b:\">>,be_blocks}]}, + {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]}, {storage_backend, riak_kv_multi_backend} ]} ``` @@ -60,7 +60,7 @@ Riak must be started before Riak CS and Stanchion. ## Users and administrative access -On a fresh install, in order to create your first user, you will need +On a fresh install, in order to create an admin user, you will need to start Riak CS with authorization disabled. This can be done with this block in `riak-cs/advanced.config`: ``` @@ -77,15 +77,16 @@ curl -X POST 172.17.0.2:8080/riak-cs/user \ ``` Copy the `key_id` from the returned json and set `admin.key` -option to its value in riak-cs.conf and stanchion.conf. Then disable +option to its value in `riak-cs.conf` and `stanchion.conf`. Then disable the auth bypass by changing `admin_auth_enabled` setting to `true`, and restart Riak CS and Stanchion. Your Riak CS suite is ready for production use; now external incoming requests can be unblocked. All the configuration steps and procedures are scripted in Riak CS as a [Docker service](https://github.com/TI-Tokyo/riak_cs_service_bundle), -which you can, incidentally, use to acquaint yourself with the -operations. +which you can, incidentally, use not only to acquaint yourself with the +operations, but also as a quick and minimal, yet fully functional, +local installation of a full Riak CS suite. # Compatible clients and libraries From 798fb1c32723503056a6c8263882d62aa079fc5f Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Fri, 10 Dec 2021 02:42:03 +0200 Subject: [PATCH 258/831] configure setup in advanced.config --- rel/files/advanced.config | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rel/files/advanced.config b/rel/files/advanced.config index 9f23a5e7e..7172f7aba 100644 --- a/rel/files/advanced.config +++ b/rel/files/advanced.config @@ -1,5 +1,11 @@ [ {riak_cs, [ - ]} + ] + }, + {setup, + [{data_dir, "{{platform_data_dir}}"}, + {log_dir, "{{platform_log_dir}}"} + ] + } ]. From 7c93e200655ed663681dea66ae96450ef6968993 Mon Sep 17 00:00:00 2001 From: Andrei Zavada Date: Sat, 11 Dec 2021 20:55:32 +0200 Subject: [PATCH 259/831] rebar 3.17.0+build.5121.refc5372059, that can handle same-name tag and branch --- rebar3 | Bin 945067 -> 950883 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rebar3 b/rebar3 index 1c3c6989e9c6e49e397eaef6470a725efd4cb469..4b0a00cc94e61e29490bdf7b18145d7ba8d1cff8 100755 GIT binary patch delta 180695 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 delta 174977 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 z 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

    w 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%0A*# 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�I>nz?;YmT3K6cIX2Ok;8bF_IL_jya9-qp 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 BaHZ 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