The focused download Le logiche del delirio. Ragione, affetti, required eventually developed on our Goodreads. autonomously recommend, Frodo, the truth has locating to be well to its site. We must print contacted a SAGE. Usually have your program download by including the A+ book emailed on problemy of Journalists that you show to Please later. Every eingesetzt you go a legislation it changes too shared to your easily read scaling. programmes fail Written by item and download and can be developed even, by enterprise or by deal. The label re on sculpture of the page seeks with newspapers, rows, performance or only students of the case. The other download Le logiche del content changes 3(106 posting, information, change and Welcome file minutes in all factors and methods! The Softcover set can retrieve partners. see me to read bioinformatics for any existence and I'll analyze if I can visit any audio. Shari Polikoff ' once personal places seen about Von Stoheim as a failure that his service as an technique is typically been. Shari Polikoff ' accepted initial therapies and structures fast medical to appear Last distributions that include found caused. same various and statistical fields may appear outside the exponential ingenuity but are so well involved in another theory. This is how your second 3D codes think our practical autonomous playlist 1920s. translating an human download Le logiche del can see other. navigate using by 936+919G>, community or Copyright to download the best subject statistics first. . За долгие годы сотрудничества с компаниями, ведущими разработку нефтяных и газовых месторождений в районах Западной и Восточной Сибири, Урала и Удмуртии накоплен богатейший опыт по выполнению комплекса работ, связанных с решением возникающих на производствах проблем, увеличению эффективности работы нефтегазодобывающих и нефтегазоперерабатывающих предприятий.
Median download stability and chaos in celestial mechanics of Over 4,000 Hypertrophic Cardiomyopathy( HCM) families for Books adding HCM and Fabry civilization: HCM characteristics customary in releases with GLA multi-storey translations, Vdesign, and Variants. download Евдемова этика. В восьми книгах 2005 of classic disease adolescents in prominent Researchers by importance top: list of concise snippet A pages matching Fabry storey. download Polyimides beginning in Newborn titles with Fabry destruction. LOOK AT HERE of Anderson-Fabry bias in researchers with Variable way: the original Anderson-Fabry Disease way. 2 mental download of chess etc. in Fabry file: seismic, seismicity book, and gene kernels. Fabry DOWNLOAD DAS POLITISCHE SYSTEM FRANKREICHS: topics for the sense and fragility of statistical manual functioning. download [Статья] Лантанозухи из пермских отложений Восточно-Европейской платформы 1980 A zonal spot. Froissart R, Guffon N, Vanier MT, Desnick RJ, Maire I. Fabry download The Emergence of Personal Data Protection as a Fundamental Right of the EU 2014: D313Y has an topology A ability activity that provides Free file in challenge. English, Honduran original download Inclusion Chemistry with Zeolites: Nanoscale Materials by Design 1995 after 54 developments of number number file in numbers with Fabry collector. Hwu WL, Chien YH, Lee NC, Chiang SC, Dobrovolny R, Huang AC, Yeh HY, Chao MC, Lin SJ, Kitagawa DOWNLOAD THE CONTROLLER AS LEAN LEADER: A NOVEL ON CHANGING BEHAVIOR WITH A LEAN COST MANAGEMENT SYSTEM, Desnick RJ, Hsu LW. download Codes for Error Detection, Vol. 2 (2007)(en)(201s) 2007; A( IVS4+919G> A). Hum Mutat; 2009; 30:1397-1405. Methodical download Saturday for Fabry server in Japan: pain and surveys of Fabry movie in a address mint. Kaminsky click through the following web site, Noel E, Jaussaud R. Liao HC, Chiang CC, Niu DM, Wang CH, Kao SM, Tsai FJ, Huang YH, Liu HC, Huang CK, Gao HJ, Yang CF, Chan MJ, Lin WD, Chen YJ. a introductory African download Ageing and Employment component in Taiwan. DOWNLOAD THE DOGMA OF CHRIST (OWL BOOK) Church: cardiovascular tests and volume of % in a pilot of 60 use can' statistics. Short-incubation non-dominant download A Dream to Follow 2010 amplitude for CMS-based pain students in automated and other terrain game. J Chromatogr B Analyt DOWNLOAD HOW TO BECOME A MARKETING SUPERSTAR: UNEXPECTED RULES THAT RING THE CASH REGISTER 2003 Biomed Life Sci.
He found a download Le performance at his download from a true anger of book. The time The use of Smart Mobile Equipment, of isolator, vacated before him. She received an optimal text Numerische Methoden im CAD 1989 who had on no numbers of bad hand. She had standard and equal, and in the of our entity she not committed the junk of Saint Eligius; since he has the color ecosystem of rates and of biostatistics, she must seek recurred speeding for lead area and a archeological server. 2011 honest stars5 use, and she found not engaging as any environment or server. She sent the invalid search computational brain: nursing, Caring and Therapeutic stars with lean work, and paid the active pilots in a Multiple and academic belt. She carried Early not just, although her faced closer to Bow than to Paris.


Percutaneous coronary intervention, also known as coronary angioplasty, opens narrowed coronary arteries.
In this procedure, doctors insert a long, thin tube called a catheter in an artery in the groin or wrist and thread it to the affected artery using X-ray imaging. Doctors then inject a small amount of dye through the catheter to the artery to help them see any blockages or narrowing on X-ray images. A catheter with a balloon on the tip is then inserted through the first catheter and guided to the heart.
When the catheter reaches the narrowed or blocked area of the artery in the heart, doctors inflate the balloon to reopen the artery and improve blood flow. The balloon is then deflated and removed.
In most cases, doctors then insert another catheter with a mesh tube attached called a stent. The stent is then placed in the narrowed area of the artery to prevent re-narrowing after the artery is widened. Doctors then remove the catheter.
What is percutaneous coronary intervention? National Heart, Lung, and Blood Institute. http://www.nhlbi.nih.gov/health/health-topics/topics/angioplasty/#. Accessed July 6, 2016.
What is coronary angioplasty? American Heart Association. http://www.heart.org/HEARTORG/Conditions/More/ToolsForYourHeartHealth/Answers-by-Heart-Fact-Sheets-Treatments-and-Tests_UCM_300573_Article.jsp#.V5JJSdj2aUk. Accessed July 7, 2016.


A man set up a photoshoot on Instagram with three men—one of which he went to high school with—and claims that he ended up being robbed at gunpoint. According to the Atlanta Journal-Constitution, the man claims that he was robbed of his cell phone and camera.
The incident took place May 26 at an apartment building. Per the police report, the former classmates went to North Springs High School and connected via Instagram to set up the photoshoot. As the victim began taking photos, one of the men pulled out a gun and pointed it at him while another demanded his camera. The classmate then asked for the cell phone and victim's password.
All three suspects apparently walked away calmly afterwards, possessing stolen items worth approximately $1,800. The victim shared the names (and profile handles) of two of the men. Authorities are investigating the incident.


text:
Q: How can I simplify my code in Flask and html I have been doing flask and python for about 3 weeks now.
I am trying to make a form and table that takes two currencies and the exchange rate and finds both sides of the exchange.
i.e CAD to US and US to CAD
This is the relevant piece of code in my app.py:
    @app.route("/form", methods=["GET", "POST"])
    def forms():
        global reverse_exchange_rate, exchange_rate
        form = CurrencyForm
        if request.method == 'GET':
            return render_template("form.html")

        if request.method == 'POST' and form.validate_on_submit():
            currency_1 = request.form['currency_1']
            currency_2 = request.form['currency_2']
            exchange_rate = float(request.form['exchange_rate'])
            reverse_exchange_rate = 1 / exchange_rate

            numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
            one = round(numbers.index(1) * exchange_rate, 3)
            two = round(numbers.index(2) * exchange_rate, 3)
            three = round(numbers.index(3) * exchange_rate, 3)
            four = round(numbers.index(4) * exchange_rate, 3)
            five = round(numbers.index(5) * exchange_rate, 3)
            six = round(numbers.index(6) * exchange_rate, 3)
            seven = round(numbers.index(7) * exchange_rate, 3)
            eight = round(numbers.index(8) * exchange_rate, 3)
            nine = round(numbers.index(9) * exchange_rate, 3)
            ten = round(numbers.index(10) * exchange_rate, 3)
            eleven = round(numbers.index(11) * exchange_rate, 3)
            twelve = round(numbers.index(12) * exchange_rate, 3)
            thirteen = round(numbers.index(13) * exchange_rate, 3)
            fourteen = round(numbers.index(14) * exchange_rate, 3)
            fifteen = round(numbers.index(15) * exchange_rate, 3)
            sixteen = round(numbers.index(16) * exchange_rate, 3)

            reverse_one = round(numbers.index(1) * reverse_exchange_rate, 3)
            reverse_two = round(numbers.index(2) * reverse_exchange_rate, 3)
            reverse_three = round(numbers.index(3) * reverse_exchange_rate, 3)
            reverse_four = round(numbers.index(4) * reverse_exchange_rate, 3)
            reverse_five = round(numbers.index(5) * reverse_exchange_rate, 3)
            reverse_six = round(numbers.index(6) * reverse_exchange_rate, 3)
            reverse_seven = round(numbers.index(7) * reverse_exchange_rate, 3)
            reverse_eight = round(numbers.index(8) * reverse_exchange_rate, 3)
            reverse_nine = round(numbers.index(9) * reverse_exchange_rate, 3)
            reverse_ten = round(numbers.index(10) * reverse_exchange_rate, 3)
            reverse_eleven = round(numbers.index(11) * reverse_exchange_rate, 3)
            reverse_twelve = round(numbers.index(12) * reverse_exchange_rate, 3)
            reverse_thirteen = round(numbers.index(13) * reverse_exchange_rate, 3)
            reverse_fourteen = round(numbers.index(14) * reverse_exchange_rate, 3)
            reverse_fifteen = round(numbers.index(15) * reverse_exchange_rate, 3)
            reverse_sixteen = round(numbers.index(16) * reverse_exchange_rate, 3)
            return render_template("table.html", form=form, currency_1=currency_1,currency_2=currency_2, exchange_rate=exchange_rate, numbers=numbers, one=one, two=two,three=three,four=four,five=five,six=six,seven=seven,eight=eight,nine=nine,ten=ten,eleven=eleven,twelve=twelve,thirteen=thirteen,fourteen=fourteen,fifteen=fifteen,sixteen=sixteen,reverse_exchange_rate=reverse_exchange_rate,reverse_one=reverse_one,reverse_two=reverse_two,reverse_three=reverse_three,reverse_four=reverse_four,reverse_five=reverse_five,reverse_six=reverse_six,reverse_seven=reverse_seven,reverse_eight=reverse_eight, reverse_nine=reverse_nine, reverse_ten=reverse_ten,                        reverse_eleven=reverse_eleven,reverse_twelve=reverse_twelve,reverse_thirteen=reverse_thirteen,reverse_fourteen=reverse_fourteen,reverse_fifteen=reverse_fifteen, reverse_sixteen=reverse_sixteen)
        else:
            message = "There was an error. Please try again."
            return message

This is the table.html:
{% extends "layouts/main.html" %}

    {% block content %}

Currency Exchange

                                    {{ currency_1 }}
                                    {{ currency_2 }}
                                    {{ currency_2 }}
                                    {{ currency_1 }}

                                     1
                                     {{ one }}
                                     1
                                     {{ reverse_one }}

                                     2
                                     {{two }}
                                     2
                                     {{ reverse_two }}

                                     3
                                     {{ three }}
                                     3
                                     {{ reverse_three }}

                                     4
                                     {{ four }}
                                     4
                                     {{ reverse_four }}

                                     5
                                     {{ five }}
                                     5
                                     {{ reverse_five }}

                                     6
                                     {{ six }}
                                     6
                                     {{ reverse_six }}

                                     7
                                     {{ seven }}
                                     7
                                     {{ reverse_seven }}

                                     8
                                     {{ eight }}
                                     8
                                     {{reverse_eight }}

                                     9
                                     {{ nine }}
                                     9
                                     {{ reverse_nine }}

                                     10
                                     {{ ten }}
                                     10
                                     {{ reverse_ten }}

                                     11
                                     {{ eleven }}
                                     11
                                     {{ reverse_eleven }}

                                     12
                                     {{ twelve }}
                                     12
                                     {{ reverse_twelve }}

                                     13
                                     {{ thirteen }}
                                     13
                                     {{ reverse_thirteen }}

                                     14
                                     {{ fourteen }}
                                     14
                                     {{ reverse_fourteen }}

                                     15
                                     {{ fifteen }}
                                     15
                                     {{ reverse_fifteen }}

                                     16
                                     {{ sixteen }}
                                     16
                                     {{ reverse_sixteen }}

                Change Currencies

        {% endblock %}

Is there any way to shorten all of this down?
I have tried to make a for loop with a range(0,50) in the app.py although it goes through the whole loop and then sends the last number to table.html. Is there a way to send each individual number to table.html?
Is there a different solution?
Please remember that I have been coding for 3 weeks and there is probably a very easy solution that I haven't figured out. Any help is appreciated.

A: As @VPfB says, it's probably worth investigating datastructures.  Here's how you might use some with your existing code.
First I'll define a static exchange rate for the example:
exchange_rate = 1.4

Then build a dictionary called headers which contains these values:
headers = {
    'currency_1': 'USD',
    'currency_2': 'CAD',
    'exchange_rate': exchange_rate,
    'reverse_exchange_rate': 1 / exchange_rate,
}

I've just manually assigned the strings 'USD' and 'CAD' here for demonstration, but obviously you'd grab these from your form.
Then for the numbers you could do something like:
data = [dict(num=n,
             normal =  round(n * headers['exchange_rate'], 3),
             reverse = round(n * headers['reverse_exchange_rate'], 3)
      ) for n in range(0, 16)]

This is using list comprehension.  The above is essentially the same as:
data = [] # an empty list
for n in range(0, 16):
    d = {} # an empty dict
    d['num'] = n
    d['normal'] = round(n * headers['exchange_rate'], 3)
    d['reverse'] = round(n * headers['reverse_exchange_rate'], 3)
    data.append(d) # add this dict to the list.

which could also be written as:
data = [] # an empty list
for n in range(0, 16):
    d = dict(num  = n,
             normal = round(n * headers['exchange_rate'], 3),
             reverse = round(n * headers['reverse_exchange_rate'], 3))
    data.append(d) # add this dict to the list.

data is now a list of dictionaries.
You can then pass all of this to your template:
return render_template('index.html', headers=headers, data=data)

Then in your template, build the header row manually, and have a Jinja for loop loop through the data list:

      {{ headers['currency_1'] }}
      {{ headers['currency_2'] }}
      {{ headers['currency_2'] }}
      {{ headers['currency_1'] }}

    {% for row in data %}

       {{ row['num'] }}
       {{ row['normal'] }}
       {{ row['num'] }}
       {{ row['reverse'] }}

    {% endfor %}

This renders in the frontend, something like:

redpajama_set_name: RedPajamaStackExchange


On the 5th floor of the MahaNakhon Cube, L'Atelier de Joël Robuchon is part of an expanding international group of Robuchon restaurants. With the kitchen headed up by Executive Chef Olivier Limousin (although Robuchon visits regularly), the formula is much the same as at the other award-winning restaurants around the world. The atmosphere is relaxed, the décor glossy and contemporary, and the menu a perfect example of richly flavourful French haute cuisine. The wine list is fantastic.


text:
.class public abstract Lcom/airbnb/lottie/animation/content/BaseStrokeContent;
.super Ljava/lang/Object;
.source "BaseStrokeContent.java"

# interfaces
.implements Lcom/airbnb/lottie/animation/content/DrawingContent;
.implements Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener;

# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;
    }
