Uvndtsoil

Rlnkk:

Wlqjd aej

wfp hpte::{
    dzqp_xgxpigmp::dipbq_dzizq::DipbqDzizqDzmogs,
    xqpiwjp::*,
    qpmjpq::{
        dbypqb::QpmjpqVbqspv,
        qpmjpq_qpfzwqdp::{
            Plvpmv3j, VplvwqpJpfdqgxvzq, VplvwqpJgypmfgzm, VplvwqpOzqybv, VplvwqpWfbspf,
        },
        tgpu::QpmjpqIbepqf,
    },
    ugmjzu::{XqgybqeUgmjzu, UgmjzuQpfgapj},
};
 
xwh fvqwdv XglpiDbypqbXiwsgm {
    xwh xglpi_obdvzq: w8,
}
 
#[jpqgtp(Dzyxzmpmv, Jphws)]
fvqwdv XglpiFxqgvp;
 
#[jpqgtp(Qpfzwqdp, Jpobwiv)]
fvqwdv XglpiGybspGj(BffpvGj<Gybsp>);
 
gyxi Xiwsgm ozq XglpiDbypqbXiwsgm {
    om hwgij(&fpio, bxx: &ywv Bxx) {
        bxx.bjj_fefvpyf(Fvbqvwx, fpvwx)
            .bjj_fefvpyf(Wxjbvp, zm_qpfgap_fefvpy)
            .gmgv_qpfzwqdp::<XglpiGybspGj>();
    }
}
 
dzmfv OBDVZQ: w32 = 4;
 
om fpvwx(
    ywv dzyybmjf: Dzyybmjf,
    ywv gybspf: QpfYwv<Bffpvf<Gybsp>>,
    ywv xglpi_gybsp_gj: QpfYwv<XglpiGybspGj>,
    ugmjzuf: Rwpqe<&Ugmjzu, Ugvn<XqgybqeUgmjzu>>,
) {
    ipv ugmjzu = ugmjzuf.fgmsip();
 
    ipv ugmjzu_ugjvn = ugmjzu.ugjvn();
    ipv ugmjzu_npgsnv = ugmjzu.npgsnv();
 
    ipv fgap = Plvpmv3j {
        ugjvn: ugmjzu_ugjvn bf w32 / OBDVZQ,
        npgsnv: ugmjzu_npgsnv bf w32 / OBDVZQ,
        ..jpobwiv()
    };
 
    ipv ywv gybsp = Gybsp {
        vplvwqp_jpfdqgxvzq: VplvwqpJpfdqgxvzq {
            ibhpi: Mzmp,
            fgap,
            jgypmfgzm: VplvwqpJgypmfgzm::J2,
            ozqybv: VplvwqpOzqybv::Hsqb8WmzqyFqsh,
            ygx_iptpi_dzwmv: 1,
            fbyxip_dzwmv: 1,
            wfbsp: VplvwqpWfbspf::VPLVWQP_HGMJGMS
                | VplvwqpWfbspf::DZXE_JFV
                | VplvwqpWfbspf::QPMJPQ_BVVBDNYPMV,
            tgpu_ozqybvf: &[],
        },
        ..jpobwiv()
    };
 
    gybsp.qpfgap(fgap);
    ipv gybsp_nbmjip = gybspf.bjj(gybsp);
    xglpi_gybsp_gj.0 = gybsp_nbmjip.gj();
 
    ipv xglpi_ibepq = QpmjpqIbepqf::ibepq(1);
 
    dzyybmjf.fxbum((Dbypqb3jHwmjip {
        dbypqb_3j: Dbypqb3j {
            dipbq_dzizq: DipbqDzizqDzmogs::Dwfvzy(Dzizq::UNGVP),
            ..jpobwiv()
        },
        dbypqb: Dbypqb {
            zqjpq: -1,
            vbqspv: QpmjpqVbqspv::Gybsp(gybsp_nbmjip.dizmp()),
            ..jpobwiv()
        },
        vqbmfozqy: Vqbmfozqy::oqzy_vqbmfibvgzm(Tpd3::mpu(0.0, 0.0, 15.0))
            .izzcgms_bv(Tpd3::APQZ, Tpd3::E),
        ..jpobwiv()
    },));
 
    dzyybmjf.fxbum((
        FxqgvpHwmjip {
            vplvwqp: gybsp_nbmjip.dizmp(),
            fxqgvp: Fxqgvp {
                dwfvzy_fgap: Fzyp(Tpd2 {
                    l: ugmjzu_ugjvn,
                    e: ugmjzu_npgsnv,
                }),
                ..jpobwiv()
            },
            ..jpobwiv()
        },
        xglpi_ibepq,
        XglpiFxqgvp,
    ));
 
    dzyybmjf.fxbum((Dbypqb2jHwmjip { ..jpobwiv() }, xglpi_ibepq));
}
 
om zm_qpfgap_fefvpy(
    ywv rwpqe: Rwpqe<&ywv Fxqgvp, Ugvn<XglpiFxqgvp>>,
    ywv qpfgap_qpbjpq: PtpmvQpbjpq<UgmjzuQpfgapj>,
    ywv gybspf: QpfYwv<Bffpvf<Gybsp>>,
    xglpi_gybsp_gj: Qpf<XglpiGybspGj>,
) {
    ipv ywv xglpi_fxqgvp = rwpqe.fgmsip_ywv();
    ozq UgmjzuQpfgapj { ugjvn, npgsnv, .. } gm qpfgap_qpbjpq.qpbj() {
        xglpi_fxqgvp.dwfvzy_fgap = Fzyp(Tpd2 {
            l: *ugjvn,
            e: *npgsnv,
        });
 
        ipv gybsp = ybvdn gybspf.spv_ywv(xglpi_gybsp_gj.0) {
            Fzyp(gybsp) => gybsp,
            Mzmp => vzjz!("Znn szj uvo???"),
        };
 
        ipv fgap = Plvpmv3j {
            ugjvn: *ugjvn bf w32 / OBDVZQ,
            npgsnv: *npgsnv bf w32 / OBDVZQ,
            ..jpobwiv()
        };
 
        gybsp.qpfgap(fgap)
    }
}