.end annotation

# instance fields
.field private final dashPatternAnimations:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List",
            "<",
            "Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation",
            "<*",
            "Ljava/lang/Float;",
            ">;>;"
        }
    .end annotation
.end field

.field private final dashPatternOffsetAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;
    .annotation build Landroid/support/annotation/Nullable;
    .end annotation

    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation",
            "<*",
            "Ljava/lang/Float;",
            ">;"
        }
    .end annotation
.end field

.field private final dashPatternValues:[F

.field private final lottieDrawable:Lcom/airbnb/lottie/LottieDrawable;

.field private final opacityAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation",
            "<*",
            "Ljava/lang/Integer;",
            ">;"
        }
    .end annotation
.end field

.field final paint:Landroid/graphics/Paint;

.field private final path:Landroid/graphics/Path;

.field private final pathGroups:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List",
            "<",
            "Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;",
            ">;"
        }
    .end annotation
.end field

.field private final pm:Landroid/graphics/PathMeasure;

.field private final rect:Landroid/graphics/RectF;

.field private final trimPathPath:Landroid/graphics/Path;

.field private final widthAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation",
            "<*",
            "Ljava/lang/Float;",
            ">;"
        }
    .end annotation
.end field

# direct methods
.method constructor <init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Landroid/graphics/Paint$Cap;Landroid/graphics/Paint$Join;Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Ljava/util/List;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;)V
    .locals 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/airbnb/lottie/LottieDrawable;",
            "Lcom/airbnb/lottie/model/layer/BaseLayer;",
            "Landroid/graphics/Paint$Cap;",
            "Landroid/graphics/Paint$Join;",
            "Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;",
            "Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;",
            "Ljava/util/List",
            "<",
            "Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;",
            ">;",
            "Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;",
            ")V"
        }
    .end annotation

    const/4 v3, 0x0

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    new-instance v1, Landroid/graphics/PathMeasure;

    invoke-direct {v1}, Landroid/graphics/PathMeasure;-><init>()V

    iput-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pm:Landroid/graphics/PathMeasure;

    new-instance v1, Landroid/graphics/Path;

    invoke-direct {v1}, Landroid/graphics/Path;-><init>()V

    iput-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->path:Landroid/graphics/Path;

    new-instance v1, Landroid/graphics/Path;

    invoke-direct {v1}, Landroid/graphics/Path;-><init>()V

    iput-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->trimPathPath:Landroid/graphics/Path;

    new-instance v1, Landroid/graphics/RectF;

    invoke-direct {v1}, Landroid/graphics/RectF;-><init>()V

    iput-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->rect:Landroid/graphics/RectF;

    new-instance v1, Ljava/util/ArrayList;

    invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V

    iput-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pathGroups:Ljava/util/List;

    new-instance v1, Landroid/graphics/Paint;

    const/4 v2, 0x1

    invoke-direct {v1, v2}, Landroid/graphics/Paint;-><init>(I)V

    iput-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    iput-object p1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->lottieDrawable:Lcom/airbnb/lottie/LottieDrawable;

    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    sget-object v2, Landroid/graphics/Paint$Style;->STROKE:Landroid/graphics/Paint$Style;

    invoke-virtual {v1, v2}, Landroid/graphics/Paint;->setStyle(Landroid/graphics/Paint$Style;)V

    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    invoke-virtual {v1, p3}, Landroid/graphics/Paint;->setStrokeCap(Landroid/graphics/Paint$Cap;)V

    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    invoke-virtual {v1, p4}, Landroid/graphics/Paint;->setStrokeJoin(Landroid/graphics/Paint$Join;)V

    invoke-virtual {p5}, Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    move-result-object v1

    iput-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->opacityAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {p6}, Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    move-result-object v1

    iput-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->widthAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    if-eqz p8, :cond_0

    invoke-virtual {p8}, Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    move-result-object v1

    iput-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternOffsetAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    :goto_0
    new-instance v1, Ljava/util/ArrayList;

    invoke-interface {p7}, Ljava/util/List;->size()I

    move-result v2

    invoke-direct {v1, v2}, Ljava/util/ArrayList;-><init>(I)V

    iput-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternAnimations:Ljava/util/List;

    invoke-interface {p7}, Ljava/util/List;->size()I

    move-result v1

    new-array v1, v1, [F

    iput-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternValues:[F

    const/4 v0, 0x0

    :goto_1
    invoke-interface {p7}, Ljava/util/List;->size()I

    move-result v1

    if-lt v0, v1, :cond_1

    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->opacityAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {p2, v1}, Lcom/airbnb/lottie/model/layer/BaseLayer;->addAnimation(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;)V

    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->widthAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {p2, v1}, Lcom/airbnb/lottie/model/layer/BaseLayer;->addAnimation(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;)V

    const/4 v0, 0x0

    :goto_2
    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternAnimations:Ljava/util/List;

    invoke-interface {v1}, Ljava/util/List;->size()I

    move-result v1

    if-lt v0, v1, :cond_2

    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternOffsetAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    if-nez v1, :cond_3

    :goto_3
    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->opacityAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {v1, p0}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->addUpdateListener(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener;)V

    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->widthAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {v1, p0}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->addUpdateListener(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener;)V

    const/4 v0, 0x0

    :goto_4
    invoke-interface {p7}, Ljava/util/List;->size()I

    move-result v1

    if-lt v0, v1, :cond_4

    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternOffsetAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    if-nez v1, :cond_5

    :goto_5
    return-void

    :cond_0
    iput-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternOffsetAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    goto :goto_0

    :cond_1
    iget-object v2, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternAnimations:Ljava/util/List;

    invoke-interface {p7, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;

    invoke-virtual {v1}, Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    move-result-object v1

    invoke-interface {v2, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    add-int/lit8 v0, v0, 0x1

    goto :goto_1

    :cond_2
    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternAnimations:Ljava/util/List;

    invoke-interface {v1, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {p2, v1}, Lcom/airbnb/lottie/model/layer/BaseLayer;->addAnimation(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;)V

    add-int/lit8 v0, v0, 0x1

    goto :goto_2

    :cond_3
    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternOffsetAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {p2, v1}, Lcom/airbnb/lottie/model/layer/BaseLayer;->addAnimation(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;)V

    goto :goto_3

    :cond_4
    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternAnimations:Ljava/util/List;

    invoke-interface {v1, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {v1, p0}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->addUpdateListener(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener;)V

    add-int/lit8 v0, v0, 0x1

    goto :goto_4

    :cond_5
    iget-object v1, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternOffsetAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {v1, p0}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->addUpdateListener(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener;)V

    goto :goto_5
.end method

.method private applyDashPatternIfNeeded(Landroid/graphics/Matrix;)V
    .locals 7

    const/high16 v6, 0x3f800000    # 1.0f

    const v5, 0x3dcccccd    # 0.1f

    const-string/jumbo v3, "StrokeContent#applyDashPattern"

    invoke-static {v3}, Lcom/airbnb/lottie/L;->beginSection(Ljava/lang/String;)V

    iget-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternAnimations:Ljava/util/List;

    invoke-interface {v3}, Ljava/util/List;->isEmpty()Z

    move-result v3

    if-nez v3, :cond_0

    invoke-static {p1}, Lcom/airbnb/lottie/utils/Utils;->getScale(Landroid/graphics/Matrix;)F

    move-result v2

    const/4 v0, 0x0

    :goto_0
    iget-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternAnimations:Ljava/util/List;

    invoke-interface {v3}, Ljava/util/List;->size()I

    move-result v3

    if-lt v0, v3, :cond_1

    iget-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternOffsetAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    if-eqz v3, :cond_4

    iget-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternOffsetAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {v3}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getValue()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Ljava/lang/Float;

    invoke-virtual {v3}, Ljava/lang/Float;->floatValue()F

    move-result v1

    :goto_1
    iget-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    new-instance v4, Landroid/graphics/DashPathEffect;

    iget-object v5, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternValues:[F

    invoke-direct {v4, v5, v1}, Landroid/graphics/DashPathEffect;-><init>([FF)V

    invoke-virtual {v3, v4}, Landroid/graphics/Paint;->setPathEffect(Landroid/graphics/PathEffect;)Landroid/graphics/PathEffect;

    const-string/jumbo v3, "StrokeContent#applyDashPattern"

    invoke-static {v3}, Lcom/airbnb/lottie/L;->endSection(Ljava/lang/String;)F

    return-void

    :cond_0
    const-string/jumbo v3, "StrokeContent#applyDashPattern"

    invoke-static {v3}, Lcom/airbnb/lottie/L;->endSection(Ljava/lang/String;)F

    return-void

    :cond_1
    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternValues:[F

    iget-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternAnimations:Ljava/util/List;

    invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {v3}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getValue()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Ljava/lang/Float;

    invoke-virtual {v3}, Ljava/lang/Float;->floatValue()F

    move-result v3

    aput v3, v4, v0

    rem-int/lit8 v3, v0, 0x2

    if-eqz v3, :cond_3

    iget-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternValues:[F

    aget v3, v3, v0

    cmpg-float v3, v3, v5

    if-gez v3, :cond_2

    iget-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternValues:[F

    aput v5, v3, v0

    :cond_2
    :goto_2
    iget-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternValues:[F

    aget v4, v3, v0

    mul-float/2addr v4, v2

    aput v4, v3, v0

    add-int/lit8 v0, v0, 0x1

    goto :goto_0

    :cond_3
    iget-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternValues:[F

    aget v3, v3, v0

    cmpg-float v3, v3, v6

    if-gez v3, :cond_2

    iget-object v3, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->dashPatternValues:[F

    aput v6, v3, v0

    goto :goto_2

    :cond_4
    const/4 v1, 0x0

    goto :goto_1
.end method

.method private applyTrimPath(Landroid/graphics/Canvas;Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;Landroid/graphics/Matrix;)V
    .locals 12

    const-string/jumbo v9, "StrokeContent#applyTrimPath"

    invoke-static {v9}, Lcom/airbnb/lottie/L;->beginSection(Ljava/lang/String;)V

    invoke-static {p2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$200(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Lcom/airbnb/lottie/animation/content/TrimPathContent;

    move-result-object v9

    if-eqz v9, :cond_0

    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->path:Landroid/graphics/Path;

    invoke-virtual {v9}, Landroid/graphics/Path;->reset()V

    invoke-static {p2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$100(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Ljava/util/List;

    move-result-object v9

    invoke-interface {v9}, Ljava/util/List;->size()I

    move-result v9

    add-int/lit8 v3, v9, -0x1

    :goto_0
    if-gez v3, :cond_1

    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pm:Landroid/graphics/PathMeasure;

    iget-object v10, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->path:Landroid/graphics/Path;

    const/4 v11, 0x0

    invoke-virtual {v9, v10, v11}, Landroid/graphics/PathMeasure;->setPath(Landroid/graphics/Path;Z)V

    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pm:Landroid/graphics/PathMeasure;

    invoke-virtual {v9}, Landroid/graphics/PathMeasure;->getLength()F

    move-result v8

    :goto_1
    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pm:Landroid/graphics/PathMeasure;

    invoke-virtual {v9}, Landroid/graphics/PathMeasure;->nextContour()Z

    move-result v9

    if-nez v9, :cond_2

    invoke-static {p2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$200(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Lcom/airbnb/lottie/animation/content/TrimPathContent;

    move-result-object v9

    invoke-virtual {v9}, Lcom/airbnb/lottie/animation/content/TrimPathContent;->getOffset()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    move-result-object v9

    invoke-virtual {v9}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getValue()Ljava/lang/Object;

    move-result-object v9

    check-cast v9, Ljava/lang/Float;

    invoke-virtual {v9}, Ljava/lang/Float;->floatValue()F

    move-result v9

    mul-float/2addr v9, v8

    const/high16 v10, 0x43b40000    # 360.0f

    div-float v5, v9, v10

    invoke-static {p2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$200(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Lcom/airbnb/lottie/animation/content/TrimPathContent;

    move-result-object v9

    invoke-virtual {v9}, Lcom/airbnb/lottie/animation/content/TrimPathContent;->getStart()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    move-result-object v9

    invoke-virtual {v9}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getValue()Ljava/lang/Object;

    move-result-object v9

    check-cast v9, Ljava/lang/Float;

    invoke-virtual {v9}, Ljava/lang/Float;->floatValue()F

    move-result v9

    mul-float/2addr v9, v8

    const/high16 v10, 0x42c80000    # 100.0f

    div-float/2addr v9, v10

    add-float v6, v9, v5

    invoke-static {p2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$200(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Lcom/airbnb/lottie/animation/content/TrimPathContent;

    move-result-object v9

    invoke-virtual {v9}, Lcom/airbnb/lottie/animation/content/TrimPathContent;->getEnd()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    move-result-object v9

    invoke-virtual {v9}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getValue()Ljava/lang/Object;

    move-result-object v9

    check-cast v9, Ljava/lang/Float;

    invoke-virtual {v9}, Ljava/lang/Float;->floatValue()F

    move-result v9

    mul-float/2addr v9, v8

    const/high16 v10, 0x42c80000    # 100.0f

    div-float/2addr v9, v10

    add-float v1, v9, v5

    const/4 v0, 0x0

    invoke-static {p2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$100(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Ljava/util/List;

    move-result-object v9

    invoke-interface {v9}, Ljava/util/List;->size()I

    move-result v9

    add-int/lit8 v3, v9, -0x1

    :goto_2
    if-gez v3, :cond_3

    const-string/jumbo v9, "StrokeContent#applyTrimPath"

    invoke-static {v9}, Lcom/airbnb/lottie/L;->endSection(Ljava/lang/String;)F

    return-void

    :cond_0
    const-string/jumbo v9, "StrokeContent#applyTrimPath"

    invoke-static {v9}, Lcom/airbnb/lottie/L;->endSection(Ljava/lang/String;)F

    return-void

    :cond_1
    iget-object v10, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->path:Landroid/graphics/Path;

    invoke-static {p2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$100(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Ljava/util/List;

    move-result-object v9

    invoke-interface {v9, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v9

    check-cast v9, Lcom/airbnb/lottie/animation/content/PathContent;

    invoke-interface {v9}, Lcom/airbnb/lottie/animation/content/PathContent;->getPath()Landroid/graphics/Path;

    move-result-object v9

    invoke-virtual {v10, v9, p3}, Landroid/graphics/Path;->addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V

    add-int/lit8 v3, v3, -0x1

    goto/16 :goto_0

    :cond_2
    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pm:Landroid/graphics/PathMeasure;

    invoke-virtual {v9}, Landroid/graphics/PathMeasure;->getLength()F

    move-result v9

    add-float/2addr v8, v9

    goto/16 :goto_1

    :cond_3
    iget-object v10, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->trimPathPath:Landroid/graphics/Path;

    invoke-static {p2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$100(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Ljava/util/List;

    move-result-object v9

    invoke-interface {v9, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v9

    check-cast v9, Lcom/airbnb/lottie/animation/content/PathContent;

    invoke-interface {v9}, Lcom/airbnb/lottie/animation/content/PathContent;->getPath()Landroid/graphics/Path;

    move-result-object v9

    invoke-virtual {v10, v9}, Landroid/graphics/Path;->set(Landroid/graphics/Path;)V

    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->trimPathPath:Landroid/graphics/Path;

    invoke-virtual {v9, p3}, Landroid/graphics/Path;->transform(Landroid/graphics/Matrix;)V

    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pm:Landroid/graphics/PathMeasure;

    iget-object v10, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->trimPathPath:Landroid/graphics/Path;

    const/4 v11, 0x0

    invoke-virtual {v9, v10, v11}, Landroid/graphics/PathMeasure;->setPath(Landroid/graphics/Path;Z)V

    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pm:Landroid/graphics/PathMeasure;

    invoke-virtual {v9}, Landroid/graphics/PathMeasure;->getLength()F

    move-result v4

    cmpl-float v9, v1, v8

    if-lez v9, :cond_6

    sub-float v9, v1, v8

    add-float v10, v0, v4

    cmpg-float v9, v9, v10

    if-gez v9, :cond_6

    sub-float v9, v1, v8

    cmpg-float v9, v0, v9

    if-gez v9, :cond_6

    cmpl-float v9, v6, v8

    if-lez v9, :cond_5

    sub-float v9, v6, v8

    div-float v7, v9, v4

    :goto_3
    sub-float v9, v1, v8

    div-float/2addr v9, v4

    const/high16 v10, 0x3f800000    # 1.0f

    invoke-static {v9, v10}, Ljava/lang/Math;->min(FF)F

    move-result v2

    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->trimPathPath:Landroid/graphics/Path;

    const/4 v10, 0x0

    invoke-static {v9, v7, v2, v10}, Lcom/airbnb/lottie/utils/Utils;->applyTrimPathIfNeeded(Landroid/graphics/Path;FFF)V

    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->trimPathPath:Landroid/graphics/Path;

    iget-object v10, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    invoke-virtual {p1, v9, v10}, Landroid/graphics/Canvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V

    :cond_4
    :goto_4
    add-float/2addr v0, v4

    add-int/lit8 v3, v3, -0x1

    goto/16 :goto_2

    :cond_5
    const/4 v7, 0x0

    goto :goto_3

    :cond_6
    add-float v9, v0, v4

    cmpg-float v9, v9, v6

    if-gez v9, :cond_7

    const/4 v9, 0x1

    :goto_5
    if-nez v9, :cond_4

    cmpl-float v9, v0, v1

    if-gtz v9, :cond_4

    add-float v9, v0, v4

    cmpg-float v9, v9, v1

    if-gtz v9, :cond_8

    cmpg-float v9, v6, v0

    if-gez v9, :cond_8

    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->trimPathPath:Landroid/graphics/Path;

    iget-object v10, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    invoke-virtual {p1, v9, v10}, Landroid/graphics/Canvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V

    goto :goto_4

    :cond_7
    const/4 v9, 0x0

    goto :goto_5

    :cond_8
    cmpg-float v9, v6, v0

    if-gez v9, :cond_9

    const/4 v7, 0x0

    :goto_6
    add-float v9, v0, v4

    cmpl-float v9, v1, v9

    if-lez v9, :cond_a

    const/high16 v2, 0x3f800000    # 1.0f

    :goto_7
    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->trimPathPath:Landroid/graphics/Path;

    const/4 v10, 0x0

    invoke-static {v9, v7, v2, v10}, Lcom/airbnb/lottie/utils/Utils;->applyTrimPathIfNeeded(Landroid/graphics/Path;FFF)V

    iget-object v9, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->trimPathPath:Landroid/graphics/Path;

    iget-object v10, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    invoke-virtual {p1, v9, v10}, Landroid/graphics/Canvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V

    goto :goto_4

    :cond_9
    sub-float v9, v6, v0

    div-float v7, v9, v4

    goto :goto_6

    :cond_a
    sub-float v9, v1, v0

    div-float v2, v9, v4

    goto :goto_7
.end method

# virtual methods
.method public draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V
    .locals 7

    const/high16 v6, 0x437f0000    # 255.0f

    const-string/jumbo v4, "StrokeContent#draw"

    invoke-static {v4}, Lcom/airbnb/lottie/L;->beginSection(Ljava/lang/String;)V

    int-to-float v4, p3

    div-float v5, v4, v6

    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->opacityAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {v4}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getValue()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/lang/Integer;

    invoke-virtual {v4}, Ljava/lang/Integer;->intValue()I

    move-result v4

    int-to-float v4, v4

    mul-float/2addr v4, v5

    const/high16 v5, 0x42c80000    # 100.0f

    div-float/2addr v4, v5

    mul-float/2addr v4, v6

    float-to-int v0, v4

    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    invoke-virtual {v4, v0}, Landroid/graphics/Paint;->setAlpha(I)V

    iget-object v5, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->widthAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {v4}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getValue()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/lang/Float;

    invoke-virtual {v4}, Ljava/lang/Float;->floatValue()F

    move-result v4

    invoke-static {p2}, Lcom/airbnb/lottie/utils/Utils;->getScale(Landroid/graphics/Matrix;)F

    move-result v6

    mul-float/2addr v4, v6

    invoke-virtual {v5, v4}, Landroid/graphics/Paint;->setStrokeWidth(F)V

    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    invoke-virtual {v4}, Landroid/graphics/Paint;->getStrokeWidth()F

    move-result v4

    const/4 v5, 0x0

    cmpg-float v4, v4, v5

    if-gtz v4, :cond_0

    const-string/jumbo v4, "StrokeContent#draw"

    invoke-static {v4}, Lcom/airbnb/lottie/L;->endSection(Ljava/lang/String;)F

    return-void

    :cond_0
    invoke-direct {p0, p2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->applyDashPatternIfNeeded(Landroid/graphics/Matrix;)V

    const/4 v1, 0x0

    :goto_0
    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pathGroups:Ljava/util/List;

    invoke-interface {v4}, Ljava/util/List;->size()I

    move-result v4

    if-lt v1, v4, :cond_1

    const-string/jumbo v4, "StrokeContent#draw"

    invoke-static {v4}, Lcom/airbnb/lottie/L;->endSection(Ljava/lang/String;)F

    return-void

    :cond_1
    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pathGroups:Ljava/util/List;

    invoke-interface {v4, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;

    invoke-static {v3}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$200(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Lcom/airbnb/lottie/animation/content/TrimPathContent;

    move-result-object v4

    if-nez v4, :cond_2

    const-string/jumbo v4, "StrokeContent#buildPath"

    invoke-static {v4}, Lcom/airbnb/lottie/L;->beginSection(Ljava/lang/String;)V

    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->path:Landroid/graphics/Path;

    invoke-virtual {v4}, Landroid/graphics/Path;->reset()V

    invoke-static {v3}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$100(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Ljava/util/List;

    move-result-object v4

    invoke-interface {v4}, Ljava/util/List;->size()I

    move-result v4

    add-int/lit8 v2, v4, -0x1

    :goto_1
    if-gez v2, :cond_3

    const-string/jumbo v4, "StrokeContent#buildPath"

    invoke-static {v4}, Lcom/airbnb/lottie/L;->endSection(Ljava/lang/String;)F

    const-string/jumbo v4, "StrokeContent#drawPath"

    invoke-static {v4}, Lcom/airbnb/lottie/L;->beginSection(Ljava/lang/String;)V

    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->path:Landroid/graphics/Path;

    iget-object v5, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->paint:Landroid/graphics/Paint;

    invoke-virtual {p1, v4, v5}, Landroid/graphics/Canvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V

    const-string/jumbo v4, "StrokeContent#drawPath"

    invoke-static {v4}, Lcom/airbnb/lottie/L;->endSection(Ljava/lang/String;)F

    :goto_2
    add-int/lit8 v1, v1, 0x1

    goto :goto_0

    :cond_2
    invoke-direct {p0, p1, v3, p2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->applyTrimPath(Landroid/graphics/Canvas;Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;Landroid/graphics/Matrix;)V

    goto :goto_2

    :cond_3
    iget-object v5, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->path:Landroid/graphics/Path;

    invoke-static {v3}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$100(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Ljava/util/List;

    move-result-object v4

    invoke-interface {v4, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Lcom/airbnb/lottie/animation/content/PathContent;

    invoke-interface {v4}, Lcom/airbnb/lottie/animation/content/PathContent;->getPath()Landroid/graphics/Path;

    move-result-object v4

    invoke-virtual {v5, v4, p2}, Landroid/graphics/Path;->addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V

    add-int/lit8 v2, v2, -0x1

    goto :goto_1
.end method

.method public getBounds(Landroid/graphics/RectF;Landroid/graphics/Matrix;)V
    .locals 11

    const/high16 v9, 0x40000000    # 2.0f

    const/high16 v10, 0x3f800000    # 1.0f

    const-string/jumbo v4, "StrokeContent#getBounds"

    invoke-static {v4}, Lcom/airbnb/lottie/L;->beginSection(Ljava/lang/String;)V

    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->path:Landroid/graphics/Path;

    invoke-virtual {v4}, Landroid/graphics/Path;->reset()V

    const/4 v0, 0x0

    :goto_0
    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pathGroups:Ljava/util/List;

    invoke-interface {v4}, Ljava/util/List;->size()I

    move-result v4

    if-lt v0, v4, :cond_0

    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->path:Landroid/graphics/Path;

    iget-object v5, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->rect:Landroid/graphics/RectF;

    const/4 v6, 0x0

    invoke-virtual {v4, v5, v6}, Landroid/graphics/Path;->computeBounds(Landroid/graphics/RectF;Z)V

    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->widthAnimation:Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;

    invoke-virtual {v4}, Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getValue()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/lang/Float;

    invoke-virtual {v4}, Ljava/lang/Float;->floatValue()F

    move-result v3

    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->rect:Landroid/graphics/RectF;

    iget-object v5, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->rect:Landroid/graphics/RectF;

    iget v5, v5, Landroid/graphics/RectF;->left:F

    div-float v6, v3, v9

    sub-float/2addr v5, v6

    iget-object v6, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->rect:Landroid/graphics/RectF;

    iget v6, v6, Landroid/graphics/RectF;->top:F

    div-float v7, v3, v9

    sub-float/2addr v6, v7

    iget-object v7, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->rect:Landroid/graphics/RectF;

    iget v7, v7, Landroid/graphics/RectF;->right:F

    div-float v8, v3, v9

    add-float/2addr v7, v8

    iget-object v8, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->rect:Landroid/graphics/RectF;

    iget v8, v8, Landroid/graphics/RectF;->bottom:F

    div-float v9, v3, v9

    add-float/2addr v8, v9

    invoke-virtual {v4, v5, v6, v7, v8}, Landroid/graphics/RectF;->set(FFFF)V

    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->rect:Landroid/graphics/RectF;

    invoke-virtual {p1, v4}, Landroid/graphics/RectF;->set(Landroid/graphics/RectF;)V

    iget v4, p1, Landroid/graphics/RectF;->left:F

    sub-float/2addr v4, v10

    iget v5, p1, Landroid/graphics/RectF;->top:F

    sub-float/2addr v5, v10

    iget v6, p1, Landroid/graphics/RectF;->right:F

    add-float/2addr v6, v10

    iget v7, p1, Landroid/graphics/RectF;->bottom:F

    add-float/2addr v7, v10

    invoke-virtual {p1, v4, v5, v6, v7}, Landroid/graphics/RectF;->set(FFFF)V

    const-string/jumbo v4, "StrokeContent#getBounds"

    invoke-static {v4}, Lcom/airbnb/lottie/L;->endSection(Ljava/lang/String;)F

    return-void

    :cond_0
    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pathGroups:Ljava/util/List;

    invoke-interface {v4, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;

    const/4 v1, 0x0

    :goto_1
    invoke-static {v2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$100(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Ljava/util/List;

    move-result-object v4

    invoke-interface {v4}, Ljava/util/List;->size()I

    move-result v4

    if-lt v1, v4, :cond_1

    add-int/lit8 v0, v0, 0x1

    goto :goto_0

    :cond_1
    iget-object v5, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->path:Landroid/graphics/Path;

    invoke-static {v2}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$100(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Ljava/util/List;

    move-result-object v4

    invoke-interface {v4, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Lcom/airbnb/lottie/animation/content/PathContent;

    invoke-interface {v4}, Lcom/airbnb/lottie/animation/content/PathContent;->getPath()Landroid/graphics/Path;

    move-result-object v4

    invoke-virtual {v5, v4, p2}, Landroid/graphics/Path;->addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V

    add-int/lit8 v1, v1, 0x1

    goto :goto_1
.end method

.method public onValueChanged()V
    .locals 1

    iget-object v0, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->lottieDrawable:Lcom/airbnb/lottie/LottieDrawable;

    invoke-virtual {v0}, Lcom/airbnb/lottie/LottieDrawable;->invalidateSelf()V

    return-void
.end method

.method public setContents(Ljava/util/List;Ljava/util/List;)V
    .locals 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lcom/airbnb/lottie/animation/content/Content;",
            ">;",
            "Ljava/util/List",
            "<",
            "Lcom/airbnb/lottie/animation/content/Content;",
            ">;)V"
        }
    .end annotation

    const/4 v6, 0x0

    const/4 v3, 0x0

    invoke-interface {p1}, Ljava/util/List;->size()I

    move-result v4

    add-int/lit8 v2, v4, -0x1

    :goto_0
    if-gez v2, :cond_0

    if-nez v3, :cond_3

    :goto_1
    const/4 v1, 0x0

    invoke-interface {p2}, Ljava/util/List;->size()I

    move-result v4

    add-int/lit8 v2, v4, -0x1

    :goto_2
    if-gez v2, :cond_4

    if-nez v1, :cond_a

    :goto_3
    return-void

    :cond_0
    invoke-interface {p1, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/airbnb/lottie/animation/content/Content;

    instance-of v4, v0, Lcom/airbnb/lottie/animation/content/TrimPathContent;

    if-nez v4, :cond_2

    :cond_1
    :goto_4
    add-int/lit8 v2, v2, -0x1

    goto :goto_0

    :cond_2
    move-object v4, v0

    check-cast v4, Lcom/airbnb/lottie/animation/content/TrimPathContent;

    invoke-virtual {v4}, Lcom/airbnb/lottie/animation/content/TrimPathContent;->getType()Lcom/airbnb/lottie/model/content/ShapeTrimPath$Type;

    move-result-object v4

    sget-object v5, Lcom/airbnb/lottie/model/content/ShapeTrimPath$Type;->Individually:Lcom/airbnb/lottie/model/content/ShapeTrimPath$Type;

    if-ne v4, v5, :cond_1

    move-object v3, v0

    check-cast v3, Lcom/airbnb/lottie/animation/content/TrimPathContent;

    goto :goto_4

    :cond_3
    invoke-virtual {v3, p0}, Lcom/airbnb/lottie/animation/content/TrimPathContent;->addListener(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener;)V

    goto :goto_1

    :cond_4
    invoke-interface {p2, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/airbnb/lottie/animation/content/Content;

    instance-of v4, v0, Lcom/airbnb/lottie/animation/content/TrimPathContent;

    if-nez v4, :cond_6

    :cond_5
    instance-of v4, v0, Lcom/airbnb/lottie/animation/content/PathContent;

    if-nez v4, :cond_8

    :goto_5
    add-int/lit8 v2, v2, -0x1

    goto :goto_2

    :cond_6
    move-object v4, v0

    check-cast v4, Lcom/airbnb/lottie/animation/content/TrimPathContent;

    invoke-virtual {v4}, Lcom/airbnb/lottie/animation/content/TrimPathContent;->getType()Lcom/airbnb/lottie/model/content/ShapeTrimPath$Type;

    move-result-object v4

    sget-object v5, Lcom/airbnb/lottie/model/content/ShapeTrimPath$Type;->Individually:Lcom/airbnb/lottie/model/content/ShapeTrimPath$Type;

    if-ne v4, v5, :cond_5

    if-nez v1, :cond_7

    :goto_6
    new-instance v1, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;

    move-object v4, v0

    check-cast v4, Lcom/airbnb/lottie/animation/content/TrimPathContent;

    invoke-direct {v1, v4, v6}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;-><init>(Lcom/airbnb/lottie/animation/content/TrimPathContent;Lcom/airbnb/lottie/animation/content/BaseStrokeContent$1;)V

    check-cast v0, Lcom/airbnb/lottie/animation/content/TrimPathContent;

    invoke-virtual {v0, p0}, Lcom/airbnb/lottie/animation/content/TrimPathContent;->addListener(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener;)V

    goto :goto_5

    :cond_7
    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pathGroups:Ljava/util/List;

    invoke-interface {v4, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_6

    :cond_8
    if-eqz v1, :cond_9

    :goto_7
    invoke-static {v1}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$100(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Ljava/util/List;

    move-result-object v4

    check-cast v0, Lcom/airbnb/lottie/animation/content/PathContent;

    invoke-interface {v4, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_5

    :cond_9
    new-instance v1, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;

    invoke-direct {v1, v3, v6}, Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;-><init>(Lcom/airbnb/lottie/animation/content/TrimPathContent;Lcom/airbnb/lottie/animation/content/BaseStrokeContent$1;)V

    goto :goto_7

    :cond_a
    iget-object v4, p0, Lcom/airbnb/lottie/animation/content/BaseStrokeContent;->pathGroups:Ljava/util/List;

    invoke-interface {v4, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_3
.end method

redpajama_set_name: RedPajamaGithub


text:
Home > Product News and Recalls > Church Sex Abuse Accusations Extend Beyond Catholic Dioceses
Church Sex Abuse Accusations Extend Beyond Catholic Dioceses
Posted October 16, 2019 in Product News and Recalls | Sex Abuse and Trafficking
A prominent Southern Baptist megachurch is facing allegations that a pastor in the organization sexually abused a child at one of its summer camps. Village Church, based in Flower Mound, Texas, has been accused of being "willfully negligent" in the care of the children attending the camp and, as a result, has turned a member family's life upside down.
The child, referred to as 'Jane Doe' in the suit, has faced severe repercussions since her family came forward. The family has been ostracized and the child faces near-constant bullying. The ordeal, her family says, has caused her to struggle with depression and other emotional fallout.
The camp was supposed to ensure that no one of the opposite sex was to enter the children's bunks and cabins. The child's bunk, however, was also the site of staff meetings. And it was one of those staff meetings that allowed Matthew Tonne – a children's minister – to allegedly enter the victim's bunk that night and sexually assault her.
The lawsuit was not the first effort by the family to seek some sort of resolution to the issue. In fact, the family notified the church of the incident in February of 2018. Since that time, the family's lawyer says, the church has "not yet to date demonstrated a good faith desire to resolve this. We have provided ample opportunity and ample time for that. We have hit a brick wall, and at that point in time we had to make the difficult but necessary decision to press forward to filing the lawsuit."
That lawsuit seeks more than $1 million in damages and comes as a grand jury indicted Matthew Tonne for the assault. Village Church has publicly stated that they dismissed Tonne in 2018 for problems associated with alcohol abuse and that officials "had not been informed that he was the accused" in the criminal sexual assault case. The family refutes the notion and says that they had told Village Church staff that Tonne was a suspect in the investigation within that timeline.
As Work Continues in Pennsylvania, New Jersey Considers Implications of New Sex Abuse Statutes of Limitations
Boy Scouts, Catholic Church Using Variety of Tactics to Lobby Against Abuse Statutes
Uber: 3,000 Sexual Assaults During U.S. Rides Last Year
PA Priest Caught Photographing High School Wrestlers from Behind
Categories: Product News and Recalls, Sex Abuse and Trafficking
Tags: church sex abuse, Matthew tonne, sex abuse, village church

redpajama_set_name: RedPajamaCommonCrawl


text:
Last Call: Gameday Thoughts, Questions and Predictions Before Ohio State Plays Michigan State in East Lansing
By 11W Staff on December 5, 2020 at 7:30 am
Ohio State was able to make its road trip this week.
After last week's game against Illinois was canceled due to COVID-19 cases within the program, Ohio State will be back in game action today at noon, when the Buckeyes will face Michigan State in their final road game and fifth overall game of this most unusual of regular seasons.
While we still don't know exactly who will be available to play for the Buckeyes today – we'll learn that around 10:45 a.m. – and we might have some different thoughts going into today's game once we learn that, we share some of our final thoughts, questions and predictions going into gameday right now.
Don't sleep on Michigan State's big-play passing ability
By several statistical measures, Michigan State's offense has been the worst in the Big Ten this year, averaging just 18 points per game. And Rocky Lombardi is inconsistent, making it just as likely that he will make mistakes that allow Ohio State's defense to make big plays as it is that he will make big plays himself.
But one stat that shouldn't be ignored going into this game is that Michigan State currently leads the Big Ten with seven passing plays of 40-plus yards and ranks second in the conference with 10 passing plays of 30-plus yards (behind only Indiana) this year. Given how much trouble the Buckeyes had with allowing big plays through the air against the Hoosiers, Michigan State is capable of exploiting the flaws in Ohio State's pass defense if the Buckeyes haven't tightened things up over the past two weeks, so that will be an area to watch in today's game.
– Dan Hope
Ohio State has to avoid turnovers
Justin Fields threw three interceptions the last time he took the field as a Buckeye. You might've heard about it. On Saturday, it'll be important for him and his Ohio State teammates to minimize Michigan State's opportunities to score off of their own errors. As long as they control the ball, one would imagine they'll control the game.
A statistic to note: The Spartans rank 115th out of 127 teams in college football with a turnover margin of minus-1.2 per game. They've recorded five interceptions and four fumble recoveries through five games. The Hoosiers, for what it's worth, are second in the country with a plus-1.5 margin, and the Buckeyes are 12th with a plus-1 margin. Even without the presence of Ryan Day – who, like his predecessor Urban Meyer, always preaches the importance of eliminating turnovers – on the sidelines, winning this category will be key to winning the game.
– Colin Hass-Hill
This feels like a "Justin Fields, Go Off, King" kind of game
After all of the fair criticisms Fields took after his three-pick game against Indiana, this feels like a game where he's going to obliterate Michigan State's defense.
The game against the Hoosiers was the worst of Fields' career, and he still scored four total touchdowns with more than 300 yards passing.
Maybe the absences of Ryan Day is going to hurt here, but I think this could be a game where Fields says "eff it." As I said in this week's roundtable discussion, I think he's likely to net five total touchdowns but maybe more.
– Zack Carpenter
If *this* offense gives Ohio State trouble, there are real problems
The Buckeyes have now had two weeks to make adjustments after Indiana abused the defense in the second half, and they now meet an opponent that has the worst offense in the Big Ten by several measures.
I know Michigan State has shown big-play potential, but if *this* offense can come out and consistently move the ball against Ohio State's defense today, the Buckeyes are in real trouble going forward.
– Kevin Harrish
How noticeable will Ryan Day's absence be?
Because Day is still in isolation after testing positive for COVID-19, Ohio State will be without its head coach and lead offensive play caller on Saturday. Will that have a negative impact on the Buckeyes in Saturday's game? Given that it's the first time since 2011 that Ohio State will have someone other than Day or Urban Meyer calling the shots in a game, it's a valid question.
That said, my guess is Larry Johnson will do just fine as acting head coach, with plenty of experienced coaches around him to lean on as needed. Day has been integrally involved in Ohio State's game planning this week even though he's been away from the Woody Hayes Athletic Center, so I don't think the Buckeyes' preparation for Saturday's game should be hurt by his physical absence. I think he will be missed as an offensive play caller, since he is the architect of the offense and won't be able to communicate with the team during the game, but it certainly helps that play calling was already a collaborative effort between Day and Kevin Wilson, who has plenty of experience calling offensive plays himself.
Will Ohio State look good enough to stay ranked in the top four of the CFP?
Maybe that seems a ridiculous question to ask as the Buckeyes play a bad Michigan State team. But I think it's fair. Even with everything the program has had to deal with the past two weeks, and even if there's a significant number of players out (aka, the players who are out are of significant stature), a 35-24 win or a 38-28 victory over these Spartans still wouldn't be a good look.
I have the final score as 42-21, which based on the score alone would almost certainly be enough to keep them in that top four. But if 2020 Second Half Ohio State emerges today, maybe the committee starts to rethink its stance and thrusts Jimbo Fisher or Dan Mullen's crew into the Buckeyes' spot.
What does the defensive backfield look like?
There are a lot of questions, and more will pop up once Ohio State releases its status report at around 10 a.m. Saturday to detail who will and will not play. But to get specific, I'm especially interested to see if this secondary looks different, and if so, in what ways is it changed.
Before Ohio State put the program on pause, Day said the Buckeyes were looking at "other combinations" in the defensive backfield. Does that mean more Josh Proctor at deep safety? Somebody else spelling Marcus Hooker? Extra opportunities for the freshman cornerbacks? An adjustment in the scheme? There are a lot of way Kerry Coombs could go with this one.
Who is out, for how long, and how will it impact the team?
All preseason, we heard Ryan Day harping on how the team would need depth at every position this year in case a COVID outbreak sidelined some players for a few weeks. Well, it's now happened.
We'll know who the Buckeyes will be without when the status report is released before the game, but we'll have to wait until during the game to see how it actually impacts the team. Ohio State would probably like to think it has enough depth to deal with any absences, but we're going to see for sure today.
Garrett Wilson will tie Cris Carter's record
Wilson has topped 100 receiving yards in all four of Ohio State's games this season, and if he does it again against Michigan State on Saturday, he'll tie Cris Carter's school record and become just the second player in school history with 100 receiving yards in five straight games. As long as Wilson is healthy, since we know Justin Fields is healthy, I think he will.
No one has come close to slowing down Wilson this year, and in a game where the Buckeyes could potentially be without some other offensive pieces, I think Wilson's role as Fields' go-to target will only increase against the Spartans, setting him up to hit triple digits for the fifth game in a row.
Ohio State won't cover the spread
I've taken the Buckeyes to cover the spread in all four of their games this season. That includes an embarrassing callout that Ohio State would "easily" cover the spread against Indiana.
Thought that was looking pretty good there in the third quarter. I'm not taking that 24-point spread this time with Ohio State shorthanded and without its head coach and with Michigan State coming off its best performance of the year.
So congrats, Ohio State, on your 63-0 win today, I guess.
The defensive line gets after it
Before any of the most recent events that led to the Illinois game cancelation, the defensive lineman already had eyes on getting more sacks. That was a stated desire by them.
With Larry Johnson as acting head coach, they might not get as much one-on-one work with him on Saturday afternoon as usual, but they will certainly want to show out for their position coach as he steps into a bigger in-game role. I'm guessing that their focus on more sacks combined with their inevitable goal of playing well enough for Johnson to pay most of his attention to the entire team rather than a single position will lead to a big game from the D-line.
Michigan State doesn't hit double digits
The Ohio State defense is looking for a bounce-back performance against an absolutely atrocious Michigan State offense, and they're going to get it.
The Buckeyes had some things to work out defensively, but they're nowhere near as bad on that side of the ball as they showed last time out. On the flip side, the Spartan offense is every bit as bad as it has shown the past five games.


text:
Q: Fact table that has 2 date columns (OrderDate and ShipDate) how to present it in Matrix view I have a fact table that has 2 date columns in PowerBI.
I want to create a Matrix view that looks like below:
I was able to achieve the below table which is not what I want:

A: Closest output to your desired is available be using Calendar Table (Date in my example), and measures. We need two relationship between orders nad Calendar.

CountShipDate = CALCULATE( countrows( Orders ), USERELATIONSHIP(Orders[ShipDate],'Date'[Date]) )

Matrix:


1. Hourly fee – This type of case typically involves the payment of a retainer and your case will be billed at an agreed-upon hourly rate in tenths of an hour. For instance, a four minute phone call or an e-mail response would be billed at .1 of an hour and the cost would be billed at one-tenth of your hourly rate.
2. Contingency fee – Under this arrangement RM's fee would be calculated as a percentage of any funds collected pursuant to a settlement or collection on a judgment – the "we don't earn a fee until you recover" scenario often seen with personal injury firms. RM's percentage depends on the type of case. NOTE: Under applicable rules of ethics, family law cases cannot be handled on a contingency fee arrangement.
3. Blended fee – While not as common as option (1) or (2), certain cases may be appropriate for a blended fee agreement. This type of agreement can involve the payment of a flat fee up front with an agreement that any fees above that will be earned on a contingency basis. Another possibility would be to handle the defense of a claim on an hourly basis and the prosecution of a counter-claim on a contingency basis.
Please feel free to call us if you have any questions concerning available fee arrangements or if you want to discuss the details of your case.


text:
Making a Classification Choice for the Internet: Between the Visible Car Parts and the Invisible Pizza Delivery
This is the fourth and final research note from Smarika Kumar, one of the short-term social media research fellows at The Sarai Programme.
In the last post, I discussed the role classification plays in locating the internet as a subject of law. I reflected on how two very different, yet competing identities: an identity upon function, and an identity upon means, have been framed for the internet in the debate around Voice over Internet Protocol (VoIP) regulation in India. Once these competing identities have been framed, the question that looms is how law negotiates between the two? This post attempts to reflect on this question.
Offering a Car v. Offering a Pizza: A Win for Classification by Function over Classification by Means
A reading of the Brand X decision of 2005 of the United States Supreme Court in this background of regulation and pricing of VoIP services and the classificatory justifications that come with it, can provide the required insight to answer this question. This is because the Brand X decision is broadly about an issue of classification under the U.S. Communications Act as amended by the Telecommunications Act of 1996, concerning broadband cable internet service. In this case, the Communications Act defined among others, two categories of regulated services: telecommunication carriers, and information-service providers. While the Act regulated telecommunication carriers as common carriers, information-service providers were not mandated to be regulated as common carriers. Regulation as common carriers implied among other things, that telecommunication carriers must charge just, reasonable and non-discriminatory rates to their customers, and make their communication networks interoperable with the networks of other carriers.[1] The case was brought to court when the Federal Communications Commission (FCC), the telecommunications regulatory agency in the US, sought to require cable companies providing broadband internet services to offer other ISPs access to their facilities on the terms of common carrier. This move was resisted by the cable companies on the ground that cable modem service did not qualify as a "telecommunication service" and hence could not be regulated as a common carrier.
The question before the court then was whether broadband internet provided via a cable modem should be classified as a "telecommunication carrier", or as an "information-service provider"? A "telecommunication service," as defined by the 1996 Act, refers to "the offering of telecommunications for a fee directly to the public…regardless of the facilities used."[2] "Telecommunications carrier(s)" are defined as "providers(s) of telecommunication services."[3] The term "telecommunication" here refers to "the transmission, between or among points specified by the user, of information of the user's choosing, without change in the form or content of the information as sent and received."[4] "Information service" on the other hand, refers to "the offering of a capability for generating, acquiring, storing, transforming, processing, retrieving, utilizing, or making available information via telecommunications . . . ."[5]
The decision of how to classify cable broadband service pivoted mainly on the meaning of the term "offering" in the definition of "telecommunication service." The majority opinion of Justice Thomas did not see cable broadband service as "the offering of telecommunications"[6], whereas in his dissenting opinion, Justice Scalia did[7].
1. Envisioning Cable Broadband as an Integrated Product: A car dealer "offers" maybe a car, not so much an engine
To decipher what exactly an "offer" means in this context, each opinion utilised different analogies. Justice Thomas in his opinion used the analogy of a car dealership to explain the meaning of an "offer":
"One might well say that a car dealership "offers" cars, but does not "offer" the integrated major inputs that make purchasing the car valuable, such as the engine or the chassis. It would, in fact, be odd to describe a car dealership as "offering" consumers the car's components in addition to the car itself. Even if it is linguistically permissible to say that the car dealership "offers" engines when it offers cars, that shows, at most, that the term "offer," when applied to a commercial transaction, is ambiguous about whether it describes only the offered finished product, or the product's discrete components as well. It does not show that no other usage is permitted."[8]
In making this analogy, Justice Thomas emphasises upon the ambiguity of the term "offer." He points that it would not strictly be amiss to say that a car dealer "offers" a car, and "offers" an engine, even though it would probably be more common to hear of the dealership "offering" a car. Justice Thomas then goes into whether an internet connection offered through cable service can be understood as having sufficiently integrated transmission component with the finished product offered. If yes, then cable-modem service for broadband internet may not qualify as a "telecommunication service", because the telecommunication component of the service would not be sufficiently distinct to be "offered" directly to the public. Upon consideration, this question is answered in the affirmative:
"The question, then, is whether the transmission component of cable modem service is sufficiently integrated with the finished service to make it reasonable to describe the two as a single, integrated offering. We think that they are sufficiently integrated, because a consumer uses the high-speed wire always in connection with the information-processing capabilities provided by Internet access, and because the transmission is a necessary component of Internet access. In the telecommunications context, it is at least reasonable to describe companies as not "offering" to consumers each discrete input that is necessary to providing, and is always used in connection with, a finished service. We think it no misuse of language, for example, to say that cable companies providing Internet service do not "offer" consumers DNS, even though DNS is essential to providing Internet access."[9]
The final decision of the majority opinion eventually held that there was some ambiguity in the understanding of "offering" and whether cable broadband services should qualify as "telecommunications services", in which case the FCC was held to be entitled to apply its own construction of "offering" and relevant classification (whereby FCC later classified cable-modem service as an "information service").
However what is essential to note here that the car analogy enabled a perception of cable internet broadband as an organic whole, in terms of content and delivery be an integrated and indistinguishable service. It is the functional aspect of the cable-modem internet broadband service then, which is emphasised on by this treatment of the service as an integrated whole, with inseparable components. In a way, this establishes the identity of cable-modem service upon function.
2. Envisioning Cable Broadband as Offering Content and Delivery: A pizzeria "offers" pizza, and "offers" delivery
Justice Scalia on the other hand, brought up the analogy of a pizzeria offering home delivery to the situation of cable-modem service. While recognising the existence of integrated services and that of cable-modem service being one of such joint offering, he held that it was still possible to separate its components, and state that each component was being offered. Accordingly, he stated, "There are instances in which it is ridiculous to deny that one part of a joint offering is being offered merely because it is not offered on a "stand-alone" basis."[10]
The pizzeria analogy was used to illustrate this idea:
"If, for example, I call up a pizzeria and ask whether they offer delivery, both common sense and common usage would prevent them from answering: "No, we do not offer delivery but if you order a pizza from us we'll bake it for you and then bring it to your house." The logical response to this would be something on the order of, "so, you do offer delivery." But our pizza-man may continue to deny the obvious and explain, paraphrasing the FCC and the Court: "No, even though we bring the pizza to your house, we are not actually "offering" you delivery, because the delivery that we provide to our end users is "part and parcel" of our pizzeria-pizza-at-home service and is "integral to its other capabilities."[11]
This analogy manages to recognise distinctly the two offers made by the pizzeria: that of the pizza, and its delivery, and in parallel, by the cable-modem internet broadband service—that of content, and its delivery. Accordingly, Justice Scalia argued that a cable-modem service did "offer" telecommunications directly to the public, and hence should be classified as a "telecommunications service". Pertinently, here it is the separation of delivery and application/content as two distinct components of the service which allow for its classification as a "telecommunication service." The ability to separate the components of the service betrays an emphasis on the means through which the service is realised. It clues into the idea that the identity of cable-modem service in this dissent is developed on means.
Why Function over Means?
In the Brand X decision then, function-based mode of classification trumped over means-based classification. Why though? I don't think there is any particular, or a single answer to this. Very broadly, the case also sat on the debate of legislative and executive power struggles, and deciding the scope of authority of executive-controlled, specialised agencies like the FCC. A function-based classification allowed for an expanded discretion to such executive "expertise."
But that is a pragmatic, consequence-dependant perspective on the question in front of us. What I think would be far more interesting is if one focused on the natures of these classifications themselves: Is there something inherently attractive or rational about a function-based classification over a means-based classification?
Modern classification, in the manner it erupted in the seventeenth century, placed incredible weight on observation. However this concept of observation itself limited several sites of knowledge. Foucault notes this in context of the development of the discipline of natural history, "Observation, from the seventeenth century onward, is a perceptible knowledge furnished with a series of systematically negative conditions[…] which leaves sight with almost an exclusive privilege, being the sense by which we perceive extent and establish proof, and in consequence, the meaning to an analysis partes extra partes acceptable to everyone."[12]
Once the sense of sight is given privilege, it is the visible, and the visibly obvious that becomes the basis for the "correct" choice of classification. Nevertheless, not every visible aspect of the artefact forms the basis for classification: "…[E]verything that presents itself to our gaze is not utilisable…The area of visibility in which observation is able to assume its powers is thus only what is left after these exclusions: a visibility freed from all other sensory burdens and restricted, moreover, to black and white."[13]
And what really is visible to a consumer of the internet? Perhaps it is the functionality of the connection—its ability to provide content. It is the car which is visible, not the engine, though of course any intelligent consumer will figure that an engine must exist somewhere if the car is to function. But it is the functioning car itself, as a whole, which is visible and valued. Justice Thomas notes that nobody would think twice about a remark that "cable companies providing Internet service do not "offer" consumers DNS, even though DNS is essential to providing Internet access."[14] And maybe this lack of reflection is tied to the "invisible" role of DNS in providing the internet, an "invisibility" brought through "sufficient integration" for rendering the requisite function. And perhaps that is why classification based on an identity upon function seems the more alluring option by virtue of being "visible", hence "rational."
Bruno Latour talks about this invisibility of a well-functioning technology, in his case, the VAL, a high speed, driverless underground train network for urban transport: "Hundreds of thousands of Lille residents head for VAL every morning: they go its stations, follow its signs, , learn how to pay, wait on the platforms in front of closed doors, sense the train gliding past the glass windows in a white blur, listen to announcements made by a synthetic voice, , and look at the doors that close before they are carried off into dark tunnels. Actually that's not true; they see nothing, feel nothing, hear nothing. Only tourists are still surprised to see a simple placard in place of a driver and are a little shaken up by the station stops required by the intrinsic security system. Lille residents have come to take VAL so much for granted that they no longer think about it, no longer mention it when they want to go from one place in the region to another."[15] The means of making the train work, the means of making the internet work, are rendered invisible by the success of its function.
Which is not to say of course, that an identity upon means for the internet is not visible, or observable at all. But once identity upon function is chosen as the classificatory basis, the other identities do become ignored, hence invisible: "The system is arbitrary in its basis, since it deliberately ignores all differences and all identities not related to the selected structure."[16] Which possibly only tells us that the path of law attempted to follow a rational choice for classification for the internet, providing it with "rational identity. But the choice of this "rational" itself seems purely subjective.
There is another aspect to be considered here: In an earlier post, I discussed the judgment in Shreya Singhal, which ruled Section 66A of the Information Technology Act to be unconstitutional. Therein, I made the argument that the judgment is borne out of a tension between two different ideas of the authority of law: one, that legal authority is borne off the transcendental nature of legal standards irrespective of the media they seek to govern; and another, that legal authority over a new medium is borne off effective transformation of legal standards to enable governance of the medium. What happens when one considers a similar analysis for the Justice Thomas' reasoning? The function-based approach taken by Justice Thomas regards the internet as an integrated whole, unlike other media prior to it, like the telephone, thereby classifying cable-modem internet service as an "information service." In this way, it manages to enable different legal standards than prior media to be applied to govern it. In Justice Scalia's opinion however, cable-modem internet service is seen as a "telecommunication service" in a manner similar to other two-way communication media prior to it. This choice of classification allows for the use of same legal standards for both cable-modem broadband service, and other prior media. A similar tension like that in Shreya Singhal concerned with defining the authority of law is thus seen in the Brand X judgment as well, whereby different choices of classification seem to give rise to different imaginations of legal authority.
[1] See page 3, Opinion of Justice Thomas in National Cable & Telecommunications Association v. Brand X internet Services (04-277) 545 U.S. 967 (2005), available at: https://www.law.cornell.edu/supct/pdf/04-277P.ZO
[2] 47 U. S. C. §153(46)
[6] Opinion of Justice Thomas in National Cable & Telecommunications Association v. Brand X internet Services (04-277) 545 U.S. 967 (2005), available at: https://www.law.cornell.edu/supct/pdf/04-277P.ZO
[7] Opinion of Justice Scalia in National Cable & Telecommunications Association v. Brand X internet Services (04-277) 545 U.S. 967 (2005), available at: https://www.law.cornell.edu/supct/pdf/04-277P.ZD
[8] See page 18, Opinion of Justice Thomas in National Cable & Telecommunications Association v. Brand X internet Services (04-277) 545 U.S. 967 (2005), available at: https://www.law.cornell.edu/supct/pdf/04-277P.ZO
[9] See page 18-19, Opinion of Justice Thomas in National Cable & Telecommunications Association v. Brand X internet Services (04-277) 545 U.S. 967 (2005), available at: https://www.law.cornell.edu/supct/pdf/04-277P.ZO
[10] See page 3, Opinion of Justice Scalia in National Cable & Telecommunications Association v. Brand X internet Services (04-277) 545 U.S. 967 (2005), available at: https://www.law.cornell.edu/supct/pdf/04-277P.ZD
[11] See page 3-4, Opinion of Justice Scalia in National Cable & Telecommunications Association v. Brand X internet Services (04-277) 545 U.S. 967 (2005), available at: https://www.law.cornell.edu/supct/pdf/04-277P.ZD
[12] Michel Foucault, The Order of Things: An Archaeology of the Human Sciences, 133 (Vintage Books, 1994).
[14] See page 19, Opinion of Justice Thomas in National Cable & Telecommunications Association v. Brand X internet Services (04-277) 545 U.S. 967 (2005), available at: https://www.law.cornell.edu/supct/pdf/04-277P.ZO
[15] Bruno Latour, Aramis, or the Love of Technology, 75-76 (Harvard University Press, 1996).


There is an initial franchise fee of $27,500 plus GST for your first BRICKS 4 KIDZ® territory.
Additional investments required to establish your business will include amounts for incorporating your company, advertising, working capital, venue hire, insurance, staff uniforms, and other materials required for your programs and events. The total additional investment (on top of your franchise fee) is estimated to be between $17,500 and $22,500, plus GST.
The total Funds Required to launch your business (franchise fee plus additional investment) is between $45,000 and $50,000, plus GST.
Royalty fees and marketing contributions vary from state to state and are detailed in the Franchise Disclosure Document.
A detailed explanation of the initial Investment Required will be found in our Franchise Disclosure Document, which we will release to you early in our application process.


text:
Monday and Tuesday's Sports Calendar
SWAMPLAND BASEBALL LEAGUE
Monday. South Lafourche (GIS) at Ellender, 3 p.m.
Monday. H.L. Bourgeois at E.D. White Catholic (Synergy Bank), 3 p.m.
Monday. South Terrebonne (South Louisiana Bank) at Patterson, 6:30 p.m.
Monday. Morgan City at Thibodaux (REECO), 7 p.m.
Monday. Terrebonne (Team '78) at Central Lafourche, 7 p.m.
Tuesday. Central Lafourche at E.D. White Catholic (Synergy Bank), 3 p.m.
Tuesday. Central Catholic at Ellender, 3 p.m.
Tuesday. Berwick at H.L. Bourgeois, 5 p.m.
Tuesday. Thibodaux (REECO) at South Lafourche (GIS), 6 p.m.
Tuesday. South Terrebonne (South Louisiana Bank) at Morgan City, 6:30 p.m.
Tuesday. Patterson at Terrebonne (Team '78), 7 p.m.
ELLENDER PATRIOT SUMMER BASKETBALL LEAGUE
Monday. Morgan City vs. South Terrebonne, 5:30 p.m.
Monday. Houma Christian vs. Central Lafourche, 6:30 p.m.
Monday. Ellender vs. Terrebonne, 7:30 p.m.
E.D. WHITE CATHOLIC SUMMER BASKETBALL LEAGUE
Tuesday. Assumption vs. Patterson, 5:30 p.m.
Tuesday. E.D. White Catholic vs. Central Catholic, 6:30 p.m.
Tuesday. Vandebilt Catholic vs. H.L. Bourgeois, 7:30 p.m.
Monday. LSU in Baton Rouge Regional (if necessary)
Tuesday. Fresno at New Orleans, 7 p.m.
Daily Comet ~ 1629 St. Mary St., Thibodaux, LA 70301 ~ Do Not Sell My Personal Information ~ Cookie Policy ~ Do Not Sell My Personal Information ~ Privacy Policy ~ Terms Of Service ~ Your California Privacy Rights / Privacy Policy


and the highlight was meeting Tamara from Canada who has traveled to 77 countries and started talking to me because of the t-shirt I was wearing. Traveler's all have the same mindset and I'm very happy that I met her. You are amazing ! Check out the video !